Skip to content

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 19:00
· 47 commits to main since this release
b01200e

Before you upgrade

  • Memory modules are now context modules. The table, the agent column, the CLI group and the API paths all use the new name. The agents migration moves your rows across, ids included. Saved memory keeps its name.
  • One meetings tool replaces meetings_search and meetings_series. An agent granted either old tool keeps the grant, but it does nothing; grant meetings instead.
  • GET /api/v1/meetings/{id} returns the whole meeting: its notes and every line. The bare row is now under meeting.
  • Deploy workflows written before this release need aegis deploy-cd-setup --force to pick up the env push and rolling deploys.

Highlights

The meeting bot behaves in a room.

By default it answers only the meeting's owner. It stops the moment you tell it to ("stop", "be quiet", "never mind"), even mid-sentence. Talk over it and it goes quiet where the room last heard it; say "go on" and it picks up from there. It wakes within a fraction of a second of a caption naming it, and it answers in a sentence unless you ask for more.

Illiana reads a meeting whole

Ask about a meeting and she reads its notes and every line said, or a whole series with its meetings. Search now matches any of your words, best match first, so a question asked in full finds the lines that answer it. The transcript tab copies the call as plain lines, and the CLI gains meetings search and meetings series.

Calls in your own app

A live call now runs as the signed-in user, about what they're looking at, so your app's chat for its own users can take calls. A call that runs into a spent budget is refused. Between the end of your turn and the first word back, the call bar shows that it's working, so it no longer looks like it didn't hear you.

Screenshot 2026-11-03 at 1 52 19 PM

Context per subject

A context module can hold its own text for each subject, such as what a project is and who it's for. Each turn renders the text for the subject the app hands it. All modules' text for a subject loads in one query.

Screenshot 2026-11-03 at 1 06 50 PM

Illiana reviews your project's pull requests

Generated projects get an Illiana job in CI. It runs patterns check --strict on the changed files against the base branch's own findings and leaves one comment per PR. It fails the job only if you set ILLIANA_BLOCKS=true.

Screenshot 2026-11-03 at 1 44 34 PM

Deploys from Actions

The deploy workflow runs on a plain GitHub runner. aegis deploy-cd-env pushes your .env.deploy as a secret, so a deploy from Actions ships the production env. Deploys roll by default.

Leaner workers

The webserver keeps the twin in Redis, and workers read it from there instead of building their own. The idle meetings worker drops from 248 to 160 MB.

For developers

A new gated rule, parts.own-facade, flags a service reaching past its own facade from its router, tools, jobs, CLI or pages. Every service follows it. S3_PUBLIC_ENDPOINT_URL signs presigned links for an address a browser can reach, so "open the object" works in the dev stack.

Fixed

  • A migration runs even when startup has already built its tables. Before, it failed on "index already exists", and every later make migrate failed the same way.
  • aegis add and aegis update bring back an import that a merged block needs, so the merged module imports.
  • A required JSON list or dict column can be added to a table that already has rows. make migrate-fix fills existing rows the same way, and a required boolean on Postgres works.
  • A pending change whose target has moved says why, and can still be rejected. If one approval fails, the rest still land.
  • A submit button can no longer be silently given a second type.
  • Postgres no longer logs a duplicate-key error for every scheduled job on start.
  • The map no longer flickers while you hover a node.

The changelog lists every change.