From 6040e2c203efeaf6ff714201cc5f6c06295caf23 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Thu, 17 Sep 2026 19:46:05 -0700 Subject: [PATCH] Identify dev builds by content so equivalent fleet copies match --- easel/desktop/main.cjs | 2 +- easel/desktop/renderer.js | 2 +- easel/dev/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/easel/desktop/main.cjs b/easel/desktop/main.cjs index e3916884ce..9bc1ec0c45 100644 --- a/easel/desktop/main.cjs +++ b/easel/desktop/main.cjs @@ -141,7 +141,7 @@ function checkBuildUpdates(){ } ipcMain.on('check-build-updates',event=>{if(event.sender===window?.webContents)checkBuildUpdates();}); -function send(channel, data) { if(channel==='build-status'){const item=Menu.getApplicationMenu()?.getMenuItemById('aesel-build-status');if(item)item.label=[data.channel==='dev'?'Dev':data.channel==='release'?'Release':'Local',data.version,data.revision?.slice(0,8),({current:'Up to date',ready:'Update ready',modified:'Local changes',unknown:'Unable to verify',checking:'Checking…',syncing:'Syncing…',downloading:'Downloading…'})[data.status]||'Unable to verify'].filter(Boolean).join(' · ');} +function send(channel, data) { if(channel==='build-status'){const item=Menu.getApplicationMenu()?.getMenuItemById('aesel-build-status');if(item)item.label=[data.channel==='dev'?'Dev':data.channel==='release'?'Release':'Local',data.version,(data.tree||data.revision)?.slice(0,8),({current:'Up to date',ready:'Update ready',modified:'Local changes',unknown:'Unable to verify',checking:'Checking…',syncing:'Syncing…',downloading:'Downloading…'})[data.status]||'Unable to verify'].filter(Boolean).join(' · ');} if (window && !window.isDestroyed()) window.webContents.send(channel, data); } function start() { if (terminal) return; diff --git a/easel/desktop/renderer.js b/easel/desktop/renderer.js index 948242cf93..f16cf82673 100644 --- a/easel/desktop/renderer.js +++ b/easel/desktop/renderer.js @@ -636,7 +636,7 @@ boot().catch(error => { document.getElementById('terminal').textContent = `Could menu.replaceChildren();const n=balance(); const header=document.createElement('header');const title=document.createElement('h2');title.textContent='Settings'; const dismiss=document.createElement('button');dismiss.type='button';dismiss.textContent='×';dismiss.setAttribute('aria-label','Close settings');dismiss.addEventListener('click',close);header.append(title,dismiss);menu.append(header); - if(buildInfo){const status=document.createElement('p');status.className='build-status';status.dataset.status=buildInfo.status;const channel=buildInfo.channel==='dev'?'Dev':buildInfo.channel==='release'?'Release':'Local';const state={current:'Up to date',ready:'Update ready · saving session',modified:'Local changes · sync paused',checking:'Checking…',syncing:'Downloading dev build…',downloading:'Downloading update…',unknown:'Unable to verify'}[buildInfo.status]||'Unable to verify';status.textContent=[channel,buildInfo.version,buildInfo.revision?.slice(0,8),state].filter(Boolean).join(' · ');menu.append(status);item('Check for updates',()=>window.aesel.checkBuildUpdates());} + if(buildInfo){const status=document.createElement('p');status.className='build-status';status.dataset.status=buildInfo.status;status.title=buildInfo.revision?`Source commit ${buildInfo.revision}`:'';const channel=buildInfo.channel==='dev'?'Dev':buildInfo.channel==='release'?'Release':'Local';const state={current:'Up to date',ready:'Update ready · saving session',modified:'Local changes · sync paused',checking:'Checking…',syncing:'Downloading dev build…',downloading:'Downloading update…',unknown:'Unable to verify'}[buildInfo.status]||'Unable to verify';status.textContent=[channel,buildInfo.version,(buildInfo.tree||buildInfo.revision)?.slice(0,8),state].filter(Boolean).join(' · ');menu.append(status);item('Check for updates',()=>window.aesel.checkBuildUpdates());} const current=document.createElement('p');current.textContent=[provider?.backend==='ac'?'AC':provider?.backend==='codex'?'Codex':'Claude',provider?.model].filter(Boolean).join(' · ');menu.append(current); for(const [index,id,name] of [[0,'ac','AC'],[1,'claude','Claude'],[2,'codex','Codex']]){ diff --git a/easel/dev/README.md b/easel/dev/README.md index 904e7ee886..56704257c8 100644 --- a/easel/dev/README.md +++ b/easel/dev/README.md @@ -14,7 +14,7 @@ also reload the interface. Host changes checkpoint and relaunch the Dev app. Active requests finish before the checkpoint. Project files are never synced between machines, and working Git checkouts are never reset. -Settings shows Dev/Release/Local, app version, dev revision, and update state. +Settings shows Dev/Release/Local, app version, content-based dev build ID, and update state. Hover the settings status for its Git commit. Identical Aesel source keeps the same build ID even when other projects change. Piece versions such as v3 are separate. Offline or old checks say they cannot verify freshness. Local edits inside an installed dev snapshot pause syncing and show “Local changes”; move them into a source checkout before republishing. -- 2.51.2