@galda/cli 0.10.64 → 0.10.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/index.html +7 -5
- package/package.json +1 -1
package/app/index.html
CHANGED
|
@@ -3373,7 +3373,7 @@ const savedTheme = (() => {
|
|
|
3373
3373
|
if (v !== s) localStorage.setItem('theme', v);
|
|
3374
3374
|
return v;
|
|
3375
3375
|
})();
|
|
3376
|
-
const state = { repos: null, repoHome: '', /* GET /api/repos — the folders a project can point at (Context Bar) */ projects: [], goals: [], tasks: [], act: {}, actAt: {}, todos: {}, chatTurns: {}, active: localStorage.getItem('sel:project') || 'default', editing: null, attach: [], connectCommand: '', models: ['sonnet'], agentModels: null, agentEfforts: null, agents: ['claude-code', 'codex'], expanded: new Set(), openThreads: new Set(), queueOrder: {}, externalActivity: [], selectedGoal: null, workflowColumns: {}, wfDraft: null, reviewDefinitions: {}, rdDraft: null, connectedApp: localStorage.getItem('sel:agent') || 'claude-code', reviewOpenGoal: null, reviewApprovals: {}, goalDetailOpen: null, qreplyOpen: new Set(), logCollapsed: localStorage.getItem('logCollapsed') !== '0', logEntries: [], layout: localStorage.getItem('layout') || 'flagship', theme: savedTheme, boardskin: localStorage.getItem('boardskin') || 'auto', summaryPattern: Number(localStorage.getItem('summaryPattern')) || 3, peraSpot: 0, skill: null, skillsCache: null, projectRules: {}, rulesOpen: false,
|
|
3376
|
+
const state = { repos: null, repoHome: '', /* GET /api/repos — the folders a project can point at (Context Bar) */ projects: [], goals: [], tasks: [], act: {}, actAt: {}, todos: {}, chatTurns: {}, active: localStorage.getItem('sel:project') || 'default', editing: null, attach: [], connectCommand: '', models: ['sonnet'], agentModels: null, agentEfforts: null, agents: ['claude-code', 'codex'], auth: null, expanded: new Set(), openThreads: new Set(), queueOrder: {}, externalActivity: [], selectedGoal: null, workflowColumns: {}, wfDraft: null, reviewDefinitions: {}, rdDraft: null, connectedApp: localStorage.getItem('sel:agent') || 'claude-code', reviewOpenGoal: null, reviewApprovals: {}, goalDetailOpen: null, qreplyOpen: new Set(), logCollapsed: localStorage.getItem('logCollapsed') !== '0', logEntries: [], layout: localStorage.getItem('layout') || 'flagship', theme: savedTheme, boardskin: localStorage.getItem('boardskin') || 'auto', summaryPattern: Number(localStorage.getItem('summaryPattern')) || 3, peraSpot: 0, skill: null, skillsCache: null, projectRules: {}, rulesOpen: false,
|
|
3377
3377
|
// per-message send overrides set via slash-commands (reset after each send,
|
|
3378
3378
|
// except model which is sticky in localStorage). palette = open command list.
|
|
3379
3379
|
msg: { mode: null, model: null, effort: null, skill: null, later: false, review: false },
|
|
@@ -7725,10 +7725,11 @@ const AUTH_COPY = {
|
|
|
7725
7725
|
};
|
|
7726
7726
|
function renderAuthBanner(auth){
|
|
7727
7727
|
const bar = $('errbar');
|
|
7728
|
-
|
|
7728
|
+
state.auth = auth ?? state.auth;
|
|
7729
|
+
if (state.connectedApp === 'claude-code' && state.auth?.ok === false){
|
|
7729
7730
|
authDown = true;
|
|
7730
7731
|
const copy = AUTH_COPY[billingLang()];
|
|
7731
|
-
const limited = auth.reason === 'rate-limited';
|
|
7732
|
+
const limited = state.auth.reason === 'rate-limited';
|
|
7732
7733
|
const canUseCodex = (state.agents || []).includes('codex');
|
|
7733
7734
|
bar.classList.add('billing'); // strips #errbar's error fill so the card stands alone
|
|
7734
7735
|
bar.innerHTML = `<div class="bx-ask${limited ? ' info' : ''}"><div class="bx-qt"><div class="bx-lb">${limited ? copy.limitTitle : copy.connectTitle}</div>`
|
|
@@ -8024,7 +8025,7 @@ async function refresh(){
|
|
|
8024
8025
|
state.connectCommand = s.connectCommand ?? ''; state.models = s.models ?? ['sonnet']; state.agentModels = s.agentModels ?? null; state.agentEfforts = s.agentEfforts ?? null; state.agents = s.agents ?? ['claude-code', 'codex']; state.uiVersion = s.uiVersion;
|
|
8025
8026
|
state.billing = s.billing ?? { licensed: false, email: null };
|
|
8026
8027
|
renderAppSelect(); // picker follows the server's installed-agent set; may correct a stale connectedApp
|
|
8027
|
-
renderAuthBanner(s.auth); //
|
|
8028
|
+
renderAuthBanner(s.auth); // only the selected worker's auth can raise a banner
|
|
8028
8029
|
setAgentModel(state.connectedApp);
|
|
8029
8030
|
setAgentEffort(state.connectedApp);
|
|
8030
8031
|
renderModelSelect();
|
|
@@ -8121,7 +8122,7 @@ function connectSSE(){
|
|
|
8121
8122
|
if (!state.projects.some((p) => p.id === state.active)) state.active = state.projects[0]?.id;
|
|
8122
8123
|
}
|
|
8123
8124
|
else if (m.ev === 'ping') { checkUiVersion(m.uiVersion); return; }
|
|
8124
|
-
else if (m.ev === 'auth') { renderAuthBanner(m.auth); return; } // worker sign-in preflight result
|
|
8125
|
+
else if (m.ev === 'auth') { renderAuthBanner(m.auth); return; } // selected worker's sign-in preflight result
|
|
8125
8126
|
scheduleRender();
|
|
8126
8127
|
};
|
|
8127
8128
|
es.onerror = () => {
|
|
@@ -10213,6 +10214,7 @@ $('appmenu').addEventListener('click', (e) => {
|
|
|
10213
10214
|
renderModelSelect();
|
|
10214
10215
|
renderEffortSelect();
|
|
10215
10216
|
renderMsgHint();
|
|
10217
|
+
renderAuthBanner(state.auth);
|
|
10216
10218
|
$('appmenu').classList.remove('show');
|
|
10217
10219
|
const projectId = state.active;
|
|
10218
10220
|
if (projectId) fetch(withKey(`/api/projects/${encodeURIComponent(projectId)}/queue-agent`), {
|
package/package.json
CHANGED