Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
00be036
fix: align sidebar icons
Sep 18, 2026
e6805b1
feat: support custom macOS installs and graphical DMGs
hudybeans Sep 18, 2026
331d924
feat: enhance input bar behavior for empty submissions and retry logic
tmoonlight Sep 18, 2026
658ee83
Merge PR #60 and keep top bar navigation within its bounds
tmoonlight Sep 18, 2026
3303471
Merge PR #61 and serialize macOS installer and updater writes
tmoonlight Sep 18, 2026
ee7fe02
Initialize AppKit before installer windows and smoke-test startup
tmoonlight Sep 18, 2026
5b4b322
Record PR review fixes and validation results
tmoonlight Sep 18, 2026
288133c
Retry busy macOS disk images and preserve signed PKG artifacts
tmoonlight Sep 18, 2026
2dee030
docs: Record signed macOS package validation [skip ci]
tmoonlight Sep 18, 2026
f90ba8a
docs: Record successful full integration checks [skip ci]
tmoonlight Sep 18, 2026
052c992
Add validated project-scoped MCP configuration
tmoonlight Sep 18, 2026
331631f
Refine settings and command cards, preserve edits, and improve sessio…
tmoonlight Sep 18, 2026
28c6b35
Merge validated project MCP configuration for 0.9.21
tmoonlight Sep 18, 2026
dfa5138
Fix Windows private configuration replacement and release integration
tmoonlight Sep 18, 2026
b973ace
Release v0.9.21
tmoonlight Sep 18, 2026
9169ba3
fix: centralize TUI runtime logs
Sep 19, 2026
5fe28cc
feat: add development environment launchers
Sep 19, 2026
4c759f8
chore(native): archive fix-macos-native-file-drop
hudybeans Sep 19, 2026
a7a29ba
feat: accelerate worktree development builds
Sep 19, 2026
207d6be
fix(desktop): route macOS Finder drops by location
hudybeans Sep 19, 2026
e4561af
fix: make development launchers recover from cache failures
Sep 19, 2026
ee80229
fix: address development launcher review findings
Sep 19, 2026
77a39e3
fix: stabilize sidebar session loading
Sep 19, 2026
542fd2e
fix: load desktop launcher helper in direct tests
Sep 19, 2026
3fd5f8b
fix: discover desktop artifacts across platforms
Sep 19, 2026
47d2059
Fix composer tag selection, editing, and undo on Windows
tmoonlight Sep 19, 2026
5d2bb1e
Preserve composer badges under rectangular selections
tmoonlight Sep 19, 2026
44e0d89
Add Windows computer use and completed workspace improvements
tmoonlight Sep 19, 2026
4644f1b
Fix sidebar refresh request ownership races
tmoonlight Sep 19, 2026
f67c68e
Fix UTF-8 paths and concurrent runtime log appends
tmoonlight Sep 19, 2026
70f6d6b
Merge pull request #63 from tmoonlight/fix/centralize-tui-logs
shaohaozhi286 Sep 19, 2026
6f2963c
Merge master into PR 64 preserving sidebar loading and workspace beha…
tmoonlight Sep 19, 2026
3365fc0
Merge pull request #64 from tmoonlight/fix/sidebar-session-load-race
shaohaozhi286 Sep 19, 2026
566b769
fix: preserve development launcher targets and arguments
tmoonlight Sep 19, 2026
b2b4557
Merge pull request #62 from tmoonlight/feat/development-environment-l…
shaohaozhi286 Sep 19, 2026
c7c0651
Verify full release MIME and public package metadata
tmoonlight Sep 19, 2026
362a7cc
Release v0.9.22
tmoonlight Sep 19, 2026
eaa78e6
Record v0.9.22 full release verification
tmoonlight Sep 19, 2026
9dfd0e1
Show only filenames in composer path tags
tmoonlight Sep 20, 2026
8a7bf7c
Fix keyboard focus after dropping files into composer
tmoonlight Sep 20, 2026
8150edc
Align macOS traffic light controls
Sep 20, 2026
9f1a847
Unify composer file drop and paste handling
tmoonlight Sep 20, 2026
b5aee5b
Merge remote-tracking branch 'origin/master'
tmoonlight Sep 20, 2026
993d6f2
Record file intake validation and delivery
tmoonlight Sep 20, 2026
42912f7
feat: implement support for multiple desktop instances
tmoonlight Sep 20, 2026
cfb55b7
Soften composer hover and focus emphasis
tmoonlight Sep 20, 2026
1954c70
Merge branch 'shz_vide/acecode-chat-hover-style-bab2ca'
tmoonlight Sep 20, 2026
072a829
fix: stabilize macOS installer layout and packaging
hudybeans Sep 20, 2026
740fed7
Merge master and fix package verification
hudybeans Sep 20, 2026
6c9a868
fix: align package verifier ninja handling
hudybeans Sep 20, 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
  •  
  •  
  •  
