Skip to content

desktop: Soft Tactile composer — glass card, Backend · Provider · Model with logos, status line, voice strip - #442

Open
plombeer31 wants to merge 1 commit into
facelift/1-foundationfrom
facelift/3-composer
Open

plombeer31 wants to merge 1 commit into
facelift/1-foundationfrom
facelift/3-composer

Conversation

@plombeer31

Copy link
Copy Markdown
Collaborator

Part of the Soft Tactile desktop redesign. Depends on #440 (base branch facelift/1-foundation); every region PR can merge in any order after it. The integrated build is facelift/integration.

Soft Tactile, composer dock (CM-01…07, CM-09…11, and the dock in every chat screen). Builds on the foundation PR.

What changes

  • Composer card: radius 26, translucent lift with an 18px blur and the composer shadow, brand ring while typing; the hard running bar is a soft glint.
  • Control row: Backend · Provider · Model, then Context · Mode. The uppercase labels above the chips are gone; "Backend" and "Provider" are drawn inside the pills with CSS, so each chip's text is still exactly the id the drivers compare. Laptop / cloud / server icons, real provider and model logos on white badges (server and CPU badges where there is no mark), model id in DM Mono, open state while the chip's popover is up.
  • Chip states: choose a model and download model amber; during a switch only the send button spins.
  • Context gauge: 20px ring, amber above 70%, red above 85%, figure used / window (~ when projected).
  • Mode chip tones: default neutral, plan blue, auto amber, bypass red; mode — muted.
  • Status line: Waiting for your approval + Jump to request · Waiting + readout + Stop · busy phase + elapsed + Stop · Switch failed · Ready / Caution, each a chip plus a mono readout.
  • Queue tray: outline pills with ×. Send: 36px circle (muted / ink / stop / brand steer / locked with spinner).
  • Voice strip: nine level bars driven by the live level, lighter partial, green chip when the second language wins; error variants with Open Settings / Reset and ask again.
  • Slash commands: above the dock, 34px rows, typed part highlighted, amber "no matching command", footer with count and keys.

Verified

  • Trusted-input driver, 42/43: /, filters and nonsense; caret and focus through four repaint paths; every chip opens its popover; queue removal; voice error dismiss. (The one red was a copy expectation in the driver, not the dock.)
  • visual.drive.mjs: slash list painted, 34 rows, not clipped, both themes.
  • drive-selector.mjs: 39/42; the 3 custom-route checks fail identically on a0811bc3 (no llama-server answering, so no model chip).
  • Smoke on the merged build: same 4 known failures as a0811bc3.

…, logos, ring gauge, nine-bar voice meter

The composer dock is redrawn in Soft Tactile on the app's own markup and
logic: CM-01…07, CM-09…11 and the dock in every CH / MP screen.

- Composer card: 760px dock, 26px radius, translucent lift with an 18px
  blur and the composer shadow; a brand ring while typing; a soft glint
  along the top edge replaces the hard 2px running bar.
- Control row: Backend · Provider · Model, spacer, Context · Mode. The
  uppercase legend labels are gone; "Backend" and "Provider" are captions
  inside the pills, drawn with ::before from data-cap, so every chip's
  textContent is still exactly the id the drivers compare. Backend
  laptop/cloud/server icons, provider and model brand marks on white
  badges, model id in DM Mono. `choose a model` and `download model` are
  amber. Chips mark `.is-open` while their popover is up.
- Context gauge: a 20px ring over the percentage the app already computes,
  amber above 70%, red above 85%; the figure is spaced ("36.6k / 1.0M").
- Mode chip tones as classes: default neutral, plan blue, auto amber,
  bypass red; `mode —` muted.
- Status line: a chip then machine text for approval-gated (+ Jump to
  request), waiting (readout, reason, Stop), busy (dots, phase, elapsed,
  Stop), switch failed (red; the 45s watchdog line stays Caution), and
  Ready / Caution.
- Send: 36px circle; empty muted, draft ink, busy stop, busy with a draft
  brand (new `.steer` class), switch lock muted with the small spinner.
- Queue tray: outline pills "Queued · text · ×".
- Voice strip: lifted card; nine level bars driven by one --lv property
  (refreshVoice patches it in place, so elements and animations survive);
  a spinner while finishing; green chip when the second language wins;
  error sentence in red with Open Settings / Reset and ask again and a
  round dismiss. Mic pulses red while recording.
- Slash list: lifted popover above the whole dock, 34px rows, typed part
  highlighted, amber no-match row, and a footer with the count and keys.

Every hook the drivers and the smoke read is kept: #composer, #entry,
.composerwrap, .cfoot [data-sel-open], .cfoot .cchip text, .sendbtn
(.locked/.stop/[disabled]), .statusstrip (+ .waiting .readout .ob-help
.ann, the busy strip's first .tnum), .slash/.slashrow in .composerwrap,
.composer .field with micbtn next to sendbtn, .qchip/data-unqueue,
.voicestrip hidden placeholder, .vstext/.vspart/.vsnote/.vschip, .ctxbtn
.gaugelb, .modechip/.cmodechip/.providerchip/.modelchip/.dlchip/.needsmodel.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant