speccrew 0.7.8 → 0.7.10

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 (17) hide show
  1. package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-FASTAPI.md +23 -23
  2. package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-JAVA.md +23 -23
  3. package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-NET.md +23 -23
  4. package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE.md +23 -23
  5. package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/workflow.agentflow.xml +9 -5
  6. package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/SKILL.md +8 -1
  7. package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/workflow.agentflow.xml +8 -1
  8. package/.speccrew/skills/speccrew-knowledge-bizs-init-features/SKILL.md +2 -2
  9. package/.speccrew/skills/speccrew-knowledge-bizs-init-features/workflow.agentflow.xml +1 -1
  10. package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-DESKTOP.md +46 -46
  11. package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-ELECTRON.md +51 -51
  12. package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MINIAPP.md +48 -48
  13. package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MOBILE.md +42 -42
  14. package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI.md +47 -47
  15. package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/workflow.agentflow.xml +10 -1
  16. package/.speccrew/skills/speccrew-pm-knowledge-detector/workflow.agentflow.xml +1 -1
  17. package/package.json +1 -1
@@ -78,21 +78,21 @@ source-path: {sourcePath}
78
78
 
79
79
  | Area | Element | Control | Description | Interaction | Source Link |
80
80
  |------|---------|---------|-------------|-------------|-------------|
81
- | Menu | File Menu | MenuStrip | {Application menu} | Click | [Source](../../{sourcePath}) |
82
- | Toolbar | New Button | ToolStripButton | {Create new} | Click | [Source](../../{sourcePath}) |
83
- | Tree | Navigation | TreeView | {Navigate sections} | NodeClick | [Source](../../{sourcePath}) |
84
- | Grid | Data Grid | DataGridView | {Display data} | CellClick/DoubleClick | [Source](../../{sourcePath}) |
85
- | Status | Status Label | StatusStrip | {Show status} | - | [Source](../../{sourcePath}) |
81
+ | Menu | File Menu | MenuStrip | {Application menu} | Click | [Source](../../../../../../{sourcePath}) |
82
+ | Toolbar | New Button | ToolStripButton | {Create new} | Click | [Source](../../../../../../{sourcePath}) |
83
+ | Tree | Navigation | TreeView | {Navigate sections} | NodeClick | [Source](../../../../../../{sourcePath}) |
84
+ | Grid | Data Grid | DataGridView | {Display data} | CellClick/DoubleClick | [Source](../../../../../../{sourcePath}) |
85
+ | Status | Status Label | StatusStrip | {Show status} | - | [Source](../../../../../../{sourcePath}) |
86
86
 
87
87
  **Desktop-Specific Interactions:**
88
88
 
89
89
  | Interaction | Action | Description | Source |
90
90
  |-------------|--------|-------------|--------|
91
- | Click | Select/Activate | Mouse click | [Source](../../{sourcePath}) |
92
- | DoubleClick | Open/Edit | Double click row | [Source](../../{sourcePath}) |
93
- | RightClick | Context Menu | Show context menu | [Source](../../{sourcePath}) |
94
- | DragDrop | Reorder | Drag and drop items | [Source](../../{sourcePath}) |
95
- | Keyboard | Shortcut | Ctrl+S, Ctrl+N, etc. | [Source](../../{sourcePath}) |
91
+ | Click | Select/Activate | Mouse click | [Source](../../../../../../{sourcePath}) |
92
+ | DoubleClick | Open/Edit | Double click row | [Source](../../../../../../{sourcePath}) |
93
+ | RightClick | Context Menu | Show context menu | [Source](../../../../../../{sourcePath}) |
94
+ | DragDrop | Reorder | Drag and drop items | [Source](../../../../../../{sourcePath}) |
95
+ | Keyboard | Shortcut | Ctrl+S, Ctrl+N, etc. | [Source](../../../../../../{sourcePath}) |
96
96
 
97
97
  ---
98
98
 
@@ -121,11 +121,11 @@ graph TB
121
121
 
122
122
  | Step | Business Operation | Event | Source |
123
123
  |------|-------------------|-------|--------|
124
- | 1 | Initialize UI components | Form_Load/OnInitialized | [Source](../../{sourcePath}) |
125
- | 2 | Load app configuration | After init | [Source](../../{sourcePath}) |
126
- | 3 | Check authentication | After config load | [Source](../../{sourcePath}) |
127
- | 4 | Load data from service | Auth passed | [Source](../../{sourcePath}) |
128
- | 5 | Bind data to controls | Data loaded | [Source](../../{sourcePath}) |
124
+ | 1 | Initialize UI components | Form_Load/OnInitialized | [Source](../../../../../../{sourcePath}) |
125
+ | 2 | Load app configuration | After init | [Source](../../../../../../{sourcePath}) |
126
+ | 3 | Check authentication | After config load | [Source](../../../../../../{sourcePath}) |
127
+ | 4 | Load data from service | Auth passed | [Source](../../../../../../{sourcePath}) |
128
+ | 5 | Bind data to controls | Data loaded | [Source](../../../../../../{sourcePath}) |
129
129
 
130
130
  ### 3.2 User Interaction Flows
131
131
 
@@ -151,11 +151,11 @@ graph TB
151
151
 
152
152
  | Step | Business Operation | Event | Source |
153
153
  |------|-------------------|-------|--------|
