working prototype

This commit is contained in:
Hermes Agent
2026-08-16 19:23:59 +00:00
commit ba530a7271
13 changed files with 6787 additions and 0 deletions

119
PROJECT.md Normal file
View File

@@ -0,0 +1,119 @@
# Rogue Agenda project ledger
Last updated: 2026-08-16
## Product direction
Rogue Agenda is a Rust, Ratatui, and SQLite reimagining of Lotus Agenda 2.0.
The goal is functional fidelity to its information-management ideas and visual
rhythm, not binary or document compatibility. Documents use `.agnd`; each is a
self-contained SQLite database. Every product string uses **Rogue Agenda**.
The central principle is “capture first, organize later.” An item is stored once
and may participate in many category relationships and saved views. The TUI keeps
the original's high-information gray workspace, blue title bands, red selection,
columnar item view, and function-key strip, while adding dynamic layout, mouse
interaction, conventional shortcuts, UTF-8, and modern durability.
## Research basis
- Lotus Development Corporation, *Lotus Agenda User's Guide 2.0* (1989), scanned
at Internet Archive. The contents identify items, notes, hierarchical and
mutually exclusive categories, explicit/conditional assignments, sections,
live views, datebook views, alarms, numeric calculations, filters, dependencies,
bulk marking, sorting, automatic conditions/actions, import/export, printing,
backups, managers, macros, and accessories.
- Lotus Development Corporation, *Starter Applications 2.0* (1990), scanned at
Internet Archive. It documents Activities Planner, Account Manager, People
Manager, priorities, contacts, expenses, weekly tracking, and status reports.
- Tavis Ormandy's hands-on “Lotus Agenda” article and animations. These establish
the actual screen grammar: two-line blue file/view header, gray unboxed canvas,
section and column headings, dot-prefixed category values, red selection,
blue F1F10 command tiles, and examples of natural-language extraction.
- Bob Newell's Agenda FAQ and James Fallows' contemporary account. These clarify
the distinctive behavior: single-copy items, category inheritance, negative
assignment, aliases/abbreviations, incremental structure, and named live views.
- Period reviews from the Los Angeles Times and HUMANIST archives corroborate
long notes, free-form entry, priorities, Boolean reports, and automatic filing.
Research URLs:
- https://archive.org/details/lotus-agenda-users-guide
- https://lock.cmpxchg8b.com/lotusagenda.html
- https://www.bobnewell.net/agenda/agfaq.txt.html
- https://www.bobnewell.net/agenda/atlantic.txt.html
- https://dhhumanist.org/archives/Virginia/v02/0410.html
- https://www.latimes.com/archives/la-xpm-1988-07-28-fi-9745-story.html
## Implemented in this prototype
- [x] `.agnd` SQLite documents, schema migration metadata, foreign keys, WAL,
transactions, integrity-friendly soft deletion, and automatic checkpoints.
- [x] Items with free text, note, priority, When, Done, alarm, numeric value,
recurring schedule, creation/update timestamps, manual order, and prerequisite
links. Completion advances recurring work and carries alarms and filing forward.
- [x] Categories with hierarchy, inheritance in queries, kinds (standard, date,
numeric), match phrases, mutually exclusive siblings, and many-to-many links.
- [x] Explicit assignment and automatic text-based assignment.
- [x] Explicit negative category assignments that override automatic filing.
- [x] Natural-language date extraction for common relative, weekday, and ISO forms.
- [x] Live saved views, datebook presentation, category/done/date/priority filters,
search filtering, configurable sort, and responsive columns.
- [x] Interactive creation, editing, and deletion of saved live views and category
definitions, including hierarchy, match phrases, kinds, and exclusivity.
- [x] Persistent per-view fields, headings, widths, order, numeric aggregates,
filtered multi-section layouts, collapsed sections, and view reordering.
- [x] Parsed Boolean expressions with `and`/`or`/`not`, parentheses, text/note/
category matching, numeric comparisons, state predicates, and relative due dates.
- [x] User-authored category conditions with live match preview and deterministic
assign, exclude, priority, numeric value, When, alarm, recurrence, and Done
actions. Rules apply iteratively, respect explicit overrides, and detect
non-convergence.
- [x] Default All Items, Tasks, Upcoming, Recently Done, and Datebook views.
- [x] Agenda-style item workspace, View Manager, Category Manager, command menu,
item editor, property editor, notes, category chooser, help, and status messages.
- [x] Marking and bulk completion; Trash view, soft discard, and recovery.
- [x] Responsive wide/compact rendering and mouse row/command/view interaction.
- [x] Text and iCalendar import; view-scoped CSV, JSON, Markdown, styled HTML,
and iCalendar export with notes, categories, dates, priority, completion, and
recurring `RRULE` schedules.
- [x] Demo data, CLI help, README, MIT license, and unit/integration tests.
## Supported with a modern interpretation
- [x] Numeric calculations: per-item numeric values and view total/average are
supported; arbitrary category formula programs are intentionally represented
by the safer aggregate model.
- [x] Conditions/actions: category match phrases and date parsing run on item
changes; assignments are immediately re-evaluated. Shell-executing actions are
omitted by design, while deterministic filing actions are supported.
- [x] Printing: view-aware Markdown and styled HTML reports are the portable
print/preview path, alongside CSV and JSON data exports.
- [x] Backups: SQLite durability plus explicit checkpoint replaces proprietary
backup-file rotation. Ordinary filesystem backup tools work on `.agnd` files.
- [x] Clipboard/accessory capture: terminal paste into the new-item form replaces
the DOS resident accessory.
- [x] Macros: conventional keys and direct commands replace keystroke-replay macros.
## Delayed / unsupported
These are the few features that either depend on obsolete DOS integration or need
a larger follow-on implementation:
- [ ] Arbitrary formula columns that reference several numeric categories. Current
view columns support `sum`, `avg`, `count`, `min`, and `max` aggregates.
- [ ] Rich-text/font markers, printer control sequences, page-layout preview, and
named printer configurations.
- [ ] Lotus Metro/List Manager/STF compatibility, DOS accessories, and Agenda macro
compatibility (explicitly outside the project's format-compatibility goal).
- [ ] Password encryption. A description field is supported by schema metadata;
weak historic password protection will not be imitated without real encryption.
- [ ] Desktop notifications while the application is closed. Due alarms are shown
prominently while Rogue Agenda is running.
## Near-term plan
1. Add desktop alarm integration and in-application snooze controls.
2. Add encrypted documents and secure unlock handling.
3. Add property-based tests for complex hierarchy and rule combinations.
4. Add a structured text definition-file importer for unusual legacy datasets.