VaultSort 3.1.0
advanced-organizerule-builderrolling-datesrecursiveaiquality-of-life
Advanced Organize gains per-job recursive folder scanning, rolling-date conditions, smarter AI job drafting, and a round of visual polish across the Rule Builder.
What's New
Recursive folder scanning
- Per-job subfolder control. Each Advanced Organize job now carries its own
recursiveflag — include or exclude subfolders on a job-by-job basis instead of relying on a single global toggle. - Wired end-to-end. The flag threads through schema validation, the renderer dry-run executor, the headless task executor, and the new "Include subfolders (recursive)" checkbox in both the main Advanced Organize modal and the Visual Rule Builder.
Rolling-date conditions
- Relative date predicates. Date conditions (
created,modified,lastOpened) can now use rolling windows — "created more than 6 months ago" or "modified within the last 2 weeks" — instead of hard-coded calendar dates. - Specific / Rolling toggle. The Predicate Editor presents a Date Type selector; choose Specific for a calendar picker or Rolling for an amount + unit + direction control (days, weeks, months, years × ago / from now).
- Evaluated at run time. Rolling dates resolve against the current clock each time the job executes, so scheduled jobs stay evergreen without manual date updates.
- Full parity. Both the renderer preview and the headless daemon evaluate rolling dates identically, verified by integration parity tests.
Smarter AI job drafting
- Rolling-date awareness. The AI job builder now understands
RelativeDateValueand will propose rolling windows (e.g. a 6-month cutoff) instead of hard-coded ISO dates when the user's intent is time-relative. - Rename find/replace guidance. The AI prompt now includes documentation and an example for the
renameaction's find/replace fields, reducing malformed drafts.
Improvements
- Rolling-date node summaries render as human-readable text ("2 weeks ago", "1 day from now") in the Rule Builder tree and the evaluator logs, replacing the previous raw
[object Object]output. - Predicate Editor metadata layout restructured: date-type selector no longer stretches to fill remaining width; rolling-date controls (amount, unit, direction, live preview) break onto their own full-width row, left-aligned with Field and Operator above.
- Visual Rule Builder preview toolbar now stacks "Include hidden files" and "Include subfolders (recursive)" vertically with a tight 2 px gap, matching the main modal's checkbox density.
- Main Advanced Organize modal checkbox stack tightened from
gap: 0.5to 2 px with compact padding, eliminating excess whitespace between the two options.
Bug Fixes
- Rolling-date predicates no longer render as
"created after [object Object]"in the Rule Builder node summary and evaluator brief description. - Predicate Editor: wrapped metadata fields no longer indent on the second row (replaced MUI
Stack spacingwith CSScolumnGap/rowGapto avoid themarginLeftartifact on flex-wrap). - Schema validation now rejects
RelativeDateValueobjects withamount≤ 0,amount> 3650, non-integer amounts, or unrecognisedunit/directionvalues.
Tests
- 21 unit tests for
relativeDate.ts— resolution arithmetic,isRelativeDateValuetype guard (boundary values, rejection cases), headless parity, andformatRelativeDateoutput. - 18 schema-validation tests covering valid and invalid
RelativeDateValueshapes. - 6 headless evaluator tests for rolling-date predicate branches.
- 6 renderer evaluator + parity tests confirming cross-realm
instanceof Datesafety. - 3 Predicate Editor UI tests for the Specific / Rolling mode toggle.
- Pre-existing Visual Rule Builder and Predicate Editor test suites (14 tests) confirmed green after all changes.
Compatibility
- macOS 12+ on Apple Silicon and Intel. Rolling dates and recursive scanning have no hardware requirements beyond the existing VaultSort 3 baseline.
- Existing saved jobs and rules from VaultSort 3.0.0 load unchanged; the new
recursivefield defaults totrue(preserving previous behaviour) when absent.
