Move connection and developer controls under Advanced, show connected provider names, remove /models copy, and hide workspace Advanced navigation unless developer mode is enabled.
Apply the same token-based link parsing to markdown text nodes so plain filenames and relative paths render as clickable links in agent responses, not only in plain-text fallback mode.
Treat plain filenames like citizenship_status.txt as workspace-relative file links while filtering likely domain-like tokens to reduce false positives.
Session text and markdown file links now resolve dot-relative paths against the active workspace while tightening path detection to avoid false positives like bare slash-only tokens.
* fix(desktop): suppress unused variable warnings in manager modules
Prefix unused `child` bindings with underscore in engine and openwork_server
managers to silence Rust compiler warnings.
* refactor(app): remove `as any` casts with typed SDK helpers
Create lib/opencode-session.ts that wraps OpenCode SDK session operations
(abort, revert, unrevert, shell, command listing) with proper types.
Replace all `(c.session as any).abort/revert/unrevert` and
`(c.command as any).list` calls in app.tsx with the typed helpers.
The SDK v2 already exposes these methods with full type definitions —
the casts were unnecessary and bypassed type safety on critical API paths.
* refactor(app): extract OpenWork server connection store
Create context/openwork-server.ts that encapsulates all OpenWork server
connection state: 15 signals, 6 polling effects, derived memos for
baseUrl/auth/client, and the health check helper.
This is a standalone module ready to replace the corresponding state in
app.tsx. It follows the same factory pattern as createSessionStore and
createExtensionsStore.
* feat(app): add safe execution utilities for error handling
Create lib/safe-run.ts with safeAsync, safeSync, and fireAndForget
helpers that replace bare `catch {}` blocks. Errors are logged in
development mode and silently swallowed in production.
This provides a migration path for the ~50 silent catch blocks.
* test(server): add unit tests for validators, utils, and token service
Add 41 new tests across 3 test files:
- validators.test.ts: sanitizeCommandName, validateCommandName,
validateMcpName, validateSkillName, validateMcpConfig (22 tests)
- utils.test.ts: hashToken, shortId, parseList, ensureDir/exists (10 tests)
- tokens.test.ts: TokenService CRUD, scope resolution, revocation (9 tests)
Total server test count: 48 (from 7 previously).
---------
Co-authored-by: Benjamin Shafii <benjamin.shafii@gmail.com>
Remove automatic redirect and make the founder call the primary explicit action. Update thank-you copy to clear 7-day hosted access ETA and preserve paid-customer Cal context.
Update /starter-success to send users directly to Cal and include paid-customer context in booking query params. Keep a visible fallback CTA and thank-you/ETA copy on page load.
Add /starter-success with a polished thank-you experience, one-week hosted launch ETA, and onboarding CTA while keeping existing OpenWork landing visual style.
* Initial plan
* Add ARM64 build support to workflows and AUR packaging
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Fix: Add noextract field update to AUR script
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Add comment explaining temporary SKIP checksum for ARM64
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Make cross-compilation tools conditional on runner architecture
Cross-compilation tools (gcc-aarch64-linux-gnu) are now only installed when actually cross-compiling (x86_64 → ARM64). Native ARM64 runners will use native compilation without these tools.
This enables flexible deployment:
- Default: Cross-compilation on ubuntu-22.04 (free tier)
- Optional: Native compilation on ubuntu-*-arm64 or self-hosted ARM64 runners
The workflow auto-detects via runner.arch context.
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Remove cross-compilation tools installation for native ARM64 runners
Since we're running on native ARM64 runners, cross-compilation tools are not needed. The native toolchain will be used directly for ARM64 builds.
This simplifies the workflow and improves build performance by removing unnecessary package installation.
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Refactor: Extract SHA256 checksum calculation to reusable function
Eliminates code duplication by creating a single compute_sha256() function
that is called twice, instead of duplicating the Python code block.
Benefits:
- Reduced script from 132 to 123 lines (9 lines saved)
- Single source of truth for checksum logic
- Easier to maintain and modify in the future
- Follows DRY (Don't Repeat Yourself) principle
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Fix: Update comment to use consistent terminology
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Replace Python SHA256 hashing with native sha256sum command
Simplifies the compute_sha256() function by replacing the Python implementation
with native bash sha256sum command, reducing complexity and improving performance.
Changes:
- Replaced 13-line Python function with 1-line sha256sum call
- Reduced script from 123 to 113 lines (10 lines saved)
- Eliminated Python interpreter startup overhead for hashing
- Maintains full compatibility with existing checksums
Benefits:
- Simpler, more idiomatic bash implementation
- Faster execution (no Python startup for hashing)
- Easier to read and maintain
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Remove compute_sha256 function and inline sha256sum usage
Eliminates the compute_sha256() wrapper function and directly inlines
sha256sum calls, making the code simpler and more transparent.
Changes:
- Removed function definition (lines 46-49)
- Inlined sha256sum calls directly where needed
- Reduced script from 113 to 108 lines (5 lines saved)
- Updated comment to reflect direct usage
Benefits:
- Simpler code with fewer abstractions
- More direct and transparent implementation
- Easier to understand at a glance
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
* Remove useless comments from update-aur.sh
* foo
* bar
* Bring back ARM64 cross-compilation tools
* Add Linux-ARM64-build-and-release branch to workflow
* wip
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: koubas <1354930+koubas@users.noreply.github.com>
Co-authored-by: Benjamin Shafii <benjamin.shafii@gmail.com>
Use a single sandbox create phase state machine so the modal stays in loading while provisioning and finalizing the first session. Prevent remote workspace registration from closing the modal early during sandbox creation.
Keep sandbox modal loading through session creation, improve sandbox labeling and diagnostics, and add a debug action to remove OpenWork Docker containers. Also mount/import host OpenCode config+auth data into sandbox workers so provider credentials are available.
Build x64 sidecars with Bun baseline targets so Control Chrome and server sidecars run on CPUs without AVX. Sanitize inherited Bun/Node DNS result-order flags and set a safe Bun DNS order before spawning OpenCode and sidecar processes to prevent startup exits.