Releases: PocketShell-io/pocketshell
Release list
validated-rc
What's Changed
- build: gate the APK signing-identity check in CI (#2638) by @alexeygrigorev in #2644
- Integrate #2630-#2633: Quiet redesign density, composer overlay, session nav, Google sign-in by @alexeygrigorev in #2645
- Revert #2645: emulator journey lane regression (D36) by @alexeygrigorev in #2649
- Rename launcher labels: debug "PocketShell Debug", release "PocketShell" by @alexeygrigorev in #2653
- Restore lean auto-forward resume on app foreground (#2654) by @alexeygrigorev in #2655
- Resume auto-forward from MainActivity.onStart (#2654) by @alexeygrigorev in #2656
Full Changelog: v0.5.4...validated-rc
v0.5.6
v0.5.6
Release correction
The v1.0.0 GitHub release and its APKs were published in error and have been withdrawn. v0.5.6 is the intended patch release. It is built from validated commit 81418987ac39d67d06f0985b37e1c818bdf262ad, a documentation-only correction after the prior release; the product source is unchanged. The v1.0.0 tag remains as versionCode history.
APKs
- Debug APK —
com.pocketshell.app, versionCode 102 - Release APK —
com.pocketshell.app.release, versionCode 102
SHA-256:
- Debug:
2994e0a48d6fdb690ba41f5a613ee0fc89b283591bee19cbd542512a6cfc1c67 - Release:
fef9121d80fe522cd87b4ec670cc4813ac43f0fba0755543938c55f22d0f17e0
Updating from withdrawn v1.0.0
If you installed the withdrawn v1.0.0 debug APK, the in-app updater may not offer v0.5.6 because it compares semantic version names. Download the v0.5.6 debug APK above and install it over the existing app. It retains the same application ID and debug signing certificate, and its Android versionCode increases from 101 to 102, so the update can install without uninstalling or removing app data.
v0.5.5
PocketShell 0.5.5
Highlights
- Auto-forward resume: enabled hosts' port-forwards come back when the app returns to the foreground (#2654)
- Release APKs now sign with a dedicated identity and install beside the debug build as
com.pocketshell.app.release(#2638) - Launcher labels renamed: debug = "PocketShell Debug", release = "PocketShell" (#2653)
- QR host import removed; host CLI extracted to PocketShell-io/pocketshell-cli (#2643)
Validation
- Emulator-only release validation: PASS on 7a519d6 (run 34702105778), nightly fault-verdict green on the same SHA
- Tested APK sha256: 6f44a8b7d26d0e413e173d33d58e1afe592c3b4868476cf09b6e68ccc710e896
- Artifacts:
release-emulator-validation-gha-383-1-20260912-152520on the validation run
Known issues (backlog)
v0.5.4
Highlights
- The Quiet redesign ships. Workspace-first layout, larger readable session and workspace labels, consistent sheets and dialogs, and one shared set of colors, shapes and icons across every screen.
- Sessions are aplexer-only. tmux is removed from the app and the CLI attach path; sessions use the bundled aplexer attach. Existing installs migrate their database automatically (the per-host tmuxInstalled setting is dropped by the schema migration).
- Fixed: starting a second default session in the same workspace silently did nothing — the name collision check compared against display names instead of session tags, so the host answered "already exists" and nothing appeared on screen.
Test and release-gate maintenance
- J14 drives the redesigned stop flow (session screen kebab instead of the removed workspace-row kebab); J17 tolerates system focus steals (launcher ANR) on its clipboard oracle.
- The kernel-level memory-cap proof (#2562) is restored after being dropped in the aplexer-only cleanup, and the release gate pins it again.
- The legacy-database migration proof expects the rebuilt hosts table (no pathOverride / tmuxInstalled), and the QR round-trip test no longer depends on host-specific Skia rendering.
- SshKeysViewModelTest no longer flakes on shared coroutines-test schedulers (Main, key store and Room all run inline on one scheduler).
Full Changelog: v0.5.3...v0.5.4
v0.5.3
What's Changed
- fix: stop listing dead aplexer records as attachable sessions by @alexeygrigorev in #2560
- terminal: palette as default scheme, clipboard callbacks, drop dead vendored patches by @alexeygrigorev in #2558
- fix: make a mutation's tree refresh authoritative, and fail loud on a worker-less
aby @alexeygrigorev in #2573 - test: run a real aplexer in the Docker agents fixture by @alexeygrigorev in #2575
- core-terminal: replace the vendored TerminalSession with a remote-only session by @alexeygrigorev in #2577
- ci: drop the NDK-retry machinery now that no module has a native build by @alexeygrigorev in #2585
- app2: session usage pill focuses on the session's aplexer-detected agent by @alexeygrigorev in #2587
- cli: pass aplexer's detected agent through sessions list, pin aplexer 0.1.4 by @alexeygrigorev in #2588
- fix: stop turning a finger drag into arrow keys on the alternate screen by @alexeygrigorev in #2589
- ci: select the app2 lanes for tools/pocketshell changes, which the fixture images copy by @alexeygrigorev in #2594
- test: let a journey enumerate real aplexer sessions in the agents fixture by @alexeygrigorev in #2595
- fix: cap aplexer-backed sessions with the same limit tmux sessions get by @alexeygrigorev in #2597
- test: bound the Compose frame spin so a slow host cannot hang the lane by @alexeygrigorev in #2599
- fix: stop the composer wedging in a fake recording state by @alexeygrigorev in #2601
Full Changelog: v0.5.2...v0.5.3
v0.5.2
What's Changed
- feat: desktop-style session tree (root → folder → session) by @alexeygrigorev in #2536
- fix: keep the terminal fixed under the keyboard by @alexeygrigorev in #2537
- feat: collapse usage cards until a compact row is tapped by @alexeygrigorev in #2539
- feat: restore GitHub Releases update check by @alexeygrigorev in #2538
- feat: restore Back on popped screens and Usage on the tree by @alexeygrigorev in #2540
- feat: stop a session from the tree kebab with confirm by @alexeygrigorev in #2541
- feat: restore Prompt Composer chrome and tuned Android dictation by @alexeygrigorev in #2542
- feat: ship aplexer with the CLI instead of a separate install by @alexeygrigorev in #2544
- fix: re-pin aplexer to 0.1.3 so a session being created cannot blank the tree by @alexeygrigorev in #2547
Full Changelog: v0.5.1...v0.5.2
v0.5.1
What's Changed
- fix: drop Share QR from the host kebab by @alexeygrigorev in #2524
- feat: restore engine and backend pickers on New session by @alexeygrigorev in #2525
- fix: wait after composer text before sending Enter by @alexeygrigorev in #2527
- feat: compact session bar with floating composer and hotkeys by @alexeygrigorev in #2528
Full Changelog: v0.5.0...v0.5.1
v0.5.0
What's Changed
- Full rewrite by @alexeygrigorev in #2480
- fix: J04 create-session oracle was asserting against dead placeholder route by @alexeygrigorev in #2484
- fix: bound waitForIdle in app2 journey harness so a device wedge fails fast by @alexeygrigorev in #2485
- fix: GraceService cross-journey FGS race by @alexeygrigorev in #2502
- fix: a failed or truncated port scan must not tear down live forwards by @alexeygrigorev in #2503
- fix: grace expiry misclassified as deliberate close; retry after it produces a dead terminal by @alexeygrigorev in #2504
- fix: composer draft can leak or be deleted across a session hand-off by @alexeygrigorev in #2508
- fix: wire the persisted grace-window setting into GraceCoordinator by @alexeygrigorev in #2506
- fix: port forwarding retried a permanently-broken host forever with no terminal state by @alexeygrigorev in #2507
- ci: drop app2.yml workflow-level paths so the D37 cadence can start by @alexeygrigorev in #2510
- fix: wire a session-tree Ports action to Destination.Ports by @alexeygrigorev in #2511
- fix: wire Settings terminal text size into TerminalHostView by @alexeygrigorev in #2513
- ci: publish the app2 APK from the tag-triggered Build workflow by @alexeygrigorev in #2516
- fix: restore PocketShell launcher name and original icon by @alexeygrigorev in #2518
- fix: ship app2 under com.pocketshell.app so 0.5.0 upgrades v0.4.x by @alexeygrigorev in #2520
Full Changelog: v0.4.47...v0.5.0
v0.4.47
What's Changed
- Fix release gate: evidence-collection race plus 7 uncreditable ledger classes by @alexeygrigorev in #2436
- Resolve engine harness availability via login-shell PATH, not exec PATH by @alexeygrigorev in #2441
- Retry a transient engines-list exec failure before serving stale cache by @alexeygrigorev in #2442
- Fix session-list truth: multi-socket enumeration (#2377) + socket-aware attach (#2387) by @alexeygrigorev in #2443
- Bound HostSessionEnumerator with retries before failing the reconcile closed by @alexeygrigorev in #2447
- Fix host-key-trust gap blocking #2377/#2387's regression test by @alexeygrigorev in #2448
- Fix host-key-trust gap in Issue1952/Issue1953 integration tests by @alexeygrigorev in #2450
- Fix host-key-trust gap in 9 E2E emulator journey test fixtures by @alexeygrigorev in #2452
- Fix remaining host-key-trust gap across 121 androidTest fixtures by @alexeygrigorev in #2454
Full Changelog: v0.4.46...v0.4.47
v0.4.46
What's Changed
- Bump pinned quse to 0.0.15, wire up the go (OpenCode Go) usage provider by @alexeygrigorev in #2385
- Remove the NIGHTLY_FAULT_GATE_DISABLED release-gate escape hatch (D37) by @alexeygrigorev in #2382
- Fix session-create collision with an existing tmuxctl-managed session by @alexeygrigorev in #2392
- Fix vacuous network-fault gate: deterministic folder-row navigation by @alexeygrigorev in #2400
- Fix HostBootstrapScenarioSuiteTest: tag-derived versioning broke bootstrap detection by @alexeygrigorev in #2403
- Fix journey-lane failure classification and validated-rc tagging by @alexeygrigorev in #2407
- Fix post-recovery viewport capture: wait for Compose, not just the Looper by @alexeygrigorev in #2401
- test: stabilize fresh-transport timeout proof (#2359) by @alexeygrigorev in #2414
- Fix vacuous RideThrough.brief nightly gate: toxiproxy fixture defect by @alexeygrigorev in #2410
- Fix attach-timeout budget nesting: outer ceiling smaller than inner stages by @alexeygrigorev in #2411
- Revert "Fix attach-timeout budget nesting: outer ceiling smaller than inner stages (#2411)" by @alexeygrigorev in #2416
- Fix unsynchronized exec-command recorder racing in gateway test doubles by @alexeygrigorev in #2419
- Fix reconnect ladder re-targeting a dead session after a sibling open (#2415) by @alexeygrigorev in #2418
- Fix cross-test coroutine leak: RepoBrowserViewModel resumes on Main after teardown by @alexeygrigorev in #2420
- Fix intermittent AvdLockScriptTest flock-reclaim self-test race by @alexeygrigorev in #2425
- Fix #1876 reconcile chain: retry required exec on warm transport before eviction by @alexeygrigorev in #2427
- Fix attach-timeout budget nesting by shrinking the inner stage, not the ceiling by @alexeygrigorev in #2434
Full Changelog: v0.4.45...v0.4.46