Speech history plugin added. Code and documentation audit completed. Preparing for tagged release.

This commit is contained in:
Storm Dragon
2025-12-22 19:43:41 -05:00
parent 10b3592173
commit 200faa9e36
19 changed files with 773 additions and 367 deletions

56
AGENTS.md Normal file
View File

@@ -0,0 +1,56 @@
# AGENTS.md (Codex CLI guidance)
This repository is a screen reader. Prioritize accessibility, correctness, and stability over “clever” changes.
## System interactions
- If a command requires `sudo`, stop and ask the user to run it (no password entry is possible from here).
## Build / run quick refs
- Local dev build + install: `./build-local.sh`
- Quick local sanity checks: `./test-local.sh`
- Clean local artifacts/install: `./clean-local.sh`
- Meson (manual):
- `meson setup _build --prefix=$HOME/.local`
- `meson compile -C _build`
- `meson install -C _build`
## Coding guidelines
- **When modifying existing code:** follow the surrounding codes conventions.
- **When writing new code from scratch:** prefer
- variables: `camelCase`
- functions/methods: `snake_case`
- classes: `PascalCase`
- Add debug logs where helpful for troubleshooting. When adding timestamps to logs, use: `"Message [timestamp]"` (message first).
## Accessibility requirements (high priority)
### General
- Screen-reader-first UX: assume non-visual navigation.
- No keyboard traps; Tab/Shift+Tab must move through all controls.
- Use clear, complete labels (e.g., “Confirm Password”, not “Confirm”).
- **No Speech-Dispatcher usage in GUI apps** (no `spd-say`); rely on the accessibility API.
### Python GTK (Gtk 3)
- Associate labels with controls (mnemonics + buddy widget):
- `label.set_use_underline(True)`
- `label.set_mnemonic_widget(entry)`
- For `Gtk.TextView`, call `set_accepts_tab(False)` so Tab moves focus.
- For custom widgets, set accessible name/role via ATK where applicable.
### PySide6 / Qt
- Set `setAccessibleName()` on all widgets.
- Associate labels via `setBuddy()`.
- Use `setAccessibleDescription()` when extra context is needed.
## Shell script rules
- **Bash variables must be `camelCase`** (except system env vars like `ACCESSIBILITY_ENABLED`).
- If you edit a `#!/usr/bin/env bash`, `#!/bin/bash`, or POSIX `sh` script, run `shellcheck` and fix issues.
- Avoid colorized output unless explicitly requested (accessibility-first; keep scripts simple).
## Plugins (Cthulhu)
- System plugins live in `src/cthulhu/plugins/`.
- Follow existing plugin patterns (keybinding registration, GTK dialog/window patterns, debug logging).
- Ensure plugin install integration is wired via Meson (`src/cthulhu/plugins/meson.build` + plugin subdir `meson.build`).
## Meson install reminder (important)
- If you add new Python modules under `src/cthulhu/`, update `src/cthulhu/meson.build` so they get installed (otherwise imports can fail after install).
- If you add a new plugin directory, update `src/cthulhu/plugins/meson.build` and add a `meson.build` in the plugin directory.