Back
Replicator

Changelog

Every user-visible change, newest first. Currently shipping v0.6.12.

v0.6.12

Changed

  • Maintenance release with no changes to how the app works.

v0.6.11

Added

  • The agent knows the app's own screens, buttons and settings, and points to the right one when you ask how to do something, such as exporting a model, getting the board's fabrication files or adding a model provider. It used to name controls that do not exist, such as an "Export models" button.
  • A Retry button on an error that is worth retrying, which sends your last message again.
  • A Stop button on the agent's question card, so a run waiting for your answer can be stopped without answering.
  • A page for each person in the community, with the designs they published and the builds they posted. Open it from a name on a design card or in a design's pop-up, or from Your page in the account menu. On your own page your unlisted designs and ones still being read show too, marked as such, and a Saved tab lists what you saved.
  • You can point the agent at one design, CAD part or board component. Type @ in the message box and pick it from the list, or right-click it and choose Add to chat: a part in the Parts panel or on the model, a design in the assembly, on its tab or under Designs, or a component's pad on the board. It shows in the message as a chip, and the agent aims the change at that thing.

Changed

  • The ↑ on a queued prompt is now Send now, and the prompt shows in the conversation the moment you press it, with a line saying when the agent gets it: at its next step for plain text, or when the current turn ends for a prompt with attachments or marks. It used to stay in the queue as "Steering", or move to the front without a word.
  • Google Gemini is no longer offered under Add model provider, since no engine can run it yet. A Gemini provider added earlier stays in the list.
  • The Publish dialog offers the same licences as Project information, Apache-2.0 included.
  • Settings names the list of archived sessions "Archived sessions".
  • The question card's attach button reads "Attach file", since it takes any file.
  • The dot on a project in All projects shows the same thing as on Home's Recent projects: an agent running, waiting for your answer, or finished while you were elsewhere. It used to mark the project opened last.
  • The counts under a design card can be pressed: the builds and comments open the design on that tab, and the bookmark saves or removes it in place.
  • Help improve Replicator now also shares the agent's steps (tool calls and their results) for the sampled runs it already shared prompts and replies for. Anonymous usage data now includes how long each tool call took and a summary of each run, with no prompt, file or path content.
  • A face you paint to mark now tells the agent which part of it you painted: how much of the face, around which point and across what span. It used to get the whole face.
  • The model lists are refreshed from the latest published model data.
  • The agent engine (Codex) is updated to 0.163.0.

Fixed

  • Prompts queued behind a running agent survive quitting the app. They come back as "From last time" with their attachments and wait for you to send them, since the run they waited for was cut off.
  • Projects no longer disappear from Home after the app restarts. A project that could not be opened at startup, for example before macOS allowed access to Desktop or Documents, was dropped from the list, and a project kept outside the projects folder dropped off once eight others had been opened after it. Both had to be opened again with Open Project.
  • A duplicated project appears first when projects are sorted by Last opened. It used to be placed last.
  • Account settings in the account menu opens Settings on Account, and the Settings button on a model or key error opens Model Providers.
  • An image over 10 MB is scaled down before it is sent, where it used to make the message fail.
  • Edit is no longer offered on a message while the agent runs, when it could only fail.
  • The JLC SMT items in Fabrication files say when a release has no assembly files, instead of asking for a release that is already built.

v0.6.10

Added

  • Export by role in the CAD workbench. Each object is a part, a fastener or a reference, and the Export dialog groups objects that way: export one STEP per object in a .zip, or the picked objects together in one STEP with their placement. Right-click Export STEP exports only the object you clicked, so a part file that also makes screws or other parts no longer adds them.
  • A Preview switch for the description in the Publish dialog, to see the description as the community page will show it.

Changed

  • A design tab shows when the agent is working on that design, with an orange bar along its top edge, through the whole turn rather than only while a build runs. The design cards under Designs say "Agent working…".
  • The photo fields when publishing a project or posting a make say that photos show at 4:3, and that a landscape photo of 1600×1200 or larger fits without cropping.

Fixed

  • The agent's activity list names CAD edits by what they do again, such as "Add CAD part" or "Set CAD parameter", in place of a generic title.
  • When CAD code fails, the error shows the line of code that failed, so the agent fixes it in fewer tries.
  • With the Claude engine, the agent keeps temporary files inside the project, so a check no longer stops the run to ask permission to write outside it.
  • Opening a project from the list sometimes left its file tree empty.

v0.6.9

Added

  • Duplicate in a project's menu on Home makes a copy beside it, with its history and any unsaved work. The copy is not linked to the original's GitHub repository or community listing; publish it and it shows as a remix of the original.
  • Download in a listing's "…" menu under Published by you, for a project of yours that is not on this computer, such as on a new Mac. It arrives as the same project, still pushing to its repository and linked to its listing. Opening your own project from the community does the same, and opens the copy already here when there is one.

Changed

  • In the CAD workbench, Mark paints whole faces of the model with a brush in place of drawing lines on it. The agent can trace a painted face back to the lines of code that made, joined, placed and last changed it.
  • A new app icon: a cream R on an orange tile, in the macOS 27 style.
  • A community project's pop-up counts builds and opens together as "used", next to its rating and how many people saved it.
  • The board and module index keeps one entry per product. Where a vendor lists several hardware revisions (Core2, Core2 v1.1, Core2 v1.3), only the newest is kept, and searching for an older name finds it.
  • Updated Electron to 44.7.0, the Codex runtime to 0.162.1, and the OpenAI and Anthropic SDKs.

Fixed

  • The GitHub connection no longer stops working after a few hours. GitHub now gives each connection a key that lasts eight hours, and Replicator renews it on its own when publishing or pushing, even after the app has been closed for days. Connect GitHub once more after updating; you will only be asked again if GitHub goes unused for six months.

v0.6.8

Added

  • Sign in with Watcha (观猹, watcha.cn), next to Google and GitHub. A Watcha sign-in is its own account: it is not merged with a Google or GitHub account that uses the same email. When Watcha has no email for you, Replicator asks for one after signing in and confirms it with a 6-digit code before the community can be used.
  • Engineering drawings. Ask the agent for a drawing of a part and it makes a PDF from the exported model: front, top and side views with hidden lines, an isometric view, dimensions measured from the part, hole callouts, notes and a title block. It is saved under manufacturing/<design>/drawing/.
  • A "What's new" field in the Publish dialog when you update a published project. It is saved in the project, shown in the community's version list, and used as the commit message. Leave it empty and the note from the last version is not shown again.
  • Post your make: on a community project's Makes tab, post photos of what you built (one to six), the version you built, an optional 1–5 star rating for the project, and a note. You can delete your own makes.
  • Comments on community projects. Ask a question or share a tip, reply to a comment, and edit or delete your own. The project's author can hide a comment on their project, and comments written on an earlier version say which one.
  • Report a community project, a comment or a make from its "…" menu.
  • Published by you, a new choice next to Saved by you on Home. It shows how often your projects were opened, saved, built and commented on, each project's state with the reason when it needs attention, and what other people recently did with your projects. Edit opens the project and its Publish dialog; the "…" menu views the page, makes a project public or unlisted, and removes it from the community. The account menu has a Published by you item that goes there.
  • A project you copied with "Open in Replicator" asks for a photo of what you built, once you have exported print or board files or three days after you copied it. The question shows under the title bar and under the project in Home's Recent projects, and Post your make opens filled in with the version you copied and the designs you exported. Not yet asks again after your next export; Don't ask for this project stops it.
  • The CAD preview has a Measure tool (toolbar or M). Hovering shows what a click will snap to: a vertex, an edge, a face or a point. Two clicks give the distance, the gap between parallel faces, the angle between faces or edges, or the spacing between hole centres. A single pick gives a length, area or diameter. Each measurement is listed in a panel; Esc leaves the tool.
  • Claude Haiku 5.5 is in the model list for Anthropic and OpenRouter.

Changed

  • The agent reads less on every request: tools for boards, parts search, PDFs, the web and publishing are loaded only when a run needs them, tool results are shorter, and the skills say each rule once. A CAD task now uses about half the tokens it did.
  • A community project now opens as a pop-up over Home, from a card, a make photo, a starter, the bell, the search or a link. Closing it leaves Home where it was, and the arrows step to the next or previous design. It shows the pictures, the rating, how many people built, saved and opened it, and three tabs: About (the README and its versions), Makes and Comments.
  • Cards on Home show how many people built the design, next to how many saved it and commented.
  • The community now shows the project's README.md at the top of the folder as its description, the same file GitHub shows on the repository. The Publish dialog has a Description field for it, and the Read me editor on the project page edits it too. product/README.md stays the agent's requirements document and is no longer shown in the community.
  • Publishing is one button. Publish saves the form, commits the project, pushes it to GitHub, and lists or updates it in the community, showing each step as it goes; there is no separate Commit & push first. Missing details are marked at their fields, where it goes is one line under the form, and problems appear only when they happen. The branch choice moves behind Change; the file list, the history rewrite and removing a project from the community are gone from the dialog. Asking the agent to publish does the same steps, including the commit.
  • Printing goes through OrcaSlicer and Bambu Connect. The agent can slice a model with OrcaSlicer, and hands a print to a Bambu Lab printer by opening it in Bambu Connect or Bambu Studio, where you start it. It no longer talks to printers over the local network or asks for their access codes.
  • Picking parts in the CAD preview is faster on large assemblies such as imported boards.
  • Design tabs in the preview now close like browser tabs. A new Designs tab lists every design in the project, and opening one there brings its tab back. News about a closed design, such as a change, a running build or a failed one, shows on the Designs tab. New designs still open a tab on their own.
  • Each card in the Designs tab now shows a picture of its design, the same studio render as the project cover. A board without one shows its copper plot. The card keeps its last picture while a build runs.
  • Marks in a sent message now show as the same Mark chips the composer shows, and clicking one opens its picture. The chips stay when you edit the message.
  • When the PCB source preview shows the board from the last release, a "From last release" badge in its corner says so, in place of the line of text above the board.
  • Pushing now shows how far the upload has got, with the amount sent and the speed, in the Publish dialog and the version control menu.
  • Removing build output from history no longer writes a copy of the whole repository to .work/backup/ first. The build output stays on disk, so the copy only took up space.
  • The sign-in buttons show the Google, GitHub and Watcha logos. After you pick one, a window shows the sign-in until it finishes, with Cancel while it waits for the browser and the reason when it fails.
  • Questions such as deleting a comment or a make now ask in Replicator's own dialog in place of the system pop-up.
  • The parts panel in the CAD preview starts folded and opens when you pick a part.
  • Updated the board engine (tscircuit 0.0.2772), the Codex runtime (0.161.0), and the OpenAI and Anthropic SDKs.

