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,224 @@
1
+ # Desktop Product Build Machine 建置指南
2
+
3
+ *Last Updated: 2025-10-16*
4
+
5
+ 本文件說明如何從頭建置一台新的 Desktop Product Build Machine,包含所有必要的軟體安裝、授權配置與環境設定。
6
+
7
+ ## 購置機器
8
+
9
+ 與 IT 部門討論機器需求,架設在公司內網。
10
+
11
+ **注意事項**:
12
+ - 確認硬體規格符合 BIAS 專案建置需求
13
+ - 確保機器可以連接公司內網
14
+ - 預留足夠的儲存空間供建置使用
15
+
16
+ ---
17
+
18
+ ## 安裝 Jenkins Agent
19
+
20
+ 請 IT 部門協助安裝 Jenkins agent。
21
+
22
+ **相關資源**:
23
+ - Jenkins 伺服器位址與設定資訊請洽 IT 部門
24
+ - 需要設定適當的 user 權限以執行建置任務
25
+
26
+ ---
27
+
28
+ ## 安裝 iLok License Manager
29
+
30
+ 此項目主要是用來授權 AAX plugin。
31
+
32
+ ### 下載與安裝
33
+
34
+ - 下載 [iLok License Manager](https://www.ilok.com/#!license-manager)
35
+ - [Positive Grid 購買並支援 iLok 的軟體清單](https://www.ilok.com/#!myaccount)(帳號密碼請洽 IT)
36
+
37
+ ### iLok 裝置配置
38
+
39
+ **macOS build machine 使用**: `iLok_209D6C-BuildMachine`
40
+ **Windows build machine 使用**: `iLok_209D95`
41
+
42
+ ### 登入與授權
43
+
44
+ 1. 登入 iLok License Manager(帳號密碼請洽 IT)
45
+ 2. 確認對應的 iLok USB 已經接上
46
+
47
+ **注意**:若沒插上 iLok USB,會出現以下畫面:
48
+
49
+ ![iLok USB 未連接](assets/buildmachine-1.png)
50
+
51
+ **重要**:目前公司 macOS 和 Windows build machine 各有一隻 iLok USB,沒有添購更多。如果要使用,請把 iLok USB 接到對應的 build machine 上。
52
+
53
+ ### 驗證授權狀態
54
+
55
+ 若 iLok 有成功抓到授權,會顯示如下圖,對應的 iLok 會 activated,並且上面有一個戳記圖騰:
56
+
57
+ ![iLok 授權成功](assets/buildmachine-2.png)
58
+
59
+ ### 更新過期授權
60
+
61
+ 若授權過期,超過 expire date,可以與 IT 確認 renew 後,點擊右鍵選擇 `Refresh`:
62
+
63
+ ![更新 iLok 授權](assets/buildmachine-3.png)
64
+
65
+ ---
66
+
67
+ ## 安裝 PACE Anti-Piracy Eden Tool
68
+
69
+ 此項目主要是用來授權 AAX plugin。
70
+
71
+ ![PACE Eden Tool 示意圖](assets/buildmachine-4.png)
72
+
73
+ ### 下載安裝檔
74
+
75
+ 參考 [下載: EdenSDKLiteInstallerWin64.zip](https://drive.google.com/drive/folders/0B8ejQBhIj8C2YUpPOVRGZC1KQ2c?resourcekey=0-cjEeIPqu-zzyyy4ndGwsxA)
76
+
77
+ ### Eden SDK 安裝步驟
78
+
79
+ 1. **使用有連接 iLok dongle 的電腦**
80
+
81
+ 2. **打開 iLok License Manager**
82
+ - 點選首頁中的 "PACE CENTRAL"
83
+
84
+ ![iLok License Manager - PACE CENTRAL](assets/buildmachine-5.png)
85
+
86
+ 3. **下載 Eden SDK**
87
+ - 進去後點選 "DEVELOPER" 即可進入各版本下載頁
88
+
89
+ ![PACE Central - Developer Downloads](assets/buildmachine-6.png)
90
+
91
+ 4. **設定環境變數**
92
+ - 將 `PACE_FUSION_HOME` 加入到 user 環境變數
93
+
94
+ ![PACE 環境變數設定](assets/buildmachine-7.png)
95
+
96
+ 5. **更新 GlobalSign**(如需要)
97
+ - 參考 [AAX Sign Tool](https://git.positivegrid.com:8443/KnowledgeBase/BIASTeamWiki/wikis/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%96%B0-aax-signid) 安裝 GlobalSign
98
+
99
+ ---
100
+
101
+ ## 安裝 SafeNet USB(Windows Only)
102
+
103
+ 此部分是用來授權 GlobalSign。
104
+
105
+ **SafeNet USB Token** 是一支實體 USB,如圖:
106
+
107
+ ![SafeNet USB Token](assets/buildmachine-8.png)
108
+
109
+ ### 從頭安裝 GlobalSign
110
+
111
+ 按照此[說明](https://support.globalsign.com/code-signing/download-and-install-standard-code-signing-certificate)來安裝。
112
+
113
+ **注意**:如果用 RDP 連線,開啟 SafeNet client 會看不到 SafeNet eToken 連線。
114
+ 參考:[Cannot see hardware security token on Windows PC](https://superuser.com/questions/1519063/cannot-see-hardware-security-token-on-my-windows-pc)
115
+
116
+ ### 從舊機器 Export 來新機器安裝
117
+
118
+ 1. 開啟 `certmgr.msc`(使用管理員權限執行)
119
+
120
+ 2. Export 憑證:
121
+
122
+ ![Export GlobalSign 憑證](assets/buildmachine-9.png)
123
+
124
+ 3. 在新機上安裝(會是 per user 安裝,沒有錯)
125
+
126
+ **備份位置**:目前已經有一份備份在 BIAS_DEV 的 D 槽 BIAS misc 資料夾(updated: 20231220)
127
+
128
+ ---
129
+
130
+ ## 安裝 Apple Developer Certificate(macOS Only)
131
+
132
+ ### 錯誤情境
133
+
134
+ 如果沒有安裝憑證,會出現以下錯誤:
135
+
136
+ ![Apple 憑證錯誤](assets/buildmachine-10.png)
137
+
138
+ ### 正確安裝示例
139
+
140
+ 正確安裝憑證如下圖示(SKLFZ4533Y 那個):
141
+
142
+ ![Apple 憑證已安裝](assets/buildmachine-11.png)
143
+
144
+ ### Option 1: 從舊機器上 Export
145
+
146
+ 1. 到 Keychain 裡面找到 Certificate category
147
+ 2. 找到含有 private key 的 certificate(參考下圖)
148
+ 3. 將其 export 成 `.p12`
149
+ 4. 傳到新機器去點擊,加入新機器的 keychain
150
+
151
+ ![Export Apple Certificate](assets/buildmachine-12.png)
152
+
153
+ ### Option 2: 安裝全新的 Certificate
154
+
155
+ 1. **登入 Apple Developer**
156
+ - 前往 https://developer.apple.com/account/resources/certificates/list
157
+ - 需要建立過帳號與權限,詳情洽 IT 開通
158
+
159
+ 2. **查看現有憑證**
160
+ - 若有權限,可看到自己的帳號與所有目前的 certificate
161
+
162
+ ![Apple Developer 憑證列表](assets/buildmachine-13.png)
163
+
164
+ 3. **下載 BIAS Product 所需憑證**
165
+
166
+ 以 BIAS Product 為例,需要的授權為:
167
+
168
+ ```
169
+ Positive Grid Inc Developer ID Application macOS Calvin Abel 2024/10/25
170
+ Positive Grid Inc Developer ID Installer macOS Calvin Abel 2024/10/25
171
+ ```
172
+
173
+ 需要用 Calvin Abel (`appstore@positivegrid.com`) 帳號登入點擊進去後下載,如下圖(只有 gary.hsieh 帳號的示意圖):
174
+
175
+ ![下載 Apple Certificate](assets/buildmachine-14.png)
176
+
177
+ ---
178
+
179
+ ## 建構新的 Jenkins 專案
180
+
181
+ ### 基本步驟
182
+
183
+ 1. 首頁 → 新增作業
184
+ 2. 輸入專案名
185
+ 3. 選擇 "Copy from"(從現有專案複製設定)
186
+
187
+ ### SSH 憑證配置
188
+
189
+ 專案之前都是透過 GitLab 跟 Jenkins 預先建好的 credential 來 clone 專案,但是此用法在一些 script 內會直接下 git command 仍然會沒有權限。
190
+
191
+ **現在的做法**:直接在 build machine 上使用 IT 帳號把 SSH 憑證匯入 GitLab。
192
+
193
+ ---
194
+
195
+ ## 安裝 BIAS 專案開發所需套件
196
+
197
+ 將套件安裝到執行 Jenkins agent 的 user 下。
198
+
199
+ ### Windows 環境
200
+
201
+ 參考 [BIAS Windows 環境建置](https://git.positivegrid.com:8443/desktop/native_docs/wikis/windows-development-environment-setup)
202
+
203
+ ### macOS 環境
204
+
205
+ 參考 [BIAS macOS 環境建置](https://git.positivegrid.com:8443/desktop/native_docs/wikis/macos-development-environment-setup)
206
+
207
+ ---
208
+
209
+ ## 相關資源
210
+
211
+ **內部文件**:
212
+ - [Tech Stack Overview](../development/tech-stack.md) - 技術堆疊概覽
213
+ - [Development Glossary](../development/glossary.md) - 開發術語表
214
+
215
+ **外部連結**:
216
+ - [iLok License Manager](https://www.ilok.com/#!license-manager)
217
+ - [PACE Central](https://www.ilok.com/)
218
+ - [GlobalSign Code Signing](https://support.globalsign.com/code-signing/)
219
+ - [Apple Developer Portal](https://developer.apple.com/account/)
220
+
221
+ ---
222
+
223
+ **Maintained by**: Desktop Team
224
+ **Contact**: IT 部門與 Build/Release 負責人
@@ -0,0 +1,193 @@
1
+ # Build Machine Troubleshooting
2
+
3
+ *Last Updated: 2025-10-16*
4
+
5
+ 本文件收錄 Desktop Team Build Machine 常見的建置問題與解決方案,幫助團隊快速排查並解決建置過程中遇到的問題。
6
+
7
+ ---
8
+
9
+ ## Fastlane Debug 資訊
10
+
11
+ ### Q: 如何讓 fastlane 在 build 的過程中有更多的 debug 資訊?
12
+
13
+ **問題描述**:
14
+ 一般的 fastlane 指令幾乎看不到什麼 log 輸出,難以排查問題。
15
+
16
+ **解決方案**:
17
+ 使用以下兩個參數可以看到更多 error 資訊:
18
+
19
+ - `print_log:true` - 輸出詳細日誌
20
+ - `verbose:true` - 啟用詳細模式
21
+
22
+ **範例**:
23
+
24
+ ```bash
25
+ fastlane run notarize \
26
+ print_log:true \
27
+ verbose:true \
28
+ package:BIAS_FX_2_Mac_Standalone_v2_6_0_11802.dmg \
29
+ bundle_id:com.positivegrid.BiasFx2Standalone \
30
+ username:it+buildmachine@positivegrid.com
31
+ ```
32
+
33
+ **參考資源**:
34
+ - [Fastlane notarize 文件](https://docs.fastlane.tools/actions/notarize/)
35
+
36
+ ---
37
+
38
+ ## Jenkins Console Log 優化
39
+
40
+ ### Q: 如何讓 build code 過程的 output 顯示在 Jenkins console?
41
+
42
+ **問題描述**:
43
+ 以 BIAS FX2 為例,最重要的 build code 指令會使用 `/noconsolelogger` 參數,導致 console 沒有 log output,只會將 error 輸出到檔案。每次出問題都要連到 build machine 機器上查看。
44
+
45
+ **原始指令**:
46
+
47
+ ```bash
48
+ msbuild BiasFX2All.sln \
49
+ /t:rebuild \
50
+ /p:Configuration=Release \
51
+ /p:Platform=x64 \
52
+ %languageFlag% \
53
+ /nologo \
54
+ /noconsolelogger \
55
+ /m \
56
+ /flp:errorsonly;logfile=MSBuild_x64_error.log
57
+ ```
58
+
59
+ **問題所在**:
60
+ - `/noconsolelogger` - 關閉 console logger
61
+ - 錯誤只會輸出到 `MSBuild_x64_error.log`
62
+
63
+ **解決方案**:
64
+ 移除 `/noconsolelogger` 參數,讓 Jenkins console log 直接顯示更多錯誤訊息。
65
+
66
+ **優化後指令**:
67
+
68
+ ```bash
69
+ msbuild BiasFX2All.sln \
70
+ /t:rebuild \
71
+ /p:Configuration=Release \
72
+ /p:Platform=x64 \
73
+ %languageFlag% \
74
+ /nologo \
75
+ /m \
76
+ /flp:errorsonly;logfile=MSBuild_x64_error.log
77
+ ```
78
+
79
+ **優點**:
80
+ - Jenkins console 直接顯示建置輸出
81
+ - 更快速地發現和診斷問題
82
+ - 減少遠端登入 build machine 的需求
83
+
84
+ **注意**:
85
+ 不確定以前的 RD 為什麼要把 console logger 關掉,目前看來開啟後對除錯更有幫助。
86
+
87
+ ---
88
+
89
+ ## Code Signing 問題
90
+
91
+ ### Q: Signing segmentation fault
92
+
93
+ **問題描述**:
94
+ 在執行 codesign 或 productsign 時遇到 segmentation fault 錯誤。
95
+
96
+ **錯誤範例 1 - codesign**:
97
+
98
+ ```bash
99
+ ../../../export/MacOSX/Release/bin/Standalone/BIAS FX 2.app: replacing existing signature
100
+ ./buildInstaller.sh: line 16: 59253 Segmentation fault: 11 codesign \
101
+ --entitlements "../BIAS FX 2.entitlements" \
102
+ -f --deep --timestamp -o runtime \
103
+ --sign "Developer ID Application: Positive Grid Inc (SKLFZ4533Y)" \
104
+ "../../../export/MacOSX/Release/bin/Standalone/BIAS FX 2.app"
105
+ ```
106
+
107
+ **錯誤範例 2 - productsign**:
108
+
109
+ ```bash
110
+ 2023-08-24 02:33:37.689 productsign[16336:56487] CMS signature encoding failed: \
111
+ A timestamp was expected but was not found. (-67882)
112
+ Error signing data.
113
+ ./buildInstaller.sh: line 38: 16336 Segmentation fault: 11 productsign \
114
+ --sign "Developer ID Installer: Positive Grid Inc (SKLFZ4533Y)" \
115
+ "$dstPkgPath" "$signedPkgPath"
116
+ ```
117
+
118
+ **解決方案**:
119
+ 重新執行 build 通常可以解決問題。
120
+
121
+ **排查步驟**:
122
+ 1. 重新執行 build job
123
+ 2. 如果問題持續,嘗試以下步驟:
124
+ - 重啟 build machine
125
+ - 重新同步 iLok license
126
+ - 重新登入 AVID 的 security client
127
+
128
+ **注意**:
129
+ 目前沒有明確的根本解決方案(root cause),這似乎是 Apple 簽名服務的間歇性問題。
130
+
131
+ ---
132
+
133
+ ## AAX Plugin 建置問題
134
+
135
+ ### Q: AAX plugin is not built
136
+
137
+ **問題描述**:
138
+ AAX plugin 建置失敗,無法產生 AAX 格式的 plugin。
139
+
140
+ **可能原因**:
141
+ AVID dev license system 有時會不穩定(a little bit dodgy)。
142
+
143
+ **解決方案**:
144
+
145
+ **方案 1:重新建置**
146
+ - 大多數情況下,重新執行整個 build task 即可解決
147
+
148
+ **方案 2:重置授權環境**(如果重建無效)
149
+ 1. 重啟 build machine
150
+ 2. 重新同步 iLok license(參考 [Build Machine Setup](./build-machine-setup.md#安裝-ilok-license-manager))
151
+ 3. 重新登入 AVID 的 security client
152
+
153
+ **預防措施**:
154
+ - 定期檢查 iLok license 狀態
155
+ - 確保 PACE Eden Tool 正常運作
156
+ - 保持 AVID tools 為最新版本
157
+
158
+ ---
159
+
160
+ ## 相關資源
161
+
162
+ **內部文件**:
163
+ - [Build Machine Setup](./build-machine-setup.md) - Build machine 建置指南
164
+ - [Tech Stack Overview](../development/tech-stack.md) - 技術堆疊概覽
165
+ - [Development Glossary](../development/glossary.md) - 開發術語表
166
+
167
+ **外部連結**:
168
+ - [Fastlane Documentation](https://docs.fastlane.tools/)
169
+ - [MSBuild Command-Line Reference](https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-command-line-reference)
170
+ - [Apple Code Signing](https://developer.apple.com/support/code-signing/)
171
+
172
+ **AVID/AAX 相關**:
173
+ - [iLok License Manager](https://www.ilok.com/#!license-manager)
174
+ - [PACE Anti-Piracy](https://www.ilok.com/)
175
+
176
+ ---
177
+
178
+ ## 回報新問題
179
+
180
+ 如果遇到本文件未涵蓋的建置問題:
181
+
182
+ 1. 記錄完整的錯誤訊息和 console log
183
+ 2. 記錄重現步驟
184
+ 3. 嘗試的解決方案
185
+ 4. 在 Slack #desktop-team 頻道討論
186
+ 5. 解決後更新此文件
187
+
188
+ ---
189
+
190
+ **Maintained by**: Desktop Team
191
+ **Contact**: Build/Release 負責人
192
+
193
+ **Note**: 本文件持續更新中,歡迎團隊成員補充新的疑難排解經驗。
@@ -0,0 +1,190 @@
1
+ # How to add new Amp or update Amp resources into BIAS X
2
+
3
+ *Last Updated: 2025-03-02*
4
+
5
+ ## Overview
6
+
7
+ This guide explains how to add new amplifiers or update existing amp resources in BIAS X using the Figma parser plugin.
8
+
9
+ ## Steps
10
+
11
+ 1. Use the Figma plugin to download config/assets files:
12
+ - The plugin is located in the repository: `tools/gear-figma-parser`
13
+ - Follow the installation and usage instructions in the plugin's README
14
+
15
+ 2. Put the exported assets in the appropriate directories:
16
+ - Body assets → **public/images/amp-x-module/body**
17
+ - Signal path thumbnails → **public/images/amp-x-module/thumb**
18
+ - Config JSON files → **public/images/amp-x-module**
19
+
20
+ 3. If you need to add new control units, add their assets inside **public/images/amp-x-module/control-units**
21
+
22
+ ## Figma Plugin Setup
23
+
24
+ ### Installation
25
+
26
+ 1. Install the plugin dependencies:
27
+ ```
28
+ cd tools/gear-figma-parser
29
+ npm install
30
+ ```
31
+
32
+ 2. Run the plugin UI:
33
+ ```
34
+ npm run watch
35
+ ```
36
+
37
+ ### Usage
38
+
39
+ 1. Open Figma Desktop App
40
+ 2. Enable Figma Dev Mode
41
+ 3. Under Plugin tab > Click + > Select `Import plugin from manifest` > select the `manifest.json`
42
+ 4. Click the plugin and then select the Amp
43
+ 5. Click `Export All` or `Export JSON only` to export assets
44
+
45
+ ## Figma Naming Conventions
46
+
47
+ ### Amp Design
48
+
49
+ - The main Figma node should be named `amp design`
50
+ - Display name must match the PM documentation (used to find gear config files by ID)
51
+ - Body image name: `body-amp name`, e.g., `body-ac chime`
52
+ - Amp name can include spaces, use all lowercase
53
+ - Should match the title/display name, don't add dashes
54
+ - Thumbnail image name: `amp name`, e.g., `ac chime`
55
+ - Amp name can include spaces, use all lowercase
56
+ - Knob name: `model-color`, e.g., `chicken-black`
57
+ - No spaces, all lowercase
58
+ - Must match the RD knob images folder name
59
+ - Power Button and LED names: `model`, e.g., `hexagon`
60
+ - No spaces, all lowercase
61
+ - Scale name: `Scale XX` where XX is a number like 00, 01, 02, etc.
62
+ - "Scale" with capital S
63
+
64
+ ## Config JSON Format
65
+
66
+ The plugin generates a JSON configuration file for each amp. Here's the format:
67
+
68
+ ### Example
69
+
70
+ ```json
71
+ {
72
+ "name": "boogiemkiic+",
73
+ "containerPos": "above",
74
+ "knob": {
75
+ "scale": "Scale 00",
76
+ "type": "mesa4",
77
+ "color": "#ffffff",
78
+ "opacity": 0.7
79
+ },
80
+ "power": {
81
+ "type": "hexagon",
82
+ "color": "#ffffff",
83
+ "opacity": 0.7
84
+ },
85
+ "led": "circle"
86
+ }
87
+ ```
88
+
89
+ ### Attribute Description
90
+
91
+ #### 1. `name`
92
+ **Description:**
93
+ - Represents the name of the equipment (e.g., amplifier name).
94
+
95
+ **Data Type:**
96
+ - String
97
+
98
+ **Example:**
99
+ ```json
100
+ "name": "boogiemkiic+"
101
+ ```
102
+
103
+ #### 2. `containerPos`
104
+ **Description:**
105
+ - The position of the control panel, determined by the `y` value of `control` relative to the asset height.
106
+ - If `controlNode.y < assetNode.height / 2`, the value is `"above"`.
107
+ - Otherwise, it is `"below"`.
108
+
109
+ **Data Type:**
110
+ - String
111
+
112
+ **Example:**
113
+ ```json
114
+ "containerPos": "above"
115
+ ```
116
+
117
+ #### 3. `knob`
118
+ **Description:**
119
+ - Defines the appearance attributes of the knob.
120
+
121
+ **Sub-Attributes:**
122
+ - `scale`: The scale of the knob (the dial markings)
123
+ - Data Type: String
124
+ - Example: `"Scale 00"`.
125
+
126
+ - `type`: The type of knob.
127
+ - Data Type: String
128
+ - Example: `"mesa4"`.
129
+
130
+ - `color`: The color of the knob label.
131
+ - Data Type: String
132
+ - Example: `"#ffffff"`.
133
+
134
+ - `opacity`: The opacity of the knob label.
135
+ - Data Type: Number
136
+ - Example: `0.7`.
137
+
138
+ **Example:**
139
+ ```json
140
+ "knob": {
141
+ "scale": "Scale 00",
142
+ "type": "mesa4",
143
+ "color": "#ffffff",
144
+ "opacity": 0.7
145
+ }
146
+ ```
147
+
148
+ #### 4. `power`
149
+ **Description:**
150
+ - Defines the appearance attributes of the power indicator.
151
+
152
+ **Sub-Attributes:**
153
+ - `type`: The type of the power indicator.
154
+ - Data Type: String
155
+ - Example: `"hexagon"`.
156
+
157
+ - `color`: The color of the power label.
158
+ - Data Type: String
159
+ - Example: `"#ffffff"`.
160
+
161
+ - `opacity`: The opacity of the power label.
162
+ - Data Type: Number
163
+ - Example: `0.7`.
164
+
165
+ **Example:**
166
+ ```json
167
+ "power": {
168
+ "type": "hexagon",
169
+ "color": "#ffffff",
170
+ "opacity": 0.7
171
+ }
172
+ ```
173
+
174
+ #### 5. `led`
175
+ **Description:**
176
+ - Represents the type of LED indicator.
177
+
178
+ **Data Type:**
179
+ - String
180
+
181
+ **Example:**
182
+ ```json
183
+ "led": "circle"
184
+ ```
185
+
186
+ ## Additional Resources
187
+
188
+ For more detailed information about the Figma parser plugin, refer to:
189
+ - Plugin source code: `tools/gear-figma-parser`
190
+ - Asset generation details: See `parseAmpDesign` in `code.ts` within the plugin
@@ -0,0 +1,111 @@
1
+ # How to add new FX into BIAS X
2
+
3
+ *Last Updated: 2025-03-02*
4
+
5
+ ## Overview
6
+
7
+ This guide explains how to add new effects (FX) or update existing FX resources in BIAS X using the Figma parser plugin.
8
+
9
+ ## Steps
10
+
11
+ 1. Use the Figma plugin to download config/assets files:
12
+ - The plugin is located in the repository: `tools/gear-figma-parser`
13
+ - Follow the installation and usage instructions in the plugin's README
14
+
15
+ 2. Put the exported assets in the appropriate directories:
16
+ - Body assets → **public/images/pedal-x-module/body**
17
+ - Signal path thumbnails → **public/images/pedal-x-module/thumb**
18
+ - Config JSON files → **public/images/pedal-x-module**
19
+
20
+ 3. Fill in **public/images/pedal-x-module/pedals.json**:
21
+ - Use `dspId` as key and `formatted displayName` (display name in lowercase with spaces removed) as value
22
+
23
+ 4. If you need to add new control units, add their assets inside **public/images/pedal-x-module/control-units**
24
+
25
+ 5. Add the `dspId` & `displayName` mapping into [bias-x-preset-thumbnail repo](https://git.positivegrid.com:8443/frontend/bias-x-preset-thumbnail)
26
+
27
+ ## Figma Plugin Setup
28
+
29
+ ### Installation
30
+
31
+ 1. Install the plugin dependencies:
32
+ ```
33
+ cd tools/gear-figma-parser
34
+ npm install
35
+ ```
36
+
37
+ 2. Run the plugin UI:
38
+ ```
39
+ npm run watch
40
+ ```
41
+
42
+ ### Usage
43
+
44
+ 1. Open Figma Desktop App
45
+ 2. Enable Figma Dev Mode
46
+ 3. Under Plugin tab > Click + > Select `Import plugin from manifest` > select the `manifest.json`
47
+ 4. Click the plugin and then select the Pedal
48
+ 5. Click `Export All` or `Export JSON only` to export assets
49
+
50
+ ## Figma Naming Conventions
51
+
52
+ ### Pedal Design
53
+
54
+ - The main Figma node should be named `pedal design`
55
+ - Display name must match the PM documentation
56
+ - Template name format: `compact-nk`, `med-slim-nk`, `med-stout-nk` (where n is the number of knobs)
57
+ - Knob name: no spaces, all lowercase
58
+ - Group in Figma named `knob`
59
+ - Toggle name: no spaces, all lowercase
60
+ - Group in Figma named `toggle`
61
+ - Footswitch name: no spaces, all lowercase
62
+ - Group in Figma named `footswitch`
63
+ - LED name: no spaces, all lowercase
64
+ - Group in Figma named `led`
65
+ - Slider name: no spaces, all lowercase
66
+ - Group in Figma named `slider`
67
+ - Body image name: `body-pedal name`
68
+ - Pedal name can include spaces, use all lowercase
69
+ - Should match the title/display name, don't add dashes
70
+ - Extra elements: use `extra-` prefix
71
+ - Example: `extra-lcd`
72
+
73
+ ## Config JSON Format
74
+
75
+ The plugin generates a JSON configuration file for each FX. Here's the format:
76
+
77
+ ### Key Properties
78
+
79
+ - **name**: Display name in lowercase with spaces removed
80
+ - Example: `"name": "bluedelay"`
81
+
82
+ - **template**: Reference to the pedal template design
83
+ - Options: `compact`, `med-slim`, `med-stout`
84
+ - May include knob count suffix (e.g., `compact-3k` for compact with 3 knobs)
85
+
86
+ - **toggle**: Toggle switch type
87
+ - Options: `round`, `rectangle`, `slider`
88
+
89
+ - **footSwitch**: Footswitch type
90
+ - Options: `default`, `press`
91
+
92
+ - **led**: LED indicator type
93
+ - Options: `on`, `off`
94
+
95
+ ### Example
96
+
97
+ ```json
98
+ {
99
+ "name": "bluedelay",
100
+ "template": "med-slim-3k",
101
+ "toggle": "round",
102
+ "footSwitch": "default",
103
+ "led": "on"
104
+ }
105
+ ```
106
+
107
+ ## Additional Resources
108
+
109
+ For more detailed information about the Figma parser plugin, refer to:
110
+ - Plugin source code: `tools/gear-figma-parser`
111
+ - Asset generation details: See `parsePedalDesign` in `code.ts` within the plugin