@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.
Files changed (2) hide show
  1. package/app/index.html +7 -5
  2. 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
- if (auth && auth.ok === false){
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); // show/clear the worker sign-in banner from the boot preflight
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galda/cli",
3
- "version": "0.10.64",
3
+ "version": "0.10.65",
4
4
  "type": "module",
5
5
  "description": "Galda - hand off work to Claude Code or Codex, get proof back. Runs on your existing subscription, no extra API cost.",
6
6
  "scripts": {