Fixed

  • The agent now sees the CAD preview after each edit. It was sent to the model as unreadable text, which cost about 10,000 tokens each time.
  • Skills you installed for your own terminal agents (~/.agents/skills) no longer appear in Replicator's agent.
  • Asking the agent to measure a face or edge inside an imported board, or inside any part made of several solids, no longer fails with "reference does not exist".
  • A coloured part made of several solids keeps its colour in exported STEP files and in the preview.
  • Colours the agent picks now show as picked. The preview showed them lighter, and the project cover showed them darker than the preview.
  • After an app update, parts are rebuilt with the updated part libraries, such as the screw-joint kit. A part could keep its shape from before the update.
  • A push of a large project is no longer stopped after 60 seconds while it is still uploading. A push is stopped only when no data has moved for five minutes.
  • Publishing no longer lets you push a project that GitHub will refuse. When any commit holds a file over GitHub's 100 MB limit, the Publish dialog names the files and offers to fix it with the agent before you push.
  • When a push is refused, the message now shows git's reason in place of the upload log and the forge's warnings.
  • Net labels in the schematic preview no longer overlap. Parts are now spaced so that labels on facing pins of neighbouring parts each have room.
  • Checking a board with copper pours on more than one layer, or with keepout areas, no longer crashes Python with a "Python quit unexpectedly" message.
  • Publishing again within ten minutes no longer ends in "Pushed, but the community did not pick it up". The community now reads the project after every push, and a refresh that has to wait tries again on its own.
  • The Connect GitHub button after a refused push, and the message for a community handle that is already taken, now appear when they should.
  • After a new GitHub repository receives its first push, the Publish dialog no longer says nothing has been pushed to it.
  • Switching to another session of the same project, or starting a new one, no longer empties the preview and rebuilds every 3D and board viewer.
  • Published by you can make a project public or unlisted, or remove it from the community, when the project is not on this computer.

Removed

  • The Discover page and its "Browse Discover" search entry. The community is on Home.
  • The My listings page and its button in Settings → Account. Published by you on Home replaces it.
  • The Publish dialog no longer drafts a title and summary with AI. You write them yourself, and the "Draft it" button is gone.

v0.6.7

Added

  • Right-click menus across the app. Text fields and selected text get Cut, Copy, Paste, Look Up and spelling suggestions, drawn in the app's theme. Recent projects, messages, queued prompts, attachments, parts and BOM rows, the Gerber view, community cards, listings and model providers offer their existing actions on right click, and many add Copy or Show in Finder.
  • Hovering a part in the CAD parts list highlights it on the model, and hovering it on the model highlights its row. Right-clicking a part on the model opens the same menu as its row.
  • Queued prompts go out as soon as their session's run ends, even when that session is not on screen, and they are kept when you leave the project. A run stopped on a question holds the queue until it is answered. The session list, Home and the title bar share one status dot: pulsing while a run works, a ring while it waits on an answer, solid once it finished and you have not looked yet.
  • Claude Sonnet 5.5 is offered by default for Anthropic and OpenRouter.

Changed

  • Marking the preview works like a comment tool. Press Mark, draw as many strokes, boxes and arrows as the mark needs, type a note on its card and press the check: the mark becomes a picture, leaves the preview, and shows up in the message as a "Mark 1" tag followed by the note. Click the tag to see the picture, or delete it to drop the mark. The pictures go out with the message on their own, with no "Add to chat" step, and a mark still being drawn when the message is sent goes along with it. The 3D view can still be moved while marking: right-drag pans, scroll zooms, and ⌥-drag rotates.
  • The PRD reads as a short description of the product as it stands. The agent rewrites a changed requirement where it is written and deletes dropped options, instead of adding a new paragraph on every change, and keeps build progress out of it. The PRD page also has more room around the text.
  • The parts list shows the first two lines of each part's details, with "Show all" for the rest. It uses the same white background as the panel and scrolls with the page, instead of inside its own box.
  • The agent no longer commits on its own, and the "Commit?" card under the chat is gone. When the agent finishes a stage of work, it asks whether to commit, or to commit and push when the project has a remote repository. Say yes, or pick the suggestion, and it commits and pushes for you.
  • A CAD rebuild keeps the current model and camera on screen and swaps in the new model when it is ready. It used to clear the view, show a loading pill over a blank canvas and reset the camera. Switching between orthographic and perspective, or changing the theme, no longer reloads the model.
  • Waiting looks the same everywhere: a skeleton where the content's shape is known, a spinner for other waits, and the animated loader only for the agent's live work. Opening a project or session shows skeletons for the chat, sidebar and preview instead of blank panes or "No messages". Send, Stop, rename, delete, commit, push and other actions show they are working and ignore a second press. Views, menus, dialogs and new messages fade in with one consistent timing, and reduced motion turns the animations off.
  • The PCB export notice floats over the board's corner instead of pushing the view down, shows where the file was saved or what went wrong, can be closed, and goes away on its own after a successful save.
  • Deleting a model provider asks for confirmation first, since it also deletes the saved API key.
  • Updated the Codex runtime to 0.159.3.

Fixed

  • The app no longer freezes for several seconds while a PCB is compiled, checked or released. Checking the generated silkscreen against every pad on the board blocked the whole window on a larger board; it now skips pads that are clearly too far away and finishes in a few milliseconds.
  • Round shapes in the CAD preview are smooth. Every circle used to get the same number of segments whatever its size, so a large rim or rounded edge showed visible corners, like a polygon. Large curves now get more segments, and small holes keep the detail they had. Models built before this update are re-meshed the next time they are built.
  • Coming back to a project opens its 3D view without converting the model again. Opening a project used to delete every converted model, so a large design waited tens of seconds on "Preparing interactive 3D…" each time.
  • The app no longer stops responding while PCB previews are turned into pictures. A schematic took about 24 seconds and each board view over a second, all on the main thread; they now take a fraction of a second in the background. Silkscreen text in these pictures uses the same font as the PCB viewer.
  • The PCB viewer no longer shows an error instead of the board when the board has rotated pill-shaped holes or overlapping courtyards.
  • After a stopped turn, the chat shows the agent working again between tool calls. A tool cancelled mid-run used to stay "running" and hid the waiting line for the rest of the session.
  • A project card shows the design's last drawn cover when the current build is missing, instead of falling back to the PCB picture or a blank pattern.
  • A CAD preview with board colors applied is no longer converted again every time it is opened.
  • When a package bundled with the app fails to load during a PCB run, the agent stops and reports it instead of trying to patch the app's files or the design.

v0.6.6

Added

  • Anthropic models run on their own engine, built on the Claude Agent SDK. They used to be sent through Codex and fail. Claude sessions get the same tools, skills, sandbox, question and approval cards, steering and stop as Codex sessions. Switching engines mid-project hands the new engine a summary of the turns it missed. Gemini models are marked unavailable instead of failing mid-turn, and Settings refuses Claude subscription tokens.
  • A PCB design can declare copper areas in pcb.config.json: a filled shape of one net on one layer, placed over high-current pins. Pads the area touches no longer set the width of the whole net, so a regulator's power net is no longer routed at the width of its narrowest pin. After routing, the run reports how much of each area filled and which other nets cross it. An area over fine-pitch pins can reach them without lowering the net's clearance by hand.
  • GPT-6.1 Sol is offered by default for Codex, OpenAI and OpenRouter.

Changed

  • A PCB net whose declared current needs more copper than its narrowest pad allows now stops before routing and names the pads, the width the net will get, and what can change it. It used to route and then report confusing escape-length warnings.
  • Moving a part in the CAD workbench no longer reads and checks its geometry again, and previews reuse the part's mesh from the last build. Checking for collisions between two large parts, such as a board pushed through a housing, no longer takes hours.
  • When the agent asks you something, the question and its options are in its final message, instead of in progress updates that fold away when the turn ends.
  • Updated Electron to 44.5.0, the Codex runtime to 0.159.2 and tscircuit to 0.0.2679. The PCB missing-trace warning now names only pins with no connection at all.

Fixed

  • A board the agent creates during a turn gets its tab right away. Before, it appeared only after the session was reopened.
  • KiCad library 3D models of headers and most connectors sit on their pads in the assembly. A 2x4 header's body was more than 1 mm off.
  • Connectors declared as mated from above or below no longer get "Connector faces …" warnings.
  • On the Claude engine, commands that stay inside the sandbox no longer ask for approval. Claude Opus models get their full 1M context window.
  • Coincident surfaces in the 3D viewer no longer flicker.
  • PCB annular ring and cutout width checks no longer report a value exactly at the limit.
  • The app is about 310 MB smaller: it no longer ships a second copy of the Codex runtime.

