You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Your ask: when a client is selected, every option in the sidebar should
work according to that same client. Tools already auto-read the active
brain (smart-fill + cross-client switch already wired), but a few
surfaces never advertised which client was actually active and a few
others showed cross-client data when they shouldn't. Fixed across the
board.
Sidebar — persistent active-client block + quick-switch
- New block sits between the AdForge brand header and the nav list,
visible on every page.
- When a client is active: orange brain icon + "ACTIVE CLIENT" caption
+ client name. Click expands a dropdown listbox of every saved
client with the live one checkmarked. Picking from the list calls
setActiveBrainId() + dispatches ados:active-brain-changed, which
the rest of the app (GeneratorShell, dashboard, last-generated
pill) already listens to — so all open forms reset and re-fill
from the new brain instantly.
- Dropdown footer: "+ Add new client" → /brand/new and "Manage all
clients →" → /brand for power-user shortcuts.
- When no client is set: the same block becomes an outlined CTA
card with a Plus icon → /brand/new. Makes the empty state
unmissable.
- A subtle caption under the block reads "every tool below uses
this client's brand brain" so the relationship is explicit.
Dashboard recent generations · scoped to active client
- listAds() now receives { brand_id: getActiveBrainId() } when a
client is set. Section heading gets a "· scoped to active client"
micro-label so the scoping is visible.
- Live-updates on ados:active-brain-changed and ados:brains-changed
so switching the active client immediately refreshes the recents.
Last-generated pill · respects active client
- The "● last: Campaign Kit" pill in PageHeader was showing the
most-recent asset across ALL clients. Now hides itself when the
pinned asset's brand_id doesn't match the current active brain —
it stays accurate to the client the user is actually working on.
- Live-updates on ados:active-brain-changed and ados:brains-changed.
Brand-completeness indicator on each /brand client card
- New "brain N/12" pill in each card's metadata strip:
· green when ≥9 fields filled
· live-orange when 5-8 (okay)
· neg-red when <5 (thin — most generators will fall back to
generic copy for some surfaces)
- Tooltip explains why: "Generators read every field — thin brains
produce more generic copy."
- Counts the 12 brand-defining fields: business_name, industry,
niche, USP, tone, audience_who, pain_points, desires, key_benefits,
products, platforms, content_pillars.
Verified: typecheck + 43 tests + build all green.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments