complete category-scoped values, rules, and report parity

- Add category-bound date and numeric values
- Complete rule execution and conflict handling
- Expand Markdown and HTML report output
This commit is contained in:
Chili Palmer
2026-08-20 21:01:02 +02:00
parent cb0e480b79
commit 16150b5a8f
19 changed files with 2519 additions and 419 deletions

View File

@@ -14,8 +14,9 @@ database with the `.agnd` extension.
## Features
- Free-form items with multiline notes, priority, due dates, done dates, alarms,
numeric values, recurring schedules, and prerequisites. Completing a recurring
item creates its next dated occurrence and carries its alarm and filing forward.
independent date and numeric category values, recurring schedules, and
prerequisites. Completing a recurring item creates its next dated occurrence
and carries its alarm and filing forward.
- Hierarchical categories with inherited membership and explicit many-to-many
assignment and negative exclusions: an item exists once but can appear in many
contexts.
@@ -23,14 +24,15 @@ database with the `.agnd` extension.
`today`, `tomorrow`, `next friday`, `in 3 days`, and ISO dates.
- Live views for all items, tasks, upcoming work, completed work, and a datebook.
- Full-text search plus composable Boolean filters over text, notes, categories,
dates, done state, priority, numeric value, alarms, recurrence, and relative due
windows.
dates, done state, priority, category-scoped numeric values, alarms, recurrence,
and relative due windows.
- Agenda-style View Manager and Category Manager screens with editable live
view definitions, hierarchy, category kinds, match phrases, and exclusivity.
- Persistent per-view columns, custom headings and widths, numeric aggregates,
filtered multi-section layouts, collapsed sections, and view reordering.
- User-authored category rules with a live match preview and deterministic actions
for assignments, exclusions, priority, value, dates, and completion.
- Lotus-style live conditions and persistent actions with match previews,
reversible conditional assignments, category-scoped date/numeric ranges and
values, assignment removal, completion, structured export, and discard.
- Marking and bulk completion, soft deletion with Trash recovery, sorting, and
dependency visibility.
- View-scoped CSV, JSON, Markdown, HTML, and iCalendar export, text/iCalendar
@@ -130,13 +132,14 @@ or build failure stops the gate.
| Key | Action |
| --- | --- |
| Arrows or `h j k l` | Move selection / scroll |
| Up/Down or `j`/`k` | Move between item rows |
| Left/Right | Move between cells/columns |
| `Insert` or `n` | Add a free-form item |
| `F2` or `e` | Edit the selected item |
| `F2` or `e` | Edit the selected item or bound value cell |
| `F3` or `c` | Assign categories |
| `F4` or `d` | Toggle done |
| `F5` | Edit the item's note |
| `F6` or `p` | Edit item properties |
| `F6` or `p` | Edit priority, When, alarm, and recurrence |
| `F7` or `Space` | Mark for bulk operations |
| `F8` or `v` | View Manager |
| `F9` | Category Manager |
@@ -167,7 +170,8 @@ as typed TOML at `~/.config/rogue-agenda/preferences.toml`. The screen controls:
- carriage-return and item markers
- autosave checkpoint interval and destructive-action confirmations
- ISO, US, European, or long date display and 12/24-hour time
- decimal and thousands separators
- decimal and thousands separators for legacy unbound numeric displays; bound
numeric columns carry their own portable report formatting
Greenscreen, Nord, and Catppuccin Mocha use dedicated selected-row
foreground/background pairs with at least 7:1 relative-luminance contrast.
@@ -184,7 +188,8 @@ retention (`on-demand`, `on-close`, `end-of-day`, or `immediate`), completed-ite
policy, automatic filing, numeric date order, first day of the week, default and
named times, and note-editor tab width. `this week` and `next week` honor the
chosen week boundary; `morning`, `afternoon`, and `evening` honor their configured
times.
times, plus whether Markdown/HTML reports include document/view headers and
footers.
Enumerated preferences and document settings use choice popovers, so values such
as themes, yes/no switches, policies, date formats, and week boundaries cannot be
@@ -258,7 +263,9 @@ Open the View Manager with `F8`. Press `n` to create a view, `e` to edit one,
`Ctrl-Up`/`Ctrl-Down` to reorder it, or `Delete` to remove it.
Boolean filters use `and`, `or`, `not`, and parentheses. Available predicates
include `text~rust`, `note~budget`, `category=Work`, `priority<=2`, `value>100`,
include `text~rust`, `note~budget`, `category=Work`, `priority<=2`,
`numeric:Hours>7`, `numeric:Cost inside 100..500`,
`date:"Review Date" outside 2026-08-01..2026-08-31`,
`done`, `open`, `dated`, `undated`, `due<=7d`, `overdue`, `has-note`, `alarm`,
`recurring`, and `nonrecurring`.
For example:
@@ -267,15 +274,32 @@ For example:
category=Work and open and (priority<=2 or due<=3d)
```
Columns use `field:width:heading:aggregate`, separated by commas. Fields are
`item`, `categories`, `when`, `priority`, `note`, `value`, `done`, `alarm`,
`recurrence`, `created`, and `updated`; aggregates are `none`, `sum`, `avg`,
`count`, `min`, or `max`.
Columns use `field:width:heading:aggregate`, separated by commas. Ordinary fields
are `item`, `categories`, `when`, `priority`, `note`, `done`, `alarm`,
`recurrence`, `created`, and `updated`. Category values use `numeric[Category]`
or `date[Category]`; aggregates are `none`, `sum`, `avg`, `count`, `min`, or
`max`. A view may sort by a bound field such as `numeric[Hours]`.
```text
item:55:Action:none,when:25:Due:none,value:20:Cost:sum
item:55:Action:none,when:25:Due:none,numeric[Cost]:20:Cost:sum
```
Numeric columns accept optional formatting fields after the aggregate:
`label:decimals:decimal-separator:thousands:negative:percent:alignment`.
Decimal separator is `dot` or `comma`; thousands is `comma`, `dot`, `space`, or
`none`; negative style is `minus`,
`parentheses`, or `trailing`; use `percent` to add a non-editable `% of total`
companion column.
```text
numeric[Cost]:20:Cost:sum:$:2:dot:comma:parentheses:percent:right
```
Count counts populated numeric cells, not section rows. Total, Average, Minimum,
and Maximum use only the bound category's populated values. Left/Right selects a
cell; `F2` edits a bound numeric or date value. `#HIGHLIGHT_VALUE` and
`#HIGHLIGHT_TYPE` follow that cell for macro arithmetic.
Sections use `heading|filter`, separated by semicolons. Add `|collapsed` to make
a section initially collapsed.
@@ -286,14 +310,22 @@ Urgent|priority=1;Upcoming|due<=7d;Someday|undated|collapsed
## Automatic category rules
Open the Category Manager with `F9`, then create or edit a category. In addition
to simple match phrases, each category can have a Boolean rule condition and an
action. The form previews how many existing items match before saving.
to simple match phrases, each category can have a Boolean condition and an
action. The form previews how many existing items match before saving. A true
condition creates a live conditional assignment to the category being edited;
that assignment is withdrawn when the condition becomes false, without removing
an explicit assignment. This lifecycle is independent of automatic text filing.
Actions use `action:value`: `assign:Category`, `exclude:Category`, `priority:1`,
`value:125.50`, `when:tomorrow at 3pm`, `alarm:tomorrow at 2pm`,
`repeat:weekdays`, or `done:true`. `assign:` with no value assigns the category
being edited. Rules are reapplied to existing information and whenever an item
changes.
An action fires once when an item enters the category and creates a persistent
change. Actions use `action:value`: `assign:Category`, `exclude:Category`,
`remove:Category`, `priority:1`, `numeric:Hours=7.5`,
`date:Review Date=tomorrow`, `when:tomorrow at 3pm`,
`alarm:tomorrow at 2pm`, `repeat:weekdays`, `done:true`,
`export:jsonl|archive.jsonl`, or `discard:true`.
Use `F10`, then `u`, for Utilities Execute. It reapplies conditions and actions
to the current item, marked items, current section, current view, or whole
document. `F10`, then `f`, shows circular/non-converging rule conflicts.
## Recurring work
@@ -301,7 +333,8 @@ Open item properties with `F6` and set a recurrence to `daily`, `weekdays`,
`weekly`, `monthly`, `yearly`, or a rule such as `every 2 weeks`. The item must
have a When date. Marking it done preserves the completed occurrence and creates
the next open occurrence. Rogue Agenda shifts its alarm by the same interval and
copies its note, priority, numeric value, recurrence, and explicit category
copies its note, priority, recurrence, explicit category assignments, and
category-scoped date/numeric values
assignments. iCalendar import and export maps these schedules to `RRULE`.
## Design notes