Files
makelore/.project-docs/30-worklog/tasks/20260906-move-plugins-project-settings-7c91a4e2.md

5.5 KiB

Task: Move plugins into project settings

Identity

  • Task ID: 20260906-move-plugins-project-settings-7c91a4e2
  • Mode: Feature
  • Branch: codex/20260906-move-plugins-project-settings-7c91a4e2-move-plugins-project-settings
  • Worktree: /Users/inmanx/Documents/makelore-task-move-plugins-project-settings-7c91a4e2
  • Base commit: f8eee430f4
  • Owner: codex
  • Status: Ready for integration

Scope

  • Move the single user-visible Plugin workspace from the Code sidebar directly into the same Project Configuration page used to configure Agents, Skills, models, and knowledge.
  • Make /project-config/plugins the canonical Plugin URL while retaining deterministic compatibility redirects from /plugins, /plugin-marketplace, /my-plugins, and /project-plugins.
  • Update focused unit and Electron E2E coverage, the packaged-product marker, and README current-state wording for the navigation change.

Intent And Constraints

  • Preserve the existing unified Plugin workspace and its projections of Marketplace, Account Library, official-device state, Device Packages, current project state, and retained IDs; do not restore the retired duplicate Plugin Services sheet.
  • Keep acquisition, device installation, project enablement, Agent Skill assignment, runtime authorization, and billing as separate lifecycles.
  • Preserve Main-owned Host API, authentication, package verification, and runtime authority. Renderer navigation must not introduce direct IPC or local-runtime HTTP access.
  • Keep Project Configuration and its nested Plugin route available before Code Provider initialization, including the no-active-project state.
  • Render the nested route as a same-page Project Configuration drawer, not as a replacement standalone Plugin page.
  • Preserve legacy deep-link query/state and authenticated return paths.
  • Keep the single Makelore light visual system and Chinese product copy.

Outcome

  • Added a 插件 ResourceCard alongside models, Skills, and knowledge in Project Configuration, retained access in the no-active-project state, and removed the standalone Code sidebar Plugin entry.
  • Changed /project-config/plugins to render the Project Configuration page with its wide Plugin drawer open. The Agent/Skill project page remains mounted behind the drawer; closing it returns to the same page. Query/state-preserving /plugins compatibility and existing filtered legacy redirects remain intact.
  • Reused the unified Plugin controller and view inside the drawer without restoring the retired duplicate Plugin Services implementation.
  • Kept the unified Plugin controller, data sources, mutations, authentication, and lifecycle semantics unchanged.
  • Updated initialization gates, login return path, README, packaged Marketplace artifact assertion, focused unit tests, and Electron E2E journeys.

Verification

  • Focused navigation, layout, embedded Plugin, controller, login, and artifact verification — 6 files, 62 tests passed; the embedded-view regression failed before implementation and passed afterward.
  • corepack pnpm run typecheck — passed.
  • Scoped ESLint across all changed source and test files — passed with no output.
  • corepack pnpm run build:vite — Renderer, Main, Preload, and utility builds passed; only existing Browserslist, mixed-import, and chunk-size warnings remained.
  • node ./node_modules/@playwright/test/cli.js test tests/e2e/project-plugins.spec.ts tests/e2e/plugin-marketplace.spec.ts — 4/4 passed, including assertions that the Project Configuration page remains mounted behind the Plugin drawer.
  • corepack pnpm test — 221 regular files (1861 passed, 3 skipped) and the pressure suite (1 passed).
  • corepack pnpm run lint:check — passed with 0 errors and 5 pre-existing warnings.
  • git diff --check — passed.

Follow-ups

  • Integration should reconcile the navigation wording in canonical project memory and review overlap with planning task 20260906-remove-project-gate-7c31 before merging. No product-semantic conflict was found in the current peer-task audit.

Promotion Candidates

  • Target: .project-docs/30-worklog/current-state.md, .project-docs/20-architecture/system-overview.md, and .project-docs/40-domain/business-rules.md.
  • Proposal: record the Agent/Skill Project Configuration page as the visible owner of the single unified Plugin workspace. Its 插件 card opens a same-page wide drawer; /project-config/plugins is the canonical deep link for that state, and old public URLs remain deterministic compatibility redirects. This rehomes the reviewed unified workspace and does not restore the superseded duplicate Plugin Services implementation.
  • Evidence: explicit user direction in this task, focused unit coverage, 4/4 Electron E2E, full unit/typecheck/lint/build verification, and the task-owned proposal 20260906-move-plugins-project-settings-7c91a4e2__project-settings-plugin-navigation.md.
  • Future impact: new Plugin navigation must originate in Project Configuration, while Plugin lifecycle boundaries, Web Search exclusion, and Main-owned authority remain unchanged.
  • Semantic conflict: this supersedes canonical statements that the Code sidebar owns the only Plugin entry and /plugins is canonical; it does not conflict with ADR-008 or the Plugin lifecycle boundaries.
  • Human confirmation: already supplied and clarified by the user: Plugins belong on the same project page used to configure Agents and Skills, not on a separate page. No additional product-direction approval is required during integration.