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.
- package/README.md +89 -0
- package/content/docs/README.md +227 -0
- package/content/docs/index.md +352 -0
- package/content/docs/instructions/coding-conventions/.clang-format +65 -0
- package/content/docs/instructions/coding-conventions/cpp.md +132 -0
- package/content/docs/instructions/coding-conventions/frontend.md +612 -0
- package/content/docs/instructions/coding-conventions/team-wide.md +176 -0
- package/content/docs/instructions/workflows/assets/jira-1.png +0 -0
- package/content/docs/instructions/workflows/assets/jira-comment.png +0 -0
- package/content/docs/instructions/workflows/assets/jira-release-note.png +0 -0
- package/content/docs/instructions/workflows/assets/jira-tag.png +0 -0
- package/content/docs/instructions/workflows/code-review.md +451 -0
- package/content/docs/instructions/workflows/git-branch-convention.md +246 -0
- package/content/docs/instructions/workflows/git-commit.md +95 -0
- package/content/docs/instructions/workflows/jira-process.md +173 -0
- package/content/docs/instructions/workflows/jira-ticket-guide.md +105 -0
- package/content/docs/instructions/workflows/pull-request-generation.md +319 -0
- package/content/docs/instructions/workflows/scrum-process.md +104 -0
- package/content/docs/instructions/workflows/survey-project-setup.md +76 -0
- package/content/docs/knowledge/architecture/README.md +11 -0
- package/content/docs/knowledge/architecture/audio-plugin-architecture.md +213 -0
- package/content/docs/knowledge/architecture/cross-platform-design.md +176 -0
- package/content/docs/knowledge/architecture/frontend-native-bridge.md +193 -0
- package/content/docs/knowledge/architecture/native-command.md +189 -0
- package/content/docs/knowledge/architecture/state-management-architecture.md +105 -0
- package/content/docs/knowledge/component-library/ControlComponent/README.md +281 -0
- package/content/docs/knowledge/component-library/ControlComponent/accessibility/accessibility-implementation.md +503 -0
- package/content/docs/knowledge/component-library/ControlComponent/common-mechanisms.md +278 -0
- package/content/docs/knowledge/component-library/ControlComponent/core/error-handling.md +451 -0
- package/content/docs/knowledge/component-library/ControlComponent/core/native-interface.md +515 -0
- package/content/docs/knowledge/component-library/ControlComponent/core/state-management.md +509 -0
- package/content/docs/knowledge/component-library/ControlComponent/creating-new-controls.md +654 -0
- package/content/docs/knowledge/component-library/ControlComponent/design/api-design-reference.md +1142 -0
- package/content/docs/knowledge/component-library/ControlComponent/design/design-principles.md +336 -0
- package/content/docs/knowledge/component-library/ControlComponent/design/styling-architecture.md +595 -0
- package/content/docs/knowledge/component-library/ControlComponent/design/visual-feedback.md +456 -0
- package/content/docs/knowledge/component-library/ControlComponent/development-environment.md +213 -0
- package/content/docs/knowledge/component-library/ControlComponent/interaction/gesture-algorithms.md +705 -0
- package/content/docs/knowledge/component-library/ControlComponent/interaction/touch-support.md +525 -0
- package/content/docs/knowledge/component-library/ControlComponent/interaction/value-processing-patterns.md +801 -0
- package/content/docs/knowledge/component-library/ControlComponent/interaction/velocity-damping-systems.md +741 -0
- package/content/docs/knowledge/component-library/ControlComponent/knob/architecture.md +490 -0
- package/content/docs/knowledge/component-library/ControlComponent/knob/how-to-use.md +304 -0
- package/content/docs/knowledge/component-library/ControlComponent/knob/index.md +105 -0
- package/content/docs/knowledge/component-library/ControlComponent/optimization/performance-benchmarks.md +535 -0
- package/content/docs/knowledge/component-library/ControlComponent/optimization/performance-optimization.md +1092 -0
- package/content/docs/knowledge/component-library/ControlComponent/quick-start.md +345 -0
- package/content/docs/knowledge/component-library/ControlComponent/slider/architecture.md +444 -0
- package/content/docs/knowledge/component-library/ControlComponent/slider/how-to-use.md +470 -0
- package/content/docs/knowledge/component-library/ControlComponent/slider/index.md +107 -0
- package/content/docs/knowledge/component-library/ControlComponent/testing-guide.md +950 -0
- package/content/docs/knowledge/component-library/ControlComponent/troubleshooting.md +657 -0
- package/content/docs/knowledge/component-library/frontend-develop/LICENSE.txt +176 -0
- package/content/docs/knowledge/component-library/frontend-develop/SKILL.md +124 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/code-organization.md +620 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/coding-standards.md +275 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/component-reusability.md +559 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/examples.md +554 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/layout-separation.md +638 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/performance-optimization.md +678 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/state-management.md +331 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/styling-guidelines.md +349 -0
- package/content/docs/knowledge/component-library/frontend-develop/references/type-safety.md +493 -0
- package/content/docs/knowledge/development/assets/cyberduck-aws-credentials.png +0 -0
- package/content/docs/knowledge/development/assets/postman-environment-setup.png +0 -0
- package/content/docs/knowledge/development/aws-storage.md +95 -0
- package/content/docs/knowledge/development/crm-system.md +22 -0
- package/content/docs/knowledge/development/glossary.md +246 -0
- package/content/docs/knowledge/development/pg-api-guide.md +71 -0
- package/content/docs/knowledge/development/staging-license-management.md +44 -0
- package/content/docs/knowledge/development/tech-stack.md +240 -0
- package/content/docs/knowledge/domain/popup-system.md +106 -0
- package/content/docs/knowledge/domain/sigpath.md +264 -0
- package/content/docs/knowledge/environment-setup/aax-signing-update.md +149 -0
- package/content/docs/knowledge/environment-setup/assets/aax-1.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/aax-2.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/aax-3.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/aax-4.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/aax-5.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/aax-6.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/aax-7.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-1.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-10.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-11.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-12.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-13.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-14.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-2.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-3.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-4.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-5.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-6.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-7.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-8.png +0 -0
- package/content/docs/knowledge/environment-setup/assets/buildmachine-9.png +0 -0
- package/content/docs/knowledge/environment-setup/build-machine-setup.md +224 -0
- package/content/docs/knowledge/environment-setup/build-machine-troubleshooting.md +193 -0
- package/content/docs/knowledge/implementation-guides/adding-amp.md +190 -0
- package/content/docs/knowledge/implementation-guides/adding-fx.md +111 -0
- package/content/docs/knowledge/implementation-guides/cab-integration.md +194 -0
- package/content/docs/knowledge/implementation-guides/custom-pedal-integration.md +309 -0
- package/content/docs/knowledge/projects/BIAS_ONE_GUI/README.md +17 -0
- package/content/manifest.json +122 -0
- package/content/rules/cpp.mdc +135 -0
- package/content/rules/frontend.mdc +615 -0
- package/content/rules/index.mdc +256 -0
- package/content/rules/knowledge.mdc +46 -0
- package/content/rules/team-wide.mdc +179 -0
- package/content/rules/workflows.mdc +43 -0
- package/content/tools/agents/context-compressor.md +357 -0
- package/content/tools/agents/context-writer.md +328 -0
- package/content/tools/agents/release-notes-generator.md +389 -0
- package/content/tools/agents/srs-writer-agent.md +63 -0
- package/content/tools/mcp/README.md +25 -0
- package/content/tools/mcp/mcp-desktop-team.example.json +13 -0
- package/content/tools/skills/frontend-develop/LICENSE.txt +176 -0
- package/content/tools/skills/frontend-develop/SKILL.md +124 -0
- package/content/tools/skills/frontend-develop/references/code-organization.md +620 -0
- package/content/tools/skills/frontend-develop/references/coding-standards.md +275 -0
- package/content/tools/skills/frontend-develop/references/component-reusability.md +559 -0
- package/content/tools/skills/frontend-develop/references/examples.md +554 -0
- package/content/tools/skills/frontend-develop/references/layout-separation.md +638 -0
- package/content/tools/skills/frontend-develop/references/performance-optimization.md +678 -0
- package/content/tools/skills/frontend-develop/references/state-management.md +331 -0
- package/content/tools/skills/frontend-develop/references/styling-guidelines.md +349 -0
- package/content/tools/skills/frontend-develop/references/type-safety.md +493 -0
- package/content/tools/slash-commands/commit.md +17 -0
- package/content/tools/slash-commands/context-compress.md +149 -0
- package/content/tools/slash-commands/context-write.md +92 -0
- package/content/tools/slash-commands/jira.md +12 -0
- package/content/tools/slash-commands/pr-gen.md +12 -0
- package/content/tools/slash-commands/pr-review.md +12 -0
- package/dist/commands/detect.d.ts +1 -0
- package/dist/commands/detect.js +33 -0
- package/dist/commands/install.d.ts +1 -0
- package/dist/commands/install.js +100 -0
- package/dist/commands/uninstall.d.ts +1 -0
- package/dist/commands/uninstall.js +132 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +53 -0
- package/dist/lib/detect-env.d.ts +3 -0
- package/dist/lib/detect-env.js +52 -0
- package/dist/lib/prompt-env.d.ts +3 -0
- package/dist/lib/prompt-env.js +16 -0
- package/dist/lib/resolve-doc-repo.d.ts +14 -0
- package/dist/lib/resolve-doc-repo.js +61 -0
- package/dist/lib/symlink.d.ts +7 -0
- package/dist/lib/symlink.js +60 -0
- package/dist/lib/sync-from-manifest.d.ts +8 -0
- package/dist/lib/sync-from-manifest.js +64 -0
- 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
|
+

