desktop-team-doc 0.1.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 (151) hide show
  1. package/README.md +89 -0
  2. package/content/docs/README.md +227 -0
  3. package/content/docs/index.md +352 -0
  4. package/content/docs/instructions/coding-conventions/.clang-format +65 -0
  5. package/content/docs/instructions/coding-conventions/cpp.md +132 -0
  6. package/content/docs/instructions/coding-conventions/frontend.md +612 -0
  7. package/content/docs/instructions/coding-conventions/team-wide.md +176 -0
  8. package/content/docs/instructions/workflows/assets/jira-1.png +0 -0
  9. package/content/docs/instructions/workflows/assets/jira-comment.png +0 -0
  10. package/content/docs/instructions/workflows/assets/jira-release-note.png +0 -0
  11. package/content/docs/instructions/workflows/assets/jira-tag.png +0 -0
  12. package/content/docs/instructions/workflows/code-review.md +451 -0
  13. package/content/docs/instructions/workflows/git-branch-convention.md +246 -0
  14. package/content/docs/instructions/workflows/git-commit.md +95 -0
  15. package/content/docs/instructions/workflows/jira-process.md +173 -0
  16. package/content/docs/instructions/workflows/jira-ticket-guide.md +105 -0
  17. package/content/docs/instructions/workflows/pull-request-generation.md +319 -0
  18. package/content/docs/instructions/workflows/scrum-process.md +104 -0
  19. package/content/docs/instructions/workflows/survey-project-setup.md +76 -0
  20. package/content/docs/knowledge/architecture/README.md +11 -0
  21. package/content/docs/knowledge/architecture/audio-plugin-architecture.md +213 -0
  22. package/content/docs/knowledge/architecture/cross-platform-design.md +176 -0
  23. package/content/docs/knowledge/architecture/frontend-native-bridge.md +193 -0
  24. package/content/docs/knowledge/architecture/native-command.md +189 -0
  25. package/content/docs/knowledge/architecture/state-management-architecture.md +105 -0
  26. package/content/docs/knowledge/component-library/ControlComponent/README.md +281 -0
  27. package/content/docs/knowledge/component-library/ControlComponent/accessibility/accessibility-implementation.md +503 -0
  28. package/content/docs/knowledge/component-library/ControlComponent/common-mechanisms.md +278 -0
  29. package/content/docs/knowledge/component-library/ControlComponent/core/error-handling.md +451 -0
  30. package/content/docs/knowledge/component-library/ControlComponent/core/native-interface.md +515 -0
  31. package/content/docs/knowledge/component-library/ControlComponent/core/state-management.md +509 -0
  32. package/content/docs/knowledge/component-library/ControlComponent/creating-new-controls.md +654 -0
  33. package/content/docs/knowledge/component-library/ControlComponent/design/api-design-reference.md +1142 -0
  34. package/content/docs/knowledge/component-library/ControlComponent/design/design-principles.md +336 -0
  35. package/content/docs/knowledge/component-library/ControlComponent/design/styling-architecture.md +595 -0
  36. package/content/docs/knowledge/component-library/ControlComponent/design/visual-feedback.md +456 -0
  37. package/content/docs/knowledge/component-library/ControlComponent/development-environment.md +213 -0
  38. package/content/docs/knowledge/component-library/ControlComponent/interaction/gesture-algorithms.md +705 -0
  39. package/content/docs/knowledge/component-library/ControlComponent/interaction/touch-support.md +525 -0
  40. package/content/docs/knowledge/component-library/ControlComponent/interaction/value-processing-patterns.md +801 -0
  41. package/content/docs/knowledge/component-library/ControlComponent/interaction/velocity-damping-systems.md +741 -0
  42. package/content/docs/knowledge/component-library/ControlComponent/knob/architecture.md +490 -0
  43. package/content/docs/knowledge/component-library/ControlComponent/knob/how-to-use.md +304 -0
  44. package/content/docs/knowledge/component-library/ControlComponent/knob/index.md +105 -0
  45. package/content/docs/knowledge/component-library/ControlComponent/optimization/performance-benchmarks.md +535 -0
  46. package/content/docs/knowledge/component-library/ControlComponent/optimization/performance-optimization.md +1092 -0
  47. package/content/docs/knowledge/component-library/ControlComponent/quick-start.md +345 -0
  48. package/content/docs/knowledge/component-library/ControlComponent/slider/architecture.md +444 -0
  49. package/content/docs/knowledge/component-library/ControlComponent/slider/how-to-use.md +470 -0
  50. package/content/docs/knowledge/component-library/ControlComponent/slider/index.md +107 -0
  51. package/content/docs/knowledge/component-library/ControlComponent/testing-guide.md +950 -0
  52. package/content/docs/knowledge/component-library/ControlComponent/troubleshooting.md +657 -0
  53. package/content/docs/knowledge/component-library/frontend-develop/LICENSE.txt +176 -0
  54. package/content/docs/knowledge/component-library/frontend-develop/SKILL.md +124 -0
  55. package/content/docs/knowledge/component-library/frontend-develop/references/code-organization.md +620 -0
  56. package/content/docs/knowledge/component-library/frontend-develop/references/coding-standards.md +275 -0
  57. package/content/docs/knowledge/component-library/frontend-develop/references/component-reusability.md +559 -0
  58. package/content/docs/knowledge/component-library/frontend-develop/references/examples.md +554 -0
  59. package/content/docs/knowledge/component-library/frontend-develop/references/layout-separation.md +638 -0
  60. package/content/docs/knowledge/component-library/frontend-develop/references/performance-optimization.md +678 -0
  61. package/content/docs/knowledge/component-library/frontend-develop/references/state-management.md +331 -0
  62. package/content/docs/knowledge/component-library/frontend-develop/references/styling-guidelines.md +349 -0
  63. package/content/docs/knowledge/component-library/frontend-develop/references/type-safety.md +493 -0
  64. package/content/docs/knowledge/development/assets/cyberduck-aws-credentials.png +0 -0
  65. package/content/docs/knowledge/development/assets/postman-environment-setup.png +0 -0
  66. package/content/docs/knowledge/development/aws-storage.md +95 -0
  67. package/content/docs/knowledge/development/crm-system.md +22 -0
  68. package/content/docs/knowledge/development/glossary.md +246 -0
  69. package/content/docs/knowledge/development/pg-api-guide.md +71 -0
  70. package/content/docs/knowledge/development/staging-license-management.md +44 -0
  71. package/content/docs/knowledge/development/tech-stack.md +240 -0
  72. package/content/docs/knowledge/domain/popup-system.md +106 -0
  73. package/content/docs/knowledge/domain/sigpath.md +264 -0
  74. package/content/docs/knowledge/environment-setup/aax-signing-update.md +149 -0
  75. package/content/docs/knowledge/environment-setup/assets/aax-1.png +0 -0
  76. package/content/docs/knowledge/environment-setup/assets/aax-2.png +0 -0
  77. package/content/docs/knowledge/environment-setup/assets/aax-3.png +0 -0
  78. package/content/docs/knowledge/environment-setup/assets/aax-4.png +0 -0
  79. package/content/docs/knowledge/environment-setup/assets/aax-5.png +0 -0
  80. package/content/docs/knowledge/environment-setup/assets/aax-6.png +0 -0
  81. package/content/docs/knowledge/environment-setup/assets/aax-7.png +0 -0
  82. package/content/docs/knowledge/environment-setup/assets/buildmachine-1.png +0 -0
  83. package/content/docs/knowledge/environment-setup/assets/buildmachine-10.png +0 -0
  84. package/content/docs/knowledge/environment-setup/assets/buildmachine-11.png +0 -0
  85. package/content/docs/knowledge/environment-setup/assets/buildmachine-12.png +0 -0
  86. package/content/docs/knowledge/environment-setup/assets/buildmachine-13.png +0 -0
  87. package/content/docs/knowledge/environment-setup/assets/buildmachine-14.png +0 -0
  88. package/content/docs/knowledge/environment-setup/assets/buildmachine-2.png +0 -0
  89. package/content/docs/knowledge/environment-setup/assets/buildmachine-3.png +0 -0
  90. package/content/docs/knowledge/environment-setup/assets/buildmachine-4.png +0 -0
  91. package/content/docs/knowledge/environment-setup/assets/buildmachine-5.png +0 -0
  92. package/content/docs/knowledge/environment-setup/assets/buildmachine-6.png +0 -0
  93. package/content/docs/knowledge/environment-setup/assets/buildmachine-7.png +0 -0
  94. package/content/docs/knowledge/environment-setup/assets/buildmachine-8.png +0 -0
  95. package/content/docs/knowledge/environment-setup/assets/buildmachine-9.png +0 -0
  96. package/content/docs/knowledge/environment-setup/build-machine-setup.md +224 -0
  97. package/content/docs/knowledge/environment-setup/build-machine-troubleshooting.md +193 -0
  98. package/content/docs/knowledge/implementation-guides/adding-amp.md +190 -0
  99. package/content/docs/knowledge/implementation-guides/adding-fx.md +111 -0
  100. package/content/docs/knowledge/implementation-guides/cab-integration.md +194 -0
  101. package/content/docs/knowledge/implementation-guides/custom-pedal-integration.md +309 -0
  102. package/content/docs/knowledge/projects/BIAS_ONE_GUI/README.md +17 -0
  103. package/content/manifest.json +122 -0
  104. package/content/rules/cpp.mdc +135 -0
  105. package/content/rules/frontend.mdc +615 -0
  106. package/content/rules/index.mdc +256 -0
  107. package/content/rules/knowledge.mdc +46 -0
  108. package/content/rules/team-wide.mdc +179 -0
  109. package/content/rules/workflows.mdc +43 -0
  110. package/content/tools/agents/context-compressor.md +357 -0
  111. package/content/tools/agents/context-writer.md +328 -0
  112. package/content/tools/agents/release-notes-generator.md +389 -0
  113. package/content/tools/agents/srs-writer-agent.md +63 -0
  114. package/content/tools/mcp/README.md +25 -0
  115. package/content/tools/mcp/mcp-desktop-team.example.json +13 -0
  116. package/content/tools/skills/frontend-develop/LICENSE.txt +176 -0
  117. package/content/tools/skills/frontend-develop/SKILL.md +124 -0
  118. package/content/tools/skills/frontend-develop/references/code-organization.md +620 -0
  119. package/content/tools/skills/frontend-develop/references/coding-standards.md +275 -0
  120. package/content/tools/skills/frontend-develop/references/component-reusability.md +559 -0
  121. package/content/tools/skills/frontend-develop/references/examples.md +554 -0
  122. package/content/tools/skills/frontend-develop/references/layout-separation.md +638 -0
  123. package/content/tools/skills/frontend-develop/references/performance-optimization.md +678 -0
  124. package/content/tools/skills/frontend-develop/references/state-management.md +331 -0
  125. package/content/tools/skills/frontend-develop/references/styling-guidelines.md +349 -0
  126. package/content/tools/skills/frontend-develop/references/type-safety.md +493 -0
  127. package/content/tools/slash-commands/commit.md +17 -0
  128. package/content/tools/slash-commands/context-compress.md +149 -0
  129. package/content/tools/slash-commands/context-write.md +92 -0
  130. package/content/tools/slash-commands/jira.md +12 -0
  131. package/content/tools/slash-commands/pr-gen.md +12 -0
  132. package/content/tools/slash-commands/pr-review.md +12 -0
  133. package/dist/commands/detect.d.ts +1 -0
  134. package/dist/commands/detect.js +33 -0
  135. package/dist/commands/install.d.ts +1 -0
  136. package/dist/commands/install.js +100 -0
  137. package/dist/commands/uninstall.d.ts +1 -0
  138. package/dist/commands/uninstall.js +132 -0
  139. package/dist/index.d.ts +2 -0
  140. package/dist/index.js +53 -0
  141. package/dist/lib/detect-env.d.ts +3 -0
  142. package/dist/lib/detect-env.js +52 -0
  143. package/dist/lib/prompt-env.d.ts +3 -0
  144. package/dist/lib/prompt-env.js +16 -0
  145. package/dist/lib/resolve-doc-repo.d.ts +14 -0
  146. package/dist/lib/resolve-doc-repo.js +61 -0
  147. package/dist/lib/symlink.d.ts +7 -0
  148. package/dist/lib/symlink.js +60 -0
  149. package/dist/lib/sync-from-manifest.d.ts +8 -0
  150. package/dist/lib/sync-from-manifest.js +64 -0
  151. package/package.json +46 -0
