Files
shopify-ai-backup/opencode/specs/16-terminal-cache-key-clarity.md
2026-02-07 20:54:46 +00:00

2.0 KiB

Terminal cache scope

Clarify workspace-only terminal cache semantics


Summary

packages/app/src/context/terminal.tsx accepts (dir, session) but currently keys cache entries as ${dir}:${WORKSPACE_KEY}. The behavior is workspace-scoped, but the API shape suggests session-scoped caching. This spec aligns naming and implementation to avoid confusion and future bugs.


Goals

  • Make terminal cache scope explicit (workspace-scoped)
  • Remove misleading unused session-keying surface
  • Preserve existing runtime behavior

Non-goals

  • Changing terminal persistence behavior
  • Moving terminals to per-session isolation
  • UI changes to terminal tabs

Parallel execution contract

This spec owns:

  • packages/app/src/context/terminal.tsx

This spec should not modify:

  • packages/app/src/pages/session.tsx
  • packages/app/src/components/session/session-sortable-terminal-tab.tsx

Implementation plan

  1. Rename internals for clarity
  • Update internal function names/variables from session-oriented to workspace-oriented where applicable.
  1. Remove unused session cache-key parametering
  • Simplify load/factory signatures so keying intent is explicit.
  • Keep key format workspace-only by directory.
  1. Add inline documentation
  • Add short comment near cache key creation clarifying why terminals are shared across sessions in the same workspace.
  1. Keep behavior stable
  • Ensure active terminal, tab order, clone/new/close behavior remain unchanged.

Acceptance criteria

  • No unused session-derived cache key logic remains.
  • Code communicates workspace-scoped terminal lifecycle clearly.
  • No functional changes to terminal operations.

Validation plan

  • Manual:
    • Create multiple terminals, navigate between sessions in same workspace, confirm state continuity.
    • Switch workspace directory, confirm separate terminal state.

Risks and mitigations

  • Risk: accidental behavior change to session-scoped terminals.
    • Mitigation: keep cache key unchanged; refactor naming/signatures only.