v0.6.5

Changed

  • New sessions start on the model you last picked in any composer, and keep it after a restart. They no longer copy the model of the session that happens to be open. If that model is no longer offered, the first available chat model is used.
  • Less memory use with several projects open. A CAD workbench that has been idle for ten minutes shuts down and starts again on the next request, the PCB router is capped at 1 GB, and 3D viewer conversions and circuit builds now wait their turn with the other heavy jobs, at most three at a time.

Fixed

  • GPT-6 and GPT-5.6 models can use tools again in the installed app. In 0.6.4 they could not read or change anything and said a tool runner was missing.
  • The PCB router no longer runs signal tracks through declared ground stitching vias.
  • PCB checks no longer report a via as too close to a diagonal track it does not touch, and a track width no longer fails its requirement over a rounding difference of a fraction of a micron.

v0.6.4

Added

  • Home is built around the prompt. It sits beside the recent projects, with starter chips from the most saved designs underneath, and each recent project says whether an agent is working in it or finished while it was closed. Below, "What people made this week" shows photos of recent makes and "Designs you can make" is a feed with sort, search and process filters. A bell in the title bar collects makes, comments and derived projects on the listings you published. The projects page follows the same layout, four pictured cards a row, and design cards show the owner's avatar.
  • A tab strip over the preview replaces the domain switch in the title bar: Product, Assembly and one tab per design, each marked when it is new, updated, building or failed. The chosen tab is remembered per project, and up to six opened designs stay loaded so switching back is instant.
  • The CAD workbench has Clay, Color and Wireframe views (the C key cycles them) and a floating parts panel with each part's parameters, a filter and a revert. When one design is open, the rest of the assembly is drawn faded behind it.
  • The agent says what each part is made of, such as PLA, PETG, aluminum, stainless steel or acrylic, and the Color view renders that finish: metal, glossy or matte plastic, clear. A part with no colour of its own takes its material's colour.
  • Changes made in the CAD viewer are kept. A parameter, a part's placement or where a design sits in the scene survives a reload, a session switch and a restart, and the agent is told about each change once. A value you set stays yours: the agent cannot change it unless you ask it to. Undo and redo, from the toolbar or with Cmd+Z, step through viewer changes and ask first when the agent has moved the value since; removing a pending change chip from the composer undoes that change. The viewer is read-only while an agent is working on the project.
  • When a turn leaves files uncommitted, a card under it offers to commit them, with a suggested message you can edit, and Commit, Commit & Push or Not now.
  • A prompt takes files of any type, up to 25 MB each. Files other than images and PDFs are saved into the project for the agent to read. A file that is refused now says why instead of disappearing. Attached images are numbered the way the agent receives them and open full size when clicked.
  • The app raises a system notification when the agent stops to ask a question, the same way it does when a run finishes.
  • When you ask for it, the agent can hand work to subagents. They use the app's CAD and PCB tools, and the chat shows each one under its own row.
  • Electronics start from an off-the-shelf board: Raspberry Pi, Seeed, M5Stack or LilyGO. The agent finds the board in an index of the vendors' official resources and reads the vendor's own wiki, pinout, schematic or 3D model when it needs them. The wiring records which vendor page each connection came from. A custom PCB is a separate path the agent takes when you ask for one.
  • A PCB footprint can come from the board vendor's own KiCad footprint file, and KiCad footprints take their 3D model from the KiCad installed on this Mac when it has one, so a released assembly carries real part bodies.
  • Model settings show where each model's context window and reasoning levels came from: the provider's live model list, the app's catalog, or nowhere, in which case the model is marked unverified. Conversations are compacted at the model's real context window.

Changed

  • The agent runs on the Codex engine. Its shell has network access, so fetching a datasheet or a footprint no longer asks each time, and it asks before changing a file outside the project. Connectors and plugins you set up for your own Codex are kept out of the app's runs. A ChatGPT login is shared with ~/.codex instead of copied, so the app and your terminal no longer sign each other out.
  • A CAD design is identified by a revision derived from its source, shown as seven characters like a commit, in place of a build number. Rolling a design back with Git lands on exactly the revision it had, and opening a design whose cached build is missing rebuilds it.
  • Editing a parameter in the CAD viewer is faster. It skips the preview render and the interference check, and only the parts that changed are read again.
  • The PCB 3D and Gerber tabs appear once a release has them, with a dot until you open them. A toolbar with a DRC checks popover replaces the release drawer.
  • The agent's replies name what is ready and where to get it in the app, never a file path.
  • The purchase list gives the vendor's exact product name and quantity, with no store links or prices.
  • Model export in the CAD workbench is a single button in its own toolbar that exports STEP files.
  • The agent sees every tscircuit warning, one line per kind, including footprint mismatches that used to be hidden.
  • Session titles, commit messages, publish copy and the side chat call each provider through its own SDK.
  • Default model lists add Claude Opus 5.5, GPT-6 Sol, GPT-6 Luna, GLM-5.3, Grok 4.7 and DeepSeek Flash, Gemini 3.8 Flash replaces Gemini 3 Flash Preview, and models the providers no longer list are dropped. A saved deepseek-v4-flash becomes deepseek-flash.
  • Windows take macOS 26's corner radius, and corners across the app follow one scale.

Removed

  • The built-in agent loop and the terminal CLI that drove it are gone.
  • CAD handoff exports and PCB releases no longer run an independent review. A handoff always publishes its STEP, and a release always publishes once the DRC, ERC and manufacturing checks pass; the review options on both are gone. Exports and releases recorded by earlier versions are not read; export or release again to replace them.
  • The vision assist model and the per-model "image input" override are gone from provider settings. Images go straight to the model.
  • The bundled board library and footprint library are gone. Board details come from the vendor's own resources, and footprints only from KiCad's libraries or vendor-published files.
  • 3D print plate preparation and model import are gone. Export a mesh of the part and arrange plates in the slicer.
  • GitHub Copilot sign-in is gone.

Fixed

  • Bottom-side parts in the JLC placement file were rotated 180 degrees, and their 3D models did not turn with the footprint.
  • Commit message and publish copy suggestions used the first configured provider. They now use the session's model.
  • A session error disappeared after a reload.
  • Uploaded files with extensions such as .kicad_mod were saved without their extension.
  • Kimi Coding requests went to an endpoint that no longer exists.

v0.6.3

Added

  • A project card has a menu. The ellipsis in its corner, or a right-click anywhere on the card, offers to rename the project, take it off the list, or move it to the Trash. A project taken off the list stays off it even though its folder is still in the projects directory; opening it again brings it back. The right-click menu opens at the pointer, so the button that would otherwise sit under it cannot swallow the click.
  • The domain tabs say when there is something new to look at. When the agent changes a PRD, a board or a model while a different domain is on screen, that domain's tab carries a dot until it is opened.

Changed

  • Reasoning effort is always a concrete choice. The picker no longer offers a "Default" entry that meant whatever the provider felt like: a new session starts on the effort the model declares, otherwise on high when the model offers it, and the picker shows that effort rather than a blank. Sessions saved before this get the same starting effort. A model that has dropped out of the provider's catalog still offers its efforts, so a session pinned to one keeps its picker.
  • The app checks for a new release every thirty minutes, not only at launch, so a window left open for a day still learns about the update.

Fixed

  • A query that lost its stream partway through showed two "Worked for" lines after the answer arrived: one written at the disconnect and one at the end. Only the final one is shown now, live and in reopened sessions alike.
  • A push that timed out was reported as a credential failure, which sent people to re-authorize an account that was fine. It now says the push timed out. Git's own output goes into the diagnostics log, with any tokens redacted, so the next such report has something to go on.

v0.6.2

Added

  • The conversation column takes a dropped file anywhere, from its header down to the composer. A ring and a one-line notice show while a file is over it; images and PDFs attach to the composer or to the question the agent is waiting on, and anything else is named as not attached rather than silently ignored. Dragging inside the app, or dragging text, passes through untouched, and a drag abandoned outside the window no longer leaves the ring lit.

Changed

  • The session list belongs to the session. The way back from a collapsed rail used to sit up in the title bar, far from the list it opened; it is now a button at the head of the conversation, beside the session's name, and it peeks the list in place instead of pushing the panes aside. A session name too long for the header gets a tooltip — but only when the header actually cuts it.
  • The model pickers say a name a person would say out loud: gpt-6-astra reads as GPT 6 Astra. Everything that selects, saves or sends a model still uses the exact id, which the picker keeps in its tooltip.
  • The fast tier is something you turn on. It draws more of the account's allowance, so a model that offers it now runs at standard speed until the session asks for speed.

Fixed

  • A picture the agent asked to see went to the wrong provider. When the model in the chair could not read images, the helper that describes them for it ran on its own instance but borrowed the main model's provider, so a helper configured on one service had its request shipped to another on the wrong account's token. The helper now uses the provider it was configured with. A model served by a Codex subscription is also read as able to see, instead of falling back to a describer it never needed because the catalog had not heard of it yet.
  • The Codex model list came back empty after a night with the app closed. The stored access token was used as it was found, routinely hours past expiry, and the failed listing settled for a static table — no speed tier, no context window, models the provider had since retired — until something else refreshed settings. The listing now renews the token the way chat already did.
  • Exporting a part from a build that is no longer the current one says so. A commit clears the models of every build it supersedes, so a view left open on an older build number reported a missing file by its internal path. The export now explains that a newer build replaced this one, and the pane loads that build so the next click exports the model on screen.
  • Looking at a build whose picture was never drawn draws it. The middle build of a chained edit commits a placeholder, and a chain that stops there leaves that build as the design's head, so a look at it used to hand back a blank image.
  • A multi-step CAD edit no longer fails on its own intermediate build. Those builds skip the interference check, and the way the worker said so was rejected by the reader, which failed the edit and left the worker unusable.
  • A push refused because of the GitHub connection has a button to fix it. The version control menu used to print "Connect GitHub again" with nothing to press; it now offers the same connect the Publish dialog does and pushes again once the connection stands. A commit whose push failed goes back to the menu's list, so the app no longer offers to commit the same change twice.
  • Marks drawn on a review export at the screen's own resolution, no longer at half of it on a Retina display, and each mark's position travels with the picture. A reloaded session shows what you wrote and the marks you made rather than the assembled prompt.
  • A long unbroken word in the transcript no longer hands the conversation a horizontal scrollbar. The word breaks instead of the column widening. The side chat behaves the same way.
  • The CAD build timing log stops growing with every build a project ever runs. It keeps one generation behind the live file, which is enough history for a slow-build post-mortem.

