Skip to content

Feat/schedule unschedule due date - #112

Merged
romahawk merged 6 commits into
mainfrom
feat/schedule-unschedule-due-date
Jun 29, 2026
Merged

Feat/schedule unschedule due date#112
romahawk merged 6 commits into
mainfrom
feat/schedule-unschedule-due-date

Conversation

@romahawk

Copy link
Copy Markdown
Owner

What

Why

How

How to Test

Checklist

  • npm run build passes with zero type errors
  • npm run lint passes
  • Tested on mobile (375px) and desktop (1280px)
  • Offline behavior verified (if touching store or sync)
  • No console.log left in production code
  • CHANGELOG.md updated (for user-facing changes)

Screenshots (if UI change)

romahawk and others added 6 commits June 28, 2026 12:34
Replaces the read-only due date chip with a date input so the user can
change the due date directly in the panel. The × button next to the
input still clears the date, removes the time slot, and unschedules.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Switches the Notes textarea from a live-update controlled input to
local state saved on blur. key={block.id} on EditPanel resets the
local state when a different block is opened.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
blur-to-save was unreliable when switching blocks by clicking calendar
divs (non-focusable, so blur never fired). Refs track the latest notes
and onUpdateTimeBlock; a cleanup effect flushes on unmount regardless
of how the panel closes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces auto-save-on-blur with an explicit Save button that appears
when text is entered. After saving, notes render read-only with an Edit
button to re-enter edit mode. Defaults to edit mode when no notes exist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
onUpdateTimeBlock closes over editBlock in the parent which could be
stale at save time. EditPanel now reads updateTimeBlock from the store
directly and uses block.id/sourceType from its own props — both are
stable for the lifetime of the panel (key=block.id).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
updateTask reconstructs the linked TimeBlock from scratch (lines
1118-1131 in store.ts) without preserving notes, silently wiping them
on any category/title/time change. Moving notes to Task.notes fixes
this: Task updates merge with {...current, ...updates}, so fields
absent from updates are always preserved.

Non-linked time blocks keep notes on TimeBlock as before.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
magic-kick Ready Ready Preview, Comment Jun 29, 2026 8:31am
magic-kick-kfb8 Ready Ready Preview, Comment Jun 29, 2026 8:31am

@romahawk
romahawk merged commit 91d78bd into main Jun 29, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant