| id |
title |
status |
assignee |
created_date |
labels |
dependencies |
references |
priority |
| TASK-75 |
Three-state FUN: Present → Forgotten → Deleted |
Done |
|
2026-03-01 19:44 |
|
|
| lib/folk-shape.ts |
| lib/community-sync.ts |
| server/community-store.ts |
| website/canvas.html |
|
medium |
Description
Shapes now have three visual states instead of two. "Forgetting" a shape fades it (35% opacity, greyscale) for all connected clients rather than hiding it. Other users can choose to "forget too", "remember" (restore), or "delete" (hard-remove). A forgottenBy map (DID → timestamp) tracks who forgot, enabling social signaling around shared attention. Automerge handles concurrent map writes cleanly.
Acceptance Criteria
Final Summary
Implemented three-state FUN system across 4 files:\n\n- folk-shape.ts: Added :state(forgotten) CSS (opacity 0.35, grayscale 0.8) and forgotten property with getter/setter toggling ElementInternals states\n- community-sync.ts: New methods: forgetShape(id, did), rememberShape(), hardDeleteShape(), getShapeVisualState(), hasUserForgotten(), getFadedShapes(), getDeletedShapes(). Updated #applyDocToDOM (renders faded, skips deleted) and #applyPatchesToDOM (emits shape-state-changed)\n- community-store.ts: forgetShape() adds DID to forgottenBy map; rememberShape() clears map + deleted flag\n- canvas.html: Right-click context menu (Forget/Remember/Forget too/Delete), two-section memory panel (Fading with forget count + Deleted with Restore), close button fades instead of removes, Delete key escalates (forget → hard-delete)\n\nCommit: 317bc46 on dev, merged to main.