<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Connect by JBRH — changelog</title>
  <link href="https://connectbyjbrh.com/changelog/"/>
  <link rel="self" href="https://connectbyjbrh.com/changelog/feed.xml"/>
  <id>https://connectbyjbrh.com/changelog/</id>
  <updated>2026-09-10T00:00:00Z</updated>
  <author><name>JBRH Digital Solutions</name></author>
  <entry>
    <title>A public documentation corpus, and three machine interfaces</title>
    <id>tag:connectbyjbrh.com,2026-09-10:changelog-0</id>
    <link href="https://connectbyjbrh.com/changelog/"/>
    <updated>2026-09-10T00:00:00Z</updated>
    <summary>Connect's documentation is now generated from one verified registry into human pages, Markdown twins, machine manifests, sitemaps and an llms.txt map — and three read-only machine doors onto the same corpus: an MCP endpoint, an A2A agent card, and a public HTTP API described by an allowlisted OpenAPI document.</summary>
    <content type="text">Connect's documentation is now generated from one verified registry into human pages, Markdown twins, machine manifests, sitemaps and an llms.txt map — and three read-only machine doors onto the same corpus: an MCP endpoint, an A2A agent card, and a public HTTP API described by an allowlisted OpenAPI document.

- Every documented capability now carries a status word — available, operator-only, foundation, not yet, or reference — and the date it was last checked against the running system.
- The machine-readable status of every capability is published at /docs-data/status.json, so an AI client can check a claim rather than repeat one.
- An MCP endpoint at /mcp speaks protocol revision 2026-07-28 over Streamable HTTP, with ten read-only documentation tools and no reach into any workspace.
- An A2A agent card at /.well-known/agent-card.json advertises five public documentation skills.
- robots.txt now addresses each search and answer crawler explicitly rather than relying on a wildcard, and names the model-training crawlers separately without settling that policy.

Still not possible: The machine interfaces are documentation-only. Workspace data still requires a signed-in session, and the application's own API description remains closed.</content>
  </entry>
  <entry>
    <title>The Assistant is a workspace, files are part of it, and every record is a sheet</title>
    <id>tag:connectbyjbrh.com,2026-09-10:changelog-1</id>
    <link href="https://connectbyjbrh.com/changelog/"/>
    <updated>2026-09-10T00:00:00Z</updated>
    <summary>The Assistant panel became a workspace with browser-style tabs, each keeping its own conversation, follow-up chain, record, draft, files and scroll. Files attach by button, drop or paste. A new Data screen shows every record type as an editable sheet.</summary>
    <content type="text">The Assistant panel became a workspace with browser-style tabs, each keeping its own conversation, follow-up chain, record, draft, files and scroll. Files attach by button, drop or paste. A new Data screen shows every record type as an editable sheet.

- Tabs, a single live status line, and one scroller that Chat, Needs You, Standing, Memory and Files all draw into.
- Files: PNG, JPEG and WebP images; PDF; DOCX; XLSX; CSV and TSV; PPTX; TXT, Markdown and JSON. Connect can create and modify them as new versions, with provenance and audit.
- A Data screen over thirteen record sheets — virtualised, with sort, filter, group, freeze, saved views, inline edit, bulk actions, import and CSV export.
- Needs You lost its hero panel for a compact bar with filters and ranking.

Still not possible: Every change made in the grid goes through the service that owns the record, so a field the service will not accept cannot be written from the grid either. The Assistant's rights stay narrower than a person's: no pricing, and it cannot clear a do-not-contact entry.</content>
  </entry>
  <entry>
    <title>Keyboard focus is visible again, in both themes</title>
    <id>tag:connectbyjbrh.com,2026-09-09:changelog-2</id>
    <link href="https://connectbyjbrh.com/changelog/"/>
    <updated>2026-09-09T00:00:00Z</updated>
    <summary>Every keyboard focus ring in the product was invisible. Two stylesheets defined the same token differently and the one inside a theme block won, which made the shadow invalid at computed-value time. Nothing in the source looked wrong; a real Tab press, read with getComputedStyle, showed no shadow at all.</summary>
    <content type="text">Every keyboard focus ring in the product was invisible. Two stylesheets defined the same token differently and the one inside a theme block won, which made the shadow invalid at computed-value time. Nothing in the source looked wrong; a real Tab press, read with getComputedStyle, showed no shadow at all.

