agentty 0.8.9 → 0.8.11

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,105 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
6
6
  this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ## [v0.8.11] - 2026-05-02
11
+
12
+ ### Added
13
+
14
+ - testty: add `SoftAssertions` accumulator that batches `match_*` failures and panics
15
+ once at scope end with every recorded message. When constructed with
16
+ `SoftAssertions::with_report`, each recorded `AssertionFailure` is also routed into
17
+ the most recent `ProofCapture::assertions` entry through the new
18
+ `ProofReport::record_soft_failure` plumbing so a single capture can carry every
19
+ batched failure for the proof report. `SoftAssertions` is re-exported from
20
+ `testty::prelude`.
21
+ - testty: re-export `AssertionResult` from `testty::prelude` so downstream code can
22
+ inspect `ProofCapture::assertions` entries (including the structured `failure`
23
+ payload) without naming the full module path.
24
+ - testty: add `Step::Eventually` plus the `Step::eventually` and `Scenario::eventually`
25
+ constructors so test authors can poll any `MatchResult`-returning frame predicate
26
+ against the live PTY frame and surface the last `AssertionFailure` on timeout instead
27
+ of a generic timeout panic. The `FramePredicate` alias is re-exported from
28
+ `testty::prelude`. VHS recordings approximate the new step with a fallback `Sleep` for
29
+ the full timeout because VHS has no predicate-driven wait primitive, keeping GIF
30
+ playback bounded by the same worst-case window the PTY executor would have observed.
31
+
32
+ ### Changed
33
+
34
+ - testty: add the new `AssertionResult::failure: Option<Box<AssertionFailure>>` field so
35
+ soft-batched failures preserve the full structured context (`Expected` variant,
36
+ optional `Region`, matched spans, frame excerpt) for HTML and other structured proof
37
+ backends instead of collapsing every failure into a formatted string. The annotated
38
+ text backend renders the first line of `description` next to `[PASS]`/`[FAIL]` and
39
+ indents continuation lines under the marker. `AssertionResult` stays a regular (not
40
+ `#[non_exhaustive]`) struct so downstream crates can both destructure entries on
41
+ `ProofCapture::assertions` and push their own entries with struct literals; existing
42
+ field reads through `assertion.passed` and `assertion.description` stay
43
+ source-compatible, but two downstream patterns break at compile time and must be
44
+ updated together: any caller constructing `AssertionResult` directly must add the new
45
+ `failure: None` field, and any caller exhaustively destructuring `AssertionResult`
46
+ with a `let AssertionResult { passed, description } = ...` pattern (the destructuring
47
+ contract pinned in `crates/testty/tests/public_api.rs`) must add the new `failure`
48
+ binding (or a `..` rest pattern).
49
+ - testty: mark `PtySessionError` as `#[non_exhaustive]` and add the new
50
+ `PtySessionError::Assertion(Box<AssertionFailure>)` variant so structured predicate
51
+ failures from `Step::Eventually` flow through the existing executor return type.
52
+ Downstream `match` arms must include a fallback `_` arm.
53
+ - agentty: replace the fixed `Step::sleep` waits in the shared E2E session-creation
54
+ journeys (`create_session_and_return_to_list` and
55
+ `create_session_with_prompt_and_return_to_list`) with predicate-driven
56
+ `Step::eventually` waiters keyed off the in-session and sessions-list footer markers
57
+ so the journeys settle as soon as the UI transitions and surface a structured
58
+ `AssertionFailure` on timeout instead of an opaque over-sleep.
59
+ - Bump workspace crate metadata and lockfile package versions to `0.8.11`.
60
+
61
+ ### Contributors
62
+
63
+ - @andagaev
64
+ - @minev-dev
65
+
66
+ ## [v0.8.10] - 2026-04-28
67
+
68
+ ### Added
69
+
70
+ - agentty: add `gemini-3.1-flash-lite-preview` as a selectable Gemini model with parser,
71
+ provider metadata, docs, and E2E model-picker coverage.
72
+ - agentty: add a project-scoped `Review` tab that lists open GitHub pull requests and
73
+ GitLab merge requests requesting the current user's review, with refresh handling,
74
+ navigation, help text, docs, and E2E coverage.
75
+ - testty: `PtySessionBuilder::args` forwards CLI arguments to the spawned binary so
76
+ non-interactive subcommand flows such as `--help` and `--version` are testable through
77
+ the existing builder pipeline.
78
+ - testty: add GIF freshness modes, hash sidecars, read-only check mode, forced
79
+ regeneration, public API re-exports, and `TESTTY_GIF_MODE` support in the agentty
80
+ feature-test harness.
81
+
82
+ ### Changed
83
+
84
+ - agentty: start new session worktrees from the active local branch, keep published
85
+ session rebases on the remote base ref, remove unused upstream lookup plumbing, and
86
+ keep git command execution non-interactive.
87
+ - agentty: reuse existing open same-branch GitHub pull requests or GitLab merge requests
88
+ for review requests, and keep requested-review cache refreshes fresher.
89
+ - agentty: route `Esc` in question mode as an end-turn shortcut when no `@`-mention
90
+ overlay is open, while keeping overlay dismissal on `Esc`.
91
+ - agentty: preserve legacy plain-`Enter` encoding under tmux on ghostty by keeping kitty
92
+ keyboard enhancement flags to disambiguation and alternate-key reporting.
93
+ - Bump workspace crate metadata and lockfile package versions to `0.8.10`.
94
+
95
+ ### Fixed
96
+
97
+ - testty: `Frame::row_text`, `Frame::all_text`, and `Frame::text_in_region` skip
98
+ wide-character continuation cells so wide glyphs stay contiguous with their neighbors,
99
+ while real blank columns are preserved as spaces so substring searches cannot collapse
100
+ text across distant columns.
101
+
102
+ ### Contributors
103
+
104
+ - @andagaev
105
+ - @minev-dev
106
+
8
107
  ## [v0.8.9] - 2026-04-27
9
108
 
10
109
  ### Changed
@@ -23,7 +23,7 @@
23
23
  "hasInstallScript": true,
24
24
  "license": "Apache-2.0",
25
25
  "name": "agentty",
26
- "version": "0.8.9"
26
+ "version": "0.8.11"
27
27
  },
28
28
  "node_modules/@isaacs/cliui": {
29
29
  "engines": {
@@ -542,5 +542,5 @@
542
542
  }
543
543
  },
544
544
  "requires": true,
545
- "version": "0.8.9"
545
+ "version": "0.8.11"
546
546
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/agentty-xyz/agentty/releases/download/v0.8.9"
3
+ "https://github.com/agentty-xyz/agentty/releases/download/v0.8.11"
4
4
  ],
5
5
  "bin": {
6
6
  "agentty": "run-agentty.js"
@@ -68,7 +68,7 @@
68
68
  "zipExt": ".tar.xz"
69
69
  }
70
70
  },
71
- "version": "0.8.9",
71
+ "version": "0.8.11",
72
72
  "volta": {
73
73
  "node": "18.14.1",
74
74
  "npm": "9.5.0"