Orbit v0.15.4 (Preview)
What changed
Three fixes, all from one person putting --dacpac-dir into a real CI pipeline. Each is a case of Orbit reporting something other than what it did.
daemon restart -c <other.yaml> no longer says it worked while ignoring the file. Restart brings the daemon back on the environment it is already serving — correct as a default, and how orbit update restarts without arguments. But it applied that to an explicit --config too, so a caller switching environments got "Orbit is ready" and the old one. It now refuses, and names the way across: orbit down, then orbit up -c <file>.
orbit daemon status reports the environment the daemon is serving, not one derived locally. Inside a branch that already knew the daemon was alive, it resolved a config path from the current directory — answering "what would I start" to a question about what is running. Together with the restart defect, four surfaces gave three answers for one environment, and the only correct one had no command that could change it.
instance clean no longer leaves an empty home behind. Clean creates the directory itself while addressing the daemon, and the daemon it stops can touch the path on the way out, so the directory could exist again by the time clean returned. It is swept afterwards, and only when empty.
--dacpac-dir '' is now an error rather than a silent fallback to building. An empty argument read as "flag omitted", so publish built from source and failed on project paths that do not exist on that machine — an error naming the config when the argument was the mistake. CI that signals "no artifacts this run" by clearing a variable hits this exactly.
Why it matters
None of these change what Orbit does. They change what it says it did, which is the part a user acts on.
The instance defect had a user following the tool's own suggested next command twice before concluding the tool was wrong rather than their typing. That is the expensive failure: not the wasted minutes, but that the error pointed confidently at the wrong thing. The same shape appears in all four — a config that was never in play, a name no command accepts, a home that reports removed, an argument blamed on the config.
Upgrade notes
No configuration changes. daemon restart with an explicit --config naming a different environment than the running one now fails instead of quietly restarting the old one; scripts relying on the previous behaviour should drop the flag, which restarts the running environment as before.