Unified Dev 0.12.0 ships the seam, not the integrations
Linear and Jira landed in the same release. That is the boring half. The interesting half is the decision underneath them.
Unified Dev 0.12.0 shipped today with 30 features, 35 fixes, 8 refactors, and 6 perf wins. The headline you will see is “Linear and Jira integrations”. That is not the headline I would write.
The actual move in this release is that a tracker is no longer a vendor. A tracker is a contract. Linear and Jira are two implementations of the same contract. If we ship Asana next, the product surface does not change.
One contract, every list call
Until 0.12.0, the app carried per-vendor adapters. Each new tracker meant a new module, a new query layer, a new mapping pass, and a new set of bugs to chase. The trio had real costs: the UI had to learn each vendor’s vocabulary, the sync loop had to special-case each one, and “switch your tracker” was a roadmap line nobody believed.
0.12.0 collapses that into a single tracker contract with one verb set: list, create, update, close, comment. The drivers know about Linear and Jira. The rest of the app does not. Issue lists, kanban columns, filters, mutations, sync, notifications all read the same shape regardless of provider.
The vendor protocols moved out of the codebase entirely. They live in omnitrack, an open source crate that carries GraphQL for Linear and REST for Jira. Unified Dev pulls it in and writes thin drivers that translate vendor types into our shape and back. Adding the next provider is a driver, not a quarter of work.
The hierarchy is the product
A contract alone does not make trackers interchangeable. The product model has to agree.
0.12.0 reshaped the hierarchy. An organization owns projects. A project owns repos. A repo owns sources. The source is the only place that knows it came from a vendor. Everything above it is yours.
That last line is what makes a swap free. Connect a Jira board and a GitHub repo to the same project repo, and Unified Dev treats them as one surface. Swap the Jira board for a Linear team next month and your issues, PR history, time tracking, and filters do not move. The provider changed. The repo did not.
The obvious counter
“Why not write a Linear app and ship it? Jira has a marketplace. Linear has an app directory. Pick a lane.”
Vendor lock-in is a feature for the vendor and a tax on you. Every per-vendor app you ship doubles the surface you have to keep alive when the vendor breaks their API or the customer churns. Unified Dev pays for the seam once. The next provider costs a weekend, not a quarter.
The line to remember
0.12.0 ships 30 features and 35 fixes. The one to remember is the contract. If your tracker is a contract, the next integration is a weekend.