docs(marketplace): record MLM-04 integration
This commit is contained in:
@@ -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.
|
||||
@@ -97,6 +97,15 @@
|
||||
`05917a789a9b9f30ed9500f4cd1210ec72119646`. Coordinator-transferred
|
||||
Package Store ownership was limited to removing unconditional latest-Release
|
||||
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
|
||||
|
||||
@@ -127,6 +136,12 @@
|
||||
Skill assignments remain in project/Agent configuration but do not enter runtime
|
||||
projections, and automatically become effective again when the trusted package
|
||||
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
|
||||
|
||||
@@ -161,6 +176,12 @@
|
||||
gates, and task-context completion. The Windows installer embedded exact source
|
||||
HEAD `7ad6b8c...`; production signing, real Provider, macOS, and native Linux
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user