v0.6.1

Added

  • A published board travels as data. A release package carried gerbers, drill files and a STEP solid, and left out circuit.json — the file the board view actually draws, generated into .work/, which is disposable and never committed. A clone had a board it could not show: the viewer asked for a build that had never travelled and rendered a 404. That file now publishes with the package, outside any delivery section, and even when a section is blocked — a board whose Gerbers failed is still a board somebody should be able to look at. The viewer reads the build first and the newest release second, and says which one it drew.

Changed

  • A project's picture is one picture, made one way. Cards and covers used to show whichever render on disk happened to be newest, so a board's flat layer plot displaced the studio render of its assembly every time it was rebuilt, and a part showed the review render it was reviewed with — axis triad in the corner — desaturated on the way into a cover by one of two nearly identical image pipelines. There is now a single studio render, the one the board release already drew, extended to CAD designs: same rig, same camera, no triad. A project with a part shows the part; a project with only a board shows the board. A picture the author chose still wins over both, and a cover this app drew earlier is redrawn when the design has moved on.
  • The cover is the first picture in the gallery, and only that. There was also a Set as cover button writing a flag that the publish dialog did not read, so a cover set on the project page was not the cover the listing showed. Moving a picture to the front is now the whole of it — the button says Make it the cover and does exactly that. A gallery written under the flag keeps the picture its author picked: it moves to the front when read.
  • A project without a picture looks the same everywhere. The four places a project appears as a card each drew the missing one differently — diagonal hatching on Home, an icon over "No picture yet" in Discover, the words "no cover" in your listings, a bare grey box under a derivative — so one missing picture read as four different situations. They share one cover element now, and the hatch is what it draws.
  • The app opens on Home again. Launching used to reopen whatever project was last current and drop you straight into it; the last project is still remembered — recents and the session services still point at it — but reopening it is now something you ask for.

Fixed

  • A PCB package carried every built-in board model, not the one it used. Each sync copied all seven bundled development-board STEP files into source/lib/footprints/models/ — 77 MB, of which a board that places a single Xiao referenced 3.4 MB, and one unused Raspberry Pi 4 model was 50 MB on its own. Committed and pushed, that was most of the weight of a published project. The models a board actually places are now written when the KiCad stage needs them, read from the compiled circuit, and the ones it does not place are removed from the package.
  • Publishing a title or summary you had just typed sent the old one. The dialog writes those fields to the manifest and commits nothing, so the check that stops a publish whose manifest is not in the history was reading the repository as it stood before the edit: the button stayed lit, and the push carried the previous commit while the new title sat uncommitted on disk. Publishing now re-reads the repository after saving the fields, and stops at the footer — which names the file and offers the commit — rather than publishing something other than what is on screen.
  • A publish could report Pushed, but the community did not pick it up about a listing the community had picked up. Registering and refreshing read the whole repository inside the request and the platform allows them a minute; the app was hanging up on every request at twenty seconds, so a project large enough to take longer indexed successfully and was reported as failed. Those two calls now wait as long as the platform is allowed to take.
  • Connect GitHub first. in the publish dialog was a dead end. The dialog read the GitHub connection once, when it opened, so a connection that ended in between — a token revoked on github.com is forgotten the moment a call meets it — left the row still offering to create a repository and the press refused by the main process, with nothing to press about it. Publishing now re-reads the connection at the press and connects when it has to, the repository row says GitHub not connected while that is what is missing, and a refusal about the account carries the button that fixes it.
  • A listing that really does fail now says why. The platform's own sentence was being collected and then dropped, leaving one fixed line that could not tell a timeout from a repository the reader had choked on.
  • Every build was stamped -dirty, releases included. The build id reads git status from inside the Vite config, and Vite bundles that config to a temporary file in the project root while it loads it, so the tree was never clean at the moment it was measured — a marker that exists to say a build came from a modified tree said nothing on every build. It counts tracked changes now, it is left off rather than set when git cannot answer at all, and a release stops on an uncommitted tree so -dirty cannot reach one.

v0.6.0

Added

  • Replicator has a community. A project can be published to community.replicator.build from inside the app, and a project someone else published can be opened here as a working copy of your own. What is published is the git repository the project already is: the listing points at it, and the platform reads the manifest, the README and the pictures out of it. Sign in with Google or GitHub under Settings → Account — browsing asks for nothing, and anyone with git can clone a published project without this app.
  • The community can be searched from the app and sorted by Recently updated, Most made, Most saved or Newest listing, narrowed by material, machine or licence. A project's page shows its pictures, README, parts and licence before you decide, and Open in Replicator makes the copy — reporting what it is doing while the files arrive — then opens it as an ordinary project with the project it came from recorded as its lineage.
  • Publish can now create the project's repository on GitHub. A project with no remote gets a Publish to GitHub button: connect a GitHub account once (one code, entered on GitHub's own page in your browser), and the press creates the repository under your account, pushes, and lists the project in the community. Pushes to github.com then use that connection, so no SSH key or keychain entry is needed. The GitHub connection lives under Settings → Account, separate from the community sign-in, and the token stays on this machine. Connecting any other remote by hand works exactly as before.
  • The Publish dialog fills itself in the first time it opens on a project that has nothing yet. The title and the one-sentence summary are drafted from the README and the designs, in the README's language, and a Redraft button writes them again. An empty gallery gets a cover made from the project's own newest render — the board or the part it has already drawn — marked as made by the app. A model on that cover wears the same neutral clay it wears in the viewport and on the cards, even when the picture was drawn before that was settled; a board keeps its own colours. Every picture now carries a visible delete, and the add tile is always in the grid, so replacing that cover with your own photographs takes no explaining. Deleting it is remembered: it is not offered again. Licence and credits stay yours to set.
  • The Publish dialog now lists what publishing needs — a community account and a repository — as lines you can act on the moment the dialog opens, each with its own button. They used to arrive one at a time, every one of them discovered by pressing Publish and being told no.
  • A project with no repository now says so in the Publish dialog, with a Create on GitHub button that makes one and connects it — without publishing. It used to be mentioned only inside a checklist that hid itself as soon as a GitHub account was connected, on the grounds that a repository could be made at the press; connected is not the same as having one, so a project with nowhere to push showed nothing about it but the words no remote connected in grey in the header.
  • The Publish dialog asks which branch to publish, defaulting to main. A forge serves one branch as the repository's head and that is the one the community reads, so pushing whatever branch you happened to be on was not the same as publishing it. Choosing here changes what is pushed and nothing else: no checkout, no touched working tree, and the dialog says so when the branch you are on is not the one going out.
  • The dialog says when the remote does not have everything yet — so many changes not committed, or so many commits not pushed — with one Commit & push button beside it. When what is missing is the project manifest it also stops the publish: a push sends committed history, so a project.manifest.json still sitting uncommitted meant registering a listing the community answers with “this repository is not a Replicator project”, discoverable only afterwards from the listing page.
  • The dialog says where the project stands in one line at the top: Not published, Publishing…, Published with when the community last read it, Unlisted, Hidden, Unreadable, or Out of sync. A listing the community holds but could not read now says so — with the reason, and what to do about it — where it used to show a green Listed tick. While it publishes, one line says what is happening now — checking the repository, proving you can push, reading the project — instead of leaving a growing checklist of protocol steps on screen afterwards.
  • The agent can publish. Ask it to publish or share the project and it calls project.publish, which pushes the committed history and lists the project in the community through the same flow as the Publish button, creating the GitHub repository first when there is none. Anything the button would refuse on — a missing licence or cover, no sign-in, no GitHub connection — it refuses on too, and tells you what to set.
  • My listings is a page of its own: every project you have published, what the community last read from each, and the way back to the copy on this machine. Settings only points at it.
  • Every project now opens on a page of its own. Home says what the project is rather than what a session did — the name, the summary, the licence and the gallery, the product README, the parts list with Export CSV beside it, the reference material and designs, and the build profiles — and the sessions sit in a rail next to it. Project information moved into the project menu, and the remote, the branch and the commits into the version control menu, which is where connecting a repository always belonged.
  • A project is a documented format rather than whatever this app happens to write. Each one carries a project.manifest.json naming what it is, its licence and its designs; a project's identity is kept out of that shared file so a copied folder is its own project rather than its twin; and the format is published as a specification with JSON Schemas beside it — the same definition the community platform reads, so another tool can read a Replicator project without asking this app.
  • The parts list is under Product, next to the PRD. It used to be a tab inside the board view, which put it out of reach in every project without electronics — a wooden box with no PCB still has parts to buy — and product/bom.json carries the mechanical rows too. The hardware view is about the board and only the board.
  • Project cards on Home show a picture of the project. A board that has been run leaves a top view behind and a committed CAD build leaves its preview, so the picture usually existed already and nothing showed it; a card now uses the gallery cover when the author has chosen one and the newest render otherwise, resized once and remembered. A project with nothing to show keeps the hatch, because it has not failed at anything.
  • Every build now carries a unique build ID (UTC build time plus the commit it came from, marked when the working tree was dirty). It appears on the Home status line, in Settings under Diagnostics, in the exported diagnostics report, and on every log line and telemetry event, so two test builds of the same version can be told apart.
  • A session can run on the provider's fast tier where the model offers one, which measured 1.6–1.8x the output rate of the default tier at the same model and effort. Fast sits in the reasoning dropdown, and it is per session rather than per install because it spends the account's allowance faster.
  • A brief that already says what to build is now built. A query naming the product, its envelope, the parts it must hold and what counts as done runs requirements, hardware and CAD through to the exported model in one go, writing each stage's files as it passes, and stops only for a choice that is yours to make — one card with every open item — or for a failure it cannot repair. Everything else is a disclosed default you can change afterwards. A query naming one stage still delivers that stage, and “continue” still does the earliest incomplete one.
  • A query that stops mid-stage now closes by saying what to do next, in your language: where the stage stands in product terms, then the one to three things you can do now — carry on with what is on hand, provide the one missing input, or accept it and start the next stage — each phrased as something you can type. It used to end wherever it stopped.
  • Questions about parts are asked in everyday words: one plain question naming the part, one sentence on what the answer changes, and real options for a physical thing — you have it, you will buy one, or the agent chooses. Answering “you choose” resolves the item there and then, recorded as a default rather than left open. An off-the-shelf mechanical part counts as resolved once the standard fixing its envelope, mounting pattern and ports is known, so a screw no longer holds the stage open waiting for a datasheet and a purchase link.
  • Searches the model runs through the provider stay in the conversation record, with the queries, the sources shown and the citations. They used to vanish when the turn ended, so the next request, the compaction summary and a restored session all saw an answer with no evidence behind it, and the same facts were looked up again or quoted unverified.
  • Datasheets and manuals the agent downloads go into one cache shared by every project, keyed by address. The fourth project that needs the same motherboard manual copies the file instead of fetching it a fourth time.
  • Settings now says whether git and KiCad are actually on this machine, installs git when it is not, and takes a path to kicad-cli picked in a file dialog — a KiCad app bundle included, which it resolves to the binary inside. A tool failing for want of a toolchain used to be reported as the tool failing.

