[P0][Android Chat] Implement symbolic empty state, active conversation, and compact composer #319

Open
opened 2026-09-08 02:03:31 +00:00 by nsaspy · 0 comments
Owner

Parent: #648
Depends on: #650
Design freeze: PR #649

Goal

Rebuild Android Chat to match the frozen reference as two intentional states over the existing canonical conversation/runtime path:

empty conversation -> symbolic home
first real turn     -> active conversation

Do not create a second conversation owner or Android-only history model.

Empty symbolic home

Implement the approved composition with native Compose primitives:

  • abstract Zara sigil;
  • restrained Symbolic intelligence / On your terms identity copy;
  • bounded local/private/extensible runtime labels;
  • real action tiles for Run a query, Inspect logic, Build something, Analyze data, Summarize, Explore;
  • restrained Outrun ambience that never impairs text/readability;
  • compact composer remains primary and visible.

An action tile must invoke a supported real action or render an explicit disabled/unavailable state. No decorative fake capability.

Active conversation

After the first real user/assistant turn:

  • collapse/remove hero, action grid, and large decorative ambience;
  • messages own the main viewport;
  • preserve compact user/assistant hierarchy from the reference;
  • support streaming, tool-running, tool-result and error states without giant cards;
  • support readable prose, code, lists and symbolic results at narrow widths;
  • project breadcrumb/context when available without wasting vertical space.

Composer

Implement the reference's compact bottom composer with slots for:

  • add/action/attachment;
  • text input;
  • contextual tools/settings;
  • microphone;
  • voice-mode action.

Composer must remain visible and usable with IME open, smallest supported screen, large font scale, and long drafts.

RED-first tests

  • empty hero visible only when conversation has no real turns;
  • first real turn removes/collapses symbolic home without destroying composer/draft;
  • existing conversation identity/history persists;
  • streaming/cancel/error state does not duplicate messages;
  • IME inset keeps composer visible;
  • long text/code wraps instead of widening/clipping;
  • action tile availability reflects real capability/runtime state;
  • process recreation restores conversation/draft state where supported.

Screenshot evidence

  • empty symbolic home;
  • first-turn transition;
  • short active chat;
  • long/wrapped active chat;
  • streaming/tool-running;
  • error/degraded state;
  • composer with IME/smallest layout.

Acceptance

  • empty state visually tracks the left panel of the canonical reference;
  • active chat visually tracks the right panel;
  • symbolic home disappears when conversation needs the space;
  • composer remains compact and reachable;
  • no duplicate conversation/history/runtime architecture is introduced;
  • all action tiles are real or explicitly unavailable;
  • deterministic screenshots and Android/Core exact-head gates are green.
Parent: #648 Depends on: #650 Design freeze: PR #649 ## Goal Rebuild Android Chat to match the frozen reference as two intentional states over the existing canonical conversation/runtime path: ```text empty conversation -> symbolic home first real turn -> active conversation ``` Do not create a second conversation owner or Android-only history model. ## Empty symbolic home Implement the approved composition with native Compose primitives: - abstract Zara sigil; - restrained `Symbolic intelligence / On your terms` identity copy; - bounded local/private/extensible runtime labels; - real action tiles for `Run a query`, `Inspect logic`, `Build something`, `Analyze data`, `Summarize`, `Explore`; - restrained Outrun ambience that never impairs text/readability; - compact composer remains primary and visible. An action tile must invoke a supported real action or render an explicit disabled/unavailable state. No decorative fake capability. ## Active conversation After the first real user/assistant turn: - collapse/remove hero, action grid, and large decorative ambience; - messages own the main viewport; - preserve compact user/assistant hierarchy from the reference; - support streaming, tool-running, tool-result and error states without giant cards; - support readable prose, code, lists and symbolic results at narrow widths; - project breadcrumb/context when available without wasting vertical space. ## Composer Implement the reference's compact bottom composer with slots for: - add/action/attachment; - text input; - contextual tools/settings; - microphone; - voice-mode action. Composer must remain visible and usable with IME open, smallest supported screen, large font scale, and long drafts. ## RED-first tests - empty hero visible only when conversation has no real turns; - first real turn removes/collapses symbolic home without destroying composer/draft; - existing conversation identity/history persists; - streaming/cancel/error state does not duplicate messages; - IME inset keeps composer visible; - long text/code wraps instead of widening/clipping; - action tile availability reflects real capability/runtime state; - process recreation restores conversation/draft state where supported. ## Screenshot evidence - empty symbolic home; - first-turn transition; - short active chat; - long/wrapped active chat; - streaming/tool-running; - error/degraded state; - composer with IME/smallest layout. ## Acceptance - [ ] empty state visually tracks the left panel of the canonical reference; - [ ] active chat visually tracks the right panel; - [ ] symbolic home disappears when conversation needs the space; - [ ] composer remains compact and reachable; - [ ] no duplicate conversation/history/runtime architecture is introduced; - [ ] all action tiles are real or explicitly unavailable; - [ ] deterministic screenshots and Android/Core exact-head gates are green.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/zara#319
No description provided.