Skip to content

Lazyplanner v1.2.0

Choose a tag to compare

@littekge littekge released this 23 Jul 15:45

LazyPlanner v1.2.0 — Smarter Quick-Add

This release makes the one-line quick-add input far more capable. When you create an event or task, you can now express times, dates, recurrence, and location inline — and the parser tells you when something looks like a typo instead of silently burying it in the title.

Quick-add stays deliberately conservative: a token is only claimed when it clearly matches a documented form, and anything unrecognized becomes part of the title. Tokens are whitespace-delimited, so bob@example.com and task!5 remain inert title text.

✨ New

  • Relative datesnext <weekday> (the next one, +7 days), next week, next month, and in N days/weeks/months, on top of the existing today/tomorrow/fri/jul 20/7/20/2026-07-20 forms. Month math clamps correctly (Jan 31 + 1 month → Feb 28/29, never spilling into March).
  • Time ranges5-6pm, 14:00-15:30, and friends. A right-side am/pm distributes to a bare left half (5-6pm = 5pm–6pm), and an end at or before the start crosses midnight (11pm-1am). Events take the range's end (or the usual 1-hour default); a task's due is the range's start. A bare number is never read as a time.
  • Simple recurrencedaily/weekly/monthly/yearly, every day/week/month/year, every <weekday> (weekly on that day), and every <month> <day> (yearly on that date). This is the first way to create a recurring item entirely in-app. With no explicit date typed, the recurrence anchors the start/due itself (every mon → the next Monday); an explicit date always wins.
  • Location@cafeteria or @"room 204" for multi-word values, set on both events and tasks. Tasks now carry a Location and show it in the Detail pane.
  • Obvious-typo warnings with keep-open re-prompt — a mistyped priority (!hgh), an unclosed @"…, a fuzzy follower (next tuedsay, in 3 dayz), or an impossible time/date (25:00, 5-6xm, 2026-07-40) keeps the quick-add input open showing the warning and creates nothing. Resubmit the identical text to accept it as-is. Warnings fire only on an unmistakable intent anchor — plausible prose like My Event!!!!!, email bob@example.com, 24/7, and http://x.com stay silent.

🎁 Free riders

:goto and the quick-set-due sd command both run through the same parser, so they gained the entire relative-date family with no extra work.

📝 Notes

  • The full edit form still does not rewrite an existing recurrence rule — that's coming in v1.3.0 (recurrence-rule UI). Quick-add is currently the only in-app way to create a recurring item.
  • Full grammar is documented in :help (new Quick-add tokens section) and the README.

Verification

All six build steps landed repro-first with a green full gate (go test ./..., go vet, staticcheck, go build). The iCalendar/quick-add fuzz targets were extended with the new grammar plus an invariant that a warning only ever fires alongside a real intent anchor (~1M execs clean).

Full Changelog: v1.1.0...v1.2.0