feat: add project plugin center
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# Task: ML-05 Project Plugin Center
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260827-plugin-ml05-plugin-center-6c1e9a42
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260827-plugin-ml05-plugin-center-6c1e9a42-plugin-ml05-plugin-center
|
||||
- Worktree: D:\Datas\OthersProjects\makelore-plugin-ml05-plugin-center-6c1e9a42
|
||||
- Base commit: b6d9e6156fdc98aa792045692cc25fdce993a531
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Add the project-scoped `/project-plugins` route and sidebar entry without changing Main authority or ML-01–04 source.
|
||||
- Add the strict Renderer coding-plugin parser/client, shared store, list/detail Plugin Center, and code-owned Data Service settings surface.
|
||||
- Cover selection/configuration separation, effective states, capability/permission/agent assignment, billing copy, retained disable semantics, and typed destructive actions.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Main's `CodingPluginProject` projection remains the authority for effective state, billing, backend availability, and project identity.
|
||||
- Enabling changes plugin selection only; Data Service configuration is always an explicit subsequent action through the existing typed routes.
|
||||
- No Renderer credential, policy-join, or plugin-host authority was added. No dependency or new animation was introduced.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Implemented bounded parsing and typed Host API clients for plugin projection, selection, and Data Service inspection/configuration/removal.
|
||||
- Implemented a coalescing store that prevents duplicate pending work, retains same-project data on degraded refresh, and never shows an old projection after switching projects.
|
||||
- Implemented accessible available/enabled/disabled, identity/auth/configure/ready/degraded states; capability, permission, partner assignment, backend, version, billing, usage/limit, and shared-wallet language; and retained-data disable confirmation.
|
||||
- Implemented typed confirmations for destructive actions using the real collection or project target. Degraded Data Service keeps the last usage structure visible but disables destructive controls.
|
||||
- Added the project route and project-scoped navigation while preserving module and initialization gates.
|
||||
|
||||
### UI skill influence
|
||||
|
||||
| Before | After |
|
||||
| --- | --- |
|
||||
| No Plugin Center surface | Existing surface/ring/button primitives reused with concentric radii and no new page-load animation |
|
||||
| Plugin state could rely on color/icon alone | Every state has visible text, semantic status/alert messaging, keyboard focus, and disabled semantics |
|
||||
| Dynamic usage values had no presentation contract | Counts and byte usage use `tabular-nums`; headings/descriptions use `text-balance`/`text-pretty`; controls retain at least 40px hit areas |
|
||||
|
||||
## Verification
|
||||
|
||||
- Red phase: focused unit tests initially failed on missing owned modules; later capability/degraded and cross-project Data Service isolation assertions failed until the corresponding behavior was implemented.
|
||||
- `pnpm exec vitest run tests/unit/coding-plugins-client.test.ts tests/unit/coding-plugins-store.test.ts tests/unit/project-plugins-page.test.tsx tests/unit/data-service-plugin-settings.test.tsx tests/unit/main-layout-module-gate.test.tsx tests/unit/main-layout-sidebar-peek.test.tsx tests/unit/sidebar-session-buckets.test.ts tests/unit/coding-plugin-composition.test.ts tests/unit/coding-plugins-routes.test.ts tests/unit/data-service-client.test.ts tests/unit/data-service-routes.test.ts tests/unit/data-service-server-registration.test.ts tests/unit/auth-store.test.ts --maxWorkers=1` — 12 files, 72 tests passed.
|
||||
- `pnpm exec playwright test tests/e2e/project-plugins.spec.ts --config=playwright.config.ts` — 1 test passed.
|
||||
- `pnpm typecheck` — passed.
|
||||
- `pnpm lint:check` — 0 errors; it continues to report the 5 pre-existing `Home`/`Makelore` warnings.
|
||||
- `pnpm build:vite` — passed; existing Vite dynamic-import and chunk-size warnings remain.
|
||||
- `git diff --check` — passed.
|
||||
- Delivery boundary: exact base `b6d9e6156fdc98aa792045692cc25fdce993a531`; one task commit directly on that base (exact immutable commit ID is recorded in the handoff because a commit cannot contain its own hash); worktree clean after commit.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Full cross-platform packaged release validation remains coordinator-level work; the target Electron E2E ran successfully on Windows in this worktree.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- None recorded.
|
||||
Reference in New Issue
Block a user