Fixed

  • Opening a community project no longer puts a second row with the same name in the project list. The copy landed in a directory of its own, but it kept the name the publisher gave it, so opening a project twice — a copy to cut about, the original to keep — left two rows reading Desk Lamp with nothing to tell them apart, as did opening one that happens to share its name with a project you already have. The copy now takes the next free name: Desk Lamp 2. The original is never renamed, and the name is only ever the copy's own: the project it came from is recorded as its lineage either way.
  • Asking the community to re-read a project too soon no longer reads as a failed publish. The community re-reads one project at most once every ten minutes, whoever asks, and a press inside that window came back as red Out of sync under the heading “Pushed, but the community did not pick it up” — the same words a repository the platform genuinely cannot read gets. It is now a plain grey line that says the push landed, that the daily pass picks the project up either way, and how long is left, counting down and clearing itself when the wait is over.
  • Committing no longer takes the app down with it. Git's output was collected by appending to a string with nothing bounding it, and past roughly half a gigabyte that throws inside a stream callback where nothing catches it — the whole app disappeared mid-commit. The diff read for a commit message now stops git once it has the 24k it shows the model, instead of reading a hundred megabytes to throw most of it away, and every other git command has a ceiling that fails with a message naming the command.
  • Live supplier search works again. The catalogue moved its API behind a CSRF check and answers a request without the token 403 Forbidden, with nothing in the reply naming CSRF, so a working sign-in and a broken client looked identical — a dead backend. The token is minted and sent now, and a refused request is retried once with a fresh one. Searching no longer needs the LCSC sign-in either: the catalogue answers anonymously with the same rows, stock and price breaks, and the results say when account pricing may differ. A refusal is also reported as a refusal rather than as “transient, retry later”, which for a 4xx could never come true.
  • Claude 5-class and GPT-6 models are sent parameters they accept. Both refuse any non-default sampling setting with a 400 and the guard matched only the previous generation's names, so a request could fail outright; the idle timeouts follow, so a high-effort turn on Sonnet 5, Fable or Mythos is no longer cut off mid-reasoning.
  • Citation markers no longer leak into the chat as literal text.
  • A generated image in the chat can be revealed in Finder again.
  • Opening a folder that is not a project now says what is wrong with it instead of failing without a reason.
  • Shell commands can write their temporary files. The sandbox denied the temporary directory, so ordinary commands failed in ways that read as the command being wrong.
  • An update download that fails on a transient network error is retried instead of abandoned, and Settings says where the download stands.
  • The same agent turn can no longer be picked up twice. A turn is claimed atomically, so nothing answers it twice or leaves it stranded as running.
  • A project whose manifest was truncated by an interrupted write opens again. The manifest is written atomically, and a file that no longer parses is recovered from what is committed and from the directory layout rather than keeping the project shut for good.
  • Autorouting works for a project stored under a folder with a space in its name. Freerouting splits the paths it is handed on whitespace and keeps the last field, so the file it was told to route did not exist and every board under such a folder failed to route.

Changed

  • Taking a project out of the community now asks you to sign in, as publishing one already did. Open in Replicator turns into Sign in to continue and then does what you pressed it for. Browsing is unchanged and still asks for nothing: the list, the search and a project's page answer to anyone, signed in or not. The files themselves were never behind this — every project in the community is a public git repository, and anyone with git can clone it without this app.
  • Saved replaces Repositories I follow. A bookmark on any card, and on a project's own page, keeps the project on a shelf that belongs to your account rather than to this machine — so what you saved is there on the next computer you sign in from. What it replaced asked you to paste a git address to watch a repository, which is a way of describing a thing nobody wanted to describe: they wanted to keep the project. Add repository is gone with it, and so is the offline list of followed repositories — when the platform cannot be reached the community page now says so rather than showing a local list instead. A replicator://open?repo=… link still arrives with its address on screen and an Open button under it.
  • A project's page in the app is laid out like its page on community.replicator.build, block for block: the same licence sentences, the same counts in the same words, Started from where it said Remixed from, one Used by section where builds and derived projects were two lists, and the parts table and design cards in the shape the website gives them. Seeing a project on the web and opening it in Replicator should not be two different things.
  • The git clone line under the button, and Download zip beside it, are gone from a project's page. The action area is the things you can press; the repository address is still in the footer, where the page says which commit it is showing.
  • Discover community projects on Home now shows the community's own list — the four projects published most recently — and a card opens that project's page. The row showed the repositories this machine follows by URL, so on a machine that had never added one by hand the community looked empty from the first screen of the app. The cards it last showed come back immediately on every visit Home while this visit's are read, and a first read shows their shape rather than a gap.
  • The session rail no longer sorts itself into Today, Yesterday and Earlier. The last three days are one plain list, and anything older folds behind a Show N older line — pinned sessions and the one you are in stay visible wherever they fall.
  • Signing in to the community now asks for your username straight away, once, and suggests one from the name your forge already knows. That username is who you are everywhere in the community from then on — listings, comments, makes — so publishing no longer stops to ask for a public name, and neither does anything else. You can still change it later under Settings → Account, where old usernames are held 30 days and redirect.
  • CAD renders now look like a studio clay render instead of a flat CAD screenshot: every part in one neutral grey, smooth shading from the exact surface normals, a three-light rig with soft highlights, ambient occlusion in the creases, a soft shadow on the ground under the part, and a dark backdrop — the same look in the chat transcript, in cad.look observations, and on the project cards on Home. Renders from before this change keep their old look until the design builds again.
  • A board release now renders the exported KiCad assembly as a picture, in the colours the STEP carries — solder mask, copper, each component's own body — and puts it in the release previews as assembly-iso.png. A PCB project's card shows that render once the board has been released; before that, its layer plots sit on the same dark ground as the CAD renders rather than on a white card.
  • The supplier lookups are called electronics.search and electronics.detail. Under the old name — parts — the agent read them as the way to find any part at all and sent screws, heat-set inserts, bearings and extrusion to an electronics distributor's catalogue, then read the empty answer as proof the hardware did not exist. Mechanical hardware comes from the CAD catalogue, and always did.
  • The typefaces ship with the app instead of being fetched from Google Fonts at run time. This is a desktop app: opening it offline, or behind a network that blocks the CDN, silently redrew every screen in a fallback face.
  • Buttons, badges and inputs are drawn to the sizes the design specifies rather than the starter kit's — 12.5px text, a 5px corner, four heights, regular weight throughout — with the raised key as the ordinary button and orange kept for the live thing. Overlays share one surface instead of each stacking its own border and shadow, the composer keeps both pickers on one row in a narrow pane, and workflow bodies and the running-tool row expand and collapse instead of snapping open and shut.
  • Switching projects no longer pauses and then jumps. The project the list already describes goes on screen first, with its known sessions, while the real open runs behind it; only the session list is waited for, and a failure puts the previous project back. The open itself is faster too — a project this process already has open is no longer reopened just to list its sessions, and the sweep that looks for dropped folders stops walking .work/.
  • Last opened now means it. The list was ordered by a timestamp stamped once when the project was created and never again, so it only ever showed creation order. Opening a project records when, and Home, All projects and the app's own listing order by that.
  • Model context windows and speed tiers are taken from the provider's own catalogue rather than from a table inside the app, so a model the app has never heard of is no longer run at a 128k guess and compacted at half its capacity. The catalogue is remembered for ten minutes instead of being fetched three times on every project switch, and the offline fallback roster leads with the current generation.
  • web.read_url refuses a search engine's results page and says why: it lists links, returns nothing readable, and was the slowest path to an answer. Searching goes through the provider's own search; a page is read to take facts from a page already known. A host answering 429 or 403 is left alone for ten minutes rather than tried again every turn.

