Files
makelore/.project-docs/30-worklog/tasks/20261014-work-entry-restore-91c7e6a2.md
T

6.2 KiB

Task: Persist and restore existing project work without a model

Identity

  • Task ID: 20261014-work-entry-restore-91c7e6a2
  • Mode: Feature
  • Branch: codex/20261014-work-entry-restore-91c7e6a2-work-entry-restore
  • Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20261014-work-entry-restore-91c7e6a2
  • Base commit: 4eb3efa3d1
  • Owner: codex
  • Status: Implementing

Scope

  • Implement the approved project-owned work entry: persist verified address/launch method, reuse healthy services after Main restart, restart recognizable existing Vite/static work without a model, and show specific recovery choices without implicit new conversations. Validate and update the exact current temporary application.

Intent And Constraints

  • User explicitly authorized the preceding product proposal and asks to communicate in product language throughout this chat.
  • Project Context Loaded / Concurrent and Planning Gates Passed: identity/start/status match feature mode, branch/worktree/base 4eb3efa (the exact current Canvas combined runtime). Official project-docs check passed. Read entry/planning/memory indexes, own task, positioning, integrated state, decisions, architecture/module/data-flow, domain rules, success criteria and evidence/reflection/commitment indexes. All 60 peer task records were read-only reviewed for Scope/Intent/Promotion; diagnosis/empty-work/Canvas/trial/sidebar peers have no unresolved semantic conflict. Primary and other worktrees remain untouched.
  • Project goal: project-scoped creative client; Main owns file/runtime/browser/network authority. Preserve .makelore/project.json, login, existing projects/conversations/drafts, Canvas/Agents and combined Renderer features.
  • Active task scope: preview persistence, deterministic existing Vite/static launch, explicit helper fallback, product-facing failure recovery, tests and reversible exact-baseline trial update. Source modules: work-preview, agent-browser route, a project work-entry store/launcher, use-work-preview/recovery contracts.
  • Relevant decision: truly empty projects stay local and never create conversations or send model requests. Known page restore must remain project-bound, loopback-only, bounded, validated and serialized. Unknown launch methods use explicit assistant help rather than arbitrary command execution. No remote publish/deploy/merge/push or unrelated cleanup.
  • Unknown: existing projects have no stored entry until this update discovers or confirms their first page; infer only bounded unambiguous local Vite/static candidates. Exact runtime source commit is newer than main, so this isolated implementation starts from that runtime commit.

Outcome

  • Implemented project work-entry persistence, deterministic Vite/static startup, content/project matching before address reuse, bounded legacy browser-receipt recovery without Pi startup, and explicit assistant opt-in with domain-specific error copy.
  • Preserve manual opens across slow health probes/local startup; serialize project checks and metadata writes; retain successful newly started server addresses when project selection changes; stop only unused app-owned children superseded by another server.
  • Imported only currently activated product deltas from sidebar sources 8cd7b597/14fcea389/cca23df7 and the later active Renderer d0451e9a, preserving footer placement, WeChat status copy and default expanded module sidebar. A three-line ModuleSelection edit appeared concurrently in this owned checkout; its bytes were independently confirmed identical to the current activated d0451e9a source before inclusion, and were never reset/stashed or guessed. Peer source records stay read-only. This is preservation of the latest trial baseline, not an additional sidebar redesign.
  • Exact production build and isolated real Electron full-restart/stopped-service/native-render acceptance passed. Current temporary-app activation and actual Alice acceptance pending.

Verification

  • 134 focused tests in 6 files passed after root integration; includes real Vite/static launch, resolved base configuration, fresh store reload, imported-folder metadata creation, content/port ownership, explicit helper selection, project switching and slow manual supersession.
  • Standard typecheck, changed-file ESLint, git diff --check passed. Independent review reproduced races and a Vite base issue before correction; final root tests cover those corrections.
  • Final exact production build from product commit 0f26b6d passed. Isolated Electron acceptance 1/1 passed: real Main quit/relaunch, persisted URL reuse, controlled original service stop, real app-owned static restart and native HTML rendering, with unchanged conversation list and no model session. Fixture guest account uses actual native presentation route rather than fabricating cloud login; actual guarded Code UI is verified on the existing trial below.
  • Full normal unit suite: 297 files passed, 3333 tests passed/3 skipped; 8 failures in 3 unrelated existing setup/cloud-knowledge/design-image-preview files. Exact previous-renderer baseline 14fcea389 reproduced all same 8 failures; none was introduced by this task. Separate pressure test passed 1/1 because the normal script stops at failed first phase.
  • Early isolated Electron attempts exposed imported metadata creation and fixture activity/viewport setup gaps, which were corrected. No real account, model, game source or cloud state was mutated by tests.

Follow-ups

  • Activate and verify the exact tested candidate in the current temporary app, with fresh predecessor pointer/link and saved/idle checks.

Promotion Candidates

  • Target: integrated Code work-preview architecture/domain and current-state at serialized integration. Proposal: project-owned persisted confirmed entry and constrained launch recipes; healthy local restore/start independent of selected model, no implicit conversation, explicit helper fallback. Evidence: user-approved product proposal and this implementation/tests. Future impact: app quit/update restart and stopped local services restore existing works without model dependency. Semantic conflicts: supersedes old automatic model action on missing URL; preserves the accepted empty-project local state. Human confirmation: already supplied by user; no additional product approval required.