Land milestone 4 first-run docs and media

Make the X11 user path visible on first contact instead of burying it under config and maintainer detail.

Rewrite the README around the supported quickstart, expected tray and dictation result, install validation, troubleshooting, and linked follow-on docs. Split deep config and developer material into separate docs, add checked-in screenshots plus a short WebM walkthrough, and add a generator so the media assets stay reproducible.

Also fix the CLI discovery gap by letting `aman --help` show the top-level command surface while keeping implicit foreground `run` behavior, and align the settings, help, and about copy with the supported service-plus-diagnostics model.

Validation: `PYTHONPATH=src python3 -m unittest tests.test_aman_cli tests.test_config_ui`; `PYTHONPATH=src python3 -m unittest discover -s tests -p 'test_*.py'`; `python3 -m py_compile src/*.py tests/*.py scripts/generate_docs_media.py`; `PYTHONPATH=src python3 -m aman --help`.

Milestone 4 stays open in the roadmap because `docs/x11-ga/first-run-review-notes.md` still needs a real non-implementer walkthrough.
This commit is contained in:
Thales Maciel 2026-03-12 18:30:34 -03:00
parent ed1b59240b
commit 359b5fbaf4
16 changed files with 788 additions and 411 deletions

View file

@ -997,7 +997,17 @@ def _sync_default_model_command(args: argparse.Namespace) -> int:
def _build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser()
parser = argparse.ArgumentParser(
description=(
"Aman is an X11 dictation daemon for Linux desktops. "
"Use `run` for foreground setup/support, `doctor` for fast preflight checks, "
"and `self-check` for deeper installed-system readiness."
),
epilog=(
"Supported daily use is the systemd --user service. "
"For recovery: doctor -> self-check -> journalctl -> aman run --verbose."
),
)
subparsers = parser.add_subparsers(dest="command")
run_parser = subparsers.add_parser(
@ -1129,6 +1139,8 @@ def _parse_cli_args(argv: list[str]) -> argparse.Namespace:
"version",
"init",
}
if normalized_argv and normalized_argv[0] in {"-h", "--help"}:
return parser.parse_args(normalized_argv)
if not normalized_argv or normalized_argv[0] not in known_commands:
normalized_argv = ["run", *normalized_argv]
return parser.parse_args(normalized_argv)