Removed

  • Signing in to Anthropic with a Claude Pro/Max account is gone. The Anthropic provider takes an API key; Codex still authorizes with a ChatGPT account.

v0.5.13

Added

  • Each installation now records its first-run time and app version, preserves the existing anonymous installation ID during migration, and emits explicit install and upgrade events.
  • The telemetry service now keeps a durable installation registry and includes a preview-first backfill command for reconstructing it from historical events.
  • Usage reporting now covers cumulative and new installations, active-install trends, agent-query engagement, weekly retention cohorts, app versions, platforms, and data-quality gaps.

Fixed

  • A queued message can now start as soon as the previous response reports completion, even if that response's background cleanup never settles. Late cleanup from the superseded response is ignored, so it cannot erase the new transcript, stop the active stream, or leave the message queue permanently blocked.
  • First-launch telemetry is no longer dropped before Settings has initialized. Always-on Tier A events begin enabled, while preference-controlled tiers remain disabled until their settings are loaded.

v0.5.11

Fixed

  • Signing in to LCSC no longer crashes the app. When the sign-in page navigated itself (the usual case once a session is remembered), the pending page load was reported as failed and the window immediately started a second load, which killed the browser process mid-navigation. The aborted load is now recognized for what it is, and the sign-in window is stopped before it is closed.
  • PCB runs no longer depend on a system rsvg-convert install. Preview images are now rasterized inside the app, so a machine without librsvg finishes routing, DRC, and manufacturing release instead of stopping the whole run at the preview step.

v0.5.10

Added

  • The macOS installer now includes the managed CAD, PCB, and PDF environments. A first launch initializes them from the app bundle without downloading runtime files; KiCad is the only separate environment users install.
  • App updates now appear in the main window with download progress and a restart action, so users do not need to open Settings to discover or install a release.
  • The installer now carries third-party notices, package inventories, license texts, and corresponding source for the bundled freerouting and Poppler components.

Changed

  • The setup wizard now describes the bundled runtime step as environment initialization and lets Next navigate between every step. Provider and environment readiness still determine whether Finish is available.
  • Runtime progress now describes preparing, verifying, and extracting bundled files instead of implying that every environment is downloaded.

Fixed

  • The first-launch setup wizard now actually appears on a new install. The version of it in 0.5.9 treated any configured model provider as proof the machine had already been set up, and a Codex CLI login lives in the home directory rather than in Replicator's own storage — so a profile created seconds earlier looked like a returning one and the wizard marked itself done without ever opening. It now goes by its own first-run record and nothing else. An install that already ran 0.5.9 keeps that record, so the wizard stays quiet there; a reset profile gets it back.
  • The setup wizard's provider list no longer claims nothing is configured while it is still loading. It opens before the first settings fetch returns, so for about half a second it showed the empty state — "No model providers configured yet" — before the providers appeared. It now shows placeholder rows until the list arrives.
  • Environment checks now wait for bundled initialization to reach a terminal state and discard results from earlier states. A fresh install no longer flashes managed CAD or PCB failures for a few seconds before changing to passed, while a real failure still appears after initialization finishes.
  • The setup wizard now identifies KiCad as the only separate download and keeps the final step unavailable until its check and the bundled environment checks pass.
  • The setup wizard's heading no longer shifts when the environment description changes length.
  • The runtime install progress no longer resizes as it runs. Only the download phases report a per-file percentage, and a detail line that just repeats the phase title is dropped, so both rows kept appearing and disappearing — resizing the setup wizard by 24px every few seconds, and the background install badge along with it. Both now hold their space for the whole install.
  • macOS packages no longer retain machine-specific PDF font caches, avoiding stale build paths inside an installed app.

v0.5.9

Added

  • Replicator now installs the PCB toolchain — the Java runtime and the autorouter — the same way it installs the CAD and PDF runtimes, and the Environment settings panel reports whether it is ready. Autorouting previously failed on a toolchain that nothing ever installed, while every runtime check reported healthy.
  • A background runtime install now reports itself in the main window instead of running silently, so the first launch after an update shows what it is downloading and how far along it is.

Fixed

  • The first-launch setup wizard appears again. Nothing had opened it since the desktop refactor that replaced its workspace step, so a new install landed in an empty window with no model provider configured and nothing asking for one. It now opens once, on a launch that finds no provider set up, and it can be left early from any step — every screen it shows is also a section of Settings.
  • The setup wizard's environment step names the checks that are actually failing, the PCB toolchain among them, instead of asking for KiCad and tscircuit whatever the checks found.
  • Asking for autorouting while the PCB toolchain is still downloading now says so and asks you to wait, rather than telling you to start an installation that is already running.
  • The runtime health check no longer passes while the PCB toolchain is missing, and the routing diagnostics that ask you to install it now name a settings action that exists.
  • Repairing a missing PCB toolchain no longer reinstalls the CAD runtime along with it, so the repair takes seconds instead of re-downloading Python and every CAD package.
  • Autorouting no longer warns that it cannot save its settings, and no longer reports its blocked analytics call as a network fault worth investigating. Each routing run starts about three seconds sooner.
  • Autorouting results no longer carry the router's startup chatter, so what a routing run reports is the routing itself. Errors and the route summary are unchanged.
  • A first-time install no longer fails partway through on a slow machine. Both runtime checks budgeted about as long as the check itself takes the first time it runs, so setting up CAD or the PDF runtime could fail by a few seconds. A CAD check that does run out of time now says so instead of reporting an unexplained exit code.

v0.5.8

Added

  • CAD edits from concurrent sessions now rebase cleanly when they touch independent parts, while conflicting edits identify the affected parts and the session that changed them.

Changed

  • CAD and PCB handoffs now choose visual reviews based on the change and its review history, with mandatory reviews for new designs, changed premises, and long runs of skipped reviews.

Fixed

  • Hardware BOMs now become stale when their source product requirements change, preventing downstream CAD and PCB work from using outdated requirements.

Removed

  • The per-query Undo and Redo actions. Queries still record the commits they produced, and those commit IDs remain visible on the message; reverting a change is now ordinary Git work.

v0.5.7

Added

  • Custom providers and GLM preview models now support vision input.

Changed

  • Long conversations now load and replay more efficiently, and completed agent runs release their retained event data after reconnects have settled.

Fixed

  • Streaming sessions now recover more reliably without duplicating transcript activity or retaining finished runs indefinitely.
  • CAD model views now keep exact STEP edge overlays aligned with the active appearance, focus, placement, and exploded-view state.
  • Tool results redact workspace paths once against the active project root, avoiding redundant traversal and inconsistent path handling.

v0.5.6

Added

  • DeepSeek V4 Flash models now support vision input when used through compatible API endpoints.

v0.5.5

Added

  • OpenAI provider settings now let users choose between the Responses API and Chat Completions for compatible third-party endpoints.

Fixed

  • Custom OpenAI-compatible endpoints now receive a neutral Replicator user agent, avoiding gateway blocks caused by SDK-specific request headers.
  • CAD exports now identify reviews and releases created with stale manifest formats and guide users to run a fresh review or export.
  • Post-review CAD repairs now keep design-derived PCB references inside the repairable design scope while preserving validation of the reviewed premise.

v0.5.4

Added

  • Model stream interruptions now show retry progress and the remaining backoff time in the chat and CLI.

Changed

  • Retryable model stream interruptions now keep reconnecting until the run is cancelled, while explicit retry limits remain configurable.

Fixed

  • CAD handoff status now reports the active review cycle used by exports, and post-review repairs identify review-scope changes instead of repeatedly retrying an inapplicable review.
  • CAD handoffs automatically run one fresh review when a repair changes its brief, contract requirement, or referenced inputs.

v0.5.2

Added

  • Project-wide CAD assemblies now support persistent placement and rigid transforms across design members.
  • Version control now provides compact commit and push actions with generated Conventional Commit messages.
  • Anthropic providers now support auth-token credentials and hosted web search through compatible gateways.

Changed

  • Model selection is now owned by each session, with provider setup and model capabilities managed together in Settings.
  • CAD workbench state now uses a unified design vocabulary and tracked design.json files, with existing project state migrated automatically.
  • CAD and PCB execution paths now rely on focused build state instead of duplicated workspace digests and legacy model scopes.
  • Declared PCB stitching vias are placed before routing so Freerouting can route around them, while routed-copper reuse performs stronger validation.

Fixed

  • Workspace sandbox commands can create Git commits while protecting repository configuration and hooks from modification.
  • CAD review evidence no longer becomes invalid solely because a historical source hash changed.
  • Hiding or focusing STEP assembly components now suppresses their exact edge overlays without removing valid edges from visible components.
  • PCB routing diagnostics now report viable stitching-via relocation options and preserve process failures during KiCad checks.

v0.5.0

Changed

  • Project history now uses ordinary Git commits created for meaningful, validated work. Queries record the commits they produced and can undo them with a standard revert commit.
  • Editing or switching a conversation branch no longer restores project files.
  • The project sidebar now provides native Git status, diff, staging, commit, history, and refresh controls. An undone query can be redone with another standard revert commit.
  • CAD and PCB cache, snapshot, preview, export, and stale-state contracts now use explicit build numbers, build IDs, source hashes, and state hashes.