96 changes: 77 additions & 19 deletions .acecode/skills/acecode-release/scripts/publish_acecode_release.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ param(
[string]$Repo = (Get-Location).Path,
[string]$UpdateDir = 'J:\jenkins_green\aupdate',
[string]$RemoteBaseUrl = 'http://2017studio.imwork.net:82/aupdate/',
[string]$GitHubRepo = 'tmoonlight/acecode',
[ValidateRange(1, 180)]
[int]$GitHubReleaseWaitMinutes = 45,
[string]$Configuration = 'Release',
[string]$Target = 'windows-x64',
[string[]]$StageFiles = @(),
Expand Down Expand Up @@ -239,24 +242,46 @@ function Ensure-ZipMimeConfig {
param([Parameter(Mandatory = $true)][string]$Directory)
$webConfig = Join-Path $Directory 'web.config'
if (Test-Path -LiteralPath $webConfig) {
$text = [System.IO.File]::ReadAllText($webConfig)
if ($text -match 'mimeType="application/zip"') {
return
}
}

$xml = @'
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<remove fileExtension=".zip" />
<mimeMap fileExtension=".zip" mimeType="application/zip" />
</staticContent>
</system.webServer>
</configuration>
'@
Write-Utf8NoBom $webConfig ($xml + [Environment]::NewLine)
$xml = [xml][System.IO.File]::ReadAllText($webConfig)
} else {
$xml = [xml]'<configuration />'
}
$configuration = $xml.SelectSingleNode('/configuration')
if ($null -eq $configuration) {
throw "Update server web.config has no configuration root: $webConfig"
}
$server = $configuration.SelectSingleNode('system.webServer')
if ($null -eq $server) {
$server = $xml.CreateElement('system.webServer')
[void]$configuration.AppendChild($server)
}
$content = $server.SelectSingleNode('staticContent')
if ($null -eq $content) {
$content = $xml.CreateElement('staticContent')
[void]$server.AppendChild($content)
}
# Both formats are required by full GitHub mirroring. Preserve unrelated IIS
# settings when repairing the ZIP-only config left by earlier publishers.
foreach ($mapping in @(
@('.zip', 'application/zip'),
@('.pkg', 'application/vnd.apple.installer+xml'))) {
foreach ($node in @($content.SelectNodes(
"mimeMap[@fileExtension='$($mapping[0])'] | remove[@fileExtension='$($mapping[0])']"))) {
[void]$content.RemoveChild($node)
}
$remove = $xml.CreateElement('remove')
$remove.SetAttribute('fileExtension', $mapping[0])
[void]$content.AppendChild($remove)
$mime = $xml.CreateElement('mimeMap')
$mime.SetAttribute('fileExtension', $mapping[0])
$mime.SetAttribute('mimeType', $mapping[1])
[void]$content.AppendChild($mime)
}
$settings = New-Object System.Xml.XmlWriterSettings
$settings.Encoding = New-Object System.Text.UTF8Encoding($false)
$settings.Indent = $true
$writer = [System.Xml.XmlWriter]::Create($webConfig, $settings)
try { $xml.Save($writer) } finally { $writer.Dispose() }
}

