The line to Notion came back on Tuesday. The fix was one request header on our side; the previous edition carries the full correction. With syncs flowing again, the work that had piled up behind the outage moved all at once: 77 changes in seven days, 60 of them on Saturday and Sunday. The headline pieces: you can hold a regular competition and the featured season at the same time, Season 0 has its rules page for the October start, a journal database that fails the schema check repairs itself with one click, badges show on your profile. For teams and coaches, the group hub with team challenges and a client roster is rolling out.

7
days covered (Aug 31–Sep 6)
77
changes merged (34 app · 43 site)
7
production deploys
45
backlog items cleared
60
changes merged over the weekend

Sprint map

One row per story arc, one column per day.

Product Reliability Under the hood
Mon 31Tue 1Wed 2Thu 3Fri 4Sat 5Sun 6
The outage ends
Sync repairs in the wake
Connecting Notion, fewer dead ends
Two competitions at once
Season 0: October, rules, a badge
Team spaces and coach spaces
Widget fixes
The site: brand, pages, search
Under the hood

The empty Monday, Wednesday and Friday are real. Work happened on those days; it merged in two waves, Thursday and the weekend.

Merges per day

0
Mon 31
3
Tue 1
0
Wed 2
14
Thu 3
0
Fri 4
36
Sat 5
24
Sun 6

The arcs

Leading with the outage, then in rough chronological order.

Reliability

The outage ends

Since August 17 the Notion API had rejected every request from our servers. On Tuesday, September 1, the fix went live: one request header, ours to get wrong, as the previous edition explains in full. The notice on the start page came down the same day. The sync then had catching up to do. Habit history now carries across a gap in syncs instead of restarting from zero, so a streak that broke only because our servers could not reach Notion is treated as unbroken for the outage window. Two brand-new connections still failed on Tuesday for an unrelated reason: their journal database has a number column, into which the nightly page creation wrote a checkbox value. That fix went out Thursday. The full internal write-up of the incident is done. The short version has not changed: it was our bug, we are sorry.

Reliability

Sync repairs in the wake

An outage shakes loose the small faults around it. An account paused for repeated sync failures used to stay paused until its owner reconnected by hand. The nightly safety net now probes paused accounts first and restores the ones whose connection answers again. It also keeps the stored connection on a pause instead of discarding it, so a wrong pause costs nothing. Overdue overnight tasks recovered after a restart now run in the order they were due, so a journal page is created before the sync that fills it. The schema check during connect waits for its turn in the rate limiter like every other Notion call. Competition-start mails are recorded again in the log our delivery monitor reads. Monthly habit statistics are recomputed from the raw entries, starting with September, instead of being rolled forward from a stored baseline.

Product

Connecting Notion, fewer dead ends

The connect step had collected three dead ends over the summer. This week each one got an exit. A journal database that fails the schema check used to leave the picker with a greyed-out button. It now shows a Fix this database button that lists the exact changes (a Date column added, the title column renamed, a starter habit checkbox) and makes them in place, keeping every row. A workspace already connected to another account used to answer with a bare error. The page now names that account by its masked email and offers to sign you into it with Notion, or to delete the one you are in. When Notion itself is unreachable, the failure page says so instead of showing a generic message. Concrete schema issues are spelled out there as well. Since Thursday, Notion Habit Heroes is listed in Notion's integration gallery; the connect screen and the home page say so.

Product

Two competitions at once

Until now an account could be in one competition at a time. The featured season counted as that one. The cap is now one regular competition plus the featured season, side by side. The competition page grew into a grid of compact cards for that: a status chip, one date range, a short description, the invite panel folded away until you open it. Each card shows how many people have joined. The featured promo card disappears once you are in, so nothing appears twice. The widget inside Notion got a chip row to switch between your competitions. Its featured share link points at the right competition.

Product

Season 0: October, rules, a badge

Season 0: Founding Heroes runs October 1 to 31. The season has a public rules page at /season-0 with the dates, the join steps, what finishers get, plus a short FAQ. One rule stands out: the top scorer names Season 1. The home page links the rules under the featured card, which now says "You're in" once you have joined. Finishers earn the Founding Hero badge. Badges have a home now, a block on your profile page that lists each one with the competition it came from. The list stays empty until the first season closes, which is the point: the promise on the rules page has a surface behind it.

Product

Team spaces and coach spaces

The team and coach pages promised a shared space with one invite link, a team leaderboard and a client dashboard. Those spaces existed only as far as joining. This weekend the rest landed: a groups hub listing your memberships, a group page with the members, the invite link and the owner tools. Teams get a team challenge that the owner creates and members join with one click. Coaches get a client roster: last entry, quiet days, top streak, 7-day and 30-day completion, perfect days, sync health per client. Clients never see each other. A quiet-client alert plus a weekly summary mail for coaches is built and sitting behind a switch. Spaces are set up on request from the team and coach pages. The last server piece is being deployed as this edition goes out; until it is live, the hub shows a short "not available yet" note.

Product

Widget fixes

Small things in the Notion widget, each of which had been reported. An accepted duel invite shows up when you return to the tab, without a reload. The card for creating a duel survives a roster refresh in the empty state. The widget's fonts load from the right place on every embed path. A tightened embed policy briefly blanked the widget inside Notion on Thursday; it was fixed within hours. The join page for an expired or invalid invite says so plainly instead of showing a raw error. The competition switcher from the arc above lives here too.

Product

The site: brand, pages, search

The header lockup now leads with Habit Heroes; the Notion mention becomes the subordinate phrase. The team and coach pages grew into full service pages. Under the surface the site's structured data was refreshed: the deprecated how-to markup is gone, breadcrumbs are declared, the team and coach offers are described with their prices. Every production deploy now pings IndexNow so search engines hear about changes within the hour. The first version of that plugin tripped the deploy step and was fixed the same day. Changelog editions link to their previous and next edition. The August roll-up covers all six weeks now. An embedded video in an article plays again after navigating between editions.

Under the hood

Under the hood

Both repositories took their routine dependency updates: Angular, Material and the CLI on the site, the build and run images on the server. Two dependency advisories on the server side were closed with pinned versions. The hermetic widget end-to-end specs share one set of stubs now, which uncovered two tests that had been silently red. The local development stack got a fixed project name so throwaway checkouts stop spawning ghost stacks. A few quieter hardening items shipped alongside; as usual they stay unnamed.

Compiled from the week's merge history across the Notion Habit Heroes app and this site, August 31 to September 6, 2026. The empty Monday, Wednesday and Friday are real: the week merged in two waves, Thursday and the weekend.