tasks: add TASK-18 selection menu spec; TASK-16 favorites-rail ordering note
This commit is contained in:
parent
2d95f3743a
commit
724e88e76d
3 changed files with 85 additions and 4 deletions
|
|
@ -115,10 +115,12 @@ Chatty uses.
|
|||
|
||||
## Also queued (not blocking A–D)
|
||||
|
||||
Inbox favorites redesign: replace the pinned `ListView` section
|
||||
(`Inbox.qml`) with a **horizontal circles rail** along the top, ordered
|
||||
by last-contacted, later honouring a pinned state. New component, not a
|
||||
fix — do it after A lands so there is content to open.
|
||||
Inbox favorites redesign (Casey confirmed 2026-07-21): **favorites as a
|
||||
horizontal scrollable circles rail along the top**; below it the inbox
|
||||
lists conversations **most-recent-first by default**, with a
|
||||
filter/toggle later. Rail ordered by last-contacted, later honouring a
|
||||
pinned state. New component, not a fix — do it after A lands so there
|
||||
is content to open.
|
||||
|
||||
## Build / deploy
|
||||
|
||||
|
|
|
|||
78
docs/tasks/18-selection-menu.md
Normal file
78
docs/tasks/18-selection-menu.md
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
# TASK 18 — shell: highlight/selection action menu
|
||||
|
||||
**Status:** open, design captured (2026-07-21). Component first; backends
|
||||
light up as they earn it (doctrine §6).
|
||||
**Repo:** `~/Projects/souveraine` `surfaces/quickshell` (shell surface),
|
||||
plus per-action backends noted below.
|
||||
|
||||
## Priority order
|
||||
|
||||
Get the component itself solid and fluid — surface type, anchor
|
||||
behavior, animation — **before** wiring any backend. The stevia keyboard
|
||||
shipped glitchy because the surface work was rushed; do not repeat that.
|
||||
A menu whose actions are stubs is acceptable; a janky menu is not.
|
||||
|
||||
## Action set
|
||||
|
||||
### 1. Reference / Lookup — deterministic, local/offline preferred
|
||||
No agent round-trip. Whether these may *ever* touch the agent is an open
|
||||
decision (below); default stance: strictly local/dumb.
|
||||
|
||||
- Define / Dictionary
|
||||
- Thesaurus (synonyms/antonyms)
|
||||
- Translate
|
||||
- Search the web
|
||||
- Look up (Wikipedia-style)
|
||||
- Pronunciation
|
||||
|
||||
### 2. Agent Actions — routes through Ani, agent-context-aware
|
||||
|
||||
- **Talk about this** → spins off a **new side-shoot conversation**,
|
||||
seeded with the selection
|
||||
- **Add to our conversation** → appends to the current **primary**
|
||||
conversation
|
||||
- **Explain** — context-aware (uses surrounding text; needs
|
||||
connectivity). Deliberately contrasts with dictionary Define.
|
||||
- Summarize / simplify
|
||||
- Fact-check / verify
|
||||
|
||||
### 3. Read Aloud — its own section
|
||||
|
||||
Single TTS action on the **literal selected text**; no agent ingestion.
|
||||
Backend reality (verified in tree 2026-07-21): STT is live
|
||||
(`souveraine-stt` → faster-whisper at `10.10.20.19:7862/transcribe`).
|
||||
TTS is **config-only** — `Config.options.speech.tts` carries an enable
|
||||
flag (default false) and an empty endpoint; there is **no TTS server**
|
||||
and no synthesis/playback code anywhere in the shell. Contract when the
|
||||
server lands: `POST {"text": ...}` → audio stream. Until then this
|
||||
section renders per the enable flag — a dead button is not shipped.
|
||||
|
||||
### 4. Utility
|
||||
|
||||
- Copy / Share (system defaults)
|
||||
- Add to notes/memory (bookmark into Ani's memory, **no** new
|
||||
conversation)
|
||||
- Create reminder/task from selection
|
||||
|
||||
## Open design decisions (Casey's to make, ask before building past them)
|
||||
|
||||
- **Flat vs progressive disclosure.** Leaning progressive: top level =
|
||||
Read Aloud + Agent Actions + "More…", Reference behind the second tap
|
||||
— the full set is long for a phone screen.
|
||||
- **Reference actions and the agent:** strictly local/dumb, or may they
|
||||
fall through to the agent? Default: never touch the agent.
|
||||
- **Selection-detection mechanism:** compositor-level (Wayland
|
||||
primary-selection / text-input-v3) vs per-app hooks. Decides whether
|
||||
"works everywhere" is free or per-app wiring.
|
||||
- **Z-order / exclusion contract:** which layer the menu renders on and
|
||||
how it coexists with the OSK. The stevia pill/menu layer-collision bug
|
||||
(fixed by pill→`WlrLayer.Top` + oskLift, souveraine 271e4f2) is the
|
||||
cautionary precedent — settle the contract before polishing visuals.
|
||||
|
||||
## Connects to
|
||||
|
||||
- TASK-17 (stevia keyboard) — shares the OSK z-order/exclusion problem.
|
||||
- `services/Ai.qml` — side-shoot vs primary-conversation seams for the
|
||||
Agent Actions section.
|
||||
- `modules/settings/SpeechConfig.qml` / `Config.options.speech` — the
|
||||
Read Aloud gate; single source of truth for both CLIs and the shell.
|
||||
|
|
@ -24,6 +24,7 @@ plus open threads from the 2026-07-17 session.
|
|||
| 15 | [Idle coordinator: freeze, doze, scheduled wakeups](15-idle-coordinator.md) | open | design; blocked-by 09 for suspend tier; eats half of 08 |
|
||||
| 16 | [culver: usable messenger + contacts as Personal-class store](16-culver-messenger-contacts.md) | open | unblocks TASK-01; uses TASK-11 (keying) + archive/04 (NotifyEvents) |
|
||||
| 17 | [Keyboard (stevia) + dictation polish](17-keyboard-stevia-dictation.md) | shipped-partial | OSK + mic key + STT live 07-21; layout/UX follow-ons |
|
||||
| 18 | [Selection/highlight action menu](18-selection-menu.md) | open | design captured 07-21; component-first, Read Aloud gated on TTS server |
|
||||
|
||||
Archived (see `archive/`): 05 crash reporter — done 2026-07-21,
|
||||
CrashReporter.qml in-shell watcher, kill-test verified on device;
|
||||
|
|
|
|||
Loading…
Reference in a new issue