saffron-ai 0.9.6 → 0.9.7

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,81 @@ the VS Code extension (`ChathurangaJayasinghe.saffron-vscode`) and the
5
5
  JetBrains plugin (`ai.saffron.jetbrains`). Dates are publish dates. Each
6
6
  release heading names its main feature: `## <version>: <title>`.
7
7
 
8
+ ## 0.9.7: CI results without importing
9
+
10
+ Released 2026-10-05.
11
+
12
+ Runner
13
+
14
+ - **See what a CI run found before you import it.** `saffron report --run
15
+ <id>` downloads the run's Saffron bundles once into
16
+ `.saffron/ci/<provider>-<id>/attempt-<n>/`, checks them as `saffron
17
+ import` does (repository, digests, sizes, format, the run, attempts and
18
+ shards), judges each proposal against this checkout without filing it,
19
+ and opens the run's report page. Your `.saffron/reports/`,
20
+ `.saffron/proposals/`, `.saffron/artifacts/` and import ledger are left
21
+ as they were. `--json` gives the run, its totals, each scenario with its
22
+ failing step, first error line, screenshot and trace, each proposal as
23
+ importable or not with the reason, and warnings: what the VS Code and
24
+ JetBrains CI runs views show under a run.
25
+ - **A run without results says why.** `running` (not finished),
26
+ `expired` (the service deleted the artifact) or `none` (nothing
27
+ uploaded; the guide's workflow exports only on failure, and `if:
28
+ always()` on the export and upload steps keeps every run's results), as
29
+ `reasonKind` and `reason`, exit 0.
30
+ - **Large runs ask first.** `--max-download <MB>` refuses a run whose
31
+ bundles add up to more, with `{"error", "kind": "too-large",
32
+ "sizeBytes"}` and exit 2, so an editor can ask and run again.
33
+ - **Replay a CI run, view only.** `saffron trace --run <id> [scenario]`
34
+ replays the run's traces from `.saffron/ci/`, taking the same scenario
35
+ forms as `saffron trace` (`<feature>:<scenario>` included). The page has
36
+ no Accept or Reject and its server no review routes: nothing was filed.
37
+ - **View, then import, downloads once.** `saffron import --run <id>`
38
+ reuses the viewed download of the run's latest attempt.
39
+ - **A cache that looks after itself.** `.saffron/ci/` keeps the newest 10
40
+ runs and at most 1 GB, removing the oldest first; a download goes
41
+ through a `.partial` folder and is renamed whole, so a cancelled one
42
+ leaves nothing behind. The folder writes its own `.gitignore` (`*`), so
43
+ it never shows in `git status`, even in a project set up before it
44
+ existed, and `saffron init` adds `.saffron/ci/` to the entries it
45
+ manages.
46
+
47
+ VS Code extension 0.6.0
48
+
49
+ - **Expand a CI run to see what it found, without importing it.** The
50
+ run lists its totals, each failed and healed scenario with its failing
51
+ step and first error line (the tooltip has what the agent changed), and
52
+ "N proposals: M importable" with the reason each one would not import.
53
+ Your reports, proposals and evidence are left alone. Needs saffron-ai
54
+ 0.9.7 or later; an older runner says so.
55
+ - **Open Report and Open Trace on a viewed run.** Open Report shows the
56
+ run's report in your browser; Open Trace replays a traced scenario,
57
+ view only. Import stays the only action that files proposals.
58
+ - **Large results ask first.** Results above the new
59
+ `saffron.ciMaxDownloadMB` setting (default 100, 0 for no limit) ask
60
+ "This run's results are N MB. Download?". Loading can be cancelled,
61
+ which stops the whole download, and never runs while the CI runs view
62
+ is hidden.
63
+ - **A run with no results says why:** still running, its artifacts
64
+ expired, or it uploaded none.
65
+
66
+ JetBrains plugin 0.6.0
67
+
68
+ - **CI Runs shows what a run found without importing it.** Select a run
69
+ to see its totals, each failed and healed scenario with its failing
70
+ step and first error line (the narrative in the tooltip), and
71
+ "N proposals: M importable" with the reason for each one that is not.
72
+ It loads in a background task you can cancel, only while the tab is on
73
+ screen. Needs saffron-ai 0.9.7 or later; an older runner says so.
74
+ - **Open Report and Open Trace on a viewed run.** Open Trace (or a
75
+ double-click) replays a failed or healed scenario's trace, view only.
76
+ Import Run stays the only action that brings proposals into the
77
+ checkout.
78
+ - **Large results ask first**, above the limit in Settings, Tools, Saffron
79
+ (default 100 MB, 0 for no limit), the same as the VS Code setting.
80
+ - **A run with no results says why:** still running, expired, or none
81
+ uploaded.
82
+
8
83
  ## 0.9.6: Dashboard figures you can trust
9
84
 
10
85
  Released 2026-10-05.