154
- | 1 | Get selected row | DoubleClick | [Source](../../{sourcePath}) |
155
- | 2 | Validate selection | After get | [Source](../../{sourcePath}) |
156
- | 3 | Open edit dialog | Validation passed | [Source](../../{sourcePath}) |
157
- | 4 | Load detail data | Dialog opened | [Source](../../{sourcePath}) |
158
- | 5 | Handle save/cancel | Dialog closed | [Source](../../{sourcePath}) |
154
+ | 1 | Get selected row | DoubleClick | [Source](../../../../../../{sourcePath}) |
155
+ | 2 | Validate selection | After get | [Source](../../../../../../{sourcePath}) |
156
+ | 3 | Open edit dialog | Validation passed | [Source](../../../../../../{sourcePath}) |
157
+ | 4 | Load detail data | Dialog opened | [Source](../../../../../../{sourcePath}) |
158
+ | 5 | Handle save/cancel | Dialog closed | [Source](../../../../../../{sourcePath}) |
159
159
 
160
160
  #### 3.2.2 {Event Name: e.g., Toolbar Button Click}
161
161
 
@@ -190,12 +190,12 @@ graph TB
190
190
 
191
191
  | Event | WPF | WinForms | Purpose | Source |
192
192
  |-------|-----|----------|---------|--------|
193
- | Initialized | ✅ | - | Component init | [Source](../../{sourcePath}) |
194
- | Loaded | ✅ | Load | Window loaded | [Source](../../{sourcePath}) |
195
- | Shown | - | Shown | Window visible | [Source](../../{sourcePath}) |
196
- | Activated | ✅ | Activated | Window focused | [Source](../../{sourcePath}) |
197
- | Closing | ✅ | FormClosing | About to close | [Source](../../{sourcePath}) |
198
- | Closed | ✅ | FormClosed | Window closed | [Source](../../{sourcePath}) |
193
+ | Initialized | ✅ | - | Component init | [Source](../../../../../../{sourcePath}) |
194
+ | Loaded | ✅ | Load | Window loaded | [Source](../../../../../../{sourcePath}) |
195
+ | Shown | - | Shown | Window visible | [Source](../../../../../../{sourcePath}) |
196
+ | Activated | ✅ | Activated | Window focused | [Source](../../../../../../{sourcePath}) |
197
+ | Closing | ✅ | FormClosing | About to close | [Source](../../../../../../{sourcePath}) |
198
+ | Closed | ✅ | FormClosed | Window closed | [Source](../../../../../../{sourcePath}) |
199
199
 
200
200
  ---
201
201
 
@@ -205,18 +205,18 @@ graph TB
205
205
 
206
206
  | Field Name | Type | Description | Binding | Source |
207
207
  |------------|------|-------------|---------|--------|
208
- | {Field 1} | string/int/bool | {Description} | {OneWay/TwoWay} | [Source](../../{sourcePath}) |
209
- | {SelectedItem} | Object | {Current selection} | {OneWayToSource} | [Source](../../{sourcePath}) |
210
- | {DataSource} | Collection | {List data} | {OneWay} | [Source](../../{sourcePath}) |
211
- | {IsBusy} | bool | {Loading state} | {OneWay} | [Source](../../{sourcePath}) |
208
+ | {Field 1} | string/int/bool | {Description} | {OneWay/TwoWay} | [Source](../../../../../../{sourcePath}) |
209
+ | {SelectedItem} | Object | {Current selection} | {OneWayToSource} | [Source](../../../../../../{sourcePath}) |
210
+ | {DataSource} | Collection | {List data} | {OneWay} | [Source](../../../../../../{sourcePath}) |
211
+ | {IsBusy} | bool | {Loading state} | {OneWay} | [Source](../../../../../../{sourcePath}) |
212
212
 
213
213
  ### 4.2 Form Fields (if applicable)
214
214
 
215
215
  | Field Name | Type | Validation | Control | Source |
216
216
  |------------|------|------------|---------|--------|
217
- | {Field 1} | string | {Required} | TextBox | [Source](../../{sourcePath}) |
218
- | {Field 2} | int | {Range} | NumericUpDown | [Source](../../{sourcePath}) |
219
- | {Field 3} | DateTime | {Not null} | DateTimePicker | [Source](../../{sourcePath}) |
217
+ | {Field 1} | string | {Required} | TextBox | [Source](../../../../../../{sourcePath}) |
218
+ | {Field 2} | int | {Range} | NumericUpDown | [Source](../../../../../../{sourcePath}) |
219
+ | {Field 3} | DateTime | {Not null} | DateTimePicker | [Source](../../../../../../{sourcePath}) |
220
220
 
221
221
  ---
222
222
 
@@ -226,25 +226,25 @@ graph TB
226
226
 
227
227
  | Service | Type | Main Function | Source | Document Path |
228
228
  |---------|------|---------------|--------|---------------|
229
- | {Service Name} | Business | {Description} | [Source](../../{serviceSourcePath}) | [Service Doc](../../services/{service-name}.md) |
229
+ | {Service Name} | Business | {Description} | [Source](../../../../../../{serviceSourcePath}) | [Service Doc](../../../../../../services/{service-name}.md) |
230
230
 
231
231
  ### 5.2 UI Components
232
232
 
233
233
  | Component | Framework | Type | Main Function | Source | Document Path |
234
234
  |-----------|-----------|------|---------------|--------|---------------|
