Skip to content

v0.97.0

Choose a tag to compare

@sboily sboily released this 11 Oct 05:43
· 1095 commits to main since this release

What's Changed

  • docs(changelog): promote 0.97.0
  • fix(identity): a verification request left unanswered ends at its expiry (RMK-660)
  • fix(llamacpp): only a PyInstaller bundle's loader path is set back for llama-server
  • fix(orchestration): Discussion's agents are typed to take an ACPChannel (RMK-670)
  • fix(orchestration): a room created again takes a strategy again (RMK-665)
  • fix(identity): a kit starts when its store cannot resume verifications (RMK-660)
  • fix(llamacpp): llama-server gets the host's loader path, not a frozen bundle's
  • fix(realtime): pipeline diarization fires ON_SPEAKER_CHANGE on a realtime channel
  • fix(realtime): a pipeline running at its own rate reaches the provider at the provider's rate
  • docs(examples): the smolBSD example checks for roomkit-sandbox 0.5.0
  • docs(examples): passt in the smolBSD example's prerequisites
  • docs(examples): the smolBSD sandbox example on the console runner backend
  • docs(acp): one opening of a room's session at a time, and a cancel that reaches an opening turn (RMK-673)
  • fix(acp): cancelling a room's turn reaches it while its session is being opened (RMK-673)
  • fix(acp): a room's session is opened by one caller at a time, a host call during a standalone turn included (RMK-673)
  • test(llms): llms-full.txt must be the build of docs/c7, the version line must name the latest release
  • docs(llms): refresh llms-full.txt with the ACP session setup (RMK-673)
  • fix(acp): a host value set while opening the room's session replaces a refused one; tidy session setup per review (RMK-673)
  • docs(llms): roomkit is the one source of llms.txt and llms-full.txt; make llms-sync copies them
  • feat(acp): each room's session opens with its MCP servers and session config, set again on every reopen, a refused value failing closed (RMK-673)
  • refactor(acp): extract how the channel reaches its agent from ACPChannel.init (RMK-673)
  • docs(c7): register_connection takes room_id; drop the removed CPaaS page from llms.txt
  • docs(examples): Claude Code in the discussion example goes through RoomKit's tool gate, in default mode (RMK-670)
  • fix(tasks): work_in_background starts a task for its own agent only (RMK-668)
  • docs(examples): long work as tasks in a discussion, Claude Code taking part, and the changelog (RMK-668, RMK-670, RMK-671)
  • feat(console): the discussion console shows an answer as it streams, starts and follows the room's tasks, and names who wrote a posted result (RMK-671)
  • fix(orchestration): a posted result is never lost or interleaved, an idle ACP agent's cut abandons its turn, its instructions mark cannot be forged (RMK-668, RMK-670)
  • feat(orchestration): an external agent over ACP takes a discussion's turns like an AI channel (RMK-670)
  • feat(tasks): long work starts as a task and frees the turn: work_in_background, setup_background, start_task (RMK-668)
  • feat(tasks): a delegation's brief apart from its task, the room's conversation for the worker, a result relayed or posted (RMK-668)
  • docs(changelog): identity verification is complete, the entry names its guide (RMK-660)
  • docs(examples): identity verification, a link to a PIN page and a code in the conversation (RMK-660)
  • fix(identity): a hook reads whose verification to ask for on the first message, and a verification that outlived an unanswered request still announces its end, saying what ended (RMK-660)
  • fix(identity): per security review, a verification is scoped to its room's organization and only what the pipeline held is released; your own method's failed check counts against the request (RMK-660)
  • feat(identity): a completed verification releases what its sender wrote while it was open, to the agents as their own turns, within the request's window (RMK-660)
  • fix(identity): per security review, holding only narrows what a message reached, and an unverified edit or deletion is refused (RMK-660)
  • fix(identity): per security review, a request that fails while the identity is verified ends that verification (fail closed), and the lifecycle tests leave a loaded runner room (RMK-660)
  • feat(identity): the inbound pipeline labels an identified sender's message, holds it from the agents while unverified unless a hook passes it, and consumes a verification code reply (RMK-660)
  • feat(identity): verification hooks, and a verification ends when it expires by a timer re-armed when the kit starts (RMK-660)
  • fix(identity): per security review, a revocation kills a pending identity's link too, and a secret is stored through scrypt, not a fast hash (RMK-660)
  • feat(identity): identity verification requests, completion and revocation, kept by the memory, SQLite and Postgres stores (RMK-660)
  • fix(vui): a barge-in cut takes the unheard frames out of Vui's codec too, with vui-tts 1.2.3 (RMK-669)
  • feat(examples): the dispatch example runs on OpenAI's Decisions API too (RMK-666, RMK-667)
  • feat(classifiers): OpenAIClassifier on OpenAI's Decisions API (RMK-667)
  • feat(orchestration): a dispatch policy also judges a message after an agent's question (RMK-666)
  • feat(orchestration): a discussion's dispatch policy picks who takes a person's unaddressed message (RMK-666)
  • chore(deps): bump the python-deps group across 1 directory with 5 updates (#49)
  • chore(types): context managers are annotated Generator, as ty 0.0.85 asks
  • fix(orchestration): two sources behind one person's name record no ask (RMK-665)
  • docs(changelog): the discussion's entries name their card (RMK-665)
  • fix(orchestration): a discussion's memory hand-off and queue follow the router's delivery set (RMK-665)
  • fix(orchestration): a strategy's uninstall releases the room only once all of it is gone, scoped to a tenant (RMK-665)
  • fix(orchestration): a discussion hands its agents' memory every message they may see (RMK-665)
  • feat(orchestration): install and uninstall a room's strategy while it lives (RMK-665)
  • feat(orchestration): a discussion served by several processes, one queue and one lease (RMK-665)
  • docs(c7): the discussion's settled behaviour: names, regeneration, uninstall, tenant scope (RMK-665)
  • fix(orchestration): a nameless sender keeps its channel label, and askers keep their kind (RMK-665)
  • fix(console): "you" is the console's channel and sender, never a name; authors carry the transcript's label (RMK-665)
  • feat(console): DiscussionConsole, a full-screen terminal on a room a discussion holds (RMK-665)
  • fix(orchestration): an ask records the person's exact label, and the notes quote people (RMK-665)
  • fix(orchestration): the discussion's defects three reviews found (RMK-665)
  • docs(orchestration): the Discussion strategy's example, reference and changelog (RMK-665)
  • feat(orchestration): a room a discussion holds refuses what would share its turns (RMK-665)
  • feat(orchestration): the Discussion strategy gives a room's turns one at a time (RMK-665)
  • fix(core): a discussion's turn mark must be one this process issued (RMK-665)
  • feat(core): the seams a discussion uses, inert outside it (RMK-665)
  • fix(orchestration): the discussion reads names past code and quotes in one pass, not with patterns that backtrack across lines (RMK-665)
  • feat(orchestration): the discussion's names, silence token, speak queue and models (RMK-665)
  • docs(readme): the MCP snippet uses MCPToolProvider's real API (RMK-662)
  • fix(mcp): a tools/list that pages without end stops, naming the server; tidy per review (RMK-662)
  • fix(mcp): a tool call never lists the server's tools again; discover=False connects without listing (RMK-662)
  • fix(mcp): read every page of a server's tools/list (RMK-662)
  • fix(whatsapp): WhatsApp Personal answers a group in the group, names a hidden-number sender by their phone, and its typing, read receipts and location sends work (RMK-653)
  • Begin 0.97.0.dev0 development

Full Changelog: v0.96.1...v0.97.0