193 Commits
Author SHA1 Message Date
Storm Dragon 702894ee4a Package updates. 2026-10-31 00:21:34 -04:00
Storm Dragon ff7055d715 Preparing for release. 2026-10-30 01:51:47 -04:00
Storm Dragon 44581c4038 Merge from testing. 2026-10-29 21:44:43 -04:00
Storm Dragon 01f50c17e8 Fenrir's emoji ported to cthulhu. 2026-10-29 19:20:29 -04:00
Storm Dragon 74afa425da Merge testing. 2026-10-29 13:35:34 -04:00
Storm Dragon 3e2429b8a5 Add autofocus mode. 2026-10-28 22:06:04 -04:00
Storm Dragon b232c1eebb Fix for repeating in some instances, e.g. pidgin. 2026-10-27 19:40:17 -04:00
Storm Dragon 4d29f2bb23 Merge branch 'master' into testing 2026-10-27 12:31:15 -04:00
lilmike 7d720e131d Fix some issues with disabled edit fields. 2026-10-27 09:20:20 -07:00
Storm Dragon e9a2dc1975 Possible fix for mate's window switcher. 2026-10-27 00:51:32 -04:00
Storm Dragon eb5b2038d6 Some echo tests added. 2026-10-27 00:40:49 -04:00
Storm Dragon 8a32895457 Latest changes. 2026-10-26 21:16:37 -04:00
Storm Dragon d8b59aa05b Start cthulhu in laptop layout with -l. 2026-10-26 21:14:22 -04:00
Storm Dragon 7723bd7e09 Merged testing. 2026-10-26 02:42:38 -04:00
Storm Dragon 0d76e44f9a Fixed some element types being spoken even though sound only is selected. 2026-10-26 02:41:07 -04:00
Storm Dragon 6ee0454fbe Speech settings updated, no large decimals for settings. Also changing with quick settings keys now applies across window changes. 2026-10-25 19:35:55 -04:00
deedra 17383f732e Keep Wine accessibility helpers on the reader's session bus
A Wine application can inherit a different D-Bus session address from the
running Cthulhu instance. The helper manager previously copied that address
from the application's environment, redirecting accessibility requests to
a bus where the supervising reader was unavailable. This left foobar2000
and its Preferences dialog silent despite working native control support.

Retain the reader's inherited DBUS_SESSION_BUS_ADDRESS when launching a
helper. Continue taking the application's display, runtime directory,
Wine prefix and loader so hooks still attach to the correct Wine session.
The manager remains responsible for helper startup and shutdown.

Extend the existing manager lifecycle regression to supply conflicting
application and reader bus addresses. Assert that the helper receives the
reader's bus, the application's display, the expected prefix and the
managed-helper marker, while retaining the shutdown checks. The regression
failed against the original implementation before the fix.

Validation:
- GOPROXY=off go test ./internal/wine -count=1
- GOPROXY=off go test -race ./internal/wine -count=1
- GOPROXY=off go vet ./internal/wine
- Built and installed the reader; configuration validation passed.
- After reload, both the default-prefix and Bard helpers used the reader's
  bus. Foobar2000 Preferences opened on workspace 3 without settings changes.
- The user subsequently confirmed that the installed changes look good.
2026-10-25 14:56:36 -07:00
ak47 d33960ddf3 bumped version to 2026.10.25 2026-10-25 15:48:28 -04:00
deedra 7aa4617d04 Suppress hypertext object markers in text-change speech
Thunderbird's message composer emits U+FFFC object replacement characters
when creating or removing paragraph objects. Treating these structural
updates as inserted or deleted text sent raw placeholders to speech,
including multi-character updates that bypass ordinary key-echo settings.

Remove object markers from insertion and deletion presentation while
preserving surrounding text. Normalize typing-echo payloads before deciding
the echo kind or applying character, word, and sentence echo policies.
Return no text or echo kind for updates containing only object markers.

Add regression cases for single and repeated markers, mixed marker/text
payloads, and ordinary text through both event presentation and typing echo.

Validation:
- go test ./... -count=1, with the local cache and dependency network disabled.
- Built the reader and the BrlAPI-tagged Braille helper.
- A disposable Thunderbird profile on a private X11 display and session bus
  produced one marker-containing presentation before the fix and none after.
- Private Thunderbird checks preserved character, word, and line navigation
  after typing several paragraphs.
