rspace-online/backlog/tasks/task-75 - Three-state-FUN-P...

2.3 KiB

id title status assignee created_date labels dependencies references priority
TASK-75 Three-state FUN: Present → Forgotten → Deleted Done
2026-03-01 19:44
canvas
FUN
UX
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

  • #1 Close a shape → fades (greyscale, 35% opacity) for all connected clients
  • #2 Another user sees faded shape, right-click → 'Forget too' or 'Remember'
  • #3 'Remember' restores to full color for everyone
  • #4 Right-click faded shape → 'Delete' → disappears, shows in memory panel 'Deleted'
  • #5 Memory panel 'Restore' on deleted shape → back to present
  • #6 Memory panel shows forget count per shape
  • #7 Backward compatible with legacy forgotten boolean

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.