Repository navigation
Releases
v2026.1112.1
What's Changed
- refactor: name internal error codes and markers wardmote by @tickernelz in #302
- refactor: name UI globals, sentinels and dev-server routes wardmote by @tickernelz in #303
- test(plugin-llm-wiki): run the suite in CI and fix stale assertions by @tickernelz in #304
- refactor: name stored sentinels wardmote with migrations by @tickernelz in #307
- test: spell retired names as literals so the legacy-name gate counts them by @tickernelz in #308
- test(plugins): run sandbox-provider and example suites in CI by @tickernelz in #305
- ci: refresh shard duration manifests from 12 Nov main runs by @tickernelz in #309
- chore(runner): class external eval corpus paths and rename spec ids by @tickernelz in #310
- feat(ui): fetch upstream models in custom provider form by @tickernelz in #311
- fix(server): cap the disk guard GB warning at half the disk by @tickernelz in #306
- feat(updates): show admins a Wardmote update notice in the web UI by @tickernelz in #313
- feat(updates): install updates from the web UI with a force or wait choice by @tickernelz in #315
- feat(updates): install updates automatically when enabled, default off by @tickernelz in #316
- fix(updates): keep waiting while the update unit still runs by @tickernelz in #317
- feat(ui): open row editors inside the edited row by @tickernelz in #312
- fix: point this project's own links at tickernelz/wardmote by @tickernelz in #314
Full Changelog: v2026.1112.0...v2026.1112.1
v2026.1112.0
What's Changed
- fix(acpx): name the remaining session cleanup reasons wardmote by @tickernelz in #290
- test(runner): freeze the clock in two native-session timeout tests by @tickernelz in #292
- ci: fit a pull request run into 19 parallel lanes by @tickernelz in #289
- ci: run the browser gates in a pinned GHCR image by @tickernelz in #291
- fix(retry): keep scheduled retry when retry-now is gated by @tickernelz in #293
- fix(omp-local): keep per-run values out of the system prompt by @tickernelz in #297
- fix(server): extend the systemd start timeout until the server is ready by @tickernelz in #288
- fix(db): write backups to a partial name and rename when complete by @tickernelz in #294
- fix(cli): migrate retired store marker when home already moved by @tickernelz in #296
- fix(omp-local): stop rotating sessions on file size by @tickernelz in #298
- refactor(tools): name the built-in tool provider types wardmote by @tickernelz in #295
- feat(backup): keep 2 verified backups, guard disk space, expire idle OMP sessions by @tickernelz in #299
- fix(ui): announce disk space warnings without an alert role by @tickernelz in #301
- feat(ui): sticky task header actions and a minimizable monitor card by @tickernelz in #300
Full Changelog: v2026.1111.0...v2026.1112.0
v2026.1111.0
What's Changed
- refactor: rename X-Paperclip-* headers to X-Wardmote-* by @tickernelz in #220
- refactor(mcp): rename paperclip* MCP tools to wardmote* by @tickernelz in #222
- refactor(mcp): rename the MCP server and route to wardmote by @tickernelz in #223
- fix(omp-local): match the MCP connect warning only on OMP's own lines by @tickernelz in #224
- refactor(skills): rename bundled paperclip skills to wardmote by @tickernelz in #225
- feat(rename): rewrite retired names in live agent text on start by @tickernelz in #226
- feat(cli)!: move the service, shim and home to the Wardmote names by @tickernelz in #227
- feat(db): rename the embedded Postgres role and database to wardmote by @tickernelz in #228
- feat: record board decisions under the wardmote channel value by @tickernelz in #229
- refactor(runner): rename the runner crate and binary to wardmote by @tickernelz in #231
- feat: store the vault and managed-secret modes under the wardmote name by @tickernelz in #232
- refactor(runner): name the runner and public MCP tools wardmote_* by @tickernelz in #233
- feat: name the native runner adapter wardmote_runner by @tickernelz in #234
- refactor: rename Paperclip-prefixed types and functions to Wardmote by @tickernelz in #236
- ci(upgrade-path): build this commit while the published release installs by @tickernelz in #235
- refactor: rename camelCase paperclip keys to wardmote with data migration by @tickernelz in #237
- refactor: rename Paperclip product prose to Wardmote by @tickernelz in #239
- refactor: use wardmote example and test hostnames by @tickernelz in #240
- refactor(ui): rename CSS classes and custom properties to wardmote by @tickernelz in #241
- refactor: name the company package extension .wardmote.yaml by @tickernelz in #242
- refactor: rename the run staging directory to .wardmote-runtime by @tickernelz in #243
- refactor(workspaces): rename project repositories dir to .wardmote-repositories by @tickernelz in #244
- refactor(ui): rename browser storage keys to the wardmote prefix by @tickernelz in #245
- refactor(config): move repo-local config dir to .wardmote by @tickernelz in #247
- refactor(skills): rename bundled helper scripts to wardmote-* by @tickernelz in #246
- refactor(ui): rename worktree meta tags, build stamps and startup ids by @tickernelz in #248
- refactor(cli): prefix new dev worktree names with wardmote- by @tickernelz in #249
- fix(scripts): call the wardmote CLI in worktree provisioning by @tickernelz in #250
- refactor: rename remaining legacy-named repo paths to wardmote by @tickernelz in #251
- refactor: move catalog skill and team keys to the wardmote owner by @tickernelz in #252
- refactor: rename shipped plugin ids to wardmote with data migration by @tickernelz in #253
- refactor: rename the managed environment marker to wardmote by @tickernelz in #254
- refactor: rename docker paths, volumes and smoke env to wardmote by @tickernelz in #255
- refactor: rename protocol schema ids to wardmote by @tickernelz in #256
- refactor: rename packaged commands to wardmote by @tickernelz in #257
- feat: rename public MCP scopes and events to wardmote by @tickernelz in #260
- refactor: name lock keys, session ids and chat state key after Wardmote by @tickernelz in #262
- feat: stop contacting Paperclip services by default by @tickernelz in #258
- refactor: name Kubernetes sandbox objects and upload scratch after Wardmote by @tickernelz in #259
- refactor: name trace spans and transient keys after Wardmote by @tickernelz in #261
- feat(secrets): name AWS Secrets Manager secrets and tags wardmote by @tickernelz in #263
- refactor: name temporary directories wardmote by @tickernelz in #264
- fix(scripts): resolve the home under ~/.wardmote only by @tickernelz in #265
- refactor: name transient dot files and staging dirs wardmote by @tickernelz in #266
- fix(runner-e2e): repair the support suites and run them in CI by @tickernelz in #267
- refactor: name persisted run and lease markers wardmote by @tickernelz in #268
- perf(server): prefilter created-from-issue runs through indexes by @tickernelz in #275
- perf(ui): stop re-reading settled run logs and cap log reads by @tickernelz in #270
- fix(terminal): trust allowed host origins on their own port by @tickernelz in #273
- feat(server): trim finished run logs to their tail on a schedule by @tickernelz in #274
- perf(ui): lazy-load route pages to shrink the entry bundle by @tickernelz in #271
- feat(onboarding): sign in through omp login and manage custom providers by @tickernelz in #276
- test(runner): keep credential lease candidates off ephemeral ports by @tickernelz in #277
- docs: describe the product as Wardmote across current docs and skills by @tickernelz in #269
- refactor: remove the dead Paperclip Cloud OAuth handoff and Cloud/EE/ID docs by @tickernelz in #272
- refactor: delete code comments that name the old product by @tickernelz in #278
- feat(openwa): pin OpenWA 0.30.0 by @tickernelz in #279
- refactor: name log prefixes and run-log markers wardmote by @tickernelz in #280
- test: rename legacy name in test-only fixtures by @tickernelz in #281
- refactor: rename deferred wake context key to _wardmoteWakeContext by @tickernelz in #282
- refactor: rename stored session config keys to __wardmote* by @tickernelz in #283
- fix(llm-wiki): align managed skill keys and rename distillation tables by @tickernelz in #284
- fix(home): map stored ~/.paperclip-pro paths after migrate-home by @tickernelz in #285
- feat(openwa): tree authority, trust markers and owner origin by @tickernelz in #286
- test(e2e): wait for the Chat entry redirect before leaving the chat by @tickernelz in #287
Full Changelog: v2026.1109.0...v2026.1111.0
v2026.1109.0
What's Changed
- fix(local-browser): ship the extension as Wardmote (name, palette, icon, id) 1.4.0 by @tickernelz in #195
- fix(db): read the renamed template env through its folded legacy key by @tickernelz in #194
- ci(release): drop the NPM_PROMOTE_TOKEN fallback from OIDC releases by @tickernelz in #196
- docs: rewrite README for Wardmote with visuals and verified numbers by @tickernelz in #187
- ci: wider lane shards, runner Rust cache and CI time budgets by @tickernelz in #181
- fix(ui): keep Tailwind preflight below vendor stylesheets by @tickernelz in #178
- ci: split the Runner lane, warm upgrade-path caches, run five short gates in two jobs by @tickernelz in #198
- refactor(server): drop Paperclip Cloud managed-instance floors by @tickernelz in #188
- fix: replace leftover Paperclip product text with Wardmote by @tickernelz in #168
- ci: split the responsive-shell E2E spec by theme and refresh shard manifests by @tickernelz in #199
- test: drop seven duplicate test copies, give server polls a 10 s window by @tickernelz in #182
- ci: name the Runner job and E2E config step after Wardmote by @tickernelz in #193
- refactor(server): remove Cloud runtime identity, warm standby, and control plane hooks by @tickernelz in #197
- refactor(server): remove the Cloud tenant trusted-header actor by @tickernelz in #201
- feat(server)!: remove Cloud onboarding seed receiver and its table by @tickernelz in #202
- fix(cli): add user bin dirs to service process PATH by @tickernelz in #189
- ci(policy): tighten legacy-name limits after the npm rename by @tickernelz in #185
- test(e2e): define the responsive-shell tests in their spec files by @tickernelz in #200
- fix(ci): run server tests outside src/tests in a lane by @tickernelz in #204
- ci(e2e): split the Playwright lane into five shards by @tickernelz in #206
- refactor(server)!: remove the managed-cloud configuration mode by @tickernelz in #203
- refactor(ui)!: remove the Cloud sign-in, invite, and tenant-session branches by @tickernelz in #205
- ci: refresh the shard duration manifests from the first five-shard run by @tickernelz in #207
- refactor(runner)!: rename the runner packages off the legacy product name by @tickernelz in #208
- fix(runner): let test files read the repository test tree by @tickernelz in #209
- test(runtime): pick fixed-port base outside the ephemeral range by @tickernelz in #213
- refactor(names): drop the legacy product name from module and test files by @tickernelz in #212
- refactor(runner)!: move the vendored runtime behind a Wardmote path by @tickernelz in #211
- fix: retry now from wait banners; schedule fallback retries by retry model cooldown by @tickernelz in #214
- fix(recovery): do not hold a legacy run cancelled before dispatch by @tickernelz in #217
- ci(upgrade-path): cache the legacy release download and time each phase by @tickernelz in #210
- feat(skills)!: move bundled skill keys to the tickernelz/wardmote prefix by @tickernelz in #216
- refactor(connectors)!: remove the Paperclip Cloud connector broker by @tickernelz in #215
- feat(env)!: read only WARDMOTE_* environment names by @tickernelz in #218
- ci: restore cached node_modules and skip the upgrade-path cleanup by @tickernelz in #219
- feat(openwa): onboard a WhatsApp session from the Connect wizard by @tickernelz in #221
Full Changelog: v2026.1108.2...v2026.1109.0
v2026.1108.2
What's Changed
- ci(policy): gate new legacy product names with check:legacy-name by @tickernelz in #183
- ci: four vitest workers and a Postgres template for server test shards by @tickernelz in #180
- ci(release): publish tag releases over npm OIDC trusted publishing by @tickernelz in #186
- fix(ci): repair legacy-name gate after #180 landed on main by @tickernelz in #190
Full Changelog: v2026.1108.1...v2026.1108.2
v2026.1108.1
What's Changed
- chore(repo): point repository URLs at tickernelz/wardmote by @tickernelz in #166
- fix(ui): mark the active sidebar item with an accent bar by @tickernelz in #170
- fix(ui): PWA status bar style and update toast on current build by @tickernelz in #167
- fix(ui): lift inactive tab contrast and 24px targets below 1024 by @tickernelz in #169
- fix(decisions): fill Decided/Expired history and count open queue items by @tickernelz in #179
- fix(ui): hide the xterm helper textarea again under the vendor layer by @tickernelz in #176
- feat(ui): replace paperclip loading and brand marks with Moot by @tickernelz in #171
- fix(chat): re-run a conversation drain requested while one is finishing by @tickernelz in #173
- chore(release): publish packages as @tickernelz/wardmote* by @tickernelz in #172
Full Changelog: v2026.1108.0...v2026.1108.1
v2026.1108.0
Upgrading from 2026.1105.1 or older
This release publishes 20 packages instead of 31 (the retired adapters are gone). An older installed CLI checks the old 31-package list and stops with "Release 2026.1108.0 is incomplete ... 11 of 31 packages are not published". Run the new CLI once:
npx @tickernelz/paperclip-pro@2026.1108.0 install --version 2026.1108.0 --yes
paperclip-pro service restart --force --expected-version 2026.1108.0The paperclip-pro command, the service definition and the ~/.paperclip-pro home stay as they are; the new wardmote command is added next to them. Later upgrades work with the normal install command again.
What's Changed
- feat: Features and Advanced replace Experimental (Wardmote 3) by @tickernelz in #153
- feat(ui): adopt Ledger v2 tokens, cascade layers and button variants by @tickernelz in #152
- feat(ui): gate rendered contrast in CI and ship Moot mark and Plex Mono by @tickernelz in #154
- feat(ui): ship Wardmote PWA with safe offline reading by @tickernelz in #156
- feat(ui): responsive shell from 360 to 1920 px (Wardmote 4, I-6) by @tickernelz in #157
- refactor: make OMP the only agent adapter (Wardmote 2) by @tickernelz in #155
- refactor: remove the AI connection router subsystem by @tickernelz in #159
- feat(onboarding): three-step OMP onboarding with a version gate (Wardmote 7) by @tickernelz in #160
- feat: OMP config as six named choices with agent defaults and per-agent setup (ZHA-5110) by @tickernelz in #162
- test(runner-e2e): set up first-task fixtures through the onboarding API by @tickernelz in #163
- feat: rename the product to Wardmote with one-release aliases by @tickernelz in #164
- ci: keep verify green on main when the PR-only upgrade lane skips by @tickernelz in #165
Full Changelog: v2026.1105.1...v2026.1108.0
v2026.1105.1
What's Changed
- fix(local-browser): surface floating dialogs, shadow DOM and frames in snapshots by @tickernelz in #148
- feat(local-browser): mark the agent's tab in the page and drop the in-app float window by @tickernelz in #149
Full Changelog: v2026.1105.0...v2026.1105.1
v2026.1105.0
Paperclip v2026.1105.0
OpenWA (WhatsApp) connector changes. Commit 231dcd5, PR #147.
Features
-
Manage the OpenWA gateway from the channel settings. With the channel's OpenWA admin key connected, a board user with connection-management access can now, without the OpenWA dashboard:
- list, create, start, stop, restart, log out and delete WhatsApp sessions, and edit their settings;
- connect a session by QR code (reloaded every 3 s until it is ready) or by pairing code;
- create, revoke and delete OpenWA API keys (a new key is shown once);
- add, test, pause and delete per-session webhooks and retry failed deliveries;
- add, enable, disable and remove integration instances and regenerate their secret (shown once).
Every change is recorded as a
config_changedaudit entry with redacted before and after snapshots. Stopping, logging out or deleting the agent's own session needs an explicit acknowledgement. Agent tools are unchanged: they still cannot issue keys, QR codes or pairing codes. Still in the OpenWA dashboard: renaming a session (not offered by OpenWA 0.27.1), proxy settings, plugins, templates, automation and gateway-wide settings.
Changes
- WhatsApp message text is no longer altered. Agent sends, run-output replies, approval messages and chat reads now carry links (including query strings and fragments), tokens and other text exactly as written. Previously links lost
?code=and similar, some became "[link removed]", and credential-shaped text became "[REDACTED]". Markdown conversion and long-message splitting stay. Keeping secrets out of WhatsApp is now the agent's instruction, not a filter. Credential masking remains on gateway administration results and in the audit.
Fixes
- OpenWA path parameters and session ids may no longer be empty,
.or.., so an allowed gateway call cannot reach a parent path.
Upgrade Guide
- No migrations, no configuration changes. New board route:
POST /api/chat-endpoints/:endpointId/openwa/gateway-admin.
v2026.1104.2
Full Changelog: v2026.1104.1...v2026.1104.2