# Changelog

All notable changes to Dumpling are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this
project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). While pre-1.0
(beta): a `feat` bumps the **minor** version, a `fix` bumps the **patch** version.

## [Unreleased]

### Added

- Dumpling for Mac is now signed and notarized by Apple, so it opens normally
  on first launch instead of being blocked as an unidentified developer — and
  it keeps itself up to date from here on, the same way the Windows app does.

### Changed

- On phones, the search and menu buttons now sit beside the page title
  instead of on their own row above it, and the due-count and list buttons
  keep to that same right-hand column — reclaiming about 70px at the top of
  every screen. Their tap targets are larger too.
- Dark mode got a full retune for easier reading: primary text no longer
  glares near-white, surfaces (background, sidebar, cards) are more clearly
  separated, the whole palette carries the same warm cast instead of muddy
  brown cards on a cold background, and faint placeholder text is actually
  visible again. Every text/surface pair is contrast-verified.

### Fixed

- A project no longer hides most of its tasks. If Dumpling couldn't reach the
  server to load a project's sections, the screen quietly showed only the tasks
  that weren't in a section — while the Tasks tab kept counting all of them, so
  the tab could read "Tasks (27)" above ten visible rows. Sections are now kept
  offline like everything else, a task whose section is missing still shows up
  instead of vanishing, and if sections genuinely can't be loaded the screen
  says so and offers a retry.
- An Area's "Tasks" count no longer counts subtasks while a project's doesn't —
  both now count the same things.
- A project's progress no longer creeps up forever when it contains a repeating
  task. Every past occurrence was being counted as its own item, so a daily task
  could push a project to something like "3 of 40". Archived projects are also
  no longer counted in the sidebar.
- Popping the Scratch Pad out into its own window no longer crashes Dumpling on
  Windows — neither when you open it nor after opening and closing it a few
  times. Closing the pop-out now tucks it away and re-opening brings it straight
  back with your text intact, instead of rebuilding the window from scratch.
- The detached Scratch Pad loads your content again instead of showing
  "Could not load scratch pad", and it can no longer disturb your sign-in
  session while the main window is refreshing it.
- The Today widget shows your tasks again. On the Home Screen and the Lock
  Screen it read "All clear" no matter how many tasks were due, because its
  requests were being turned away by the API's client check before they ever
  reached your data. Siri's add- and complete-task actions were blocked the
  same way. If the widget genuinely can't reach Dumpling it now says so,
  instead of reporting an empty day.
- Siri and the home-screen widget now recognise that you're already signed in.
  Previously only a fresh sign-in shared your session with them, so if the app
  simply reopened to an existing session, "Add a task in Dumpling" answered
  with a request to sign in and the widget showed nothing.
- Staying signed in is no longer at odds with using the widget: when the widget
  or a Siri shortcut renewed your session in the background, the app could come
  back to a session the server had already retired and sign you out. Both sides
  now hand the renewal over to each other.
- The Scratch Pad window now follows your theme choice in Settings instead of
  always matching the operating system.
- Calendar: the yearly heatmap's empty day cells are visible in light mode
  again (they were white-on-white).
- The weather °C/°F toggle's selected pill no longer loses its shadow in dark
  mode, and drop shadows across modals, panels, and cards now warm-tint in
  light mode and deepen in dark mode instead of always being plain black.

## [0.17.0] - 2026-08-07

### Added

- iOS Lock Screen widgets: the Today widget can now be added to the Lock
  Screen in all three styles — an inline line next to the clock, a circular
  remaining-task counter, and a rectangular view showing your next tasks.
- Completing anything now feels the same everywhere: checking off a task,
  habit, or goal gives one consistent, satisfying haptic thump on phones, with
  a quiet tick for unchecking. Changes syncing in from another device no
  longer buzz the one in your hand.

### Changed

- Your data is never held hostage: if a Pro subscription lapses, goals,
  habits, people, and organizations stay fully visible in read-only (with a
  quiet banner and one-tap upgrade), you can still delete anything, and
  over-cap tasks and notes remain editable and completable — only creating
  new things needs Pro again. Full data export works on every plan, always.
