5 min read

Weekly development log 2026‑W34: From the phone screen to the CLI on your own machine

One hundred and fifteen commits shipped nine releases this week, 1.26.0 through 1.32.1. Answer rendering was rebuilt for phone screens and the phone gained maps, location, and a camera, while OpenMake Code opened a path for running tools on the user's own machine and closed it out with an audit trail and a single bridge core. The desktop moved its centre of gravity: the Electron shell was frozen and a SwiftUI native companion took over. On the last day the direction turned once more, from trusting written configuration to trusting the model itself - capability and context length are measured at boot, reasoning effort became a user choice, answer verification arrived, and every LLM call was routed through a single LiteLLM path. In parallel, quietly leaking boundaries - skill injection, SSRF, API key scopes - were tightened and unused code and the GitHub integration were removed.

  • Weekly log
  • Vibe coding
  • Self-hosted AI
  • 2026-W34
W34 illustration connecting mobile answers, a local CLI, and a native desktop companion through one model gateway
W34 illustration connecting mobile answers, a local CLI, and a native desktop companion through one model gateway. Created on 2026-09-05 from the development log; this is not a product screenshot.

SHIPPED / EVIDENCE

This week in OpenMake

One hundred and fifteen commits shipped nine releases this week, 1.26.0 through 1.32.1. Answer rendering was rebuilt for phone screens and the phone gained maps, location, and a camera, while OpenMake Code opened a path for running tools on the user's own machine and closed it out with an audit trail and a single bridge core. The desktop moved its centre of gravity: the Electron shell was frozen and a SwiftUI native companion took over. On the last day the direction turned once more, from trusting written configuration to trusting the model itself - capability and context length are measured at boot, reasoning effort became a user choice, answer verification arrived, and every LLM call was routed through a single LiteLLM path. In parallel, quietly leaking boundaries - skill injection, SSRF, API key scopes - were tightened and unused code and the GitHub integration were removed.

Period
2026-08-17 – 2026-08-23
Git commits
115
Evidence
Git history

01

What changed

One hundred and fifteen commits shipped nine releases this week, 1.26.0 through 1.32.1. Answer rendering was rebuilt for phone screens and the phone gained maps, location, and a camera, while OpenMake Code opened a path for running tools on the user's own machine and closed it out with an audit trail and a single bridge core. The desktop moved its centre of gravity: the Electron shell was frozen and a SwiftUI native companion took over. On the last day the direction turned once more, from trusting written configuration to trusting the model itself - capability and context length are measured at boot, reasoning effort became a user choice, answer verification arrived, and every LLM call was routed through a single LiteLLM path. In parallel, quietly leaking boundaries - skill injection, SSRF, API key scopes - were tightened and unused code and the GitHub integration were removed.

  • OpenMake Code: a local CLI agent task that runs tools on the user's machine instead of the server sandbox. A bridge folder-selection protocol followed, letting the web pick the working folder without restarting the CLI, with the selected folder recorded in the readiness log. Late in the week, creating a local task became an audit record - closing the first axis - and the bridge device code was consolidated into a single packages/local-bridge-core, opening the second. A worktree cwd ENOENT on untracked subfolders was fixed, the file kind's FS calls went async behind a timeout guard so one blocking call could no longer kill every connected root, and the bridge harness joined CI.
  • The desktop shifted its axis. A first SwiftUI native companion arrived with a helper bridge, an approval dialog, notification deep links, and its own native update channel, and several roots can be connected at once, each with an independent bridge connection under a derived device id. The Electron shell was declared frozen one day and removed from the repository the next. desktop-native now owns local agent work, while the update path and old dmg that existing installs rely on stay in place and only new publishing stops.
  • Mobile answer rendering was reworked: tables are structured as phone-sized cards, format hints and collapsible sections were added for long answers, and truncated image responses, markdown block formatting, pipe-less tables, and exposed artifact placeholders were fixed.
  • The phone feature line ran from stage one to stage three. Kakao map blocks render as native map cards, moved to a server embed with a MapKit fallback, with the 404-ing embed relocated to /api/embed (1.26.0); GPS location context and the web logo as the app icon followed (1.30.0); then camera capture and voice input (1.31.0).
  • Input handling was reworked. PDF attachments now use a vision hybrid that injects the leading pages as images, bounded by a resolution ceiling, and an OpenAI-compatible client's system message is merged into the leading system prompt instead of being dropped. The chat composer folded its attachment buttons into a single + menu covering files and folder selection, and web search caps query length so a long prompt no longer returns a provider 414.
  • On the final day, the model started being trusted over its configuration. Capability interpretation moved to a single source of truth with a boot-time tool-call probe, so swapping a model can no longer quietly disarm tools. Context length is measured at boot rather than pinned to a fixed 262K threshold, and thinking is gated on the capability a model declares instead of a misread stream. Reasoning effort became a three-step control in the composer, normalised per model, with a pass-through hint so a LiteLLM gateway stops rejecting it. Answer verification arrived beside it: a judge model reads the reply once and surfaces what it would question. Structured answers degrade instead of failing with a 422 when json_schema is unsupported or a schema does not match, and external providers now receive the json_schema itself rather than a prompt describing it, which is what left fields missing. A repeat_penalty mapping bug that never sent the parameter was corrected to the vLLM name, and sampling-tuning wiring whose result nothing consumed was removed, settling classification as observation only.
  • Defaults and boundaries behind failed runs were corrected: agent-task max_turns moved from 10 to 32, the per-user MCP tool exposure cap moved from 12 to 20 with budget as the real guard, and skills declaring triggers are now injected only on relevant turns. A least-privilege host:port form was added to the SSRF allowlist, API key bridge/chat scopes were hardened, the unrecorded MCP instance pid that left health checks unable to detect dead processes is now written, and a retention sweep reclaims the uploaded originals of agent tasks once they are N days past completion.
  • Routing observability and the product surface were tidied. URL-only queries skip the LLM decision and use a domain hint, a gate-decision observability loop aggregates routing gates into a weekly report, and four agent-task workflow observability metrics reached the admin surface. Installation gained an update subcommand behind a two-stage installer CI gate, the brand mark was redrawn in SVG and the favicon, logo, and iOS/PWA icons replaced, and five unreferenced sources, six unused dependencies, and the agent-task GitHub integration (clone→PR) were removed while a 594-line external-provider guard was split down to 353. The direct paths that bypassed the gateway went with them: the anthropic direct adapter and ollama-local were removed, the local agent browser (D3) was retired after its implementation device disappeared, and the architecture diagrams moved their source under version control, were redrawn as flow-legible illustrations, and gained a new target-structure drawing.

02

How this week was reconstructed

No matching local Claude Code project transcript was recovered for this period. This entry therefore describes only what the Git history can prove.

We audited the available Claude Code main sessions, their proven child lineages, and the repository history. Session notes explain intent and investigation; Git remains the authority for code that actually landed.

03

Team identity and project roles

OpenMake Team is the community identity; openmake_llm is the software project; OpenMake is the product name. Non-developer maker riskpw leads openmake_llm through vibe coding, and professional developer rocky supports its development.

证据来源

Evidence

返回开发日志