agentty 0.8.11 → 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 CHANGED
@@ -7,6 +7,75 @@ 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
+
10
79
  ## [v0.8.11] - 2026-05-02
11
80
 
12
81
  ### Added
@@ -23,7 +23,7 @@
23
23
  "hasInstallScript": true,
24
24
  "license": "Apache-2.0",
25
25
  "name": "agentty",
26
- "version": "0.8.11"
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.8.11"
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.8.11"
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.8.11",
71
+ "version": "0.9.0",
72
72
  "volta": {
73
73
  "node": "18.14.1",
74
74
  "npm": "9.5.0"