Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
e645719
feat: embed native web readers on Linux and Windows
ymote Oct 7, 2026
3f7dcbf
fix: complete Linux entry and embedded browser runtime requirements
ymote Oct 7, 2026
86d0097
docs: state native browser dialog policy limits
ymote Oct 7, 2026
c184e96
ci: reuse release browser artifacts for policy checks
ymote Oct 7, 2026
288a3d4
test: use Windows software graphics on GPU-less browser runners
ymote Oct 7, 2026
2f6d822
fix: preserve embedded readers across blocked frames and page updates
ymote Oct 7, 2026
9f64448
test: verify native messaging denial and page-requested close
ymote Oct 7, 2026
9bc64d1
test: retain native policy evidence for messaging probe failures
ymote Oct 7, 2026
bab0939
test: collect safe lifecycle evidence while retaining security failures
ymote Oct 7, 2026
d27661d
test: calibrate Windows browser message observer in isolated controller
ymote Oct 7, 2026
1c41815
test: verify native message non-delivery with a calibrated observer
ymote Oct 7, 2026
b169449
Merge host API CI evidence isolation fix
ymote Oct 7, 2026
df71e4d
Merge main and verify browser overlay on the current runtime
ymote Oct 8, 2026
0ac32e2
ci: seal bounded privacy-failure diagnostics for source tracing
ymote Oct 8, 2026
eff3d33
test: tolerate brief Windows browser command file collisions
ymote Oct 8, 2026
de25c13
fix: distinguish adjacent public Rinx source paths from home directories
ymote Oct 8, 2026
daf460f
Merge main after the Wasm host integration
ymote Oct 8, 2026
37185f3
Merge remote-tracking branch 'origin/main' into feat/desktop-embedded…
ymote Oct 8, 2026
9f8ce11
fix: recognize proven Mail literal seam in release privacy scan
ymote Oct 8, 2026
58b550c
test: run signed host API acceptance on Android
ymote Oct 8, 2026
3ac6261
test: exercise native Windows OAuth credential storage
ymote Oct 8, 2026
f6a3104
Pin App Hub developer admission and media policy fixes
ymote Oct 8, 2026
ea55ded
test: exercise native backend login with real desktop browsers
ymote Oct 8, 2026
e976557
fix: expose supported desktop account methods in runtime discovery
ymote Oct 8, 2026
3626c37
fix(wasm): isolate invocations and revoke stale work
ymote Oct 8, 2026
43bad66
Move Wasm admission off the UI thread and retain worker slots through…
ymote Oct 8, 2026
723b202
test: keep backend login status visible on short desktop viewports
ymote Oct 8, 2026
a400c22
Merge remote-tracking branch 'origin/main' into chore/developer-host-…
ymote Oct 8, 2026
33ea237
Route shell catalog consumers through the selected trust channel
ymote Oct 8, 2026
bb4c2b6
Apply verified catalog sequence floor to agents and Glance
ymote Oct 8, 2026
9b4bc7d
Record native Windows backend and Linux package acceptance
ymote Oct 8, 2026
4848268
Preserve raw native response JSON keys and add reproducible Wasm phon…
ymote Oct 8, 2026
065fd5f
test(android): record reproducible raw-response Wasm acceptance
ymote Oct 8, 2026
bb336a8
test(wasm): use actual native fixture capture in listing
ymote Oct 8, 2026
16cc033
Merge current main with OctosCode into platform integration
ymote Oct 8, 2026
63b6149
Merge reviewed Wasm isolation hardening into combined host integration
ymote Oct 8, 2026
32ec9c5
Merge commit '63b61496488a92bea0bf0630967c408b5133c396' into chore/de…
ymote Oct 8, 2026
1b60063
Merge remote-tracking branch 'origin/main' into chore/developer-host-…
ymote Oct 8, 2026
5607e90
Integrate GitHub publisher verification and default authenticated cat…
ymote Oct 8, 2026
8afcf35
Fix Android acceptance catalog and host crypto build setup
ymote Oct 8, 2026
5e1a841
fix: bind release scan fixture exceptions to public source digests
ymote Oct 8, 2026
6d53856
Merge current main documentation into the compatible host candidate
ymote Oct 8, 2026
db25075
Clarify separate macOS and Android host API acceptance scopes
ymote Oct 8, 2026
72d4d4c
Scan AppImages without executing release artifacts
ymote Oct 8, 2026
0edd71b
fix: pin verified mounted-card host for the release candidate
ymote Oct 8, 2026
128b052
Merge remote-tracking branch 'origin/main' into chore/developer-host-…
ymote Oct 8, 2026
933abbc
Merge remote-tracking branch 'origin/main' into chore/rc1-integration
ymote Oct 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ OCTOSENSE_SYSTEM_APPS = { value = "desktop/system-apps.json", relative = true }
# The locked aws-lc-sys supports its CC builder on Android arm64. Use the
# installed NDK Clang directly; no additional CMake installation is needed.
AWS_LC_SYS_CMAKE_BUILDER_aarch64_linux_android = "0"
# The Android packager also forces its global CMake setting into host-side
# bundle validation dependencies. On Apple arm64, use the supported CC builder
# there too. This changes only the build driver, not crypto or assembly features.
AWS_LC_SYS_CMAKE_BUILDER_aarch64_apple_darwin = "0"

