feat(desktop): UI userification — wallet menu, inline Discover filters, settings & external-clients restyle#445
Closed
owklama wants to merge 13 commits into
Closed
feat(desktop): UI userification — wallet menu, inline Discover filters, settings & external-clients restyle#445owklama wants to merge 13 commits into
owklama wants to merge 13 commits into
Conversation
Design for surfacing two dropdown pills (Categories multi-select, Price preset) in the Discover controls row, sharing state with the existing useDiscoverFilters hook so the advanced-filters drawer remains the source of truth. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Six-task plan: helper additions (PRICE_PRESETS, matchPricePreset, clearCategories) with TDD, two new React components, integration into DiscoverWelcome with flex-wrap on the controls row, and a manual-verification checklist. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Powers inline Price filter dropdown — maps slider state (maxInputPrice, maxOutputPrice) to one of four common buckets (Any, Free only, Under $0.10/M, Under $1/M) or 'custom' when values don't match a preset.
Single-call clear for the inline Category filter's 'Clear' button. Cheaper than iterating toggleCategory over the active set (one state update, one re-render).
Trigger pill + radio popover for the four price preset buckets. Auto-closes on selection; outside-click and Esc dismiss. Reads maxInputPrice/maxOutputPrice from useDiscoverFilters and writes both on selection so input and output sliders stay in lockstep.
Trigger pill + multi-select chip popover. Stays open while toggling chips; outside-click and Esc dismiss. Disabled until categories load so the row doesn't reflow on first paint. Shares state with the advanced-filters drawer via useDiscoverFilters.
Renders the two new dropdown pills between the advanced-filters trigger and the sort select. Adds flex-wrap to .controls-row so the pills wrap to a second row at narrow viewports rather than squeezing the search box.
`gap: 8px` is shorthand for both row-gap and column-gap, so the explicit row-gap was a no-op. Caught in code review. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…, settings & external-clients restyle - TitleBar: replace credits button with wallet-icon balance + redesigned dropdown (hero balance, copy-address chips, connect-wallet CTA) - Sidebar: hoist AntStation logo + Alpha pill into a new sidebar header - New AlphaHint component (button + popover) replaces inline alpha label - New DiscoverInlineSortFilter custom dropdown replaces native <select> - DiscoverInlineCategoryFilter: curated top categories, +N more expand, per-category icons - DiscoverWelcome cards: model brand logos, anon accent badge, restructured header/body/footer; SORT_OPTIONS moved into discover-filter-util - ConfigView: full restyle with custom InlineSelect for chain selection and section iconography - ExternalClientsView: brand-marked client tiles (Anthropic/OpenAI/OpenCode/Generic) with restructured layout - .gitignore: ignore .superpowers/ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…style - Discover cards: outlined chip tags with icons (matching Categories filter), provider attribution moved to footer alongside usage stats, unified Free/Paid pricing skeleton with /M suffix on each value, and responsive grid (auto-fill minmax 320px) so cards reflow cleanly when the window narrows. - New ProviderLogo component + provider-logo assets (Anthropic, OpenAI, Google, Meta, Mistral, DeepSeek, Cohere, Minimax, Moonshot, Qwen, Zhipu, Nous Research) rendered next to model names. - Alpha badge: shifted from red danger pill to compact green accent pill. - Sidebar, ConfigView, ExternalClientsView: companion restyle pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ews, and shell Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Custom time-window select with portal popover, category icons, custom checkbox, and restyled reset button in DiscoverFilters. Discover drawer gets rounded right edge and surface background. ExternalClientsView swaps numbered steps for connected flow cards and tones down proxy badge and try-button styling. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3 tasks
3 tasks
owklama
added a commit
to owklama/antseed
that referenced
this pull request
May 11, 2026
ANTSEED_PAYMENTS_DEV_TOKEN now only takes effect outside production, so a leaked env var in a real deployment cannot downgrade the per-session bearer token to a fixed string. The dev-token URL log line is guarded by the same check. Also remove a code comment referencing PR AntSeed#445, which will rot once that PR is no longer top-of-mind.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A wide UI refresh of the desktop app — re-organizes navigation chrome, removes the native titlebar, replaces native dropdowns with custom popovers, restyles chat + settings views, and rebuilds the Discover marketplace cards. Major themes:
chat.ts.ConfigViewandExternalClientsViewrebuilt top-to-bottom; ExternalClients steps replaced with connected flow cards.What's in here
Discover (chat marketplace)
DiscoverInlineCategoryFilter— multi-select chip popover. Curated top-5 categories (chat, coding, reasoning, vision, anon) render first; rest collapsed behind a+N moretoggle that auto-expands when a hidden tag is selected. Per-category Hugeicons via newdiscover-category-icons.ts.DiscoverInlinePriceFilter— 4-bucket preset radio popover backed byPRICE_PRESETS+matchPricePresethelper indiscover-filter-util.ts.DiscoverInlineSortFilter— custom dropdown replaces the native<select>, sharing styling with the other two pills.SORT_OPTIONSmoved intodiscover-filter-util.tsas the single source of truth.DiscoverFilters(drawer): custom time-window select with portal-rendered popover (auto-flips to render above when there's no room below), category buttons now show icons, "Previously used" rebuilt as a custom checkbox, reset button restyled into a danger-tinted full-width pill. Drawer panel itself gets rounded right edge + surface background + soft shadow.model-logos.tsx+ brand-mark glyphs (OpenAI, Anthropic, Meta, DeepSeek, Mistral, Moonshot, Qwen, Google, Minimax, GLM, Flux, Stability, Nvidia, Venice, Grok). All monochrome viacurrentColorso they work in light + dark.ProviderLogo.tsx+ PNG/SVG assets underassets/provider-logos/(Anthropic, OpenAI, Google, Meta, Mistral, DeepSeek, Cohere, Minimax, Moonshot, Qwen, Zhipu, Nous Research). Rendered in the card footer next to provider attribution.DiscoverWelcomecards restructured: outlined chip tags with icons (matches the Categories filter), provider attribution moved into the footer with usage stats, unified Free/Paid pricing skeleton with/Msuffix, responsive grid (auto-fill minmax(320px, …)), anon rendered as accent badge.useDiscoverFilters: addsclearCategories()for the category popover's Clear button.App chrome
TitleBar.tsxremoved; the native title-bar concept is gone. AppShell no longer mounts it.WalletPanel.tsx— wallet/credits menu extracted into its own component. Hero balance card → wallet/signer address chips with copy-to-clipboard → Manage / Deposit actions. When no wallet is connected, shows a Connect-a-wallet CTA.Sidebar: AntStation logo + Alpha pill hoisted into a sidebar header (previously lived in the title bar). Heavy restyle pass.AlphaHint— clickable Alpha pill with popover. Shifted from red danger pill to green accent pill. Replaces the inline static "Alpha Version" label.Chat experience
chat.ts: peer-routing logic refined; newchat.peer-routing.test.tscovers the routing branches.StreamingIndicator: restyled with new states.ServiceDropdown,SessionApprovalCard,SwitchServiceDialog,ChatView: companion restyle passes.Settings views
ConfigView: full restyle. NewInlineSelectcomponent (consistent with Discover dropdowns) for chain selection. Section iconography, intro header with status chip, single co-located save flow.ExternalClientsView: brand-marked client tiles for Anthropic / OpenAI / OpenCode / Generic. Numbered steps replaced with connected flow cards (chip-style step number + per-card tag + animated entrance + connecting rail between cards). Proxy badge + try-button toned down.Misc
.gitignore: ignore.superpowers/brainstorm session content.Approach notes
docs/superpowers/specs/2026-05-03-discover-inline-filters-design.mdand plan atdocs/superpowers/plans/2026-05-03-discover-inline-filters.md.useDismissableLayer+ a trigger SCSS partial when a fourth lands.document.bodyviacreatePortalso it can escape the drawer's overflow clipping.Test plan
cd apps/desktop && npx tsx --test src/renderer/ui/components/chat/discover-filter-util.test.ts— passcd apps/desktop && npx tsx --test src/renderer/ui/hooks/useDiscoverFilters.test.ts— pipeline tests passcd apps/desktop && npx tsx --test src/renderer/modules/chat.peer-routing.test.ts— peer-routing branches passtsc --noEmit -p tsconfig.renderer.json) — 0 errorsnpm run dev:Follow-ups (not in this PR)
*.test.tsfiles into CI (pre-existing gap — they pass locally buttsconfig.renderer.jsonexcludes them andnpm testonly coversdist/main).useDismissableLayerhook + trigger SCSS partial once a fourth inline pill lands.🤖 Generated with Claude Code