UI polish, journals UX, and integration wiring

by Deariary Official

Product & UI polish

  • Added dark mode with a ThemeProvider and a three-way toggle (light/dark/system), and realigned header/content widths so everything snaps to the same 960px grid (commit).
  • Reworked the header: bigger brand sizing and an avatar dropdown for Settings/theme/Sign out; simplified top-nav items.
  • Introduced a proper footer, then iterated: expanded to 4 columns + bottom bar, added the ink-drop logo, unified borders, and made it sticky to the bottom on short pages. Final pass aligned borders/content and polished logo sizing/baseline.
  • Unified page widths with a shared .page-container so all screens line up with the header/footer grid.

Journals UX

  • Brought in Markdown rendering (unified/remark/rehype) with a useMarkdown hook, cleaned up loading states (spinner), and refreshed card/list styling with tag links and plaintext excerpts.
  • Shipped a tag-filtered journals page at /journals/tag/[tag] with cursor-based pagination and comprehensive tests (commit).
  • Added a journals sidebar: sticky month tree + tag list for faster navigation on desktop, stacked on mobile; followed up with layout fixes to keep the sidebar within content width (commit).

Integrations & settings

  • Built the OAuth callback page and aligned a bunch of API paths/IDs with the backend (startOAuth, disconnect via connectionId, source-config endpoints).
  • Implemented the GitHub integration detail page: sync status, repo selection, source data transparency, actions, i18n (commit).
  • Reworked the integrations list so connected cards link to “Details” instead of showing a disconnect button; disconnection lives on the detail page.
  • Synced frontend types/forms with backend reality (OAuth field names, sync status shape, GitHub repos response, source config schema with author?, include_commits?, include_pull_requests?).
  • Redesigned the Settings page: sidebar nav with sticky behavior, card layout, form fixes (generation time select, timezone datalist), and better disabled states; cleaned up redundant CSS.

Auth & pipeline plumbing

  • Fixed auth flow edge cases: added authenticate() to update state post-callback, replaced a Suspense race with an effect, added a 401 interceptor with auto-refresh + sign-out on refresh failure, and updated tests accordingly.
  • Switched journal regeneration to POST /users/me/journals/generate { date } and implemented triggerId-based polling (3s, up to 2min) for pipeline status; added a test for the click + polling behavior.
  • Filled in missing disabled styles for secondary/ghost/danger buttons so disabled actually looks disabled.
  • Added a safe fallback around getConnections for when the backend isn’t present.

CI

  • Integrated Codecov via Vitest V8 coverage, CI upload, and thresholds/PR comments. Requires CODECOV_TOKEN in repo secrets (commit).

Overall: a big sweep that tightened the visual system, upgraded journals navigation/reading, solidified integrations/auth plumbing, and added coverage reporting. Feels cohesive.

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
UI polish, journals UX, and integration wiring — deariary