- AI fair use is now credit-based: usage meters model calls instead of
  messages, so quick questions cost less of your allowance and long agentic
  tasks cost their real share. Running out no longer stops the assistant —
  replies switch to a faster eco model until your allowance resets on the
  1st, with a quiet notice in the chat. Your AI usage meter now lives in
  Settings (as a percentage), you get one heads-up email at 80%, and the
  meter updates immediately after each conversation.
- The upgrade screen now shows live prices straight from Stripe, so the
  numbers you see are always exactly what checkout charges.

### Fixed

- The habit activity grid no longer goes blank before the last daylight-saving
  change (and no longer drops the transition day itself, e.g. March 8) —
  history now renders correctly all the way back.
- The same daylight-saving-time flaw was fixed everywhere else it lurked:
  calendar month grids and multi-day timelines can no longer skip or double a
  day around a DST change, events on transition days draw at their true
  wall-clock position, day-based filters (This Week, Next 7 Days, Tomorrow)
  bucket correctly across the change, scheduled reminder times stay at the
  same clock time instead of drifting an hour, and the app's midnight rollover
  no longer fires an hour early on the fall-back night.
- Pro accounts granted directly (without a Stripe subscription) no longer see
  a "Manage subscription" button that errors — it's replaced with a note that
  there's no billing to manage.

## [0.16.0] - 2026-08-04

### Added

- Dumpling Pro is live! Upgrade in-app for $9.99/month or $79.99/year (save
  33%) — secure checkout and subscription management via Stripe. The
  "Coming soon" stamp is gone.

- Long AI chat tasks now pause after 10 tool steps and show a summary of
  progress with a **Continue** button — tap it to let the assistant keep
  working right where it left off. Previously very long tool runs kept
  grinding with no way to check in.

### Fixed

- The Edit Project dialog no longer crashes into a grey box — editing a
  project's name and color works again.
- Subtasks in the docked detail panel can now be clicked to open their own
  detail view — no more detouring through the parent's full-screen view.
- With the sidebar collapsed, the floating menu button no longer overlaps the
  project title.
