agentty 0.8.10 → 0.9.0
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 +125 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,131 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [v0.9.0] - 2026-05-02
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- agentty: accept image paste payloads from `Ctrl+Shift+V` and copied PNG files in the
|
|
15
|
+
prompt input flow.
|
|
16
|
+
- agentty: add branch and path columns to the `Projects` table so repository identity is
|
|
17
|
+
visible without opening a project.
|
|
18
|
+
- testty: add the named `StartupWait` preset enum (`Default`, `FastNative`, `SlowNode`,
|
|
19
|
+
`Custom { stable_ms, timeout_ms }`) plus the `Journey::wait_for_startup_preset` and
|
|
20
|
+
`Journey::wait_for_startup_default` constructors so test authors can pick a documented
|
|
21
|
+
startup-wait profile instead of hand-tuning raw `(stable_ms, timeout_ms)` numbers per
|
|
22
|
+
project. `StartupWait` is re-exported from `testty::prelude`. The historical
|
|
23
|
+
`Journey::wait_for_startup(stable_ms, timeout_ms)` entry point keeps working and now
|
|
24
|
+
routes through `StartupWait::Custom`.
|
|
25
|
+
- testty: add `match_*` recipe siblings for composing reusable frame assertions.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- agentty: move the activity heatmap into the `Projects` tab, add aggregate work stats
|
|
30
|
+
to the `Projects` table, keep the `Stats` tab focused on global aggregates, and hide
|
|
31
|
+
non-repository workspaces from the project list.
|
|
32
|
+
- agentty: tighten shared tab-page spacing and split project activity from project info
|
|
33
|
+
so the `Projects` tab has denser, clearer panels.
|
|
34
|
+
- testty: HTML proof report now renders structured `match_*` failures (those carried on
|
|
35
|
+
`AssertionResult::failure`) with a side-by-side context-and-frame block. The context
|
|
36
|
+
column surfaces the `Expected` variant, the optional `Region` coordinates, and the
|
|
37
|
+
matched-span list; the frame column shows `AssertionFailure::frame_excerpt` inside a
|
|
38
|
+
`<pre>` with a column ruler and per-row gutters whose labels are anchored to the
|
|
39
|
+
region's `(col, row)` so reported coordinates match the live frame. The ruler defaults
|
|
40
|
+
to the compact two-row tens-and-ones layout and adds a hundreds row above the tens row
|
|
41
|
+
whenever the excerpt extends past column 99, so absolute coordinates beyond column 99
|
|
42
|
+
can be recovered by stacking the digits at any tens-marked column instead of being
|
|
43
|
+
truncated by `(col / 10) % 10`. The column ruler is sized by terminal cell width (via
|
|
44
|
+
`unicode-width`) so wide glyphs in the excerpt do not desync the labels from real
|
|
45
|
+
terminal positions. Needle highlighting in the excerpt is scoped to what the
|
|
46
|
+
underlying matcher actually validated: every-match matchers (`TextInRegion`,
|
|
47
|
+
`NotVisible`, `MatchCount`) wrap every occurrence of the needle in a `needle-hit` span
|
|
48
|
+
using the same one-character advance as `TerminalFrame::find_text`, so overlapping
|
|
49
|
+
matches like `ana` in `banana` are no longer silently dropped, while first-match-only
|
|
50
|
+
matchers (`ForegroundColor`, `BackgroundColor`, `Highlighted`, `NotHighlighted`) only
|
|
51
|
+
highlight the first occurrence so the report does not imply that secondary occurrences
|
|
52
|
+
were checked. For every-match matchers, strictly overlapping byte ranges are merged
|
|
53
|
+
into a single span so the emitted HTML stays well-formed, while adjacent matches like
|
|
54
|
+
`ab` in `abab` keep their distinct spans so the report shows both hits. The
|
|
55
|
+
`needle-hit` style uses background color only with no horizontal padding so
|
|
56
|
+
highlighted cells stay aligned with the column ruler. The matched-span list now also
|
|
57
|
+
surfaces the actual `foreground`, `background`, and style flags (`bold`, `italic`,
|
|
58
|
+
`underline`, `inverse`, `dim`) carried on each `MatchedSpan`, so color- and
|
|
59
|
+
highlight-style failures expose the actual cell state next to the structured
|
|
60
|
+
`Expected` description instead of forcing readers back to the assertion-line summary.
|
|
61
|
+
The `Expected` description for color and highlight expectations is also reworded to
|
|
62
|
+
read as "first match of '<needle>' with foreground color ..." (and the equivalent for
|
|
63
|
+
background, highlight, and not-highlight) so the report makes it explicit that the
|
|
64
|
+
underlying matchers only validate the first matched span. Legacy entries pushed
|
|
65
|
+
through `ProofReport::add_assertion` keep the historical one-line `pass`/`fail` shape
|
|
66
|
+
unchanged.
|
|
67
|
+
- Bump workspace crate metadata and lockfile package versions to `0.9.0`.
|
|
68
|
+
|
|
69
|
+
### Fixed
|
|
70
|
+
|
|
71
|
+
- agentty: isolate E2E project discovery from the host home directory so tests only see
|
|
72
|
+
repositories created for the current scenario.
|
|
73
|
+
|
|
74
|
+
### Contributors
|
|
75
|
+
|
|
76
|
+
- @andagaev
|
|
77
|
+
- @minev-dev
|
|
78
|
+
|
|
79
|
+
## [v0.8.11] - 2026-05-02
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
|
|
83
|
+
- testty: add `SoftAssertions` accumulator that batches `match_*` failures and panics
|
|
84
|
+
once at scope end with every recorded message. When constructed with
|
|
85
|
+
`SoftAssertions::with_report`, each recorded `AssertionFailure` is also routed into
|
|
86
|
+
the most recent `ProofCapture::assertions` entry through the new
|
|
87
|
+
`ProofReport::record_soft_failure` plumbing so a single capture can carry every
|
|
88
|
+
batched failure for the proof report. `SoftAssertions` is re-exported from
|
|
89
|
+
`testty::prelude`.
|
|
90
|
+
- testty: re-export `AssertionResult` from `testty::prelude` so downstream code can
|
|
91
|
+
inspect `ProofCapture::assertions` entries (including the structured `failure`
|
|
92
|
+
payload) without naming the full module path.
|
|
93
|
+
- testty: add `Step::Eventually` plus the `Step::eventually` and `Scenario::eventually`
|
|
94
|
+
constructors so test authors can poll any `MatchResult`-returning frame predicate
|
|
95
|
+
against the live PTY frame and surface the last `AssertionFailure` on timeout instead
|
|
96
|
+
of a generic timeout panic. The `FramePredicate` alias is re-exported from
|
|
97
|
+
`testty::prelude`. VHS recordings approximate the new step with a fallback `Sleep` for
|
|
98
|
+
the full timeout because VHS has no predicate-driven wait primitive, keeping GIF
|
|
99
|
+
playback bounded by the same worst-case window the PTY executor would have observed.
|
|
100
|
+
|
|
101
|
+
### Changed
|
|
102
|
+
|
|
103
|
+
- testty: add the new `AssertionResult::failure: Option<Box<AssertionFailure>>` field so
|
|
104
|
+
soft-batched failures preserve the full structured context (`Expected` variant,
|
|
105
|
+
optional `Region`, matched spans, frame excerpt) for HTML and other structured proof
|
|
106
|
+
backends instead of collapsing every failure into a formatted string. The annotated
|
|
107
|
+
text backend renders the first line of `description` next to `[PASS]`/`[FAIL]` and
|
|
108
|
+
indents continuation lines under the marker. `AssertionResult` stays a regular (not
|
|
109
|
+
`#[non_exhaustive]`) struct so downstream crates can both destructure entries on
|
|
110
|
+
`ProofCapture::assertions` and push their own entries with struct literals; existing
|
|
111
|
+
field reads through `assertion.passed` and `assertion.description` stay
|
|
112
|
+
source-compatible, but two downstream patterns break at compile time and must be
|
|
113
|
+
updated together: any caller constructing `AssertionResult` directly must add the new
|
|
114
|
+
`failure: None` field, and any caller exhaustively destructuring `AssertionResult`
|
|
115
|
+
with a `let AssertionResult { passed, description } = ...` pattern (the destructuring
|
|
116
|
+
contract pinned in `crates/testty/tests/public_api.rs`) must add the new `failure`
|
|
117
|
+
binding (or a `..` rest pattern).
|
|
118
|
+
- testty: mark `PtySessionError` as `#[non_exhaustive]` and add the new
|
|
119
|
+
`PtySessionError::Assertion(Box<AssertionFailure>)` variant so structured predicate
|
|
120
|
+
failures from `Step::Eventually` flow through the existing executor return type.
|
|
121
|
+
Downstream `match` arms must include a fallback `_` arm.
|
|
122
|
+
- agentty: replace the fixed `Step::sleep` waits in the shared E2E session-creation
|
|
123
|
+
journeys (`create_session_and_return_to_list` and
|
|
124
|
+
`create_session_with_prompt_and_return_to_list`) with predicate-driven
|
|
125
|
+
`Step::eventually` waiters keyed off the in-session and sessions-list footer markers
|
|
126
|
+
so the journeys settle as soon as the UI transitions and surface a structured
|
|
127
|
+
`AssertionFailure` on timeout instead of an opaque over-sleep.
|
|
128
|
+
- Bump workspace crate metadata and lockfile package versions to `0.8.11`.
|
|
129
|
+
|
|
130
|
+
### Contributors
|
|
131
|
+
|
|
132
|
+
- @andagaev
|
|
133
|
+
- @minev-dev
|
|
134
|
+
|
|
10
135
|
## [v0.8.10] - 2026-04-28
|
|
11
136
|
|
|
12
137
|
### Added
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"hasInstallScript": true,
|
|
24
24
|
"license": "Apache-2.0",
|
|
25
25
|
"name": "agentty",
|
|
26
|
-
"version": "0.
|
|
26
|
+
"version": "0.9.0"
|
|
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.
|
|
545
|
+
"version": "0.9.0"
|
|
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.
|
|
3
|
+
"https://github.com/agentty-xyz/agentty/releases/download/v0.9.0"
|
|
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.
|
|
71
|
+
"version": "0.9.0",
|
|
72
72
|
"volta": {
|
|
73
73
|
"node": "18.14.1",
|
|
74
74
|
"npm": "9.5.0"
|