devflow-kit 1.3.0 → 1.3.1

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 CHANGED
@@ -5,6 +5,13 @@ 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.1] - 2026-03-08
9
+
10
+ ### Fixed
11
+ - **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
12
+
13
+ ---
14
+
8
15
  ## [1.3.0] - 2026-03-08
9
16
 
10
17
  ### Added
@@ -815,6 +822,7 @@ devflow init
815
822
 
816
823
  ---
817
824
 
825
+ [1.3.1]: https://github.com/dean0x/devflow/compare/v1.3.0...v1.3.1
818
826
  [1.3.0]: https://github.com/dean0x/devflow/compare/v1.2.0...v1.3.0
819
827
  [1.2.0]: https://github.com/dean0x/devflow/compare/v1.1.0...v1.2.0
820
828
  [1.1.0]: https://github.com/dean0x/devflow/compare/v1.0.0...v1.1.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devflow-kit",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Agentic Development Toolkit for Claude Code - Enhance AI-assisted development with intelligent commands and workflows",
5
5
  "type": "module",
6
6
  "bin": {
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "devflow-ambient",
3
3
  "description": "Ambient mode — auto-loads relevant skills for every prompt",
4
- "version": "1.3.0",
4
+ "version": "1.3.1",
5
5
  "agents": [],
6
6
  "skills": [
7
7
  "ambient-router"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "devflow-audit-claude",
3
3
  "description": "Audit CLAUDE.md files against Anthropic best practices",
4
- "version": "1.3.0",
4
+ "version": "1.3.1",
5
5
  "agents": [],
6
6
  "skills": []
7
7
  }
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "devflow-self-review",
3
3
  "description": "Self-review workflow: Simplifier + Scrutinizer for code quality",
4
- "version": "1.3.0",
4
+ "version": "1.3.1",
5
5
  "agents": [
6
6
  "simplifier",
7
7
  "scrutinizer",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -5,7 +5,7 @@
5
5
  "name": "DevFlow Contributors",
6
6
  "email": "dean@keren.dev"
7
7
  },
8
- "version": "1.3.0",
8
+ "version": "1.3.1",
9
9
  "homepage": "https://github.com/dean0x/devflow",
10
10
  "repository": "https://github.com/dean0x/devflow",
11
11
  "license": "MIT",
@@ -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="Update the file $MEMORY_FILE 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.
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="Create the file $MEMORY_FILE with working memory from this session. Keep under 120 lines. Use this structure:
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 "Write($CWD/.memory/WORKING-MEMORY.md)" "Write($CWD/.memory/PROJECT-PATTERNS.md)" \
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
- > /dev/null 2>> "$LOG_FILE" &
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
- log "Update completed for session $SESSION_ID"
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