638 Commits
Author SHA1 Message Date
hjozwiak da4ae8525f Fix Shift+digit heading navigation on Wayland 2026-11-03 16:37:46 -05:00
Storm Dragon 0a3d946ffa Latest merge from Hunter. Also a couple files I forgot to add yesterday. 2026-11-03 11:41:33 -05:00
Storm Dragon 4da61465b0 Fix document retention and helper retry regressions
Keep failed cursor trials and native recapture anchored to the original document, and restore the requested cached root before LRU eviction. Base braille retry resets on established connection time rather than stalled startup. Poll private AT-SPI daemon ownership without triggering service activation and clean up partial startup failures. Add focused regressions and update browser testing notes.
2026-11-03 11:37:36 -05:00
hjozwiak a4d427099e Merge origin/testing into hunter 2026-11-03 10:35:41 -05:00
hjozwiak 002e515edf Wait quietly for an absent braille display
Helper retries BrlAPI open in-process until BRLTTY answers, supervisor waits with the parked helper instead of kill/respawn cycles, exponential backoff and warn-once for real helper exits, bounded give-up so permanent failures still surface.
2026-11-03 10:35:00 -05:00
hjozwiak 6c10ed0517 Add native coverage for ticking browser pages
Incremental-game style fixture whose AT-SPI leaves recreate every 250 ms, native navigation test, private-session AT-SPI daemon launch in the harness (no systemd, no host session required), and testing notes.
2026-11-03 10:35:00 -05:00
hjozwiak 7eef6e8be6 Make web document navigation survive live-updating pages
Recreated-node caret recovery, tolerant caret validation, per-root retained document trees and cursors across tab switches, document warm-up, coalesced structural moves, and hung-provider fast-fail with an 'Application is not responding' announcement.
2026-11-03 10:34:55 -05:00
Storm Dragon 9bd5c15dd4 Updated cthulhu build script. Should work on systems even with old versions of go. 2026-11-03 03:02:32 -05:00
Storm Dragon 14743f96bb Updated cthulhu build script. Should work on systems even with old versions of go. 2026-11-03 03:02:00 -05:00
Storm Dragon 89686fa029 Refresh browser tests and recover Firefox tab announcements
Bring the fragmented-line browser fixture into agreement with current browse
navigation. Rich editors are read through their text descendants, so Down from
the preceding heading must read "Review the code." directly. Remove the stale
empty editor-control stop while retaining forward and reverse line navigation,
character and word movement, Read All, and inline Braille-routing assertions.

Fix Firefox's missing announcement when creating a second tab. Firefox can emit
selection events before the new tab enters its accessible child list, causing
the native selected-child lookup to return nothing. Use the subsequent
child-added event only when its target is a live, freshly selected browser-chrome
tab with the emitting tab list as its direct parent. Keep document-authored tabs
and unselected background additions excluded, retain foreground filtering and
tab-identity deduplication, and release native references on the GLib owner.

Normalize child-added origin suffixes such as :system before event dispatch,
preserving the original native type in diagnostics. Rename the shared mutation
normalizer to reflect its expanded scope and update its callers, including the
Pidgin insertion check. Extend the normalization regression to cover child
additions and reject unrelated event names. Firefox keeps its normal animations
and all existing tab-announcement and address-editing assertions.

Make private-session teardown tolerate the document portal's asynchronous FUSE
unmount after D-Bus exits. Retry only ENOTCONN and EBUSY cleanup failures for at
most five seconds. Keep unrelated errors and persistent mount failures visible.
Add regressions for transient teardown, preservation of a failing child's exit
status, unrelated cleanup errors, and the cleanup deadline. Runtime directories
and accessibility buses remain private, with no init-system dependency.

Update browser verification notes and the parity ledger with the fixes, evidence,
regression risks, and concrete live acceptance procedures.

Validation:
- All 33 Chromium browser proofs passed in the final combined run.
- Firefox baseline and tab checks passed repeatedly with normal animations.
- All eight private-session isolation and cleanup regressions passed.
- AT-SPI, app, and review package race suites passed during development; focused
  race regressions passed again after the final event-normalization change.
- Go vet passed for internal/atspi, internal/app, and internal/review.
- A separate reader binary built successfully.
- Parity-ledger validation passed for 75 rows; git diff --check passed.
2026-11-03 02:38:59 -05:00
Storm Dragon 7ec6e4ccaf Preserve native offsets after braille text expansion
Expanding embedded-object placeholders changes the displayed braille text
without changing native AT-SPI offsets. Several consumers still validated
native positions against the expanded string, which could reject a valid
line end after contraction, accept an offset beyond the native line after
expansion, or drop selection and text-attribute indicators on a plain-text
fragment following an embedded object.

Use RawText for native-offset validation and fragment comparisons whenever
a braille line is expanded. Apply the same rule to parent/child native-caret
handoff: identical displayed text must not authorize an offset transfer
when the underlying native strings differ. Expanded spans retain their
existing conservative presentation without native cell routes.

