docs(marketplace): record MLM-04 integration

This commit is contained in:
2026-08-28 18:45:30 +08:00
parent 97c9ad1aad
commit 2c4f766b3b
2 changed files with 21 additions and 203 deletions

View File

@@ -1,203 +0,0 @@
# Task: Marketplace Release A MLM-04 Renderer
## Identity
- Task ID: 20260828-marketplace-mlm04-renderer-e4c7a2
- Mode: Feature
- Branch: codex/20260828-marketplace-mlm04-renderer-e4c7a2-marketplace-mlm04-renderer
- Worktree: D:\Datas\OthersProjects\makelore-plugin-marketplace-mlm04-renderer-e4c7a2
- Base commit: 8b6824a8ba08d8df98fc75af17e170bf3d8ed630
- Owner: marketplace-mlm04-renderer
- Status: Ready for integration
## Scope
- Implement Marketplace Release A ticket MLM-04 from exact integrated MLM-02/03
frontier `8b6824a8ba08d8df98fc75af17e170bf3d8ed630`.
- Own only new `src/pages/PluginMarketplace/**`, `src/pages/MyPlugins/**`,
`src/lib/plugin-marketplace.ts`, `src/stores/plugin-marketplace.ts`, joined
installation/effective-state changes in `src/pages/ProjectPlugins/**` and
`src/stores/coding-plugins.ts`, global Renderer routing/navigation seams, and
focused Renderer/API/store/component/E2E tests.
- Do not modify Main, manifest/parser, registry, Pi, Package Store, server,
Operations, Release B, or unrelated Renderer behavior.
- Coordinator ownership ruling transferred one minimal Main seam to this task:
`electron/api/coding-product-services.ts` plus its focused service test and, only
if needed for closed HTTP-shape verification, the existing Marketplace route
test. Route source, composition, and Package Store source remain out of scope.
- A second coordinator ruling within the same transferred service seam requires
`CodingPluginProjectProjection.unknownPluginIds`: stable sorted selected IDs absent
from real bundled/installed definitions. Renderer may display these as retained
unavailable configuration but must not invent package metadata or chain any action.
This ruling explicitly includes the corresponding Renderer parser
`src/lib/coding-plugins.ts` and focused composition/route/parser integration tests.
- A third narrow transfer covers `electron/coding-plugins/project-service.ts` and
its focused test only: disabling an unknown ID is allowed solely when that exact ID
already exists in the current selection. Unknown enable and unselected unknown
disable remain rejected; other IDs and legacy behavior are unchanged.
## Intent And Constraints
- Keep `免费获取`, `下载`/`更新`, `启用到项目`, and `分配给伙伴` visible and
independent. Every action calls only its corresponding MLM-03 Main route and
never supplies account, path, Release, admission, or other authority.
- Cover catalog/search/category/detail, Library/install/update/remove/reacquire,
system-included/free and included/token-point/mixed copy, stable status/failure
states, retained unknown/removed project IDs, and unchanged typed Data Service
settings.
- Preserve account/project A→B→A intent and per-scope mutation epochs so stale
reads or mutations cannot commit after navigation, logout, or a newer action.
- Stay inside the existing light design system. Apply the interface-quality skill
only where the owned UI truly needs it: minimum 40px targets, explicit
transition properties, balanced headings, pretty body copy, tabular dynamic
numbers, and no first-load decorative animation or new dependency.
- The canonical integrated memory predates Marketplace; the accepted design,
implementation spec, ticket graph, exact frontier, and MLM-02/03 task outcomes
are the current authority.
## Project Context Loaded
Task context:
- Task ID: `20260828-marketplace-mlm04-renderer-e4c7a2`
- Mode: Feature
- Branch: `codex/20260828-marketplace-mlm04-renderer-e4c7a2-marketplace-mlm04-renderer`
- Worktree: `D:\Datas\OthersProjects\makelore-plugin-marketplace-mlm04-renderer-e4c7a2`
- Base commit: `8b6824a8ba08d8df98fc75af17e170bf3d8ed630`
- Other active local tasks: Marketplace coordinator plus completed MLM-02/03
implementers and the prior Plugin P0 coordinator; unrelated registry owners are
outside this exact branch and ownership set.
- Overlap or semantic-conflict assessment: no unresolved conflict. MLM-02 and
MLM-03 are integrated at this exact frontier; their Main routes and closed DTOs
are read-only inputs. The coordinator and user root remain untouched.
Read:
- mandatory `implement-spec`, `maintain-project-docs`, and
`make-interfaces-feel-better` skills, including typography, surfaces,
animations, and performance references
- repository `AGENTS.md`, project-memory startup set, architecture/domain/evidence/
reflection/commitment/stale indexes, active and relevant peer task records
- Marketplace implementation specification sections 11–13, ticket graph MLM-04,
and accepted design Renderer/offline/failure/acceptance sections
- integrated local Marketplace route/service DTOs and existing project Plugin
Center store/page/routing/navigation seams
Relevant understanding:
- Electron Main owns authentication, Marketplace access, package trust, installation,
account binding, Release selection, and admissions. Renderer consumes bounded
projections through fixed local Host API paths.
- Marketplace Release A separates account Library, device installation, project
selection, Agent assignment, runtime authorization, and billing. Neither server
publication nor any UI action may chain these states implicitly.
- Project plugin configuration remains schema 1 and retains unknown/removed IDs.
Data Service remains bundled, system-included, typed, and included.
- First catalog failure is unknown/error; a prior trusted catalog may be stale.
Retired differs from suspended, and bad/yanked/incompatible/signature states must
remain visible without inventing a fallback listing.
- Likely files are exactly the owned new pages/lib/store, ProjectPlugins/coding store
join, App/layout/sidebar/module routing, and focused tests/E2E.
- Unknowns: the Main public catalog/Library projection does not itself join all
project state. The initial MLM-03 local Library response also lacked device
installation state; the coordinator rejected a session-observed approximation
and authorized the narrow Main-derived joined Library projection above.
Gate result:
- Concurrent Task Gate: Passed. Project-doc check passed; task-context ownership
exactly matches task ID, owner `marketplace-mlm04-renderer`, feature mode,
worktree, branch, and base.
- Planning Gate: Passed. Required memory/spec/design/peer scopes and exact integrated
contracts were read; no unresolved semantic or ownership conflict blocks work.
## Implementation Plan
1. Add failing focused tests for the safe Renderer API wrapper and account-scoped
catalog/Library/install store, including route/body exactness, no hidden chaining,
A→B→A intent, logout clearing, and mutation epochs.
2. Implement the closed Renderer DTO/client and minimal deep store over MLM-03 Main
routes, then make those tests pass without adding account/path/release/admission
authority.
3. Add failing component/navigation tests for Marketplace, My Plugins, Project
Plugins joins, the four explicit actions, state/copy/accessibility/loading/error
matrices, and retained unknown/removed IDs; implement the pages and routing.
4. Add/adjust the targeted Marketplace Electron E2E, run focused and adjacent tests,
typecheck, lint, build, and target E2E, then complete drift/task gates and create
one source commit whose sole parent is the exact base.
## Outcome
- Added the global Plugin Center catalog/search/category/detail experience and an
account-scoped My Plugins Library for acquire, download, update, remove,
reacquire, and uninstall. Acquisition, device installation, project enablement,
and partner assignment remain four visible independent actions.
- Added a closed Renderer client and store over fixed MLM-03 Main routes. The store
clears account state on logout/switch, rejects stale A→B→A reads, and uses
mutation epochs so an older mutation cannot overwrite a newer projection.
- Joined Main-owned Library snapshots with safe current device installation
projections. Fresh-process reads and acquire/remove return the same atomic shape;
installation projection contains only status/plugin/release/version and is
filtered to the active account Library.
- Preserved selected unknown project plugin IDs as explicit “配置保留、当前不可用”
rows without fabricated metadata or implicit actions. A selected unknown ID may
be explicitly disabled; unknown enable and unselected unknown disable remain
rejected. Existing Data Service settings and included billing behavior are
unchanged.
- Added global lazy routes/sidebar entries and kept Plugin Center/My Plugins outside
provider-initialization gating while retaining programming-module access rules.
- Covered system-included/free acquisition and included/token-point/mixed billing
copy, stale/empty/error states, retired/suspended/unavailable listings, absent or
incompatible releases, signature/package failures, and removed/uninstalled joins.
- Coordinator ownership transfers used during implementation:
1. `electron/api/coding-product-services.ts` joined Library projection and its
focused service/route tests.
2. `unknownPluginIds` in that service plus the corresponding Renderer parser
`src/lib/coding-plugins.ts` and composition/route/parser integration tests.
3. `electron/coding-plugins/project-service.ts` selected-unknown disable seam and
its focused test.
No further Main, route source, composition, Package Store, registry, Pi, server,
Operations, or Release B ownership was required.
### Interface skill impact
#### Interaction and motion
| Before | After |
| --- | --- |
| New Marketplace actions had no owned UI implementation | Added at least 40px hit targets (`min-h-10`) with keyboard-visible focus rings in Plugin Center, My Plugins, Project Plugins, and global navigation |
| New Marketplace surfaces had no transition contract | Added only explicit `transition-colors` or `transition-[box-shadow,background-color]`; no `transition-all`, new animation dependency, or first-load decorative animation |
#### Typography and dynamic data
| Before | After |
| --- | --- |
| New Marketplace heading/body copy had no wrapping behavior | Added `text-balance` to headings and `text-pretty` to explanatory/error copy so narrow layouts wrap intentionally |
| New catalog counts, versions, and point values used default numeral spacing | Added `tabular-nums` where dynamic Marketplace numbers are compared or updated |
#### Surfaces
| Before | After |
| --- | --- |
| New Marketplace cards and status states had no visual hierarchy | Reused existing `background`, `surface-subtle`, `brand-soft`, border, shadow, warning, and destructive tokens for catalog, detail, Library, loading, empty, and error surfaces; no redesign or new design token was introduced |
## Verification
- Focused/adjacent Vitest: 12 files, 73 tests passed (`plugin-marketplace` client,
store, pages; coding product service; project service; composition/routes/parsers;
Project Plugins page; MainLayout/module gate).
- `corepack pnpm run typecheck`: passed.
- `corepack pnpm run lint:check`: passed with 0 errors; 5 pre-existing warnings in
`src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx` remain unchanged.
- `corepack pnpm run build:vite`: passed for Renderer, Electron Main/preload, and
release utility worker. Existing dynamic-import/chunk-size warnings remain.
- Target Electron Playwright E2E: 2 passed (`plugin-marketplace.spec.ts` and
`project-plugins.spec.ts`). The first run exposed and then fixed an assertion that
included unrelated startup requests and a closed-DTO fixture missing `tool: null`.
- `corepack pnpm run test:electron:windows`: 2 files, 6 tests passed.
## Follow-ups
- No implementation or ownership blocker remains. Integration must preserve the
exact MLM-02/03 frontier contracts and the three coordinator-approved seam
transfers listed above.
## Promotion Candidates
- None recorded.

