---
phase: 02-core-crud
plan: 03
type: execute
wave: 3
depends_on: [02-02]
files_modified:
- src/lib/components/EntryCard.svelte
- src/lib/components/CompletedToggle.svelte
- src/routes/+page.svelte
- src/routes/+page.server.ts
autonomous: true
must_haves:
truths:
- "Clicking an entry expands it to show edit fields"
- "Editing title or content auto-saves after typing stops"
- "User can toggle show/hide completed tasks"
- "User can change entry type after creation"
artifacts:
- path: "src/lib/components/EntryCard.svelte"
provides: "Expandable entry with inline editing"
contains: "expanded"
- path: "src/lib/components/CompletedToggle.svelte"
provides: "Toggle for showing completed tasks"
min_lines: 15
- path: "src/routes/+page.svelte"
provides: "Main page with completed toggle"
contains: "CompletedToggle"
key_links:
- from: "src/lib/components/EntryCard.svelte"
to: "src/routes/+page.server.ts"
via: "form action ?/update"
pattern: "action=.*\\?/update"
---
Implement inline editing with expand/collapse and auto-save, plus completed tasks toggle.
Purpose: Users can click an entry to expand and edit it in place. Changes save automatically as they type (debounced). Completed tasks can be shown/hidden.
Output: Expandable EntryCard with auto-save, CompletedToggle component, updated page with toggle integration.
@/home/tho/.claude/get-shit-done/workflows/execute-plan.md
@/home/tho/.claude/get-shit-done/templates/summary.md
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
@.planning/phases/02-core-crud/02-CONTEXT.md
@.planning/phases/02-core-crud/02-RESEARCH.md
@.planning/phases/02-core-crud/02-02-SUMMARY.md
@src/lib/components/EntryCard.svelte
@src/routes/+page.svelte
@src/routes/+page.server.ts
Task 1: Add expand/collapse and inline editing to EntryCardsrc/lib/components/EntryCard.svelte
Update EntryCard to support expand/collapse with inline editing and debounced auto-save.
Key changes:
1. Add `expanded` state variable
2. When collapsed, show title + truncated content (current behavior)
3. When expanded, show editable fields: title input, content textarea, type selector
4. Auto-save changes with 400ms debounce using fetch to ?/update
5. Use Svelte's slide transition for smooth expand/collapse
```svelte
{#if expanded}
{/if}
```
Features:
- Click anywhere on header to expand/collapse
- Checkbox click doesn't trigger expand (stopPropagation)
- Smooth slide transition
- 400ms debounce on input changes
- "Saving..." indicator during save
- Delete with confirmation dialog
- Type can be changed after creation
Start dev server: `npm run dev`
- Click an entry - should expand
- Edit title or content - should see "Saving..." briefly
- Click again - should collapse
- Change type - should save
- Delete - should prompt for confirmation
EntryCard expands/collapses with inline editing and 400ms debounced auto-saveTask 2: Create CompletedToggle component and wire up showCompletedsrc/lib/components/CompletedToggle.svelte, src/routes/+page.svelte, src/routes/+page.server.ts
**CompletedToggle.svelte** - Toggle for showing/hiding completed tasks:
```svelte
```
**Update +page.server.ts** - Accept showCompleted parameter:
Modify the load function to accept a URL search param:
```typescript
export const load: PageServerLoad = async ({ url }) => {
const showCompleted = url.searchParams.get('showCompleted') === 'true';
const entries = entryRepository.getOrdered({ showCompleted });
return { entries, showCompleted };
};
```
**Update +page.svelte** - Add toggle and use invalidateAll for refresh:
```svelte
TaskPlaner
TaskPlaner
```
Note: The preference syncs with URL so the server can filter correctly. When toggle changes, URL updates and data reloads.
Start dev server: `npm run dev`
- Create a task, mark it complete
- Should disappear from list
- Check "Show completed" - completed task should appear
- Refresh page - toggle state should persist
CompletedToggle shows/hides completed tasks, state persists in preferences and URL
After all tasks complete:
1. **TypeScript**: `npm run check` passes
2. **Expand/collapse**: Click entry to expand, click again to collapse
3. **Inline editing**: Title, content, type can be edited in expanded view
4. **Auto-save**: Editing shows "Saving..." then saves (no need to click save)
5. **Delete**: Delete button in expanded view with confirmation
6. **Completed toggle**: Checkbox in header shows/hides completed tasks
7. **Persistence**: Toggle state persists across page refreshes
Requirements satisfied:
- CORE-02: Edit entry ✓
- CORE-03: Delete entry ✓ (with confirmation)
- CORE-06: Add notes (append to content) ✓
- EntryCard expands on click to show edit fields
- Changes auto-save with 400ms debounce
- Delete button with confirmation dialog
- CompletedToggle shows/hides completed tasks
- Toggle state persists in localStorage
- TypeScript compilation passes