235
- | {UserControl} | WPF/WinForms | Custom | {Reusable UI} | [Source](../../{componentSourcePath}) | [Component Doc](../../components/{component-name}.md) |
235
+ | {UserControl} | WPF/WinForms | Custom | {Reusable UI} | [Source](../../../../../../{componentSourcePath}) | [Component Doc](../../../../../../components/{component-name}.md) |
236
236
 
237
237
  ### 5.3 Other Windows
238
238
 
239
239
  | Window Name | Relation Type | Description | Source | Document Path |
240
240
  |-------------|---------------|-------------|--------|---------------|
241
- | {Window Name} | Dialog/Child | {Relation description} | [Source](../../{windowSourcePath}) | [Window Doc](../{window-path}.md) |
241
+ | {Window Name} | Dialog/Child | {Relation description} | [Source](../../../../../../{windowSourcePath}) | [Window Doc](../{window-path}.md) |
242
242
 
243
243
  ### 5.4 Referenced By
244
244
 
245
245
  | Window Name | Function Description | Source Path | Document Path |
246
246
  |-------------|---------------------|-------------|---------------|
247
- | {Referencing Window} | {e.g., "Open this window from main menu"} | {source-path} | [Window Doc](../{window-path}.md) |
247
+ | {Referencing Window} | {e.g., "Open this window from main menu"} | {source-path} | [Window Doc](../../../../../../{window-path}.md) |
248
248
 
249
249
  ---
250
250
 
@@ -254,21 +254,21 @@ graph TB
254
254
 
255
255
  | Operation | Permission Requirement | No Permission Handling | Source |
256
256
  |-----------|----------------------|----------------------|--------|
257
- | View window | {Role required} | Hide menu item / Show message | [Source](../../{sourcePath}) |
258
- | Edit data | {Permission required} | Disable edit button | [Source](../../{sourcePath}) |
259
- | Delete record | {Admin role} | Disable delete button | [Source](../../{sourcePath}) |
257
+ | View window | {Role required} | Hide menu item / Show message | [Source](../../../../../../{sourcePath}) |
258
+ | Edit data | {Permission required} | Disable edit button | [Source](../../../../../../{sourcePath}) |
259
+ | Delete record | {Admin role} | Disable delete button | [Source](../../../../../../{sourcePath}) |
260
260
 
261
261
  ### 6.2 Desktop-Specific Rules
262
262
 
263
- 1. **Auto-save**: {e.g., Auto-save draft every 5 minutes} | [Source](../../{sourcePath})
264
- 2. **Keyboard Shortcuts**: {e.g., Ctrl+S save, Ctrl+F find} | [Source](../../{sourcePath})
265
- 3. **Window State**: {e.g., Remember window size and position} | [Source](../../{sourcePath})
263
+ 1. **Auto-save**: {e.g., Auto-save draft every 5 minutes} | [Source](../../../../../../{sourcePath})
264
+ 2. **Keyboard Shortcuts**: {e.g., Ctrl+S save, Ctrl+F find} | [Source](../../../../../../{sourcePath})
265
+ 3. **Window State**: {e.g., Remember window size and position} | [Source](../../../../../../{sourcePath})
266
266
 
267
267
  ### 6.3 Validation Rules
268
268
 
269
269
  | Scenario | Rule | Error Handling | Source |
270
270
  |----------|------|----------------|--------|
271
- | Form submit | {Validation rule} | Show error provider / MessageBox | [Source](../../{sourcePath}) |
271
+ | Form submit | {Validation rule} | Show error provider / MessageBox | [Source](../../../../../../{sourcePath}) |
272
272
 
273
273
  ---
274
274
 
@@ -299,5 +299,5 @@ graph TB
299
299
  **Related Module Document:** [Module Overview Document](../{{module-name}}-overview.md)
300
300
 
301
301
  **Section Source**
302
- - [{Window}.xaml.cs/{Form}.cs](../../{sourcePath})
303
- - [{ViewModel}.cs](../../{viewModelPath})
302
+ - [{Window}.xaml.cs/{Form}.cs](../../../../../../{sourcePath})
303
+ - [{ViewModel}.cs](../../../../../../{viewModelPath})
@@ -72,22 +72,22 @@ source-path: {sourcePath}
72
72
 
73
73
  | Area | Element | Type | Description | Interaction | Source Link |
74
74
  |------|---------|------|-------------|-------------|-------------|
75
- | Title Bar | Window Controls | Button | {Minimize/Maximize/Close} | Click | [Source](../../{sourcePath}) |
76
- | Menu | App Menu | Menu | {Application menu} | Click | [Source](../../{sourcePath}) |
77
- | Toolbar | Action Buttons | Button | {Primary actions} | Click | [Source](../../{sourcePath}) |
78
- | Sidebar | Navigation | Nav | {Section navigation} | Click | [Source](../../{sourcePath}) |
79
- | Content | Cards/Tables | Component | {Display content} | Click/Right-click | [Source](../../{sourcePath}) |
80
- | Status Bar | Status Info | Status | {App status} | - | [Source](../../{sourcePath}) |
75
+ | Title Bar | Window Controls | Button | {Minimize/Maximize/Close} | Click | [Source](../../../../../../{sourcePath}) |
76
+ | Menu | App Menu | Menu | {Application menu} | Click | [Source](../../../../../../{sourcePath}) |
77
+ | Toolbar | Action Buttons | Button | {Primary actions} | Click | [Source](../../../../../../{sourcePath}) |
78
+ | Sidebar | Navigation | Nav | {Section navigation} | Click | [Source](../../../../../../{sourcePath}) |
79
+ | Content | Cards/Tables | Component | {Display content} | Click/Right-click | [Source](../../../../../../{sourcePath}) |
80
+ | Status Bar | Status Info | Status | {App status} | - | [Source](../../../../../../{sourcePath}) |
81
81
 