Removed

  • Automatic query checkpoint commits and workspace restore actions have been removed.
  • The parallel application-level history model, including its schemas, paths, records, and UI terminology, has been removed. Git owns durable project history.

v0.4.7

Added

  • Provider-aware web search now supports DeepSeek, Kimi, Kimi Coding Plan, and Z.AI, with hosted search sources shown in tool activity.
  • Models without native image input can use a configurable vision assistant, including per-provider and per-model capability settings.
  • The CAD workbench now supports persistent part placement, geometry selection, measurements, topology comparisons, and richer revision inspection.

Changed

  • CAD editing and review controls have been streamlined around explicit part actions, direct manipulation, deterministic inspection, and clearer agent feedback.
  • Agent runs now select tools from the current query, preserve provider reasoning and workspace snapshots across turns, and recover more reliably from context pressure.
  • Structured PRD requirements now record whether each value came from the user, a default, or research, while unresolved questions remain explicit.
  • Publishing a macOS release now updates the Replicator landing page with the released version and its exact DMG download URL.

Fixed

  • The desktop app now recovers from unexpected renderer-process failures and records unresponsive and recovery events in diagnostics.
  • Vision fallback now preserves renderer coordinate conventions and handles provider-specific search routing more reliably.
  • Pi AI OAuth compatibility and session/query state persistence have been updated for the current provider and desktop runtimes.

v0.4.6

Added

  • Confirmed product requirements now carry a stable baseline, and downstream design conflicts require an explicit user decision before the PRD can change.

Changed

  • The CAD viewer now uses CAD-native Z-up coordinates consistently across cameras, orientation controls, grids, lighting, exploded views, and 3D files.
  • Marking a review now adds the rendered marked screenshot directly to the chat composer as an ordinary image attachment with streamlined drawing controls.
  • Focused CAD components now keep their normal material appearance while the rest of the assembly is hidden.

Fixed

  • Editing and rerunning a prompt now preserves its original image and PDF attachments, while current-turn images remain distinct from earlier uploads.
  • Desktop builds now use the bundled macOS icon asset consistently instead of relying on a separate PNG fallback.

v0.4.5

Added

  • Appearance settings now let users follow the system theme or choose light or dark mode explicitly, with the preference applied across app launches.

Changed

  • PCB generation and validation now share a consolidated backend for routing, KiCad synchronization, fabrication exports, previews, and diagnostics.

Fixed

  • SVG PCB previews now remain sharp while zooming and use a shared pan-and-zoom viewport for smoother visual review.

v0.4.4

Added

  • Published PCB releases can now re-emit fabrication, assembly, or mechanical deliverables as focused upload packages without rebuilding the board.

Changed

  • PCB releases now produce one package with separately reported fabrication, assembly, and mechanical sections, omitting files only from sections blocked by their own diagnostics.
  • PCB checks now reuse unchanged routed copper and support targeted rerouting by net name or component reference.
  • The CAD viewer now rotates freely through every viewing angle and keeps its lighting aligned with the active view.

Fixed

  • CAD component focus now survives model reloads and is cleared reliably when the selection is removed.

v0.4.3

Changed

  • CAD Workbench handoffs now publish STEP as the single authoritative format for every delivery target, including visual review, and refresh the interactive GLB preview from that exported STEP.
  • PCB generation now uses the current tscircuit toolchain and matching supplier footprint patch.
  • Model streams now stop after two automatic retries instead of retrying indefinitely.

Fixed

  • JLCPCB placement exports now use supplier Pin 1 metadata when available to correct component rotations, including mirrored bottom-side placements.
  • CAD inspection and export tools now expose provider-friendly schemas while retaining kind-specific validation.
  • Structured upstream provider errors are parsed consistently whether their status code uses a space or colon separator and whether the error fields are nested or top-level.

v0.4.2

Changed

  • Issue reports now keep the generated RPL support ID visible after submission and provide clear clipboard feedback so it can be copied again for follow-up.

Fixed

  • Packaged desktop diagnostics no longer corrupt already-redacted paths when the process working directory is the filesystem root.
  • Supplier footprints for polarized two-terminal PCB parts now map anode and cathode pads from the supplier terminal labels, preventing reversed diode and LED copper connections.

v0.4.1

Added

  • 3D model reviews can now draw, select, and keep annotation strokes directly on model surfaces, including while viewing exploded assemblies.

Changed

  • Model-reference prompts and CAD review tools now carry richer component and surface context through the project replication workflow.
  • PCB frame calibration now uses a shared domain implementation instead of a routing-specific copy.

Fixed

  • CAD review panes now refresh when the agent commits a revision, and stale interactive previews are cleared when the active document changes.
  • CAD exports now derive their formats from the artifact contract, validate mesh bounds by corners, keep STEP-only exports available for geometry that cannot be tessellated, and explain unmeshable faces when mesh output is requested.
  • CAD review evidence now accepts the default document binding, rejects missing cached images cleanly, and reports actionable evidence and retry failures.
  • Project Git operations now pass managed paths safely, and agent workers receive a bounded environment.
  • Switching sessions no longer replays transcript animations, and creating a project from the empty state now opens the project-folder chooser.
  • Codex account authorization no longer depends on a separately installed CLI.
  • Tool-reported failures and review gates now appear correctly in telemetry, while session and trace correlation identifiers remain queryable.

v0.4.0

Added

  • Sessions can now select and change their model directly from the composer.
  • Optional telemetry onboarding, settings, local outbox persistence, and replay tooling make diagnostics controllable and resilient when collection is off or temporarily unavailable.
  • CAD fabrication can now plan printable plates and export print-ready 3MF artifacts with dedicated preparation controls.
  • Built-in Arduino Nano, Raspberry Pi 4, and Seeed XIAO development-board models are available for PCB assemblies and mechanical reference.
  • CAD screw joints can now use a threaded through termination for PCIe-style fastening where the screw exits the receiving part without a nut.

Changed

  • CAD screw joints now require the agent to choose thread engagement depth and permit compact joints below the previous fixed diameter-ratio minimum.
  • Pending prompts, task progress, CAD review controls, provider setup, and model settings have been streamlined around the desktop workflow.
  • Agent orchestration, project services, typed IPC, and observability have been simplified to reduce duplicated state and obsolete workbench abstractions.
  • macOS releases are now notarized by default, so a published build passes Gatekeeper on first launch instead of requiring an opt-in flag.

Fixed

  • Telemetry preferences now apply immediately to every app and project event producer through one shared outbox, preventing disabled data tiers from being queued by stale service instances.
  • New installations no longer queue or upload telemetry before the user finishes the onboarding data-sharing choice.
  • The macOS About panel now displays the Replicator app version in development builds instead of the bundled Electron runtime version.
  • PDF ingestion now resolves workspace artifacts consistently across desktop and agent-service boundaries.
  • Installing a downloaded update no longer races the shutdown guard: services are released before the installer terminates the app.
  • Checking for or downloading an update can no longer leave the Updates panel stuck on "Checking"/"Downloading" when the platform updater finishes without reporting an outcome.
  • Update failures caused by an installation that predates bundled update configuration, or that is not signed with a release certificate, now explain that the app must be reinstalled instead of showing a raw platform error.

v0.3.37

Added

  • Agent and sandbox workloads now share an application-level compute resource governor, keeping concurrent local jobs within explicit capacity limits.
  • CAD workbench revisions can carry richer component display metadata and measured bounds so review previews can expose the geometry relevant to the current action.

Changed

  • PCB delivery now passes the board specification, including finished board thickness, directly into review and manufacturing output while using a smaller geometry-focused backend.
  • Simplified the product hardware workflow by removing the obsolete persisted PCB-to-CAD handoff contracts and directing enclosure constraints through the active CAD workbench and review context.
  • Session activity, prompt controls, and artifact review panes now present long-running agent, CAD, and PCB work with more focused status and controls.

Fixed

  • Completed subagents now collapse immediately and fold into the surrounding tool summary instead of staying expanded until the whole turn finishes.

v0.3.26

Added

  • Agent sessions now keep a persistent, visible task list so multi-step work remains understandable across long runs and context compaction.
  • CAD and PCB release reviewers can measure the artifacts they inspect and return prioritized reports with their evidence, including composed board geometry and placement details.
  • PCB releases now record actual routing widths and relaxations, reconcile design-critical BOM claims against the generated board, and require sourced physical-interface facts instead of accepting unresolved placeholders.

Changed

  • Independent CAD and PCB reviews are advisory while deterministic build, routing, DRC, and manufacturing checks remain the release gates. Review reports now distinguish urgent findings, follow-up work, and questions owned by later stages.
  • PCB configuration validation is stricter, finished board thickness is written into the KiCad stackup, and footprint-library parity checks run against the same library names used by generated boards.
  • Simplified agent completion, review, and PCB release orchestration by removing redundant evidence ledgers, completion guards, and obsolete architecture documentation.

Fixed

  • External PCB footprint and 3D-model downloads now use a shared cache, bounded retries, and request timeouts. An unrecoverable asset fails compilation explicitly instead of silently producing an incomplete circuit or consuming the full sandbox timeout.
  • Printed screw bosses are now sized and anchored from the part that receives the screw, preventing floating bosses, broken blind-hole floors, and skirts on unsupported faces.
  • Failed ground-pour rescue-via placement now reports the exact layer, net, region, and nearest component; the suggested PCB view opens the affected area with a visible highlight so connectivity defects can be repaired locally.
  • Changing a PCB part now invalidates physical facts inherited from the previous part, preventing stale port, opening, or orientation requirements from blocking or misdirecting a release.

v0.3.25