# iOS gives the main thread a 1 MB stack, and the shell's widget tree is
# built on it through nested script_apply/script_new calls that overflowed
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ jobs:
shared-key: native-host-api
- name: Build the native acceptance host and pinned Hub CLI
run: |
# Fresh child processes catch native response keys missing from the string lookup table.
cargo test --manifest-path .sources/makepad/Cargo.toml -p makepad-widgets splash_host::tests
cargo build --locked --release -p octosense-shell --example host-api-lab --features acceptance-fixtures
cargo build --locked -p octosense-app-hub --bin hub
- name: Signed app tool calls a real OS permission API
Expand Down
77 changes: 77 additions & 0 deletions .github/workflows/embedded-browser.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Embedded browser

on:
pull_request:
paths:
- 'crates/browser-smoke/**'
- 'tools/browser-smoke.py'
- 'tools/browser_smoke_x11.py'
- 'tools/runtime-patches/**'
- 'runtime-patches.lock.json'
- 'native-runtime.lock.json'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/embedded-browser.yml'
push:
branches: [main]
paths:
- 'crates/browser-smoke/**'
- 'tools/browser-smoke.py'
- 'tools/browser_smoke_x11.py'
- 'tools/runtime-patches/**'
- 'runtime-patches.lock.json'
- 'native-runtime.lock.json'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/embedded-browser.yml'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: embedded-browser-${{ github.ref }}
cancel-in-progress: true

jobs:
windows:
runs-on: windows-2022
timeout-minutes: 40
env:
PYTHONUTF8: '1'
steps:
- name: Preserve runtime patch bytes
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- uses: dtolnay/rust-toolchain@stable
- name: Prepare the exact native runtime
run: python tools/setup.py
- uses: Swatinem/rust-cache@v2
with:
shared-key: embedded-browser-windows
cache-on-failure: true
- name: Build the native acceptance host
run: cargo build --locked --release -p octosense-browser-smoke
- name: Navigation and callback policy tests
run: cargo test --locked --release -p octosense-browser-smoke
- name: Real embedded WebView2 acceptance
# The runner must already provide WebView2. No installer, fake engine
# or external-browser fallback converts a missing runtime into a pass.
run: python tools/browser-smoke.py --binary target/release/octosense-browser-smoke.exe --out "$env:RUNNER_TEMP/browser-smoke" --require-snapshot --software-graphics
- name: Native fixture diagnostics on failure
if: failure()
run: |
$log = Join-Path $env:RUNNER_TEMP 'browser-smoke/native.log'
if (Test-Path $log) { Get-Content $log -Tail 100 }
- uses: actions/upload-artifact@v7
if: always()
with:
name: embedded-browser-windows
if-no-files-found: ignore
path: |
${{ runner.temp }}/browser-smoke/receipt.json
${{ runner.temp }}/browser-smoke/inspect-*.json
${{ runner.temp }}/browser-smoke/snapshot-*.png
4 changes: 4 additions & 0 deletions .github/workflows/phone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ jobs:
# The linked Terminal (the desktop's default): its AI tools reach
# the live emulator behind the module's TermTabs root.
cargo test --locked --features mobile-apps,app-terminal -p octosense-shell terminal
# The opt-in Wasm service must keep fresh per-call guest state and
# enforce resource, cancellation and current-admission boundaries.
cargo test --locked -p octosense-wasm-host
cargo test --locked --features mobile-apps,wasm-lab -p octosense-shell wasm_service::tests
cargo test --locked -p makepad-widgets splash_policy
cargo test --locked -p makepad-script-std gate::tests
# The two-lane scenario (crates/shell/src/host_tools/scenario_tests.rs):
Expand Down
76 changes: 76 additions & 0 deletions .github/workflows/platform-vault.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Platform accounts

on:
pull_request:
paths:
- 'crates/oauth-service/**'
- 'crates/shell/examples/connected-app-host.rs'
- 'crates/shell/examples/connected-install.rs'
- 'crates/shell/examples/connected_support/**'
- 'tools/connected-e2e/backend_login.py'
- 'tools/connected-e2e/webdriver_browser.py'
- 'tools/connected-e2e/native.py'
- 'tools/connected-e2e/backend-login/**'
- 'tools/backend-login-fixture.py'
- 'Cargo.toml'
- 'Cargo.lock'
- 'native-runtime.lock.json'
- 'runtime-patches.lock.json'
- 'tools/runtime-patches/**'
- '.github/workflows/platform-vault.yml'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: platform-vault-${{ github.ref }}
cancel-in-progress: true

