SP00-T2 rulings — local nats-server check, login-probe verification, bootstrap docs
SP00-T48 ruling — null-safe DataVolume check for the golden-image cleanup
SP00 preflight — contract check, conflict scan, 14 rulings
Pre-grant rt.org.> / email.notify.> in N1 (master §6.11), move kamo-internal's NATS login to N3, fix the §7.13 unforwarded-prefix rule for SP10's gateway routes...
AI Members + AI Provider Registry program — master spec, 15 sub-project specs and plans, runbook
Owner-approved 2026-09-23 (13 decisions, master spec §2). 15 sub-projects, 604 implementation tasks, cross-sub-project contracts in master §6 and the adopted de...
Choose how a published application asks its questions
"Publish this application" (Settings → Features → CRM → Vendors & Products) now carries three choices beside the chat, each a pair of cards that say what they m...
Signature previews show what the email will actually print
**************** drew the live preview and the Header/Signature thumbnails from data that raced itself. It also disagreed with the composer about what a signatu...
The session tab stops wearing Guacamole's icon
A session tab is Guacamole's document, so its own <link rel="icon" href="images/logo-64.png"> owns the tab, and a member opening their company's computer watche...
Arive in CRM markets, on the lead page, and on member profiles
- Markets: "Arive" joins the MLOS dropdown, and its Configure dialog holds the four Zapier hooks (write-only, masked), the Arive → Kamo addresses to paste i...
The session is navigated to, not framed — a framed one renders black
The launch screen put the session in a full-viewport iframe so the tab would keep the organization's icon and title instead of Guacamole's. It cannot work, and ...
An iPhone photo (HEIC) attaches to a bug report as a JPEG
A HEIC dropped on a bug report was refused with "must be a PNG, JPEG, WebP or GIF image" — the camera-roll format of every iPhone, AirDropped to a Mac as it is....
The password dialog passes the launch copy — main has not built since bf1e3312
bf1e3312 made `openHostedComputer`'s launch copy a required argument, and c224e20f, landing beside it, added a second caller in HostedComputerPasswordHost that ...
Start a coder session in the cloud, and show it on the window
which lists the git checkouts on the dev machine (most recently worked in member's model and effort. The machine builds the command, with CCR_FORCE_BUNDLE=1 so ...
Attachments sit above the body, as the files themselves
An email whose only content was a PDF had no way to open or download the file: the paperclip showed on the list row, and the reading pane showed nothing. EmailS...
A designed launch screen, in the organization's own brand
Opening a computer showed one line of plain text on a white page, written straight into the tab with `document.body.textContent`. For up to ninety seconds — a r...
Browser WebSockets authenticate with a one-time key, never the session token
The 15 places a hook opens a STOMP/SockJS connection to MediaService (media.<domain>/ws) or EmailService (via the /email-ws rewrite) put the raw 128-char *** se...
A tab's session is a sealed handle — the id never reaches page script
/api/validate is where a tab first learns its session, and it returned the 128-hex *** id for the page to keep in sessionStorage — readable by any script runnin...
The session id stops coming back to page script — groundwork for sealed handles
*** was set readable (httpOnly:false) and several responses handed the raw session id to the browser. Page script cannot use a cookie's HttpOnly flag if an endp...
Add a per-org primary application to Vendors & Products
Any product with a published application can be set as the org's primary (single-active, mirroring the existing MLOS-default toggle). Publishing an org's first ...
Select-all/deselect-all for the states lead filter, default to all
The states dimension of the campaign audience panel's and drip trigger's lead filter showed nothing checked by default, even though an unset list already means ...
DKIM and DMARC steps, so email we send for an org is fully authenticated
Two new steps after the existing SPF one, written for a non-technical owner the same way SpfCard already is — plain language, a "why this matters" box, and neve...
Send the lead-filter query params the backend actually parses
**************** reads marketIds/vendorIds/ vendorProductIds/states as one comma-separated param each (splitList()), but campaignAudienceApi's appendLeadFilter(...
Wait long enough for a computer to finish waking
WAKE_TIMEOUT_MS was 180_000 and sat exactly on top of the VM's readiness probe, whose initialDelaySeconds was 180 and which KubeVirt renders as 190. A computer ...
Rename apps DNS alias to apply on the DNS setup studio
The apps.<domain> host serves the loan-application and patient-portal pages, not app downloads, so relabel the /setup/dns card and reserve "apply" instead of "a...
**************** filters on campaign leads and drip triggers
The campaign editor's "All leads" audience source had no way to narrow who it reached beyond visibility scope. Adds a filter panel (Market -> Vendor -> Vendor P...
The nav opens a computer, it does not ask for a password
Being signed in to Kamo is the authentication that matters; asking again at the door of your own machine is a password prompt for its own sake. ComputeService m...
Opening a computer with no login yet asks for the password
Clicking a computer opened a browser tab that closed again, and said nothing. openHostedComputer opens its tab synchronously inside the click, because a popup ...
The computers record on the DNS studio
One more card on /setup/dns, so an org configuring its domain is told about the host its Hosted Computers open on. Without it an org could follow the page to th...
A step the organization is not asked is not shown or counted
An organization whose security model fixes every Compliance answer (no product a member may switch, one age range for each member type) was still shown a ninth ...
Fictional people in the correspondent-name tests
They used a real lead's name and address from the report.
Fictional people in the correspondent-name tests
They used a real lead's name and address from the report.
The message list names a lead or contact, not their address
A row was headed by the sender's display name, or the part of the address before the @ when there was none, so a lead who wrote in read as "jlrivera1984" above ...
The message list names a lead or contact, not their address
A row was headed by the sender's display name, or the part of the address before the @ when there was none, so a lead who wrote in read as "rodarisdolgovanton" ...
The last step no longer hangs on "Loading..." after it is saved
Saving or skipping Compliance, the ninth and last Getting Started step, left it on "Loading..." with "Save & continue" greyed out, under the banner saying the o...
The official title and membership status are read-only on your own Position card
They join the department and job title under positionRights: a member sees all four on their own Position card, but only a MANAGE_MEMBER_SECURITY holder (or an ...
Kamo-internal presents the NATS login
NATS mapped every credential-less connection to the KAMO account (no_auth_user), and it listens on the host network of k1m1 — so any pod, the desktop VM or a ma...
The imaging proxy passes MediaService's download and sandbox headers through
MediaService now serves any attachment outside its safe raster/audio/video list (SVG, HTML, PDF…) with Content-Disposition: attachment, X-Content-Type-Options: ...
Drop the process-wide TLS verification bypass
NODE_TLS_REJECT_UNAUTHORIZED: "0" in k8s/configmap.yaml made every server-side outbound TLS call in this process — to any host, for any purpose, for as long as ...
Stop logging session tokens, cookies and message content
A grep for the shape of two known offenders (chat message text and chat-list previews going to console.log) turned up a much wider pattern across the session/au...
Reject unauthenticated uploads before the body is spooled
The chat attachment upload, the support bug-report screenshot upload, the meet background upload and the two ConversionService image-resize proxies all called b...
The learner media route's HEAD answers instead of hanging
useAttachmentSource probes with a HEAD after a media element fails, to tell a file that is gone from a session that lapsed. The route awaited response.body.canc...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