- Focus rings render in both themes, tuned per background rather than to one brand colour.
- A forced-colors outline is restored where the plain rule removes one.
- Two measured contrast failures were corrected, and the brand colour that had drifted into two shades is one value again.</content>
  </entry>
  <entry>
    <title>A call that cannot be answered says so, and nothing is left for ever</title>
    <id>tag:connectbyjbrh.com,2026-09-07:changelog-3</id>
    <link href="https://connectbyjbrh.com/changelog/"/>
    <updated>2026-09-07T00:00:00Z</updated>
    <summary>A switched-off or closed line used to drop the call silently, with no record. Five inbound calls were answered in silence and recorded as the caller hanging up. Both are fixed, and a call now says which kind of nothing happened.</summary>
    <content type="text">A switched-off or closed line used to drop the call silently, with no record. Five inbound calls were answered in silence and recorded as the caller hanging up. Both are fixed, and a call now says which kind of nothing happened.

- A refused line plays a spoken message in the business's own name rather than connecting and dropping.
- A greeting that cannot be spoken ends the call and is recorded as an engine error rather than as caller abandonment.
- Calls that never became a conversation have their own outcomes, and no lead is created from one.
- Every provider's stuck calls are swept and charged, not only the realtime engine's.
- Who ended the call is attributed to the caller, the model, the owner, the engine, the carrier or the agent — previously everything that was not the caller read as the agent.

Still not possible: Call recording and a completed transfer to a person remain unavailable on the live carrier.</content>
  </entry>
  <entry>
    <title>A promised call-back is booked in the caller's own words, or not at all</title>
    <id>tag:connectbyjbrh.com,2026-09-06:changelog-4</id>
    <link href="https://connectbyjbrh.com/changelog/"/>
    <updated>2026-09-06T00:00:00Z</updated>
    <summary>A voice agent that promises to ring back and books nothing is worse than one that refuses. A follow-up is now refused unless its time shares a time word with what the caller actually said, or the caller agreed to a time the voice proposed aloud.</summary>
    <content type="text">A voice agent that promises to ring back and books nothing is worse than one that refuses. A follow-up is now refused unless its time shares a time word with what the caller actually said, or the caller agreed to a time the voice proposed aloud.

- The booking tool answers 'NOT recorded' when the time does not match, so the model cannot claim a booking it did not make.
- A read-back is asked only when the caller neither named nor agreed a time.
- A promise with no commitment behind it is a named finding in the call review.
- Due phone follow-ups are drained and rung through the same gates as any outbound call; one more than twenty-four hours late is closed rather than rung.

Still not possible: Time words are understood in English, Telugu and Hindi.</content>
  </entry>
  <entry>
    <title>Realtime voice: Connect holds the call itself</title>
    <id>tag:connectbyjbrh.com,2026-09-05:changelog-5</id>
    <link href="https://connectbyjbrh.com/changelog/"/>
    <updated>2026-09-05T00:00:00Z</updated>
    <summary>A workspace can switch the phone channel to a realtime engine where a speech-to-speech model listens and speaks at once, instead of the turn-based path where a webhook hears a sentence and the carrier reads a reply out.</summary>
    <content type="text">A workspace can switch the phone channel to a realtime engine where a speech-to-speech model listens and speaks at once, instead of the turn-based path where a webhook hears a sentence and the carrier reads a reply out.

- Barge-in, automatic language, and one voice for every language.
- A Voice Lab for tuning, with the settings that reach the engine separated from the directions that only ask the model.
- Call quality review after every call, with each finding naming the setting that addresses it.
- Calls are metered on audio tokens, split by modality, and a call that reports no tokens is charged from its duration rather than at zero.

What you need to do: The realtime engine is opt-in per workspace and needs a trunk and a dispatch rule at the carrier. The setup is documented.

Still not possible: The floor on this path is the model's first token plus its end-of-turn detection — a 3.3 second median reply on the best measured call, not one to two seconds.</content>
  </entry>
</feed>
