Skip to content

calcure

Batch 8.

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).

  • 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.
  • 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.
  • Vim keys throughout; full list via ? in-app and in the project wiki.
  • User-rebindable via a keybindings.ini file — 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.
  • 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.
  • icalendar for .ics parse, holidays for holiday overlays, jdatetime for the Persian-calendar option.
  • 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 into keybindings.ini.
  • .ics as 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 .ics layer under the operator’s own editable events.
  • 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.