Skip to content

1.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Aug 12:18

1.8.0 — Flexible schedules, reminders, and richer comments

The largest release so far. Habits can now follow the schedules people actually keep — several weekdays, or every N days — carry planned times of day, drive real notifications, and be reviewed as a table. Day comments become first-class Obsidian content.

Huge thanks to @ivorynoise, who contributed the scheduling, times, table, sorting, reminder and animation work across seven pull requests (#6, #7, #8, #12, #14, #18, #19) — the bulk of this release.

🗓️ Flexible schedules

  • Weekly habits on several weekdays. A gym habit on Mon/Wed/Fri is now one habit, one history, one streak — not three notes. Stored as weekdays: [1, 3, 5]; a single day keeps the existing weekday: form untouched.
  • Every N days. A new interval frequency for schedules that aren't weekly at all — alternate-day medication being the motivating case. Anchored to the habit's start date, so missing a day never shifts the schedule, exactly as a prescription behaves.
  • Both flow through the shared isDue(), so the dashboard, sidebar panel, streaks, heatmaps and charts pick them up everywhere at once.
  • Fixes a non-terminating streak walk that interval scheduling exposed.

⏰ Times of day and reminders

  • Optional planned times per habit, one or several — times: ["13:30", "21:30"] for twice-daily medication. Shown on the card next to the schedule and purely informational; due-ness is never affected.
  • Reminder plugin integration (off by default). Habits with planned times can maintain a marked block of - [ ] Habit (@2026-08-10 21:00) checklist lines, in today's daily note or a fixed note, which the community Reminder plugin turns into real notifications.
  • The sync runs both ways — ticking a line, including from the notification itself, logs the habit; unticking un-logs it.
  • A tick records the share of the day's goal that line represents, so ticking off a 15-minute meditation writes 15 minutes and 8 cups of water writes 8. With several planned times the goal is split between them. A larger value logged in the dashboard survives while every line stays ticked.
  • Sort by planned time, so cards follow the day's timeline instead of the alphabet.

📋 Habits overview table

  • A new habits-table code block: one row per active habit with its schedule and completed/due counts for the current week and the current plus two previous calendar months.
  • An interactive Today column logs the day without leaving the table — a Done/Not done pill for binary habits, a compact stepper for counted and timed ones.
  • Counts come from the same habitStats() as everywhere else, so due days, paused days and pre-start days are treated consistently. Group the rows or flatten them into one time-ordered list.

💬 Comments, tags, and links

  • Day comments gain #tag and [[note]] autocomplete. Tags render as chips that open a filtered search; links open the note and support hover preview.
  • Comments now live in the note body inside %%habits-log%% markers rather than in frontmatter. Obsidian only indexes tags from a note's body and its tags property, so this is what makes a tag or link belong to the day rather than to the habit as a whole — searching #fitness lands on the date, and backlinks show the dated line in context.
  • Comments are now editable directly in the habit note, and the card picks up the change.

✨ Also

  • Completion animations can be turned off, for instant, quiet logging. Perfect days are still recorded while animations are off, so re-enabling never replays a stale celebration.
  • Fixed a completed card briefly stretching every other card taller as it swooshed away.
  • New strings translated across all seven bundled languages.

⬆️ Upgrading

Nothing to do, and nothing is rewritten behind your back. Comments still in frontmatter are read exactly as before; a note moves its comments into its body the next time you edit one of them. To convert everything at once, run Move day comments into note bodies from the command palette.

Reminder writing is off by default and touches no notes until you enable it. It appends to your daily note only once that note already exists — it never creates one.