From cb0e480b79cf17ccf4442a25130fd31eb89c039c Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Thu, 20 Aug 2026 20:13:55 +0200 Subject: [PATCH] doc: updated project status and features that are missing --- PROJECT.md | 153 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 121 insertions(+), 32 deletions(-) diff --git a/PROJECT.md b/PROJECT.md index 746aa05..0adf320 100644 --- a/PROJECT.md +++ b/PROJECT.md @@ -1,6 +1,6 @@ # Rogue Agenda project ledger -Last updated: 2026-08-16 +Last updated: 2026-08-20 ## Product direction @@ -20,7 +20,7 @@ interaction, conventional shortcuts, UTF-8, and modern durability. - 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, + live views, datebook views, alarms, numeric categories, column 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 @@ -38,6 +38,22 @@ interaction, conventional shortcuts, UTF-8, and modern durability. - The preserved Agenda 2.0 Help file documents the Macro Manager, Learn workflow, note-style Macro Editor, complete brace-command catalog, variables, special values, error/break handlers, key notation, macro menus, and manager indicators. +- The preserved Agenda 2.0 Help and User's Guide define the original computation + and automation model precisely. Each item can hold an independent value for each + numeric category. Numeric columns provide Count, Total, Average, Minimum, and + Maximum, an optional `% of total` column, and calculation labels and results that + can be displayed and printed. Conditions are Text, Assignment, Date, or Numeric. + Actions are Assignment, Date, Numeric, or Special; Special means designate as + done, export, or discard. Utilities `Execute` re-applies conditions and actions + to existing items; it is not an action type and does not launch a command. +- Agenda macros provide numeric variables, arithmetic expressions (`+`, `-`, `*`, + `/`), and special values including `#HIGHLIGHT_VALUE`, so procedural calculations + can read and write values through the interface. The 2.0 documentation does not + describe declarative or automatically recalculated formula columns that combine + multiple numeric categories. Such spreadsheet-style formulas are therefore not + a historical parity requirement. +- A 1990 Lotus support FAQ (ag2qanda) independently lists the numeric-column + calculations as Count, Total, Average, Minimum, and Maximum. Research URLs: @@ -48,6 +64,7 @@ Research URLs: - https://www.bobnewell.net/agenda/AgendaHelp.htm - https://dhhumanist.org/archives/Virginia/v02/0410.html - https://www.latimes.com/archives/la-xpm-1988-07-28-fi-9745-story.html +- https://www.bobnewell.net/agenda/ag2qanda.txt.html (1990 Lotus support FAQ; confirms the five column-calculation settings) ## Implemented in this prototype @@ -119,14 +136,28 @@ Research URLs: ## 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] Numeric calculations currently use one optional `numeric_value` per item and + expose five named aggregate modes: `sum`, `avg`, `count`, `min`, and `max` + (`model/enums.rs` `Aggregate`, `ui.rs` `aggregate_value`). Sum, average, minimum, + and maximum operate on the populated values in a section. Count currently counts + every item in the section, whereas Lotus Count counted populated entries in the + numeric column. The names therefore align with Lotus, but the data model, + category scoping, Count semantics, formatting, and presentation do not yet have + full parity. +- [x] Conditions / actions: each `CategoryRule` pairs a parsed condition + expression (`filter.rs` `Predicate`: text/note containment, category membership, + priority and numeric-value comparison, done / has-note / has-date / due-within / + overdue / alarm / recurring) with a deterministic action (`RuleActionKind`: + assign, exclude, priority, value, when, alarm, repeat, done). This is a useful + modern predicate-to-mutation engine, but it is not yet a faithful implementation + of Lotus conditions and actions. Re-evaluation on item change is currently tied + to automatic filing, and a conditional assignment is not withdrawn when its + predicate becomes false. `Done` overlaps one Lotus Special action; rule-driven + export and discard are missing. - [x] Printing: view-aware Markdown and styled HTML reports are the portable - print/preview path, alongside CSV and JSON data exports. + print/preview foundation, alongside CSV and JSON data exports. Markdown and HTML + currently omit aggregate rows, percentage-of-total columns, numeric formatting, + and other report-layout fidelity listed below. - [x] Backups: SQLite durability is supplemented by explicit/manual and backup-on-open `.agnd.bak` snapshots after a full WAL checkpoint. Ordinary filesystem backup tools also work on `.agnd` files. @@ -135,31 +166,89 @@ Research URLs: - [x] Macros retain Agenda's compact hybrid of literal keystrokes and `{COMMAND}` entries while applying those actions to Rogue Agenda's modern TUI. -## Delayed / unsupported +## Fidelity TODOs -These are the few features that either depend on obsolete DOS integration or need -a larger follow-on implementation: +These are the still-missing capabilities that matter to a full modern reimagining +of Agenda. Obsolete DOS integration, hardware-specific printer control, and legacy +file-format compatibility are not parity goals. -- [ ] 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 import of - external legacy `.MAC` files (outside the project's format-compatibility goal). -- [ ] Historic macro protection, hidden-list indicators, external source-file - attachment, and per-screen run restrictions. Macro source, Learn recording, - execution, key binding, AUTOEXEC, and persistent variables are already native. -- [ ] DOS macro single-stepping/speed/frozen-window effects and an internal - clipboard bridge. Their command syntax and `#CLIPBOARD` value are recognized; - screen-pacing directives are safe no-ops and the clipboard currently reads empty. -- [ ] 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. +### Numeric data and calculations + +- [ ] Store a separate value for every item–numeric-category assignment instead of + the current single `items.numeric_value` scalar. Preserve explicit, automatic, + and conditional assignment provenance while doing so. +- [ ] Bind numeric view columns to a specific numeric category so several values, + such as Hours, Rate, Cost, and Budget, can coexist on one item and be displayed, + filtered, sorted, edited, and aggregated independently. +- [ ] Scope numeric conditions and numeric actions to a chosen numeric category, + with inside/outside minimum and maximum ranges and assignment removal. +- [ ] Match Lotus aggregate semantics per numeric column and per section: Count + populated numeric entries rather than rows, and calculate Total, Average, + Minimum, and Maximum from that column's values only. +- [ ] Add per-numeric-column display properties: label or currency symbol, decimal + places, thousands separator, negative-number style, and full-precision storage + independent of rounded display. +- [ ] Implement `Display % of total` as a derived, non-editable companion column + calculated within each section. +- [ ] Make macro highlight context cell-aware. `#HIGHLIGHT_VALUE` must expose the + highlighted numeric, date, text, category, or item value so Agenda-style macro + arithmetic can operate on document data rather than only on item text. + +### Conditions and actions + +- [ ] Separate Lotus-style conditions from actions. A condition creates a live + conditional assignment to its own category; an action creates an explicit, + persistent assignment or value change after an item enters its source category. +- [ ] Withdraw conditional assignments automatically when their Text, Assignment, + Date, or Numeric condition becomes false, while preserving explicit assignments. +- [ ] Re-evaluate affected rules whenever their inputs change, independently of the + automatic text-filing preference. +- [ ] Implement category-scoped Assignment, Date, and Numeric conditions with the + original positive/negative and inside/outside-range behavior. +- [ ] Implement Assignment, Date, and Numeric actions with explicit persistence, + including assignment removal and category-specific date and numeric values. +- [ ] Complete Special actions: designate as done, export to a selected structured + destination, and discard. `Done` exists today; export and discard do not. +- [ ] Add a user-facing re-evaluation command equivalent to Utilities `Execute`, + scoped to the current item, marked items, section, view, or whole document. This + means applying rules to existing data, not executing an external process. +- [ ] Surface circular or conflicting rules as inspectable document state instead + of only returning a non-convergence error. + +### Markdown, HTML, and modern printing + +- [ ] Emit calculation-label footer rows and results for every configured aggregate + in every Markdown and HTML section, using the same values as the live view. +- [ ] Emit `% of total` companion columns when enabled and keep percentage values + consistent between the TUI, Markdown, and HTML. +- [ ] Apply each numeric column's label/currency, decimal, separator, and negative + formatting consistently in Markdown and HTML reports. +- [ ] Preserve configured column alignment and relative widths in HTML and use + appropriate Markdown alignment markers where Markdown can represent them. +- [ ] Add print-focused HTML styling: repeated table headers, sensible page breaks, + section continuity, note wrapping, and optional document/view headers and footers. +- [ ] Include report metadata needed to understand an export: document description, + view name, active filters, and generation time, without changing data-only CSV + and JSON exports into presentation formats. + +### Other modern-relevant fidelity + +- [ ] Add rich-text emphasis markers and a modern print/PDF preview and page-layout + workflow without reproducing DOS printer drivers or control sequences. +- [ ] Connect macros to the system clipboard and support useful modern equivalents + of per-context run restrictions, source attachment, and single-step debugging. +- [ ] Add secure encrypted documents and unlock handling instead of reproducing the + original weak password protection. +- [ ] Add desktop alarm delivery while the application is closed and in-application + snooze controls. ## 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. +1. Implement per-numeric-category values and category-bound numeric columns. +2. Correct conditional-assignment lifecycle and separate conditions from explicit + actions. +3. Complete aggregate, percentage, numeric-formatting, Markdown, and HTML report + parity. +4. Add desktop alarm integration and in-application snooze controls. +5. Add encrypted documents and secure unlock handling. +6. Add property-based tests for complex hierarchy, rule, and numeric combinations.