function Update-Manifest {
Expand Down Expand Up @@ -625,13 +650,18 @@ try {

$exe = Join-Path $buildRoot "$Configuration\acecode.exe"
$desktopExe = Join-Path $buildRoot "$Configuration\acecode-desktop.exe"
$computerUseExe = Join-Path $buildRoot "$Configuration\acecode-computer-use.exe"
$versionOutput = (& $exe --version).Trim()
if ($versionOutput -ne "acecode v$Version") {
throw "Built executable reports '$versionOutput', expected 'acecode v$Version'."
}
if (-not (Test-Path -LiteralPath $desktopExe)) {
throw "Desktop executable missing: $desktopExe. Configure the build with -DACECODE_BUILD_DESKTOP=ON before release packaging."
}
if (-not (Test-Path -LiteralPath $computerUseExe -PathType Leaf) -or
(Get-Item -LiteralPath $computerUseExe).Length -eq 0) {
throw "Computer Use runtime missing: $computerUseExe. Rebuild the acecode-computer-use target before release packaging."
}

if (-not $QuickValidation -and -not $NoCommit) {
$filesToAdd = @()
Expand Down Expand Up @@ -680,8 +710,14 @@ try {
New-Item -ItemType Directory -Force -Path (Join-Path $stage 'share\acecode') | Out-Null
Copy-Item -LiteralPath $exe -Destination (Join-Path $stage 'acecode.exe') -Force
Copy-Item -LiteralPath $desktopExe -Destination (Join-Path $stage 'acecode-desktop.exe') -Force
Copy-Item -LiteralPath $computerUseExe -Destination (Join-Path $stage 'acecode-computer-use.exe') -Force
Copy-Item -LiteralPath (Join-Path $Repo 'assets\models_dev') -Destination (Join-Path $stage 'share\acecode\models_dev') -Recurse -Force
Copy-Item -LiteralPath (Join-Path $Repo 'assets\seed') -Destination (Join-Path $stage 'share\acecode\seed') -Recurse -Force
$channelStage = Join-Path $stage 'channels\whatsapp'
New-Item -ItemType Directory -Force -Path $channelStage | Out-Null
foreach ($asset in @('bridge.mjs', 'protocol.mjs', 'package.json', 'package-lock.json')) {
Copy-Item -LiteralPath (Join-Path $Repo "assets\channels\whatsapp\$asset") -Destination $channelStage -Force
}

New-Item -ItemType Directory -Force -Path $UpdateDir | Out-Null
Ensure-ZipMimeConfig -Directory $UpdateDir
Expand All @@ -690,6 +726,11 @@ try {
Test-ZipEntries -ZipPath $zipPath -RequiredEntries @(
'acecode.exe',
'acecode-desktop.exe',
'acecode-computer-use.exe',
'channels/whatsapp/bridge.mjs',
'channels/whatsapp/protocol.mjs',
'channels/whatsapp/package.json',
'channels/whatsapp/package-lock.json',
'share/acecode/models_dev/api.json',
'share/acecode/seed/MANIFEST.json'
) -ForbiddenPrefixes @('ace-browser-')
Expand All @@ -708,6 +749,21 @@ try {
Write-Host "SHA256: $sha"
}

if (-not $QuickValidation -and $Push -and -not $NoPublish) {
$syncScript = Join-Path $PSScriptRoot 'sync_github_release_to_aupdate.ps1'
if (-not (Test-Path -LiteralPath $syncScript -PathType Leaf)) {
throw "Required GitHub updater mirror helper is missing: $syncScript"
}
Write-Host '== Waiting for the complete GitHub Release and mirroring all updater platforms =='
& $syncScript `
-Version $Version `
-UpgradeTip $UpgradeTip `
-RepoSlug $GitHubRepo `
-UpdateDir $UpdateDir `
-RemoteBaseUrl $RemoteBaseUrl `
-WaitMinutes $GitHubReleaseWaitMinutes
}

$head = (& git -C $Repo rev-parse --short HEAD).Trim()
} finally {
if ($null -ne $lockStream) {
Expand All @@ -720,6 +776,8 @@ try {

if ($QuickValidation) {
Write-Host "Quick validation package complete: $Version from $head (no commit or tag created)"
} elseif ($Push -and -not $NoPublish) {
Write-Host "Full cross-platform release complete: $tag at $head"
} else {
Write-Host "Release complete: $tag at $head"
Write-Host "Local/source release steps complete: $tag at $head"
}
Loading
Loading