Skip to the content.

Expansions

Leer en español

An expansion is an optional, self-contained addon to the base pedal system (src/core/, src/adapter/, src/mapper/, pedal-core.service – everything described in MASTER_SPECIFICATION.md). The base system works identically whether or not any expansion is ever installed. Installing or removing one expansion never touches, depends on, or is affected by any other expansion.

The model

Each expansion lives entirely under expansions/<name>/, with its own:

expansions/<name>/
├── SPECIFICATION.md       Design doc: architecture, decisions, why
├── USAGE.md                End-user usage guide (en)
├── docs/es/USAGE.md         ...and its Spanish translation
├── src/                    Its own code
├── systemd/                 Its own systemd unit files (template placeholders)
├── scripts/
│   ├── install.sh           Installs it -- never run automatically
│   └── rollback.sh          Uninstalls it -- stops/removes its services only
└── tests/                   Its own tests, run independently of the base suite

Consequences of this shape, deliberately:

Current expansions

Expansion What it does Status Version
setlist-admin-usb Manage the library USB (Sets/Banks/tracks) from a phone’s browser, reachable by plugging the phone into the Pi over USB (Android tethering / iPhone Personal Hotspot over cable) Implemented and validated end-to-end on real hardware (iPhone) v2026.10.01
setlist-admin-wifi The same library management, plus Pi WiFi configuration (home network / phone hotspot fallback), reachable over WiFi On the roadmap, not planned for near-term development (2026-10-03) – implemented and unit-tested, a working WiFi dongle was found, but real-hardware validation and further work are deliberately deferred. See its own SPECIFICATION.md v2026.10.01

Each expansion’s VERSION file (vYYYY.MM.DD) tracks its own version independently of the base project and of each other – see the root CHANGELOG.md’s “Versioning” section for the scheme.

Both were designed to stay convergeable: setlist-admin-usb reuses setlist-admin-wifi’s CRUD backend and frontend UX unchanged, only replacing the connectivity layer underneath. See each one’s SPECIFICATION.md for the full reasoning.