Skip to content

Releases: MikeHeid/overture

v1.39.0 — who may decide

Choose a tag to compare

@MikeHeid MikeHeid released this 14 Oct 11:11
7e7dbb5

Say who may decide what in a shared console.

  • Roles per Access login: owner (everything), member of named items (answers, locks and plain messages on those items and everything under them), viewer (reads only). Kept in STATE/roles.json on 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

Choose a tag to compare

@MikeHeid MikeHeid released this 14 Oct 09:02
a5708bb

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

Choose a tag to compare

@MikeHeid MikeHeid released this 14 Oct 07:55
a095d68

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 adds locked_by_name to 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

Choose a tag to compare

@MikeHeid MikeHeid released this 14 Oct 07:33
4a68867

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. true or false in 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/checkout left 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

Choose a tag to compare

@MikeHeid MikeHeid released this 14 Oct 02:59
acddc57

A broken ruling can now fail a pull request, with no console server.

  • plugin/kit/rulecheck.py checks the committed ruling files (fold.py export, .overture/locked by 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 REF reads 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:
    - uses: actions/checkout@v4
      with: {fetch-depth: 0}
    - uses: MikeHeid/overture@v1.36.0
    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.

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

Choose a tag to compare

@MikeHeid MikeHeid released this 14 Oct 01:09
d3096e5

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

Choose a tag to compare

@MikeHeid MikeHeid released this 13 Oct 23:21
8925dde

Launch Idea and Branch Out panes survive a repaint and a close mid-request. See CHANGELOG.md.

v1.34.6 — spawned tickets in view

Choose a tag to compare

@MikeHeid MikeHeid released this 13 Oct 21:33
301a0b7

Launch Idea opens the Tickets fold it spawned into. See CHANGELOG.md.

v1.34.5 — folds that stay open

Choose a tag to compare

@MikeHeid MikeHeid released this 13 Oct 19:44
b9b1234

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-match splits a reason on all three line endings, like to_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

Choose a tag to compare

@MikeHeid MikeHeid released this 13 Oct 19:01
f7f4509

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 RecursionError note: it does not reproduce.

zip sha256 cbfefe8dae3e7bc1b55a18e819eeff6abe4d113db7f7cb368094e18661e7eaf0