okami.mom/albedo
git clone https://git.nkp.pet/okami.mom/albedo
f7fcae1
main
Source ledger
Research date: 2026-09-23. Primary sources only. Application revisions below are the commit-pinned URLs returned during inspection. A GitHub file's content SHA is not interchangeable with a repository commit; only repository revisions are used in these permalinks.
This is an independent synthesis. Observed implementation details, documented APIs, and recommended practices are distinguished in the other references. No upstream application was built, executed, or exhaustively audited during this research. Public documentation may change; inspect the target repository's pinned dependencies before using version-sensitive advice.
S01
Bubble Tea: current API, upgrade guide, and release.
- API inspected at v2.0.9
- v2 upgrade guide
- v2.0.9 release, published 2026-08-19
- README and tutorial
Read for model/command/view APIs, input migration, view configuration, and command ordering. The release API independently confirmed the v2.0.9 tag. The upgrade guide was a default-branch snapshot, not pinned to the application's version.
S02
Bubbles: catalogue and v2 migration.
Read the catalogue, guide introduction and global patterns through the beginning of progress migration. Verified selected concrete v2 input/viewport usage against Gum's source. The displayed documentation publication date was 2026-08-24. Do not treat the abridged comparison table as an exhaustive migration guide.
S03
Lip Gloss: layout and v2 style/color model.
Read layout/color documentation and upgrade material. The displayed documentation publication date was 2026-08-11. Width includes internal border/padding and excludes margins; color handling moved toward output-layer adaptation. This is the source for the skill's version-specific arithmetic, not a CSS analogy.
S04
Charm: Commands in Bubble Tea.
Read for the purpose of commands, side effects, and avoiding command-based internal message routing. Treat older snippets as conceptual material and translate only after verifying the target APIs. The skill's cancellation and generation protocol is a derived recommendation, not a quotation of this article.
S05
Glow root UI. Revision 6b365eea95f7541d4af441d971010b09f6082a0e.
Read lines 1–465 (the root file): state transitions, key routing, child delegation, theme and size events, view modes, file-discovery commands. The pager/stash internals and specialized renderer were not exhaustively read.
S06
Gum filter interaction and rendering. Revision 7179388031ae67d7f538d001be87d931f1cf5e28.
Read lines 1–270 and 280–525: keys, state, help, rendering, resize, filtering, cursor/selection behavior, and match-position handling. A small intervening portion and the remainder were not needed for the extracted lessons; this was not a complete file audit.
S07
Gum command boundary. Same revision as S06.
Read the command wrapper: component construction, stdin candidates, stderr UI, context ownership, final-model outcome, and result output. This supports shell-composition lessons, not a guarantee of every Gum subcommand's semantics.
S08
Crush maintainer UI instructions. Revision 72654940d9e46961a7d804d536c45761e7084a08.
Read the architecture, component, dialog, style, and performance guidance. These are maintainer notes, not runtime evidence. The “no list-level cache” statement conflicts with S09 at the same revision; the skill follows the source for that detail.
S09
Crush list implementation. Same revision as S08.
Read lines 1–220: fields and cache entries, construction, width-change invalidation, bounded bottom checks, full-height caching, prewarming, and beginning of the overflow method. The whole render/invalidation subsystem was not audited. The initial source segment suffices to establish the cache's existence and stated width dependency.
S10
Soft Serve SSH root UI. Revision 37685d36f5b7bf0e32217ddd7c8e045c57772619.
Read lines 1–300: page/session state, contextual help, sizing, update routing, and view assembly. The server's authentication and transport implementation were not reviewed.
S11
Huh official documentation.
Read form, validation/theme, and accessible-mode documentation. This is documentation-level study, not a Huh source audit.
S12
Legacy teatest dependency boundary.
Default-branch file inspected during research. It declared Go 1.24.0 and github.com/charmbracelet/bubbletea v1.3.5. This is why the unversioned teatest import is not the intended v2 helper.
S13
teatest v2 module.
Default-branch file inspected during research. It declared module github.com/charmbracelet/x/exp/teatest/v2, Go 1.24.2, and a dependency on charm.land/bubbletea/v2 v2.0.0-rc.1. Verify compatibility in the target graph; an existing module is not a promise that an arbitrary revision will fit every application.
S14
teatest v2 implementation.
Read lines 1–300: options, test program construction, waits, final model/output, sending/typing, quit, and golden-output helper. Use bounded waits and explicit lifecycle handling. This file was source-reviewed, not compiled in the research environment.
S15
VHS official command reference and testing notes.
Read command reference entries for waits, input, screenshots, environment/recording setup, and text/ASCII outputs used in regression workflows. No recording was produced for this skill.
S16
ANSI display-width helpers.
Read helper catalogue and display-aware string operations. The distinction between ANSI-preserving manipulation and an untrusted-data sanitization policy is an engineering recommendation; this skill does not certify a particular sanitizer.
S17
Charm ecosystem overview.
Read to identify the roles of the core libraries and adjacent tools including Glamour and Wish. Mentioned for selection and scope; their full APIs and implementations were not independently studied here.
How to refresh this research
Inspect the target repository first. For a new API claim, read official documentation or code at its pinned version. For an application pattern, record a commit permalink and the relevant methods; do not infer the full architecture from a screenshot. When docs disagree with code, report the discrepancy and prefer the implementation for implementation facts. Validate important behavior with tests or an actual terminal run, and record exactly which occurred.
S17
APIs checked while adding worked examples, 2026-09-23.
- Bubble Tea v2.0.9: typed key messages,
tea.View, command constructors, output/input and context options. - Bubbles text input v2.2.1:
SetWidth,Focus,Update, virtual cursor, styles. - Lip Gloss v2.0.6: total block width before margins, border/padding sizing, rendering and measurement.
- ANSI v0.11.8: display-cell width and truncation.
- Terminal v0.2.2:
IsTerminal(fd uintptr).
The docs displayed these versions during inspection. The example module uses explicit direct dependency versions, not an assertion that every package is the newest available. API review is not module compilation; transitive resolution and go.sum generation were unavailable. The request, retention, output, and sanitization policies in the examples are original application choices, not promises made by Charm.
1# Source ledger 2 3Research date: **2026-09-23**. Primary sources only. Application revisions below are the commit-pinned URLs returned during inspection. A GitHub file's content SHA is not interchangeable with a repository commit; only repository revisions are used in these permalinks. 4 5This is an independent synthesis. Observed implementation details, documented APIs, and recommended practices are distinguished in the other references. No upstream application was built, executed, or exhaustively audited during this research. Public documentation may change; inspect the target repository's pinned dependencies before using version-sensitive advice. 6 7## S01 8 9**Bubble Tea: current API, upgrade guide, and release.** 10 11- [API inspected at v2.0.9](https://pkg.go.dev/charm.land/bubbletea/v2@v2.0.9) 12- [v2 upgrade guide](https://github.com/charmbracelet/bubbletea/blob/main/UPGRADE_GUIDE_V2.md) 13- [v2.0.9 release](https://github.com/charmbracelet/bubbletea/releases/tag/v2.0.9), published 2026-08-19 14- [README and tutorial](https://github.com/charmbracelet/bubbletea) 15 16Read for model/command/view APIs, input migration, view configuration, and command ordering. The release API independently confirmed the v2.0.9 tag. The upgrade guide was a default-branch snapshot, not pinned to the application's version. 17 18## S02 19 20**Bubbles: catalogue and v2 migration.** 21 22- [API inspected at v2.2.1](https://pkg.go.dev/charm.land/bubbles/v2@v2.2.1) 23- [v2 upgrade guide](https://github.com/charmbracelet/bubbles/blob/main/UPGRADE_GUIDE_V2.md) 24- [Component catalogue](https://github.com/charmbracelet/bubbles) 25 26Read the catalogue, guide introduction and global patterns through the beginning of progress migration. Verified selected concrete v2 input/viewport usage against Gum's source. The displayed documentation publication date was 2026-08-24. Do not treat the abridged comparison table as an exhaustive migration guide. 27 28## S03 29 30**Lip Gloss: layout and v2 style/color model.** 31 32- [API inspected at v2.0.6](https://pkg.go.dev/charm.land/lipgloss/v2@v2.0.6) 33- [Width contract](https://pkg.go.dev/charm.land/lipgloss/v2@v2.0.6#Style.Width) 34- [Frame helper](https://pkg.go.dev/charm.land/lipgloss/v2@v2.0.6#Style.GetHorizontalFrameSize) 35- [v2 upgrade guide](https://github.com/charmbracelet/lipgloss/blob/main/UPGRADE_GUIDE_V2.md) 36 37Read layout/color documentation and upgrade material. The displayed documentation publication date was 2026-08-11. Width includes internal border/padding and excludes margins; color handling moved toward output-layer adaptation. This is the source for the skill's version-specific arithmetic, not a CSS analogy. 38 39## S04 40 41**Charm: Commands in Bubble Tea.** 42 43- [Official engineering article](https://charm.land/blog/commands-in-bubbletea/) 44 45Read for the purpose of commands, side effects, and avoiding command-based internal message routing. Treat older snippets as conceptual material and translate only after verifying the target APIs. The skill's cancellation and generation protocol is a derived recommendation, not a quotation of this article. 46 47## S05 48 49**Glow root UI.** Revision `6b365eea95f7541d4af441d971010b09f6082a0e`. 50 51- [ui/ui.go](https://github.com/charmbracelet/glow/blob/6b365eea95f7541d4af441d971010b09f6082a0e/ui/ui.go) 52 53Read lines 1–465 (the root file): state transitions, key routing, child delegation, theme and size events, view modes, file-discovery commands. The pager/stash internals and specialized renderer were not exhaustively read. 54 55## S06 56 57**Gum filter interaction and rendering.** Revision `7179388031ae67d7f538d001be87d931f1cf5e28`. 58 59- [filter/filter.go](https://github.com/charmbracelet/gum/blob/7179388031ae67d7f538d001be87d931f1cf5e28/filter/filter.go) 60 61Read lines 1–270 and 280–525: keys, state, help, rendering, resize, filtering, cursor/selection behavior, and match-position handling. A small intervening portion and the remainder were not needed for the extracted lessons; this was not a complete file audit. 62 63## S07 64 65**Gum command boundary.** Same revision as S06. 66 67- [filter/command.go](https://github.com/charmbracelet/gum/blob/7179388031ae67d7f538d001be87d931f1cf5e28/filter/command.go) 68 69Read the command wrapper: component construction, stdin candidates, stderr UI, context ownership, final-model outcome, and result output. This supports shell-composition lessons, not a guarantee of every Gum subcommand's semantics. 70 71## S08 72 73**Crush maintainer UI instructions.** Revision `72654940d9e46961a7d804d536c45761e7084a08`. 74 75- [internal/ui/AGENTS.md](https://github.com/charmbracelet/crush/blob/72654940d9e46961a7d804d536c45761e7084a08/internal/ui/AGENTS.md) 76 77Read the architecture, component, dialog, style, and performance guidance. These are maintainer notes, not runtime evidence. The “no list-level cache” statement conflicts with S09 at the same revision; the skill follows the source for that detail. 78 79## S09 80 81**Crush list implementation.** Same revision as S08. 82 83- [internal/ui/list/list.go](https://github.com/charmbracelet/crush/blob/72654940d9e46961a7d804d536c45761e7084a08/internal/ui/list/list.go) 84 85Read lines 1–220: fields and cache entries, construction, width-change invalidation, bounded bottom checks, full-height caching, prewarming, and beginning of the overflow method. The whole render/invalidation subsystem was not audited. The initial source segment suffices to establish the cache's existence and stated width dependency. 86 87## S10 88 89**Soft Serve SSH root UI.** Revision `37685d36f5b7bf0e32217ddd7c8e045c57772619`. 90 91- [pkg/ssh/ui.go](https://github.com/charmbracelet/soft-serve/blob/37685d36f5b7bf0e32217ddd7c8e045c57772619/pkg/ssh/ui.go) 92 93Read lines 1–300: page/session state, contextual help, sizing, update routing, and view assembly. The server's authentication and transport implementation were not reviewed. 94 95## S11 96 97**Huh official documentation.** 98 99- [README](https://github.com/charmbracelet/huh) 100- [Accessibility section](https://github.com/charmbracelet/huh#accessibility) 101 102Read form, validation/theme, and accessible-mode documentation. This is documentation-level study, not a Huh source audit. 103 104## S12 105 106**Legacy teatest dependency boundary.** 107 108- [exp/teatest/go.mod](https://github.com/charmbracelet/x/blob/main/exp/teatest/go.mod) 109 110Default-branch file inspected during research. It declared Go 1.24.0 and `github.com/charmbracelet/bubbletea v1.3.5`. This is why the unversioned teatest import is not the intended v2 helper. 111 112## S13 113 114**teatest v2 module.** 115 116- [exp/teatest/v2/go.mod](https://github.com/charmbracelet/x/blob/main/exp/teatest/v2/go.mod) 117 118Default-branch file inspected during research. It declared module `github.com/charmbracelet/x/exp/teatest/v2`, Go 1.24.2, and a dependency on `charm.land/bubbletea/v2 v2.0.0-rc.1`. Verify compatibility in the target graph; an existing module is not a promise that an arbitrary revision will fit every application. 119 120## S14 121 122**teatest v2 implementation.** 123 124- [exp/teatest/v2/teatest.go](https://github.com/charmbracelet/x/blob/main/exp/teatest/v2/teatest.go) 125 126Read lines 1–300: options, test program construction, waits, final model/output, sending/typing, quit, and golden-output helper. Use bounded waits and explicit lifecycle handling. This file was source-reviewed, not compiled in the research environment. 127 128## S15 129 130**VHS official command reference and testing notes.** 131 132- [README](https://github.com/charmbracelet/vhs) 133 134Read command reference entries for waits, input, screenshots, environment/recording setup, and text/ASCII outputs used in regression workflows. No recording was produced for this skill. 135 136## S16 137 138**ANSI display-width helpers.** 139 140- [github.com/charmbracelet/x/ansi documentation](https://pkg.go.dev/github.com/charmbracelet/x/ansi) 141 142Read helper catalogue and display-aware string operations. The distinction between ANSI-preserving manipulation and an untrusted-data sanitization policy is an engineering recommendation; this skill does not certify a particular sanitizer. 143 144## S17 145 146**Charm ecosystem overview.** 147 148- [Charm](https://charm.land/) 149 150Read to identify the roles of the core libraries and adjacent tools including Glamour and Wish. Mentioned for selection and scope; their full APIs and implementations were not independently studied here. 151 152## How to refresh this research 153 154Inspect the target repository first. For a new API claim, read official documentation or code at its pinned version. For an application pattern, record a commit permalink and the relevant methods; do not infer the full architecture from a screenshot. When docs disagree with code, report the discrepancy and prefer the implementation for implementation facts. Validate important behavior with tests or an actual terminal run, and record exactly which occurred. 155 156 157## S17 158 159**APIs checked while adding worked examples, 2026-09-23.** 160 161- [Bubble Tea v2.0.9](https://pkg.go.dev/charm.land/bubbletea/v2@v2.0.9): typed key messages, `tea.View`, command constructors, output/input and context options. 162- [Bubbles text input v2.2.1](https://pkg.go.dev/charm.land/bubbles/v2@v2.2.1/textinput): `SetWidth`, `Focus`, `Update`, virtual cursor, styles. 163- [Lip Gloss v2.0.6](https://pkg.go.dev/charm.land/lipgloss/v2@v2.0.6): total block width before margins, border/padding sizing, rendering and measurement. 164- [ANSI v0.11.8](https://pkg.go.dev/github.com/charmbracelet/x/ansi@v0.11.8): display-cell width and truncation. 165- [Terminal v0.2.2](https://pkg.go.dev/github.com/charmbracelet/x/term@v0.2.2): `IsTerminal(fd uintptr)`. 166 167The docs displayed these versions during inspection. The example module uses explicit direct dependency versions, not an assertion that every package is the newest available. API review is not module compilation; transitive resolution and `go.sum` generation were unavailable. The request, retention, output, and sanitization policies in the examples are original application choices, not promises made by Charm.