chronos
Batch 8.
What it is
Section titled “What it is”chronos is a keyboard-driven calendar whose home surface is a week view rendered as a time grid — seven day columns, a vertical time axis, events drawn as blocks positioned and sized by their start/duration. Its signature feature is zoom: the time axis renders at 30min, 15min, 5min, or 1min granularity, switchable with +/-, so the same fixed terminal height shows either a whole day at a glance or a single hour in fine detail. It has a visual mode (v) for selecting a time range, undo/redo, and — the other standout — form-based event editing via the Huh library (a structured multi-field input panel) instead of inline editing. All-day events render in a separate strip toggled with tab.
For KN-86 this is the most directly applicable calendar reference in the batch: the time-grid + zoom mechanic is exactly the “how do you show variable density in a fixed cell budget” problem KN-86 faces on every surface, and Huh is a clean model for the structured-input panels a KN-86 cart needs.
UI / layout / interaction
Section titled “UI / layout / interaction”- Time-grid week view: day columns × time-slot rows; events are blocks placed at their start row and extended over their duration. This is fundamentally a 2D grid render — KN-86’s native model — not a list.
- Zoom = density control on a fixed canvas. The crux. At
30mineach row covers 30 minutes (whole day fits, coarse); at1mineach row is a minute (one hour fills the screen, precise). The terminal height never changes — only how much time each row represents. This is the single most transferable idea: KN-86 has a fixed row budget, and “let the operator trade temporal range against detail by changing what each row means” is a general solution to constrained-display density that applies far beyond calendars (zoomable logs, waveform views, mission timelines). - Visual-mode range selection (
v): mark a start, move the cursor, the swept range highlights — then act on it (create an event spanning it, clear it). A vim-native multi-cell selection primitive. - All-day strip toggled separately (
tab) so timed and untimed events don’t fight for the same grid space.
Rendering — monochrome-adaptable
Section titled “Rendering — monochrome-adaptable”- Event blocks are positioned + sized, not colored. An event’s meaning on the grid comes from where it sits (which day column, which time row) and how tall it is (duration) — both spatial channels that survive monochrome untouched. Lip Gloss styling adds color in chronos, but the load-bearing information is geometric.
- The zoom mechanic is color-agnostic — it’s about row semantics, not hue. Ports to KN-86 with zero adaptation.
- Visual-mode selection needs a highlight channel; on KN-86 that’s inversion (swept range = inverted cells), not a highlight color.
Navigation / keybindings
Section titled “Navigation / keybindings”| Key | Action |
|---|---|
hjkl / arrows | Move cursor on grid |
H / L | Previous / next week |
w / b / e | Next / previous / end of event |
t | Jump to current time |
gg / G | Start / end of day |
gh## | Jump to hour ## |
gt#### | Jump to time (e.g. gt1430 → 2:30pm) |
v | Visual (range-select) mode |
+ / - | Zoom time-grid granularity |
a | Add event (Huh form) |
cc / ct / cs | Edit all / title / start-time |
u / U | Undo / redo |
Deep, fully vim-idiomatic, with composable temporal jumps (gh, gt). The gt1430-style absolute-time jump is a sharp pattern for any KN-86 surface that needs precise navigation in a large coordinate space.
Libraries
Section titled “Libraries”- Bubble Tea + Lip Gloss — the Charm stack (cross-link cliamp.md, octoscope.md, golazo.md).
- Huh — Charm’s form library: structured multi-field input (text fields, selects, confirms) rendered as a focused panel. This is the piece worth singling out. KN-86 carts repeatedly need structured input (configure a mission, name a save, set parameters) and Huh is a clean reference for what that panel’s interaction model should be: tab between fields, per-field edit keys (
ctrl+uclear,ctrl+a/ctrl+eline-start/end,ctrl+w/ctrl+kdelete), submit/cancel. Add Huh to the form-input reference set. - go-ical (
.ics), rrule-go (recurrence) — interop, not core.
Architecture
Section titled “Architecture”- Undo/redo (
u/U) over an edit history — a reversible-command model. A KN-86 cart with a structured editor (mission builder, journal) should consider the same: every edit a reversible command. - Storage: local
.icsfiles by default; experimental CalDAV sync. Config at~/.config/chronos/config.json, with secret resolution via password managers or env vars. - rrule-based recurrence computed at render time rather than materialized — events expand from a rule when the grid is drawn.
Single-color adaptation
Section titled “Single-color adaptation”- Zoom ports unchanged — it’s the cleanest single-color-friendly mechanic in the batch because it operates on row semantics, not appearance. KN-86 should treat chronos’s zoom as the template for any density-trading surface: a
+/-granularity control that changes what each row/cell represents while the canvas stays fixed. - Event blocks via box-drawing, position, and brightness: an event = a bordered block (box-drawing) occupying its day column × duration rows; overlapping/conflicting events shown by a doubled left rule
║or a▓fill; the cursor’s event inverted. Category — if needed — by a leading glyph (per calcure.md’s keyword-glyph idea), never by color. - Visual-mode selection = inverted cell run. The swept range renders as black-on-amber; the rest stays amber-on-black. One channel (inversion), unambiguous.
- Huh-style form panel monochrome: active field = inverted label or a
▸caret + underline cursor; inactive fields = dim; required/invalid = a trailing!glyph rather than red text. The whole structured-input model survives on one color via caret position + brightness + inline glyph markers.
- Strongest time-grid / density-control reference in the corpus. The zoom-as-row-semantics idea is the takeaway worth flagging up: it generalizes past calendars to any KN-86 surface fighting the fixed-cell budget.
- Huh is the form-input reference for KN-86’s structured-input panels — pair it with the keyboard-first input lineage in l123.md.
- Calendar-spectrum cross-links: caps-log.md (year/month index end) and calcure.md (month + agenda middle). chronos is the intraday, zoomable end — the highest-resolution calendar reference of the three.