Added

  • CAD views can now show a single component instead of only the finished assembly. The agent can isolate chosen components, keep the rest of the assembly as ghost outlines to judge placement in context, or hide a shell or cover to see what sits underneath. Isolating also frames the view on those components.
  • A printed screw-joint kit now generates material-compensated self-forming M2-M4 joints and molded M5+ threads, with explicit guidance for the high-cycle cases that still need inserts or captive nuts.
  • PCB diagnosis can now query bounded board geometry, component pads, net topology, clearances, and current violations directly from the compiled circuit. A persistent repair ledger also keeps failed approaches and gate outcomes available across long sessions and context compaction.
  • PCB release review now records stable finding identities, the evidence actually presented to the reviewer, and Host-measured claims so only substantiated findings can gain blocking authority.

Changed

  • CAD previews now draw each component in its own colour, so parts and their interfaces are distinguishable in the assembly view instead of reading as one solid block.
  • PCB routing is now derived from declared connectivity rather than source-level hand routes. Placement guidance sizes escape space from the nets that must leave a component group instead of applying fixed grid pitches.
  • PCB checks retain usable downstream evidence after an earlier stage fails, group DRC findings with net and location details, and preserve the board specification and manufacturing-rule provenance used for the release.
  • Manufacturing checks now resolve copper clearances from the selected copper weight, normalize silkscreen to fabrication minimums without changing copper, and surface remaining silkscreen issues as warnings.
  • Large PDF and transcript workflows now use bounded, resumable reads and incremental rendering so long documents and long-running agent sessions remain responsive.

Fixed

  • Designing a PCB now ends with the fabrication files. The routing and DRC pass exports nothing — no Gerbers, no drill files, no 3D model — and the agent was told to stop there, so finished boards were left with nothing to inspect or send to a fab. A board that passes its checks now goes on to publish a release, and the check result says outright that fabrication files do not exist yet.
  • PCB manifests now hash the same canonical representation that is persisted, so valid build snapshots, candidates, and releases no longer reject their own identities.
  • Board-edge margins and internal cutouts now reach the router as keepouts, while component-scoped edge exceptions remain scoped to their intended connector instead of relaxing the whole board.
  • Fragmented ground pours now receive bounded rescue vias where geometry permits, and diagnostics identify the affected zone, layer, and declared keepout instead of misreporting the problem as a movable component pad.
  • Evaluated PCB source failures now identify the editable file, line, lookup, and nearby source where the runtime preserves that information.
  • XIAO castellated mounting now emits surface pads without false through-holes, preventing bottom-mounted modules from intruding into top-side mechanical envelopes.
  • Skill instructions and prior repair attempts now survive context compaction, preventing long-running work from silently losing its operating constraints or repeating failed approaches.
  • PCB release previews now select the board assembly rather than the first component STEP file, reuse the packaged GLB, and keep derived previews out of immutable release directories.
  • Published Gerber, drill, BOM, report, and manifest files are now mirrored to a readable project release path instead of being stranded behind an opaque artifact identifier.

Removed

  • Removed manual routed-copper overrides and fixed row, column, and grid layout helpers that could conflict with the deterministic netlist-driven router.

v0.3.24

Added

  • Desktop startup now shows a branded logo splash with a shimmer sweep while the window and renderer finish loading, instead of a blank black or white screen.
  • CAD workbench revisions can now export the current assembly as STEP, and individual components can be exported from the Components context menu without first creating a formal release.
  • A bundled tscircuit authoring reference pack now gives the agent focused syntax, element, workflow, and starter-template guidance for PCB work.

Changed

  • PCB authoring now centers on setup, preview, check, and release operations while deterministic routing, KiCad validation, export, and review stages remain encapsulated behind the selected run profile.
  • PCB release state now follows immutable source revision, build snapshot, release candidate, and release records, with one Host-owned independent review covering electrical, BOM, routing, and manufacturing evidence.
  • Product and component research now remains in the main agent's working context; only Host-owned CAD and PCB release reviews use isolated reviewers, reducing orchestration overhead and preserving design continuity.
  • Complete tool results are now archived losslessly in the project workspace. Large results use bounded references with structured, paginated access, and filesystem reads can continue unusually long lines by character offset.
  • Live assistant and reasoning text is throttled, completed transcript and review sections are memoized, and the 3D viewer loads on demand so long streaming sessions remain responsive.
  • The CAD Components sidebar now shows a short part title with an optional wrapped description instead of a single truncated prose line, and groups by part count rather than internal cell count.
  • Missing purchase links, stock, or pricing for externally procured parts are now reported as procurement reminders rather than PCB release blockers when design-critical identity, specifications, footprint, and assembly evidence are complete.
  • Refreshed the macOS application and DMG branding assets.

Fixed

  • CAD component selection can be cleared again by clicking empty space in the 3D viewer (or re-clicking the selected component in the sidebar), matching face/edge deselect behavior.
  • Nested STEP topology is recovered before component mapping so selection, focus, highlighting, and per-part export continue to target the correct workbench object.
  • PCB release review findings that require follow-up but do not block manufacturing are now surfaced as warnings; only a Blocked review prevents release.
  • Copper-pour island guidance now requires polygon-level location evidence and localized repair before changing global clearances or adding stitching vias.
  • Archived grep results now preserve original match coordinates and continuation offsets without directing the agent to recursively search the result archive.

v0.3.23

Added

  • PCB routing now detects fine-pitch footprint clearances and can temporarily use the manufacturing-floor clearance for affected Freerouting nets while preserving final KiCad DRC and Electrical Design Review as authoritative gates.
  • KiCad DRC now resolves multi-shape supplier-footprint pads through their shared tscircuit logical port, separates accepted internal findings from real external disconnects, and reports both in the DRC digest.
  • A verified local CAD component catalog now supports exact component search, parameter and provenance inspection, and immutable STEP acquisition from the managed CAD runtime.
  • Typed CAD Part Research now compares standard or purchasable mechanical parts before modeling, records exact, partial, rejected, and unresolved candidates, and keeps the main agent responsible for substitution decisions and the authoritative part plan.

Changed

  • CAD runtime provisioning now downloads a verified Python distribution from Astral and hash-locked dependencies directly from PyPI instead of requiring a Replicator-hosted runtime archive.
  • App startup now compares the installed CAD environment with the bundled runtime definition and guides users through required environment updates.
  • Simplified desktop renderer activity handling, agent orchestration, and PCB service boundaries while removing obsolete preflight and live-workbench paths.
  • Consolidated project documentation around maintained references, accepted decisions, and a single release history; release preparation now requires promoting Unreleased entries into a dated version section and updating the comparison links.
  • PCB authoring guidance now keeps manual routes empty unless the user explicitly requests a reviewed local correction, and requires evidence for any custom logical-pad grouping or footprint-local clearance exception.
  • Legacy tscircuit autorouter configuration is now rejected explicitly instead of being partially interpreted by the Freerouting workflow.
  • Project sessions are now loaded lazily in the sidebar and cached with their transcript, events, artifacts, and workspace tree for faster cross-project switching.
  • The 3D review viewer now maps STEP and glTF occurrences back to workbench component identities so component selection, highlighting, and camera framing remain synchronized.
  • PCB source previews now keep copper pours, solder mask, and courtyards hidden unless explicitly requested by the selected layer view.

Fixed

  • Missing CAD runtimes now fail with an explicit runtime-unavailable error instead of executing the internal unavailable sentinel as a shell command.
  • PCB research validation now checks current source identities instead of rejecting valid work because a historical research hash became stale.
  • Canonical reviews now reject changed candidates immediately, exclude their own generated outputs from frozen evidence, and distinguish semantic candidate hashes from full-file hashes in reviewer instructions.
  • macOS KiCad DRC now blocks affected KiCad 10.0.x versions below 10.0.4, removes stale reports before every run, and preserves process-signal exit codes so crashes cannot be mistaken for valid DRC results.
  • KiCad ERC now treats non-violation exit codes as tool failures even when a partial report exists.
  • Copper-pour polygon regions are no longer reported as fragmented solely because one electrically connected zone was backported as multiple shapes.
  • The CAD workbench preview now fills the available review-pane height.
  • EasyEDA/JLCPCB footprints with repeated physical pad numbers are now consolidated under their original logical port before routing, preventing duplicate pad shapes from being treated as separate electrical terminals.
  • Freerouting diagnostics now identify expanded logical-pad shapes and avoid recommending unsupported trace-width changes without evidence.
  • Workspace sandbox setup now creates and verifies missing parents for protected generated-output paths before applying write-deny policies.

v0.3.22

Added

  • Evidence-driven completion assessment shared by agent orchestration and the desktop application.
  • A reproducible macOS arm64 CAD runtime artifact with packaged health checks.
  • A local macOS release workflow that validates the CAD runtime descriptor, updater configuration, signatures, and generated artifacts.

Changed

  • Simplified report.completion so the agent reports a natural-language result while the host derives authoritative completion evidence.
  • Runtime provisioning now installs a pinned archive and verifies the actual Python/CAD toolchain before reporting readiness.

v0.3.21

Fixed

  • Restored compatibility for PDF path errors surfaced through the desktop runtime boundary.

v0.3.20

Added

  • Interactive CAD workbench previews, revisioned state, isolated visual review, deterministic export, and agent workbench tools.
  • Sandboxed execution for model-influenced CAD, PCB, shell, and PDF workloads.
  • PCB preflight and manufacturing review flows, side chat, and CAD recipes.
  • Packaged auto-update configuration for macOS releases.

Changed

  • Completed the desktop-first migration around Electron, typed IPC, shared app-services, local SQLite persistence, and the framework-independent agent core.
  • Consolidated BOM and PCB review presentation and simplified tool status UI.
  • Removed the legacy CAD compiler pipeline.