Workspace's right panel has no 'history' section showing recent actions — user wanting to see what they did 5 minutes ago (e.g., 'I just rotated the image, what angle?') has no log #322

Closed
opened 2026-10-04 03:51:58 +00:00 by Mark · 1 comment
Owner

Finding

grep -rn 'history.*log\|actionLog\|recentActions' src/components/workspace/ returns 0. The workspace has no action log.

The workspace's state has history: HistoryState[] for undo/redo, but no human-readable action list.

A user with 30 actions in the last 5 minutes:

  • Wants to see "I rotated the image 30°, then I changed the density to 0.5, then I..."
  • Currently: can't; the history is opaque

The fix is an "Activity" or "Recent actions" log.

Where

  • Workspace state: src/components/workspace/useWorkspace.ts (history)
  • No action log: grep -rn 'actionLog' src/components/workspace/ returns 0

Suggested fix shape

  1. State: add actionLog: Array<{ timestamp: number; action: string; details?: object }> to the workspace's state. Each action that affects the design logs an entry.

  2. UI: in the right panel (or as a sidebar), an "Activity" section:

<SectionHeader title="Activity" isOpen={openSections.activity} onToggle={...} />
{openSections.activity && (
  <ul className="text-[11px]">
    {state.actionLog.slice(-20).reverse().map((entry) => (
      <li key={entry.timestamp} style={{ color: '#6B6560' }}>
        {formatRelativeTime(entry.timestamp)} — {entry.action}
        {entry.details && <span className="text-[10px]"> ({entry.details.value})</span>}
      </li>
    ))}
  </ul>
)}
  1. Action types:
  • "Uploaded image 'flower.png'"
  • "Rotated image 30°"
  • "Auto-digitize completed: 12,438 stitches"
  • "Changed density to 0.5"
  • "Saved to Gallery"
  1. Persistence: the log is session-local (not persisted to localStorage). The user can see recent actions but not across sessions.

Severity

Low. The user can use undo. Power users with complex workflows notice.

Discovered by

Gap analysis (2026-10-02) of workspace affordances.

  • #255 (open) — Workspace history panel. The history is the snapshot version; the action log is the human-readable version.
  • The editor's history panel (per #265) is the parallel.
  • Figma's "Activity" panel is the reference.
## Finding `grep -rn 'history.*log\|actionLog\|recentActions' src/components/workspace/` returns 0. The workspace has no action log. The workspace's state has `history: HistoryState[]` for undo/redo, but no human-readable action list. A user with 30 actions in the last 5 minutes: - Wants to see "I rotated the image 30°, then I changed the density to 0.5, then I..." - Currently: can't; the history is opaque The fix is an "Activity" or "Recent actions" log. ## Where - Workspace state: `src/components/workspace/useWorkspace.ts` (history) - No action log: `grep -rn 'actionLog' src/components/workspace/` returns 0 ## Suggested fix shape 1. **State**: add `actionLog: Array<{ timestamp: number; action: string; details?: object }>` to the workspace's state. Each action that affects the design logs an entry. 2. **UI**: in the right panel (or as a sidebar), an "Activity" section: ```tsx <SectionHeader title="Activity" isOpen={openSections.activity} onToggle={...} /> {openSections.activity && ( <ul className="text-[11px]"> {state.actionLog.slice(-20).reverse().map((entry) => ( <li key={entry.timestamp} style={{ color: '#6B6560' }}> {formatRelativeTime(entry.timestamp)} — {entry.action} {entry.details && <span className="text-[10px]"> ({entry.details.value})</span>} </li> ))} </ul> )} ``` 3. **Action types**: - "Uploaded image 'flower.png'" - "Rotated image 30°" - "Auto-digitize completed: 12,438 stitches" - "Changed density to 0.5" - "Saved to Gallery" 4. **Persistence**: the log is session-local (not persisted to localStorage). The user can see recent actions but not across sessions. ## Severity Low. The user can use undo. Power users with complex workflows notice. ## Discovered by Gap analysis (2026-10-02) of workspace affordances. ## Related - #255 (open) — Workspace history panel. The history is the snapshot version; the action log is the human-readable version. - The editor's history panel (per #265) is the parallel. - Figma's "Activity" panel is the reference.
Author
Owner

Closed by commit 35add94 (feat #322: Workspace Activity log).

What landed:

  • New ActionLogEntry type + WorkspaceState.actionLog (capped at 100 entries)
  • LOG_ACTION reducer + helpers (appendActionLog, humanReadableImageAction)
  • Wired into existing key action sites (upload/replace/digitize/UPDATE_IMAGE/save/settings)
  • UNDO does NOT clear the log (the log is a record of what the user did, not what state the workspace is in)
  • New "Activity" Collapsible in RightPanel showing the most recent 20 entries with relative-time labels
  • formatRelativeTime: "just now" / "Ns ago" / "Nm ago" / "Nh ago" / clock-time past 24h
  • 24 tests in issue-322.test.tsx (all passing)
  • Full vitest suite: 2048 passed (3 pre-existing failures in issue-275 unrelated to this change)
  • typecheck + lint + build all clean

Categorical settings (hoop/fabric/stabilizer/filename/preference/underlay/autoThreadMatch/machineProfile) get logged; numeric slider keys do not — those would flood the log on every drag tick. Per the issue spec, persistence is intentionally session-local.

Closed by commit 35add94 (feat #322: Workspace Activity log). What landed: - New ActionLogEntry type + WorkspaceState.actionLog (capped at 100 entries) - LOG_ACTION reducer + helpers (appendActionLog, humanReadableImageAction) - Wired into existing key action sites (upload/replace/digitize/UPDATE_IMAGE/save/settings) - UNDO does NOT clear the log (the log is a record of what the user did, not what state the workspace is in) - New "Activity" Collapsible in RightPanel showing the most recent 20 entries with relative-time labels - formatRelativeTime: "just now" / "Ns ago" / "Nm ago" / "Nh ago" / clock-time past 24h - 24 tests in issue-322.test.tsx (all passing) - Full vitest suite: 2048 passed (3 pre-existing failures in issue-275 unrelated to this change) - typecheck + lint + build all clean Categorical settings (hoop/fabric/stabilizer/filename/preference/underlay/autoThreadMatch/machineProfile) get logged; numeric slider keys do not — those would flood the log on every drag tick. Per the issue spec, persistence is intentionally session-local.
Mark closed this issue 2026-10-05 01:07:07 +00:00
Sign in to join this conversation.
No description provided.