chore(ci): add GitHub Actions workflows for ci, release-please, and calver#3
Merged
Merged
Conversation
Adds the three-screen MVP on top of @echohello/client:
- connect: manual ws:// endpoint + label, saved to AsyncStorage,
connects via SupaplaneClient
- sessions: workspace list grouped by freshness, tap to drill in
- session: transcript + composer (send/abort/start) bound to
ClientCommand wire types
Shared infrastructure:
- zustand connection-store: single SupaplaneClient instance,
status, workspaces, sessions, per-session event buffer
- AsyncStorage wrapper (v3 API: setMany/removeMany) for the
saved endpoint and TOFU-pinned server fingerprint
- dark theme tokens, Button, TextField, ConnectionBanner
Bundler plumbing: metro.config.cjs with explicit watchFolders
and nodeModulesPaths so Bun's hoisting doesn't trip the
resolver on a monorepo root.
Co-authored-by: opencode <opencode@echohello.dev>
Desktop build wiring:
- packages/desktop/tsconfig.build.json emits ESM to dist/
- packages/desktop/package.json: dev now runs tsc -> electron
- main.js (dist) replaces main.ts as the package entry, and
preload.js resolves to the dist sibling
- @echohello/server and @echohello/protocol exports point at
dist/ so Electron's Node can resolve them. Run
'bun run build:server' (or 'bun run build') before
'desktop dev'.
Dev port scheme (avoiding Paseo + Vite + Metro defaults):
- Daemon listenPort: 6767 -> 17687 (IANA-sparse range,
visually echoes 6767)
- Vite port: 5173 -> 5179 (adjacent to Vite default so it
reads as 'the Supaplane Vite port')
- vite.config.ts reads SUPAPLANE_DAEMON_PORT and VITE_PORT
envs; defaults updated
- AGENTS.md + docs/development.md updated to reflect the
new ports
Server hygiene:
- daemon-keypair.ts: replace require('node:crypto') with
a top-level import so it builds cleanly to ESM
Co-authored-by: opencode <opencode@echohello.dev>
…alver Modeled on the echohello-dev/pidex workflow structure: - ci.yml: lint + typecheck + vitest + build, with an 'all' gate job that fails when any step fails. Pinned action SHAs match pidex so versions stay aligned across repos. - release-please.yml: drives conventional-commit releases off the existing release-please-config.json (calver-only wouldn't suit the workspace layout). - calver-release.yml: sidecar calver tag-on-main pipeline, kept because Supaplane still wants a date-stamped release artefact visible at the repo root independent of release-please's release PRs. Co-authored-by: opencode-agent <hello@sst.dev>
Connection-offer.test.ts was asserting the encoder maps to app.supaplane.run, but the encoder (and every other reference in the repo, including the comment on encodeOfferToFragmentUrl itself) uses app.supaplane.com. Fix the assertion to match. Also hoist vitest to the root devDependencies so `bun run test` can resolve `vitest/config` without needing bunx to fetch a copy that won't find the local config. The CI workflow depends on the root test command running green. Co-authored-by: opencode-agent <hello@sst.dev>
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.
Summary
allgate that fails when any step fails (modeled on echohello-dev/pidex's ci.yml structure).release-please-config.json. Calver-only wouldn't suit the workspace layout, so this stays primary.connection-offer.test.tstypo (supaplane.run→supaplane.com) and vitest hoisted to root devDeps sobun run testresolvesvitest/configfrom the root CI step.Consequences
YYYY.MM.DD[-N]release on every push to main. Both run off push-to-main and havecontents: write.Testing
Local (bun + mise):
✓ lint — 13 warnings, 0 errors
✓ typecheck — all packages
✓ test — 6 files, 23 tests passed
✓ build — protocol + client + server + cli
CI on PR will run the same checks on Ubuntu.
Co-authored-by: opencode-agent hello@sst.dev