Repository navigation
shot2code v0.4.0
·
20 commits
to main
since this release
[0.4.0] - 2026-09-20
Released as shot2code v0.4.0.
Checksums for the published Windows artifacts:
docs/releases/v0.4.0/SHA256SUMS.txt.
This release adds a separate GitHub Copilot SDK BYOK runtime, guarded MCP tools,
a multi-viewport Review workspace, a native Windows menu and a provider
reliability pass, without replacing any existing direct provider.
Added
- In-app GitHub sign-in. Sign in with GitHub runs the official Copilot
CLI's own browser flow (copilot login), falling back togh auth login.
shot2code implements no OAuth flow and registers no client id of its own, so
no token passes through the app; the CLI stores the credential and shot2code
re-runs its existing credential check afterwards. The command line is fixed,
the process is launched directly rather than through a shell, its output is
never shown or logged, and the flow is timed out, cancellable and killed on
exit. With neither CLI installed it reports that and links to GitHub's install
instructions. - Per-provider connection checks. Settings can test OpenAI, Anthropic,
Gemini, Replicate and the BYOK connection individually. Each makes one
minimal but real request — tiny, though the account may still be billed a
negligible amount — and reports ready, credentials, billing, quota,
permissions, model, network or configuration. Replicate uses its account
endpoint instead of running a prediction. - Copilot SDK BYOK. Configure one dedicated OpenAI-compatible, Azure OpenAI
or Anthropic connection with its own API key or bearer token, wire API,
endpoint and optional model-name override. It requires no Copilot
subscription; an OpenAI-compatible localhost endpoint may be credentialless. - BYOK model discovery. An OpenAI-compatible connection is asked what it
serves at/models, and the bounded result is offered in Settings. The route
is optional: when an endpoint does not implement it, the model is named by
hand instead. Azure OpenAI and Anthropic have no equivalent listing and always
use a manual model name. A listing that fails for a real reason is reported;
no model list is ever invented. - Separate BYOK model identities. Models appear under Copilot SDK
(BYOK) assdk-byok/<provider>/<base model>, or
sdk-byok/<provider>/custom/<model>for a model only your endpoint knows, so
a native model and its BYOK twin can run together as distinct variants. The
identity survives History and retries. - MCP servers. Configure up to eight stdio, HTTP or SSE servers for GitHub
Copilot subscription and SDK-BYOK variants. Activity is labelled
MCP · <server> · <tool>. - Responsive Review. Compare two to four real viewport widths at once
(1440px, 768px and 390px by default; custom 320–1920px), with runtime
horizontal-overflow measurement. - Local source audit. Deterministic semantic and accessibility findings can
be selected and inserted into Chat without auto-sending, or exported as a
source-safe JSON report. Results become stale when the version, option, code
or viewport set changes. - Native application menu. File, Edit, View, Window and Help use the same
command dispatcher as keyboard shortcuts and keep standard editor roles.
Changed
- Generation now carries a typed per-selection runtime identity. Native
OpenAI, Anthropic, Gemini and Copilot choices always remain native even when
BYOK is enabled. - A BYOK connection with its own base URL now defaults to Chat Completions,
the interface every standards-compatible endpoint implements; a vendor
connection with no base URL of its own still defaults to Responses. Either can
be selected explicitly. - Naming a model in Model / deployment now publishes exactly that one model
under its real name instead of a whole vendor family, with model names bounded
to 128 characters. - Generation failures now report the provider's actual complaint — with an
action such as "add credits" or "check the API key" — instead of a generic
"contact support" message. Each option keeps its own error, and a run where
every option failed reports the real cause. - Settings reports whether the screenshot-preview browser is available and
offers Check again, and the backend now names the correct recovery
command (cd backend && uv run playwright install chromium-headless-shell). - The Copilot SDK dependency is locked consistently at 1.0.13.
- In-app Help and the public release-hub guides cover BYOK, MCP permissions,
Review and native menu behavior.
Fixed
- Settings now owns a bounded inner scroll area in both empty and active
projects, so the final provider/tool controls remain reachable instead of
extending below the fixed desktop shell. - Disabled or incomplete BYOK settings and disabled/untrusted incomplete MCP
drafts no longer abort unrelated direct-provider generations. - An OpenAI account with no remaining credit is now classified as a billing
problem with an actionable message, rather than surfacing as an unexplained
API error. - A custom endpoint model no longer receives a GPT or Claude reasoning-effort
setting it has no concept of; only the real model name goes on the wire. BYOK
variants of catalog models still pass the SDK's supported effort values, and
no thinkingis omitted because it is not an SDK effort value. - A client that closes the generation socket before sending its request no
longer logs an ASGI traceback.
Security
- BYOK never borrows a direct OpenAI or Anthropic key, and a BYOK base URL must
be HTTPS unless it points at loopback and may not embed credentials. - A provider check that names its own OpenAI base URL must supply its own key in
the same request. The key the backend was configured with is only ever used
with the backend's own endpoint, so it can never be sent to an address a
request chooses. Caller-supplied URLs are validated with the same endpoint
rules as a BYOK connection. - Starting or cancelling the in-app GitHub sign-in is accepted only from
shot2code's own local window (alocalhost/127.0.0.1/::1origin, or the
packaged app'snullorigin), so a web page cannot trigger a sign-in or kill
one. Reading sign-in status stays read-only and unguarded. - MCP servers require both Enabled and Trusted. They remain read-only
unless Allow write tools is enabled. - Stdio MCP commands use an explicit argument vector rather than a shell;
remote MCP requires HTTPS except on localhost. - Integration secrets are masked and excluded from validation responses,
activity logs, project history and exported Review reports. Provider errors
are redacted before they are shown or logged, including a credential quoted
back by the provider.
Accessibility
- Review frames use real labeled viewport widths and keyboard-operable controls.
- Findings expose severity, evidence and guidance; the UI states clearly that
the deterministic source audit is not WCAG certification. - Native menu actions share the renderer's guarded commands so editor-specific
shortcuts and focus behavior remain intact.