wogiflow 1.5.12 → 1.5.13

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.
@@ -5,8 +5,9 @@ Steps:
5
5
  2. **Check log size** - If over 50 entries, suggest archiving
6
6
  3. **Check app-map** - If new components created, verify they're added
7
7
  4. **Update progress.md** - Add handoff notes for next session
8
- 5. **Commit changes** - Stage and commit all workflow files
9
- 6. **Offer to push** - Ask if should push to remote
8
+ 5. **Community push** - If `config.community.enabled`, push anonymous learnings
9
+ 6. **Commit changes** - Stage and commit all workflow files
10
+ 7. **Offer to push** - Ask if should push to remote
10
11
 
11
12
  Output:
12
13
  ```
@@ -22,6 +23,9 @@ Checking app-map...
22
23
  Updating progress.md...
23
24
  Added handoff notes
24
25
 
26
+ Pushing community learnings...
27
+ ✓ Community data pushed (anonymous, PII-stripped)
28
+
25
29
  Committing...
26
30
  ✓ Committed: "chore: End session - 3 changes logged"
27
31
 
@@ -48,6 +52,41 @@ Progress.md handoff format:
48
52
  - Decided to use shadcn/ui for modal
49
53
  ```
50
54
 
55
+ ## Community Push (Step 5)
56
+
57
+ When `config.community.enabled` is `true` and `config.community.pushOnSessionEnd` is `true`:
58
+
59
+ 1. Check if consent has been acknowledged (`~/.wogiflow/consent-acknowledged`)
60
+ - If not: Display the consent message (informational — enabling in config IS consent)
61
+ - Acknowledge consent after display
62
+ 2. Collect shareable data via `collectShareableData(config)` from `scripts/flow-community.js`
63
+ 3. Push to server via `pushToServer(payload, config)` — 5-second timeout, fire-and-forget
64
+ 4. On success: Show "Community data pushed (anonymous, PII-stripped)"
65
+ 5. On failure: Show "Community push skipped — server unreachable" (warning, not error)
66
+ 6. If `community.enabled` is `false`: Skip silently (don't show the step at all)
67
+
68
+ ```javascript
69
+ const { collectShareableData, pushToServer, isConsentAcknowledged, acknowledgeConsent, getConsentMessage } = require('../../scripts/flow-community');
70
+
71
+ // Only if community is enabled
72
+ if (config.community?.enabled && config.community?.pushOnSessionEnd !== false) {
73
+ // Check consent
74
+ if (!isConsentAcknowledged()) {
75
+ console.log(getConsentMessage());
76
+ acknowledgeConsent();
77
+ }
78
+
79
+ // Collect and push
80
+ const payload = collectShareableData(config);
81
+ const success = await pushToServer(payload, config);
82
+ if (success) {
83
+ console.log('Community data pushed (anonymous, PII-stripped)');
84
+ } else {
85
+ console.log('Community push skipped — server unreachable');
86
+ }
87
+ }
88
+ ```
89
+
51
90
  ## Cross-Session Pattern Detection (v6.0)
52
91
 
53
92
  At session end, the system analyzes request history across multiple sessions (default: 30 days) to detect repeated patterns.
@@ -0,0 +1,98 @@
1
+ Submit a suggestion, feature request, or improvement idea for WogiFlow.
2
+
3
+ Your suggestion is sent anonymously to the WogiFlow community server where AI agents evaluate and prioritize it. Popular suggestions get fast-tracked for implementation.
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ /wogi-suggest "The spec phase should support attaching Figma mockups"
9
+ /wogi-suggest "It would be great if wogi-review could suggest test cases"
10
+ /wogi-suggest --type=bug "Standards check false positive on utility files"
11
+ ```
12
+
13
+ ## Options
14
+
15
+ - `--type=idea` (default) — Feature request or new idea
16
+ - `--type=bug` — Something broken in WogiFlow itself
17
+ - `--type=improvement` — Existing feature could be better
18
+
19
+ ## What Happens
20
+
21
+ 1. Validate the suggestion is non-empty
22
+ 2. Attach metadata: WogiFlow version, anonymous UUID, timestamp
23
+ 3. Send to `POST /api/community/suggest` (5-second timeout)
24
+ 4. Show confirmation: "Suggestion submitted. Thanks for helping improve WogiFlow!"
25
+ 5. If offline: queue to `~/.wogiflow/pending-suggestions.json` and show "Suggestion queued — will be sent on next session start."
26
+ 6. Queued suggestions are automatically retried on next session-start hook
27
+
28
+ ## Steps
29
+
30
+ 1. **Parse arguments**: Extract suggestion text and optional `--type` flag
31
+ 2. **Check community config**: Read `config.community.enabled`
32
+ - If `community.enabled` is `false`: Show message explaining how to enable community features, then still attempt submission (suggestions don't require full community to be enabled — anyone can suggest improvements)
33
+ 3. **Validate suggestion**: Must be non-empty after trimming
34
+ 4. **Check consent**: If `~/.wogiflow/consent-acknowledged` doesn't exist, display consent message first, then acknowledge
35
+ 5. **Submit suggestion**: Call `submitSuggestion(text, type, config)` from `scripts/flow-community.js`
36
+ 6. **Display result**:
37
+
38
+ **Success output:**
39
+ ```
40
+ Suggestion submitted. Thanks for helping improve WogiFlow!
41
+
42
+ Type: idea
43
+ Content: "The spec phase should support attaching Figma mockups"
44
+ ```
45
+
46
+ **Queued output (offline):**
47
+ ```
48
+ Suggestion queued — will be sent on next session start.
49
+
50
+ Type: idea
51
+ Content: "The spec phase should support attaching Figma mockups"
52
+ Queued to: ~/.wogiflow/pending-suggestions.json
53
+ ```
54
+
55
+ **Empty suggestion:**
56
+ ```
57
+ Please provide a suggestion. Example:
58
+ /wogi-suggest "Add dark mode support to the dashboard"
59
+ ```
60
+
61
+ ## Implementation
62
+
63
+ ```javascript
64
+ const { submitSuggestion, isConsentAcknowledged, acknowledgeConsent, getConsentMessage } = require('../../scripts/flow-community');
65
+ const { getConfig } = require('../../scripts/flow-utils');
66
+
67
+ // 1. Parse args
68
+ const args = ARGUMENTS || '';
69
+ const typeMatch = args.match(/--type=(idea|bug|improvement)/);
70
+ const type = typeMatch ? typeMatch[1] : 'idea';
71
+ const text = args.replace(/--type=\w+/, '').replace(/^["']|["']$/g, '').trim();
72
+
73
+ // 2. Validate
74
+ if (!text) {
75
+ // Show empty suggestion message
76
+ return;
77
+ }
78
+
79
+ // 3. Check consent
80
+ if (!isConsentAcknowledged()) {
81
+ // Display consent message, then acknowledge
82
+ console.log(getConsentMessage());
83
+ acknowledgeConsent();
84
+ }
85
+
86
+ // 4. Submit
87
+ const config = getConfig();
88
+ const success = await submitSuggestion(text, type, config);
89
+
90
+ // 5. Display result
91
+ ```
92
+
93
+ ## Privacy
94
+
95
+ - Suggestions are sent with an anonymous UUID (no personal info)
96
+ - No code, file paths, or project names are included
97
+ - WogiFlow version is attached for context
98
+ - AI agents on the server evaluate suggestions for quality and feasibility
@@ -80,6 +80,7 @@ npm install wogiflow && npx flow onboard
80
80
  | `/wogi-status` | Project overview |
81
81
  | `/wogi-health` | Check workflow health |
82
82
  | `/wogi-roadmap` | View/manage deferred work |
83
+ | `/wogi-suggest "text"` | Submit suggestion for WogiFlow |
83
84
 
84
85
  See `.claude/docs/commands.md` for complete command reference.
85
86
 
@@ -104,6 +105,7 @@ See `.claude/docs/commands.md` for complete command reference.
104
105
  | "learn from this", "we keep making", "promote pattern", "extract lessons", "what have we learned" | `/wogi-learn` |
105
106
  | "retro", "what went well", "what can we improve", "lessons learned", "session retrospective" | `/wogi-retrospective` |
106
107
  | "rescan project", "re-evaluate project", "project changed", "others made changes", "sync wogi", "things changed", "out of sync" | `/wogi-rescan` |
108
+ | "suggest improvement", "feature request for wogi", "wogi suggestion", "submit feedback" | `/wogi-suggest` |
107
109
 
108
110
  **IMPORTANT**: When a user's message matches one of these patterns, immediately invoke the Skill tool with the corresponding command. Do not ask for confirmation. These `/wogi-*` commands satisfy the mandatory routing requirement — you do NOT also need to invoke `/wogi-start` when a detection match exists. `/wogi-start` is the fallback for messages that don't match this table.
109
111
 
package/lib/installer.js CHANGED
@@ -291,6 +291,14 @@ function createWorkflowStructure(projectRoot, config) {
291
291
  },
292
292
  _comment_semanticMatching: "AI-driven semantic similarity: combined = (string * 0.3) + (semantic * 0.7). Match levels: definite (>=90) blocks, likely (70-89) warns, possible (50-69) info only."
293
293
  },
294
+ scripts: {
295
+ lint: null,
296
+ typecheck: null,
297
+ test: null,
298
+ build: null,
299
+ fix: null,
300
+ coverage: null
301
+ },
294
302
  validation: {
295
303
  afterFileEdit: {
296
304
  enabled: true,
@@ -419,6 +427,26 @@ function createWorkflowStructure(projectRoot, config) {
419
427
  enabled: true,
420
428
  debtBudget: { maxItems: 50 },
421
429
  autoFix: { enabled: false }
430
+ },
431
+ community: {
432
+ enabled: false,
433
+ anonymousId: null,
434
+ categories: {
435
+ modelIntelligence: true,
436
+ errorRecovery: true,
437
+ patternConvergence: true,
438
+ sessionStatistics: true,
439
+ skillLearnings: true
440
+ },
441
+ pushOnSessionEnd: true,
442
+ pullOnSessionStart: true,
443
+ cacheTtlHours: 24,
444
+ serverUrl: 'https://api.wogiflow.com'
445
+ },
446
+ team: {
447
+ enabled: false,
448
+ projectId: null,
449
+ orgId: null
422
450
  }
423
451
  };
424
452
  fs.writeFileSync(configPath, JSON.stringify(configContent, null, 2));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wogiflow",
3
- "version": "1.5.12",
3
+ "version": "1.5.13",
4
4
  "description": "AI-powered development workflow management system with multi-model support",
5
5
  "main": "lib/index.js",
6
6
  "bin": {