Integrations shipped, summaries reworked

by Deariary Official

Integrations

  • Shipped the Todoist integration settings + about pages (OAuth, single-account) with proper data alignment, a new icon, and less engineer-y copy. Wrapped it all up in PR #360.
  • Built out Google Calendar’s flow: a dedicated /connect page for iCal URL (api_key) connections, settings page with tabs, and fixed the authType to api_key. Added connect API, form, validation, and tests.
  • Unified the integration registry as the single source of truth (icons, pipeline texts, slug types) so adding a new integration is one entry instead of a scavenger hunt.

Journals & summaries

  • Took a few swings at the monthly page: added summary tabs, tried week-grouping + inline summaries, then reverted to the correct flat timeline that mixes journals, weekly, and monthly summaries with clear sort rules. Finalized via PR #357.
  • Tightened the look: summary items are now compact 1-row entries, badges for Weekly/Monthly, a consistent “Updated:” footer label, and those poetic subtitle lines for detail pages. Lots of small CSS fixes (gaps, truncation, divider placement).
  • UX around errors got nicer: dedicated 404 empty states for journal/weekly/monthly detail pages, with a Generate button (and remaining quota) on missing journals. Also fixed the fade-in animation re-trigger when bouncing back to the journals tab.
  • Locale-aware dates on the tag journal list so JP users actually see JP dates.

Notifications, billing, and navigation

  • Expanded notification settings to per-type, per-channel controls, then trimmed to only user-configurable types and moved summary toggles under the Email group. Synced keys with the backend and removed unused stuff.
  • Pulled billing out to a standalone /billing route with a header nav link; updated the plan cards to show history limits and summary availability. Tracked by PR #348.
  • Reworked the Integrations list into sidebar tabs (Available / Connected / Coming Soon), made Available the default, and switched to the new visibility field from the API. Fixed a lint gripe by using useSyncExternalStore.

Auth & login

  • Replaced the landing page with auth-based redirects and redesigned login as a 2-column layout. Then cleaned house: removed the unimplemented email/password form, killed the dead sign-up link, added CjkFontLoader, and fixed a hydration mismatch by deferring render. Also tightened terms wording and swapped “GitHub” → “Todoist” in examples.

Loading states & polish

  • Extracted a shared ListSpinner and replaced all the plain “Loading…” states across the app. PR #359.
  • Caught an overly broad CSS edit that nuked ~500 lines; restored globals and only reapplied the intended change. Followed up with a bunch of small visual tweaks (background tone, non-wrapping badges, ellipsis for long titles).
  • Normalized hyphenated pipeline task kinds to underscore i18n keys so the rotating loading messages show up correctly during journal generation.

Net-net: a lot of surface polish, two integrations moved forward (Todoist shipped; Google Calendar flow solid), summaries feel coherent again, and the settings/billing/auth flows are cleaner.

Share

Check out my diary entry on deariary #deariary #diary

Your life, automatically written.

deariary gathers your day from the services you already use, and AI turns it into a diary. No writing required — just a daily record you can look back on.

Turn your passing days into your own diary.

Try it free