Skip to content

feat(ci): add desktop smoke workflow#19

Merged
Astro-Han merged 4 commits into
devfrom
feat/desktop-smoke-build
Apr 17, 2026
Merged

feat(ci): add desktop smoke workflow#19
Astro-Han merged 4 commits into
devfrom
feat/desktop-smoke-build

Conversation

@Astro-Han

Copy link
Copy Markdown
Owner

Summary

  • Adds a dedicated desktop-smoke.yml workflow for minimal desktop packaging verification on PRs and dev pushes.
  • Keeps the check intentionally narrow: macos-14 only, arm64 only, no signing, notarization, publishing, or secrets.
  • Verifies the desktop path that daily code CI misses by building packages/desktop-electron, packaging a .app bundle via electron-builder --mac dir, and smoke-checking bundle existence, executable presence, and codesign --verify.
  • Adds a regression test that locks the workflow's PR-safety and smoke-build constraints.

Why

The current ci.yml is now stable for typecheck and unit coverage, but it still cannot catch the class of failures where code CI stays green while the desktop package path is already broken. This PR adds the smallest separate guardrail for that gap without expanding the scope of the existing daily CI or release workflow.

Test plan

  • bun test ./test/github/desktop-smoke-workflow.test.ts --timeout 30000
  • bunx prettier --check .github/workflows/desktop-smoke.yml packages/opencode/test/github/desktop-smoke-workflow.test.ts
  • Local smoke run of the workflow command chain on arm64 macOS:
    • cd packages/desktop-electron && OPENCODE_CHANNEL=dev bun run build
    • CSC_IDENTITY_AUTO_DISCOVERY=false OPENCODE_CHANNEL=dev npx electron-builder --mac dir --arm64 --publish never --config electron-builder.config.ts --config.mac.identity=- --config.mac.notarize=false
    • codesign --verify --deep --strict --verbose=2 dist/mac-arm64/PawWork\ Dev.app
  • GitHub Actions run for desktop-smoke.yml is green on this PR

@Astro-Han Astro-Han merged commit 3256844 into dev Apr 17, 2026
8 checks passed
@Astro-Han Astro-Han deleted the feat/desktop-smoke-build branch April 17, 2026 16:41
Astro-Han added a commit that referenced this pull request Apr 28, 2026
* feat(permission): config order fix + IntelliSense for tool keys

Sync from anomalyco/opencode v1.14.20..17701628bd:

* fix permission config order (#24222) — drop wildcard sort, preserve
  user key order so permission precedence matches the order users write
  in config (66f93035b0)
* core: full IntelliSense for all tool permission keys via InfoZod
  override (1b92c95425)

Carve-outs preserved:
- packages/opencode/src/permission/index.ts kept on PawWork (legacy
  task→agent alias, list() endpoint, refactored reply state machine)
- tests kept on HEAD (PawWork tests diverged after agent rename)
- packages/sdk/js + openapi.json kept on HEAD; will regenerate in
  Stage I

Refs anomalyco/opencode#24222 #24235
PawWork issue: #209 (PR5 of upstream sync)

* fix(provider): backport upstream provider fixes

DeepSeek (#24146 preserve empty reasoning_content, #24157 variants,
#24163 max support, #24180 ensure assistant reasoning), OpenRouter
sdk bump (#24435), Codex (#23925 model logic — already incorporated
into PawWork's shouldKeepCodexOAuthModel helper), Mistral Small
reasoning (#23735), Kimi variants (#23696), Google Vertex tool call
streaming default (#24573), OpenAI retry/oauth (#24063, #24212),
reasoning transforms split (#24574).

Carve-outs preserved:
- packages/opencode/src/plugin/codex.ts kept on PawWork (helper
  refactor of allowed model logic — upstream change is functionally
  equivalent)
- packages/opencode/package.json kept PawWork-specific workspace
  deps (@opencode-ai/core, @opencode-ai/util); only @openrouter
  bump applied

Refs anomalyco/opencode #23696 #23735 #23925 #24063 #24146 #24157
#24163 #24180 #24212 #24435 #24573 #24574
PawWork issue: #209

* fix(runtime): backport shell cwd + tool_output config schema

Functional changes from upstream batch (#23797 BOM, #23770 truncate
config, #23870 compaction, #19054 bare-repo, #24215 shell cwd):

* session/prompt.ts: shell invocations now pass cwd as positional arg
  ("$1") instead of capturing $PWD before sourcing shell init files
  (#24215)
* config/config.ts: add tool_output { max_lines, max_bytes } schema
  for user-configurable truncation thresholds (#23770)

Already incorporated in HEAD (no-op cherry-picks):
- BOM round-trip (Bom.syncFile already wired in edit/write/apply_patch)
- Project bare-repo cache (isBareRepo + readCachedProjectId(common)
  already in project.ts)

Deferred to Post-merge tool re-sync (#19):
- Truncate config wiring inside truncate.ts (namespace structure
  diverged; needs structural merge)
- Session compaction rewrite (#23870 SUMMARY_TEMPLATE/Turn/Tail
  redesign vs PawWork's anchored template)

Refs anomalyco/opencode #19054 #23770 #23797 #23870 #24215
PawWork issue: #209

* chore(sdk): regen types after permission/config schema updates

Stage I regen reflects:
- PermissionConfig gains explicit tool keys with intersection record
  type (Stage F: #24222 + #24235 IntelliSense)
- Config.tool_output { max_lines, max_bytes } block added
  (Stage G.2: #23770 truncation thresholds)

Refs: #209

* fix(upstream): address PR5 review feedback

* fix(upstream): address provider review feedback

* test(upstream): cover vertex anthropic streaming option

* fix(upstream): harden shell cwd wrapper
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