82
82
  **Electron-Specific Interactions:**
83
83
 
84
84
  | Interaction | Action | Description | Source |
85
85
  |-------------|--------|-------------|--------|
86
- | Click | Select/Activate | Mouse click | [Source](../../{sourcePath}) |
87
- | RightClick | Context Menu | Show native/context menu | [Source](../../{sourcePath}) |
88
- | Drag | File Drop | Drag files into window | [Source](../../{sourcePath}) |
89
- | Keyboard | Shortcut | Cmd/Ctrl+ shortcuts | [Source](../../{sourcePath}) |
90
- | IPC | Main ↔ Renderer | Communication between processes | [Source](../../{sourcePath}) |
86
+ | Click | Select/Activate | Mouse click | [Source](../../../../../../{sourcePath}) |
87
+ | RightClick | Context Menu | Show native/context menu | [Source](../../../../../../{sourcePath}) |
88
+ | Drag | File Drop | Drag files into window | [Source](../../../../../../{sourcePath}) |
89
+ | Keyboard | Shortcut | Cmd/Ctrl+ shortcuts | [Source](../../../../../../{sourcePath}) |
90
+ | IPC | Main ↔ Renderer | Communication between processes | [Source](../../../../../../{sourcePath}) |
91
91
 
92
92
  ---
93
93
 
@@ -121,12 +121,12 @@ graph TB
121
121
 
122
122
  | Step | Business Operation | Process | Source |
123
123
  |------|-------------------|---------|--------|
124
- | 1 | Main process starts | Main | [Source](../../{mainSourcePath}) |
125
- | 2 | Create browser window | Main | [Source](../../{mainSourcePath}) |
126
- | 3 | Renderer process loads | Renderer | [Source](../../{sourcePath}) |
127
- | 4 | Initialize frontend framework | Renderer | [Source](../../{sourcePath}) |
128
- | 5 | Check for updates | Main → Renderer | [Source](../../{sourcePath}) |
129
- | 6 | Load user data via IPC | Renderer → Main | [Source](../../{sourcePath}) |
124
+ | 1 | Main process starts | Main | [Source](../../../../../../{mainSourcePath}) |
125
+ | 2 | Create browser window | Main | [Source](../../../../../../{mainSourcePath}) |
126
+ | 3 | Renderer process loads | Renderer | [Source](../../../../../../{sourcePath}) |
127
+ | 4 | Initialize frontend framework | Renderer | [Source](../../../../../../{sourcePath}) |
128
+ | 5 | Check for updates | Main → Renderer | [Source](../../../../../../{sourcePath}) |
129
+ | 6 | Load user data via IPC | Renderer → Main | [Source](../../../../../../{sourcePath}) |
130
130
 
131
131
  ### 3.2 User Interaction Flows
132
132
 
@@ -152,12 +152,12 @@ graph TB
152
152
 
153
153
  | Step | Business Operation | Process | Source |
154
154
  |------|-------------------|---------|--------|
155
- | 1 | Validate form data | Renderer | [Source](../../{sourcePath}) |
156
- | 2 | Send IPC message | Renderer | [Source](../../{sourcePath}) |
157
- | 3 | Handle IPC call | Main | [Source](../../{mainSourcePath}) |
158
- | 4 | Show native dialog | Main | [Source](../../{mainSourcePath}) |
159
- | 5 | Write file | Main | [Source](../../{mainSourcePath}) |
160
- | 6 | Return result | Main → Renderer | [Source](../../{sourcePath}) |
155
+ | 1 | Validate form data | Renderer | [Source](../../../../../../{sourcePath}) |
156
+ | 2 | Send IPC message | Renderer | [Source](../../../../../../{sourcePath}) |
157
+ | 3 | Handle IPC call | Main | [Source](../../../../../../{mainSourcePath}) |
158
+ | 4 | Show native dialog | Main | [Source](../../../../../../{mainSourcePath}) |
159
+ | 5 | Write file | Main | [Source](../../../../../../{mainSourcePath}) |
160
+ | 6 | Return result | Main → Renderer | [Source](../../../../../../{sourcePath}) |
161
161
 
162
162
  #### 3.2.2 {Event Name: e.g., File Drop}
163
163
 
@@ -200,9 +200,9 @@ graph TB
200
200
 
201
201
  | Direction | Method | Use Case | Source |
202
202
  |-----------|--------|----------|--------|
203
- | Renderer → Main | ipcRenderer.send | Fire-and-forget | [Source](../../{sourcePath}) |
204
- | Renderer → Main | ipcRenderer.invoke | Request/Response | [Source](../../{sourcePath}) |
205
- | Main → Renderer | webContents.send | Push notification | [Source](../../{mainSourcePath}) |
203
+ | Renderer → Main | ipcRenderer.send | Fire-and-forget | [Source](../../../../../../{sourcePath}) |
204
+ | Renderer → Main | ipcRenderer.invoke | Request/Response | [Source](../../../../../../{sourcePath}) |
205
+ | Main → Renderer | webContents.send | Push notification | [Source](../../../../../../{mainSourcePath}) |
206
206
 
