@designfever/web-review-kit 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/.env.sample +29 -0
  2. package/README.md +36 -10
  3. package/dist/chunk-AB5B6O77.js +584 -0
  4. package/dist/chunk-AB5B6O77.js.map +1 -0
  5. package/dist/{chunk-TWCSIBMY.js → chunk-RPVLRULC.js} +736 -201
  6. package/dist/chunk-RPVLRULC.js.map +1 -0
  7. package/dist/image.types-BmzkFSPX.d.cts +71 -0
  8. package/dist/image.types-BmzkFSPX.d.ts +71 -0
  9. package/dist/index.cjs +1251 -202
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.d.cts +27 -3
  12. package/dist/index.d.ts +27 -3
  13. package/dist/index.js +50 -3
  14. package/dist/index.js.map +1 -1
  15. package/dist/react-shell.cjs +10135 -4070
  16. package/dist/react-shell.cjs.map +1 -1
  17. package/dist/react-shell.d.cts +37 -4
  18. package/dist/react-shell.d.ts +37 -4
  19. package/dist/react-shell.js +9258 -3707
  20. package/dist/react-shell.js.map +1 -1
  21. package/dist/token-Dt-ZH-YO.d.cts +88 -0
  22. package/dist/token-nJXPPdYX.d.ts +88 -0
  23. package/dist/{types-RvVa5ns-.d.cts → types-DT9Z66mV.d.cts} +14 -1
  24. package/dist/{types-RvVa5ns-.d.ts → types-DT9Z66mV.d.ts} +14 -1
  25. package/dist/vite.cjs +1116 -5
  26. package/dist/vite.cjs.map +1 -1
  27. package/dist/vite.d.cts +45 -1
  28. package/dist/vite.d.ts +45 -1
  29. package/dist/vite.js +800 -5
  30. package/dist/vite.js.map +1 -1
  31. package/docs/README.md +11 -5
  32. package/docs/adapters.md +126 -0
  33. package/docs/adaptor.sample.ts +13 -1
  34. package/docs/architecture.md +6 -1
  35. package/docs/code-review-0.6.0.md +232 -0
  36. package/docs/db-setup.md +4 -2
  37. package/docs/figma-image-mvp-0.7.0.md +327 -0
  38. package/docs/installation.md +44 -8
  39. package/docs/release-notes-0.6.0.md +108 -0
  40. package/docs/release-notes-0.7.0.md +128 -0
  41. package/package.json +6 -2
  42. package/dist/chunk-TWCSIBMY.js.map +0 -1
