Files
cthulhu/AGENTS.md

2.7 KiB
Raw Permalink Blame History

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.