207
207
  ---
208
208
 
@@ -212,17 +212,17 @@ graph TB
212
212
 
213
213
  | Field Name | Type | Description | Framework | Source |
214
214
  |------------|------|-------------|-----------|--------|
215
- | {Field 1} | string/number/boolean | {Description} | React/Vue/Angular | [Source](../../{sourcePath}) |
216
- | {files} | Array | {Dropped files} | React/Vue/Angular | [Source](../../{sourcePath}) |
217
- | {isProcessing} | boolean | {Processing state} | React/Vue/Angular | [Source](../../{sourcePath}) |
218
- | {settings} | Object | {App settings} | React/Vue/Angular | [Source](../../{sourcePath}) |
215
+ | {Field 1} | string/number/boolean | {Description} | React/Vue/Angular | [Source](../../../../../../{sourcePath}) |
216
+ | {files} | Array | {Dropped files} | React/Vue/Angular | [Source](../../../../../../{sourcePath}) |
217
+ | {isProcessing} | boolean | {Processing state} | React/Vue/Angular | [Source](../../../../../../{sourcePath}) |
218
+ | {settings} | Object | {App settings} | React/Vue/Angular | [Source](../../../../../../{sourcePath}) |
219
219
 
220
220
  ### 4.2 Form Fields (if applicable)
221
221
 
222
222
  | Field Name | Type | Validation | Component | Source |
223
223
  |------------|------|------------|-----------|--------|
224
- | {Field 1} | string | {Required} | Input | [Source](../../{sourcePath}) |
225
- | {Field 2} | string | {File path} | Input + File picker | [Source](../../{sourcePath}) |
224
+ | {Field 1} | string | {Required} | Input | [Source](../../../../../../{sourcePath}) |
225
+ | {Field 2} | string | {File path} | Input + File picker | [Source](../../../../../../{sourcePath}) |
226
226
 
227
227
  ---
228
228
 
@@ -232,36 +232,36 @@ graph TB
232
232
 
233
233
  | API | Module | Purpose | Source | Document Path |
234
234
  |-----|--------|---------|--------|---------------|
235
- | {Handler Name} | ipcMain | {IPC handler description} | [Source](../../{mainSourcePath}) | [Main Doc](../../main/{handler-name}.md) |
235
+ | {Handler Name} | ipcMain | {IPC handler description} | [Source](../../../../../../{mainSourcePath}) | [Main Doc](../../../../../../main/{handler-name}.md) |
236
236
 
237
237
  ### 5.2 Electron APIs
238
238
 
239
239
  | API | Process | Purpose | Usage | Source |
240
240
  |-----|---------|---------|-------|--------|
241
- | dialog | Main | Native dialogs | Open/Save dialogs | [Source](../../{mainSourcePath}) |
242
- | shell | Both | Open external | Open file manager/browser | [Source](../../{sourcePath}) |
243
- | clipboard | Renderer | Clipboard ops | Copy/paste | [Source](../../{sourcePath}) |
244
- | notification | Renderer | Native notifications | Show notification | [Source](../../{sourcePath}) |
241
+ | dialog | Main | Native dialogs | Open/Save dialogs | [Source](../../../../../../{mainSourcePath}) |
242
+ | shell | Both | Open external | Open file manager/browser | [Source](../../../../../../{sourcePath}) |
243
+ | clipboard | Renderer | Clipboard ops | Copy/paste | [Source](../../../../../../{sourcePath}) |
244
+ | notification | Renderer | Native notifications | Show notification | [Source](../../../../../../{sourcePath}) |
245
245
 
246
246
  ### 5.3 Node.js Modules
247
247
 
248
248
  | Module | Purpose | Usage | Source |
249
249
  |--------|---------|-------|--------|
250
- | fs | File system | Read/write files | [Source](../../{mainSourcePath}) |
251
- | path | Path operations | Handle file paths | [Source](../../{mainSourcePath}) |
252
- | os | System info | Get platform info | [Source](../../{mainSourcePath}) |
250
+ | fs | File system | Read/write files | [Source](../../../../../../{mainSourcePath}) |
251
+ | path | Path operations | Handle file paths | [Source](../../../../../../{mainSourcePath}) |
252
+ | os | System info | Get platform info | [Source](../../../../../../{mainSourcePath}) |
253
253
 
254
254
  ### 5.4 Other Windows
255
255
 
256
256
  | Window Name | Relation Type | Description | Source | Document Path |
257
257
  |-------------|---------------|-------------|--------|---------------|
258
- | {Window Name} | Modal/Child | {Relation description} | [Source](../../{windowSourcePath}) | [Window Doc](../{window-path}.md) |
258
+ | {Window Name} | Modal/Child | {Relation description} | [Source](../../../../../../{windowSourcePath}) | [Window Doc](../{window-path}.md) |
259
259
 
260
260
  ### 5.5 Referenced By
261
261
 
262
262
  | Window Name | Function Description | Source Path | Document Path |
263
263
  |-------------|---------------------|-------------|---------------|
264
- | {Referencing Window} | {e.g., "Open from main menu"} | {source-path} | [Window Doc](../{window-path}.md) |
264
+ | {Referencing Window} | {e.g., "Open from main menu"} | {source-path} | [Window Doc](../../../../../../{window-path}.md) |
265
265
 
