saffron-ai 0.8.4 → 0.8.5

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
@@ -4,6 +4,45 @@ All notable changes to Saffron, in one place: the `saffron-ai` runner (npm),
4
4
  the VS Code extension (`ChathurangaJayasinghe.saffron-vscode`) and the
5
5
  JetBrains plugin (`ai.saffron.jetbrains`). Dates are publish dates.
6
6
 
7
+ ## 0.8.5
8
+
9
+ Released 2026-09-24.
10
+
11
+ Runner
12
+
13
+ - **A proposal is bound to what you reviewed.** Every proposal now carries
14
+ digests of the scenario's steps, of the committed recording it was
15
+ diffed against and of its own recording, taken when it was filed.
16
+ `saffron accept` recomputes them and refuses a proposal, by reason, when
17
+ any moved since: a step edited, a colleague's heal accepted, a locator
18
+ fix propagated, a pull, a hand edit ("step 3 now reads ... and was
19
+ ..."). There is no override; run the scenario again for a proposal
20
+ bound to what is there now, or reject it. `saffron accept`, `saffron
21
+ diff`, `saffron status --json` (`stale`) and both IDE panels show STALE
22
+ with the reason first. A run that finds a stale pending proposal records
23
+ afresh instead of proving it again. Fingerprints are advisory and are
24
+ not bound; data tables, doc strings and the feature edits that
25
+ `--with-feature-edit` would apply are. Proposals filed before this
26
+ release carry no digests and are accepted with a note.
27
+ - **Recordings and proposals are validated on read.** The schema version,
28
+ every step, every action type and field are checked, along with the
29
+ operands each action needs (a click without a usable target, an
30
+ `expectUrl` without a URL, which used to compare "" and pass), and the
31
+ first problem is named by path. An unreadable recording makes its scenario red
32
+ with the reason instead of replaying as garbage or being recorded over;
33
+ `saffron status` marks it `invalid` with the reason (`cacheProblem`);
34
+ an unreadable proposal is reported and left out of listings
35
+ (`unreadableProposals`) instead of blanking them. A file from a newer
36
+ runner, a schema version or an action type this one does not know, says
37
+ to update `saffron-ai`. Fields added within the schema version stay
38
+ optional, so newer caches read on older runners. Hand-written caches may
39
+ omit `recordedAt` and `recordedBy`.
40
+
41
+ Editors (VS Code extension 0.2.10, JetBrains plugin 0.2.5)
42
+
43
+ - Both Proposals panels mark a stale proposal STALE, with the reason and
44
+ what to do, and note a proposal filed by an older runner.
45
+
7
46
  ## 0.8.4
8
47
 
9
48
  Released 2026-09-24.