A steady start and a heavy weekend: 47 changes merged, thirty of them on Saturday and Sunday. When a connection breaks, the mail you get now says which kind of break it is and what to do. Habits can now be marked private, so a habit you would rather keep to yourself never shows up for anyone else. The public template carries an example week, so a fresh copy is no longer empty. The widget tells you when the account behind it is disconnected or gone, instead of guessing. Midnight tasks now survive a deploy that lands at the wrong minute. Duplicate journal pages for the same day resolve in favour of the one you actually ticked.
Sprint map
One row per story arc, one column per day.
| Mon 12 | Tue 13 | Wed 14 | Thu 15 | Fri 16 | Sat 17 | Sun 18 | |
|---|---|---|---|---|---|---|---|
| Mail when the connection breaks | |||||||
| Clearer words about connecting | |||||||
| Three small fixes on Tuesday | |||||||
| Midnight tasks survive a deploy | |||||||
| Private habits | |||||||
| An example week in the template | |||||||
| The widget knows when it is not connected | |||||||
| One day, one page | |||||||
| Smoother first steps | |||||||
| Site touch-ups | |||||||
| Under the hood |
Monday opened with the connection-mail work. Friday is empty. Tuesday to Thursday carried small fixes. Saturday was the busiest day of the month so far.
Merges per day
The arcs
In rough chronological order.
Mail when the connection breaks
When the nightly check cannot reach an account's journal twice in a row, the app pauses that account's sync and sends a mail. That mail used to say the same thing whatever had gone wrong. It now tells two cases apart. If the Habit Heroes page was moved to the Notion trash, the mail says so and points to restoring it. If the page is still there but the database no longer answers, the mail asks you to reconnect. Anything else keeps the classic wording. An admin-only diagnostic tool landed beside it, so a paused account can be examined step by step without guessing.
Clearer words about connecting
The FAQ answers about disconnecting and about what happens to your data are now plain about what each step does and does not touch, and there is a short how-to for checking that the connection is alive. The template page also lost its two competing instructions. There is now one way to get the template: Notion copies it for you while you connect. The start page notes which page to keep.
Three small fixes on Tuesday to open the week
Tuesday cleared three small things. The streak calculation could trip over a day whose totals had never been written, which showed up as an error for a handful of accounts. It now treats a missing day as zero. An account that was flagged as paused before its first sync could lose that flag on the way to the database. The flag now sticks. The widget receives the order of your habits as an explicit list instead of inferring it, so the cards stay in the order you set.
Midnight tasks survive a deploy
Every evening the app plans each account's midnight tasks: create the day's journal page, then sync it. On Tuesday night a deploy landed at exactly that minute. The outgoing server took its share of the planned tasks with it when it shut down. Those accounts got their sync from the early-morning safety net, but without the page creation that should have come first. A sweep every five minutes now picks up any task that is overdue and runs it, so the database row is the source of truth and the in-memory timer is only there for punctuality. Two related gaps closed in the same change. A sync that finds yesterday's page but not today's now creates today's page and looks again, instead of giving up. A real page that arrives for a day the app had already filled with a placeholder takes over that placeholder instead of being skipped.
Private habits
Each habit in the widget's Edit Habits screen now has a Private checkbox. A private habit is yours alone. It never appears when someone opens your profile from a leaderboard, in a comparison, in a group roster, or as the subject of a duel. Your own totals still count it. If every habit of yours is private, a visitor simply sees that there is nothing to show. The duel picker skips private habits. A duel on one is refused without confirming that the habit exists. Making a habit private after a duel has started does not hide it from that duel.
An example week in the template
Of the people who copied the template since September, not one edited a journal page before leaving. The copy opened on an empty week view above a demo widget with somebody else's habits. The public template now carries seven example pages, one per weekday, titled so they show in the weekly view and dated to cover today and the six days before. A nightly job keeps them rolling. When you connect, the example pages in your copy are moved to the trash so your real journal starts clean. The sync ignores them even if they linger. The widget's demo data now shows the same seven habits and the same week. The job was switched on late Saturday. Its first scheduled run falls after this log, so next week's edition will say how it went.
The widget knows when it is not connected
Until now a widget on an account whose Notion connection was gone behaved like a healthy one and failed quietly. It now has a read-only mode: a line explains that the account is not connected and a link leads to the reconnect page. The Update, Freeze, Tavern and Edit buttons are locked. If the account behind an embed has been deleted or the embed link was replaced, the widget says so with a persistent banner and a path to a fresh link. Along the way, clicking Update no longer blanks the body for the round trip. The old cards stay on screen, dimmed, until the new ones arrive. Sunday added a fix for a case found during an onboarding test: a browser that still held a token from a previous account showed the banner for a brand-new account. A leftover token now falls back to demo mode. The widget reloads itself when its embed receives the right link.
One day, one page
If you created tomorrow's journal page in Notion ahead of time, the midnight job created a second page for the same date. The first page bound in the database then won forever. Ticks on the other page never counted. Per date the sync now keeps the page with the most activity, earliest created on a tie. The account's binding moves to that page. Existing duplicates heal themselves on the next sync. The midnight job also asks Notion whether a page for the date already exists before creating one. Two smaller sync fixes landed beside it. The snapshot repair reads the right journal rows. The nightly check for stale accounts queries Notion more quietly.
Smoother first steps
People who connected Notion but never ticked a single habit now get a one-time reminder mail three to fourteen days after connecting. It went live on Monday. Confirming your email can now send you straight to the connect page, which the confirmation mail links to. If the database you connected sits at the top level of your workspace, there is no page to put the widget into. The connect card used to report that as a failure. It now explains the situation and shows how to place the widget on any page by hand. The mail that invites you to a running competition no longer promises a specific counting date. The honest sentence is simpler: the earlier you join, the more of your tracked days count.
Site touch-ups
The widget's season promo line and the competition switcher chip now go by the calendar date, so a European viewer no longer sees a season as started a day early. The footer's Explore column was eleven links in a flat list. It is now four small groups side by side. The footer got shorter rather than taller. The launch trailer's closing card no longer names a start date, so the scene can be re-rendered any time.
Under the hood
The local mail catcher and the site's automatically merged dependencies got their routine updates on Monday. A JSON library on the server was pinned to a patched release on Tuesday and bumped again on Sunday. The mail catcher was bumped again on Saturday. The site's deploy pipeline now deploys to production only when a change asks for it. Preview builds are skipped for changes that do not touch the site. Four test-suite fixes kept the nightly browser run green, including one measurement race that only showed on slower hardware. The test inventory table in the suite's readme was dropped in favour of the directory itself. Descriptions for the Notion Marketplace listing were drafted. Two log lines that described normal states were demoted from error to information so the nightly error scan stops filing them.
Compiled from the merge history across the Notion Habit Heroes app and this site, October 12 to 18, 2026. Friday is empty on the map. Saturday carried eighteen merges.
