devflow-kit 1.3.0 → 1.3.2
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/CHANGELOG.md +17 -0
- package/README.md +3 -1
- package/dist/commands/init.js +14 -8
- package/package.json +1 -1
- package/plugins/devflow-accessibility/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-ambient/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-code-review/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-core-skills/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-debug/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-frontend-design/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-go/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-implement/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-java/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-python/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-react/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-resolve/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-rust/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-self-review/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-specify/.claude-plugin/plugin.json +1 -1
- package/plugins/devflow-typescript/.claude-plugin/plugin.json +1 -1
- package/scripts/hooks/background-memory-update +26 -6
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,21 @@ All notable changes to DevFlow will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.3.2] - 2026-03-08
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- **Init prompt improvements** — Agent Teams marked as experimental with recommendation to disable; ambient mode now defaults to enabled (recommended)
|
|
12
|
+
- **Init flags documented** — Added `--ambient`/`--no-ambient` and `--memory`/`--no-memory` to README
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## [1.3.1] - 2026-03-08
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- **Background memory updater silent Write failures** — Added Read permission for memory files (Claude Code enforces Read-before-Write), read-only git commands for fresh context, mtime validation to detect silent failures, and stdout logging for debugging
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
8
23
|
## [1.3.0] - 2026-03-08
|
|
9
24
|
|
|
10
25
|
### Added
|
|
@@ -815,6 +830,8 @@ devflow init
|
|
|
815
830
|
|
|
816
831
|
---
|
|
817
832
|
|
|
833
|
+
[1.3.2]: https://github.com/dean0x/devflow/compare/v1.3.1...v1.3.2
|
|
834
|
+
[1.3.1]: https://github.com/dean0x/devflow/compare/v1.3.0...v1.3.1
|
|
818
835
|
[1.3.0]: https://github.com/dean0x/devflow/compare/v1.2.0...v1.3.0
|
|
819
836
|
[1.2.0]: https://github.com/dean0x/devflow/compare/v1.1.0...v1.2.0
|
|
820
837
|
[1.1.0]: https://github.com/dean0x/devflow/compare/v1.0.0...v1.1.0
|
package/README.md
CHANGED
|
@@ -241,7 +241,9 @@ Session context is saved and restored automatically via Working Memory hooks —
|
|
|
241
241
|
|--------|-------------|
|
|
242
242
|
| `--plugin <names>` | Comma-separated plugin names (e.g., `implement,code-review`) |
|
|
243
243
|
| `--scope <user\|local>` | Installation scope (default: user) |
|
|
244
|
-
| `--teams` / `--no-teams` | Enable/disable
|
|
244
|
+
| `--teams` / `--no-teams` | Enable/disable Agent Teams (experimental, default: off) |
|
|
245
|
+
| `--ambient` / `--no-ambient` | Enable/disable ambient mode (default: on) |
|
|
246
|
+
| `--memory` / `--no-memory` | Enable/disable working memory (default: on) |
|
|
245
247
|
| `--verbose` | Show detailed output |
|
|
246
248
|
|
|
247
249
|
### Uninstall Options
|
package/dist/commands/init.js
CHANGED
|
@@ -150,9 +150,12 @@ export const initCommand = new Command('init')
|
|
|
150
150
|
teamsEnabled = false;
|
|
151
151
|
}
|
|
152
152
|
else {
|
|
153
|
-
const teamsChoice = await p.
|
|
154
|
-
message: 'Enable Agent Teams?
|
|
155
|
-
|
|
153
|
+
const teamsChoice = await p.select({
|
|
154
|
+
message: 'Enable Agent Teams?',
|
|
155
|
+
options: [
|
|
156
|
+
{ value: false, label: 'No (Recommended)', hint: 'Experimental — may be unstable' },
|
|
157
|
+
{ value: true, label: 'Yes', hint: 'Advanced — peer debate in review, exploration, debugging' },
|
|
158
|
+
],
|
|
156
159
|
});
|
|
157
160
|
if (p.isCancel(teamsChoice)) {
|
|
158
161
|
p.cancel('Installation cancelled.');
|
|
@@ -166,12 +169,15 @@ export const initCommand = new Command('init')
|
|
|
166
169
|
ambientEnabled = options.ambient;
|
|
167
170
|
}
|
|
168
171
|
else if (!process.stdin.isTTY) {
|
|
169
|
-
ambientEnabled =
|
|
172
|
+
ambientEnabled = true;
|
|
170
173
|
}
|
|
171
174
|
else {
|
|
172
|
-
const ambientChoice = await p.
|
|
173
|
-
message: 'Enable ambient mode?
|
|
174
|
-
|
|
175
|
+
const ambientChoice = await p.select({
|
|
176
|
+
message: 'Enable ambient mode?',
|
|
177
|
+
options: [
|
|
178
|
+
{ value: true, label: 'Yes (Recommended)', hint: 'Auto-loads relevant skills for each prompt' },
|
|
179
|
+
{ value: false, label: 'No', hint: 'Full control — load skills manually' },
|
|
180
|
+
],
|
|
175
181
|
});
|
|
176
182
|
if (p.isCancel(ambientChoice)) {
|
|
177
183
|
p.cancel('Installation cancelled.');
|
|
@@ -179,7 +185,7 @@ export const initCommand = new Command('init')
|
|
|
179
185
|
}
|
|
180
186
|
ambientEnabled = ambientChoice;
|
|
181
187
|
}
|
|
182
|
-
// Working memory selection (defaults ON — foundational
|
|
188
|
+
// Working memory selection (defaults ON — foundational feature)
|
|
183
189
|
let memoryEnabled;
|
|
184
190
|
if (options.memory !== undefined) {
|
|
185
191
|
memoryEnabled = options.memory;
|
package/package.json
CHANGED
|
@@ -96,8 +96,10 @@ rotate_log
|
|
|
96
96
|
|
|
97
97
|
# Read existing memory for merge context
|
|
98
98
|
EXISTING_MEMORY=""
|
|
99
|
+
PRE_UPDATE_MTIME=0
|
|
99
100
|
if [ -f "$MEMORY_FILE" ]; then
|
|
100
101
|
EXISTING_MEMORY=$(cat "$MEMORY_FILE")
|
|
102
|
+
PRE_UPDATE_MTIME=$(get_mtime "$MEMORY_FILE")
|
|
101
103
|
fi
|
|
102
104
|
|
|
103
105
|
# Build instruction
|
|
@@ -119,7 +121,7 @@ else
|
|
|
119
121
|
If recurring patterns were observed during this session (coding conventions, architectural decisions, team preferences, tooling quirks), create $PATTERNS_FILE with entries formatted as: - **Pattern name**: Brief description (discovered: YYYY-MM-DD). Only create this file if genuine patterns were observed — do not fabricate entries."
|
|
120
122
|
fi
|
|
121
123
|
|
|
122
|
-
INSTRUCTION="
|
|
124
|
+
INSTRUCTION="First, Read the file $MEMORY_FILE to satisfy Claude Code's read-before-write requirement. Then update it with working memory from this session. The file already has content — possibly from a concurrent session that just wrote it moments ago. Merge this session's context with the existing content to produce a single unified working memory snapshot. Both this session and the existing content represent fresh, concurrent work — integrate both fully. Working memory captures what's active now, not a changelog. Deduplicate overlapping information. Keep under 120 lines total. Use the same structure: ## Now, ## Progress, ## Decisions, ## Modified Files, ## Context, ## Session Log.
|
|
123
125
|
|
|
124
126
|
## Progress tracks Done (completed items), Remaining (next steps), and Blockers (if any). Keep each sub-list to 1-3 items. This section reflects current work state, not historical logs.
|
|
125
127
|
|
|
@@ -144,7 +146,7 @@ $EXISTING_PATTERNS"
|
|
|
144
146
|
If recurring patterns were observed during this session (coding conventions, architectural decisions, team preferences, tooling quirks), create $PATTERNS_FILE with entries formatted as: - **Pattern name**: Brief description (discovered: YYYY-MM-DD). Only create this file if genuine patterns were observed — do not fabricate entries."
|
|
145
147
|
fi
|
|
146
148
|
|
|
147
|
-
INSTRUCTION="
|
|
149
|
+
INSTRUCTION="First, Read the file $MEMORY_FILE if it exists (to satisfy Claude Code's read-before-write requirement). Then create it with working memory from this session. Keep under 120 lines. Use this structure:
|
|
148
150
|
|
|
149
151
|
# Working Memory
|
|
150
152
|
|
|
@@ -178,12 +180,20 @@ TIMEOUT=120 # Normal runtime 30-60s; 2x margin
|
|
|
178
180
|
DEVFLOW_BG_UPDATER=1 env -u CLAUDECODE "$CLAUDE_BIN" -p \
|
|
179
181
|
--resume "$SESSION_ID" \
|
|
180
182
|
--model haiku \
|
|
181
|
-
--tools "Write" \
|
|
182
|
-
--allowedTools
|
|
183
|
+
--tools "Read,Write,Bash" \
|
|
184
|
+
--allowedTools \
|
|
185
|
+
"Read($CWD/.memory/WORKING-MEMORY.md)" \
|
|
186
|
+
"Read($CWD/.memory/PROJECT-PATTERNS.md)" \
|
|
187
|
+
"Write($CWD/.memory/WORKING-MEMORY.md)" \
|
|
188
|
+
"Write($CWD/.memory/PROJECT-PATTERNS.md)" \
|
|
189
|
+
"Bash(git status:*)" \
|
|
190
|
+
"Bash(git log:*)" \
|
|
191
|
+
"Bash(git diff:*)" \
|
|
192
|
+
"Bash(git branch:*)" \
|
|
183
193
|
--no-session-persistence \
|
|
184
194
|
--output-format text \
|
|
185
195
|
"$INSTRUCTION" \
|
|
186
|
-
|
|
196
|
+
>> "$LOG_FILE" 2>&1 &
|
|
187
197
|
CLAUDE_PID=$!
|
|
188
198
|
|
|
189
199
|
# Watchdog: kill claude if it exceeds timeout
|
|
@@ -191,7 +201,17 @@ CLAUDE_PID=$!
|
|
|
191
201
|
WATCHDOG_PID=$!
|
|
192
202
|
|
|
193
203
|
if wait "$CLAUDE_PID" 2>/dev/null; then
|
|
194
|
-
|
|
204
|
+
# Validate the file was actually modified (detect silent Write failures)
|
|
205
|
+
if [ -f "$MEMORY_FILE" ]; then
|
|
206
|
+
NEW_MTIME=$(get_mtime "$MEMORY_FILE")
|
|
207
|
+
if [ "$NEW_MTIME" -gt "$PRE_UPDATE_MTIME" ]; then
|
|
208
|
+
log "Update completed for session $SESSION_ID"
|
|
209
|
+
else
|
|
210
|
+
log "Update finished but file was not modified for session $SESSION_ID (possible Write tool failure)"
|
|
211
|
+
fi
|
|
212
|
+
else
|
|
213
|
+
log "Update finished but file does not exist for session $SESSION_ID"
|
|
214
|
+
fi
|
|
195
215
|
else
|
|
196
216
|
EXIT_CODE=$?
|
|
197
217
|
if [ "$EXIT_CODE" -gt 128 ]; then
|