fix(plugins): accept weak catalog etags
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Task: Diagnose MakeLore Marketplace catalog loading
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260901-plugin-catalog-load-client-7d4a8c21
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260901-plugin-catalog-load-client-7d4a8c21-plugin-catalog-load-client
|
||||
- Worktree: D:\Datas\OthersProjects\makelore-plugin-catalog-load-client-7d4a8c21
|
||||
- Base commit: 5e8b7266c2a8297c9d307b576256886659d44780
|
||||
- Owner: codex-root
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Reproduce the installed MakeLore Marketplace catalog failure at the Renderer → IPC dispatcher → Main Marketplace client boundary.
|
||||
- Verify the installed 1.2.0 artifact contains the current Marketplace composition and compare its parser/network behavior with the live catalog.
|
||||
- If a client defect is confirmed, change only the smallest Marketplace client/Host API/error-projection seam and focused tests.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Preserve the occupied client root worktree and its untracked packaging record; all product work stays in this isolated worktree.
|
||||
- Do not expose Works credentials, read real `.env` files, alter Package Store/Provider/billing state, or publish a package.
|
||||
- Treat local-package inference as forbidden: a failed server catalog must remain fail closed.
|
||||
- The tight loop must reproduce the exact initial catalog failure or prove each boundary healthy before any implementation change.
|
||||
|
||||
## Plan
|
||||
|
||||
1. Verify the live catalog parses through the exact client DTO parser.
|
||||
2. Inspect the running installed Main process, local Host API, logs, embedded bundle, and effective API origin.
|
||||
3. Reproduce the failing boundary with a focused test/probe, rank falsifiable causes, and implement only the confirmed fix.
|
||||
4. Run focused regressions and task documentation gates; do not rebuild/publish unless the fix affects packaged behavior and needs an artifact proof.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Completed. The Marketplace client now accepts both strong and standards-compliant weak composite ETags, while preserving the exact received validator for the next `If-None-Match` request and retaining all generation/pricing identity checks.
|
||||
- Root cause: the production gateway emits `W/"plugins-..."` for the compressed catalog response. The previous strong-only regular expression rejected that otherwise valid HTTP 200 response, and the local Host API surfaced the rejection as `plugin_backend_unavailable`.
|
||||
- No fallback catalog, server mutation, proxy workaround, or billing/Provider behavior was added.
|
||||
|
||||
## Verification
|
||||
|
||||
- Live catalog parsed through `parseMarketplaceCatalogPage`: HTTP 200, total 3, exact IDs `makelore.data-service`, `makelore.game-resource`, `makelore.web-search`.
|
||||
- Installed MakeLore is version 1.2.0 and its `app.asar` contains the Marketplace route, service composition, and production origin `https://square.nianxx.cn`.
|
||||
- Running local Host API is on `127.0.0.1:13210`; an unauthenticated shell probe correctly returns 401 and therefore cannot yet distinguish dispatcher/service from upstream failure.
|
||||
- Installed-session Electron probes returned HTTP 200 and the weak composite ETag; the exact source Marketplace client failed before the fix with `marketplace_response_invalid: invalid composite Marketplace ETag` and returned all three official Plugins after the fix.
|
||||
- TDD regression: the new weak-ETag/304-reuse case failed before the product change and passed after it.
|
||||
- `pnpm exec vitest run tests/unit/coding-plugin-marketplace-client.test.ts tests/unit/plugin-marketplace-routes.test.ts tests/unit/plugin-marketplace-store.test.ts tests/unit/plugin-marketplace-pages.test.tsx`: 4 files, 68 tests passed.
|
||||
- `pnpm test`: 214 files, 1761 tests passed, 2 expected skips; pressure test 1/1 passed.
|
||||
- `pnpm run typecheck`: passed.
|
||||
- `pnpm run lint:check`: 0 errors and 5 unchanged warnings outside this task.
|
||||
- `pnpm run build:vite`: Renderer, Main, Preload, and utility builds passed.
|
||||
- Scoped ESLint and `git diff --check`: passed.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Integrate this task into the client main branch, rebuild the Windows artifact, and install/restart it. The currently installed MakeLore 1.2.0 artifact cannot pick up this source-only fix dynamically.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- None recorded.
|
||||
Reference in New Issue
Block a user