- The user confirmed main-arrow reading worked with the restarted build.

The original silent-arrow failure was not reproduced in isolation. Restarting
restored reading in the user's session; this commit does not claim to fix
its underlying cause or change arrow-key handling. Physical Braille output
was not tested. Preserve the original and fresh diagnostic logs locally.
2026-10-25 12:19:01 -07:00
Storm Dragon 9462ebfc82 More browser work. 2026-10-24 18:33:04 -04:00
Storm Dragon bf4b9d7b54 Browser changes. 2026-10-24 15:59:07 -04:00
Storm Dragon 133953e972 Report wine-access version if available in version commands. 2026-10-24 15:19:43 -04:00
lilmike 7c032a5f6e Some browser fixes. 2026-10-24 12:07:02 -07:00
Storm Dragon 8a560a25a5 Version bump. 2026-10-24 13:21:35 -04:00
Storm Dragon 54722e985e Simplified speech settings. 2026-10-24 05:27:16 -04:00
Storm Dragon 03e2b31e09 Fixed a bug with some edit field types that would cause every event to read the whole field. 2026-10-23 12:21:34 -04:00
Storm Dragon 736f5a0f68 Version Bump. 2026-10-23 01:31:20 -04:00
Storm Dragon 1d75168807 Extended tentacle capabilities a bit. 2026-10-22 21:13:08 -04:00
Storm Dragon d7b1efeba0 Some hopefully final flat review touch ups. 2026-10-22 16:39:44 -04:00
Storm Dragon fb2c5b818d Browser and flat review fixes. 2026-10-22 16:00:30 -04:00
Storm Dragon 754f1ce6d7 Fixed multiple sound types being played for some controls. 2026-10-22 14:22:36 -04:00
Storm Dragon 205d5c49d2 Preparing for release, so a bit of maintenance. 2026-10-22 13:14:06 -04:00
Storm Dragon 3e9c4f83ce Options for controlling how and when speech is interrupted now wired up in preferences under the speech tab. 2026-10-22 03:25:40 -04:00
Storm Dragon e62f8c8e17 Fixed a bug in a test that caused other channel names than master to fail.? 2026-10-22 01:42:53 -04:00
Storm Dragon b7426177d9 Version bump 2026-10-22 01:37:59 -04:00
Storm Dragon e88de5ee66 More flat review improvement. 2026-10-21 20:56:18 -04:00
Storm Dragon 50e32f24df Logging changes. Use --debug-file for a replaced log. Use --append to append to the log file if it exists. Also fixed a bug where cthulhu could try to restart without replacing the old running version. 2026-10-21 15:11:19 -04:00
Storm Dragon 4643f8e47f Flat review improvements. 2026-10-21 11:49:25 -04:00
Storm Dragon ce5f196956 Make unrelated atspi events filtering better. 2026-10-20 23:37:50 -04:00
Storm Dragon 41283a5d8d Add a description column to the reading settings table under speech. 2026-10-20 19:33:48 -04:00
Storm Dragon ffcea2efea Touch up our phonetic settings. 2026-10-20 19:19:04 -04:00
Storm Dragon 08cbcc00cb Improved flat review timing by a lot. 2026-10-20 18:55:32 -04:00
Storm Dragon 58e4b8aa15 Found and fixed a bug where Cthulhu could get stuck in a loop sometimes on pages with tooltips. 2026-10-20 18:33:29 -04:00
Storm Dragon 90f1411405 mnemonics are now spoken without surrounding punctuation e.g. les or greater. 2026-10-20 16:40:06 -04:00
Storm Dragon 1f8420ab4b Merged changes from Deedra. 2026-10-20 14:03:44 -04:00
deedra 548a43aa24 Merge testing into deedra
Resolve the parity-ledger conflict by retaining testing's updated LibreOffice entry and Steam progress entry alongside deedra's edit-label and Mozilla records.

Verified: go test ./... -count=1, go vet ./..., parity ledger validation, and whitespace checks. Native GUI and physical speech/Braille acceptance were not run.
2026-10-20 10:47:34 -07:00
deedra edd6c560b8 Read Thunderbird message text and preserve link announcements
Thunderbird HTML messages expose readable text on containers around embedded
objects. The browse cursor previously considered only text leaves, and native
document capture omitted heading/link character counts. This skipped message
content, headings and link text. A caret event following Tab could also replace
a complete link announcement with its first character.

