It had grown to 580 lines, and most of what a newcomer scrolled past was reference material: the five feature tables, the CLI cookbook with both output faces and the exit statuses, the configuration reference, and the package layout. None of that is what somebody reads while deciding whether to install this. It is 375 lines now and it does onboarding and install -- what MeshTerm is, the screenshots, how to get it running, a quick start, and how the project is run. The rest moved under docs/ behind a new docs/README.md index, which GitHub renders when you browse to the folder. The index also lists the two code surveys, which the README's own table never did. The prose moved by extracting line ranges rather than retyping, so anything that did not need rewording is byte-identical. All 255 relative links across the 13 markdown files resolve, anchors included. Two changes are not relocations. "## Development" is deleted rather than moved, because CONTRIBUTING.md already carried every command in it plus the blame-ignore config and the 72-column gallery gate. And the Windows console section is summarised in Install with the full explanation in docs/terminals.md, since a Windows user meeting empty boxes cannot afford to miss it. Licensing stays where it was. Acknowledgements, the map and font credits, the dependency table and the licence are all still in the README, which is where a redistributor looks and where SignPath Foundation will look for its credit. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1.1 KiB
1.1 KiB
How the code is laid out
A map of the package for anyone reading it for the first time. The house rules that govern what goes where are in CLAUDE.md, which is the real style guide; CONTRIBUTING.md has the dev install and the gates a change has to pass.
MeshTerm is layered so a new feature is one file in meshterm/tools/:
cli.py Typer app; no subcommand -> interactive menu
context.py AppContext (console, config, repository, device) dependency container
core/ Domain: models, preferences + device profiles, connection abstraction (+ mock)
tools/ Pluggable "menu options"; each self-registers and gets logging for free
services/ Background algorithms (monitor, trace, tx search, courier, watchtower) — no UI
persistence/ SQLite schema, repository, structured logging
ui/ Rich theme/widgets + the full-screen TUI (screens, dialogs, map, chat)
Adding a feature means subclassing Tool, decorating it with @register, and
implementing run(). The same registry builds both the CLI and the menu, and the base
class wraps every execution in a logged runs row automatically.