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,194 @@
1
+ # Adding Cab
2
+
3
+ *Last Updated: 2025-03-02*
4
+
5
+ This document outlines the process for integrating new cab assets into the BIAS_ONE_GUI project using the Figma parser tool.
6
+
7
+ ## Overview
8
+
9
+ The cab integration process involves extracting cab assets from Figma designs, generating the necessary JSON files, and placing the assets in the correct directories within the BIAS_ONE_GUI project. This guide will walk you through each step of the process.
10
+
11
+ ## Cab Reference Data
12
+
13
+ For cab initialization data, refer to the following Google Spreadsheet:
14
+ [BIAS ONE Cab Reference Data](https://docs.google.com/spreadsheets/d/1GbX8jtDhavA5rNZoTNQ8rY9-fVTb9IS-qhvv1-AMIic/edit?gid=1857417807#gid=1857417807)
15
+
16
+ ### Available Fields in the Spreadsheet
17
+
18
+ The spreadsheet contains the following fields for each cab:
19
+
20
+ - **UUID**: Unique identifier for the cab (e.g., "50B743E0-E702-476C-8A62-57FB0B1C0FFD") - *Defined by desktop developers*
21
+ - **DSP Value**: The DSP parameter value used to select this cab in the backend (e.g., 0.001, 0.002) - *Assigned by the DSP team, cannot be modified by desktop developers*
22
+ - **Display Name**: The name shown in the UI (e.g., "Blackface", "British 30") - *Defined by Product Management*
23
+ - **Speaker Configuration**: The speaker layout (e.g., "1x12", "2x12", "4x12") - *Defined by Product Management*
24
+ - **Category**: The cab category (e.g., "Electric Guitar", "Bass", "Acoustic") - *Defined by Product Management*
25
+ - **Display Order**: The order in which cabs appear within their category in the UI - *Defined by Product Management*
26
+
27
+ ### How to Use the Reference Data
28
+
29
+ When accessing the spreadsheet:
30
+
31
+ 1. **For Adding New Cabs**:
32
+ - Desktop developers should generate a new UUID
33
+ - Consult with the DSP team to get an assigned DSP value
34
+ - Get the display name, speaker configuration, category, and display order from Product Management
35
+
36
+ 2. **For Updating Existing Cabs**:
37
+ - Reference the spreadsheet to ensure consistency with existing cab configurations
38
+ - Note that DSP values cannot be modified by desktop developers
39
+ - Any changes to display names, categories, or other UI elements must be approved by Product Management
40
+
41
+ 3. **For Integration with DSP**:
42
+ - The DSP value from the spreadsheet (assigned by the DSP team) must be used in the `cabSpeakerBg.json` file to properly map the cab to its visual representation
43
+ - Never create or modify DSP values without DSP team approval
44
+
45
+ 4. **For UI Integration**:
46
+ - Use the display name, speaker configuration, category, and display order values (defined by Product Management) when updating the `cabDisplayInfo.json` file
47
+
48
+ This reference data is essential when adding new cabs to ensure proper integration with both the UI and DSP components of the application.
49
+
50
+ ## Prerequisites
51
+
52
+ - Access to the Figma design file containing cab designs
53
+ - Node.js installed on your machine
54
+ - BIAS_ONE_GUI project cloned locally
55
+
56
+ ## Step 1: Using the Figma Parser
57
+
58
+ The Figma parser tool (`tools/gear-figma-parser`) is used to extract cab assets from Figma designs.
59
+
60
+ ### Figma Design Requirements for Cab
61
+
62
+ - The main node in Figma must be named `cab design`
63
+ - The node should contain:
64
+ - TEXT: Cab Name (e.g., "Blackface")
65
+ - TEXT: UUID (e.g., "50B743E0-E702-476C-8A62-57FB0B1C0FFD")
66
+ - RECTANGLE: Cab on signal path (for thumbnail image)
67
+
68
+ ### Running the Figma Parser
69
+
70
+ 1. Navigate to the `tools/gear-figma-parser` directory:
71
+ ```bash
72
+ cd tools/gear-figma-parser
73
+ ```
74
+
75
+ 2. Install dependencies:
76
+ ```bash
77
+ npm install
78
+ ```
79
+
80
+ 3. Run the plugin UI:
81
+ ```bash
82
+ npm run watch
83
+ ```
84
+
85
+ 4. In the Figma Desktop App:
86
+ - Enable Figma Dev Mode
87
+ - Under Plugin tab > Click + > Select `Import plugin from manifest` > select the `manifest.json` from the gear-figma-parser directory
88
+ - Click the plugin and then select the Cab design
89
+ - Click `Export All` or `Export JSON only` to export assets
90
+
91
+ The parser will generate:
92
+ - A JSON file with the cab's UUID as the filename
93
+ - A PNG image for the signal path thumbnail named `sigpath-[UUID].png`
94
+
95
+ ## Step 2: Moving Assets to template-cab
96
+
97
+ 1. Move the generated JSON file to the `public/gear/template-cab` directory:
98
+ ```bash
99
+ mv [UUID].json public/gear/template-cab/
100
+ ```
101
+
102
+ 2. Verify that the JSON file contains the cab's UUID:
103
+ ```json
104
+ {"id":"[UUID]"}
105
+ ```
106
+
107
+ ## Step 3: Updating cabDisplayInfo.json
108
+
109
+ Update the `public/gear/cabDisplayInfo.json` file to include the new cab:
110
+
111
+ 1. Open `public/gear/cabDisplayInfo.json`
112
+ 2. Add a new entry to the `data` object:
113
+ ```json
114
+ "[UUID]": {
115
+ "displayName": "Cab Name",
116
+ "directName": "Speaker Configuration (e.g., 1x12, 2x12, 4x12)",
117
+ "categoryKey": "Category (e.g., Electric Guitar, Acoustic & Bass)",
118
+ "displayOrder": [Next available number in the category]
119
+ }
120
+ ```
121
+
122
+ Example:
123
+ ```json
124
+ "NEW-UUID-HERE": {
125
+ "displayName": "New Cab",
126
+ "directName": "2x12",
127
+ "categoryKey": "Electric Guitar",
128
+ "displayOrder": 20
129
+ }
130
+ ```
131
+
132
+ If needed, add a new category to the `category` object:
133
+ ```json
134
+ "New Category": "New Category Display Name"
135
+ ```
136
+
137
+ ## Step 4: Updating cabSpeakerBg.json
138
+
139
+ Update the `public/gear/cabSpeakerBg.json` file to map the cab's DSP value to a speaker background image:
140
+
141
+ 1. Open `public/gear/cabSpeakerBg.json`
142
+ 2. Add a new entry:
143
+ ```json
144
+ "0.XXX": "images/Cab3/Speaker.Default.png"
145
+ ```
146
+
147
+ Replace `0.XXX` with the DSP value for the new cab, and use either `Speaker.Default.png` or `Speaker.Spectre.png` as appropriate for the cab type.
148
+
149
+ ## Step 5: Moving Assets to Cab3
150
+
151
+ If your cab requires a custom speaker background image:
152
+
153
+ 1. Create the speaker background image named according to the cab (e.g., `Speaker.NewCab.png`)
154
+ 2. Move the image to the `public/images/Cab3` directory:
155
+ ```bash
156
+ mv Speaker.NewCab.png public/images/Cab3/
157
+ ```
158
+ 3. Update the `cabSpeakerBg.json` file to reference this new image:
159
+ ```json
160
+ "0.XXX": "images/Cab3/Speaker.NewCab.png"
161
+ ```
162
+
163
+ ## Step 6: Moving Assets to SigPath/Cab
164
+
165
+ Move the signal path thumbnail image to the `public/images/SigPath/Cab` directory:
166
+
167
+ ```bash
168
+ mv sigpath-[UUID].png public/images/SigPath/Cab/
169
+ ```
170
+
171
+ This image will be used to display the cab in the signal path view.
172
+
173
+ ## Troubleshooting
174
+
175
+ ### Missing Images
176
+
177
+ If images are not displaying correctly:
178
+ - Verify that the image paths in `cabSpeakerBg.json` are correct
179
+ - Check that all image files have been moved to the correct directories
180
+ - Ensure that the image filenames match the references in the JSON files
181
+
182
+ ### Cab Not Appearing in UI
183
+
184
+ If the cab is not appearing in the UI:
185
+ - Verify that the cab has been added to `cabDisplayInfo.json` with the correct UUID
186
+ - Check that the cab's JSON file exists in the `public/gear/template-cab` directory
187
+ - Ensure that the signal path thumbnail image exists in `public/images/SigPath/Cab`
188
+
189
+ ### Figma Parser Issues
190
+
191
+ If the Figma parser is not generating the expected files:
192
+ - Verify that the Figma design follows the required structure
193
+ - Check that the cab design node is named `cab design`
194
+ - Ensure that the UUID text node contains a valid UUID
@@ -0,0 +1,309 @@
1
+ # Custom Pedal Integration Guide
2
+
3
+ *Last Updated: 2025-03-02*
4
+
5
+ This guide explains how to integrate custom pedals with specialized UI components into BIAS X.
6
+
7
+ ## Overview
8
+
9
+ BIAS X supports custom pedal interfaces that go beyond standard controls, allowing for specialized interactions like wah pedals with foot controllers, delay units with tape animations, and other unique interfaces. These custom pedals are implemented through:
10
+
11
+ 1. Panel JSON configuration files
12
+ 2. Background images
13
+ 3. Custom React components
14
+
15
+ ## File Structure and Naming Conventions
16
+
17
+ ### Panel Configuration Files
18
+
19
+ Panel configuration files follow this naming pattern:
20
+ - `public/panel/DSP.<dspId>.Panel.json` - Main configuration file
21
+
22
+ ### Background Images
23
+
24
+ Background images follow these naming patterns:
25
+ - `public/panel/DSP.<dspId>.BG.png` - Main panel background
26
+ - `public/panel/DSP.<dspId>.Panel.Board.png` - Pedal board view (for wah-like pedals)
27
+ - `public/panel/DSP.<dspId>.Pedal.BG.png` - Pedal background (for pedalboard view)
28
+
29
+ ## Panel JSON Configuration
30
+
31
+ ### Basic Structure
32
+
33
+ ```json
34
+ {
35
+ "data": {
36
+ "id": "dspId",
37
+ "shouldScale": false,
38
+ "width": 1000,
39
+ "height": 600,
40
+ "ratio": 1,
41
+ "y": 0,
42
+
43
+ "bg": {
44
+ "normal": "panel/DSP.dspId.BG.png",
45
+ "retina": "panel/DSP.dspId.BG@2x.png",
46
+ "width": 1000,
47
+ "height": 600,
48
+ "x": 0,
49
+ "y": 0
50
+ },
51
+
52
+ "controls": [
53
+ // Control definitions
54
+ ],
55
+
56
+ "powers": [
57
+ // Power button and LED definitions
58
+ ],
59
+
60
+ "cables": [
61
+ // Cable definitions
62
+ ]
63
+ }
64
+ }
65
+ ```
66
+
67
+ ### Standard Controls
68
+
69
+ #### Knob Control
70
+
71
+ ```json
72
+ {
73
+ "pid": 0,
74
+ "param": "gain",
75
+ "type": "knob",
76
+ "width": 60,
77
+ "height": 60,
78
+ "x": 100,
79
+ "y": 200,
80
+ "res": "knob/chicken-black"
81
+ }
82
+ ```
83
+
84
+ #### Switch Control
85
+
86
+ ```json
87
+ {
88
+ "pid": 1,
89
+ "param": "mode",
90
+ "type": "switch",
91
+ "width": 40,
92
+ "height": 40,
93
+ "x": 200,
94
+ "y": 300,
95
+ "res": "switch/toggle-1"
96
+ }
97
+ ```
98
+
99
+ #### Slider Control
100
+
101
+ ```json
102
+ {
103
+ "pid": 2,
104
+ "param": "level",
105
+ "type": "slider",
106
+ "width": 200,
107
+ "height": 20,
108
+ "x": 300,
109
+ "y": 400,
110
+ "useSimpleTransform": true,
111
+ "res": "slider/fader-1"
112
+ }
113
+ ```
114
+
115
+ ### Wah-like Pedals
116
+
117
+ For pedals with specialized foot controller interfaces:
118
+
119
+ ```json
120
+ {
121
+ "data": {
122
+ "id": "CryWah",
123
+ "panel": {
124
+ "width": 1978,
125
+ "height": 800,
126
+ "reflection": {
127
+ "src": "panel/DSP.CryWah.BG.png",
128
+ "y": 680
129
+ },
130
+ "bg": {
131
+ "normal": "panel/DSP.CryWah.BG.png",
132
+ "width": 1978,
133
+ "height": 800,
134
+ "x": -30,
135
+ "y": 0
136
+ }
137
+ },
138
+ "pedal": {
139
+ "bg": {
140
+ "normal": "panel/DSP.CryWah.Pedal.BG.png"
141
+ },
142
+ "board": {
143
+ "normal": "panel/DSP.CryWah.Panel.Board.png"
144
+ },
145
+ "rotation": {
146
+ "origin": {
147
+ "x": 0.5,
148
+ "y": 0.8
149
+ },
150
+ "min": 0,
151
+ "max": 20
152
+ }
153
+ },
154
+ "decorations": [
155
+ {
156
+ "res": "images/Customization/CryWah/screw.png",
157
+ "width": 1978,
158
+ "height": 800,
159
+ "x": -30,
160
+ "y": 0
161
+ }
162
+ ]
163
+ }
164
+ }
165
+ ```
166
+
167
+ ## Custom Component Implementation
168
+
169
+ For pedals requiring specialized UI beyond standard controls, you need to create custom React components.
170
+
171
+ ### Component Structure
172
+
173
+ 1. Create a directory for your custom pedal:
174
+ ```
175
+ src/components/dumbs/addons-pedal-panel/YourPedalName/
176
+ ```
177
+
178
+ 2. Create an index.tsx file with your component implementation:
179
+ ```
180
+ src/components/dumbs/addons-pedal-panel/YourPedalName/index.tsx
181
+ ```
182
+
183
+ ### Example Implementation
184
+
185
+ Here's an example of a custom wah pedal implementation. 專案已不再使用 Emotion;新程式請以 Tailwind 或 `style` 實作樣式。
186
+
187
+ ```tsx
188
+ import React from 'react';
189
+ import RotationPedal from '@/src/components/dumbs/pedal-panel-customization/shared/RotationPedal';
190
+ import { ParameterPanel, usePanelStore, usePanelStoreSelector } from '@/src/components/panel-factory/shared';
191
+ import { ROOT_FOLDER } from '@/src/utils/assetUtils';
192
+
193
+ const PEDAL_IMG_URL = `url(${ROOT_FOLDER}/panel/DSP.CryWah.Panel.Board.png)`;
194
+
195
+ const PID_FILTER = 0;
196
+
197
+ const CryWah: ParameterPanel = ({ config }) => {
198
+ const { updateParameterValue } = usePanelStore().getState();
199
+ const pidFilter = usePanelStoreSelector((state) => state.parameterValues[PID_FILTER]);
200
+ const { x, y, height, width } = config.bg;
201
+
202
+ return (
203
+ <RotationPedal
204
+ value={pidFilter}
205
+ originX={729 / width}
206
+ originY={410 / height}
207
+ minRotationAngle={0}
208
+ maxRotationAngle={+11}
209
+ panelXOffset={-30}
210
+ panelYOffset={0}
211
+ style={{
212
+ width: width,
213
+ height: height,
214
+ top: y,
215
+ left: x,
216
+ backgroundImage: PEDAL_IMG_URL,
217
+ }}
218
+ onChange={(value) => updateParameterValue(PID_FILTER, value)}
219
+ />
220
+ );
221
+ };
222
+
223
+ export default CryWah;
224
+ ```
225
+
226
+ ### Reusable Components
227
+
228
+ The system provides several reusable components for building custom pedal interfaces:
229
+
230
+ - `RotationPedal`: For pedals that rotate (like wah pedals)
231
+ - `ImageKnob`: For custom knob implementations
232
+ - `MaskedBgSlider`: For sliders with custom backgrounds
233
+ - `Toggle`: For toggle switches
234
+ - `Indicator`: For LED indicators
235
+
236
+ ## Registering Custom Components
237
+
238
+ To make your custom component available in the application, you need to register it in the addons panel map:
239
+
240
+ 1. Open `src/components/panel-factory/shared/customization/addonsPanelMap.tsx`
241
+ 2. Import your component:
242
+ ```tsx
243
+ const YourPedalName = React.lazy(() => import('@/src/components/dumbs/addons-pedal-panel/YourPedalName'));
244
+ ```
245
+ 3. Add it to the panel map:
246
+ ```tsx
247
+ panelMap.set('YourPedalDspId', YourPedalName);
248
+ ```
249
+ 4. For pedals that should be available in pedalboard mode:
250
+ ```tsx
251
+ panelMap.set('YourPedalDspId', [YourPedalName, true]);
252
+ ```
253
+
254
+ ## Integration Process
255
+
256
+ 1. **Create Panel JSON**: Define the panel configuration in `public/panel/DSP.<dspId>.Panel.json`
257
+ 2. **Prepare Assets**: Create and place background images in the `public/panel/` directory
258
+ 3. **Implement Custom Component**: Create your React component in `src/components/dumbs/addons-pedal-panel/`
259
+ 4. **Register Component**: Add your component to the addons panel map
260
+ 5. **Test**: Test your implementation in both panel and pedalboard modes
261
+
262
+ ## AddonsContainer Component
263
+
264
+ The `AddonsContainer` component in `src/components/smarts/pedal-panel/AddonsContainer.tsx` is responsible for rendering the custom pedal components:
265
+
266
+ ```tsx
267
+ export const AddonsContainer: ParameterPanel = (props) => {
268
+ const { api } = props;
269
+ const { selectedFx } = usePanelStore().getState();
270
+ const addonsComp = getAddonsPanel({ ...props, selectedFx });
271
+ return (
272
+ <div className={`pedal-panel-v2--addons relative left-0 top-0`}>
273
+ <Provider store={api.getStore()}>{addonsComp}</Provider>
274
+ </div>
275
+ );
276
+ };
277
+ ```
278
+
279
+ This component uses `getAddonsPanel` from `addonsPanelMap.tsx` to retrieve and render the appropriate custom component based on the selected effect.
280
+
281
+ ## Legacy vs. Modern Components
282
+
283
+ BIAS X supports two types of custom pedal components:
284
+
285
+ 1. **Modern Components**: Located in `src/components/dumbs/addons-pedal-panel/`
286
+ - Registered in `panelMap`
287
+ - Used by `AddonsContainer`
288
+
289
+ 2. **Legacy Components**: Located in `src/components/dumbs/pedal-panel-customization/`
290
+ - Registered in `legacyPanelMap`
291
+ - Used by `LegacyAddonsContainer`
292
+
293
+ When creating new custom pedals, use the modern approach with components in the `addons-pedal-panel` directory.
294
+
295
+ ## Best Practices
296
+
297
+ 1. **Component Organization**: Keep all files related to a specific pedal in its own directory
298
+ 2. **Parameter Access**: Use `usePanelStoreSelector` to access parameter values
299
+ 3. **Parameter Updates**: Use `updateParameterValue` from the panel store to update parameters
300
+ 4. **Responsive Design**: Use relative positioning and sizing for proper scaling
301
+ 5. **Performance**: Optimize renders using React.memo and useMemo where appropriate
302
+ 6. **Reusable Components**: Leverage existing components like RotationPedal for common interactions
303
+
304
+ ## Troubleshooting
305
+
306
+ 1. **Component Not Appearing**: Verify the component is properly registered in the addons panel map
307
+ 2. **Parameter Not Updating**: Check that the PID matches the parameter ID in the DSP
308
+ 3. **Styling Issues**: Ensure background images are properly referenced and sized
309
+ 4. **Performance Issues**: Check for unnecessary re-renders or heavy computations
@@ -0,0 +1,17 @@
1
+ # BIAS_ONE_GUI Knowledge Base
2
+
3
+ Project-specific knowledge for the BIAS_ONE_GUI application.
4
+
5
+ ## Structure
6
+
7
+ - **architecture/** – State management, native bridge, API clients, component architecture
8
+ - **core-components/** – Signal Path, Panel Factory, Guitar Match, Preset AI, App Navigation
9
+ - **gear-customization/** – Amp, Effect, Cab, Custom Pedal integration
10
+ - **redux-slices/** – Slice and thunk action documentation
11
+ - **services-and-utils/** – Configuration, localization, license, Firebase Remote Config
12
+
13
+ ## Related Documentation
14
+
15
+ - [Architecture Patterns](../../architecture/) – Team-wide architecture patterns
16
+ - [Implementation Guides](../../implementation-guides/) – Adding amp, FX, cab, custom pedals
17
+ - [Signal Path](../../domain/sigpath.md) – Signal path domain knowledge
@@ -0,0 +1,122 @@
1
+ {
2
+ "version": "1",
3
+ "entries": [
4
+ {
5
+ "src": "docs/instructions",
6
+ "type": "dir",
7
+ "cursor": ".cursor/docs/instructions",
8
+ "claude": ".claude/docs/instructions",
9
+ "roo": ".roo/rules/desktop-team-documentation/instructions",
10
+ "gemini": ".gemini/docs/instructions",
11
+ "description": "Coding conventions and workflows"
12
+ },
13
+ {
14
+ "src": "docs/knowledge",
15
+ "type": "dir",
16
+ "cursor": ".cursor/docs/knowledge",
17
+ "claude": ".claude/docs/knowledge",
18
+ "roo": ".roo/rules/desktop-team-documentation/knowledge",
19
+ "gemini": ".gemini/docs/knowledge",
20
+ "description": "Knowledge base (architecture, development, projects, implementation-guides, component-library, domain)"
21
+ },
22
+ {
23
+ "src": "docs/index.md",
24
+ "type": "file",
25
+ "cursor": ".cursor/docs/index.md",
26
+ "claude": ".claude/docs/index.md",
27
+ "roo": ".roo/rules/desktop-team-documentation/index.md",
28
+ "gemini": ".gemini/docs/index.md",
29
+ "description": "Main documentation index"
30
+ },
31
+ {
32
+ "src": "docs/README.md",
33
+ "type": "file",
34
+ "cursor": ".cursor/docs/README.md",
35
+ "claude": ".claude/docs/README.md",
36
+ "roo": ".roo/rules/desktop-team-documentation/README.md",
37
+ "gemini": ".gemini/docs/README.md",
38
+ "description": "Repository README"
39
+ },
40
+ {
41
+ "src": "rules/cpp.mdc",
42
+ "type": "file",
43
+ "cursor": ".cursor/rules/cpp.mdc",
44
+ "claude": ".claude/rules/cpp.mdc",
45
+ "roo": null,
46
+ "gemini": ".gemini/rules/cpp.mdc",
47
+ "description": "Cursor/Claude rule file"
48
+ },
49
+ {
50
+ "src": "rules/frontend.mdc",
51
+ "type": "file",
52
+ "cursor": ".cursor/rules/frontend.mdc",
53
+ "claude": ".claude/rules/frontend.mdc",
54
+ "roo": null,
55
+ "gemini": ".gemini/rules/frontend.mdc",
56
+ "description": "Cursor/Claude rule file"
57
+ },
58
+ {
59
+ "src": "rules/index.mdc",
60
+ "type": "file",
61
+ "cursor": ".cursor/rules/index.mdc",
62
+ "claude": ".claude/rules/index.mdc",
63
+ "roo": null,
64
+ "gemini": ".gemini/rules/index.mdc",
65
+ "description": "Cursor/Claude rule file"
66
+ },
67
+ {
68
+ "src": "rules/knowledge.mdc",
69
+ "type": "file",
70
+ "cursor": ".cursor/rules/knowledge.mdc",
71
+ "claude": ".claude/rules/knowledge.mdc",
72
+ "roo": null,
73
+ "gemini": ".gemini/rules/knowledge.mdc",
74
+ "description": "Cursor/Claude rule file"
75
+ },
76
+ {
77
+ "src": "rules/team-wide.mdc",
78
+ "type": "file",
79
+ "cursor": ".cursor/rules/team-wide.mdc",
80
+ "claude": ".claude/rules/team-wide.mdc",
81
+ "roo": null,
82
+ "gemini": ".gemini/rules/team-wide.mdc",
83
+ "description": "Cursor/Claude rule file"
84
+ },
85
+ {
86
+ "src": "rules/workflows.mdc",
87
+ "type": "file",
88
+ "cursor": ".cursor/rules/workflows.mdc",
89
+ "claude": ".claude/rules/workflows.mdc",
90
+ "roo": null,
91
+ "gemini": ".gemini/rules/workflows.mdc",
92
+ "description": "Cursor/Claude rule file"
93
+ },
94
+ {
95
+ "src": "tools/agents",
96
+ "type": "dir",
97
+ "cursor": ".cursor/agents",
98
+ "claude": ".claude/agents",
99
+ "roo": null,
100
+ "gemini": ".gemini/agents",
101
+ "description": "Agent definitions"
102
+ },
103
+ {
104
+ "src": "tools/skills",
105
+ "type": "dir",
106
+ "cursor": ".cursor/skills",
107
+ "claude": ".claude/skills",
108
+ "roo": null,
109
+ "gemini": null,
110
+ "description": "Skills (from knowledge dirs with SKILL.md)"
111
+ },
112
+ {
113
+ "src": "tools/slash-commands",
114
+ "type": "dir",
115
+ "cursor": ".cursor/commands/team",
116
+ "claude": ".claude/commands/team",
117
+ "roo": null,
118
+ "gemini": ".gemini/commands/team",
119
+ "description": "Slash commands"
120
+ }
121
+ ]
122
+ }