Repository navigation
Releases: MikeHeid/overture
Release list
v1.39.0 — who may decide
Say who may decide what in a shared console.
- Roles per Access login:
owner(everything),memberof named items (answers, locks and plain messages on those items and everything under them),viewer(reads only). Kept inSTATE/roles.jsonon the console's machine, never committed. - No roles set, nothing changes: every login is the owner. Once one is set, an unlisted login (or a service token) only reads.
- Set them yourself:
agent.py --state STATE access bob@example.com member auth billing. It refuses to leave the console with no owner, and refuses inside a Claude Code session. - Fails closed: an unreadable roles file refuses every write. Changes take effect without a restart.
- Members and viewers see their role under the status bar; the synced drafts go to owners only.
See CHANGELOG.md "Who may decide (1.39.0)".
Zip sha256: 66c6109b595b9838ac0d33e7ffd4becb7fca19ae15c753816a355a1d32ac1aad
v1.38.1 — locked by, on the card
A locked question now says who locked it.
- "Locked by alice@example.com" on the card. In the owner console, the receipt under a locked answer names the Access login that locked it. Locks with no recorded login (agent writes, older locks, service tokens) show no line.
- Owner door only. The agent socket's view never carries the map, the same as drafts.
- The browser suite was re-run after 1.38.0's Feed change and is green.
See CHANGELOG.md "Locked by, on the card (1.38.1)".
Zip sha256: 62d673257dfaba033bef18c5ad04c14d55c3fdff75b3a1723463aa31f77deae5
v1.38.0 — Who decided
Each owner decision now records who made it.
- The login behind each decision. The console keeps the email from the Access token it already verifies, for each answer, lock, message and withdraw/keep/confirm. It lives beside the store (
operators.jsonl, 0600); the store itself is unchanged, so an older kit still starts on it. Agent writes, scheduled triggers and service tokens keep none. - The Feed shows it: "by alice@example.com". Agents never see emails.
- Nothing personal in your repository. Committed ruling files carry only a short name you set:
agent.py --state STATE operator-name alice@example.com alice.
The next export then addslocked_by_nameto that login's locks. With no name set, exports are unchanged.
See CHANGELOG.md "Who decided (1.38.0)".
Zip sha256: c0a2422aa30e9759c933b9aec93b34ce58f1b6b3768fec0e5fa08969b8e29e8e
v1.37.0 — Strict, and no token beside the adapter
The CI ruling check gets a strict mode and keeps the token away from your adapter.
-
--strict(strict: true): a ruling nobody could check (an item status with no adapter), or a run that found no ruling files, fails instead of passing.trueorfalsein any case; anything else stops the check, so a typo cannot switch it off. -
The token is not handed to the adapter. The Action is now three steps:
- the check, with no token and a clean environment;
- the comment, which holds the token and is skipped whenever an adapter is set;
- a finish step that exits with the check's result.
With an adapter, the check refuses to run when
actions/checkoutleft its token in.git/config, and an exit 0 without a report counts as an error. Give an adapter run its own job with no secrets. The clean environment is hygiene, not isolation. -
Verified on real pull requests: v1.36.0 and this version both failed a pull request that broke a ruling, with the comment and diff. The fix pushed afterwards turned the same comment green.
See CHANGELOG.md "Strict, and no token beside the adapter (1.37.0)".
Zip sha256: 2b1ae4efdaa0f47439cd38ffe83d1f0808946c1cdfbc06d5e43d722bed11de80
v1.36.0 — Rulings that block a merge
A broken ruling can now fail a pull request, with no console server.
plugin/kit/rulecheck.pychecks the committed ruling files (fold.py export,.overture/lockedby default) against the checkout. It needs no store, server or network. It exits 0 when every ruling holds, 1 when one is broken and 2 when it could not run.--base REFreads the rulings, and.overture.json, as committed at the pull request's base, so a pull request cannot pass by editing or deleting a ruling file. A re-lock or settle inside the pull request is listed as re-ruled for the reviewer.- GitHub Action:
It writes a job summary, and when a ruling breaks or a reviewer needs to look, it keeps one comment on the pull request up to date. Text from ruling files cannot render as markup, HTML, links or @mentions in that comment.
- uses: actions/checkout@v4 with: {fetch-depth: 0} - uses: MikeHeid/overture@v1.36.0
See CHANGELOG.md "Rulings that block a merge (1.36.0)" and the README section "Block a merge that breaks a ruling".
Zip sha256: 584601f780837b9f04190cf2ec8608d90338fce4b68aef8427d67fd32ad358f3
v1.35.0 — any agent can ask
An MCP server: Cursor, Codex, Copilot and any other MCP client can now use Overture, not just Claude Code.
plugin/kit/mcp_server.py is standard library only and runs over stdio. It offers the agent door as nine tools:
| Tool | What it does |
|---|---|
todo |
What is waiting on the agent |
view |
The console's current view |
answers |
Every question in a scope and the answer it got |
check |
Why each stale ruling is stale |
lesson_match |
Past withdrawn rulings that look like a draft question |
health |
Whether the console server is up |
ask |
Post a question for the owner |
reply |
Post a message on an item's thread |
working |
Show the owner which items the agent is on |
Rulings, stale checks and lessons work the same as for Claude Code agents, because every tool runs agent.py underneath with the same checks.
Setup is in the README section "Use it from any agent (MCP, 1.35)": register the project, then add one entry to the client's MCP config.
Both the 2025 handshake and the stateless 2026-07-28 MCP revision are supported. Independently reviewed; 16 new tests.
zip sha256 b5f337ae4bd5575d20e2ff3fe6b72341f0910ef981405d4aa5a0166cb3596d4e
v1.34.7 — wizards that stay put
Launch Idea and Branch Out panes survive a repaint and a close mid-request. See CHANGELOG.md.
v1.34.6 — spawned tickets in view
Launch Idea opens the Tickets fold it spawned into. See CHANGELOG.md.
v1.34.5 — folds that stay open
No new features. These are fixes from a code and security review of 1.34.1–1.34.4.
- Every fold the owner opens stays open across a repaint. This covers the tickets list, its Closed group, the new-ticket form, answers-sheet rows, the roar transcript, the answered footer and the Snoozed section. It joins the 📎 chip fixed in 1.34.4.
agent.py lesson-matchsplits a reason on all three line endings, liketo_markdown(). A hand-edited reason can no longer print a Markdown heading in agent-read output.- Tests:
- New browser test for the folds.
- The chip test now proves a repaint happened.
- First test for
lesson-match.
- Dev setup: the README has a Playwright install line, the test usage lines name the repo root, and
.venv/is ignored.
zip sha256 aee579a4705393a77770c72919262b56150e66a9424146adb397a7f6b7c3e15e
v1.34.4 — lesson chip in a browser
No new features. Closes the last two open items from the 1.34.1 handoff, checked in Chromium against the real owner server.
- An opened 📎 related-rulings chip stays open across a repaint. Before, any Refresh or live update closed a past ruling the owner had opened to read.
- New browser test for the chip.
- Checked, no change:
- Owner-page CSP: no violations, and the live poll works.
- 1.34.3 review's nested-key
RecursionErrornote: it does not reproduce.
zip sha256 cbfefe8dae3e7bc1b55a18e819eeff6abe4d113db7f7cb368094e18661e7eaf0