Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
d25951a
fix(chat): surface incompatible-gateway state when handshake lacks se…
github-actions[bot] May 21, 2026
53300ec
fix(chat): tighten composer padding symmetry and cap tool burst card …
kenehong May 21, 2026
53d6a3d
ui(chat): unify margins, radius, drop tool footer, outline tool cards
kenehong May 21, 2026
43ed8a3
ui(chat): align assistant continuation with tool cards + add top brea…
kenehong May 21, 2026
31c8dbe
ui(chat): strip phantom avatar gap, unify tool row padding/height, al…
kenehong May 21, 2026
65ba516
ui(chat): align continuation footer, soften tool hover, light tool tint
kenehong May 21, 2026
003afae
fix(chat): align timestamps with bubble inner text
kenehong May 21, 2026
ab97783
fix(chat): align user timestamp with bubble text (no avatar case)
kenehong May 21, 2026
85deafa
fix(chat): align Plain/FooterReframe tool bursts with assistant bubble
kenehong May 21, 2026
d70387f
feat(chat): default ToolBurstStyle to TaskList for collapsible bursts
kenehong May 21, 2026
7d6a8b1
Chat UI: tool card indent + token/ctx footer priority
kenehong May 21, 2026
1287011
Chat UI: tool cards below assistant/thinking, right-align with bubble
kenehong May 21, 2026
6301d78
Chat UI: align assistant bubble + tool card right edges
kenehong May 21, 2026
ccec251
Chat UI: revert assistant bubble to HAlign=Left (keep avatar/timestam…
kenehong May 21, 2026
00b4c59
Chat UI: revert tool card to HAlign=Left (avoid WinUI stretch-centers…
kenehong May 21, 2026
8add87d
Chat UI: anchor tool card left while stretching to MaxWidth via Auto/…
kenehong May 21, 2026
fa6f7ad
Chat UI: bind tool card width to assistant bubble's ActualWidth
kenehong May 21, 2026
c91f0bf
Chat UI: auto-collapse tool burst once all steps finish
kenehong May 21, 2026
725c390
Chat UI: align collapsed tool header with step rows, drop tool timestamp
kenehong May 21, 2026
5058dcc
chore(chat-ui): move assistant timestamp below tool burst
kenehong May 21, 2026
e8a4c2e
Revert "chore(chat-ui): move assistant timestamp below tool burst"
kenehong May 21, 2026
4c522a3
feat(chat-ui): nest single/collapsed tool burst inside assistant bubble
kenehong May 21, 2026
821171b
chore(chat-ui): widen nested tool card top gap to match bottom optically
kenehong May 21, 2026
612c26f
chore(chat-ui): drop tool card indent when no assistant bubble yet
kenehong May 21, 2026
7dd6bad
Address XAML review feedback for chat tool card
kenehong May 21, 2026
9b2ccbf
Promote 'preset1' values to baseline chat defaults
kenehong May 21, 2026
dc599d2
Align expanded tool section glyph with header chevron position
kenehong May 21, 2026
2eca2ce
Polish chat composer + fix reducer dedup across tool boundaries
kenehong May 21, 2026
a422330
Fix tool card Done pill clipping under narrow viewport
kenehong May 21, 2026
9f09e9b
Inset nested tool card from assistant bubble's corner arc
kenehong May 21, 2026
7737549
Add user bubble tone toggle (Accent / Secondary)
kenehong May 21, 2026
31c593f
Merge openclaw/master into feat/chatui-nested-tool
kenehong May 21, 2026
48989eb
revert(msix): remove temporary update feed endpoint (#486)
indierawk2k2 May 21, 2026
8717e82
Add MXC preflight diagnostics
shanselman May 21, 2026
ed126f2
feat(connection): show shared token chip, auto-fill token, default UR…
ranjeshj May 21, 2026
7d59d8d
fix: unify capability count across all UI surfaces (#488)
ranjeshj May 21, 2026
d7d7661
fix: MCP server runtime toggle, AppCapability MCP-only separation (#483)
ranjeshj May 21, 2026
6711591
Add Run system tools permission toggle
shanselman May 21, 2026
ffb5939
Fix Windows node gateway metadata (#475)
indierawk2k2 May 21, 2026
e9d5454
polish(tray): tighten 'System tools' strings + add missing tray toggle
bkudiess May 21, 2026
9478e95
feat: tool metadata cache, tool call toggle, stale-closure fix, and p…
christineyan4 May 21, 2026
f3d3fd2
feat(tray): consolidate app version + add user feedback to Check for …
RBrid May 21, 2026
190a53f
refactor: remove dead recording handler and extract two static helper…
AlexAlves87 May 21, 2026
12416d2
feat: add ExecApprovalsCoordinator and ICanPresentEvaluator (#471)
AlexAlves87 May 21, 2026
e0224e3
test(tray): add unit tests for NodeCapabilityGating.GetLocalNodeCapab…
github-actions[bot] May 21, 2026
8446ea5
Add easy setup diagnostics logging (#497)
indierawk2k2 May 21, 2026
9de3ae0
feat(tray): consolidate app version and update feedback (#481)
shanselman May 21, 2026
6946b72
fix(uninstall): clean up empty WSL parent after VHD removal
github-actions[bot] May 21, 2026
8914780
fix(uninstall): allow preserved non-empty WSL parent
shanselman May 21, 2026
0f6e8fa
Resolve PR484 chat UI conflicts
shanselman May 21, 2026
eeab616
test(shared): add DeepLinkParser unit tests
github-actions[bot] May 21, 2026
650a058
fix(mcp): add missing Windows node tool descriptions
github-actions[bot] May 21, 2026
d62a8f2
Resolve PR482 localization validation
shanselman May 21, 2026
0e3b970
loc: add x:Uid for chat and instances strings
github-actions[bot] May 21, 2026
59ff8ce
Remove Quick Send feature entirely
ranjeshj May 21, 2026
4231fea
fix(chat): dedupe duplicate assistant bubbles and align continuation …
kenehong May 21, 2026
de0c3db
fix(chat): ID-based grouped session dropdown
May 21, 2026
20eb9e4
polish(tray/chat): replace reconnecting spinner with skeleton timelin…
kenehong May 21, 2026
96d33d2
fix(chat): avoid reactivating deduped assistant
kenehong May 22, 2026
ee82dfb
test+docs: add AppVersionInfo tests and update TEST_COVERAGE doc
github-actions[bot] May 22, 2026
a482ca9
fix(chat): UI polish — caching, alignment, scroll, and multi-agent nav
May 22, 2026
127c332
docs: refresh audit findings (#499)
shanselman May 22, 2026
cc8c9e5
Merge PR #501: fix duplicate assistant bubbles and alignment
shanselman May 22, 2026
758d00e
Merge PR #498: add chat skeleton loading state
shanselman May 22, 2026
604e7e1
Merge PR #503: improve chat session UI and state
shanselman May 22, 2026
1663aa2
Merge PR #500: remove Quick Send feature
shanselman May 22, 2026
27f95f4
Merge PR #502: add AppVersionInfo tests and coverage docs
shanselman May 22, 2026
cf611d4
feat(mxc): replace Node bridge with direct wxc-exec
bkudiess May 22, 2026
4ebd03c
docs: update coverage totals after PR integration
shanselman May 22, 2026
b3a906e
Merge integrated chat and cleanup PRs
shanselman May 22, 2026
85d1937
docs: update master coverage totals
shanselman May 22, 2026
c6b9218
chore(deps): Bump github/gh-aw-actions from 0.72.1 to 0.74.4 (#446)
dependabot[bot] May 22, 2026
ece297a
docs(mxc): trim local sandbox implementation notes
shanselman May 22, 2026
547ba9b
Skills page: remove title emoji, center content
bkudiess May 22, 2026
46c2a18
Organize Bindings page to match Fluent / Win11 Settings pattern
bkudiess May 22, 2026
66d0e6f
Skills page: replace emoji with FontIcon, use system typography
bkudiess May 22, 2026
d4b35d4
Localize hard-coded XAML strings across 17 WinUI files (#491)
bkudiess May 22, 2026
3113262
Skills page: replace hand-rolled group headers with stock Expander
bkudiess May 22, 2026
4b054a0
Tidy Usage page layout and recover from disconnected gateway
bkudiess May 22, 2026
222cf82
Skills page: match canonical page sizing (Padding=24, Stretch+MaxWidt…
bkudiess May 22, 2026
379926c
Skills page: use theme-aware Fluent tokens for status pills
bkudiess May 22, 2026
6b827e4
Reorganize Config page UI to follow Fluent guidelines
bkudiess May 22, 2026
7e88b14
Clean up Cron page UI to follow Fluent guidelines
bkudiess May 22, 2026
89aee64
Tidy Agent Events page UI (Fluent / WinUI design)
bkudiess May 22, 2026
c7947a1
Trim redundant comments on ConfigPage
bkudiess May 22, 2026
fe861d7
Trim noisy comments on Agent Events page
bkudiess May 22, 2026
ba30dc9
test(chat): add 19 tests for untested ChatTimelineReducer event paths
github-actions[bot] May 22, 2026
3179090
Redesign per-agent Workspace page with master-detail layout
bkudiess May 22, 2026
a55ae07
Organize Voice & Audio page per Fluent design guidelines
bkudiess May 22, 2026
421f14b
Restore Play icon on Preview buttons; strip emoji from StatusError
bkudiess May 22, 2026
360c010
Left-align Voice Chat silence-timeout slider
bkudiess May 22, 2026
9aad3c7
Settings page: match canonical page sizing (Padding=24, Stretch+MaxWi…
bkudiess May 22, 2026
d8354c4
Fix Diagnostics page width to match Permissions
bkudiess May 22, 2026
598211c
Sandbox page: match Permissions width and soften gateway-scope copy
bkudiess May 22, 2026
85c74c5
Move CanExpand UI policy from shared DTO to page
00sadik-lab May 22, 2026
a84e5d8
Remove emoji from Bindings title resw strings
00sadik-lab May 22, 2026
9f70226
Merge branch 'pr-504'
shanselman May 22, 2026
ea8e93f
Refine companion navigation title bar
kenehong May 22, 2026
1be9ce1
loc: add WinUI XAML resource foundation
shanselman May 22, 2026
f9ad0da
Merge branch 'pr-517'
shanselman May 22, 2026
e4c2a08
Merge branch 'pr-513'
shanselman May 22, 2026
5014dce
Merge branch 'pr-511'
shanselman May 22, 2026
05d8a39
fix(ui): address review feedback for tidy batch
shanselman May 22, 2026
dec9212
Merge branch 'pr-509'
shanselman May 22, 2026
8560086
Merge branch 'pr-516'
shanselman May 22, 2026
40e11f4
fix(usage): tolerate gateway days off-by-one in cost data
christineyan4 May 22, 2026
7f2095b
refactor(events): rename to Event Stream, remove all filters
christineyan4 May 22, 2026
ae85282
test: update usage guard assertion for off-by-one tolerance
christineyan4 May 22, 2026
c5a8585
Merge branch 'pr-510'
shanselman May 22, 2026
52ec3e8
Merge branch 'pr-515'
shanselman May 22, 2026
334a972
Stop dropping usage.cost responses on period mismatch
00sadik-lab May 22, 2026
e67f5c2
Merge branch 'pr-508'
shanselman May 22, 2026
1a3fdca
fix(usage): reattach after gateway client replacement
shanselman May 22, 2026
9dd8045
Merge branch 'pr-507'
shanselman May 22, 2026
75eab85
Merge branch 'pr-518'
shanselman May 22, 2026
2f2d090
Merge branch 'pr-506'
shanselman May 22, 2026
0afeaca
Merge branch 'pr-520'
shanselman May 22, 2026
dea331f
Redesign Sessions page (Fluent 2 + deep-link to Chat)
bkudiess May 22, 2026
7d36605
Always remount chat host when SessionsPage hands off a session key
00sadik-lab May 22, 2026
da9800a
Merge branch 'pr-512'
shanselman May 22, 2026
07b1910
Merge branch 'pr-514'
shanselman May 22, 2026
8714381
Merge branch 'pr-519'
shanselman May 22, 2026
b41fe82
Expand CI test coverage (#524)
shanselman May 23, 2026
00dda45
Update WinNode CLI live tool discovery
shanselman May 23, 2026
5a87c99
test(shared): add 45 unit tests for MenuDisplayHelper and MenuSizingH…
github-actions[bot] May 23, 2026
ef6ac8a
fix(chat): surface keyless event drops
shanselman May 23, 2026
cefce39
Redesign local gateway setup as out-of-process SetupEngine (#529)
ranjeshj May 26, 2026
51c4b4f
fix(winui): enable mouse-in-pointer input
shanselman May 26, 2026
2273b77
test(shared): add channel result computed-property coverage
github-actions[bot] May 26, 2026
ffd088f
perf(shared): simplify ChannelsAggregator sorting
github-actions[bot] May 26, 2026
525ae2b
test(tray): expand ActivityStreamService coverage
github-actions[bot] May 26, 2026
d31aa6c
test(connection): cover operator scope and handshake readiness helpers
github-actions[bot] May 26, 2026
2ca3457
test(connection): make node auto-approve tests deterministic
github-actions[bot] May 26, 2026
0f669b2
eng(tests): audit transitive test dependencies
github-actions[bot] May 26, 2026
6bd9885
Improve local test runtime gating
ranjeshj May 26, 2026
9de9b5b
Revamp config page editor
ranjeshj May 26, 2026
16399ed
test: improve test quality and coverage
shanselman May 26, 2026
4133ae1
Fix tray menu toggle flicker
kenehong May 26, 2026
0a164fc
Add markdown rendering (incl. tables) to native chat bubbles
RBrid May 27, 2026
bf21e7b
Fix native chat UI bugs in tray app
RBrid May 27, 2026
d01fdc6
Make WSL setup deterministic
ranjeshj May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
153 changes: 144 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,12 @@ jobs:
run: |
dotnet build tests/OpenClaw.Shared.Tests -c Debug --no-restore
dotnet build tests/OpenClaw.Tray.Tests -c Debug -r win-x64 --no-restore
dotnet build tests/OpenClaw.Connection.Tests -c Debug --no-restore
dotnet build tests/OpenClaw.WinNode.Cli.Tests -c Debug --no-restore
dotnet build tests/OpenClaw.Tray.IntegrationTests -c Debug -r win-x64 --no-restore
dotnet build tests/OpenClaw.Tray.UITests -c Debug -r win-x64 --no-restore
dotnet build tests/OpenClawTray.FunctionalUI.Tests -c Debug -r win-x64 --no-restore
dotnet build tests/OpenClaw.SetupEngine.Tests -c Debug -r win-x64

- name: Run Shared Tests
env:
Expand Down Expand Up @@ -110,6 +114,30 @@ jobs:
--results-directory TestResults\Tray
--logger trx;LogFileName=OpenClaw.Tray.Tests.trx"

- name: Run Connection Tests
run: >
dotnet-coverage collect
--output TestResults\Connection\coverage.cobertura.xml
--output-format cobertura
"dotnet test tests/OpenClaw.Connection.Tests
--no-build
-c Debug
--verbosity normal
--results-directory TestResults\Connection
--logger trx;LogFileName=OpenClaw.Connection.Tests.trx"

- name: Run WinNode CLI Tests
run: >
dotnet-coverage collect
--output TestResults\WinNodeCli\coverage.cobertura.xml
--output-format cobertura
"dotnet test tests/OpenClaw.WinNode.Cli.Tests
--no-build
-c Debug
--verbosity normal
--results-directory TestResults\WinNodeCli
--logger trx;LogFileName=OpenClaw.WinNode.Cli.Tests.trx"

# Tray integration tests gate on OPENCLAW_RUN_INTEGRATION; set it so the
# MCP-server / capability tests actually run. dotnet-coverage with no
# filter captures coverage for both the test host AND the spawned tray
Expand All @@ -130,19 +158,45 @@ jobs:
--logger trx;LogFileName=OpenClaw.Tray.IntegrationTests.trx"

# UI tests need a real visual tree AND a system-registered WindowsAppRuntime
# framework MSIX — the test fixture calls Bootstrap.Initialize(1.8, stable),
# framework MSIX — the test fixture calls Bootstrap.Initialize(2.0, stable),
# which looks up the framework package by identity. The hosted windows-2025
# runner image doesn't preinstall it, so we install it explicitly here.
# Version pinned to match Microsoft.WindowsAppSDK 1.8.260101001 in the csprojs.
- name: Install WindowsAppRuntime 1.8
# Version pinned to match Microsoft.WindowsAppSDK 2.0.1 in the csprojs.
- name: Install WindowsAppRuntime 2.0.1
shell: pwsh
run: |
$url = "https://aka.ms/windowsappsdk/1.8/1.8.260101001/windowsappruntimeinstall-x64.exe"
$url = "https://aka.ms/windowsappsdk/2.0/2.0.1/windowsappruntimeinstall-x64.exe"
$exe = "$env:RUNNER_TEMP\WindowsAppRuntimeInstall.exe"
Invoke-WebRequest -Uri $url -OutFile $exe
& $exe --quiet
if ($LASTEXITCODE -ne 0) { throw "WindowsAppRuntimeInstall failed with exit code $LASTEXITCODE" }

- name: Run Functional UI Tests
run: >
dotnet-coverage collect
--output TestResults\FunctionalUI\coverage.cobertura.xml
--output-format cobertura
"dotnet test tests/OpenClawTray.FunctionalUI.Tests
--no-build
-c Debug
-r win-x64
--verbosity normal
--results-directory TestResults\FunctionalUI
--logger trx;LogFileName=OpenClawTray.FunctionalUI.Tests.trx"

- name: Run SetupEngine Tests
run: >
dotnet-coverage collect
--output TestResults\SetupEngine\coverage.cobertura.xml
--output-format cobertura
"dotnet test tests/OpenClaw.SetupEngine.Tests
--no-build
-c Debug
-r win-x64
--verbosity normal
--results-directory TestResults\SetupEngine
--logger trx;LogFileName=OpenClaw.SetupEngine.Tests.trx"

- name: Run Tray UI Tests
run: >
dotnet-coverage collect
Expand All @@ -168,8 +222,83 @@ jobs:
semVer: ${{ steps.gitversion.outputs.semVer }}
majorMinorPatch: ${{ steps.gitversion.outputs.majorMinorPatch }}

e2etests:
needs: repo-hygiene
if: ${{ !cancelled() }}
runs-on: windows-latest
timeout-minutes: 15
steps:
- name: Fail if repo hygiene failed
if: ${{ needs.repo-hygiene.result != 'success' }}
shell: pwsh
run: |
Write-Error "repo-hygiene failed; see the repo-hygiene job output."
exit 1

- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Setup .NET 10
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x

- name: Cache NuGet packages
uses: actions/cache@v5
with:
path: ~/.nuget/packages
key: nuget-${{ runner.os }}-${{ hashFiles('**/*.csproj', '**/Directory.Packages.props') }}
restore-keys: nuget-${{ runner.os }}-

- name: Restore dependencies
run: dotnet restore

- name: Build Shared Library
run: dotnet build src/OpenClaw.Shared -c Debug --no-restore

- name: Build SetupEngine
run: dotnet build src/OpenClaw.SetupEngine -c Debug --no-restore

- name: Build Tray App (WinUI)
run: dotnet build src/OpenClaw.Tray.WinUI -c Debug -r win-x64

- name: Build E2E Tests
run: dotnet build tests/OpenClaw.E2ETests -c Debug -r win-x64

- name: Run E2E Tests
env:
OPENCLAW_RUN_E2E: 1
shell: pwsh
run: |
dotnet test tests/OpenClaw.E2ETests `
--no-build `
-c Debug `
-r win-x64 `
--verbosity normal `
--results-directory TestResults/E2E `
--logger "trx;LogFileName=OpenClaw.E2ETests.trx" `
--logger "console;verbosity=detailed"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

[xml]$trx = Get-Content TestResults\E2E\OpenClaw.E2ETests.trx
$executed = [int]$trx.TestRun.ResultSummary.Counters.executed
if ($executed -lt 1) {
Write-Error "E2E test run executed zero tests. Check OPENCLAW_RUN_E2E gating before merging."
exit 1
}

- name: Upload E2E Test Results & Logs
if: always()
uses: actions/upload-artifact@v7
with:
name: e2e-test-results
path: |
TestResults/E2E/
if-no-files-found: warn

build:
needs: test
needs: [test, e2etests]
runs-on: ${{ matrix.rid == 'win-arm64' && 'windows-11-arm' || 'windows-latest' }}
strategy:
matrix:
Expand Down Expand Up @@ -199,6 +328,12 @@ jobs:
- name: Publish WinUI Tray App
run: dotnet publish src/OpenClaw.Tray.WinUI -c Release -r ${{ matrix.rid }} --self-contained --no-restore -p:Version=${{ needs.test.outputs.semVer }} -o publish

- name: Publish SetupEngine.UI
run: |
dotnet publish src/OpenClaw.SetupEngine.UI -c Release -r ${{ matrix.rid }} --self-contained -p:Version=${{ needs.test.outputs.semVer }} -o publish-setup
mkdir publish\SetupEngine
copy publish-setup\* publish\SetupEngine\ -Recurse

- name: Disable NuGet source mapping for signing
if: startsWith(github.ref, 'refs/tags/v') && matrix.rid != 'win-arm64'
shell: pwsh
Expand Down Expand Up @@ -236,7 +371,7 @@ jobs:
path: publish/

build-msix:
needs: test
needs: [test, e2etests]
runs-on: ${{ matrix.rid == 'win-arm64' && 'windows-11-arm' || 'windows-latest' }}
continue-on-error: true
strategy:
Expand Down Expand Up @@ -328,7 +463,7 @@ jobs:
path: ${{ steps.find-msix.outputs.msix_path }}

build-extension:
needs: test
needs: [test, e2etests]
runs-on: windows-latest
strategy:
matrix:
Expand Down Expand Up @@ -362,8 +497,8 @@ jobs:
path: src/OpenClaw.CommandPalette/bin/${{ matrix.platform }}/Debug/

release:
needs: [repo-hygiene, test, build, build-msix, build-extension]
if: startsWith(github.ref, 'refs/tags/v') && needs.repo-hygiene.result == 'success' && needs.test.result == 'success' && needs.build.result == 'success' && needs.build-extension.result == 'success' && !cancelled()
needs: [repo-hygiene, test, e2etests, build, build-msix, build-extension]
if: startsWith(github.ref, 'refs/tags/v') && needs.repo-hygiene.result == 'success' && needs.test.result == 'success' && needs.e2etests.result == 'success' && needs.build.result == 'success' && needs.build-extension.result == 'success' && !cancelled()
runs-on: windows-latest
permissions:
contents: write
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v6
- name: Install gh-aw extension
uses: github/gh-aw-actions/setup-cli@bc56a0cad2f450c562810785ef38649c04db812a # v0.72.1
uses: github/gh-aw-actions/setup-cli@d3abfe96a194bce3a523ed2093ddedd5704cdf62 # v0.74.4
with:
version: v0.72.1
12 changes: 6 additions & 6 deletions .github/workflows/localization-audit.lock.yml

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

42 changes: 0 additions & 42 deletions .github/workflows/msix-update-feed-pages.yml

This file was deleted.

16 changes: 8 additions & 8 deletions .github/workflows/repo-assist.lock.yml

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

Loading
Loading