266
266
  ---
267
267
 
@@ -271,20 +271,20 @@ graph TB
271
271
 
272
272
  | Operation | Permission | No Permission Handling | Source |
273
273
  |-----------|------------|----------------------|--------|
274
- | File system access | {User consent} | Show permission dialog | [Source](../../{sourcePath}) |
275
- | External links | {N/A} | Open in system browser | [Source](../../{sourcePath}) |
274
+ | File system access | {User consent} | Show permission dialog | [Source](../../../../../../{sourcePath}) |
275
+ | External links | {N/A} | Open in system browser | [Source](../../../../../../{sourcePath}) |
276
276
 
277
277
  ### 6.2 Electron-Specific Rules
278
278
 
279
- 1. **Security**: {e.g., Enable contextIsolation, use IPC not remote} | [Source](../../{sourcePath})
280
- 2. **Auto-update**: {e.g., Check updates on startup} | [Source](../../{sourcePath})
281
- 3. **Window State**: {e.g., Restore window position/size} | [Source](../../{sourcePath})
279
+ 1. **Security**: {e.g., Enable contextIsolation, use IPC not remote} | [Source](../../../../../../{sourcePath})
280
+ 2. **Auto-update**: {e.g., Check updates on startup} | [Source](../../../../../../{sourcePath})
281
+ 3. **Window State**: {e.g., Restore window position/size} | [Source](../../../../../../{sourcePath})
282
282
 
283
283
  ### 6.3 Validation Rules
284
284
 
285
285
  | Scenario | Rule | Error Handling | Source |
286
286
  |----------|------|----------------|--------|
287
- | File type | {Allowed extensions} | Show error dialog | [Source](../../{sourcePath}) |
287
+ | File type | {Allowed extensions} | Show error dialog | [Source](../../../../../../{sourcePath}) |
288
288
 
289
289
  ---
290
290
 
@@ -322,6 +322,6 @@ graph TB
322
322
  **Related Module Document:** [Module Overview Document](../{{module-name}}-overview.md)
323
323
 
324
324
  **Section Source**
325
- - [{Component}.jsx/.vue](../../{sourcePath})
326
- - [main.js/main.ts](../../{mainSourcePath})
327
- - [preload.js](../../{preloadSourcePath})
325
+ - [{Component}.jsx/.vue](../../../../../../{sourcePath})
326
+ - [main.js/main.ts](../../../../../../{mainSourcePath})
327
+ - [preload.js](../../../../../../{preloadSourcePath})
@@ -66,21 +66,21 @@ source-path: {sourcePath}
66
66
 
67
67
  | Area | Element | Component | Description | Interaction | Source Link |
68
68
  |------|---------|-----------|-------------|-------------|-------------|
69
- | Nav | Title | NavigationBar | {Page title} | - | [Source](../../{sourcePath}) |
70
- | Search | Search Input | search | {Search input} | bind:input/bind:confirm | [Source](../../{sourcePath}) |
71
- | Content | Card | view + image + text | {Display item} | bind:tap | [Source](../../{sourcePath}) |
72
- | Action | FAB | button | {Primary action} | bind:tap | [Source](../../{sourcePath}) |
69
+ | Nav | Title | NavigationBar | {Page title} | - | [Source](../../../../../../{sourcePath}) |
70
+ | Search | Search Input | search | {Search input} | bind:input/bind:confirm | [Source](../../../../../../{sourcePath}) |
71
+ | Content | Card | view + image + text | {Display item} | bind:tap | [Source](../../../../../../{sourcePath}) |
72
+ | Action | FAB | button | {Primary action} | bind:tap | [Source](../../../../../../{sourcePath}) |
73
73
 
74
74
  **Mini Program Specific Interactions:**
75
75
 
76
76
  | Event | Trigger | Description | Source |
77
77
  |-------|---------|-------------|--------|
78
- | bind:tap | Tap | Click element | [Source](../../{sourcePath}) |
79
- | bind:longpress | Long press | Long press element | [Source](../../{sourcePath}) |
80
- | bind:touchstart | Touch start | Start touch | [Source](../../{sourcePath}) |
81
- | bind:touchend | Touch end | End touch | [Source](../../{sourcePath}) |
82
- | bind:scrolltolower | Scroll to bottom | Load more | [Source](../../{sourcePath}) |
83
- | bind:pullDownRefresh | Pull down | Refresh page | [Source](../../{sourcePath}) |
78
+ | bind:tap | Tap | Click element | [Source](../../../../../../{sourcePath}) |
79
+ | bind:longpress | Long press | Long press element | [Source](../../../../../../{sourcePath}) |
80
+ | bind:touchstart | Touch start | Start touch | [Source](../../../../../../{sourcePath}) |
81
+ | bind:touchend | Touch end | End touch | [Source](../../../../../../{sourcePath}) |
82
+ | bind:scrolltolower | Scroll to bottom | Load more | [Source](../../../../../../{sourcePath}) |
83
+ | bind:pullDownRefresh | Pull down | Refresh page | [Source](../../../../../../{sourcePath}) |
84
84
 
85
85
  ---
86
86
 
@@ -110,11 +110,11 @@ graph TB
110
110
 
111
111
  | Step | Business Operation | Lifecycle | Source |
112
112
  |------|-------------------|-----------|--------|
