Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
6265f68
refactor(runtime-host): separate capability acceptance from admission
YayoiNanoka Aug 29, 2026
78a6d53
feat(runtime-host): carry capability admission evidence
YayoiNanoka Aug 29, 2026
ac6ea4c
feat(storage): persist client capability session grants
YayoiNanoka Aug 29, 2026
ab194f4
refactor(core): centralize capability grant identity
YayoiNanoka Aug 29, 2026
1bb8fe9
feat(core): define client capability approval interactions
YayoiNanoka Aug 29, 2026
ec1c0c2
feat(storage): atomically commit capability approvals and grants
YayoiNanoka Aug 29, 2026
1b92ba6
feat(runtime-host): host client capability approval interactions
YayoiNanoka Aug 29, 2026
7acef85
feat(runtime): prepare client capabilities before durable dispatch
YayoiNanoka Aug 29, 2026
d0220a0
fix(storage): share capability grants by scope
YayoiNanoka Aug 29, 2026
86ec298
feat(runtime-host): authorize managed client capabilities
YayoiNanoka Aug 29, 2026
6177cb1
feat(desktop): attest browser origins before admission
YayoiNanoka Aug 29, 2026
73e0d50
fix(desktop): limit cross-origin browser results
YayoiNanoka Aug 29, 2026
86135c8
fix(runtime-host): close approvals when providers disconnect
YayoiNanoka Aug 29, 2026
b1477c3
feat(desktop): present client capability approvals
YayoiNanoka Aug 29, 2026
ae51fed
fix(runtime): classify client capability interaction events
YayoiNanoka Aug 29, 2026
87a938a
fix(runtime-host): canonicalize client capability provider ids
YayoiNanoka Aug 29, 2026
b96a714
fix(runtime): route client capability host admission
YayoiNanoka Aug 29, 2026
94f33c2
fix(desktop): enforce browser origin leases
YayoiNanoka Aug 29, 2026
197e7fe
chore(runtime-host): advance capability protocol epoch
YayoiNanoka Aug 29, 2026
ef56279
chore(desktop): sync capability prompt inventory
YayoiNanoka Aug 29, 2026
d7ef542
test(desktop): complete side chat story port
YayoiNanoka Aug 29, 2026
961a944
test(runtime-host): honor capability admission handshake
YayoiNanoka Aug 29, 2026
765653a
test: trim duplicate capability coverage
YayoiNanoka Aug 30, 2026
af254f3
test: simplify capability coverage
YayoiNanoka Aug 30, 2026
0a53185
fix(desktop): redact unapproved browser destinations
YayoiNanoka Aug 30, 2026
e3e2e21
fix(desktop): keep capability approval outside legacy shell
YayoiNanoka Aug 30, 2026
76a1f47
fix(runtime-host): preserve local capability trust
YayoiNanoka Aug 31, 2026
ac6acc0
fix(runtime-host): close approvals with callers
YayoiNanoka Aug 31, 2026
45f92e3
fix(runtime-host): isolate shared approval waiters
YayoiNanoka Aug 31, 2026
ee24969
docs: refresh Astryx surface inventory
YayoiNanoka Sep 1, 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
6 changes: 3 additions & 3 deletions apps/desktop/renderer-architecture.json
Original file line number Diff line number Diff line change
Expand Up @@ -710,8 +710,8 @@
"@maka/core/ui-locale": 1,
"@maka/ui": 1
},
"importSpecifiers": 23,
"nonTriviaTokens": 3041
"importSpecifiers": 21,
"nonTriviaTokens": 2974
},
"src/renderer/app-shell-session-settings-actions.ts": {
"importDeclarations": 9,
Expand Down Expand Up @@ -1061,7 +1061,7 @@
"react": 1
},
"importSpecifiers": 187,
"nonTriviaTokens": 15882
"nonTriviaTokens": 15855
},
"src/renderer/use-app-shell-composer-quotes.ts": {
"importDeclarations": 3,
Expand Down
41 changes: 41 additions & 0 deletions apps/desktop/src/main/__tests__/browser-origin-lease.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import assert from 'node:assert/strict';
import test from 'node:test';
import { BrowserOriginLeaseTracker } from '../browser/browser-origin-lease.js';

test('a navigate lease allows the old page but only arms for its approved target', () => {
let url = 'https://old.example/';
const tracker = new BrowserOriginLeaseTracker(() => url);
const lease = tracker.open('https://approved.example/path', 'navigate');
assert.equal(lease.snapshot().violatedUrl, undefined);
assert.throws(
() => lease.startNavigation('https://other.example/path'),
/outside the approved Origin/u,
);

lease.startNavigation('https://approved.example/next');
url = 'https://approved.example/next';
tracker.recordNavigation(url);
assert.deepEqual(lease.snapshot(), {
epoch: 1,
url: 'https://approved.example/next',
});
});
7 changes: 7 additions & 0 deletions apps/desktop/src/main/__tests__/browser-session.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,13 @@ type HostSpy = {
function installHost(overrides: Partial<BrowserViewHost> = {}): HostSpy {
const spy: HostSpy = { resolved: [], released: [], disposed: [], host: null as never };
const host: BrowserViewHost = {
currentUrl: () => "https://example.com/",
openOriginLease: () => ({
approvedOrigin: 'https://example.com',
startNavigation: () => {},
snapshot: () => ({ epoch: 0, url: 'https://example.com/' }),
release: () => {},
}),
canDrive: () => true,
resolveEndpoint: async (id) => {
spy.resolved.push(id);
Expand Down
Loading