diffowl 0.3.2 → 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 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,9 +229,15 @@ 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 interactively change the active AI model.
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
@@ -228,8 +245,17 @@ diffowl model
228
245
 
229
246
  # Manually set a model
230
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.
@@ -289,6 +315,9 @@ Inspect and manage the durable findings backlog stored in the repo's shared `.di
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 everything for DiffOwl in your project:
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/big-pickle
319
-
320
350
  # OpenCode server settings
321
351
  server:
322
352
  port: 4096
@@ -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