Commit Graph

65 Commits

Author SHA1 Message Date
fa161247d3
Ci/vault secrets per platform release (#45)
* chore(security): add gitleaks config allowlisting vendored/test fixtures

Suppress false positives so `gitleaks detect` is clean:
- third_party/* (cargokit ships a public binary-verification key)
- workspace_management_unit_test.dart (obfuscated "token" fixture)
- gatewayruntime/runtime_test.go (hardcoded "device-1" test key pair)

Real leaked secrets are purged from history, not allowlisted.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(security): remove historical secret fixtures

* chore(release): bump build metadata for 1.1.5+2

* chore(release): bump version to 1.1.5+2

* chore(release): bump build metadata for 1.1.5+2

---------

Co-authored-by: Haitao Pan <manbuzhe2009@qq.com>

* ci(release): add TestFlight release matrix

* chore(release): bump version to 1.1.5+2

* chore(release): bump build metadata for 1.1.5+2

* ci(release): add TestFlight release matrix

---------

Co-authored-by: Haitao Pan <manbuzhe2009@qq.com>

* ci(release): load Vault secrets per-platform in build matrix

The build matrix loaded all 17 signing secrets in one shared block for
every platform. vault-action's ignoreNotFound only suppresses path-level
404s, not field-level "No match data" errors, so a single missing field
(e.g. APPLE_MAC_PROVISION_PROFILE_BASE64) failed every leg — including
linux/windows/android that need no Apple secrets.

Split the load into per-OS-family steps gated by matrix.platform:
- Apple (macos/ios): Apple cert + provisioning + keychain + export method
- Windows: WINDOWS_PFX_* + codesign subject
- Android: ANDROID_KEYSTORE_* + key alias/password
Linux requests nothing.

Also drop APP_STORE_CONNECT_* from the build matrix: only
testflight_upload.sh consumes them and it runs in the release job, which
loads them itself. The build matrix no longer depends on them.

Add shell: bash to the Export step (its `{ … } >> $GITHUB_ENV` brace
syntax is bash-only and would fail under the default pwsh on windows).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Haitao Pan <manbuzhe2009@qq.com>
2026-06-29 15:56:26 +08:00
d890acb661
feat: add one-line XWorkmate installer (#42)
Co-authored-by: Haitao Pan <manbuzhe2009@qq.com>
2026-06-29 15:48:49 +08:00
4ed10c8f2b ci: run desktop integration/patrol tests under xvfb (#22)
Headless Linux runners have no display, so 'flutter test integration_test'
fails to launch the GTK app ('The log reader stopped unexpectedly, or never
started'). Wrap integration/patrol layers in xvfb-run with a 24-bit screen
and install xvfb + mesa DRI driver for headless GL. macOS/local runs are
unaffected (no xvfb-run -> command runs directly).

Co-authored-by: Haitao Pan <haitao.pan@xworkmate.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 14:46:00 +08:00
Haitao Pan
afdc50cfd0 test: keep layered flutter tests aligned with repo 2026-06-26 19:39:14 +08:00
Haitao Pan
0cd8655cd0 fix: support macos validation on bash 3 2026-06-18 17:27:05 +08:00
Haitao Pan
4974ed8078 fix: allow unsigned macos CI packaging 2026-06-18 17:16:13 +08:00
Haitao Pan
046020d8d7 Remove Patrol from macOS package 2026-06-05 21:47:08 +08:00
Haitao Pan
a0aec84615 fix(ci): drop ripgrep dependency from check-no-app-ffi.sh
The Flutter verification lane runs on Ubuntu 22.04 without ripgrep
installed, so the FFI integration guard silently fell through and
printed 'No app-side Codex FFI integration artifacts found' on every
run. Replace rg with the POSIX grep -RInE that ships with the runner,
keep the same excludes (check-no-app-ffi.sh, Pods, ephemeral, build,
.dart_tool) and emit the actual offending matches so the gate fails
loudly when a forbidden reference reappears.
2026-06-05 19:29:39 +08:00
Haitao Pan
c98bce9dde fix(ci): keep macos/ios build lanes running when Apple signing secrets are missing
The release preflight used to set should_build_platform=false whenever any
Apple signing secret was unset, which silently skipped the entire macos dmg
and ios ipa lanes (build + upload gated on that flag). Result: releases only
shipped linux, windows and android artifacts even when the iOS/macOS lanes
were otherwise healthy.

Make the preflight always release the lane, but emit a :⚠️: and
annotate the skip_reason when a secret is missing. The iOS branch in
build_matrix_artifacts.sh now picks the signed vs unsigned build path based
on actual secret availability instead of should_release alone, so it falls
back to flutter build ios --no-codesign + zip Runner.app whenever a secret
is absent. package-flutter-mac-app.sh already handled the no-secret case
locally (ad-hoc codesign --sign -) and needs no change.

Behavior matrix:
  macos: secret present -> signed DMG; secret missing -> unsigned DMG
  ios:   secret present + release -> signed IPA
         secret present + non-release -> unsigned zip
         secret missing (any) -> unsigned zip
2026-06-05 18:39:25 +08:00
Haitao Pan
5f43ffa188 fix(ci): parse provider catalog and gateway providers from capabilities fallback 2026-06-03 17:11:12 +08:00
Haitao Pan
0fdac8aedd chore: prepare release v1.1.4 (app store compliance, remote desktop fixes, ci verification) 2026-06-03 15:52:44 +08:00
Haitao Pan
22a0376b00 fix: repair bridge login sync runtime state 2026-06-01 10:02:13 +08:00
Haitao Pan
8469537060 chore: prepare v1.1.3 release metadata 2026-05-28 13:20:57 +08:00
Haitao Pan
b22bdd396e Fix Apple preflight for main builds 2026-05-27 15:36:50 +08:00
Haitao Pan
524e5fcce3 Fix Apple preflight for main builds 2026-05-27 15:17:02 +08:00
Haitao Pan
d28f40e863 merge: implement flutter and go testing framework 2026-05-25 08:55:15 +08:00
Haitao Pan
1e0d79532b chore: add ios release verification assets 2026-05-25 08:54:48 +08:00
Haitao Pan
0b2dfffaa5 Use git HEAD for macOS build metadata 2026-05-18 16:08:14 +08:00
Haitao Pan
b9a9999291 chore: remove stale gateway settings and app ffi paths 2026-05-13 16:45:54 +08:00
Haitao Pan
2eb52a5bc3 Fail release preflight when Apple signing is missing 2026-05-12 18:30:22 +08:00
Haitao Pan
bb1ef629b2 ci: align remote provider contract with hermes 2026-05-03 19:40:35 +08:00
Haitao Pan
90aaa084b0 fix: use bridge session lifecycle methods 2026-04-24 10:09:20 +08:00
Haitao Pan
e608f71e5a chore: sync runtime protocol docs 2026-04-23 14:58:18 +08:00
Haitao Pan
512ad35f56 docs: add external api test scripts 2026-04-22 09:47:38 +08:00
Haitao Pan
81bb1adff0 fix(build): improve DMG styling stability and Finder volume discovery
- Add delay and explicit existence check for mounted volume before styling
- Implement resilient .app selector in AppleScript to handle naming mismatches
- Gracefully skip styling if volume is not visible to Finder
2026-04-19 15:21:58 +08:00
Haitao Pan
41163ec295 fix(build): improve macOS packaging reliability and clean up Rust FFI
- Implement 'inside-out' signing strategy in package-flutter-mac-app.sh to fix nested code validity errors
- Fix install_name of embedded FFI library to use @rpath for portability
- Remove manual 'cargo build' triggers from Makefile and integration scripts (externalize management)
- Clean up unused types and structs in Rust source (lib.rs and types.rs)
- Update architecture docs to reflect AcpBridgeServerModeConfig priority logic
2026-04-19 15:00:34 +08:00
Haitao Pan
dc95abbfb0 fix(build): resolve macOS packaging and installation failures
- Include target/release/libcodex_ffi.dylib in FFI framework search paths
- Embed libcodex_ffi.dylib directly into the macOS app bundle during packaging
- Embed xworkmate-go-core for non-App-Store local builds
- Ad-hoc re-sign the app bundle after modifying its contents
- Fix DMG path resolution in the installation script to handle filenames with spaces
2026-04-19 12:45:47 +08:00
Haitao Pan
a04b22ec4a refactor(storage): unify persistent storage with robust error handling and simplified secret management
- Consolidate settings, tasks, and audit storage into SettingsStore and SecretStore
- Implement PersistentWriteFailure for detailed error reporting across storage scopes
- Migrate secret retrieval to rely primarily on reference-based lookups
- Add ThemeMode persistence and AccountSyncState serialization
- Modernize SecureConfigStore with clear path resolution and support for UI state
- Streamline Rust build process by migrating from custom scripts to Makefile
- Remove redundant build_rust_ffi.sh and update integration scripts
2026-04-19 10:34:15 +08:00
Haitao Pan
f5b3d85a89 chore(bridge): update SSH inspection script to target xworkmate-bridge.svc.plus and Caddy config 2026-04-17 16:28:22 +08:00
Haitao Pan
78d59292a6 docs: add public API engineering docs 2026-04-16 13:54:33 +08:00
58b8e398f2 Merge pull request #12 from x-evor/codex/provider-selection-test-mainline
Codex/provider selection test mainline
2026-04-14 15:03:46 +08:00
Haitao Pan
1f977caee2 test: lock provider selection mainline contract 2026-04-14 13:56:58 +08:00
Haitao Pan
00beaf295d fix: repair cross-platform release CI gating 2026-04-14 13:48:04 +08:00
Haitao Pan
e7b09d235d feat(settings): refresh account sync, add about metadata, and rewrite task dialog modes 2026-04-13 18:02:30 +08:00
Haitao Pan
9e80740378 Validate macOS app bundle dependencies 2026-04-12 13:04:20 +08:00
Haitao Pan
5ab79c7398 Remove bundled app helper binaries 2026-04-11 14:45:50 +08:00
Haitao Pan
bae412132d Fix release pipeline verification and latest release tagging 2026-04-11 10:31:15 +08:00
Haitao Pan
4763e7853b chore: suppress noisy macos third-party build warnings 2026-04-11 09:28:00 +08:00
Haitao Pan
6f66fd44bc fix: validate staged mac app install 2026-04-11 09:22:00 +08:00
Haitao Pan
06117e9f0c merge: consolidate CI and thread binding branch work 2026-04-11 08:20:51 +08:00
Haitao Pan
e00d971049 test: add real env login chain checks 2026-04-10 10:18:46 +08:00
Haitao Pan
235d41c5fe fix: streamline gateway settings and mac packaging cleanup 2026-04-09 11:39:00 +08:00
Haitao Pan
0fb0ccdf17 refactor: remove web surface from xworkmate-app 2026-04-09 11:19:40 +08:00
Haitao Pan
e5b343ba3a Split ACP bridge into standalone repository 2026-04-09 09:49:52 +08:00
2f78eaa50b test: add layered Flutter+Go testing template and CI workflows 2026-04-08 13:11:53 +08:00
Haitao Pan
d3290b4ae4 Preserve macOS app signatures during packaging 2026-04-06 13:02:14 +08:00
Haitao Pan
e109e43d99 Bundle go-core helper with macOS app and drop external CLI fallback 2026-04-06 09:39:16 +08:00
Haitao Pan
c1e96a7f9b ci: add build-and-release watchdog 2026-04-05 17:50:23 +08:00
Haitao Pan
e845f91f9a add workflows: build-push-ghcr-images 2026-04-02 17:44:18 +08:00
Haitao Pan
88786e2310 Fix macOS archive symbols and packaging settings 2026-03-27 16:32:23 +08:00