Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4e63bed
fix(codex): update protocol and retain stream error diagnostics
killswitch-GUI Oct 18, 2026
c229164
feat(computer): add opt-in Windows desktop control
killswitch-GUI Oct 18, 2026
6a5a730
fix(computer): retain verified Windows root for capture helpers
killswitch-GUI Oct 18, 2026
e84d921
test(computer): trace native foreground eligibility
killswitch-GUI Oct 18, 2026
83e1f6f
test(computer): trace native input terminal receipts
killswitch-GUI Oct 18, 2026
8572c0c
test(computer): trace native control admission refusals
killswitch-GUI Oct 18, 2026
1dab1a4
fix(desktop): include computer tools in managed application grants
killswitch-GUI Oct 18, 2026
3337a92
fix(tools): accept attached search term prefixes
killswitch-GUI Oct 19, 2026
0bb3b9e
test(desktop): verify authenticated computer tool discovery
killswitch-GUI Oct 19, 2026
3cea322
security(dependencies): replace vulnerable desktop and credential bac…
killswitch-GUI Oct 19, 2026
fcd03c5
fix(computer): settle foreground activation and preserve input markers
killswitch-GUI Oct 19, 2026
2a4c18a
fix(browser): allow bounded slow metadata reads without disconnecting
killswitch-GUI Oct 19, 2026
2c824b4
fix(desktop): restore new-thread composer from inbox views
killswitch-GUI Oct 19, 2026
c3e4a41
feat(windows): expose read-only process job accounting
killswitch-GUI Oct 19, 2026
c8d82a8
feat(browser): package Windows preview and preserve agent views
killswitch-GUI Oct 19, 2026
8e750fd
chore: reconcile shared browser changes for computer control
killswitch-GUI Oct 19, 2026
6994da7
docs(release): prepare 0.11.8 preview 2 history
killswitch-GUI Oct 19, 2026
8e07db6
fix(release): recognize the Windows browser preview packager
killswitch-GUI Oct 19, 2026
fce4ec1
chore: reconcile browser release validation for computer control
killswitch-GUI Oct 19, 2026
5ad52fa
chore: reconcile browser validation and ARM64 build fixes
killswitch-GUI Oct 19, 2026
54bf5d6
ci(release): allow cold Intel macOS packaging to finish
killswitch-GUI Oct 19, 2026
23761f9
test(ci): validate bounded matrix timeout branches
killswitch-GUI Oct 19, 2026
523f54c
fix(desktop): keep native browser behind image previews
killswitch-GUI Oct 19, 2026
a81071d
fix(computer): enforce explicit operator control and explain failures
killswitch-GUI Oct 19, 2026
15a6ee7
fix(computer): narrow requested read counts to configured limits
killswitch-GUI Oct 19, 2026
0299cac
ci: allow cold Windows Desktop acceptance to finish
killswitch-GUI Oct 19, 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
2 changes: 1 addition & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ jobs:
uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c # master 2026-07-20; upstream has no releases
with:
toolchain: 1.96.0
components: rustfmt
components: rustfmt, clippy
- name: Enable shared compiler cache
id: sccache
continue-on-error: true
Expand Down
14 changes: 13 additions & 1 deletion .github/workflows/premerge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -464,11 +464,22 @@ jobs:
run: >-
cargo test --locked -p colossus-cli --test worker_smoke
--test windows_sandbox --test mcp_smoke --test release_install_smoke -- --nocapture
- name: Validate Windows computer protocol and compile native acceptance
id: computer_portable
continue-on-error: true
shell: pwsh
run: |
cargo test --locked --manifest-path native/computer/Cargo.toml --all-targets
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
cargo clippy --locked --manifest-path native/computer/Cargo.toml --all-targets --all-features -- -D warnings
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
cargo build --locked --manifest-path native/computer/Cargo.toml --features native-test-driver --examples
- name: Require every Windows runtime acceptance check
shell: bash
env:
CONTRACT_OUTCOME: ${{ steps.renderer_contracts.outcome }}
CODEX_AUTH_OUTCOME: ${{ steps.windows_codex_auth.outcome }}
COMPUTER_OUTCOME: ${{ steps.computer_portable.outcome }}
HOME_OUTCOME: ${{ steps.windows_home.outcome }}
NATIVE_OUTCOME: ${{ steps.windows_native.outcome }}
SDK_PATH_OUTCOME: ${{ steps.windows_sdk_path.outcome }}
Expand All @@ -486,6 +497,7 @@ jobs:
"windows-sdk-path=$SDK_PATH_OUTCOME" \
"windows-home=$HOME_OUTCOME" \
"windows-codex-auth=$CODEX_AUTH_OUTCOME" \
"windows-computer-protocol-and-build=$COMPUTER_OUTCOME" \
"worker-and-sandbox=$WORKER_OUTCOME"
do
if test "${result#*=}" != success; then
Expand All @@ -502,7 +514,7 @@ jobs:
if: needs.eligibility.result == 'success'
needs: eligibility
runs-on: windows-latest-l
timeout-minutes: 75
timeout-minutes: 90
env:
CARGO_INCREMENTAL: "0"
CARGO_TARGET_DIR: ${{ github.workspace }}\apps\desktop\src-tauri\target
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,8 @@ jobs:
environment:
name: ${{ needs.validate.outputs.publish_draft == 'true' && vars.SCCACHE_R2_ENABLED == 'true' && 'sccache-r2-write' || 'release-validation' }}
deployment: false
timeout-minutes: 60
# Cold Intel macOS native acceptance plus optimized compilation can exceed one hour.
timeout-minutes: ${{ matrix.target == 'x86_64-apple-darwin' && 90 || 60 }}
env:
SCCACHE_GHA_ENABLED: "true"
COLOSSUS_RELEASE_JOURNAL_KEY: "5555555555555555555555555555555555555555555555555555555555555555"
Expand Down
83 changes: 83 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,89 @@ include breaking changes while the public API is still settling.

