π¦ New version release - #605
Merged
Merged
Conversation
brentrager
enabled auto-merge (squash)
September 17, 2026 19:01
brentrager
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
September 17, 2026 19:22
4cf01d8 to
049be4f
Compare
brentrager
force-pushed
the
changeset-release/main
branch
from
September 17, 2026 19:29
049be4f to
57f4f32
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@smooai/smooth@0.51.0
Minor Changes
flow.close, and a running session closes the same way β the engine kills it first and the sheet says so before you confirm. The sheet now shows what it will destroy, not only what it will do: branch, uncommitted-file count and the pearl's title. Merged state stays uncached on purpose β the engine reveals it by refusing, and force is still offered only after that reason has been read. A refusal started outside the Inbox gets its own sheet instead of vanishing into the rail.Patch Changes
5bdab78: Notarization no longer throws away a good submission when the status poll blips.
notarize-and-staple.shusednotarytool submit --wait, which collapses "upload the artifact" and "poll until Apple finishes" into one call β so a transient network error during the poll fails the release while Apple is still happily processing the submission. That is exactly how the first SmoothFlow 0.2.3 publish died: the upload succeeded, the status request timed out (NSURLErrorDomain -1001), and a ~20-minute signed build was discarded holding a valid submission id. It now submits once, captures the id, and retries the wait against that id rather than resubmitting, then checksnotarytool infoforAcceptedβ becausewaitreturning successfully means Apple finished, not that it approved β and dumps the notary log on rejection. This matters more since th-9c3f4e: stapling the app as well as the DMG means two notarization round-trips per release, so twice the exposure to this flake.33bea47: SmoothFlow 0.2.3 β starting a session stops being paperwork. The New Session screen no longer demands a pearl id, a Jira key, or a worktree up front: pick a kind, type what you want done, hit Start, and SmoothFlow infers the rest from the prompt and the repo. Plain
claudeandcodexsessions you started yourself are adopted into the fleet instead of sitting outside it (th-c103c1, th-c103c1: zero-friction SmoothFlow sessions β infer the context, adopt plain harnessesΒ #594). Four more agent CLIs launch out of the box β aider, goose, crush, and cline β on top of a declarative scrape-rule system that replaces the hand-written per-harness pane parsers, so teaching SmoothFlow a new CLI is now a manifest edit rather than Rust (th-e77603, th-e77603: declarative scrape rules + aider/goose/crush/cline harnessesΒ #599). Also fixes aider dropping the first prompt: it needs a beat after its banner before the paste lands, and it now gets one (th-d2a1e4). th-2f31d8.5e5eea2:
install-release.shnow unregisters the bundles nested inside a stray SmoothFlow build, not just the outer.app. A debug build registers its own SparkleUpdater.appandSmoothFlowUITests-Runner.appas separate LaunchServices entries, and a singlelsregister -uon the outer bundle does not take them with it β so a machine that looked cleaned still carried rows pointing at deleted files. The matcher now covers anySmoothFlow*.apppath and excludes the official install by prefix, so/Applications/SmoothFlow.app's own nested Updater is deliberately left alone (unregistering it would break Sparkle on a healthy machine).install-release.test.shpins both directions, including a guard against the test's copy of the regex drifting from the real one. th-9c3f4e.de56803: SmoothFlow releases now staple the notarization ticket to the app, not just the DMG. A DMG's ticket and its app's ticket are separate tickets on separate artifacts, and Sparkle installs the app β so every release through 0.2.2 put a working copy of SmoothFlow in
/Applicationswith no ticket on it. Gatekeeper still let it run, but only by asking Apple over the network at first launch, which stalls or fails offline, behind a captive portal, or when Apple's notary service is slow.build-release.shnow notarizes and staples the app first, builds the DMG from the already-stapled app, and staples that too; the publish workflow validates both tickets against the artifact downloaded from the CDN rather than its own in-workflow copy. Newapps/smoothflow/scripts/install-release.shmakes "clean up stray copies and install the official signed build" a scripted release step: it unregisters every SmoothFlow bundle outside/Applications(lane debug builds accumulate there andopen -a SmoothFlowwill launch one), clears stale build trees, and installs the published DMG only if the app inside is stapled, signed by Smoo LLC, notarized, and free of non-system dylib links β refusing loudly instead of installing anything that fails. th-9c3f4e.99cc57f: SmoothFlow: tabs, directional splits, and a keyboard config pane (th-27baa4)
The surface area is now a stack of tabs, each holding a binary split tree
instead of a flat row of panes β so βD splits right, ββ§D splits down, ββ§β/ββ§β
split the other two ways, ββ₯arrows move focus between panes by geometry, ββ§β©
zooms without disturbing the layout, ββ₯= equalizes, and βT/βW/ββ§[/ββ§] work the
tabs. ββ§T opens a shell session in the focused session's worktree in a new tab.
βW closes the focused pane, terminal-style β the tab, then the window, collapse
when they empty (ββ§W still closes a whole tab). Because a pane is a view over an
engine-owned session, βW asks first when a live session is on screen, and the
alert offers both honest answers: close the view and leave the session running,
or end the session (destructive, and it says what that costs). Cancel is the
default button. Nothing is asked for an empty pane, a finished session, or a
shell sitting at a prompt, and Settings βΈ Terminal can turn the confirmation off
entirely.
Every shortcut is user-configurable. Settings βΈ Keyboard lists every action with
its binding, records a new one, flags conflicts and resets per-row or all; it
writes ~/.smooth/smoothflow/keybindings.toml, which you can also edit by hand.
Only overrides are stored, a bad line loses that line rather than the map, and
the menu bar is built from the keymap so a rebind moves the menu with it.
Two defaults changed (both rebindable): Steer All Working is ββ₯β©, freeing ββ§β©
for Zoom Pane as in every other terminal; the old untyped "Split Surface" is now
Split Right. See docs/Engineering/SmoothFlow-Keybindings.md.