Personal Extensions and Nix integration for Albedo.
albedo-suite docs development.md
17 kB · 307 lines
Markdown
at main

# Development ## Source files `src/server/` and `src/client/` use the same paths as upstream. They contain the files the suite replaces and the files it adds. Edit them as ordinary Gleam, Erlang, Python and Go source. `nix/modules/packages.nix` uses the locked NUR package definitions. It checks the source hash in `upstream/pin.json` and the original files in `upstream/*.sha256`. It then copies the suite files before NUR's existing post-patch hooks run. Upstream dependencies, patches and build checks remain in use. ## Updating upstream Follow the [maintenance guide](agent-maintenance.md#updating-to-newer-albedo) for source merges, pin/checksum rules and verification. The [automated updater](#automated-sparse-upstream-updates) prepares a candidate; it does not replace compatibility review. ## Packaged licenses and source Packages retain licenses, attribution and exact source snapshots under `share/doc/albedo-suite/`. See [corresponding source](package-sources.md) for rebuild, distribution and network source-offer requirements. `checks.package-licenses` verifies installed notices and source correspondence, not an operator's network source offer. ## Checks Run `nix develop` before using Python tooling. The shell exposes the pinned upstream Python modules and E2E harness under `.direnv/albedo-upstream`, which `ty.toml` uses to resolve dependencies absent from the source overlays. ```console nix build .#albedo-defaults .#albedo-patched nix flake check nix fmt ``` The checks exercise Home Manager options, source checksums, package contents, Python formatter, LSP and MCP bindings, RTK routing and FFF search, native MCP lifecycle, and the shell helpers. The files under `src/` keep upstream formatting and are excluded from the suite's treefmt run. ## Terminal UX [Composer editing](vim.md) defines input-only NORMAL/INSERT modes. Lists, forms, agents and transcript navigation use the upstream keyboard controls. The inline renderer overlays `cli/third_party/bubbletea/cursed_renderer.go` with a port of [bubbletea…