diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e6fe9fa --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,25 @@ +# Changelog + +## 0.2.0 (2026-10-17) + +### New look +- Redesigned landing page and app on a new design system, with a left navigation rail and light motion. +- The landing page's 3D hero figure loads only on larger screens. Phones, low-power devices and reduced-motion settings get a static figure instead. + +### Clearer results +- Failure clusters now read as plain statements of what failed. +- Attempts that gave the same output are grouped into one row ("10 attempts, identical output") that opens to the attempts themselves. +- The mock summarizer writes readable summaries. +- Tables that are wider than the screen on mobile scroll sideways inside a labelled region with a visible hint. + +### Fixes +- Saving an attempt now holds the run's lock only for the final counter update, not for the whole save. This fixes slow saves and flaky end-to-end tests. +- Failure clustering computes each pairwise distance once instead of recomputing them on every merge. + +### Housekeeping +- Removed the unused card variants. +- Added an accessibility check that covers every page of the app at 1440, 810 and 390 px. + +## 0.1.0 (2026-10-04) + +First release. See the [v0.1.0 release notes](https://github.com/AlfredBateman/AgentProbe/releases/tag/v0.1.0). diff --git a/README.md b/README.md index 92ec79d..424490a 100644 --- a/README.md +++ b/README.md @@ -164,8 +164,8 @@ Python 3.12 or 3.13 (3.14 was tried and could not build the pinned PyYAML 6.0.2 ```bash python3 -m venv .venv && source .venv/bin/activate pip install \ - "agentprobe-core @ git+https://github.com/AlfredBateman/AgentProbe@v0.1.0#subdirectory=packages/core" \ - "agentprobe @ git+https://github.com/AlfredBateman/AgentProbe@v0.1.0#subdirectory=packages/cli" + "agentprobe-core @ git+https://github.com/AlfredBateman/AgentProbe@v0.2.0#subdirectory=packages/core" \ + "agentprobe @ git+https://github.com/AlfredBateman/AgentProbe@v0.2.0#subdirectory=packages/cli" agentprobe --help ``` @@ -282,7 +282,7 @@ jobs: steps: - uses: actions/checkout@v7 # Start your agent here, on a port your agentprobe.yaml points at. - - uses: AlfredBateman/AgentProbe/action@v0.1.0 + - uses: AlfredBateman/AgentProbe/action@v0.2.0 with: suite: suites/regression.yaml fail-under: "0.9" diff --git a/action/README.md b/action/README.md index c24fa40..02c118f 100644 --- a/action/README.md +++ b/action/README.md @@ -9,7 +9,7 @@ a pass rate below threshold — using the `agentprobe` CLI's own exit codes ([AD Minimal, no server (mock LLM judges, no baseline comparison): ```yaml -- uses: AlfredBateman/AgentProbe/action@v0.1.0 +- uses: AlfredBateman/AgentProbe/action@v0.2.0 with: suite: suites/regression.yaml ``` @@ -17,7 +17,7 @@ Minimal, no server (mock LLM judges, no baseline comparison): With an AgentProbe server, comparing against `main`'s recorded baseline: ```yaml -- uses: AlfredBateman/AgentProbe/action@v0.1.0 +- uses: AlfredBateman/AgentProbe/action@v0.2.0 with: suite: suites/regression.yaml baseline-branch: main diff --git a/apps/api/pyproject.toml b/apps/api/pyproject.toml index 695ef11..63b7653 100644 --- a/apps/api/pyproject.toml +++ b/apps/api/pyproject.toml @@ -5,7 +5,7 @@ description = "AgentProbe FastAPI backend and workers." requires-python = ">=3.12" license = "MIT" dependencies = [ - "agentprobe-core==0.1.0", + "agentprobe-core==0.2.0", "alembic==1.20.0", "argon2-cffi==25.1.0", "cryptography==50.0.1", @@ -25,7 +25,7 @@ dependencies = [ [project.optional-dependencies] # Live LLM judging on the server (docs/DEPLOY.md): opt-in, since LiteLLM's tree is large. The # API image installs it only when built with --build-arg API_EXTRAS=live. -live = ["agentprobe-core[live]==0.1.0"] +live = ["agentprobe-core[live]==0.2.0"] [build-system] requires = ["uv_build>=0.12.18,<0.13"] diff --git a/apps/web/package.json b/apps/web/package.json index 427d3d8..394c23d 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "0.1.0", + "version": "0.2.0", "private": true, "license": "MIT", "scripts": { diff --git a/packages/cli/README.md b/packages/cli/README.md index f9b99bc..73ea867 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -12,7 +12,7 @@ Not on PyPI yet, and the PyPI name `agentprobe` belongs to an unrelated project: `pip install agentprobe`. Install the CLI and its engine from this repository instead: ```bash -pip install "agentprobe-core @ git+https://github.com/AlfredBateman/AgentProbe@v0.1.0#subdirectory=packages/core" "agentprobe @ git+https://github.com/AlfredBateman/AgentProbe@v0.1.0#subdirectory=packages/cli" +pip install "agentprobe-core @ git+https://github.com/AlfredBateman/AgentProbe@v0.2.0#subdirectory=packages/core" "agentprobe @ git+https://github.com/AlfredBateman/AgentProbe@v0.2.0#subdirectory=packages/cli" ``` Requires Python 3.12+. `agentprobe --help` should work right after install, with no config. diff --git a/packages/cli/pyproject.toml b/packages/cli/pyproject.toml index 1bfb5eb..6e9f84e 100644 --- a/packages/cli/pyproject.toml +++ b/packages/cli/pyproject.toml @@ -1,11 +1,11 @@ [project] name = "agentprobe" -version = "0.1.0" +version = "0.2.0" description = "AgentProbe CLI: run agent test suites locally and in CI." requires-python = ">=3.12" license = "MIT" dependencies = [ - "agentprobe-core==0.1.0", + "agentprobe-core==0.2.0", "rich==15.0.0", "typer==0.27.2", ] diff --git a/packages/core/pyproject.toml b/packages/core/pyproject.toml index 5ff3f1e..06d59b1 100644 --- a/packages/core/pyproject.toml +++ b/packages/core/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "agentprobe-core" -version = "0.1.0" +version = "0.2.0" description = "AgentProbe engine: suite schema, adapters, judges, attacks, statistics, LLM layer." requires-python = ">=3.12" license = "MIT" diff --git a/packages/core/src/agentprobe_core/__init__.py b/packages/core/src/agentprobe_core/__init__.py index 4649a4e..9755270 100644 --- a/packages/core/src/agentprobe_core/__init__.py +++ b/packages/core/src/agentprobe_core/__init__.py @@ -1,3 +1,5 @@ """AgentProbe engine. Pure logic: no database or web-framework imports.""" -__version__ = "0.1.0" +from importlib.metadata import version + +__version__ = version("agentprobe-core") diff --git a/packages/core/tests/test_smoke.py b/packages/core/tests/test_smoke.py index 28ecc54..a6af9c8 100644 --- a/packages/core/tests/test_smoke.py +++ b/packages/core/tests/test_smoke.py @@ -2,4 +2,4 @@ def test_version_is_exposed() -> None: - assert agentprobe_core.__version__ == "0.1.0" + assert agentprobe_core.__version__ == "0.2.0" diff --git a/uv.lock b/uv.lock index ff34ff4..f3947c0 100644 --- a/uv.lock +++ b/uv.lock @@ -13,7 +13,7 @@ members = [ [[package]] name = "agentprobe" -version = "0.1.0" +version = "0.2.0" source = { editable = "packages/cli" } dependencies = [ { name = "agentprobe-core" }, @@ -78,7 +78,7 @@ provides-extras = ["live"] [[package]] name = "agentprobe-core" -version = "0.1.0" +version = "0.2.0" source = { editable = "packages/core" } dependencies = [ { name = "anyio" },