Restrict the assembled-line displayed-text fallback to lines from which
embedded-object placeholders were actually removed. Ordinary whitespace-only
lines now retain their spaces, cursor position, and native routing instead
of being replaced with the object's text or accessible name.

Add regressions for contracted and expanded native offset bounds, suffix
selection and attribute preservation, immutable line enrichment, ambiguous
caret transfer, and whitespace-only line routing. The regressions reproduced
the review findings before the fixes and pass afterward.

Validation:
- Full Go suite before fixes; full race and BrlAPI suites after fixes.
- Focused Braille and native-caret regressions, including race checks.
- go vet ./...; reader and BrlAPI helper builds; parity-ledger validation.
- Private Chromium linked-heading, selection, and browse-mode checks.
- Private Firefox baseline and linked-heading checks.
- git diff --check.

The Chromium fragment harness still fails its embedded-editor navigation
step, and the Firefox harness still times out in its New Tab test. Both
failures reproduce on the parent of the reviewed commit, 8ce5e5c, as well.
These failures are not claimed as passing checks.

The active reader was not replaced. Physical keyboard, audible speech, and
Braille acceptance remain for maintainer testing: check linked headings,
mixed inline-link text, selection indicators after links, and ordinary or
blank-line cursor routing in both browser families before submission.
2026-11-03 01:54:25 -05:00
hjozwiak 8ce5e5cdad Expand embedded objects in braille document lines
Structural navigation to a heading whose native text is a single embedded-object placeholder for its child link showed only that placeholder in braille while speech used the expanded title. Braille line reads now expand embedded objects like speech capture, preserving RawText and native offsets; expanded lines carry no cell routes or native selection/attribute dots and only a line-start cursor. Frame assembly strips any remaining placeholders and falls back to displayed text so a placeholder never reaches the display. Regression tests cover placeholder-only, mixed, expanded, assembled, and empty headings plus native linked-heading and Firefox mixed-line braille. Maintainer confirms physical braille and speech agree on YouTube headings.
2026-11-03 00:17:08 -05:00
Storm Dragon 60f7f7a2e9 Code review and fixes. 2026-11-02 23:37:45 -05:00
hjozwiak f2a35a9305 Sync with testing. 2026-11-02 23:15:59 -05:00
Storm Dragon 7918fc02c4 Found more weird breakage on Slint. Fixed now. 2026-11-02 17:28:31 +00:00
hjozwiak 3026bc55c2 Bring in goodies from testing.
# Conflicts:
#	docs/testing/wine-proton.md
2026-11-02 11:30:32 -05:00
hjozwiak f44d0144bf Close Wine stage as accepted with known limitations
Maintainer decision, 2026-11-02: the core implementation and basic live behavior are sufficient for this stage. The original exhaustive done checklist was not fully satisfied and the contract is not marked Final; unfinished verification and known failures remain visible as future work.
2026-11-02 07:33:08 -05:00
hjozwiak 5af9231822 Reframe wine-access CTest environment requirement
A quiet live Wayland desktop is not assumed to yield a reliable single-environment 7/7. Record that a purpose-built private compositor/XWayland harness may be needed and whether split-environment evidence suffices is open for review.
2026-11-02 07:22:57 -05:00
hjozwiak eddf1da70f Freeze Phase 4 interim state for further input
Phase 4 remains in progress and the contract is not Final. This records the verified interim results, the open Wine title and Battle.net blockers, the incomplete Braille pass, and the owed quiet-desktop wine-access CTest run.
2026-11-02 07:18:04 -05:00
hjozwiak d6a54fc5e5 Clarify Notepad++ editing coverage 2026-11-02 05:50:50 -05:00
hjozwiak 56c47c0897 Record Notepad++ Phase 4 result 2026-11-02 05:26:51 -05:00
hjozwiak 7eaea736c2 Record deferred Battle.net Phase 4 result 2026-11-02 04:57:10 -05:00
hjozwiak d26d23e6ce Localize Wine title failure from maintainer debug log 2026-11-02 04:42:46 -05:00
hjozwiak 52515225cd Record preliminary Braille observations and Wine title failure 2026-11-02 04:23:25 -05:00
hjozwiak 4768dc4aa4 Record mixed-prefix and preferences round-trip results 2026-11-02 03:55:39 -05:00
hjozwiak 3d337813b6 Classify wine-access CTest baseline anomaly 2026-11-02 03:47:08 -05:00
hjozwiak 2a77cd4352 Record Mistworld Phase 4 result 2026-11-02 03:39:27 -05:00
hjozwiak fabac16ab0 Record Phase 4 automated baseline and Diablo IV result 2026-11-02 03:20:33 -05:00
hjozwiak ec1a620ae3 Run Phase 4 verification from the master session
Maintainer amendment: no fresh Phase 4 session; the maintainer runs the live corpus, the master session records results and runs automated checks, and defect sessions are spawned only on proven need.
2026-11-02 03:03:57 -05:00
hjozwiak 86def886ae Defer edit-subclass caveat remedy past this stage
Maintainer disposition: no Phase 4 fix or wine-access defect branch for the pre-attached edit subclass; record it honestly in the Phase 4 results. Future work item: dynamic add/remove of hook exclusions inside the running helper.
2026-11-02 02:57:09 -05:00
hjozwiak 72a6cd1601 Record accepted Phase 3 handoff and subclass caveat
Wine preferences tab landed as 75f34ea with maintainer flesh-test results; the pre-attached edit-subclass dynamic-addition caveat is recorded and localized for Phase 4.
2026-11-02 02:50:11 -05:00
hjozwiak 75f34ea767 Add global Wine preferences tab
Phase 3 of the Wine/Proton stage (decisions 6, 9, 13, 19 in docs/testing/wine-proton.md): a global-only Wine tab modeled on the Pronunciation page, with the controller-only checkbox and a typed editable program list. Wine values flow through the preferences protocol so a global Apply reaches the live Wine settings from Phase 2 with no reader restart. Entries are validated as edited and named in-tab, blocking Apply until fixed; case-insensitive duplicates collapse. Per-application preferences expose no Wine editing and an app-scoped Apply cannot change the governing list.
2026-11-02 02:49:33 -05:00
hjozwiak dc6a961032 Record accepted Phase 2 handoff in phase ledger
Live Wine settings landed as 9a10a15; includes the maintainer smoke results and the settled note that external settings-file edits have never auto-reloaded in Go or legacy Cthulhu.
2026-11-02 01:16:33 -05:00
hjozwiak 9a10a15b68 Read Wine settings live at poll and spawn
Phase 2 of the Wine/Proton stage (decisions 3, 4, 16, 17, 19 in docs/testing/wine-proton.md): replace the Wine manager's startup snapshot with a live settings source read once per poll, so accepted global settings take effect with no reader restart. The source publishes only the active/global profile's Wine values; per-application profile switching never changes the governing list. A newly listed running program restarts its helper once in the same mode; removals and clearing the global switch never downgrade a running helper.
2026-11-02 01:15:33 -05:00
hjozwiak a60a251472 Document Wine/Proton stage contract and phase ledger
Settled decisions, scope and done checklist in wine-proton.md; execution ledger with batch amendments, the satisfied Phase 0 gate and the accepted Phase 1 handoff in wine-proton-phases.md.
2026-11-01 23:28:24 -05:00
hjozwiak 71093286c7 Add Wine ready-record and mixed-prefix spawn semantics
Phase 1 of the Wine/Proton stage (decisions 2, 5, 16, 17, 18, 24 in docs/testing/wine-proton.md): classify the helper exclusion-count line as info, parse the ready hook_exclusions count, mirror programs=[...] extra=[...] in the helper-start record, and stop passing prefix-wide --no-dialog-reader merely because a listed program is present, so ordinary programs in a mixed prefix keep dialog reading. Wholesale mode remains for the global controller-only switch, the environment override, and helpers whose ready record does not confirm the exclusions sent; unconfirmed binaries are remembered. A newly listed running program restarts its helper once in the same mode; removals never downgrade.
2026-11-01 23:27:55 -05:00
Storm Dragon 6df27c88de Another problem exposed and fixed on Slint. 2026-11-01 22:49:08 -05:00
ak47 92d6ad3cc4 Code review and cleanup. 2026-11-01 22:01:32 -05:00
Storm Dragon bbe931335f Better handling of some qt and gtk applications. Used Audacious for testing. 2026-11-01 21:37:01 -05:00
Storm Dragon 300f4a7504 More work on cthulhu recognizing focused items that should be read. 2026-11-01 18:31:58 -05:00
lilmike 9374b5a2e5 Messages read as you tab through discord again. 2026-11-01 14:52:44 -08:00
Storm Dragon 6ed0e36960 More problems deiscovered from the problem child. :) I think these fixes should improve reliability across the board for reading focused windows though. Needs testing. 2026-11-01 16:22:15 -05:00
Storm Dragon 1c12bc6636 The initial Slint problem was larger than thought. Hopefully a more universal fix. 2026-11-01 15:48:33 -05:00
Storm Dragon d0fdce7285 Descovered a but on Slint where if the reported sizes differ preferences would not rport. HOpefully fixed. This could probably affect more than just Slint, just happened to catch it there. 2026-11-01 14:33:50 -05:00
Kendell Clark 7591f65b58 Added tentacle updater. 2026-11-01 12:21:55 -05:00
Storm Dragon f2cc47c8a0 Merged changes from hunter. Attempt to fix cthulhu announcing modifiers when suspended for xterm. 2026-10-31 16:07:29 -04:00
Storm Dragon 27867a48cb Merge Hunter announcement support into testing 2026-10-31 15:48:42 -04:00
hjozwiak 7e7a83d5c5 Merge goodies from master. 2026-10-31 15:28:10 -04:00
hjozwiak 1780afccba Add the announcement of switched workspaces from Niri.
I haven't tested this with Braille support; I don't remember what I did with the cable.
2026-10-31 15:27:40 -04:00
Storm Dragon 03cf063d60 Make sure testing matches master. 2026-10-31 14:56:39 -04:00