113
- | 1 | Parse page options | onLoad | [Source](../../{sourcePath}) |
114
- | 2 | Page becomes visible | onShow | [Source](../../{sourcePath}) |
115
- | 3 | Check/get user info | onShow | [Source](../../{sourcePath}) |
116
- | 4 | Load page data | onShow | [Source](../../{sourcePath}) |
117
- | 5 | Page render complete | onReady | [Source](../../{sourcePath}) |
113
+ | 1 | Parse page options | onLoad | [Source](../../../../../../{sourcePath}) |
114
+ | 2 | Page becomes visible | onShow | [Source](../../../../../../{sourcePath}) |
115
+ | 3 | Check/get user info | onShow | [Source](../../../../../../{sourcePath}) |
116
+ | 4 | Load page data | onShow | [Source](../../../../../../{sourcePath}) |
117
+ | 5 | Page render complete | onReady | [Source](../../../../../../{sourcePath}) |
118
118
 
119
119
  ### 3.2 User Interaction Flows
120
120
 
@@ -134,9 +134,9 @@ graph TB
134
134
 
135
135
  | Step | Business Operation | Event | Source |
136
136
  |------|-------------------|-------|--------|
137
- | 1 | Get data from dataset | bind:tap | [Source](../../{sourcePath}) |
138
- | 2 | Navigate to detail | wx.navigateTo | [Source](../../{sourcePath}) |
139
- | 3 | Pass data via URL | query parameter | [Source](../../{sourcePath}) |
137
+ | 1 | Get data from dataset | bind:tap | [Source](../../../../../../{sourcePath}) |
138
+ | 2 | Navigate to detail | wx.navigateTo | [Source](../../../../../../{sourcePath}) |
139
+ | 3 | Pass data via URL | query parameter | [Source](../../../../../../{sourcePath}) |
140
140
 
141
141
  #### 3.2.2 {Event Name: e.g., Pull Down Refresh}
142
142
 
@@ -168,14 +168,14 @@ graph TB
168
168
 
169
169
  | Function | Trigger | Purpose | Source |
170
170
  |----------|---------|---------|--------|
171
- | onLoad | Page created | Parse options, init | [Source](../../{sourcePath}) |
172
- | onShow | Page visible | Refresh data | [Source](../../{sourcePath}) |
173
- | onReady | Render done | DOM operations | [Source](../../{sourcePath}) |
174
- | onHide | Page hidden | Pause operations | [Source](../../{sourcePath}) |
175
- | onUnload | Page closed | Cleanup | [Source](../../{sourcePath}) |
176
- | onPullDownRefresh | Pull down | Refresh data | [Source](../../{sourcePath}) |
177
- | onReachBottom | Scroll bottom | Load more | [Source](../../{sourcePath}) |
178
- | onShareAppMessage | Share | Custom share | [Source](../../{sourcePath}) |
171
+ | onLoad | Page created | Parse options, init | [Source](../../../../../../{sourcePath}) |
172
+ | onShow | Page visible | Refresh data | [Source](../../../../../../{sourcePath}) |
173
+ | onReady | Render done | DOM operations | [Source](../../../../../../{sourcePath}) |
174
+ | onHide | Page hidden | Pause operations | [Source](../../../../../../{sourcePath}) |
175
+ | onUnload | Page closed | Cleanup | [Source](../../../../../../{sourcePath}) |
176
+ | onPullDownRefresh | Pull down | Refresh data | [Source](../../../../../../{sourcePath}) |
177
+ | onReachBottom | Scroll bottom | Load more | [Source](../../../../../../{sourcePath}) |
178
+ | onShareAppMessage | Share | Custom share | [Source](../../../../../../{sourcePath}) |
179
179
 
180
180
  ---
181
181
 
@@ -185,17 +185,17 @@ graph TB
185
185
 
186
186
  | Field Name | Type | Description | Source |
187
187
  |------------|------|-------------|--------|
188
- | {Field 1} | String/Number/Boolean/Array/Object | {Description} | [Source](../../{sourcePath}) |
189
- | {loading} | Boolean | {Loading state} | [Source](../../{sourcePath}) |
190
- | {list} | Array | {List data} | [Source](../../{sourcePath}) |
191
- | {hasMore} | Boolean | {Has more data} | [Source](../../{sourcePath}) |
188
+ | {Field 1} | String/Number/Boolean/Array/Object | {Description} | [Source](../../../../../../{sourcePath}) |
189
+ | {loading} | Boolean | {Loading state} | [Source](../../../../../../{sourcePath}) |
190
+ | {list} | Array | {List data} | [Source](../../../../../../{sourcePath}) |
191
+ | {hasMore} | Boolean | {Has more data} | [Source](../../../../../../{sourcePath}) |
192
192
 
193
193
  ### 4.2 Form Fields (if applicable)
194
194
 
195
195
  | Field Name | Type | Validation | Component | Source |
196
196
  |------------|------|------------|-----------|--------|
197
- | {Field 1} | String | {Required} | input | [Source](../../{sourcePath}) |
198
- | {Field 2} | String | {Phone format} | input type=digit | [Source](../../{sourcePath}) |
197
+ | {Field 1} | String | {Required} | input | [Source](../../../../../../{sourcePath}) |
198
+ | {Field 2} | String | {Phone format} | input type=digit | [Source](../../../../../../{sourcePath}) |
199
199
 
200
200
  ---
201
201
 
