DevBlog 2026 week 29 - Platform
Platform and preparing for the closed beta
We started to prepare for the closed beta. So most of our changes were either about increasing stability, or went directly into the closed source.
UI/UX/Navigation reworks
One big chunk of changes to make the whole site look better. We added light/dark mode, because everybody has an opinion about that.
Navigation
Added a footer.
We added a public project search part, and we also show the public projects on the “front page”.
Added some breadcrumbs to make the navigation easier.
We fixed the file -> quit option inside the editor to navigate us back to the project. Fixed the standalone app to be able to navigate back to the platform.
Settings
We made the project creation smoother, made a project settings page.
Added the team storage usage meters, and made the team settings smoother to use.
Docs
We added an option to add a readme to your project, and you can edit and view it right on the project page.
Admin stuff
We made some helper UIs so we can handle registered users more easily, and give them access and pro.
We also added some management pages to be able to track what’s happening inside our job queues, and if we have any “drift” in the docs (see below).
Libs
We reworked the lib handling a bit (again). We worked a lot on the ingest pipeline so you only need to paste a github/gitlab url, and in the background we create a “community” lib from it.
Sources became first class, so if you ingest a git repo with 10 symbol and 8 footprint libs, it will be possible to add them to your team with one click as a “group”.
We also made it a bit easier to “pin” the libs to your team, and to find public libs in our system. This will still need a lot of love, but it is probably okay for a beta.
Discord
We created a project specific discord server, where we will start to build a community. If you are interested in the product, or just want to chat about it, just join in: discord.gg/ybhqJxjR3E
Infrastructure
Libs and background tasks
We made the ingest pipeline more robust, fixed some bugs where some tasks could clog the pipeline, or the pipeline itself could stop working.
Also, we have background tasks (ERC, DRC, file validity check), which get a separate worker pool, so ingesting a lib will not bottleneck other features.
Security
We added server-enforced read-only rooms, and viewer edit gates.
We ran a smaller audit, where we tried to find implementation problems from a security perspective. We only found a few edge-cases that could potentially be used to do some things, but they were negligible, and we fixed them anyway.
Self healing documents
In theory when we merge ydoc changes we are able to produce non-valid kicad documents. What we do now is check every now and then in the live sessions if the current ydoc on the server room is kicad-valid or not. If it is valid, we mark that state as known-good. If it is invalid, we try to find the problem between the valid and invalid state, and undo the changes that made the file invalid. In theory we will never need to use this, but in practice it’s a good countermeasure for bugs!
All of the uploaded files go through a “resave”, where we upgrade them to the latest kicad format.
Drift handling
We reworked the logic that tries to find “drifts” between our ydoc representation and our editor representation.
In theory if our implementation has flaws, the editor file and the ydoc file could potentially drift apart. We are doing a check every now and then, and if we find a drift, we flag it at our backend. We had some problems that even when there were no drifts we pushed a drift report, and we also fixed the UI so we can spot problems more easily.
Editor
Circuit sim
Circuit simulator (ngspice) works in WASM! The eeschema simulator runs in a lazy-loaded worker. Both XSPICE and CIDER work.
pcb <-> eeschema
We had a lot of fixes that look both small and huge at the same time. We made the symbol->footprint assign dialog actually open inside eeschema. The button where you can navigate between eeschema and pcbnew is actually working correctly, even if there is no pcb/schema file yet. The update pcb from schematic functionality got fixed.
With these we needed to rework the websocket rooms a bit, now they signal if the files are changed, so if somebody fixes the schema, and another user clicks on the update from schematic, it will update from the latest version and not an old one.
WebGL hardening
We fixed (and broke) some context recovery and flush, so we now render fewer black/stuck canvases.
Import settings from another project
For this to work, we needed to fix two things:
- We didn’t have a serialized “project settings” file, which we now have
- We had a wxwidgets problem where if we had more than one open dialog, sometimes the top dialog triggered the dialog below it
Both got fixed.
Collab and comment identity
We fixed the collab cursor and comment names to refer to the actual logged-in user.
Editor web features overlay
We started to use a lot of random overlay elements on top of the editor. We have the console bottom left, we have the attribution+version bottom right, and as we progressed we added a lot of random separated stuff to the top right. This week we added a work-in-progress menu to change the top right button group into a single icon, and hide the functionality in a toggleable menu. This icon is also drag-and-droppable, so if it’s on top of something you can move it out of the way.