docs: record renderContent, leafer renderer, and crop tool planning notes

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-16 20:46:37 +08:00
parent b363dcf888
commit 7a6f4a2727
3 changed files with 47 additions and 0 deletions
+14
View File
@@ -205,6 +205,14 @@ Phase 32
- [ ] Add focused regression/performance coverage and run full frontend/backend/build/browser verification
- **Status:** in_progress
### Phase 33: Workspace Crop Drag Selection
- [x] Enter a crosshair preselection state after activating the workspace Crop tool
- [x] Select a connected color-bounded region on click, capped to the visible image area
- [x] Map a held left-button drag into normalized image coordinates across pan and zoom
- [x] Preserve the existing crop editor, vector semantics, and source-preservation behavior
- [x] Add focused regression coverage and run frontend verification
- **Status:** complete
## Invariants
- Brand Kits are owned and queried only through the authenticated user ID from request context.
- A project may reference zero or one Brand Kit owned by the same user.
@@ -255,6 +263,12 @@ Phase 32
| Next 16 Turbopack emitted the module worker as raw `.ts` instead of executable bundled JavaScript | 1 | Run Next dev/build through its supported webpack mode, which handles `new Worker(new URL(...))`; retain Vite's native worker bundling. |
| Used nonexistent Playwright CLI command `network` | 1 | Use the CLI's documented `requests` and `response-body` commands for network inspection. |
| First Vite DXF upload triggered dependency pre-bundling and a development-page reload | 1 | Retry after Vite finishes one-time dependency optimization; production worker output is already bundled. |
| Node's strip-only TypeScript test loader rejected a constructor parameter property in the Leafer adapter | 1 | Replace the parameter property with an explicit class field so production TypeScript and the repository's Node test runner share supported syntax. |
| The Leafer descriptor test could not resolve frontend `@/` runtime aliases under Node's native loader | 1 | Keep the descriptor dependency-free at runtime with local source/adjustment checks; type-only aliases remain erased and production bundling is unchanged. |
| DOM `window.setTimeout` returned `number` but the viewport timer ref inferred Node's `Timeout` type | 1 | Declare the browser-owned timer ref as `number | null`, matching the existing browser timeout usage. |
| Combined render-preview cleanup/thumbnail patch assumed `mainCanvasPreviewImage` lived in `project_thumbnail.go` | 1 | Locate the function in `design_service.go` and split the patch across exact current file contexts. |
| The first crop preselection integration patch used one stale keyboard-handler context and failed atomically | 1 | Split the integration into small patches against the exact current source; no production file received a partial edit. |
| A diagnostic `rg` command contained an unmatched quote around a template-literal search | 1 | Use separate fixed-string searches without shell-sensitive backticks. |
| Real upstream DXF fixture parsed to an empty model space in `@node-projects/acad-ts` | 1 | Validate the library's document assembly in Node, then replace the DXF path or reader entirely if real fixtures remain empty. |
| Directory-wide listing of the WeChat file folder stalled on container-managed storage | 1 | Use the exact user-provided path directly; metadata access confirms the file is readable. |
| The exact R12 DXF crashed while serializing the first inherited-color POINT | 1 | Resolve non-renderable ByLayer/ByBlock colors through the entity and layer before calling the third-party SVG writer; lock the case with a minimal R12 regression test. |