@@ -0,0 +1,108 @@
1
+ # 릴리즈 노트: 0.6.0
2
+
3
+ 0.5.0 release 이후 변경 사항 정리.
4
+
5
+ 비교 기준: `0.5.0`
6
+ 검토 기준: 0.6.0 dogfood working tree (`Source Tree` metadata, docked QA composer, Lexus mobile/WebKit flow 포함)
7
+
8
+ ## 주요 변경
9
+
10
+ - DOM/area draft composer를 QA panel 하단 dock 방식으로 바꿔 mobile viewport/keyboard resize 영향을 줄였다.
11
+ - Source Tree를 component inspection tool로 확장했다.
12
+ - Source Tree box/text/font/media/class metadata 표시를 추가했다.
13
+ - Source Tree, QA panel, QA status filter 상태를 browser localStorage에 유지한다.
14
+ - QA list ID capsule click-to-copy, toolbar/header spacing, icon button density를 정리했다.
15
+ - Lexus dogfood에서 local package 연결, 540x1080 mobile viewport, LAN preview 흐름을 확인했다.
16
+
17
+ ## 변경
18
+
19
+ ### Docked QA Composer
20
+
21
+ React shell mode에서 DOM/area draft composer는 target 위 floating layer 대신 QA list 하단에 붙는다.
22
+
23
+ - mobile Safari input focus/viewport resize에 덜 흔들리는 구조
24
+ - DOM selection adjustment controls 유지
25
+ - area selection draft도 같은 host 영역 사용
26
+ - draft composer가 열리면 QA panel로 focus 이동
27
+
28
+ Core standalone overlay mode는 기존처럼 target overlay 안에서 composer를 렌더링한다.
29
+
30
+ ### Source Tree Metadata
31
+
32
+ Source Tree row에 inspection metadata를 표시할 수 있게 했다.
33
+
34
+ - box: target iframe 기준 `top / left / width / height`
35
+ - text: PlacerTextInline 등 text node 값
36
+ - font: font size/weight summary
37
+ - media: image/poster/video URL, desktop/mobile asset label
38
+ - class: className tag list
39
+
40
+ Box 값은 render 시점의 iframe element rect를 다시 읽어서 viewport/resolution 변경 후에도 최신 값에 맞춘다.
41
+
42
+ ### Source Tree Controls
43
+
44
+ Source Tree header/filter layout을 QA sheet와 맞췄고, metadata option은 icon-only toggle로 정리했다.
45
+
46
+ - filter input을 최상단에 배치
47
+ - root count와 metadata toggles를 같은 header row에 배치
48
+ - Source Tree를 켤 때 parent tree nodes는 기본 collapsed 상태로 시작
49
+ - row hover 영역은 metadata block까지 포함
50
+ - row의 DOM select action은 QA panel로 전환한 뒤 draft 작성 흐름을 시작
51
+
52
+ ### QA List
53
+
54
+ - `DRAFT-1`, `#102` 같은 QA ID capsule을 누르면 ID가 copy된다.
55
+ - Local QA title case/color와 list/header spacing을 정리했다.
56
+ - QA status filter 선택값을 새로고침 후에도 유지한다.
57
+ - side panel mode와 panel open/close 상태를 새로고침/페이지 이동 후에도 유지한다.
58
+
59
+ ## Persistence
60
+
61
+ 0.6.0에서 shell UI state는 browser-local localStorage에 저장된다.
62
+
63
+ - `df-review-side-panel`
64
+ - `df-review-side-panel-visible`
65
+ - `df-review-source-tree-filter`
66
+ - `df-review-source-tree-meta-visibility`
67
+ - `df-review-qa-status-filter`
68
+
69
+ 이 값들은 QA item data가 아니며, adapter나 backend로 sync되지 않는다.
70
+
71
+ ## Host 적용 메모
72
+
73
+ ### Lexus dogfood integration
74
+
75
+ - `lexus_official_v2026`에서 `@designfever/web-review-kit`을 `file:../df-web-review-kit`로 연결해 검증했다.
76
+ - review dev server는 LAN 접근을 위해 `--host 0.0.0.0`로 띄워 mobile device에서 확인했다.
77
+ - 540x1080 mobile preset에서 DOM QA composer 입력/저장/취소, Source Tree metadata toggles, QA status filter persistence를 확인했다.
78
+
79
+ ## 문서
80
+
81
+ - README에 0.6.0 release note link와 Source Tree metadata/persistence 설명을 추가했다.
82
+ - Installation docs에 docked composer, Source Tree metadata, localStorage persistence 설명을 추가했다.
83
+ - Architecture docs에 React shell composer host boundary를 추가했다.
84
+ - 오래된 internal handoff note를 삭제했다.
85
+
86
+ ## 검증
87
+
88
+ 아래 명령을 확인했다.
89
+
90
+ - `pnpm typecheck`
91
+ - `pnpm typecheck:dev`
92
+ - `pnpm build`
93
+ - `pnpm build:dev`
94
+ - `git diff --check`
95
+ - `npm pack --dry-run --json`
96
+
97
+ 수동 확인:
98
+
99
+ - Lexus dogfood review page DOM QA create/cancel
100
+ - Source Tree filter/meta toggle persistence
101
+ - QA status filter persistence
102
+ - mobile/LAN preview
103
+
104
+ ## 메모
105
+
106
+ - `package.json` version은 `0.6.0`이다.
107
+ - npm publish 전에는 registry login 상태를 확인해야 한다.
108
+ - Lexus target app에서 React SVG prop warning(`fill-rule`, `clip-rule`)이 보일 수 있으나 review-kit package warning은 아니다.
@@ -0,0 +1,128 @@
1
+ # 릴리즈 노트: 0.7.0
2
+
3
+ 0.6.0 release 이후 변경 사항 정리.
4
+
5
+ 비교 기준: `0.6.0`
6
+ 검토 기준: `main` release candidate
7
+
8
+ ## 주요 변경
9
+
10
+ - Figma reference image workflow를 review shell 안으로 옮겼다.
11
+ - Figma image local cache와 Vite plugin helper를 추가했다.
12
+ - QA 작성 필드를 `fields` option으로 확장해 title을 선택적으로 받을 수 있게 했다.
13
+ - QA item에 optional assignee 표시/변경 flow를 추가했다.
14
+ - 느린 remote adapter, 특히 df-sheet 연동에서 list/create/update/delete pending 상태를 UI로 표시한다.
15
+ - deep link item restore와 QA list focus 위치 보정을 개선했다.
16
+ - right rail Figma icon stroke를 다른 rail icon과 분리해 맞췄다.
17
+ - 릴리즈 직전 QA mutation failure feedback과 Figma image target key 보정을 반영했다.
18
+ - Sitemap modal에 페이지 검색 필터를 추가했다.
19
+ - Sitemap tree row를 ASCII prefix 대신 접기/펼치기 가능한 folder explorer 형태로 바꿨다.
20
+ - Sitemap tree depth를 더 빨리 읽을 수 있게 indent 영역에 subtle guide line을 추가했다.
21
+ - Sitemap tree guide line을 folder caret 중앙축에 맞추고 body row divider 대신 hover/active block highlight를 사용하도록 정리했다.
22
+ - Sitemap body row 높이를 줄이고 상태 컬럼을 Todo/Review/Hold count 중심으로 정리했다.
23
+
24
+ ## 변경
25
+
26
+ ### Figma Image Workflow
27
+
28
+ review shell에서 Figma reference image를 등록하고 target page 위에 overlay로 올릴 수 있게 했다.
29
+
30
+ - dev server plugin이 Figma API 호출과 local asset cache를 담당한다.
31
+ - Figma token은 server env의 `FIGMA_TOKEN`을 사용하고 browser bundle로 노출하지 않는다.
32
+ - metadata는 `.df-review/figma-images.json`, asset은 `.df-review/figma-assets/`에 저장한다.
33
+ - review shell에서는 image manager panel과 layer controls를 제공한다.
34
+ - 일반 route에서는 host가 연결한 overlay control만 사용할 수 있게 boundary를 분리했다.
35
+
36
+ ### QA Fields
37
+
38
+ adapter option에 `fields`를 추가했다.
39
+
40
+ - `fields.title`이 true일 때만 QA 작성/수정 화면에 title input을 표시한다.
41
+ - title은 optional field이며 없으면 기존 comment-only 작성 흐름을 유지한다.
42
+ - local fallback에는 assignee sample을 넣지 않고 host adapter가 필요한 field만 선언한다.
43
+
44
+ ### Assignee
45
+
46
+ status와 분리된 optional assignee flow를 추가했다.
47
+
48
+ - `assigneeTitle`로 select label을 host가 지정할 수 있다.
49
+ - `assigneeOptions`로 담당자 목록을 넣는다.
50
+ - `updateAssignee`가 있는 adapter에서만 list item assignee 변경을 허용한다.
51
+ - edit modal에서는 assignee를 수정하지 않는다.
52
+
53
+ ### Remote Adapter Pending UI
54
+
55
+ remote adapter가 느릴 때 빈 상태처럼 보이지 않도록 loading/pending feedback을 추가했다.
56
+
57
+ - QA list 로딩 중 spinner와 loading text를 표시한다.
58
+ - refresh 중에는 refresh button을 disabled + spinner 상태로 둔다.
59
+ - QA 등록/수정/삭제/status/assignee 변경 중에는 item/form 단위 pending 상태를 표시한다.
60
+ - create 실패 시 작성 form에 error message를 표시한다.
61
+
62
+ ### Deep Link Restore
63
+
64
+ remote list가 늦게 도착하는 경우에도 URL의 `item` query를 복원할 수 있게 보정했다.
65
+
66
+ - initial item restore를 list loading 이후 한 번 더 시도한다.
67
+ - focus scroll 후 layout/animation 때문에 위치가 틀어지는 케이스를 다시 보정한다.
68
+ - df-sheet처럼 list 응답이 느린 adapter에서 deep link item focus 실패를 줄였다.
69
+
70
+ ### Release Candidate Fixes
71
+
72
+ - QA status/assignee/submit/delete 실패 시 unhandled rejection으로 남기지 않고 toast로 feedback을 표시한다.
73
+ - QA edit 실패는 toast와 edit modal inline error를 함께 유지한다.
74
+ - Figma image target key가 review shell과 dev overlay에서 query/hash를 포함한 normalized target을 사용하도록 보정했다.
75
+ - Sitemap modal에서 페이지 이름/경로를 검색할 수 있고, 일치하는 하위 page의 상위 folder context를 유지한다.
76
+ - Sitemap folder row는 caret으로 접고 펼칠 수 있으며, 검색 중에는 일치 항목의 상위 folder를 자동으로 펼친다.
77
+ - Sitemap folder depth는 세로 guide line으로 보강해 깊은 경로도 한눈에 구분되게 했다.
78
+ - Sitemap body row divider를 제거하고 hover/active block highlight로 행 구분을 처리한다.
79
+ - Sitemap list는 Total 대신 Todo/Review/Hold state count를 직접 보여준다.
80
+
81
+ ## Host 적용 메모
82
+
83
+ ### Lexus dogfood integration
84
+
85
+ - Lexus host에서 df-sheet adapter로 title/assignee/status update flow를 확인했다.
86
+ - df-sheet list loading 동안 empty state 대신 loading state가 뜨는지 확인했다.
87
+ - direct URL item restore가 list load 이후 active item을 잡는지 확인했다.
88
+ - Lexus 배포 전에는 `link:../df-web-review-kit`를 published package version으로 바꿔야 한다.
89
+
90
+ ### Vite plugin
91
+
92
+ Figma image local cache를 쓰는 host는 Vite config에 review-kit plugin helper를 연결해야 한다.
93
+
94
+ - `reviewFigmaImageStore()`는 dev/local cache endpoint를 제공한다.
95
+ - `FIGMA_TOKEN`은 server env로만 둔다.
96
+ - image format 변환이 필요하면 host가 `sharp` 같은 변환기를 plugin option으로 연결한다.
97
+
98
+ ## 문서
99
+
100
+ - README quick start에 `fields`, `assigneeTitle`, `assigneeOptions`, `updateAssignee` 예시를 추가했다.
101
+ - custom adapter sample에 optional title/assignee field와 update flow를 추가했다.
102
+ - QA adapter와 Figma image store boundary 문서를 추가했다.
103
+ - Figma image MVP 구조 note를 추가했다.
104
+
105
+ ## 검증
106
+
107
+ 아래 명령을 확인했다.
108
+
109
+ - `pnpm run typecheck`
110
+ - `pnpm run typecheck:dev`
111
+ - `pnpm run lint:dead-code`
112
+ - `pnpm run build`
113
+ - `pnpm run build:dev`
114
+ - `npm pack --dry-run --json`
115
+
116
+ 수동 확인:
117
+
118
+ - Lexus dogfood review page에서 df-sheet QA list loading state
119
+ - df-sheet QA create form title field
120
+ - QA list item status/assignee pending state
121
+ - direct URL item restore and focus
122
+ - Figma rail/menu icon stroke
123
+
124
+ ## 메모
125
+
126
+ - `package.json` version은 `0.7.0`이다.
127
+ - npm publish 전에는 registry login 상태와 latest published version을 확인해야 한다.
128
+ - Lexus target app의 React SVG prop warning(`fill-rule`, `clip-rule`)은 review-kit package warning이 아니다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designfever/web-review-kit",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "description": "Designfever web page review overlay toolkit.",
6
6
  "license": "Apache-2.0",
