mirror of
https://github.com/herdrdev/herdr.git
synced 2026-09-21 16:01:04 +00:00
* feat: add opt-in client-rendered shell * feat: add client-owned shell mouse controls * feat: complete client-owned shell chrome * feat: add client-owned shell settings and notifications * feat: run client shell custom commands * feat: render popup terminals in client shell * feat: add client-owned scrollback and copy mode * fix: preserve client worktree trust defaults * feat: render startup diagnostics in client shell * feat: render onboarding in client shell * feat: render product announcements in client shell * feat: render release notes in client shell * feat: render mobile switcher in client shell * feat: render kitty graphics in client shell * fix: preserve client shell lifecycle coherence * refactor: route client shell commands through endpoint connections * refactor: make the client-rendered shell the default * refactor: remove monolithic launch mode * refactor: complete client-rendered shell cutover * perf: retain client pane surface updates * perf: scale retained pane surface updates * perf: remove remote pane input latency * test: make client shell checks platform-independent * fix: prevent client timer starvation * test: fix client shell platform gates * test: accept retained surfaces in cross-area checks * test: make client mode assertions platform-neutral * fix: badge only outdated integrations
103 lines
2.9 KiB
PowerShell
103 lines
2.9 KiB
PowerShell
param(
|
|
[ValidateSet("lint", "check")]
|
|
[string]$Mode = "check"
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
function Invoke-Checked {
|
|
param([string]$Command, [string[]]$Arguments)
|
|
|
|
& $Command @Arguments
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "command failed with exit code $LASTEXITCODE`: $Command $($Arguments -join ' ')"
|
|
}
|
|
}
|
|
|
|
function Invoke-CargoWithZigCacheRecovery {
|
|
param([string[]]$Arguments)
|
|
|
|
& cargo @Arguments
|
|
if ($LASTEXITCODE -eq 0) {
|
|
return
|
|
}
|
|
|
|
Write-Warning "cargo compile failed; clearing Zig build caches and retrying once"
|
|
Remove-Item -Recurse -Force .zig-cache -ErrorAction SilentlyContinue
|
|
Remove-Item -Recurse -Force vendor/libghostty-vt/.zig-cache -ErrorAction SilentlyContinue
|
|
Remove-Item -Recurse -Force vendor/libghostty-vt/zig-out -ErrorAction SilentlyContinue
|
|
Invoke-Checked cargo $Arguments
|
|
}
|
|
|
|
function Invoke-CargoTestFilter {
|
|
param(
|
|
[Parameter(Mandatory)]
|
|
[string]$Filter,
|
|
[switch]$Exact
|
|
)
|
|
|
|
$commonArguments = @(
|
|
"test",
|
|
"--locked",
|
|
"--target",
|
|
"x86_64-pc-windows-msvc",
|
|
"--bin",
|
|
"herdr",
|
|
$Filter
|
|
)
|
|
$harnessArguments = @("--list")
|
|
if ($Exact) {
|
|
$harnessArguments += "--exact"
|
|
}
|
|
|
|
$listArguments = $commonArguments + @("--") + $harnessArguments
|
|
$listOutput = @(& cargo @listArguments)
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "could not enumerate tests for filter '$Filter': $($listOutput -join [Environment]::NewLine)"
|
|
}
|
|
|
|
$testNames = @(
|
|
foreach ($line in $listOutput) {
|
|
$match = [regex]::Match([string]$line, '^\s*(\S+): test\s*$')
|
|
if ($match.Success) {
|
|
$match.Groups[1].Value
|
|
}
|
|
}
|
|
)
|
|
if ($testNames.Count -eq 0) {
|
|
throw "test filter '$Filter' selected zero tests"
|
|
}
|
|
|
|
Write-Host "Running $($testNames.Count) test(s) for '$Filter'"
|
|
$runArguments = $commonArguments
|
|
if ($Exact) {
|
|
$runArguments += @("--", "--exact")
|
|
}
|
|
Invoke-Checked cargo $runArguments
|
|
}
|
|
|
|
Invoke-Checked rustup @("target", "add", "x86_64-pc-windows-msvc")
|
|
Invoke-Checked cargo @("fmt", "--check")
|
|
Invoke-CargoWithZigCacheRecovery @(
|
|
"clippy",
|
|
"--bin",
|
|
"herdr",
|
|
"--locked",
|
|
"--target",
|
|
"x86_64-pc-windows-msvc",
|
|
"--",
|
|
"-D",
|
|
"warnings"
|
|
)
|
|
|
|
if ($Mode -eq "lint") {
|
|
return
|
|
}
|
|
|
|
Invoke-CargoTestFilter "windows_"
|
|
Invoke-CargoTestFilter "server::client_transport::tests"
|
|
Invoke-CargoTestFilter "input::lease::tests::duplicate_physical_press_normalizes_for_forwarded_and_consumed_leases" -Exact
|
|
Invoke-CargoTestFilter "client::shell::tests::input_domain::physical_release_uses_the_leased_press_code_with_current_modifiers" -Exact
|
|
Invoke-CargoTestFilter "client::shell::tests::input_domain::pane_key_release_keeps_the_press_target" -Exact
|
|
Invoke-Checked cargo @("build", "--locked", "--target", "x86_64-pc-windows-msvc")
|