- Dismissing a recognized date/recurrence/priority in quick add (Esc or the
  chip's ×) now keeps that text in the task title instead of silently
  dropping it — "call mom tomorrow" stays "call mom tomorrow".
- Next 7 Days now shows days that only have calendar events — previously a
  day with events but no tasks was skipped entirely.
- Toasts and error messages are readable in both themes: the Undo/Retry
  button, tone icons, and countdown ring on toasts, the AI chat error
  banner, failed-tool cards, and calendar/attachment error notices all use
  theme-aware colors now instead of washing out in dark mode.
- Tags applied outside the app (e.g. by the AI via MCP) now show up on your
  tasks and notes — and tags you applied in the app survive a restart. The
  app now syncs tag assignments from the server instead of only remembering
  the ones made locally.
- In the create-goal dialog, pressing Enter on the title now creates the goal
  instead of inserting a newline, and Money/Count/Deadline goals missing a
  target now explain what's needed when you press Create instead of showing a
  dead button.

### Added

- Goals can now be archived from the goal detail menu — archived goals leave
  the goals list, picker, and sidebar count, and can be restored (or deleted)
  from Settings → Archived → Goals.
- Goal cards in grid view now have the same completion checkbox as the list —
  you can achieve (or un-achieve) a goal, and replay its celebration, without
  switching back to list view.

## [0.15.0] - 2026-08-03

### Added

- Notes can now use the help guides' styling blocks: tip/info/note callouts,
  item cards, labeled code blocks with copy, and a table of contents.
- iOS can now receive silent background pushes, so widgets refresh when your
  data changes on another device.

### Changed

- Abandoned goals now leave the active list (and the goal picker) and appear
  alongside completed goals instead; the goals list shows top-level goals
  only, with milestones living inside their parent goal.
- The goal celebration now counts up to the amount you actually reached, and
  deleting a goal with milestones or linked tasks tells you exactly what will
  be detached first.

### Fixed

- Completing a goal from the goals list could crash right as it succeeded;
  celebrations are now rock-solid from every surface, dismiss with Esc and
  the back button, and rapid double-taps can no longer fire twice.
- Completing a goal by changing its status (or via connected AI tools) now
  records the completion time and awards XP, exactly like the Achieve button —
  previously those completions could leave the goal half-completed with no XP.
- When saving a goal fails, the error message now tells you the real reason
  (for example "Too many requests — try again in 30s") instead of the
  incorrect "goal is still active", and failed saves no longer crash silently
  in the background.
- After the server asks the app to slow down, the app now actually waits the
  requested time before sending more requests — burst refreshes could
  previously escalate into a long lockout.
- If completing a task fails to save, the "Task completed" confirmation is now
  replaced with the real error instead of standing as a false confirmation.
- On iOS, the home-screen widget and Siri shortcuts could show no data because
  they couldn't share the app's sign-in. They now connect properly.
- The iOS app-icon badge (due + overdue task count) could silently stay blank
  after a reinstall. The app now asks for notification permission right after
  sign-in, and a badge update that fails is retried instead of being silently
  dropped.
- Rapid actions (for example tapping several reminder options in a row) no
  longer trigger a "too many requests" message that briefly blocked the whole
  app. Dumpling now collapses identical simultaneous requests into one, so a
  burst of activity — including the flurry the app makes when it comes back to
  the foreground — stays well within the server's limits.
- Corrected inaccurate instructions across the in-app help guides
  (project/area rules, reminders, calendar event notes, tags, goals, MCP
  disconnect, AI privacy).

## [0.14.0] - 2026-07-31

### Changed

- A task with a set time always notifies you at that time now, so you don't
  have to add a reminder for it. The schedule picker reflects this — it shows
  "Notifies at the set time" instead of an "At time" chip you had to keep
  selected, and the reminder options now only add *earlier* nudges
  (15m / 30m / 1h / 1 day before). Settings' default reminders match.

### Fixed

- The Mac app launches reliably again: a crash at startup when the system
  handed Dumpling its push-notification registration has been fixed, and
  notification taps (both reminders and pushes) now open the right item on
  macOS.

## [0.13.0] - 2026-07-30

### Added

- Reminders now reach Android phones as real push notifications, so a task,
  habit, or event reminder arrives even when Dumpling isn't open. Tapping one
  opens the item it's about, exactly like an on-device reminder. Reminders you
  set while offline still fire on time, and a reminder is only ever shown
  once — whichever way it reaches your phone. (iPhone and Mac push are still
  to come.)
- Right-click a note, person, or organization row to open its actions menu at
  the cursor — the same desktop idiom tasks and board cards already had.

### Changed

- Sort menus are calmer and consistent everywhere. The selected sort (and the
  active sort button) now reads through a subtle fill and bolder text instead
  of turning coral, and tasks, notes, goals, people, and organizations all
  share the same menu styling.
- Picking a schedule is easier on the eyes: selected date, time, duration,
  repeat, and reminder options highlight with a quiet fill and weight instead
  of coral everywhere; coral stays only on "Today" and your chosen calendar
  day.
- The tag picker got the same treatment — selected tags and the chosen color
  swatch are marked in ink, tag colors stay their own — and its create-tag
  form now sits flat on the sheet instead of inside a nested card. New tag
  names created from the quick-add flow are capped at 100 characters to match
  tag creation everywhere else.
- The Rhythm heatmap on Statistics uses a calm olive scale for activity, with
  coral reserved for your peak-productivity callout.
- Selecting a destination in the area/project picker no longer floods the row
  in coral — areas and projects keep their own colors, and the chosen row is
  marked with a fill and a check.
- Section titles across settings, pickers, the slash menu, and backlinks now
  share the same small-caps style as task list headers.
- Deleting a single task, note, person, or organization no longer asks "Are
  you sure?" — the delete happens immediately and the toast's Undo button is
  the safety net, matching how Todoist and Things handle it. Deleting a
  project or area (which takes its contents with it) still asks first — as do
  repeating tasks and tasks with subtasks, because Undo can't yet restore a
  schedule or subtasks.
- The Undo window for deletes is now 6 seconds (up from 4), since it's the
  only safety net on most deletes.
- Restoring a deleted note via Undo now brings back its rich formatting, not
  just the plain text.

### Fixed

- Connecting a Google Calendar account works again. Signing in would complete
  in the browser but never actually connect the account; now the browser hands
  you straight back to Dumpling and the connection finishes on its own, with no
  need to switch back manually. Calendars already connected were unaffected.
- Dialogs across the app now share the design system's warm styling — bone
  surface, soft corners, hairline border — in both light and dark mode,
  including the date and time pickers, instead of stark Material defaults.
- The editor's color swatches now follow the theme instead of hard-coded
  light-mode colors (one a stale, low-contrast grey), so the picker and
  newly applied colors look right in dark mode; highlights are now soft
  translucent tints that read on both light and dark paper. (A text color
  applied in one mode still keeps that mode's exact shade when you switch
  themes.)
- White text on the yearly-summary celebration card and achievement badges
  now sits on deeper coral that meets accessibility contrast (the raw coral
  fill fell below the AA threshold).
- Typography now says what it renders: the app requested Satoshi weights
  600/800 that were never bundled, so Flutter silently substituted 700/900.
  Code, spec, and a new drift test now agree on the shipped weight ladder.
  (Bundling Satoshi Semibold/ExtraBold — e.g. the variable font — would
  restore the originally intended 600/800 steps.)
- Task lists are fully keyboard-operable: with a row focused, the menu key (or
  Shift+F10) opens its actions menu and the Delete key deletes the task (with
  the same Undo safety net as the mouse path) — date, priority, move,
  duplicate and delete no longer require a mouse.
- Hover-revealed controls (row "More" buttons, drag handles) are no longer
  invisibly tappable, focusable, or announced by screen readers while hidden.
- Chat message actions (Copy) are now visible on phones and tablets — they
  were hover-only, with no way to reach them by touch.
- Keyboard focus is now visible on buttons, icon buttons and other standard
  controls across the app, in both light and dark mode.
- Esc reliably exits multi-select mode, even when selection was started with
  the mouse.
- In Quick Find, arrow-key navigation no longer fights the mouse: hovering
  only changes the selection when the pointer actually moves.
- Screen readers: page titles are announced as headings on every hero screen,
  the "Saving… / Saved" indicator announces state changes, and the People and
  Organizations search toggles now have names and tooltips.
- With the sidebar collapsed, the floating expand button no longer covers the
  page title at narrow window sizes or with the detail panel open ("Today"
  read "oday") — the title now makes room for the button.
- Clicking a task or note now always does what you see. On wide layouts the
  click opens the side panel exactly when the panel can actually appear —
  previously, with the AI chat docked or the sidebar collapsed, clicks could
  silently do nothing or push a full screen past a visible panel.
- The docked AI chat no longer opens where it can't fit. On windows too
  narrow for the docked column it opens as a bottom sheet instead of breaking
  the layout, and a chat width saved on a large monitor can't overflow a
  smaller one.
- Esc now closes the AI chat panel (or backs out of its history view) when
  you're working inside it — including while typing a message.
- The keyboard shortcuts overlay now tells the truth: Ctrl+\ toggles the
  detail panel (it was listed as a sidebar toggle), Ctrl+F find-in-page is
  listed, and Ctrl+K / Ctrl+/ are shown as one Quick Find feature with two
  bindings instead of two features.
- The Today empty state now suggests pulling a task from "Someday" — the
  list's actual name — instead of "Anytime".
- A collapsed sidebar no longer flashes open for a moment on every launch.
- The /chat deep link now opens the AI chat panel instead of silently landing
  on Today.
- An empty project is no longer a dead end: the toolbar, tabs, and view
  toggle stay put, and the empty state offers an "Add task" button that opens
  the project's quick-add. A missing project now offers "Go back".
- Empty states for Notes, Habits, and Goals now include a real action button
  ("Create note", "Add habit", "Add goal"), and filtered note views offer
  "Clear filter". Copy no longer says "Tap …" on desktop.
- If saving the scratch pad as a note fails, the error now stays on screen
  with a Retry button until the save succeeds — your text is kept, instead of
  a "Failed to save" message that vanished after two seconds.
- Dragging goals while sorted by something else now shows "Sorted manually
  now — drag to reorder" instead of silently switching the sort mode.
- "Failed to load …" messages now say what to do next ("Check your connection
  and try again"), and buttons/labels use consistent sentence case ("Sign in",
  "Create account", "Quick actions", …).

### Removed

- The update prompt's "What's new" button. It opened a sheet showing the same
  notes already displayed in the prompt.

## [0.12.0] - 2026-07-25

### Fixed

- Completed tasks stay on your graph. A person linked to one finished and one
  active task showed two connections in their detail panel but one on the
  graph — the graph, the connections list, and the assistant now agree.
  Finished items are drawn muted with a filled check.
- Selecting an item in the full graph shows all of its connections. Weaker ones
  stayed hidden even when you'd picked that item specifically.
- Screens paint instantly from data already on your device and refresh quietly
  in the background, instead of showing a skeleton while your data sat loaded.
- The app opens straight into your data. Your session is restored from the
  device and renewed in the background rather than behind a spinner — most
  noticeable on phones, which paid that wait on nearly every launch.
- Requests no longer hang when the network goes quiet rather than down.
  Everything is now bounded; a dead connection reports back in seconds.
- Fixed a rare spurious sign-out when two session renewals raced.
- "Check for updates" reports a failed check instead of claiming you're up to
  date, and gives up after 12 seconds.
- Progress counters no longer go stale after changes made on another device or
  through widgets, Siri, or integrations — subtask badges, project and goal
  progress, sidebar circles, the year heatmap, tag contents, and XP. Moving a
  task between projects updates both projects immediately.

## [0.11.0] - 2026-07-23

### Added

- Deadline reminders, separate from due-time reminders. Choose which days to be
  reminded (day of, up to a week before) and what time, under Settings →
  Notifications.
- Habit streak milestones (3, 7, 14, 30, 50, 100, 365) are celebrated with a
  brief message and a pulse on the flame counter. Backfilled check-ins count.
- @-mentions and search find people and organizations by their "Also known as"
  aliases — typing `@Biel` surfaces Gabriel, and the mention keeps the alias
  you typed while linking to the right person.

### Fixed

- Cold starts no longer flash the login or welcome screen: onboarding
  completion is remembered on the device, the router waits for auth and
  onboarding to settle, and a startup network hiccup no longer signs you out.

## [0.10.0] - 2026-07-20

### Removed

- Personal access tokens, including the token list in Settings → MCP access.
  AI clients connect with OAuth.

### Fixed

- Side-panel resize handles respond to the first drag. Slow drags no longer
  stall, and resizing no longer resets the panel's content.
- Images load everywhere again — note images, attachment thumbnails, avatars,
  organization logos, and goal covers. The server's bot protection wasn't
  recognizing the app's image requests.

## [0.9.0] - 2026-07-18

### Changed

- Connections is now the last section on every detail screen and anchors to the
  bottom when content is short, as a slim pinned bar on notes. Task, goal, and
  person detail gain a desktop scrollbar.
- The area/project field is labeled "Location" everywhere.
- AI clients (Claude, ChatGPT, Codex, Cursor, VS Code) connect over OAuth — add
  the MCP server URL and sign in when the browser opens. No tokens to copy.

### Deprecated

- Personal access tokens. Existing ones keep working and can still be revoked,
  but new ones can't be created — reconnect with OAuth.

### Fixed

- All-day due dates no longer show or save one day early, and the schedule
  picker opens on the correct day.
- Deadlines are true calendar dates end to end, so they can never display or
  save as the wrong day near midnight.

## [0.8.0] - 2026-07-17

### Added

- Looking Back reflections can be rated with a thumbs up/down — plus a short
  reason when one misses — to teach it what's worth resurfacing.

### Changed

- View Connections is rebuilt around Direct, Nearby, and Workspace. Nearby no
  longer floods the map with everything sharing an Area or Project; automatic
  discoveries sit in a collapsed "Possibly related" section with dashed edges;
  confirming or rejecting applies instantly, is reversible, and personalizes
  future matching.
- Looking Back history updates in place — ratings, removals, and Clear all take
  effect without reopening the screen.

## [0.7.0] - 2026-07-11

### Added

- A redesigned first-run welcome maps Dumpling's four connected systems: daily
  rhythm (Tasks, Calendar, Habits), structure (Areas, Projects, Goals), context
  (Notes, People, Graph), and the AI assistant.
- The graph surfaces suggested connections by default — faint dashed links
  between related items across tasks, notes, goals, habits, people and
  organizations, instead of only on selection. They stay out of the way when
  zoomed out or on dense graphs, and you can confirm or dismiss each one.

### Changed

- Looking Back reads as a dated timeline: each moment shows the date it looked
  back from and the real original date of what it resurfaced, flowing down a
  continuous rail with light month markers.
- Task lists load ~10× faster — list responses carry a description preview, not
  every task's full rich-text body. Opening a task fetches the full text.
- Avatars, organization logos, goal covers, and note images are cached on disk:
  instant on revisit, no flicker while scrolling.
- Adding a connection shows the new link immediately; if saving fails it's
  removed and an error is shown.
- Goals cleaned up: type chips no longer print their symbol twice ("$ $" reads
  "$ Amount"), the list/grid toggle matches the app's quiet selector, and page
  titles no longer collapse into a vertical letter stack in narrow panels.
- Task lists put coral back on a budget: due dates read as quiet metadata and
  only overdue turns coral, the repeat icon and toolbar + are ink, and
  completed tasks drop their urgent-colored date tag.
- Settings is quieter: ink-on-paper toggles, flat cards, and a sign-out dialog
  whose Cancel button no longer matches Sign out.
- The Notes list is calmer: Pinned/Notes get task-list section headers, the
  Daily Note card matches the design system, pins are quiet, and note titles
  align with task-row typography.
- The Calendar screen opens with the standard page header, its view switcher is
  quieter (today's date is the accent), and view pills scroll instead of
  clipping on narrow windows.
- Animations share one motion vocabulary — checking a habit pops exactly like
  checking a task, hover fades match, and AI tool icons scale in calmly.
- System colors moved onto the warm palette: priority marks, status chips,
  toasts, and default calendar events use brick, amber, olive, and slate
  instead of stock Material, with muted area/project/habit presets. Secondary
  text now meets WCAG AA contrast.

### Fixed

- A temporary preferences or network failure no longer sends a signed-in user
  back through onboarding.
- Event reminders no longer skip a reschedule when the calendar screen closes
  mid-fetch.
- Keyboard triage is complete: organization rows join Tab/arrow traversal, and
  Delete works on focused note, person, and organization rows.
- Boards: Space completes a card, Enter opens it, focus shows the same coral
  ring as lists, the context-menu key opens the right-click menu, and a board
  no longer opens on an empty "No Section" page.
- Habit rows no longer overflow on narrow windows — long schedules ellipsize.
- Desktop scrolling grew up: visible slim scrollbars on long lists,
  PageUp/PageDown/Home/End scroll the current screen, and mouse dragging no
  longer fights the wheel.
- The docked side panel returns to today's note when you change screens instead
  of holding a task you opened three screens ago.
- Looking Back is reachable from the sidebar customize list, the Navigate-to
  menu, and the mobile bottom bar. Ctrl+3 is now labeled "Next 7 Days", and
  Statistics drops a stray back arrow.
- Launching Dumpling while it's already running focuses the existing window
  instead of starting a second copy — two copies used to sign each other out.
- The Organizations screen shows your organizations again; a layout crash in
  the tree's indent line blanked it whenever an organization had a parent.
- Saved filter pages show a spinner and a retry-able error instead of flashing
  "Filter not found" while filters load.
- The People list groups contacts under their organizations instead of putting
  everyone under "No Organization". Avatars get varied warm colors.
- Close buttons, row menus, password toggles, and the favorite star gain
  tooltips and screen-reader labels; the AI error banner is announced; counts,
  times, and streaks align their digits; and "..." is a proper "…".
- The update prompt names the version it's offering ("Update to X ready").

## [0.6.0] - 2026-07-07

### Added

- Favorites appear in the mobile sidebar, including saved-filter favorites.
- Notes can be moved to another project or area from the ⋯ menu.

### Changed

- The + and view-options buttons moved under the "N of M" progress bar, giving
  task lists more vertical room.
- The multi-select bar stays open after setting priority, due date, or pin, so
  you can apply more actions. Delete, complete, move, and archive still dismiss.

### Fixed

- Selecting text inside a note on mobile works again — long-press and
  double-tap were swallowed by an invisible overlay.
- Completing a task from a leftover notification on another device no longer
  duplicates a recurring task or skips its next occurrence.
- The assistant no longer reports a completed daily task as still due for users
  west of UTC.
- Notes created from a calendar event show the event's time in your timezone.
- Recent searches are kept per account and cleared on sign-out.

## [0.5.0] - 2026-07-07

### Added

- Usage meters on the Upgrade screen: live "N / M" for AI messages and
  free-tier items, with a warning banner as you approach a cap.
- Keyboard-first lists on desktop — Tab/arrow through task, note and people
  rows, Enter opens, Space completes, with a visible focus ring. The shortcuts
  overlay adds the sidebar/AI-panel toggles and the global hotkeys.

### Changed

- Sharper text contrast throughout: metadata, timestamps, placeholders and
  primary buttons meet contrast guidelines in both themes, and dark mode gets
  properly lightened accents.

### Fixed

- Offline edits to sections, tags, projects, areas and pinned filters stay
  applied and sync later instead of flashing an error and reverting.
- Favorites report failures instead of silently undoing your change, and the
  Favorites screen has proper loading and error states.
- Toasts are announced to screen readers, and task checkboxes read as
  checkboxes with a checked state.
- Several errors that showed raw technical details now read plainly, and more
  error screens offer "Try Again".

## [0.4.0] - 2026-07-05

### Added

- AI action permissions. The assistant asks before it creates, changes, or
  deletes anything — Allow once, Deny, or "Always allow"/"Always deny", managed
  under Settings → AI → Action Permissions.
- Habits: check in for a past day. The last 7 days show as tappable circles —
  tap to fill a missed day, tap again to clear, streak recalculates instantly.
- In-app changelog: tap the version in Settings to browse the full release
  history any time, even offline.
- Search results are grouped by type, with the matched text highlighted and
  quick chips to filter to a single type.
- Unlink a discovered connection straight from its tile.

### Changed

- Quick-add: Enter creates the task immediately; Shift+Enter or Tab moves to
  the description. (In note mode Enter still moves to the content field.)
- Search opens the right place and feels snappier — areas, goals and habits go
  to their own screens, and an in-flight search is dropped as you keep typing.
- The Connections panel refreshes the instant you link or unlink, and dismissed
  or confirmed suggestions stay that way.

### Fixed

- Your scratch pad saves to your account. It was device-only, so notes jotted
  there could be lost when you signed in elsewhere or reinstalled.
- Tasks show on the correct day everywhere — board cards, the activity heatmap
  and version history could be a day off depending on timezone, and all-day
  tasks now keep their date when you travel.
- Recurring tasks: undo right after ticking a repeat works; completing an
  overdue one catches up to the next upcoming date; monthly repeats on the
  29th–31st no longer slip after a short month; daily repeats keep their time
  across DST; editing a time no longer resets "end after N times"; and repeats
  created by the assistant land on the weekdays you asked for.
- Drag-and-drop drops the task exactly where you release it, instead of one row
  too low on boards and filtered lists.
- Quick-add understands more dates: "in 2 weeks at 5pm" keeps the time, "this
  weekend" works when it already is the weekend, and "review P2 incident" is no
  longer read as a priority.
- Completing a task with unfinished subtasks asks what you meant instead of
  quietly leaving them behind.
- Editing a completed task works; those edits used to fail silently.
- The calendar timeline draws time-blocked tasks and events that cross midnight
  or span days in the right place.
- Syncing across devices is more dependable, and offline edits replay cleanly.
- Dismissed overdue alerts stay dismissed — returning to the app no longer
  re-fires them or forces a full re-sync.
- Lists no longer flash a spinner each time the assistant creates or edits
  something during a chat; they update in place.
- Version history works again: editing no longer collapses the previous version
  into a copy of the current one, restoring updates the open editor and sticks,
  and the preview diff compares against real current content.
- AI chat no longer errors on an empty streaming response.
- Malformed server responses surface as a clear error instead of a crash.
- Saving a scratch pad note offline queues it instead of showing an error.

## [0.3.0] - 2026-07-01

### Added

- Calendar event reminders — a notification before a timed Google Calendar
  event starts, marked as an event. Off by default; set the lead time under
  Settings → Notifications. All-day events are skipped.

### Changed

- AI chat works through longer multi-step requests, and when it does hit its
  limit it says what it accomplished and offers to continue.
- Windows updates install quietly in the background and reopen on the new
  version — no setup wizard, and your shortcut and launch-at-login choices are
  kept.
- Settings is reorganized: section headers with icons, General and Notifications
  as their own sections, and an About section holding help, updates, version,
  and legal.

### Fixed

- Editing a note on mobile no longer crashes as the note grows. The note screen
  scrolls as one piece, which also removes the empty gap below short notes.
- Update release notes render with real formatting instead of raw markdown,
  including on the "update required" screen, plus a "What's new" link.

## [0.2.0] - 2026-06-29

### Added

- Looking Back: an occasional "On This Day" card on Today resurfaces a note,
  completed task, or goal from a year ago, with a Settings section to browse
  past moments or turn it off. (Pro)
- Real-time delivery on Windows: with Dumpling in the tray (now started at
  login by default), reminders arrive within seconds — including ones set on
  another device — and update prompts appear as soon as a release is out.
- Instant cross-device sync: a change on one device shows up on your others in
  about a second instead of waiting for the periodic sync.

## [0.1.1] - 2026-06-22

### Changed

- Polished the Windows installer: branded setup icon and wizard art, a terms
  page, and an optional "Launch Dumpling when I sign in to Windows" that starts
  the app minimized to the tray and stays in sync with the in-app setting.

## [0.1.0] - 2026-06-20

First beta. This is everything Dumpling shipped with.

### Added

**Tasks & scheduling**
- Tasks with subtasks, priorities, rich descriptions, drag-and-drop, sections.
- Recurring tasks — daily/weekly/monthly/yearly, fixed or relative, with end
  conditions.
- Due dates vs deadlines, duration estimates, and calendar time-blocking.
- Natural-language input ("tomorrow", "every Monday") setting dates,
  recurrence, and priority.

**Notes**
- Rich-text block-editor notes with pinning, archiving, and reordering.
- Daily notes, plus a persistent quick-capture scratch pad.
- One-tap copy of a note as Markdown.

**Goals & habits**
- Goals in five types (binary, numeric, currency, percentage, deadline) with
  sub-goals and progress.
- Habits with daily/period scheduling, streaks, best-streak tracking, and
  timezone-aware check-ins.

**Rise (gamification)**
- Earn XP, level up, and unlock achievements as you complete work.

**Organization**
- Areas → projects (nestable) grouping tasks and notes.
- Tags (icons + colors) across tasks, notes, people, and organizations.
- Visual filter builder with saved filters, favorites, and an inbox.

**People & organizations**
- Contact and organization records with links, hierarchy, avatars, notes, and
  archiving.

**Calendar**
- Google Calendar sync — multi-account OAuth with per-calendar visibility.
- Day, timeline, month, and year (heatmap) views; tasks and events share one
  timeline.

**AI & knowledge**
- AI chat with @mentions, streaming replies, and persistent history.
- Tool execution — create/update tasks, notes, and memory, with visible cards.
- Auto-extracted knowledge with a review/accept flow and per-source privacy
  controls.

**Search & graph**
- Hybrid keyword + semantic search with entity, status, and tag filters.
- In-screen find (Ctrl/Cmd+F) across project and area lists.
- Force-directed graph of every entity and its relationships.

**Analytics**
- Statistics (completion, streaks, backlog, heatmaps), project analytics, and a
  yearly summary.

**Platform**
- Desktop: system tray, global hotkeys, quick capture (Ctrl/Cmd+Shift+A), a
  multi-window scratch pad, launch-at-startup, window-state persistence.
- Automatic updates on Windows — background check and in-place install.
- Timezone-aware notifications and reminders with quick actions.
- Weather widget, file attachments, and offline-first sync with optimistic
  updates.
- MCP server exposing ~26 tools to external AI clients.

[Unreleased]: https://github.com/uncazzy/dumpling-app/compare/v0.11.0...HEAD
[0.11.0]: https://github.com/uncazzy/dumpling-app/compare/v0.10.0...v0.11.0
[0.10.0]: https://github.com/uncazzy/dumpling-app/compare/v0.9.0...v0.10.0
[0.9.0]: https://github.com/uncazzy/dumpling-app/compare/v0.8.0...v0.9.0
[0.8.0]: https://github.com/uncazzy/dumpling-app/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/uncazzy/dumpling-app/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/uncazzy/dumpling-app/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/uncazzy/dumpling-app/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/uncazzy/dumpling-app/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/uncazzy/dumpling-app/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/uncazzy/dumpling-app/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/uncazzy/dumpling-app/releases/tag/v0.1.1