@@ -41,13 +41,15 @@
41
41
  "files": [
42
42
  "dist",
43
43
  "docs",
44
- "README.md"
44
+ "README.md",
45
+ ".env.sample"
45
46
  ],
46
47
  "scripts": {
47
48
  "build": "tsup src/index.ts src/react-shell.tsx src/vite.ts --format esm,cjs --dts --sourcemap --clean --external react --external react-dom --external react/jsx-runtime",
48
49
  "dev": "tsup src/index.ts src/react-shell.tsx src/vite.ts --format esm,cjs --dts --sourcemap --watch --external react --external react-dom --external react/jsx-runtime",
49
50
  "dev:review": "vite --config dev/vite.config.ts",
50
51
  "build:dev": "vite build --config dev/vite.config.ts",
52
+ "lint:dead-code": "knip",
51
53
  "prepare": "pnpm build",
52
54
  "typecheck": "tsc --noEmit",
53
55
  "typecheck:dev": "tsc --noEmit -p tsconfig.dev.json"
@@ -64,8 +66,10 @@
64
66
  },
65
67
  "devDependencies": {
66
68
  "@supabase/supabase-js": "^2.108.2",
69
+ "@types/node": "^26.0.1",
67
70
  "@types/react": "^19.2.17",
68
71
  "@types/react-dom": "^19.2.3",
72
+ "knip": "^6.20.0",
69
73
  "lucide-react": "^1.20.0",
70
74
  "react": "^19.2.7",
71
75
  "react-dom": "^19.2.7",