View File

@@ -97,6 +97,15 @@
`05917a789a9b9f30ed9500f4cd1210ec72119646`. Coordinator-transferred `05917a789a9b9f30ed9500f4cd1210ec72119646`. Coordinator-transferred
Package Store ownership was limited to removing unconditional latest-Release Package Store ownership was limited to removing unconditional latest-Release
protection while preserving account-snapshot and active-worker protection. protection while preserving account-snapshot and active-worker protection.
- MLM-04 task `20260828-marketplace-mlm04-renderer-e4c7a2` completed from exact
frontier `8b6824a8ba08d8df98fc75af17e170bf3d8ed630` as source commit
`d61221d34da49f97dd4a9aeb1081fb3544cc6c86` and was integrated without
conflict as coordinator product commit
`97c9ad1aad2638609168a8e1901b61b5ba671def`. Three coordinator-approved
seam transfers remained minimal: joined safe Library/installation projection,
explicit project `unknownPluginIds`, and disable-only removal for an already
selected unknown ID. No Main route, registry, Pi, or Package Store source was
otherwise expanded.
## Outcome ## Outcome
@@ -127,6 +136,12 @@
Skill assignments remain in project/Agent configuration but do not enter runtime Skill assignments remain in project/Agent configuration but do not enter runtime
projections, and automatically become effective again when the trusted package projections, and automatically become effective again when the trusted package
source returns. source returns.
- MLM-04 delivered global Marketplace and My Plugins pages plus the joined Project
Plugins state. The four user actions remain distinct and call only their matching
Main route; fresh installation/account projection, stale/error states, retained
unknown project IDs, typed Data Service settings, account/project generation, and
mutation epochs are bounded in Renderer state. No account, filesystem path,
Release Admission, token, or signed URL authority enters Renderer.
## Verification ## Verification
@@ -161,6 +176,12 @@
gates, and task-context completion. The Windows installer embedded exact source gates, and task-context completion. The Windows installer embedded exact source
HEAD `7ad6b8c...`; production signing, real Provider, macOS, and native Linux HEAD `7ad6b8c...`; production signing, real Provider, macOS, and native Linux
activation evidence remain explicit external/platform holds rather than passes. activation evidence remain explicit external/platform holds rather than passes.
- MLM-04 verification passed 73 focused/adjacent tests across 12 files, typecheck,
lint with zero errors and five unchanged warnings, Vite build, two Marketplace/
Project Plugins Electron Playwright cases, six Windows Electron Vitest cases, and
documentation drift. Its task record also captured the actual interface-polish
Before/After changes: bounded hit targets, explicit transitions, wrapping, and
tabular dynamic values within the existing design system.
## Follow-ups ## Follow-ups