Something went wrong. Try again.
Personal Extensions and Nix integration for Albedo.
Something went wrong. Try again.
# 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…