Watch
1
0
Fork
You've already forked SouveraineOS
0

tasks: add TASK-18 selection menu spec; TASK-16 favorites-rail ordering note

This commit is contained in:
Fimeg 2026-07-21 13:28:43 -04:00
commit 724e88e76d
3 changed files with 85 additions and 4 deletions

View file

@ -115,10 +115,12 @@ Chatty uses.
## Also queued (not blocking AD)
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

View 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.

View file

@ -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;