## [Unreleased]

## [0.11.8-preview.2] - 2026-10-19

### Preview highlights

- Desktop browser views stay visible during agent actions and retain the completed
page for inspection, with clear control indicators and inline screenshot previews.
- Browser settings and guidance, agent inbox navigation, secure provider setup, and
model selection are improved.
- Opt-in Windows computer control adds observation-bound input for existing apps,
visible Pause/Stop controls, and window screenshots. It requires an interactive user
session and enabled workspace capability.
- Windows includes an explicitly labeled functional Chromium preview. Production
browser containment and automatic Desktop updates remain unavailable.

<!-- colossus:release-notes base=v0.11.8 -->

### Merged changes

#### Added

- **http:** add bounded redirects and Desktop settings ([#289](https://github.com/obscuritylabs/Colossus/pull/289))
- **ui:** unify web workspace management and standalone Goal mode ([#287](https://github.com/obscuritylabs/Colossus/pull/287))
- **agents:** add durable inboxes and A2A application edge ([#288](https://github.com/obscuritylabs/Colossus/pull/288))
- **models:** switch models and reasoning in Desktop, VS Code and TUI ([#295](https://github.com/obscuritylabs/Colossus/pull/295))
- **provider:** add native Anthropic Messages support ([#297](https://github.com/obscuritylabs/Colossus/pull/297))
- **vscode:** bundle and manage local runtimes in the sidebar ([#296](https://github.com/obscuritylabs/Colossus/pull/296))
- **images:** add local image viewing and activity previews ([#298](https://github.com/obscuritylabs/Colossus/pull/298))
- **browser:** connect owned Chromium hosts to Core and Desktop ([#290](https://github.com/obscuritylabs/Colossus/pull/290))
- **browser:** add runtime settings and bundled browser guidance ([637e25c](https://github.com/obscuritylabs/Colossus/commit/637e25ce8e326fb1c9b8e25d0c8ea3f7bd00cd71))
- **computer:** add opt-in Windows desktop control ([c229164](https://github.com/obscuritylabs/Colossus/commit/c229164951faf8203c309dada2f1b6249935908b))
- **windows:** expose read-only process job accounting ([c3e4a41](https://github.com/obscuritylabs/Colossus/commit/c3e4a4194b3729a3554b3a83a5989443d2273692))
- **windows:** expose read-only process job accounting ([8c3d266](https://github.com/obscuritylabs/Colossus/commit/8c3d266f84c8967a29c800430f5e6985b795ef20))
- **browser:** package Windows preview and preserve agent views ([c8d82a8](https://github.com/obscuritylabs/Colossus/commit/c8d82a825f4a2dd29bcbf99b30e7604f8b23a97a))
- **browser:** package Windows preview and preserve agent views ([004ea37](https://github.com/obscuritylabs/Colossus/commit/004ea37e916574ebe19438d5777e0289dd87e959))

#### Fixed

- **plugins:** avoid OCI packaging for local snapshots ([#293](https://github.com/obscuritylabs/Colossus/pull/293))
- **desktop:** apply access settings without redundant prompts ([#294](https://github.com/obscuritylabs/Colossus/pull/294))
- **browser:** preserve input gestures and agent viewer continuity ([b6c57f2](https://github.com/obscuritylabs/Colossus/commit/b6c57f23ddb3438253066e65bac75e4be0f33dd1))
- **browser:** polish capability settings presentation ([492935a](https://github.com/obscuritylabs/Colossus/commit/492935a47ae59728e106512a82858f6b57bd3b8e))
- **browser:** retain focus after inheriting settings ([5b39d62](https://github.com/obscuritylabs/Colossus/commit/5b39d62ff8597d71ffd4d9b963cc0a6e248c5904))
- **browser:** load public pages and reveal agent tabs ([9989d72](https://github.com/obscuritylabs/Colossus/commit/9989d72d8e93150cd8b807b538c5c0d17f2508c0))
- **desktop:** preserve browser views and clarify agent settings ([88cc3d1](https://github.com/obscuritylabs/Colossus/commit/88cc3d1847d27e08972b005a5bf1a4a250239dbe))
- **desktop:** harden credential labels and native acceptance fixtures ([b3cc106](https://github.com/obscuritylabs/Colossus/commit/b3cc106fcce290adbc229e014117a772e3a2f584))
- **desktop:** upgrade Tao to prevent Windows keyboard deadlocks ([e9a2b80](https://github.com/obscuritylabs/Colossus/commit/e9a2b8061f0e82cde8cb9fccdc15767fedb424bc))
- **browser:** retain completed views and show agent control ([7111d76](https://github.com/obscuritylabs/Colossus/commit/7111d768d954309054ea7afef776571291d2f464))
- **browser:** retain acknowledged leases during viewport recovery ([54ab8f3](https://github.com/obscuritylabs/Colossus/commit/54ab8f3759a7d7c5094c7620a1c4e0afa7e0607f))
- **browser:** retire expired network sessions with clear recovery ([46444f4](https://github.com/obscuritylabs/Colossus/commit/46444f44c298c9bf575d747c69606e3516e68492))
- **codex:** update protocol and retain stream error diagnostics ([4e63bed](https://github.com/obscuritylabs/Colossus/commit/4e63bed240ec22a8ab1a3cb4f10b930cb48524c9))
- **computer:** retain verified Windows root for capture helpers ([6a5a730](https://github.com/obscuritylabs/Colossus/commit/6a5a7307fb05cc790ae41aa46521dfa040b05eb5))
- **desktop:** include computer tools in managed application grants ([1dab1a4](https://github.com/obscuritylabs/Colossus/commit/1dab1a4d316e4ccbf5fcf17911d9a7ca8a1de128))
- **tools:** accept attached search term prefixes ([3337a92](https://github.com/obscuritylabs/Colossus/commit/3337a924de5a408b6816837c1f726b7b28c5bc87))
- **computer:** settle foreground activation and preserve input markers ([fcd03c5](https://github.com/obscuritylabs/Colossus/commit/fcd03c5f67e4be4ed8c9da77d52f261055400b6b))
- **browser:** allow bounded slow metadata reads without disconnecting ([2a4c18a](https://github.com/obscuritylabs/Colossus/commit/2a4c18a1a1400410c7179a356df9892ab682261b))
- **browser:** allow bounded slow metadata reads without disconnecting ([055a7c8](https://github.com/obscuritylabs/Colossus/commit/055a7c815807307272ae011e3726e59342e45c3d))
- **desktop:** restore new-thread composer from inbox views ([2c824b4](https://github.com/obscuritylabs/Colossus/commit/2c824b49ce8c800d41c8ac6db4a2e4de6390f99a))
- **desktop:** restore new-thread composer from inbox views ([ca16256](https://github.com/obscuritylabs/Colossus/commit/ca162568c9c8b784b907c9590b526a6e45e817d9))

#### Security

- **dependencies:** replace vulnerable desktop and credential backends ([3cea322](https://github.com/obscuritylabs/Colossus/commit/3cea3224e398e78848c2315a039f44b1f0201a46))
- **dependencies:** replace vulnerable desktop and credential backends ([dd3525a](https://github.com/obscuritylabs/Colossus/commit/dd3525ab58d1a17a6f74fb3db35cafb4455fa861))

#### Changed

- **storage:** seek Redb cursors and batch projection catch-up ([#286](https://github.com/obscuritylabs/Colossus/pull/286))

#### Maintenance

- **deps-dev:** update desktop and web Vitest to 4.1.11 ([#292](https://github.com/obscuritylabs/Colossus/pull/292))
- **browser:** import expiry test clock for native builds ([afa8a99](https://github.com/obscuritylabs/Colossus/commit/afa8a99e60f689e84e6dbc77c3088c143fc9be72))
- **computer:** trace native foreground eligibility ([e84d921](https://github.com/obscuritylabs/Colossus/commit/e84d9218cc411be051ebbab1daa8fea432147cb6))
- **computer:** trace native input terminal receipts ([83e1f6f](https://github.com/obscuritylabs/Colossus/commit/83e1f6f67605ad0044bbfaca4ceb4aa3e82b42c8))
- **computer:** trace native control admission refusals ([8572c0c](https://github.com/obscuritylabs/Colossus/commit/8572c0c30e379bcbe9fbc9406ca8f19e1acb169b))
- **desktop:** verify authenticated computer tool discovery ([0bb3b9e](https://github.com/obscuritylabs/Colossus/commit/0bb3b9e0d6fd86e5ec6ff7806af24f1bf02afeb0))

**Source:** [8e750fd](https://github.com/obscuritylabs/Colossus/commit/8e750fd4294607486136eae953ce3dbab3b5a2f8)

**Full changelog:** [v0.11.8...v0.11.8-preview.2](https://github.com/obscuritylabs/Colossus/compare/v0.11.8...v0.11.8-preview.2)

<!-- /colossus:release-notes -->

## [0.11.8] - 2026-10-09

### Added
Expand Down
20 changes: 20 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[workspace]
resolver = "3"
exclude = ["native/browser/driver", "native/browser/pki", "native/browser/process-broker", "native/browser/tls-broker"]
exclude = ["native/browser/driver", "native/browser/pki", "native/browser/process-broker", "native/browser/tls-broker", "native/computer"]
members = [
"crates/colossus-cloud",
"crates/colossus-cloud-postgres",
Expand Down
142 changes: 142 additions & 0 deletions apps/desktop/src-tauri/src/managed_configuration_commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1289,6 +1289,15 @@ fn risky_field_authority_changed(
.iter()
.map(|field| (field.field_id.as_str(), &field.value))
.collect::<BTreeMap<_, _>>();
let computer_enabled = |fields: &BTreeMap<&str, &Value>| {
fields
.get("computer.enabled")
.and_then(|value| value.as_bool())
.unwrap_or(false)
};
if !computer_enabled(&before) && computer_enabled(&after) {
return true;
}
let browser_enabled = |fields: &BTreeMap<&str, &Value>, field: &str| {
fields
.get(field)
Expand Down Expand Up @@ -1646,6 +1655,118 @@ fn effective_yaml(
#[allow(clippy::too_many_lines)]
fn field_descriptors() -> Vec<FieldDescriptorDto> {
vec![
descriptor(
"computer.enabled",
"Computer use",
"Computer access",
"Allow Windows computer tools and the bundled computer-use skill. Agents can operate normal user apps outside the workspace. Disabled by default; enabling requires Apply.",
"both",
"high",
"toggle",
false,
json!(false),
None,
None,
vec![],
),
descriptor(
"computer.maxWindows",
"Computer use",
"Window list limit",
"Maximum windows returned when choosing an app.",
"both",
"low",
"number",
false,
json!(64),
Some(1),
Some(128),
vec![],
),
descriptor(
"computer.maxSnapshotNodes",
"Computer use",
"Snapshot element limit",
"Maximum accessible elements returned from the selected window.",
"both",
"low",
"number",
false,
json!(512),
Some(1),
Some(1024),
vec![],
),
descriptor(
"computer.maxScreenshotBytes",
"Computer use",
"Screenshot byte limit",
"Maximum PNG bytes released for one screenshot.",
"both",
"low",
"number",
false,
json!(8_388_608),
Some(1),
Some(16_777_216),
vec![],
),
descriptor(
"computer.maxScreenshotPixels",
"Computer use",
"Screenshot pixel limit",
"Maximum pixels captured from the selected window.",
"both",
"low",
"number",
false,
json!(8_388_608),
Some(1),
Some(16_777_216),
vec![],
),
descriptor(
"computer.actionTimeoutMs",
"Computer use",
"Action timeout (ms)",
"Maximum time for one native operation.",
"both",
"low",
"number",
false,
json!(5000),
Some(1),
Some(10000),
vec![],
),
descriptor(
"computer.sessionTimeoutMs",
"Computer use",
"Session timeout (ms)",
"Maximum time before control expires and input stops.",
"both",
"low",
"number",
false,
json!(300_000),
Some(1),
Some(900_000),
vec![],
),
descriptor(
"computer.observationMaxAgeMs",
"Computer use",
"Observation age limit (ms)",
"Maximum age of a screenshot or snapshot used for input.",
"both",
"low",
"number",
false,
json!(10000),
Some(1),
Some(30000),
vec![],
),
descriptor(
"browser.enabled",
"Browser",
Expand Down Expand Up @@ -2404,6 +2525,27 @@ mod tests {
settings
}

#[test]
fn computer_access_starts_disabled_and_enabling_requires_explicit_apply() {
let disabled = resolved_for(&settings(), "space-one").expect("configuration");
let mut enabled = disabled.clone();
enabled.field_overrides.push(FieldOverrideSetting {
field_id: "computer.enabled".into(),
value: json!(true),
});
assert!(requires_explicit_apply(&disabled, &enabled));
assert!(!requires_explicit_apply(&enabled, &disabled));
let mut explicitly_disabled = disabled.clone();
explicitly_disabled
.field_overrides
.push(FieldOverrideSetting {
field_id: "computer.enabled".into(),
value: json!(false),
});
assert!(!requires_explicit_apply(&disabled, &explicitly_disabled));
assert!(requires_explicit_apply(&explicitly_disabled, &enabled));
}

#[test]
fn browser_disabling_can_apply_when_idle_but_reenabling_requires_apply() {
let before = resolved_for(&settings(), "space-one").expect("configuration");
Expand Down
Loading
Loading