@@ -205,34 +205,34 @@ graph TB
205
205
 
206
206
  | API Name | Type | Main Function | Source | Document Path |
207
207
  |----------|------|---------------|--------|---------------|
208
- | {API Name} | Query/Mutation | {Brief description} | [Source](../../{apiSourcePath}) | [API Doc](../../apis/{api-name}.md) |
208
+ | {API Name} | Query/Mutation | {Brief description} | [Source](../../../../../../{apiSourcePath}) | [API Doc](../../../../../../apis/{api-name}.md) |
209
209
 
210
210
  ### 5.2 Mini Program APIs
211
211
 
212
212
  | API | Purpose | Usage | Source |
213
213
  |-----|---------|-------|--------|
214
- | wx.request | HTTP request | Call backend API | [Source](../../{sourcePath}) |
215
- | wx.navigateTo | Page navigation | Navigate to page | [Source](../../{sourcePath}) |
216
- | wx.showToast | Show toast | Display message | [Source](../../{sourcePath}) |
217
- | wx.getUserInfo | Get user info | Authentication | [Source](../../{sourcePath}) |
214
+ | wx.request | HTTP request | Call backend API | [Source](../../../../../../{sourcePath}) |
215
+ | wx.navigateTo | Page navigation | Navigate to page | [Source](../../../../../../{sourcePath}) |
216
+ | wx.showToast | Show toast | Display message | [Source](../../../../../../{sourcePath}) |
217
+ | wx.getUserInfo | Get user info | Authentication | [Source](../../../../../../{sourcePath}) |
218
218
 
219
219
  ### 5.3 Components
220
220
 
221
221
  | Component | Type | Main Function | Source | Document Path |
222
222
  |-----------|------|---------------|--------|---------------|
223
- | {Custom Component} | UI | {Description} | [Source](../../{componentSourcePath}) | [Component Doc](../../components/{component-name}.md) |
223
+ | {Custom Component} | UI | {Description} | [Source](../../../../../../{componentSourcePath}) | [Component Doc](../../../../../../components/{component-name}.md) |
224
224
 
225
225
  ### 5.4 Other Pages
226
226
 
227
227
  | Page Name | Relation Type | Description | Source | Document Path |
228
228
  |-----------|---------------|-------------|--------|---------------|
229
- | {Page Name} | navigateTo | {Navigation description} | [Source](../../{pageSourcePath}) | [Page Doc](../{page-path}.md) |
229
+ | {Page Name} | navigateTo | {Navigation description} | [Source](../../../../../../{pageSourcePath}) | [Page Doc](../{page-path}.md) |
230
230
 
231
231
  ### 5.5 Referenced By
232
232
 
233
233
  | Page Name | Function Description | Source Path | Document Path |
234
234
  |-------------|---------------------|-------------|---------------|
235
- | {Referencing Page} | {e.g., "Navigate to this page"} | {source-path} | [Page Doc](../{page-path}.md) |
235
+ | {Referencing Page} | {e.g., "Navigate to this page"} | {source-path} | [Page Doc](../../../../../../{page-path}.md) |
236
236
 
237
237
  ---
238
238
 
@@ -242,20 +242,20 @@ graph TB
242
242
 
243
243
  | Operation | Permission | No Permission Handling | Source |
244
244
  |-----------|------------|----------------------|--------|
245
- | View page | {None/Login} | Show login modal | [Source](../../{sourcePath}) |
246
- | Use feature | {Scope required} | Guide to authorize | [Source](../../{sourcePath}) |
245
+ | View page | {None/Login} | Show login modal | [Source](../../../../../../{sourcePath}) |
246
+ | Use feature | {Scope required} | Guide to authorize | [Source](../../../../../../{sourcePath}) |
247
247
 
248
248
  ### 6.2 Mini Program Specific Rules
249
249
 
250
- 1. **Package Size**: {e.g., Main package ≤ 2MB} | [Source](../../{sourcePath})
251
- 2. **API Limit**: {e.g., Concurrent request limit} | [Source](../../{sourcePath})
252
- 3. **Storage**: {e.g., Use wx.setStorage for cache} | [Source](../../{sourcePath})
250
+ 1. **Package Size**: {e.g., Main package ≤ 2MB} | [Source](../../../../../../{sourcePath})
251
+ 2. **API Limit**: {e.g., Concurrent request limit} | [Source](../../../../../../{sourcePath})
252
+ 3. **Storage**: {e.g., Use wx.setStorage for cache} | [Source](../../../../../../{sourcePath})
253
253
 
254
254
  ### 6.3 Validation Rules
255
255
 
256
256
  | Scenario | Rule | Handling | Source |
257
257
  |----------|------|----------|--------|
258
- | Form submit | {Validation} | wx.showToast / showModal | [Source](../../{sourcePath}) |
258
+ | Form submit | {Validation} | wx.showToast / showModal | [Source](../../../../../../{sourcePath}) |
259
259
 
260
260
  ---
261
261
 
@@ -288,5 +288,5 @@ graph TB
288
288
  **Related Module Document:** [Module Overview Document](../{{module-name}}-overview.md)
289
289
 
290
290
  **Section Source**
291
- - [{page}.js/{page}.wxml](../../{sourcePath})
292
- - [{page}.json](../../{configPath})
291
+ - [{page}.js/{page}.wxml](../../../../../../{sourcePath})
292
+ - [{page}.json](../../../../../../{configPath})