Changelog
What changed, day by day
- Day 127feature
Send your tasks to another device
The “Your data” card has a new “Send to a device” button. It makes a link that carries the same backup Export saves (tasks, notes, lists, and tag colors). On a phone or tablet it opens the share sheet; elsewhere it copies the link. Opening the link on another device shows what it holds and asks before adding anything. Tasks already there are left as they are, the same as Import. The data sits in the part of the link after the #, which browsers do not send to the server, and it is cleared from the address bar once read.
- Day 126feature
See when you last backed up
Tasks are kept only in this browser, and the “Your data” card at the bottom of Today did not say whether a copy existed anywhere else. It now shows when this browser last saved a backup (“Last backup 12 days ago”), or “Not backed up yet” if it never has. The line turns amber once the last backup is 30 days old. Exporting, from the card or the command menu, also asks the browser to keep the site’s storage rather than clearing it on its own, which some browsers, Safari in particular, do for sites that go unvisited for a while. The date is kept under its own key (bed-lastbackup); task data is unchanged.
- Day 125design
Put the daily update card away
The “What got better today” card sat above the plan on every visit, even after it had been read. It now has a close button, and opening it to read the entry also puts it away. It stays hidden until the next entry is added. The changelog is still linked at the bottom of Today and from the command menu.
- Day 124design
Move between views from any page
The row of views (Today, Week, Month, Routines, Tags) was only at the top of Today. The Week, Month, Routines, Tags, History, and Review pages had a “Back to today” link instead, so going from Week to Month meant passing through Today. Every one of these pages now has the same header and view row, with the open view highlighted, and the 12h/24h clock toggle is available on all of them.
- Day 123fix
Long task names show in full
A task name too long for one line was cut off with an ellipsis, and on a phone there was no way to read the rest without opening it to edit. Names now wrap onto as many lines as they need. The time and the star stay beside the first line. With a mouse in a narrow window, hovering a row used to squeeze its name to nothing to make room for the row’s action icons; when a row is too narrow for both, the icons are now behind the same “…” menu that touch screens use.
- Day 122design
“Move to tomorrow” waits until 3 PM
The “Move N to tomorrow” link under today’s list showed from the start of the day, offering to push the whole plan to tomorrow before any of it had begun. It now appears from 3 PM. At any hour, the same action is in the “More for today” menu (the three dots beside today’s count) and in the command menu, and it can still be undone.
- Day 121feature
An Add button that stays in reach
When the add box is scrolled out of view, an “Add task” button now sits in the bottom-right corner. Tapping it puts the cursor in the add box and scrolls it into view, so on a phone with a long list there is no need to scroll down to add something. The button is hidden while the add box is on screen, while any text field is being typed in, and while a message such as Undo is showing at the bottom.
- Day 120design
Timeline blocks show their task
Blocks on today’s timeline were plain gray shapes, and the only way to tell which task one stood for was a tooltip on hover or tapping it. A block wide enough to hold a few letters now shows the task’s title, cut short with an ellipsis when it does not fit. Blocks use lighter tinted fills with a darker left edge so the text reads in light and dark themes: green for done, amber for starred, gray for the rest. The hour labels under the bar no longer overlap at the right end, as “6 PM” and “7 PM” could on a phone.
- Day 119design
Task rows line up
Tasks without a time had a hidden drag handle taking up space at the start of the row, so their checkbox and title sat further right than those of timed tasks, and further right than their own notes and steps. The handle now sits in the row’s left margin and still appears on hover with a mouse. Checkboxes, titles, notes, and steps line up in every row. Dragging works as before.
- Day 118fix
The focus line shows once again
Since yesterday, the “Set today’s focus” row could repeat down the page after you added or checked off tasks. The cause was the focus line, the wrap-up time, and the day note sharing one internal key after the backup change. Each now has its own key, so the focus line appears once. No saved data was affected.
- Day 117feature
Backups include your notes and lists
Export used to save only tasks. The backup file now also holds day notes, week notes, each day’s focus line, wrap-up times, focused time, quick lists, and tag colors. Importing it fills in any of these that are missing in this browser and leaves existing ones as they are, the same way tasks merge. The message after an import lists what was added, such as “3 tasks and 2 day notes”. Theme, clock format, and reminder settings stay per device. Backups exported before today still import as before.
- Day 116design
Today’s extra actions, in one labeled menu
The four small icons beside today’s date (copy the plan, print it, add timed tasks to a calendar, reminders) are now in a single menu behind a “more” button, each with its name written out. Before, the icons were only explained by a tooltip on hover, which a touch screen never shows. Reminders shows On or Off in the menu. The menu works with arrow keys and Escape. On a narrow screen the date no longer wraps onto several lines, and the streak sits below it when there is no room beside it.
- Day 115feature
Finished tasks are kept for a year
Finished one-off tasks were deleted from the browser 30 days after completion. They are now kept for 365 days. The History page still opens on the last 30 days, with a Show earlier button at the bottom that adds 30 days at a time, and its search covers the full year. Day headings from a previous year show the year. The daily streak was also limited by the old cutoff and can now count past 30 days. Tasks removed under the old rule cannot be recovered.
- Day 114feature
Rename a tag
A tag can now be renamed from the Tags page. Tap its chip; under the colors is a Rename box. The new name replaces the tag in every task that carries it, finished ones included, and in saved quick lists, and the tag keeps its chosen color. If the new name is already a tag, the button reads Merge and the two become one; a task that had both keeps a single copy.
- Day 113feature
Repeat a few times a week
A routine can now repeat a set number of times a week, on any days, from once to six. It shows on each day until that week’s count is met, then stays off until Sunday starts a new week; past days it wasn’t done on are not marked missed. The row shows progress (“1 of 3 this week”), and the streak counts weeks that met the count. Set it from the repeat menu under “A few times a week”, or type it in the add box: “Run 3x a week”, “Swim twice a week”, “Call home once a week”.
- Day 112fix
A finish time that respects your schedule
The “finish around” estimate now keeps timed tasks at their set times and fits untimed estimated work into the free time around them, starting from now. Before, it added up every estimate as if the day ran straight through, so a plan with an evening appointment could say it would end in the morning. The wrap-up time’s “to spare” or “over” uses the same projection.
- Day 111feature
Move a task between days in the week
In the Week view, an unfinished one-off task can now be moved to another of the seven days. With a mouse, drag it onto another day; the day under the pointer is outlined while you hold it. On a touch screen or from the keyboard, use the new two-arrow button on the row, which opens a row of day buttons (Today, Tomorrow, Wed, Thu, ...); tap one to move it there. Moving a carried-over task off Today schedules it for that day instead. Routines and finished tasks stay where they are.
- Day 110feature
Undo a bulk move
"Move N to tomorrow" and "Bring all to today" now show the same Undo toast a swiped task does: "Moved 4 tasks to tomorrow", with an Undo button for a few seconds afterward. Undo puts each task back on the day it came from. Cmd/Ctrl+Z works too, both for these and for a single swiped task, after any pending delete has been undone. The same applies when either action is run from the command menu. Previously a bulk move could only be reversed one task at a time.
- Day 109design
A tidier header
The header on the main page is now two rows: the name with the 12h/24h and theme switches beside it, then a row of views (Today, Week, Month, Routines, Tags) with the current one highlighted. On a wide screen the name no longer wraps onto two lines. On a phone the views sit as five equal tabs with the icon above the label, so all of them fit without scrolling, and the tagline is hidden to save room.
- Day 108feature
Swipe a task on a touch screen
On a phone or tablet, a task row can now be swiped sideways. Swipe right to check it off (or to un-check a finished one); on a carried-over or Someday task, swiping right does what its "Do today" button does. Swipe left to move a one-off task to tomorrow, with an "Undo" in the toast that follows for a few seconds. The row slides with your finger over a colored strip naming the action, and only acts once it has travelled about a third of the way; letting go short of that puts it back. Vertical scrolling is unaffected, swipes that start on a step checklist or an input are ignored, and a mouse keeps drag-to-reorder as before. Routines, finished tasks, and tasks already set for a later day can't be swiped left. Every swipe has a tap equivalent, so nothing needs the gesture.
- Day 107feature
See where your day’s time goes
The "about Xh planned today" line now breaks down by tag. Under it sits a slim stacked bar and a short legend: each estimated task's time is counted under its first #tag — or an "untagged" bucket — so the plan reads as "2h 45m of #work, 1h of #health, 25m of #personal" instead of one lump sum. Each segment uses the tag's own color (the one you chose, or its usual hashed tint), and the segments add up to the same total as the line above. It appears only when it says something the total doesn't — two or more buckets carrying time — and stays hidden otherwise, so a day with no estimates or a single context sees no change. It reads the tags already inline in your task text and needs no new stored data.
- Day 106feature
Tap a link in a task
A URL written into a task's title is now a link you can tap, not dead text you have to retype or copy out. It shows as a small chip with just the site's host — "github.com", "youtu.be" — so a long link no longer crowds the task off the row, and it opens in a new tab. Bare "www." links are recognized too, and trailing punctuation ("see example.com.") stays out of the link. This matches how task notes already turn URLs into links; the two now share the same link-reading code. Links in a title stay part of the task text, so nothing about how tasks are stored changed.
- Day 105feature
Finish a #tag as you type
The add box now completes a #tag inline. Start typing one — "Email Sam #wo" — and the tags you already use that it could become appear right under the box, most-used first, each with a count of how many tasks already wear it; a bare "#" lists them all. Enter or Tab takes the highlighted tag (the arrow keys move the highlight, and a tap still works), swapping the half-typed "#wo" for the full "#work " so you can keep typing. It reads only the word at the end of the box, so editing mid-line never triggers it, and it steps aside for the "reuse a task you've typed" suggestions when you're not on a tag. It complements the tap-a-tag chips below the box — the keyboard way to the same place — and, by steering you to a tag you've spelled before, keeps a stray "#wrok" from quietly splitting a filter in two. Tags still live inline in the task text, so nothing about how tasks are stored changed.
- Day 104feature
See when you finished each task
Checking a task off now records the time of day you finished it, not just the date. On the History page each completed task shows a quiet "done at" time, and each day is ordered by when things were actually finished — where a task carries no recorded finish time, its planned time of day still orders it, so a day reads chronologically either way. It applies to one-off tasks and to routines (each day a routine is done keeps its own finish time). The times are stored alongside the existing completion record, so streaks, counts, and the activity calendar are unchanged; tasks finished before this update simply carry no time. The stored shape adds two optional fields (planner version 16 to 17), and older saved data loads unchanged.
- Day 103feature
Save a set of tasks as a list
A "Lists" button by the add box (and a "Quick lists" entry in the command menu) opens a small manager for saved sets of tasks — a weekly-review checklist, a trip's packing list, the tasks a new project always needs. Name a set once, then add the whole thing to your day in one tap; each saved list also gets its own "Add … to today" command. You can build a list from scratch (a name plus one task per line) or save today's remaining tasks as a list, and edit or remove any list later. A list's lines run through the same quick-add parsing the add box uses, so a line can still carry a #tag, a time, an estimate, a "!", or a day like "tomorrow" — and a repeat phrase makes a routine. Lists differ from routines (a task that recurs on its own) and from reusing a single past task: they're a set you add together, on demand. They live in their own bed-lists key, separate from your tasks, so a task export or import doesn't carry them and the stored task shape is untouched.
- Day 102feature
Choose a color for a tag
A tag can now be given a color you pick, instead of the one hashed from its name. On the Tags page, tap a tag's chip to open a small swatch picker — eleven colors, or "Auto" to go back to the default — and the choice tints that tag everywhere it appears: on every task row, in the filter bar, and in the week and month views. A tag you never touch keeps its hashed default, so nothing changes until you choose one. The colors live in their own bed-tagcolors key, separate from your tasks, so a task export or import doesn't carry them and the stored task shape is untouched.
- Day 101feature
See a #tag across every day
A new Tags page (in the header) gathers your #tags into lists. Until now a tag only sliced today; now each one shows everything still on it in one place — today's tasks, the days ahead, the Someday shelf, and any routines that carry it — so a context like #work or #errands reads as a project you can see whole. Busiest lists lead, and within each, what's on today's plate sits above the days to come and your standing routines. You can check off a task that's due now (an open one-off, or a routine due today) right from the list, exactly as the home page records it; a day-ahead or Someday task is shown for planning and completed on its own day. Anything with no tag collects in a quiet "No tag" list at the end. Tags still live inline in a task's text, so nothing about how tasks are stored changed.
- Day 100feature
Give a routine an end date
A repeating task can now be set to stop on a chosen day — a planned end, for the finite habits a daily planner had nowhere to keep: a medication course, a 30-day challenge, watering a neighbour’s plants until they’re back. Set it under "Ends on" in the repeat menu (and clear it with "No end date"); the row reads "until Sep 30", turning to "ended Sep 30" once past. After the end date the routine steps out of every day, count, timeline, reminder, and the week and month views — its history and streak stand, since they only ever read the days it was due. It differs from pausing (a break you resume): this is a fixed end. Stored data bumps to version 16 with one added optional field; existing tasks are untouched.
- Day 99feature
Snooze a task to later today
A task you can't get to right now can be pushed to a later slot in one tap, without opening the date and time pickers. A "Snooze" action on today's and carried-over tasks offers time-aware options — "In an hour", "This afternoon", "This evening", and "Tomorrow morning" — each showing the time it will land on. Options already past for today drop out as the day goes on, leaving "Tomorrow morning" as the fallback. Choosing one gives the task that time of day (so it slots into the agenda and timeline) and, for a carryover, pulls it onto today; the row flashes where it moved to. It reuses the existing day-and-time fields, so nothing about how tasks are stored changed. Reachable both from the hover actions and, on touch, from the task menu.
- Day 98feature
The add box keeps an unsent task
Whatever you have typed in the add box but not yet added is now kept, so a reload or a trip to another page and back no longer loses it — including a pasted or multi-line brain dump and the Today/Tomorrow/Someday it was being written for. The draft is stored in the browser under a new bed-draft key, separate from your tasks, and cleared the moment the task is added or logged; a task shared into the app still takes precedence on that load. Nothing about how tasks are stored changed.
- Day 97feature
Log something you already did
The add box now has a "Log as already done" action beside it: type what you did and it goes straight into today's finished list instead of the to-do list. It's for the work that wasn't on the plan but still counts, so the done count, the completed-task history, and streaks reflect what actually happened without the add-then-check two-step. The line is parsed the same way a normal add is — its tags, time of day, estimate, and "!" are kept — but any schedule it named (tomorrow, someday, or a repeat) is dropped, since a logged task has already happened and belongs to today. Cmd/Ctrl+Enter in the add box does the same, and a pasted multi-line list logs each line at once. Nothing about how tasks are stored changed.
- Day 96feature
Share something straight into your day
The installed app is now a share target, so text or a link handed to it from another app’s share sheet becomes a task. The shared title, text, and page URL are folded into one line (overlapping pieces are dropped) and dropped into the add box, focused and ready, rather than added outright — so it can be edited or given a schedule phrase ("tomorrow", "9am") before it’s committed. The same works for any link that opens the app with title, text, or url query params, so a shortcut or bookmarklet can capture into it too. The params are stripped from the URL after they’re read, and, like everything else here, the capture stays on your device.
- Day 95feature
See the time you actually focus
The Focus timer now keeps a record of the time it spends running on each task, so the plan’s estimates can be read against the time actually spent. While you work, a running "focused today" tally sits under the timer beside the task’s estimate. Back in the list, a task shows a quiet "focused 25m" chip once a minute is logged — emerald when it meets or passes its estimate — and the day’s time summary adds a "focused" total across the day. Time counts only while the timer runs: a pause stops it, and a reset still credits the work already done. It is kept per day in the browser under a new bed-focuslog key, separate from your tasks, so nothing about how tasks are stored changed.
- Day 94feature
Say “this weekend” when you add a task
Quick-add now recognizes a trailing "this weekend", "next weekend", "on the weekend", or a bare "weekend", alongside the weekday names and "next week" it already read. It schedules the task for Saturday, the day the weekend opens: "this weekend" is the one you’re in or heading toward (today when it already is Saturday or Sunday, otherwise the coming Saturday), and "next weekend" is a full week past that. The resolved day shows in the add preview before you commit, and it stacks with the rest of quick-add — "Fix the gutter this weekend #home 30m" keeps the tag and estimate, and "Submit taxes due weekend" reads the weekend as a deadline. A bare "weekend" and a phrase like "the weekend party" stay literal text. It resolves to an ordinary date, so nothing about how tasks are stored changed.
- Day 93feature
Type “someday” to capture it
Quick-add now reads a trailing "someday" (or "one day") and parks the task in the Someday list — so an idea you want to keep without committing to a day is captured in one line, without reaching for the Today/Tomorrow/Someday toggle. "Learn guitar someday", "Read that book one day". The recognized capture shows in the add preview before you commit, and it stacks with the rest of quick-add, so "Repaint the fence someday #home" keeps the tag. A real day or recurrence typed alongside it wins, since a task with a day to sit on isn’t a backlog item, and a bare "someday" stays its own literal task. It reuses the existing someday flag, so nothing about how tasks are stored changed.
- Day 92feature
Focus on the task you pick
Focus mode always started with whatever led the list — the earliest timed task, or a starred one — so working on a different task first meant checking off or reordering everything ahead of it. A new "Focus on this" action, on any of today’s still-to-do tasks and carryovers (the hover icons on a mouse, the ellipsis menu on touch), enters focus mode with that task front and center instead. The rest of the queue follows in its usual order, and once the chosen task is finished or rescheduled away, focus carries on from the top as before. Entering focus from the header or the command menu still starts at the top. No stored data changed.
- Day 91feature
A weekly review
A new page (reached from the "This week" strip, or "Review the week" in the command palette) that looks back at the week rather than a single day: tasks done, active days, and busiest day; a plain up/down comparison against the same stretch of last week; a Sunday–Saturday bar strip; and, for each routine due that week, how many of its days you kept ("5 of 7") with its current streak. It also notes what is still open and will carry into next week, and gives each week its own reflection note. Step back through past weeks with the arrows. Everything is derived from the completion history the planner already keeps; the reflection notes are stored under their own key (bed-weeknotes), so no task data changed.
- Day 90feature
Pause a routine
A routine can now be paused from the Routines page — a break taken without deleting the task or losing its streak. A paused routine steps out of every day, count, timeline, reminder, and the week and month views until you resume it; its history and streak stand, and resuming brings it back on its next due day with the break bridged (its paused days count as rest days, not misses), so a season off or a trip never breaks a run. The Routines page marks a paused one and offers Resume; a count in the header notes how many are paused. Stored data bumps to version 15 with one added optional field; existing tasks are untouched.
- Day 89feature
Add tasks straight into a tag
While the day is filtered to a tag, new tasks you add now join that tag automatically — so working inside #work doesn't mean retyping #work on every line. A quiet "New tasks join #work" hint sits by the add box while a filter is on, and the tag is appended to each added task (a pasted brain dump gets it per line too). It only applies while a filter is active, and a #tag typed into the line still wins, so nothing is forced. Tags are still read from the task text, so nothing about how data is stored changed.
- Day 88feature
Tasks that repeat every year
Routines can now recur yearly, alongside daily, weekdays, weekly, specific weekdays, monthly, and every-N-days — a home for the annual things a daily planner had nowhere to keep: a renewal, a checkup, an anniversary, taxes. A yearly task returns on the same month-and-day it was created (a Feb 29 anchor falls to Feb 28 in a non-leap year, so it still fires once a year); pick Yearly from the repeat menu, or type "yearly", "every year", or "annually" when adding ("Renew passport yearly"). The row names the cadence and reads the date it lands on in its tooltip, the Routines page names it too, and its streak counts by years. Stored data bumps to version 14 with the new repeat value; existing tasks are untouched.
- Day 87feature
Schedule by how far off it is
The add box now understands a relative time — "Call back in 30 min", "Leave in 2 hours", "in an hour", "in half an hour" — and turns it into a time of day: right now plus the offset, rounded to the nearest 5 minutes, previewed before you commit so the exact minute is no surprise. It sits alongside the clock times ("2pm") and named ones ("noon", "tonight") the box already read, and is distinct from the "in 3 days" that picks a future day (by its unit) and from a bare "30m" estimate (by the leading "in"). A phrase that would land past midnight is left in the title rather than dropped onto tomorrow. Because it resolves to an ordinary time, the task joins the day timeline and gets an in-tab reminder like any other timed task; nothing about how tasks are stored changed.
- Day 86feature
See the task you’re in right now
A timed task that carries a block of time — "Deep work 9–11am" — now reads as happening now while you’re inside it, with a live "40m left" and a quiet pulsing dot, instead of being flagged "late" the moment it started. It fills the gap between the "in 25m" hint on the next task coming up and the "25m late" on one whose time has passed: a block moves through "in 25m" before it starts, "40m left" while it runs, and "late" only once its estimated end has gone by (counted from the end, not the start). A bare time with no estimate has no duration, so it still goes straight from up-next to late at its moment, unchanged. It reads the time and estimate already on the task, so nothing about how tasks are stored changed.
- Day 85feature
Read the clock the way you do
Times can now show on a 24-hour clock as well as the 12-hour one the app has always used — so "2:30 PM" reads as "14:30" for the much of the world that thinks in 24-hour time. A "12h / 24h" switch sits in the header beside the theme control, and it is also in the command menu (Cmd/Ctrl+K) as "Use 24-hour time". The choice applies everywhere a time appears — task rows and their blocks, the day timeline and its "now" line, the wrap-up and finish-around lines, Focus mode, the week, month, and history views, the printed sheet, a copied plan, and the reminder notifications. It is a display choice only: nothing about how tasks are stored changed, and it is kept per browser under a new bed-timeformat key. Times render in 12-hour on first paint and switch just after load if you prefer 24-hour, the same way the theme is applied, so there is no mismatch.
- Day 84feature
Set a wrap-up time for the day
You can now give today a wrap-up time — the hour you want the day to wind down, whether that’s the end of work, screens off, or bed. A quiet line under the day reads the plan against it: how long is left until then, and, once tasks carry time estimates, whether the still-to-do work fits with time to spare or runs over. It pairs with the existing "finish around" projection — that guesses when you’ll finish, this is the time you’re aiming to be done by — and turns the two into an at-a-glance "1h 10m to spare" or "25m over". Set it from a small picker (a time field plus one-tap presets), change or clear it any time; it appears only when there’s still-to-do work and steps aside once the day is fully done. The time is kept per day in the browser under a new bed-daytarget key, separate from your tasks, so nothing about how tasks are stored changed.
- Day 83design
A more satisfying check-off
Checking a task off is the thing you do most in the app, so it now has a little life to it: the circle gives a small press as you tap, the checkmark strokes itself in rather than blinking on, and the circle pops once as it fills. It stays quick and quiet — a detail, not a show — and plays only on the check you just made, so a page of already-finished tasks doesn’t all pop when it loads. It honors reduced-motion (the color fill, which carries the meaning, stays; the movement drops), and the same press feedback now applies to a task’s steps. No stored data changed.
- Day 82feature
Print today’s plan
Today’s plan can now be printed as a clean paper sheet — to pin up, tuck in a notebook, or cross off by hand. A printer action sits in the day header beside Copy plan and the calendar export, and in the command menu (Cmd/Ctrl+K) as "Print today’s plan". The printout is just the day: the date, the day’s focus if one is set, today’s tasks (with times, blocks, estimates, tags, notes, and steps) and anything carried over from earlier, then the day note and a few ruled lines to write on. It drops the app’s chrome and dark background so what prints is the sheet alone — checkboxes drawn so they survive a black-and-white printer, finished tasks checked and struck through. It reads the full day, not a tag-filtered slice, and nothing about how tasks are stored changed.
- Day 81feature
Plan into your open time
The day timeline already drew the open stretches between your timed tasks; those gaps are now tappable. Tap one and the add box opens with that start time set, so the next task lands in the slot you picked — a way to plan around fixed blocks without reaching for the time menu. A slot only appears where the open stretch is at least half an hour and still ahead of now, and its start snaps to a clean five minutes; a quiet "+" marks it, with the time showing on hover or focus. A green "Planning at 3:30 PM" chip by the add box confirms the time and clears it, and a time or day typed into the task still wins over the slot, so nothing is forced. The timeline (and so this) shows once two tasks have a time of day. It reuses the time already stored on tasks — nothing about how data is saved changed.
- Day 80feature
Reuse a task you’ve typed before
As you type in the add box, the tasks you’ve entered before now surface as suggestions, so a task you add often — "Standup", "Walk the dog", "Email the team #work" — is one tap to bring back instead of retyping it. Matches are drawn from the text already stored on your tasks (so any #tags come along), ranked by how often and how recently each has been used, with prefix matches leading and the typed part highlighted. Picking one drops it into the box rather than adding it outright, so a time or estimate can still follow and the quick-add preview confirms it first; the arrow keys move through the list, Enter takes the highlighted one, and Escape dismisses it. It only appears while you’re composing a single line, so a pasted brain dump and the resting box stay uncluttered, and plain Enter still adds when nothing is highlighted — the type-and-add flow is unchanged. Tasks are still read from their stored text, so nothing about how data is saved changed.
- Day 79feature
Name your focus for the day
A single line at the top of the day holds the one thing you most want to get done — set it in the morning and it stays in view while you work, above the list rather than lost inside it. It is the forward-looking counterpart to the day note at the bottom, which catches what a day leaves behind once it is over. Tap "Set today’s focus" to write it, edit or clear it any time; it is one line, kept per day in the browser under a new bed-dayfocus key, separate from your tasks, so nothing about how tasks are stored changed. It is held back in focus mode, where a single task is already the whole view.
- Day 78feature
See the month ahead
A new Month page lays out the whole month on a calendar, filling the gap between the day and the seven-day week views — so tasks scheduled weeks out and deadlines further off are finally visible somewhere instead of only on their own row when the day arrives. Each day cell carries small dots for what falls on it: scheduled one-off tasks, routines due, important (starred) tasks, and a ringed marker for any deadline landing that day. Tap a day to see everything on it below the grid — with times, tags, estimates, repeat cadence, and how each deadline reads — and drop a new task straight onto it with the same inline parsing the home box uses (a time, a block, "every day" to repeat, "due Friday" for a deadline). Move between months with the arrows, and a Today button jumps back. It reads and writes the tasks already stored, so nothing about how data is saved changed. Reachable from a "Month" link in the header, the command menu (Cmd/Ctrl+K), and the week view, and it opens offline like the other pages.
- Day 77feature
Use it offline
The planner now works with no connection. It was already installable and local-first — tasks live in the browser and nothing is sent anywhere — but opening it still needed the network, so an installed app on a plane or in a dead zone met a blank screen. A service worker caches the app shell and its assets on first visit, then serves them offline: the home, week, routines, history, and changelog pages all open and run without a connection. Online visits still load the freshest build (so each day's update arrives as before), and nothing about how tasks are stored changed. Registered only in production, so development is unaffected.
- Day 76feature
Search your history
The History page now has a search box: type a word and it filters the completed tasks below to the ones that match, grouped by the day they were finished, with a count of how many tasks across how many days. It answers the "when did I last do this?" questions — the gym, an invoice, a call — without scrolling the whole 30 days. Matches are highlighted in each result, the match runs over the task text and its #tags, and clearing the box (or pressing Escape) brings back the summary, calendar, and streaks. It reads the completion history the page already shows; nothing about how tasks are stored changed.
- Day 75feature
Your streak, visible all day
The daily streak — how many days in a row you've finished at least one task — now sits quietly in the header beside the date, not only in the end-of-day recap. So the run you're keeping is visible the moment you open the app, when it can still nudge you to add and finish something today, rather than only once everything's already checked off. It appears once the run is real (two days or more), stays out of the way otherwise, and tapping it opens History and its activity calendar. Today counts as a grace day, so an unfinished morning never drops the streak early. It reads the completion history the recap and calendar already keep; nothing about how tasks are stored changed.
- Day 74design
A recap when your day is done
Checking off the last task of the day now shows a short recap in place of the plain "all done" line: how many tasks you finished, the time you had planned (when tasks carried estimates), and your current run of days completing something — each shown only when it has a real number. A "Plan tomorrow" button sits below it, setting the add box to Tomorrow and dropping the cursor there, so the natural next step is one tap away. It reads the completion history and estimates the planner already keeps; nothing about how tasks are stored changed, and the confetti burst is unchanged.
- Day 73feature
See what you can type
The add box has quietly grown to understand a lot of trailing phrases — "tomorrow" or "Friday" or "Aug 20" to pick a day, "9am" or "noon" or "9–11am" for a time, "30m" for how long, "due Friday" for a deadline, "every day" or "weekdays" or "every 3 days" to repeat, "#work" to tag, and a trailing "!" to mark it important — and they all stack in any order. None of that was written down where you type, so a "What you can type" line now sits under the add box: tap it and a small reference opens, grouped by what each phrase sets, each with an example you could type verbatim, and a note that they combine ("Report tomorrow 2pm 30m #work !" reads all of it at once). It is a plain disclosure — no hover, no modal, closes on tap again or Esc — and nothing about how tasks are stored changed.
- Day 72feature
Star a task as you add it
Quick-add now reads a trailing "!" as an importance flag, so a task can be starred the moment it's captured instead of opening its menu afterward — handy on a phone. End the line with "!" (or "!!") set off by a space: "Call the bank !", "Submit report tomorrow 2pm !". The recognized star shows in the add preview as an "Important" chip before you commit, and the task lands already starred — floating to the top of the day like any other important task. The space in front of the bang is the whole guard: an ordinary exclamation with no space before it ("Ship it!", "We did it!!") stays literal, and a lone "!" stays its own task. It stacks with the day, time, estimate, tag, due, and repeat phrases already parsed, and reads them even when the "!" is written last. Nothing about how tasks are stored changed.
- Day 71feature
See what’s coming due
A task with a deadline that isn’t sitting in today’s list — one parked in Someday, scheduled for a later day, or carried over from a past one — now shows in a "Coming due" panel at the top of the day instead of only on its own row further down. It gathers the ones that are overdue or due within a day, sorts them earliest-deadline-first, and notes where each lives and how its deadline reads ("overdue", "due today", "due tomorrow"); overdue items are marked in rose, ones due soon in amber. Tapping a row jumps to the task and flashes it. The panel only appears when something is in that window, so a day with nothing looming stays uncluttered, and today’s own tasks are left out since they already sit at the top with their due chip. It reads deadlines already stored on tasks, so nothing about how data is stored changed.
- Day 70feature
Reuse a tag in a tap
While you're composing a task, the add box now offers the tags you've already used as small chips beneath it — tap one to drop it into the task instead of retyping it from memory. They're sorted by how often you use each, capped at eight, and a tag already in the draft steps out of the row. Because the spelling comes from the chip, a stray "#wrok" no longer splinters a filter away from "#work". The chips appear only while the box is focused and holds a single line, so a resting box and a pasted brain dump stay uncluttered, and a first-ever task shows nothing since there's nothing to suggest yet. Tags are still read from the task text, so nothing about how data is stored changed.
- Day 69feature
Give a task a deadline
A task can now carry a due date — when it needs to be done by — kept separate from the day it sits on. Type it in quick-add after the word "due": "Submit report due Friday", "Renew passport due Dec 1", "Pay invoice due tomorrow", "File taxes due today", "Call Sam due in 3 days". Or set it from a task's schedule menu, under "Due by", where a "Clear due date" option removes it. A "due" chip then shows on the row: quiet while the deadline is days out ("due Fri", "due Sep 1"), amber the day before and the day of ("due tomorrow", "due today"), and rose once it has passed ("overdue"). Because an unfinished one-off carries into the next day, the chip counts itself down without any nudging. The deadline is only a heads-up — it never changes which day a task appears on, so "Submit report due Friday" stays on today, while a plain "Dentist Aug 20" still schedules the task onto that day as before. It reads alongside the time, estimate, tag, and repeat phrases already parsed. Stored data bumps to version 13 with one new optional field; existing tasks are untouched.
- Day 68feature
Say a time in words
Quick-add now reads a named time of day the same way it already reads "9am" or "14:00", so the words people actually type set a time. "Lunch noon", "Meds midnight", "Call mom tonight", "Standup this morning", "Gym this evening", "Review notes afternoon" each land the task at a round hour — noon at 12 PM, midnight at 12 AM, morning at 9 AM, afternoon at 2 PM, evening at 6 PM, night or tonight at 9 PM. Only a trailing phrase is read, and only when a title is left in front of it, so a one-word task like "Morning" or a mid-sentence "the morning briefing" stays literal. The recognized time shows in the add preview before you commit, and the time menu can nudge it after. It stacks with the rest of quick-add, so "Dentist Aug 25 morning", "Lunch noon 45m", and "Standup noon #work" all read the day, estimate, or tag alongside the time. Nothing about how tasks are stored changed.
- Day 67feature
Send today’s schedule to your calendar
Today’s timed tasks can now be handed to a real calendar. A new calendar action — in the today header next to Copy plan, and in the command menu (Cmd/Ctrl+K) as "Add today’s schedule to calendar" — downloads a standard .ics file that opens in Google Calendar, Apple Calendar, Outlook, or anything that reads iCalendar. It fills the one gap the in-app reminders leave: those only fire while this tab is open, whereas each exported event carries an alarm at its start, so your calendar nudges your phone even when the planner is closed. A task with an estimate becomes a block of that length; a bare time becomes a 30-minute event. Times are written as floating local times, so a 9 AM task stays 9 AM wherever it opens; #tags become the event’s categories and a task’s note becomes its description. Only still-to-do timed tasks are included — untimed to-dos and finished tasks are left out. The file is built in your browser and nothing is sent anywhere; how tasks are stored didn’t change.
- Day 66fix
Tags no longer hide a task’s schedule
Quick-add reads a time, estimate, date, or repeat even when a #tag is written after it, so a natural entry like "Standup 10am #work", "Gym 6pm every day #health", or "Write proposal 90m #work" now sets the time (or routine, or estimate) and keeps the tag. Before, a hashtag at the end of the line sat between the parser and the schedule phrase, so the whole phrase was left as literal text — the task got no time chip and a routine never started repeating. Tags anywhere in the line are set aside while the trailing schedule is read, then put back in their original order; a task typed as just "#tag" still stays a plain title. Nothing about how tasks are stored changed.
- Day 65feature
Schedule a task by its date
Quick-add now understands a calendar date at the end of a task, so planning further out no longer means opening the week view or counting days. Type "Dentist Aug 20", "Renew passport Dec 1", "Wedding 3rd of December", or "Pick up order 20 Aug" and the task lands on that day; a date that has already passed this year rolls to next year, the way naming a weekday already points ahead. "In 2 weeks" joins the existing "in 3 days" and "next week". A month name is required, so a bare number like "Read pages 9-11" is never mistaken for a date, and an impossible day like "Feb 30" stays part of the title. It reads alongside the time, estimate, and repeat phrases already parsed, so "Call Sam Aug 20 at 2pm" sets both the day and the time, and the same parsing powers the week page. Nothing about how tasks are stored changed.
- Day 64feature
Repeat every few days
Routines can now recur every N days — every other day, every 3 days, every 10 — counting from the day the task was created, alongside daily, weekdays, weekly, specific weekdays, and monthly. Pick it from the repeat menu (a stepper under "Every few days"), or type it when adding a task: "Workout every other day", "Water plants every 3 days". It fills the gap between daily and weekly for the habits that fall on their own rhythm rather than fixed weekdays. The cadence shows on the task row and the Routines page, and its streak counts by that rhythm like every other routine. Stored data bumps to version 12 with the new repeat value and one optional field; existing tasks are untouched.
- Day 63feature
All your routines in one place
A new Routines page gathers every repeating task, so your habits are visible even on days they aren’t due — until now a routine only showed up on the home page when it was scheduled for that day. Each one lists its cadence, current streak, best-ever run, and when it’s next due, alongside a strip of dots for its recent due days: kept, rested, or missed at a glance. Today’s due routines can be checked off right from the page (the same per-day completion the home page records), and a rest day can be resumed here too. Rows sort with the ones still waiting on you today first, then by streak. It reads and writes the tasks already stored — nothing about how data is saved changed. Reachable from a "Routines" link in the header and the command menu (Cmd/Ctrl+K).
- Day 62feature
The week ahead
A new page lays out the next seven days at once, so planning ahead no longer means scrolling past today. Each day is a card showing what falls on it — one-off tasks scheduled for that day and any routines due — with times, estimates, tags, and a slim meter that reads each day’s load against the busiest one, so a lopsided week is visible at a glance. Today’s card also gathers the tasks carried over from earlier days. Every card has its own quick-add: type a task under any day to place it there, with the same inline parsing the home box uses (a time like "9am", a block like "9–11am", or "every day" to make it repeat). One-off tasks can be removed from here; routines are managed from their row on the home page. It reads and writes the tasks already stored — nothing about how data is saved changed. Reachable from a "Week" link in the header and the command menu (Cmd/Ctrl+K).
- Day 61feature
Take a rest day from a routine
A repeating task can now be skipped for today from its actions (the hover icons on a mouse, the ellipsis menu on touch) — a rest day. A skipped routine steps out of today’s list, its done count, the timeline, and any reminders, and waits in a "Resting today" section with a one-tap Resume that puts it back exactly where it was. A rest day counts as neither done nor missed, so it bridges the routine’s streak rather than breaking it — a deliberate day off no longer costs a run, and the best-ever streak counts the same way. Stored data bumps to version 11 with an added optional field; existing tasks are untouched.
- Day 60feature
Reorder tasks on a touch screen
Reordering today’s tasks reached a touch screen. Until now the manual order could only be changed by dragging the grip handle (which needs a mouse) or with Shift+J/Shift+K (which needs a keyboard), so on a phone or tablet there was no way to do it at all. A task’s actions menu — the ellipsis on touch — now offers "Move up" and "Move down", shown only for the untimed, still-to-do tasks that drag and the keyboard already reorder, and only in a direction that would actually move it. The menu stays open between moves so a task can be nudged several places in a row. It reorders within the same manual group as before (timed tasks keep their chronological order, finished ones their place), and nothing about how tasks are stored changed.
- Day 59feature
Filter the day by tag, in one tap
A tag bar now sits above the day: every tag in play, each with how many tasks carry it, and a leading "All". Tapping one slices the whole board — today, carryovers, upcoming, and Someday — to that context; tapping it again, or "All", clears it. Until now a filter could only be started by finding a task already wearing a tag and clicking its chip, so a context whose tasks were all finished, folded away, or on another day was unreachable. Tapping a chip switches contexts directly, and the bar appears once there are two or more tags. Tags are still read from task text, so nothing is stored differently; the row chips, Esc-to-clear, and the existing filter indicator all keep working.
- Day 58feature
Duplicate a task
A task can now be duplicated from its actions — the hover icons on a mouse, the ellipsis menu on touch. The copy drops in right below the original, in the same section, carrying its text and tags, note, time, estimate, star, and repeat cadence, so a near-identical task (or a fork of a routine) takes one tap instead of retyping. The copy starts clean: not done, no completion history, and any steps reset to unchecked. It flashes briefly where it lands. No stored data changed.
- Day 57feature
Reorder tasks from the keyboard
Today’s list can now be reordered without a pointer. With a task selected (j/k), press Shift+J or Shift+K to move it down or up — the keyboard counterpart to dragging, which was mouse- and touch-only. It moves a task within its manual group (untimed, still-to-do, same priority — the same tasks dragging reorders), so the timed agenda keeps its chronological order and finished tasks keep their place; the selection rides along with the task as it shifts. The new keys are listed in the shortcuts panel (?). No stored data changed.
- Day 56feature
Your day on a timeline
Today now opens with a compact timeline above the list: each timed task is a block, sized to its estimate and placed by its start time, with the gaps between blocks left as free time and a live marker for the current moment — so how full the day is, and where the openings are, reads at a glance. Tapping a block jumps to that task in the list. It appears once at least two tasks have a time of day, reads the whole day (a tag filter narrows the list, not the timeline), and sits under the "planned today" summary. Finished blocks are green and starred ones amber, matching the rest of the app. No stored data changed.
- Day 55feature
Your last 30 days, at a glance
The History page opens with a short summary of the last 30 days: tasks done, how many days had at least one thing completed, the weekday you finish the most on, and the longest run of days in a row. The activity calendar below still shows the day-by-day shape; the summary just reads the same completion history back as a few plain numbers, replacing the single "N tasks completed" line. Nothing is stored differently.
- Day 54feature
A daily streak for showing up
The "This week" card now shows how many days in a row you’ve completed at least one task. Today is a grace day — an unfinished today doesn’t break a run, and finishing something extends it — and the count reads from the completion history the week bars and calendar already keep, so both one-off tasks and routines feed it. It appears once a run reaches two days and uses the same flame the per-routine streaks do. No stored data changed.
- Day 53feature
Send the rest of today to tomorrow
A one-tap action moves today’s still-to-do tasks to tomorrow at once, so what you won’t get to now is planned as tomorrow’s work instead of nagging the next morning as an overdue carryover. It sits below today’s list once two or more tasks are left, and in the command menu (Cmd/Ctrl+K). It complements the per-task "Move to tomorrow" with the bulk form. Routines recur on their own schedule and are left alone; each moved task keeps its time, estimate, notes, and steps. No stored data changed.
- Day 52feature
Tasks that repeat every month
Routines can now recur monthly, alongside daily, weekdays, weekly, and specific weekdays. A monthly task returns on the same day-of-month it was created — pick Monthly from the repeat menu, or type "monthly"/"every month" when adding ("Pay rent monthly"). Months too short for that day (a task set for the 31st) fall to the month’s last day, so it still fires once every month. The row names the cadence, and its streak counts by months. Stored data bumps to version 10 with the new repeat value; existing tasks are untouched.
- Day 51fix
Room for the full task title
On a mouse, a task row’s quick-action buttons (star, repeat, schedule, estimate, note, steps, edit) used to reserve their horizontal space even while hidden, squeezing the title into a narrow strip — so a normal entry like “Draft the quarterly planning doc” was clipped to a few words with the rest of the row sitting empty. Those buttons now live in a cluster that collapses to nothing at rest and slides open only when the row is hovered, a button inside takes keyboard focus, or one of its menus is open, so the title keeps the row’s full width. Touch screens are unchanged — the actions were already tucked behind the ellipsis menu there. No stored data changed.
- Day 50feature
Work a task’s steps in Focus mode
Focus mode now shows a task’s steps beneath it, each checkable in place, so a multi-step task can be worked through without leaving focus. A count reads how many are done, and the steps stay in sync with the task’s row — checking one here or there is the same step. It appears only when the task has steps; adding, renaming, and removing them still happens in the main list. No stored data changed.
- Day 49feature
A head start on reminders
Reminders can now fire a few minutes before a timed task instead of only as it begins. When reminders are on, a small control under the day header sets the lead — at the time, or 5, 10, or 15 minutes early — and the notification says how soon the task starts. The choice is kept in the browser under a new bed-reminder-lead key; nothing about how tasks are stored changed, and reminders still only fire while the tab is open.
- Day 48feature
A heads-up when two tasks overlap
A timed task now shows a quiet amber "overlaps" flag when its time or block runs into another of today’s still-to-do tasks — a 10 AM call landing inside a 9–11 AM block, or two things booked for the same moment. Hovering the flag names the clash and its time. Back-to-back blocks that only touch (9–11, then 11–12) don’t flag, and a bare time counts as a single minute so same-time collisions still register. It reads the whole day, not a tag-filtered slice, and reuses the existing time and estimate fields, so nothing about how tasks are stored changed.
- Day 47feature
Block out a task with a time range
Quick-add now reads a time range and turns it into a block: "Deep work 9-11am" becomes a 9 AM task with a 2h estimate, in one phrase. It accepts a shared meridiem ("9-11am"), one per end ("9am-1pm"), minutes ("9:30-10:30am"), and 24-hour times ("14:00-15:30"); a bare "read pages 9-11" is left alone, as single times already were. A timed task that carries an estimate now shows its window — "9 – 11 AM" — on its row, in the add preview, in Focus mode, and in History, instead of just the start. It reuses the existing time and estimate fields, so nothing about how tasks are stored changed.
- Day 46feature
See when today’s plan will wrap up
The day’s time summary now projects a finish time. It adds up the estimated tasks you haven’t done yet, counts from the current time, and shows a "finish around 4:30 PM" — a quiet read on whether the day’s plan fits before the day is out. It appears once there’s unfinished estimated work, ticks with the clock, and reads "runs past midnight" when the plan won’t fit. It reads only today’s estimates, and nothing about how data is stored changed.
- Day 45feature
A key for the keyboard shortcuts
Press ? anywhere to open a reference of the app’s keyboard shortcuts, grouped by what they do — getting around (the command menu, adding a task, this help, Escape), driving today’s list (j/k to move the selection, Space to complete, Backspace to delete), and editing (double-click a task, undo a delete). It’s also in the command menu as "Keyboard shortcuts" so it’s reachable without a keyboard, and Escape or a click outside closes it. An open menu or panel now fully owns the keyboard, so list shortcuts no longer fire behind it. No stored data changed.
- Day 44feature
A timer for Focus mode
Focus mode now carries a session timer, so a task can be worked in a set block of time. A ring counts the block down with the time left in the middle; start, pause, resume, and reset from the controls beneath it, and pick a length (15, 25, or 50 minutes) — or the task’s own time estimate, when it has one, which is the default. When a block ends the ring settles into "Time’s up," and if the tab is in the background and notifications are already allowed, a quiet nudge fires. The timer is a working aid, not stored data: it resets when you switch to another task and starts fresh on reload, so nothing about how tasks are saved changed.
- Day 43feature
Copy today’s plan as text
A new action copies the day to the clipboard as a plain-text checklist — the date, then one line per task in the order shown, with times leading, estimates in parentheses, and a checked box for finished ones. It is meant for pasting into a standup note, a message, or a journal. Reach it from a clipboard button in the day header or from the command menu (Cmd/Ctrl+K); a brief toast confirms the copy. It reads the whole day, not a tag-filtered slice, and nothing about how data is stored changed.
- Day 42feature
Group your tasks with #tags
Add a #tag inside any task — "Email Sam #work", "Gym #health" — and it shows as a colored chip on the task. Tapping a chip filters the whole list to that tag; a bar names the filter and clears it (Esc does too), and Focus mode follows the filter. Tags are read from the task text itself, so they are added or removed just by editing the task, and nothing changes in how data is stored. The tab count, reminders, and the all-done celebration keep reading the full day, not the filtered slice.
- Day 41design
Carried-over tasks show their real age
Unfinished tasks from past days used to sit under one "From yesterday" heading regardless of how long they had actually been waiting. They are now grouped by the day each was meant for, most-recent first, with an honest label — "Yesterday", a weekday within the past week, or a date like "Wed, Jul 15" — so a task left over from last week no longer hides among yesterday’s. The layout mirrors the upcoming section. A "Bring all to today" action now sits on the section (shown once more than one is waiting), surfacing the bulk move that previously lived only in the command palette; each row keeps its own "Do today". No stored data changed.
- Day 40feature
Add several tasks at once
The add box is now a text area, so a pasted list keeps its line breaks and Shift+Enter stacks more lines — each non-empty line becomes its own task. Every line still runs through quick-add parsing (so "gym every day" or "call Sam tomorrow" work per line) and honors the Today/Tomorrow/Someday toggle. Plain Enter still adds on every device, so single-task entry is unchanged; the box grows to fit what you type and shows how many tasks will be added once there is more than one line. No stored data changed.
- Day 39design
Fold away what you’ve finished
Today’s completed tasks can now be collapsed into a "Completed" summary row, so a day with a lot checked off keeps the work that’s left up top. A click on the row folds or unfolds them; finished tasks still sink below what’s active either way, and the choice is remembered across visits under a new bed-completed key. Revealing a finished task from search opens the section automatically, and folded tasks drop out of keyboard navigation. Default is unchanged — completed tasks show until you collapse them. No task data changed.
- Day 38feature
Search across all your tasks
The command menu (Cmd/Ctrl+K) now searches your tasks, not just its actions. Type a word and matching tasks appear under a Tasks group alongside any matching commands — each with a status dot (done or still to do) and a quiet label for where it lives: Today, the day it carries over from, a scheduled day, Someday, or a routine’s cadence. Both the task text and that label are searchable. Choosing a result closes the menu, scrolls the task into view, and flashes it briefly so your eye lands on it; the whole thing is keyboard-driven, and finished tasks show up too. Tasks only appear once there’s a query, so an empty menu stays a clean list of actions. No stored data changed.
- Day 37feature
A Someday list for tasks without a day
Tasks can now be kept in a Someday list instead of on a specific day — a place to capture what you want to do eventually without committing to when. Add one with the new Someday option beside Today and Tomorrow on the add box, or park an existing task there from its schedule menu. Someday tasks wait in their own section, out of Today, carryovers, and the tab count; "Do today" or scheduling a day lifts one back into the plan. They ride along in exports and backups. Stored data bumps to version 9 with one added optional field; existing tasks are untouched.
- Day 36design
Task names that never get squeezed out
Reworked the task row into two tiers so the name always stays readable. Before, a task with a time, an estimate, and a "starts in" hint could crowd its own name down to a letter or nothing on a narrow phone. Now the name gets the full width of its line (with the time leading and a star trailing), and the quieter details — the countdown, an overdue "late" note, a streak, a repeat cadence, an estimate, step progress — sit on a second line beneath it and wrap instead of pushing on the name. Rows with no such details stay a single line. All actions and the layout are otherwise unchanged.
- Day 35feature
A note for each day
A card on the home page holds an optional freeform note for the day — a place for the things a day leaves behind that aren’t tasks: how it went, a number to remember, a line worth keeping. Notes are kept per day in the browser under a new bed-daynotes key, separate from your tasks, and each day’s note shows again in History under that day. URLs in a note are clickable, like task notes.
- Day 34feature
Repeat on the days you choose
A routine can now recur on a specific set of weekdays — Monday, Wednesday, Friday, say — alongside the daily, weekdays, and weekly options. The repeat menu gained a day-of-week picker; the days commit when the menu closes, and clearing them all turns repeating off. The task’s row names the set ("Mon Wed Fri", or "Weekdays"/"Weekends" when it matches one). Like every routine, it shows up only on the days it’s due. Stored data bumps to version 8 with one added optional field; existing routines are untouched.
- Day 33feature
Step through your day by keyboard
Today’s list can now be driven from the keyboard. Press j or k to move a selection through it — the arrow keys join in once you’re navigating — then Space or Enter to check the selected task off (or back on), and Backspace to remove it, with the usual undo. The selected row shows a ring and scrolls into view, and checking one off steps the selection to the next task still to do. It covers today’s tasks; carryovers and upcoming days keep their own actions. Mouse and touch are unchanged.
- Day 32feature
A command menu, a keystroke away
Press Cmd/Ctrl+K — or the new Commands button by the add box — to open a searchable menu of the app’s actions: add a task, enter or exit focus mode, toggle reminders, switch theme, bring carried-over tasks to today, export a backup, and open History or What’s new. Filter by typing; move with the arrow keys, Enter runs, Esc closes. Each command appears only when it applies, and every one is also reachable in the normal UI, so the menu is a shortcut rather than the only way. The header theme switcher and the menu now share one preference.
- Day 31feature
Break a task into steps
A task can now hold a checklist of steps. Open one from a task’s actions ("Break into steps"), then add, check off, rename (double-click), or remove each step; the row shows a "2/3" count that turns green when every step is done. Steps don’t complete the task on their own — the task is still checked off as one thing. They ride along in exports and backups. Stored data bumps to version 7 with the added optional field.
- Day 30feature
A calendar of what you got done
The History page now opens with an activity calendar: one square per day for the last five weeks, shaded from light to dark by how many tasks were completed, with today outlined and a legend for the scale. It reads from the completion history the planner already keeps, so nothing is stored differently. Each square names its day and count on hover, and the weekly bars now share the same counting.
- Day 29feature
See what’s slipped past its time
A timed task that’s still unfinished after its moment has passed now shows a quiet amber "25m late" hint, mirroring the emerald "in 25m" on the next task coming up. It updates with the clock and clears when the task is completed or rescheduled.
- Day 28feature
Star what matters most
Any task can be starred as important from its actions, and starred tasks float to the top of the list. Timed tasks keep their agenda order, so the star only reorders untimed ones. Focus mode marks a starred task as important. Stored data bumps to version 6 with the added optional field.
- Day 27feature
Undo a delete
Deleting a task now shows a brief toast with an Undo button; Cmd/Ctrl+Z works too. Undo puts the task back exactly where it was, with its notes, schedule, and completion history intact. Several deletes in a row can be walked back one by one. The window lasts about eight seconds, then the deletion becomes final as before.
- Day 26feature
Streaks for routines
Repeating tasks now show their current streak once it reaches two — consecutive due days completed, counted by each routine’s own cadence, so a weekend never breaks a weekday streak and an unfinished today never breaks anything. The History page lists every live streak alongside the routine’s best-ever run. Routine completion logs are no longer trimmed to 30 days, so long streaks survive.
- Day 25feature
Look back at what you got done
A History page lists completed tasks from the last 30 days, grouped by day with the newest first. Routines appear on each day they were finished. It opens from the count on the weekly activity card.
- Day 24feature
Install it, and use it by touch
The planner is now an installable web app with a proper icon set, manifest, and theme color. On touch screens, task actions moved from hover-only icons (which never appeared there) to a visible menu on each task. Also: the weekly chart’s bars, which had been collapsing to zero height, render again; the changelog became a plain log; and the header lost its duplicate day counter.
- Day 23feature
Reminders when a task’s time arrives
Optional browser notifications fire when a timed task is due, toggled by a bell in the header. They only fire while the tab is open; nothing leaves the device.
- Day 22feature
A live line for right now
A "now" line tracks the clock and sits in the agenda between past and upcoming timed tasks. The next timed task shows how soon it starts.
- Day 21feature
Give a task a time of day
Tasks can have a time of day, typed inline ("9am", "at 14:00") or set from the schedule menu. Timed tasks sort to the top chronologically and lead Focus mode.
- Day 20feature
Estimate how long a task takes
Tasks can carry a rough time estimate, typed inline ("30m", "1h 30m") or picked from the clock menu. A summary line shows total time planned for the day.
- Day 19feature
Schedule a task for any day
Tasks can be scheduled for any date, typed ("friday", "in 3 days", "next week") or picked from a calendar menu. Scheduled tasks group under their day and move into today when it arrives.
- Day 18feature
Type the day, skip the menus
The add box parses trailing phrases — "tomorrow", "every day", "weekdays", "weekly" — and shows a preview of what will be created. The word "today" is left alone.
- Day 17feature
Export and import your tasks
A "Your data" card exports tasks to a JSON backup file and imports one back. Imports merge by id rather than overwrite.
- Day 16feature
Tasks that repeat
Tasks can repeat every day, on weekdays, or weekly. Routines return each due day, with completion tracked per day, and never clutter carryovers.
- Day 15feature
Light, dark, or system
A theme switcher in the header offers light, dark, or system, applied before first paint so there is no flash. The app also now renders in its intended typeface.
- Day 14feature
Move a task to tomorrow
A task can be pushed to tomorrow from its row, complementing the existing "Do today" action on carryovers.
- Day 13feature
Plan tomorrow tonight
A Today/Tomorrow toggle on the add box queues tasks for tomorrow. They wait in their own section and move into today when the date changes.
- Day 12design
A greeting that knows the hour
The header greeting now follows the time of day.
- Day 11feature
Links in notes are clickable
URLs in task notes (including bare www. links) now render as clickable links.
- Day 10feature
Your tab counts what’s left
The tab title shows how many tasks remain, like "(3) Better Every Day". The count disappears when everything is done.
- Day 9feature
Focus mode: one task at a time
Focus mode shows a single task front and center; checking it off advances to the next. Esc or "Exit focus" returns to the full list.
- Day 8design
Finished tasks drop to the bottom
Completed tasks now sort below the ones still to do, keeping relative order within each group. Drag-to-reorder still works.
- Day 7feature
Add a note to any task
Tasks can carry a free-text note, added from the note icon and edited with a double-click. Cmd/Ctrl+Enter saves.
- Day 6feature
See your week at a glance
A small bar chart shows how many tasks were completed on each of the last 7 days. It appears once there is any history.
- Day 5feature
Drag tasks to reorder them
Tasks can be reordered by dragging the grip handle that appears on hover.
- Day 4feature
Double-click to edit any task
Tasks can be edited in place — double-click the text or use the pencil icon. Enter saves, Escape cancels.
- Day 3feature
Press n to add a task
Pressing n anywhere on the page focuses the task input.
- Day 2design
Confetti when you finish everything
Checking off the last task of the day triggers a brief confetti burst.
- Day 1feature
Better Every Day is born
The initial planner: add tasks for today, check them off, and carry unfinished ones over to the next day. Everything is stored locally in the browser.