diffowl 0.3.1 → 0.3.3
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/README.md +40 -10
- package/dist/cli.js +3842 -1270
- package/dist/cli.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -186,11 +186,13 @@ Runs a code review on your repository.
|
|
|
186
186
|
- **Default**: Reviews the changes in the **last commit**.
|
|
187
187
|
- `--staged`: Reviews currently **staged changes** instead of the last commit.
|
|
188
188
|
- `--commit <ref>`: Reviews a specific commit ref instead of the last commit.
|
|
189
|
+
- `--base [ref]`: Reviews all committed branch changes since the merge base with `ref`. With no
|
|
190
|
+
ref, DiffOwl detects `origin/HEAD`, then local `main` or `master`.
|
|
189
191
|
- `--hook`: Runs in background, non-blocking mode (used by Git hook).
|
|
190
192
|
- `--depth <depth>`: Overrides configured review depth. Valid values: `shallow`, `default`.
|
|
191
193
|
- `--reasoning <effort>`: Overrides configured OpenCode reasoning variant. Valid values: `auto`, `none`, `minimal`, `low`, `medium`, `high`, `max`, `xhigh`.
|
|
192
194
|
- `--verbose`: Includes suppressed findings and extra review details in the report.
|
|
193
|
-
- `--format <format>`: Output format: `text` (default) or `json`. JSON writes a versioned document to stdout and persists SQLite state.
|
|
195
|
+
- `--format <format>`: Output format: `text` (default) or `json`. JSON writes a versioned document to stdout and persists SQLite state. Review `status` is `open` when unsuppressed `error`/`warning` findings remain, `advisory` when only `info` findings remain, `resolved` when none remain, or `skipped`.
|
|
194
196
|
|
|
195
197
|
Candidates below `min_confidence` or outside changed files are excluded from actionable finding counts and review status. When any are excluded, the report includes a short diagnostic summary and points to `diffowl chat` for investigation. Outside-file candidates are shown in full with `--verbose`; below-threshold candidates remain available in the OpenCode session.
|
|
196
198
|
|
|
@@ -211,6 +213,15 @@ diffowl review --staged
|
|
|
211
213
|
# Review a specific commit
|
|
212
214
|
diffowl review --commit abc1234
|
|
213
215
|
|
|
216
|
+
# Review this branch against the default branch
|
|
217
|
+
diffowl review --base
|
|
218
|
+
|
|
219
|
+
# Review this branch against an explicit base
|
|
220
|
+
diffowl review --base main
|
|
221
|
+
|
|
222
|
+
# Review a stacked branch against its parent branch
|
|
223
|
+
diffowl review --base feature/parent-branch
|
|
224
|
+
|
|
214
225
|
# Include suppressed outside-file findings in the report
|
|
215
226
|
diffowl review --staged --verbose
|
|
216
227
|
|
|
@@ -218,18 +229,33 @@ diffowl review --staged --verbose
|
|
|
218
229
|
diffowl review --staged --reasoning high
|
|
219
230
|
```
|
|
220
231
|
|
|
232
|
+
Branch review uses merge-base-to-`HEAD` semantics, matching the committed diff shown by a pull
|
|
233
|
+
request. It never includes staged or unstaged changes. `--base` cannot be combined with `--staged`
|
|
234
|
+
or `--commit`; use those as separate review surfaces.
|
|
235
|
+
|
|
221
236
|
### `diffowl model`
|
|
222
237
|
|
|
223
|
-
View or
|
|
238
|
+
View or change the active AI model. This stores a personal preference in the repository's shared,
|
|
239
|
+
gitignored `.diffowl/preferences.yml`, so every linked worktree uses the same model without changing
|
|
240
|
+
the committed `.diffowl.yml`.
|
|
224
241
|
|
|
225
242
|
```bash
|
|
226
243
|
# Interactively pick a model
|
|
227
244
|
diffowl model
|
|
228
245
|
|
|
229
246
|
# Manually set a model
|
|
230
|
-
diffowl model opencode
|
|
247
|
+
diffowl model opencode/big-pickle
|
|
248
|
+
|
|
249
|
+
# Remove the personal selection
|
|
250
|
+
diffowl model --reset
|
|
251
|
+
|
|
252
|
+
# Override the model for one review only
|
|
253
|
+
diffowl review --model openai/gpt-5.6-luna
|
|
231
254
|
```
|
|
232
255
|
|
|
256
|
+
Model precedence is `--model`, then `DIFFOWL_MODEL`, then the shared local preference. Without one,
|
|
257
|
+
review commands ask you to configure a model rather than assuming provider access.
|
|
258
|
+
|
|
233
259
|
### `diffowl chat [report]`
|
|
234
260
|
|
|
235
261
|
Opens the OpenCode session associated with a review report. DiffOwl hands control to the OpenCode TUI rather than implementing a separate chat interface.
|
|
@@ -283,12 +309,15 @@ diffowl server stop
|
|
|
283
309
|
|
|
284
310
|
### `diffowl findings [list] | show | dismiss | defer | fix | reopen`
|
|
285
311
|
|
|
286
|
-
Inspect and manage the durable findings backlog stored in `.diffowl/state.db`.
|
|
312
|
+
Inspect and manage the durable findings backlog stored in the repo's shared `.diffowl/state.db`.
|
|
287
313
|
|
|
288
314
|
```bash
|
|
289
315
|
# List unresolved findings (open and regressed)
|
|
290
316
|
diffowl findings
|
|
291
317
|
|
|
318
|
+
# Machine-readable backlog for agents and scripts
|
|
319
|
+
diffowl findings --format json
|
|
320
|
+
|
|
292
321
|
# Inspect one finding by full id, id prefix, or latest:N
|
|
293
322
|
diffowl findings show fnd_abc --format json
|
|
294
323
|
|
|
@@ -305,18 +334,19 @@ diffowl findings defer fnd_abc --reason "Needs upstream change."
|
|
|
305
334
|
diffowl findings reopen fnd_abc --reason "Regression in new path."
|
|
306
335
|
```
|
|
307
336
|
|
|
337
|
+
`list` and `show` default to text; the mutation commands (`fix`, `dismiss`, `defer`, `reopen`) default to JSON because they are primarily agent-invoked — pass `--format text` for human-readable output.
|
|
338
|
+
|
|
308
339
|
The unresolved backlog is durable: a finding does not auto-resolve just because a later review fails to mention it. Absence from a later model review never marks a finding fixed.
|
|
309
340
|
|
|
310
341
|
---
|
|
311
342
|
|
|
312
343
|
## Configuration (`.diffowl.yml`)
|
|
313
344
|
|
|
314
|
-
Your `.diffowl.yml` configures
|
|
345
|
+
Your committed `.diffowl.yml` configures repository review policy. Model selection is deliberately
|
|
346
|
+
absent because provider access belongs to each developer. Legacy `model` keys remain readable for
|
|
347
|
+
compatibility but are ignored and removed the next time DiffOwl saves project config.
|
|
315
348
|
|
|
316
349
|
```yaml
|
|
317
|
-
# Model to use for reviews (provider/model)
|
|
318
|
-
model: opencode-go/big-pickle
|
|
319
|
-
|
|
320
350
|
# OpenCode server settings
|
|
321
351
|
server:
|
|
322
352
|
port: 4096
|
|
@@ -373,7 +403,7 @@ rules:
|
|
|
373
403
|
|
|
374
404
|
## Review Files
|
|
375
405
|
|
|
376
|
-
Each completed review starts with a timestamped report and an ephemeral `latest.md` copy. The optional resolution skill moves fully handled timestamped reports into the resolved archive:
|
|
406
|
+
Each completed review starts with a timestamped report and an ephemeral `latest.md` copy. Durable state and reports are anchored to the repository's primary checkout, so linked Git worktrees share one backlog. Checkout-scoped runtime files such as hook status, hook logs, and `server.pid` stay in that checkout's local `.diffowl/`. The optional resolution skill moves fully handled timestamped reports into the resolved archive:
|
|
377
407
|
|
|
378
408
|
```text
|
|
379
409
|
.diffowl/state.db # Authoritative review and finding state (0.3+)
|
|
@@ -409,7 +439,7 @@ This metadata is used by `diffowl chat`. For legacy pre-0.3 reports, agents may
|
|
|
409
439
|
|
|
410
440
|
- **No import step**: Existing markdown reports remain unchanged and chat-capable. They are not imported into SQLite.
|
|
411
441
|
- **New reviews persist state**: After upgrading, each `diffowl review` writes both SQLite state and a markdown snapshot.
|
|
412
|
-
- **Backlog semantics change**: Use `diffowl findings` for the unresolved backlog. Markdown `### Status` reflects the review snapshot only.
|
|
442
|
+
- **Backlog semantics change**: Use `diffowl findings` for the unresolved backlog. Markdown `### Status` is `Open` (error/warning findings), `Advisory` (info-only), or `Resolved` (none); it reflects the review snapshot only.
|
|
413
443
|
- **Resolution workflow**: Prefer `diffowl findings fix|dismiss|defer` over editing report checklists when durable findings exist. Never mark fixed without recorded verification (`--verified-by`).
|
|
414
444
|
- **Not in 0.3**: Semantic deduplication beyond fingerprint matching, automatic resolution when findings disappear, legacy report migration, retention cleanup, and SARIF export.
|
|
415
445
|
|