Pages
Contents
adr-001 β Version Pill: Unified Format in Default Theme
Status: ACCEPTED Date: 2026-03-10 Author: xPulse
Context
The app displays the current version in several places: sidebar footer, login footer, info page (status pills). In v1.2.0 this was inconsistent β sometimes a rounded pill, sometimes plain text, sometimes just the version number, sometimes with a prefix.
Decision
Unified format for all version pills in the default theme:
| VERSION: RC-V1.3.0-ABC123 |
- Always uppercase
- Prefix
VERSION:followed by a space - Value directly from
version.json(generated at build time or viagenerate-version-dev.sh) - No
border-radius: 999pxβ square (border-radius: 2px) consistent with all other UI elements - Font size 10px,
letter-spacing: 0.08em, monospace
Technically: shared helper function initVersionPills() in modules/ui.js.
All elements with the data-version-pill attribute are automatically populated.
| // ui.js |
| export async function initVersionPills() { |
| const { version } = await fetch('/version.json').then(r => r.json()); |
| const label = `VERSION: ${version.toUpperCase()}`; |
| document.querySelectorAll('[data-version-pill]').forEach(el => el.textContent = label); |
| } |
Version format from branch:
| Branch | Format | Example |
|---|---|---|
master |
v{tag} |
V1.3.0 |
release/v* |
rc-v{version}-{hash} |
RC-V1.3.0-ABC123 |
develop |
develop-{hash} |
DEVELOP-ABC123 |
feature/xyz |
feat-xyz-{hash} |
FEAT-XYZ-ABC123 |
hotfix/xyz |
fix-xyz-{hash} |
FIX-XYZ-ABC123 |
Rationale
- Consistency: one format, one function, no drift between screens
- Square pills match the rest of the design system (all borders are
border-radius: 2px) data-version-pillis declarative β new screens only need the attribute, no JS- Uppercase makes the debug character of the information clear
Consequences
version.jsonmust be generated before dev start βmake devcallsgenerate-version-dev.sh- All previously hardcoded
v1.3.0strings in pills are replaced bydata-version-pill initVersionPills()is called inonShellMount,initLoginandinitInfo
Alternatives Rejected
- Rounded pill (
border-radius: 999px): was used in v1.2.0, does not fit the design system - Version number only without prefix: less clear what the element means
- Separate component per screen: leads to drift, no central control