keyboard: make Squeekboard the single path
This commit is contained in:
parent
d8820da557
commit
89cf93f965
4 changed files with 69 additions and 42 deletions
|
|
@ -18,13 +18,13 @@ views:
|
|||
- "Tab q w e r t y u i o p [ ] \\"
|
||||
- "Ctrl a s d f g h j k l ; ' Return"
|
||||
- "Shift_L z x c v b n m , . / Up Shift_R"
|
||||
- "Esc preferences Alt Menu space show_fnkeys Left Down Right"
|
||||
- "Esc preferences Alt Voice space show_fnkeys Left Down Right"
|
||||
upper:
|
||||
- "~ ! @ # $ % ^ & * ( ) _ + BackSpace"
|
||||
- "Tab Q W E R T Y U I O P [ ] |"
|
||||
- "Ctrl A S D F G H J K L : \" Return"
|
||||
- "Shift_L Z X C V B N M < > ? Up Shift_R"
|
||||
- "Esc preferences Alt Menu space show_fnkeys Left Down Right"
|
||||
- "Esc preferences Alt Voice space show_fnkeys Left Down Right"
|
||||
fnkeys:
|
||||
- "Voice F1 F2 F3 F4 Seven Eight Nine NumSlash Home BkspFn"
|
||||
- "TabFn F5 F6 F7 F8 Four Five Six NumAst End Ins Del"
|
||||
|
|
@ -35,7 +35,8 @@ views:
|
|||
buttons:
|
||||
Voice:
|
||||
outline: "lctrlesc"
|
||||
text: " "
|
||||
label: "🎙"
|
||||
action: dictate
|
||||
Shift_L:
|
||||
action:
|
||||
locking:
|
||||
|
|
@ -276,7 +277,3 @@ buttons:
|
|||
TabFn:
|
||||
outline: "lctrlesc"
|
||||
keysym: "Tab"
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@ views:
|
|||
- "Tab q w e r t y u i o p [ ] \\"
|
||||
- "Ctrl a s d f g h j k l ; ' Return"
|
||||
- "Shift_L z x c v b n m , . / Up Shift_R"
|
||||
- "Esc preferences Alt Menu space show_fnkeys Left Down Right"
|
||||
- "Esc preferences Alt Voice space show_fnkeys Left Down Right"
|
||||
upper:
|
||||
- "~ ! @ # $ % ^ & * ( ) _ + BackSpace"
|
||||
- "Tab Q W E R T Y U I O P [ ] |"
|
||||
- "Ctrl A S D F G H J K L : \" Return"
|
||||
- "Shift_L Z X C V B N M < > ? Up Shift_R"
|
||||
- "Esc preferences Alt Menu space show_fnkeys Left Down Right"
|
||||
- "Esc preferences Alt Voice space show_fnkeys Left Down Right"
|
||||
fnkeys:
|
||||
- "Voice F1 F2 F3 F4 Seven Eight Nine NumSlash Home BkspFn"
|
||||
- "TabFn F5 F6 F7 F8 Four Five Six NumAst End Ins Del"
|
||||
|
|
@ -35,7 +35,8 @@ views:
|
|||
buttons:
|
||||
Voice:
|
||||
outline: "lctrlesc"
|
||||
text: " "
|
||||
label: "🎙"
|
||||
action: dictate
|
||||
Shift_L:
|
||||
action:
|
||||
locking:
|
||||
|
|
@ -276,7 +277,3 @@ buttons:
|
|||
TabFn:
|
||||
outline: "lctrlesc"
|
||||
keysym: "Tab"
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,35 @@
|
|||
# TASK 17 — Keyboard (stevia) + dictation polish
|
||||
|
||||
**Status:** shipped-partial; daily dictation use confirmed 2026-08-07. The
|
||||
phone went from NO on-screen keyboard to a working patched stevia with a mic
|
||||
key and live dictation in one session. What shipped works; the follow-ons are
|
||||
UX/layout polish.
|
||||
**Status:** Squeekboard replacement source authored 2026-08-11; parser tests
|
||||
green, full package build and glass proof pending. Stevia remains the active
|
||||
fallback until the new Squeekboard package is installed and survives repeated
|
||||
dismiss/reopen cycles.
|
||||
|
||||
## What shipped (2026-07-21)
|
||||
## Current decision (2026-08-11)
|
||||
|
||||
One keyboard owns the phone: Squeekboard. The daily layout has a permanent
|
||||
number row plus Fn/numpad; the terminal hint selects the compact terminal
|
||||
layout. Both expose the same first-party dictation action. The old
|
||||
Stevia/Squeekboard switcher and drag-up keyboard swap retire only after the
|
||||
replacement is proven on glass.
|
||||
|
||||
`Pixel3Arch/pkgs/squeekboard` now carries:
|
||||
|
||||
- a `dictate` layout action that spawns packaged
|
||||
`/usr/bin/souveraine-stt`;
|
||||
- daily and terminal layouts with the mic available from their base rows;
|
||||
- a Cairo-drawn, state-honest mic: restrained violet at idle, three breathing
|
||||
violet bubbles while recording, a rotating broken ring while transcribing,
|
||||
and a red-violet error mark;
|
||||
- animation driven by
|
||||
`$XDG_RUNTIME_DIR/souveraine-stt/state`, polled only while the keyboard
|
||||
widget is mapped.
|
||||
|
||||
No bitmap was imported and no Stevia completion code was reused. Native
|
||||
Squeekboard word completion remains the next layer after the single-keyboard
|
||||
path is stable.
|
||||
|
||||
## Earlier Stevia path (historical, currently installed)
|
||||
|
||||
- **stevia is the OSK**, patched to run under Hyprland. Upstream stevia
|
||||
hard-requires `zphoc_device_state_v1` (phoc-private) before creating a
|
||||
|
|
@ -31,14 +55,11 @@ UX/layout polish.
|
|||
4xx / unreachable from a genuine empty transcript. The old "didn't catch
|
||||
that" on any no-text result masked a whole server outage as a mic bug.
|
||||
|
||||
## Follow-ons (the polish that remains)
|
||||
## Historical follow-ons and retained evidence
|
||||
|
||||
1. **Dictation UX**: the mic key spawns the CLI fire-and-forget — no
|
||||
in-keyboard recording indicator (the CLI sends a notify-send "Listening…"
|
||||
toast, which is coarse). A pressed/recording state on the key itself
|
||||
(stevia has `--status` wired: `souveraine-stt --status` → idle|recording)
|
||||
would be the honest tell. Needs a stevia patch to poll status and
|
||||
restyle the key, OR drive it off the notify path.
|
||||
1. **Dictation UX:** the earlier Stevia implementation established the state
|
||||
contract. Squeekboard now renders that contract directly in the mic key;
|
||||
package and glass proof remain.
|
||||
|
||||
**2026-07-30 progress:**
|
||||
- `souveraine-stt` now writes a 3-state file
|
||||
|
|
@ -95,11 +116,14 @@ UX/layout polish.
|
|||
|
||||
## Acceptance
|
||||
|
||||
Keyboard usable in every app; mic key dictates real speech into the
|
||||
focused field (verified 2026-07-21: "Hello, can you hear me?" end-to-end);
|
||||
pill dismisses without eating key taps; number row, layout switcher, Hunspell
|
||||
suggestions and compact arrows work in the daily layout; a recording indicator
|
||||
makes the mic key's state obvious.
|
||||
Squeekboard raises from ordinary and terminal inputs, types letters/numbers,
|
||||
and survives at least five dismiss/reopen cycles. Its mic key dictates real
|
||||
speech into the focused field and visibly traverses idle → recording →
|
||||
transcribing → idle; the error state is also forced once. The AI side panels
|
||||
must not dismiss or strand it. Only after that proof may Stevia,
|
||||
`souveraine-osk-switch`, and the shell's keyboard-swap gesture be removed.
|
||||
Native word completion is a following acceptance step, not a blocker for the
|
||||
single-keyboard cutover.
|
||||
|
||||
## Connects to
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
# TASK 70 — The island: agent surfacing for the shell (and her face)
|
||||
|
||||
**Status:** recon 2026-08-11, nothing built. **Adjacent to:** TASK-69 (the
|
||||
session daemon is this surface's data source). **Source reviewed:**
|
||||
**Status:** source implemented; relocation into the AI panel is uncommitted
|
||||
and not installed as of 2026-08-11. **Adjacent to:** TASK-69 (the session
|
||||
daemon is this surface's data source). **Source reviewed:**
|
||||
`patheonsceo/Dynamic-island-for-arch` ("Open Agent Island", upstream clone for
|
||||
reference). **Twines with:** TASK-59 (the avatar).
|
||||
|
||||
|
|
@ -134,11 +135,19 @@ would be a guess wearing the costume of a measurement.
|
|||
|
||||
### Status
|
||||
|
||||
Untested against a running shell — nothing has rendered. `qmllint` is clean on
|
||||
all four files, but it cannot resolve `qs.*` imports from the repo, so
|
||||
property-level mistakes will only appear at load. Acceptance ("one real session
|
||||
showing, safety suite green") is **not** met: the sessions are real and shown,
|
||||
the permission half is not built.
|
||||
The first bar rendering was installed on laptop and phone. Casey's glass
|
||||
review rejected that placement: the phone bar has no room for agent-session
|
||||
chrome, and activity belongs beside the conversation it describes.
|
||||
|
||||
The source now removes `island` from both bar profiles and mounts a compact,
|
||||
expandable `AgentSessionPanel` at the top of `AiChat`. It consumes the
|
||||
existing `AgentSessions` singleton and `IslandExpansion`; no second
|
||||
collector or session model was introduced. This relocation is source-only
|
||||
until packaged. The phone may receive it with the next package; the laptop's
|
||||
live shell must wait for Casey's coordinated larger push.
|
||||
|
||||
Acceptance remains partial: real session status is implemented read-only; the
|
||||
permission half is deliberately not built.
|
||||
|
||||
**Method note:** `/usr/bin/qmllint` is a **Qt5** binary that prints nothing and
|
||||
exits 0 on broken input — it is not a gate. Use `/usr/lib/qt6/bin/qmllint`, and
|
||||
|
|
|
|||
Loading…
Reference in a new issue