# Internal UI migration and acceptance ## Status The shared toolkit is released as v0.2.0. Cthulhu and Fenrir pin that version in go.mod and go.sum; their normal builds do not require a local workspace. A parent go.work may still select sibling checkouts for development. Verify release dependencies and builds with GOWORK=off. The implementation is now consolidated into internalui: one session and widget engine supports optional tabs, all controls, validation, rich editing, and speech/braille results. The previous APIs are adapters, not separate engines. New controls can be added to this package and used by either reader. There is currently no general table or date widget. Intentional behavior changes: lists and category arrows no longer wrap; checkbox Enter toggles rather than submitting a flat form; list search uses Fenrir's editable prefix and rejects unmatched text; both editors use partial selection, word movement, clipboard requests and Cthulhu-style editing feedback. Tab/Shift+Tab still cycles through the dialog. Fenrir entries now have the shared 8192-rune default limit; forms can request a smaller limit. Fenrir clipboard operations use its current clipboard-history item and existing persistence/sync settings. Passwords cannot be copied or cut into that history. Desktop AT-SPI table reading, native GTK preferences rendering, and console application reading remain separate from reader-owned controls. ## Automated verification From the common checkout: `go test -race ./...`. From Cthulhu: test internal/interaction, internal/emoji, internal/app, internal/tentaclewire and internal/preferences, build cmd/cthulhu, and run `python3 tests/native_internal_ui.py` on its isolated desktop. From Fenrir: test internal/interaction, internal/emoji, internal/preferences, internal/app and internal/input, and build cmd/fenrir. The native terminal capture harness can use FENRIR_CAPTURE_TEST_ONLY=1 and FENRIR_TEST_BINARY pointing at the rebuilt reader, under its private Xvfb desktop. These checks do not establish physical keyboard, audible speech or hardware braille acceptance. Existing readers have not been restarted or installed. ## Live Cthulhu check 1. Quit Cthulhu with Cthulhu+Q. 2. Press Ctrl+Escape to enter i3 personal mode. 3. Press Shift+G to rebuild and start Cthulhu and its braille helper with the debug log and test terminal. Ctrl+Escape and Shift+G are separate presses. 4. Open Emoji Menu with Cthulhu+Control+E. Expect the menu title and the first category tab. Left/Right should change category; Tab should enter its grid. 5. Use Left/Right/Up/Down, Home and End. Expect the selected emoji label, row/column and item count; braille should follow selection when connected. Moving beyond an edge should leave selection at the appropriate boundary. 6. Type a known label prefix, then Backspace and Control+Backspace. Expect filtered items, then search restoration, without typing into the terminal. 7. Tab to the copy checkbox, toggle it with Space, and Shift+Tab back to the grid. Expect the checkbox state and restored grid selection. Escape should close the menu and restore terminal keyboard input and normal braille. 8. Repeat an ordinary action menu or Tentacle form that you normally use. Check Tab/Shift+Tab, editable text, activation and cancellation. Report the exact speech, braille content, focused control and key for any unexpected result. Inspect ~/devel/cthulhu-go.log if this differs from expected. ## Live Fenrir check The test binary is /tmp/fenrir-shared-ui. To avoid replacing the active console reader, it can be started with `-x` in an X11 terminal supplying WINDOWID, as supported by Fenrir. Use the desktop keyboard layout. 1. Open Fenrir Menu with Fenrir+F. Navigate tabs and controls in both directions. Check a checkbox, a numeric control and a combo; Escape should close without saving your trial edits and return keys to the terminal. 2. Open Emoji Menu with Fenrir+Control+E. Check category navigation, grid arrows, Home/End, prefix search and clearing. Expect existing coordinate/position verbosity settings to be respected. 3. Close with Escape. Verify ordinary terminal typing, then reopen the menu. 4. If you use a translated catalog, verify translated labels and filtering; dictionary words and user-provided choices should remain literal. Report the exact speech, active control and key for any difference from your current reader. The toolkit now returns braille for both layouts; Fenrir currently consumes speech only. ## Additional acceptance for consolidation 1. In Fenrir's Applications menu, press Up at the first item and Down at the last item. Expect the same item to remain selected. Home/End should reach the ends. On the category strip, Left/Right should also stop at the ends. 2. In an editable settings field, type a disposable value such as “one two”. Control+Shift+Left selects the final word; typing replaces that selection. Control+A selects all; Control+C copies it to Fenrir's clipboard history. Control+V inserts the current clipboard item. Control+X cuts the selection. Cancel the form without saving the disposable settings value. 3. In Cthulhu, repeat the existing editable-form/clipboard workflow and emoji copy-checkbox cancellation test. Expect masked secret output where a password field is used, and restored application focus/braille on Escape. Automated fixtures also exercise rich numeric/tabbed forms through Cthulhu's host, including local-only capture refusal, and protected entries through both layouts. No new user-facing password dialog was added solely for testing.