@@ -0,0 +1,345 @@
1
+ # 快速入門指南
2
+
3
+ 本指南幫助開發者在 5 分鐘內了解 Audio Plugin 控制元件的整體架構與使用方式。
4
+
5
+ ---
6
+
7
+ ## 概念總覽
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────────────────────────────┐
11
+ │ 使用者互動層 │
12
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
13
+ │ │ 滑鼠拖曳 │ │ 滾輪操作 │ │ 鍵盤 (精確模式) │ │
14
+ │ └──────┬──────┘ └──────┬──────┘ └───────────┬─────────────┘ │
15
+ └─────────┼────────────────┼─────────────────────┼───────────────┘
16
+ │ │ │
17
+ ▼ ▼ ▼
18
+ ┌─────────────────────────────────────────────────────────────────┐
19
+ │ 手勢處理層 │
20
+ │ ┌─────────────────────────────────────────────────────────────┐│
21
+ │ │ Pointer Events / useAudioControl Hook ││
22
+ │ │ - 平台適應 (Mac/Windows) ││
23
+ │ │ - 精確模式偵測 (Ctrl/Cmd) ││
24
+ │ │ - 節流與防抖 ││
25
+ │ └─────────────────────────────────────────────────────────────┘│
26
+ └─────────────────────────────────────────────────────────────────┘
27
+
28
+
29
+ ┌─────────────────────────────────────────────────────────────────┐
30
+ │ 數值處理層 │
31
+ │ ┌──────────────┐ ┌──────────────┐ ┌────────────────────────┐│
32
+ │ │ 正規化 │ │ 約束/步進 │ │ 曲線映射 (對數等) ││
33
+ │ │ (0-1) │ │ clamp/snap │ │ 頻率/增益 ││
34
+ │ └──────────────┘ └──────────────┘ └────────────────────────┘│
35
+ └─────────────────────────────────────────────────────────────────┘
36
+
37
+
38
+ ┌─────────────────────────────────────────────────────────────────┐
39
+ │ Native Interface 層 │
40
+ │ ┌─────────────────────────────────────────────────────────────┐│
41
+ │ │ useParameter Hook → Native Interface → Audio Plugin Host ││
42
+ │ │ - getValue / setValue (0-1 正規化值) ││
43
+ │ │ - beginGesture / endGesture (DAW 自動化) ││
44
+ │ └─────────────────────────────────────────────────────────────┘│
45
+ └─────────────────────────────────────────────────────────────────┘
46
+
47
+
48
+ ┌─────────────────────────────────────────────────────────────────┐
49
+ │ 視覺更新層 │
50
+ │ ┌──────────────────────┐ ┌───────────────────────────────────┐│
51
+ │ │ CSS 變數更新 │ │ 圖片幀切換 / CSS Transform ││
52
+ │ │ (繞過 React 渲染) │ │ (requestAnimationFrame) ││
53
+ │ └──────────────────────┘ └───────────────────────────────────┘│
54
+ └─────────────────────────────────────────────────────────────────┘
55
+ ```
56
+
57
+ ---
58
+
59
+ ## 核心概念
60
+
61
+ ### 1. Native Interface Contract
62
+
63
+ 控制元件透過 **Native Interface** 與 Audio Plugin Host 溝通:
64
+
65
+ ```typescript
66
+ // 使用元件只需要提供 pid (Parameter ID)
67
+ <Knob pid={0} label="Gain" />
68
+ <Slider pid={1} label="Mix" />
69
+
70
+ // Native Interface 由 Host 實作
71
+ const nativeAPI: NativeInterface = {
72
+ parameter: {
73
+ getValue: (pid) => /* 從 Host 取值 */,
74
+ setValue: (pid, value) => /* 設定到 Host */,
75
+ getDisplayValue: (pid) => /* 取得格式化顯示 */,
76
+ beginGesture: (pid) => /* 通知 DAW 開始 */,
77
+ endGesture: (pid) => /* 通知 DAW 結束 */,
78
+ },
79
+ subscribe: (pid, callback) => /* 訂閱變化 */,
80
+ };
81
+ ```
82
+
83
+ 詳細說明:[Native Interface Contract](./core/native-interface.md)
84
+
85
+ ### 2. 兩種主要元件系列
86
+
87
+ | 系列 | 元件 | 適用場景 |
88
+ | ---- | ---- | -------- |
89
+ | **Knob** | 旋鈕控制 | 音量、增益、頻率、Pan 等 |
90
+ | **Slider** | 滑桿控制 | 音量條、數值輸入、模式切換 |
91
+
92
+ ### 3. 數值範圍標準
93
+
94
+ 所有控制元件內部使用 **0-1 正規化值**:
95
+
96
+ ```typescript
97
+ // 內部值永遠是 0-1
98
+ const normalizedValue = 0.5;
99
+
100
+ // 顯示值由 Native Interface 提供
101
+ const displayValue = nativeAPI.parameter.getDisplayValue(pid);
102
+ // → "−6.0 dB" 或 "440 Hz" 或 "50%"
103
+ ```
104
+
105
+ ### 4. 精確模式
106
+
107
+ 按住 **Ctrl (Windows)** 或 **Cmd (Mac)** 可啟用精確模式:
108
+ - 拖曳靈敏度降低 (通常為 0.1-0.2 倍)
109
+ - 滾輪步進更細緻
110
+ - 適合微調參數
111
+
112
+ ---
113
+
114
+ ## 最簡單的使用範例
115
+
116
+ ### 步驟 1:設置 Native Interface
117
+
118
+ ```typescript
119
+ // main.tsx
120
+ import { NativeInterfaceProvider } from './contexts/NativeInterfaceContext';
121
+ import { createNativeInterface } from './your-host-adapter';
122
+
123
+ // 從你的 Audio Plugin Host 創建介面
124
+ const nativeAPI = createNativeInterface(yourAudioHost);
125
+
126
+ function App() {
127
+ return (
128
+ <NativeInterfaceProvider value={nativeAPI}>
129
+ <PluginUI />
130
+ </NativeInterfaceProvider>
131
+ );
132
+ }
133
+ ```
134
+
135
+ ### 步驟 2:使用 Knob 旋鈕
136
+
137
+ ```typescript
138
+ import { Knob } from './components/Knob';
139
+
140
+ function PluginUI() {
141
+ return (
142
+ <div className="plugin-panel">
143
+ {/* 只需提供 pid,其餘由 Native Interface 處理 */}
144
+ <Knob pid={0} label="Gain" />
145
+ <Knob pid={1} label="Tone" />
146
+ <Knob pid={2} label="Mix" />
147
+ </div>
148
+ );
149
+ }
150
+ ```
151
+
152
+ ### 步驟 3:使用 Slider 滑桿
153
+
154
+ ```typescript
155
+ import { Slider } from './components/Slider';
156
+
157
+ function PluginUI() {
158
+ return (
159
+ <div className="plugin-panel">
160
+ <Slider pid={3} label="Volume" orientation="vertical" />
161
+ <Slider pid={4} label="Pan" orientation="horizontal" />
162
+ </div>
163
+ );
164
+ }
165
+ ```
166
+
167
+ ---
168
+
169
+ ## 進階配置範例
170
+
171
+ ### 自訂 Knob 外觀
172
+
173
+ ```typescript
174
+ <Knob
175
+ pid={0}
176
+ label="Gain"
177
+ size="large" // 'small' | 'medium' | 'large'
178
+ showValue={true} // 顯示數值
179
+ showLabel={true} // 顯示標籤
180
+ indicatorStyle="dot" // 指示器樣式
181
+ />
182
+ ```
183
+
184
+ ### 步進 Knob(模式切換)
185
+
186
+ ```typescript
187
+ <Knob
188
+ pid={5}
189
+ label="Mode"
190
+ stepped={true}
191
+ steps={['Clean', 'Crunch', 'Lead', 'High Gain']}
192
+ />
193
+ ```
194
+
195
+ ### 精確數值 Slider
196
+
197
+ ```typescript
198
+ <Slider
199
+ pid={6}
200
+ label="Frequency"
201
+ orientation="horizontal"
202
+ showNumericInput={true} // 允許直接輸入數值
203
+ />
204
+ ```
205
+
206
+ ---
207
+
208
+ ## 核心 Hook 使用
209
+
210
+ ### useParameter Hook
211
+
212
+ ```typescript
213
+ import { useParameter } from './hooks/useParameter';
214
+
215
+ function CustomControl({ pid }: { pid: number }) {
216
+ const {
217
+ value, // 當前正規化值 (0-1)
218
+ displayValue, // 格式化顯示值
219
+ setValue, // 設定新值
220
+ beginGesture, // 開始互動
221
+ endGesture, // 結束互動
222
+ resetToDefault, // 重置為預設值
223
+ } = useParameter({ pid });
224
+
225
+ return (
226
+ <div
227
+ onPointerDown={beginGesture}
228
+ onPointerUp={endGesture}
229
+ >
230
+ <span>{displayValue}</span>
231
+ </div>
232
+ );
233
+ }
234
+ ```
235
+
236
+ ### useAudioControl Hook
237
+
238
+ ```typescript
239
+ import { useAudioControl } from './hooks/useAudioControl';
240
+
241
+ function MyKnob({ pid }: { pid: number }) {
242
+ const { containerRef, isDragging } = useAudioControl({
243
+ pid,
244
+ orientation: 'vertical',
245
+ sensitivity: 0.005,
246
+ preciseSensitivity: 0.001,
247
+ });
248
+
249
+ return (
250
+ <div
251
+ ref={containerRef}
252
+ className={`knob ${isDragging ? 'dragging' : ''}`}
253
+ />
254
+ );
255
+ }
256
+ ```
257
+
258
+ ---
259
+
260
+ ## 效能最佳實踐
261
+
262
+ ### 使用 CSS 變數更新視覺
263
+
264
+ ```typescript
265
+ // ✅ 好:使用 CSS 變數
266
+ element.style.setProperty('--value-normalized', String(value));
267
+
268
+ // ❌ 避免:觸發 React 重新渲染
269
+ setVisualValue(value); // 每次拖動都會重新渲染
270
+ ```
271
+
272
+ ### 節流更新到 Native
273
+
274
+ ```typescript
275
+ // 視覺更新:每幀 (60fps)
276
+ // Native 更新:節流到 ~30-60fps
277
+ const throttledSetValue = useThrottle(setValue, 16);
278
+ ```
279
+
280
+ ---
281
+
282
+ ## 常見任務速查
283
+
284
+ ### 調整靈敏度
285
+
286
+ ```typescript
287
+ // 在元件層級設定
288
+ <Knob
289
+ pid={0}
290
+ sensitivity={0.005} // 預設拖曳靈敏度
291
+ preciseSensitivity={0.001} // 精確模式靈敏度
292
+ wheelSensitivity={0.01} // 滾輪靈敏度
293
+ />
294
+ ```
295
+
296
+ ### 處理 Mac/Windows 滾輪差異
297
+
298
+ ```typescript
299
+ // 已內建在 useAudioControl 中
300
+ // 自動處理 Mac 的 webkitDirectionInvertedFromDevice
301
+ if (isMac) {
302
+ const isDirectionInverted = e.webkitDirectionInvertedFromDevice;
303
+ delta = isDirectionInverted ? delta : -delta;
304
+ }
305
+ ```
306
+
307
+ ### 雙擊重置
308
+
309
+ ```typescript
310
+ <Knob
311
+ pid={0}
312
+ onDoubleClick={() => resetToDefault()}
313
+ // 或使用內建行為
314
+ enableDoubleClickReset={true}
315
+ />
316
+ ```
317
+
318
+ ---
319
+
320
+ ## 下一步
321
+
322
+ 1. **理解核心介面**: [Native Interface Contract](./core/native-interface.md)
323
+ 2. **深入了解架構**: [Knob 架構分析](./knob/architecture.md)
324
+ 3. **學習建立新元件**: [建立新元件指南](./creating-new-controls.md)
325
+ 4. **了解效能優化**: [效能最佳化策略](./optimization/performance-optimization.md)
326
+ 5. **API 設計標準**: [API 設計參考](./design/api-design-reference.md)
327
+
328
+ ---
329
+
330
+ ## 常見問題
331
+
332
+ **Q: 為什麼用 0-1 正規化值?**
333
+ A: 統一內部計算,便於跨元件傳遞。實際值和顯示格式由 Host 負責轉換。
334
+
335
+ **Q: 為什麼用 CSS 變數而不是 React 狀態?**
336
+ A: 避免高頻拖曳時的 React 重新渲染,提升效能。
337
+
338
+ **Q: 什麼是手勢開始/結束 (beginGesture/endGesture)?**
339
+ A: 通知 DAW 使用者開始/結束調整參數,讓 DAW 正確記錄自動化曲線。
340
+
341
+ **Q: 如何測試元件?**
342
+ A: 使用 [Mock Native Interface](./core/native-interface.md#測試支援) 進行單元測試。
343
+
344
+ **Q: 如何除錯元件問題?**
345
+ A: 查看 [故障排除指南](./troubleshooting.md)。