Capture owned hypertext child identities and native placeholder offsets on the
GLib thread, releasing native interfaces before returning. Require every child
to occupy one embedded-object character so providers exposing duplicate text
through static descendants retain their ordinary traversal.

Traverse native text ranges before and after embedded children without changing
their offset domains. Preserve character, word, line and document-boundary
navigation; normalize native caret and Braille routing positions at adjacent
embedded links. Keep the Braille cursor on the correct fragment when a parent
contributes text more than once to an assembled line.

Ignore same-input link caret echoes after focus while retaining subsequent
arrow and selection feedback. Add regression tests, extend the private Firefox
fixture, and record behavior and remaining acceptance in the parity ledger.

Validation:
- Full Go test suite with count=1; focused app/atspi/review race checks.
- go vet ./...; reader and brlapi helper builds.
- Private Firefox baseline, mixed-parent offsets and tab navigation.
- Private Chromium fragments, named links, document navigation and selection.
- Parity ledger validation and whitespace checks.

The existing Firefox tab test intermittently timed out on both an untouched
HEAD copy and the changed tree; the final run passed. The unchanged
TestRunReachesSoundStopAfterEarlierServiceStopError also failed once during
startup cancellation and passed in subsequent full-suite and race runs.

Both installed binaries were verified and the reader reloaded in its original
desktop session. The maintainer confirmed readable message text and later
working links after an earlier intermittent omission. That omission remains
untraced; repeat live acceptance and physical Braille verification remain open.
2026-10-20 10:41:38 -07:00
Storm Dragon dcdeab256e Merge branch 'deedra' into testing
Combine relation-only edit-label capture while retaining bounded text reads,
password-target exclusion, UTF-8 output limits and menu checkability capture.
Keep both label regression fixtures and the existing foreground test dispatch.
Preserve Wine helper diagnostics and recovery documentation, and retain the
current parity records alongside the incoming edit-label entry.

Validation:
- go test ./... -count=1 -timeout=180s
- go vet ./...
- CTHULHU_NATIVE_EDIT_LABELS=1 python3 tests/native_atspi.py
- Isolated TestNativeTextLabelRelations
- python3 tests/native_atspi.py
- Parity ledger validation: 65 rows
- Python syntax and staged diff checks

Native GTK table fixtures emitted ATK warnings; all assertions passed.
Live speech and physical Braille were not retested.
2026-10-20 13:35:29 -04:00
deedra 8ef838e16e Speak relation-only labels for unnamed edit fields
Irctest exposes its settings-field labels through AT-SPI LABELLED_BY
relations while leaving the fields' accessible names empty. Cthulhu
previously captured only the name, so focus speech announced the text
role and contents without Nickname, Username, or Real name.

Resolve direct label targets in the shared native snapshot capture for
unnamed text, entry, and password-text objects. Preserve explicit names,
combine multiple label targets in relation order, and use label/static
text only when a target has no accessible name. Bound relation scans,
target queries, and UTF-8 output; release all native references and avoid
reading password targets. No application-specific handling is required.

Add an isolated GTK fixture and native regression test exercising capture
and speech formatting for single labels, multiple labels, explicit names,
unlabelled fields, and labelled password fields without password contents.
Expose the probe through CTHULHU_NATIVE_EDIT_LABELS=1 in native_atspi.py.
Record verification and installed-reader acceptance in the parity ledger.

Validation:
- go test ./... -count=1
- CTHULHU_NATIVE_EDIT_LABELS=1 python3 tests/native_atspi.py
- go vet ./...
- Build the reader and the brlapi-tagged Braille helper.
- Validate configuration and testdata/parity-ledger.csv.
- Read-only live irctest capture includes all three settings-field labels
  in formatted speech.
- Install both tested binaries and replace the reader in its original
  desktop session; verify service ownership and installed build hashes.
- Maintainer confirms the installed reader now speaks the field labels.

The full suite passes outside the sandbox; its socket and process checks
require access unavailable inside the sandbox. Physical Braille acceptance
remains pending. Preserve cthulhu.log outside the commit.
2026-10-20 09:29:24 -07:00
Storm Dragon f8efae9a92 Version bump and feature freeze. Until release bug fixes only. 2026-10-20 02:40:24 -04:00