|
|
50
|
+
|
|
51
|
+
**重要**:目前公司 macOS 和 Windows build machine 各有一隻 iLok USB,沒有添購更多。如果要使用,請把 iLok USB 接到對應的 build machine 上。
|
|
52
|
+
|
|
53
|
+
### 驗證授權狀態
|
|
54
|
+
|
|
55
|
+
若 iLok 有成功抓到授權,會顯示如下圖,對應的 iLok 會 activated,並且上面有一個戳記圖騰:
|
|
56
|
+
|
|
57
|
+

|
|
58
|
+
|
|
59
|
+
### 更新過期授權
|
|
60
|
+
|
|
61
|
+
若授權過期,超過 expire date,可以與 IT 確認 renew 後,點擊右鍵選擇 `Refresh`:
|
|
62
|
+
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 安裝 PACE Anti-Piracy Eden Tool
|
|
68
|
+
|
|
69
|
+
此項目主要是用來授權 AAX plugin。
|
|
70
|
+
|
|
71
|
+

|
|
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
|
+

|
|
85
|
+
|
|
86
|
+
3. **下載 Eden SDK**
|
|
87
|
+
- 進去後點選 "DEVELOPER" 即可進入各版本下載頁
|
|
88
|
+
|
|
89
|
+

|
|
90
|
+
|
|
91
|
+
4. **設定環境變數**
|
|
92
|
+
- 將 `PACE_FUSION_HOME` 加入到 user 環境變數
|
|
93
|
+
|
|
94
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
137
|
+
|
|
138
|
+
### 正確安裝示例
|
|
139
|
+
|
|
140
|
+
正確安裝憑證如下圖示(SKLFZ4533Y 那個):
|
|
141
|
+
|
|
142
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|