Changelog
What changed in Standcast. Versions match the GitHub releases. The API section follows the versioning policy.
Product
Unreleased
- The documentation site publishes
robots.txtand asitemap.xml, and the landing page serves its own fonts.
0.3.0 — 2026-11-01
- Standwise is now Standcast: new name, CLI binary
standcast, config filestandcast.yml,STANDCAST_*environment variables,Standcast-*webhook headers,sc_/sck_token prefixes and new URLs (api-standcast.usefachada.dev,docs-standcast.usefachada.dev). Existing sessions and API keys stop working: sign in again and create new keys. - Landing page at standcast.usefachada.dev, in English and Portuguese, with a form to join the public beta. After sending it you land on the install guide.
- Documentation for AI agents:
llms.txt,llms-full.txtand a Markdown copy of every page, in English and Portuguese. The api serves its ownllms.txtwith links to the OpenAPI document and the API guides. - The privacy page explains what the beta form stores and for how long.
- CODEOWNERS files are parsed in linear time.
0.2.1 — 2026-10-31
- Release tooling only: versions match the GitHub releases everywhere. No product changes.
0.2.0 — 2026-10-31
First public beta.
Hardening:
- The setup page shows a notice when a GitHub team in
standwise.ymlcannot be found or is too large (only the first 5,000 members are used). - Sign out on the setup page ends the web session.
- Pull request links are matched without regard to letter case, so a blocker is not routed twice for the same pull request.
- Reviews, timeline events and check runs are read page by page from GitHub, so large pull requests are no longer cut short.
- The health check is bounded and does not pile up queries when the database is slow.
- The installer works with BusyBox shells.
- A stale Slack identity is removed automatically when Slack answers
user_not_foundoruser_disabled. The person signs in again to relink.
- The setup page shows a notice when a GitHub team in
Documentation site in English and Portuguese, with the product overview, guides for admins and members, the
standwise.ymlreference and the API guides.Claude Code plugin with the
/dailyskill and the bundled MCP server.standwise mcp: local MCP server with draft and confirmed submit tools, plus read tools for managers and admins.standwiseCLI:login,logout,whoami,draft,submitandsuggestion.Team digest in Slack at
digest_at, with late dailies in the thread.Setup page: configuration state, Slack connection, failed deliveries, API keys and webhooks.
Reminders by direct message at
remind_at, once per person per day.remind_atmust be beforedigest_at.Blocker routing by direct message: reviewers, then CODEOWNERS, then managers.
Suggested blockers for pull requests without review and failing CI, visible only to the person, with
signals.direct_messageto also get them by direct message.Standwise configcheck run on changes tostandwise.yml.Retention: webhook delivery logs after 30 days, resolved suggestions after 90 days, expired sessions removed.
English is the default language when none is set.
Linear integration: an admin connects one Linear workspace per installation on the setup page (OAuth app acting as itself, read-only scope
read, encrypted tokens refreshed automatically). Deploy requirement: the api and the worker now needLINEAR_CLIENT_IDandLINEAR_CLIENT_SECRET, and fail to start without them.tracker: { provider: linear, team: <KEY> }per team andmembers.<login>.linear(email); people are also linked by their GitHub email.tracker.provider: jirais accepted with a setup notice.Your own Linear cards (
card_started,card_done) in the draft, and card blockers routed to the assignees of the blocking cards, then the card's assignee, its creator or the managers.Suggested blocker
card_stalefor cards in progress forsignals.card_stale_days(default 5), visible only to the person.
API
Versions match the GitHub releases. During the public beta (0.x), incompatible changes are listed here before they ship; from 1.0 they are announced at least 90 days in advance. See the versioning guide.
Unreleased
0.3.0 — 2026-11-01
Breaking: the rename to Standcast
- Base URL:
https://api-standcast.usefachada.dev. - API keys start with
sck_and session tokens withsc_. Keys and sessions created before 0.3.0 stop working; create new keys on the setup page. - Webhook headers are
Standcast-Signature,Standcast-EventandStandcast-Delivery, withUser-Agent: Standcast-Webhooks/1. Update your signature verification to readStandcast-Signature. - The internal confirmation header is
X-Standcast-Confirmation, and the MCP tools are namedstandcast_*. - The configuration file is
standcast.yml, and the check run is named "Standcast config".
New
GET /llms.txt: a plain-text index for AI agents, linking the OpenAPI document, the interactive reference and the documentation'sllms.txt.POST /betareceives the landing page's beta form. It is not part of the public API and is not in the OpenAPI document.- Deploy requirement: the api accepts
LANDING_URL(https, no trailing slash, defaulthttps://standcast.usefachada.dev). The worker acceptsRESEND_API_KEY, and needsBETA_EMAIL_FROMandSUPPORT_EMAILwhen the key is set.
0.2.1 — 2026-10-31
- No API changes.
0.2.0 — 2026-10-31
First public beta.
Agents, CLI and configuration
- The interactive API reference moved from
/docs/apito/reference./docs/apianswers with a permanent redirect. The documentation site moved to its own domain (DOCS_URL);/docsand/docs/*on the api redirect there. Deploy requirement: the api acceptsDOCS_URL(https, no trailing slash, defaulthttps://docs.standwise.dev). - Linear integration. The draft
activitycan includecard_startedandcard_doneitems for your own Linear cards (repois the Linear team key,urlthe card link), andsuggestionscan havekind: "card_stale". Both are additive: clients must ignore kinds they do not know. Blockerrefaccepts a Linear card URL. standwise.yml:tracker: { provider: linear, team: <KEY> },members.<login>.linear(an email) andsignals.card_stale_days(default 5) now take effect.- Deploy requirement: the api and the worker need
LINEAR_CLIENT_IDandLINEAR_CLIENT_SECRETand fail to start without them. - Setup page: Connect Linear and Reconnect Linear for admins. A failed connection returns
linear_oauth_failed(HTTP 502). - Default language is now English when none is specified.
standwise mcp: local MCP server over stdio with the toolsstandwise_whoami,standwise_get_draftandstandwise_submit_daily(confirmed by the person through elicitation, orconfirmed: trueas a fallback), plus the manager toolsstandwise_list_teams,standwise_get_digest,standwise_list_dailiesandstandwise_list_blockers. See the MCP guide.- Suggested blockers:
standwise.ymlacceptssignals.direct_message(defaultfalse). Suggestions are visible only to the person, in their draft, and never in the organization API, the manager tools, the webhooks or the setup page. standwise suggestion confirm|ignore <id>and the MCP toolstandwise_decide_suggestion. Thesuggestionsfield of the draft is now a list of{ id, kind, ref, since }. A repeated decision is accepted; the opposite decision returnssuggestion_already_decided(HTTP 409).managersentries must be GitHub logins;@org/teamis rejected as a validation error.- Internal session routes
GET /v1/manage/teams,/v1/manage/digests,/v1/manage/dailiesand/v1/manage/blockersback the manager tools. They are readable by team managers and organization admins, limited to the last 90 days, and listed only in/openapi.internal.json. - Daily item text and link titles may no longer contain control characters (newlines and tabs included), bidirectional controls or line separators, and link titles are limited to 200 characters. Link URLs follow the same character rules and must use
httporhttps. Invalid dailies getinvalid_daily. GET /healthalso checks the database and returns503with{ "ok": false }when it does not answer.- Internal:
orgis required onGET /v1/draftandGET /v1/today; the documentation said it was optional. - Internal: the GitHub webhook receiver answers a signed body that is not JSON with
422 invalid_requestinstead of400, and rejects bodies over 1 MB with413 payload_too_large. - Internal:
GET /v1/todayreturns the standup date for an organization, andPOST /v1/dailiesaccepts an optionalX-Standwise-Confirmation: human|agentheader that is stored with the daily. Neither changes the public API.
Webhooks
- Outbound webhooks: an organization admin registers HTTPS endpoints on the setup page and picks the events
daily.submitted,blocker.openedanddigest.sent. Apingtest event can be sent from the setup page. - Every delivery is a signed
POSTwith the headersStandwise-Signature(t=<unix seconds>,v1=<hex HMAC-SHA256>),Standwise-Event,Standwise-DeliveryandUser-Agent: Standwise-Webhooks/1. Failed deliveries are retried up to 8 attempts; an endpoint with 20 failed deliveries in a row is disabled. - The OpenAPI document has a
webhookssection with the payload of each event. See the webhooks guide.
Organization API
- API keys (
swk_) created by an organization admin on the setup page, with the scopesteams:read,dailies:read,digests:readandblockers:read. - Read-only organization operations:
GET /v1/org/teams,GET /v1/org/dailies,GET /v1/org/dailies/{id},GET /v1/org/digestsandGET /v1/org/blockers, paginated by cursor. - New error codes
insufficient_scope(HTTP 403, withrequired_scope) andnot_found(HTTP 404).
Foundation
- OpenAPI 3.1 document at
/openapi.jsonand interactive reference at/reference. GET /health.- Rate limits with
RateLimit-*andRetry-Afterheaders; new error coderate_limited(HTTP 429).