jobs:
windows:
runs-on: windows-2022
timeout-minutes: 55
env:
PYTHONUTF8: '1'
MAKEPAD_D3D11_WARP: '1'
steps:
- name: Preserve runtime patch bytes
run: git config --global core.autocrlf false
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- uses: dtolnay/rust-toolchain@stable
- run: python tools/setup.py
- uses: Swatinem/rust-cache@v2
with:
shared-key: embedded-browser-windows
cache-on-failure: true
- name: Actual Windows Credential Manager lifecycle
# A fresh synthetic profile on a disposable runner. Missing/unusable
# native credentials are a failure, never replaced by a file vault.
# This checks storage/revocation, not provider login or user approval.
run: cargo test --locked --release -p octosense-oauth-service --features host host_vault_acceptance::platform_vault_persists_across_reopen_without_plaintext_credentials -- --ignored --exact --nocapture
- name: Build real connected-app host and signed installer
run: |
cargo build --locked --release -p octosense-shell --features acceptance-fixtures --example connected-app-host --example connected-install
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
cargo build --locked --release -p octosense-app-hub --bin hub
- name: Browser automation client only
# Use the runner's existing Edge browser. No downloaded browser engine,
# developer profile, provider account, or credential injection.
run: python -m pip install 'playwright==1.55.0'
- name: Actual synthetic backend browser and callback
run: |
$edge = Join-Path ${env:ProgramFiles(x86)} 'Microsoft/Edge/Application/msedge.exe'
if (-not (Test-Path $edge)) { throw 'The runner must already provide Edge' }
python tools/connected-e2e/backend_login.py --binary target/release/examples/connected-app-host.exe --installer target/release/examples/connected-install.exe --hub target/release/hub.exe --chrome "$edge" --out "$env:RUNNER_TEMP/backend-login"
- uses: actions/upload-artifact@v7
if: always()
with:
name: windows-backend-account-receipt
if-no-files-found: ignore
# Never upload the whole private directory: it contains OAuth URLs,
# fictional tokens and raw failure diagnostics.
path: ${{ runner.temp }}/backend-login/receipt.json
13 changes: 11 additions & 2 deletions .github/workflows/release-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ on:
- 'desktop/packaging/**'
- 'desktop/scripts/package.py'
- 'tools/release-scan.py'
- 'tools/release-scan-public-assets.json'
- 'tools/test_release_scan.py'
- 'tools/fixtures/release-scan/**'
- 'tools/kernel-artifact.py'
- '.github/workflows/release-desktop.yml'
workflow_dispatch:
Expand Down Expand Up @@ -172,7 +175,7 @@ jobs:
sudo apt-get install -y --no-install-recommends pkg-config libssl-dev libx11-dev libxcursor-dev \
libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev \
libasound2-dev libpulse-dev libdbus-1-dev libudev-dev libdrm-dev libgbm-dev libva-dev dpkg-dev file \
desktop-file-utils libfuse2
desktop-file-utils libfuse2 squashfs-tools
- name: Install cargo-packager
run: cargo install cargo-packager --locked --version 0.11.8
- name: Neutral build paths
Expand Down Expand Up @@ -405,7 +408,6 @@ jobs:
contents: write
env:
TAG: ${{ needs.plan.outputs.tag }}
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
Expand All @@ -415,6 +417,7 @@ jobs:
persist-credentials: false
- name: HEAD is the tag's commit
env:
GH_TOKEN: ${{ github.token }}
WANT: ${{ needs.plan.outputs.commit }}
run: |
head=$(git rev-parse HEAD)
Expand All @@ -441,6 +444,10 @@ jobs:
cd packages
sha256sum -- * | sort -k2 > SHA256SUMS
cat SHA256SUMS
- name: Install the non-executing AppImage extractor
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends squashfs-tools
- name: Scan again what is attached
env:
RELEASE_SCAN_EXTRA: ${{ secrets.RELEASE_SCAN_EXTRA }}
Expand All @@ -449,6 +456,8 @@ jobs:
# before signing, and the same app is in the .app.zip scanned now.
python3 tools/release-scan.py --dmg-bytes-only packages/*
- name: Attach to the tag's draft release
env:
GH_TOKEN: ${{ github.token }}
run: |
version="${TAG#desktop-v}"
if gh release view "$TAG" > /dev/null 2>&1; then
Expand Down
Loading
Loading