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 +75 -0
- package/dist-pkg/cli.js +199 -196
- package/package.json +1 -1
- package/skills/saffron/SKILL.md +1 -0
- package/skills/saffron/references/config.md +3 -2
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.
|