calcure
Batch 8.
What it is
Section titled “What it is”calcure is a curses calendar and task manager that puts a monthly calendar view beside a task panel in one terminal screen. Events live on the calendar; todos live in the task panel with subtasks, deadlines, and timers. It reads .ics so it can mirror a synced Nextcloud / Google calendar as a read-only overlay, imports from calcurse, and can pull birthdays from your abook contacts. The two ideas worth carrying into KN-86 are (1) the calendar/task two-zone layout and (2) the icon-from-event-name convention — calcure auto-decorates events with a glyph chosen by keyword (✈ for a flight, ⛷ for skiing, ⛱ for a beach day).
UI / layout / interaction
Section titled “UI / layout / interaction”- Two-zone screen: monthly grid + task list, both visible at once, no tab-switching to see one or the other. This is the standard “calendar on one side, agenda on the other” productivity layout, executed minimally.
- Privacy masking: events can be marked private and render as
•••••— a neat fixed-width redaction primitive (the masked event still occupies its slot; only the glyphs change). - Responsive/resize-aware rendering — it reflows for narrow terminals. KN-86’s grid is fixed, so this is informational, but it confirms the layout degrades gracefully when the task panel and calendar compete for width.
?opens the full keybinding list in-app — a self-documenting help overlay, the same affordance KN-86’s runtime should expose.
Rendering — monochrome-adaptable
Section titled “Rendering — monochrome-adaptable”- Icon-from-keyword decoration is the headline rendering idea. An event titled “flight to Tokyo” gets a
✈; the glyph is derived from the title, not stored. On a single-color amber display the color of an event type doesn’t survive, but the leading glyph does — and that’s actually the more robust channel. KN-86 should adopt this directly: a keyword→glyph table that prefixes calendar/agenda entries with a CP437 or box-drawing marker (♦deadline,▲meeting,■blocked,→travel). Position-stable, color-free, scannable. - Color-coded event types in calcure carry category meaning by hue. On KN-86 that channel is unavailable; the keyword-glyph + a brightness/inversion tier replaces it (see single-color section).
- Both monochrome and color modes ship via config — calcure already proves the layout reads fine without color, which is the exact constraint KN-86 operates under permanently.
Navigation / keybindings
Section titled “Navigation / keybindings”- Vim keys throughout; full list via
?in-app and in the project wiki. - User-rebindable via a
keybindings.inifile — a clean precedent for letting KN-86 operators remap the Ferris Sweep’s contextual actions per surface. - Date navigation, add/edit/delete event, toggle task done, set deadline/timer — the standard calendar verb set, all keyboard.
Libraries
Section titled “Libraries”- curses (Python stdlib) — the baseline TUI primitive, lower-level than the Charm/FTXUI component models elsewhere in the corpus. Not a KN-86 dependency, but a reminder that the month-grid layout doesn’t need a heavy framework — it’s a grid of fixed cells, which is precisely KN-86’s native rendering model.
icalendarfor.icsparse,holidaysfor holiday overlays,jdatetimefor the Persian-calendar option.
Architecture
Section titled “Architecture”- Plain-text database in a user folder (“plain text database for cloud sync”) — events/tasks persist as text, so any file-sync service replicates them. Matches the KN-86 cartridge-SD save-file philosophy: human-readable, sync-friendly, no opaque DB.
- Config at
~/.config/calcure/config.ini; keybindings split intokeybindings.ini. .icsas the interop boundary — calcure treats synced calendars as read-only overlays composited onto its own editable layer. A KN-86 calendar cart could similarly composite a read-only imported.icslayer under the operator’s own editable events.
Single-color adaptation
Section titled “Single-color adaptation”- Keyword→glyph table is the primary adaptation, and it’s a strict upgrade for KN-86. Where calcure uses glyph and color, KN-86 uses glyph and style. Build a small table mapping title keywords to CP437 markers; prefix every event row with its marker. This makes event category scannable on a monochrome strip without any hue.
- Event-type tiers via brightness/inversion: deadline/urgent = inverted (black-on-amber), normal = bold, low-priority/done = dim with a
✓/✗lead. Three legible priority bands on one color. - Privacy masking ports verbatim —
•••••is already color-free and fixed-width; it’s a model for any redacted/locked content on the KN-86 grid (e.g. a mission detail not yet unlocked). - Task hierarchy via indentation + box-drawing rather than color: parent task flush-left, subtasks indented under a
├─/└─tree, deadline shown as a right-aligned[D-3]countdown chip. The whole subtask/deadline model renders in pure box-drawing.
- Closest “calendar component” reference for a KN-86 productivity/agenda cart — month grid + task panel is the canonical IA, and calcure executes it without color dependence, which is the proof KN-86 needs that the layout survives the single-color constraint.
- Subtask + deadline + timer task model is a clean spec for a KN-86 todo surface — hierarchy via indentation, deadlines as countdown chips, all box-drawing.
- Cross-link caps-log.md (the year/month index end of the calendar spectrum + the per-component theme grammar) and chronos.md (the intraday time-grid end). calcure sits in the middle: month overview with an agenda companion.
- Cross-link l123.md for the keyboard-first, rebindable-key lineage.