Skip to content

Switch Bay 0.13.2: Update covers okstratr and restarts updated skills - #15

Merged
benjsmith merged 5 commits into
mainfrom
feat/ce-1.9.1-and-skill-updates
Oct 8, 2026
Merged

benjsmith merged 5 commits into
mainfrom
feat/ce-1.9.1-and-skill-updates

Conversation

@benjsmith

Copy link
Copy Markdown
Owner

Switch Bay 0.13.2.

Settings → Update now covers okstratr. Update already handled Switch Bay, curiosity-engine and curiosity-merge. It now also updates an installed okstratr, using the method that matches how it was installed:

Install How it's found How Update applies it
git checkout editable install, the contrib/setup.sh PYTHONPATH wrapper, or a skill dir inside the repo fetch tags, then check out or fast-forward to the release tag (dirty trees and diverged branches are skipped)
uv tool the CLI's interpreter lives under uv/tools/ (or UV_TOOL_DIR) uv tool install --force "okstratr @ git+https://github.com/benjsmith/okstratr@<tag>"
pip any other Python env python -m pip install --upgrade …@<tag>, or uv pip install --python … if that env has no pip
unknown editable install outside git, or only the skill text reported and skipped, with "update from a terminal"
absent — skipped as "not installed"

Detection starts from the same okstratr CLI that Switch Bay starts. Its interpreter is checked for the package version and direct_url.json, so the update lands on the copy that actually runs. After a uv or pip install, the version is read again, and the update counts as failed if it didn't move.

Updated skills restart on the new release. After curiosity-engine updates, the CE viewer bundle is rebuilt and the viewer stopped. After okstratr updates, its serve process is stopped. When the daemon restarts, it starts both on the new code. Before this, the supervisors saw a healthy child and kept the old process running.

Per-component result. The Update toast now shows one line per component: updated from → to, up to date, not installed, skipped with the reason, or failed with the error.

Policy: nothing changes. in_app_update: false still returns 403 for both /api/update/check and /api/update, and updates.include_skills: false skips every skill, okstratr included. Both are now covered by tests.

The CHANGELOG states that this release works with curiosity-engine 1.9.2, curiosity-merge 0.8.4 and okstratr 0.2.0. Switch Bay doesn't pin skill versions anywhere else. Update tracks each repo's latest GitHub release. The 0.13.2 entry also covers the upload dialog from #14.

Tests: tests/unit/test_updater.py mocks each skill and install mode: shebang, sh-exec and setup-wrapper parsing; git, uv-tool, pip, unknown and absent detection; and uv, pip and uv-pip apply with argv checks. It also covers CE git and CM npx routing, the child restart after an update (and none after a failed one), the include_skills skip, and the 403 for both endpoints. An autouse fixture keeps the existing tests away from whatever okstratr is installed on the machine running them.

Settings -> Update now covers okstratr alongside Switch Bay, curiosity-engine
and curiosity-merge. okstratr's install source is detected from the CLI
Switch Bay spawns: a git checkout (editable install or setup.sh wrapper)
moves to the release tag, a uv tool is reinstalled with uv tool install,
any other Python env with pip (or uv pip when pip is absent). Unknown
sources are reported and skipped; absent installs are left alone.

After curiosity-engine or okstratr update, the supervised child is stopped
(CE's viewer bundle rebuilt first) so the restarted daemon serves the new
release. The update toast lists a line per component.

Signed-off-by: benjsmith <benjamincharlessmith@gmail.com>
Signed-off-by: benjsmith <benjamincharlessmith@gmail.com>
Signed-off-by: benjsmith <benjamincharlessmith@gmail.com>
Signed-off-by: benjsmith <benjamincharlessmith@gmail.com>
Signed-off-by: benjsmith <benjamincharlessmith@gmail.com>
@benjsmith
benjsmith merged commit 78a5c5a into main Oct 8, 2026
7 checks passed
@benjsmith
benjsmith deleted the feat/ce-1.9.1-and-skill-updates branch October 12, 2026 06:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant