57 lines
2.7 KiB
Markdown
57 lines
2.7 KiB
Markdown
# 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 code’s 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.
|