Skip to content

SAID Protocol + wallet adapter + wallet workspace rebuild + full design-system migration#185

Open
nullxnothing wants to merge 39 commits into
mainfrom
feat/said-protocol-integration
Open

SAID Protocol + wallet adapter + wallet workspace rebuild + full design-system migration#185
nullxnothing wants to merge 39 commits into
mainfrom
feat/said-protocol-integration

Conversation

@nullxnothing
Copy link
Copy Markdown
Owner

@nullxnothing nullxnothing commented Jun 2, 2026

Summary

Large feature + design branch (34 commits since last main).

  • SAID Protocol agent identity integration + multi-wallet adapter (Solflare-recommended)
  • Wallet panel rebuilt into the workspace layout — sidebar wallet/agent switcher, hero balance, Send/Swap/Receive/Buy, holdings/activity tabs, modal sheets (shipped as v4.1.3)
  • Git dealbreaker fix: clicking a changed file now opens it in the Monaco editor (was a no-op)
  • Full design-system migration across the app (handoff steps 1–6):
    • App Shell (title bar, activity rail, status bar, root layout)
    • Core panels: Wallet, Settings, Git, FileExplorer, Editor, Activity, Dashboard, Terminal, DaemonAI
    • Agent panels: AgentOps, AgentWork, Codex, AgentLauncher, AgentStation, AgentWorkbench, ClaudePanel + Aria
    • Overlays: command palette/drawer, modals, toasts, boot loader, tour, nav guide
    • Long tail: DegenTools (hex→tokens), Recovery, SolanaToolbox, Docs, BrowserMode, Hackathon, ReplayEngine, ProofPool, Signalhouse, Flywheel, ProPanel, Meterflow, ProjectStarter, TokenLaunchTool
  • Tokenized styles throughout; style-debt ratchet tightened to lock the gains (literalRadius 124→32, hexColors 82→68, inlineShadow 13→10)

Verification

typecheck ✓ · 784/785 unit tests (the single failure is the pre-existing flaky SeekerRelayService port-bind test, unrelated) · build ✓ · lint:styles ✓ at the tightened baselines · v4.1.3 packaged + installed locally.

Notes for review

  • A few deliberate design judgment calls were left for a human: NavigationGuide two-green usage; Meterflow/Signalhouse parallel token vocabularies (would need a larger remap, not a 1:1 alias swap); --radius-lg-on-controls in a few panels.
  • Plugin panels (src/panels/plugins/*) are the one remaining unmigrated surface.

Adds SAID Protocol (on-chain agent identity, verification, and trust on
Solana) to the Integration Command Center. SaidProtocolService reads agent
identity and the 0-100 trust score from the public SAID API; the registry
tile exposes a read-only identity check plus directory/docs links and a
gated registration preview. No signing paths are enabled yet.
nullxnothing and others added 27 commits June 3, 2026 11:35
@
feat: daemon wallet adapter (multi-wallet, solflare-recommended)

Add a vendor-neutral wallet adapter on the wallet panel so any Solana
wallet can connect, with Solflare featured as the recommended signer.
Generalizes the prior solflare-only external signing path: the wallet-
standard preference now routes prepare/sign/submit through a registry of
providers. Adds shortvec-correct tx deserialization shared with the
solflare lib, real wallet logos, and adapter unit tests.
@
Keys: group eyebrows, per-row status dot + value fingerprint, masked
add-value field with reveal toggle, confirmation-gated quiet Remove.
Integrations: tighten status rows into key/value pairs, mask key inputs.
Providers: named group eyebrows. Setup/Crashes: quiet, confirm-gated
destructive actions. EnvManager: compact stat cards, unify DEV/PROD to
click-to-reveal (drop hover-reveal of secrets).
feat: polish wallet lane UX (KPI status tiles, unit price, pluralization)

Status prose was being passed into the shared KpiGrid value slot (28px mono,
tuned for numerics), so "Helius connected"/"Standard RPC" wrapped to 3 lines in
the header strip and portfolio hero. Shortened the values, moved detail to meta,
added success/warning tone, and clamped the value slot to item-title scale on a
single line via a scoped CSS rule. Also disambiguated holding unit price ("@ $x"
muted/mono) from position value, and fixed "1 assets" pluralization.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@
Sidebar wallet/agent switcher, hero balance with fused send/swap/receive/buy
actions, holdings/activity tabs, and modal sheets (send, swap, receive, buy,
add wallet, manage). All transaction paths reuse existing wallet IPC and the
mainnet signer guard. Tokens resolve to styles/tokens.css throughout.
Token migration for transitions/spacing, hairline and surface consistency,
accessibility semantics (landmark roles, aria labels), and emoji removal from
UI chrome across Panel primitives and panel-specific styles.
# Conflicts:
#	src/panels/EnvManager/EnvManager.css
#	src/panels/SettingsPanel/SettingsPanel.css
#	src/panels/WalletPanel/WalletPanel.tsx
Mono time column + status dot + message-first body with mono meta line, flat
surfaces (radius 0, --field-bg/--code-bg), single green accent. Keeps session
groups, filters, summaries, artifacts, and issue grouping.
The post-seed reload can leave activeProjectPath stale, so the launcher's
terminal.create no-ops and no tab appears. Retry the Standard Terminal launch,
re-pinning the active project tab each attempt, until a tab materializes.
The terminal redesign replaced the .terminal-tab strip with a sessions sidebar
(.terminal-session) — the smoke was waiting on .terminal-tab.active which never
renders, so it timed out even though the terminal was created and visible. Assert
on .terminal-session.active and drop the retry workaround.
Clicking a changed or staged filename now opens it in the Monaco editor
instead of doing nothing. Resolves the repo-relative git path to an absolute
project path (Windows-aware) before reading so fs validation passes; deleted
files are disabled. The inline diff moves to an explicit per-row Diff toggle.
Hairline structure, sharp containers, single green primary (Commit) and live
accent only; status as dots and mono glyphs; de-glassed menus and removed
decorative gradients/glows. Tokens throughout, no new style debt.
Single-color hairline sparkline (drop gradient candy, flat 7% wash, schematic
axes), chart on code surface with hairline border, mono uppercase eyebrows,
one green accent, hairline structural dividers.
Hairline structure on tabs/sessions/launcher/panes, sharp containers with
controls at var(--r), removed decorative shadows and gradient washes, green
reserved for live/active/focus, mono tokens for eyebrows and terminal text.
Badges/pills to control radius, mono tokens for metadata/labels, green reserved
for live/active/primary, removed dead legacy classes superseded by Panel
primitives.
Two panels reference var(--ui) which was undefined, silently falling back to the
browser default font. Alias it to --font-ui (matches the design-handoff name).
AGENTS.md editor/preview to --field-bg (recessed code surface), textarea focus
to the green accent line. Panel was already largely on-system.
Sharp containers on hairlines, recessed --field-bg inputs and --code-bg proof
cells, status as a mono chip with leading dot, green reserved for primary CTA
and live status, mono eyebrows. CSS only — no behavior change.
Canonical tokens, hairline structure, --field-bg surfaces, wallet-style active
tab underline, green reserved for signal; status pill now renders a StatusDot
instead of colored text (markup-only, no behavior change).
Float panel on hairlines, recessed --field-bg fields, neutral hairline mono
badges, green reserved for selected row + Save primary; moved two inline-style
spans to CSS classes (markup-only, no behavior change).
Hairline borders, 3px controls on sharp containers, --field-bg surfaces, real
primary-button recipe for Run/New/Submit, green reserved for live/active. CSS
module only — no behavior change.
Confirm input to --field-bg, patch file-path chips to --code-bg (read as diff
surface), removed orphaned title/context-chip rules superseded by Composer.
CSS only — approval/patch logic untouched.
Containers to radius 0, and gave the Aria eye a contained token-driven presence
glow (tight drop-shadow: green live, red error, none sleeping) instead of flat
dots — recognizable but disciplined, no chrome bleed. CSS only.
Audit pass across command palette/drawer, modals (bug report, confirm,
shortcuts), toasts, boot loader, tour, nav guide: legacy token aliases →
canonical (--line/--line-2/--line-strong), literal radii tokenized, floating
shadows confirmed token-driven. CSS only.
Title bar, activity rail, status bar, and root layout: legacy aliases →
canonical (--line, --s1/--s2, --field-bg), shell separators on hairlines,
active-accent and live-dot patterns confirmed. No layout/geometry change.
Legacy aliases (--s5/--s6/--border/--surface-sunken) → canonical
(--line/--line-2/--line-strong/--field-bg) across SolanaToolbox, IDE workflow,
project control center, and docs pagination. CSS only.
DegenTools: removed 11 hardcoded hex → --s1/--s2/--t1/--t3/--bg/--code-bg.
Recovery: --border → --line, literal 4px control radii → var(--r). CSS only.
Legacy aliases → canonical (--line/--line-2/--line-strong/--s2/--field-bg)
across browser mode, hackathon, meterflow, pro, project starter, replay engine,
signalhouse. CSS only.
Lock the reductions from the design migration: literalRadius 124->32,
hexColors 82->68, inlineShadow 13->10. New literals now fail CI.
@nullxnothing nullxnothing changed the title Add SAID Protocol agent identity integration SAID Protocol + wallet adapter + wallet workspace rebuild + full design-system migration Jun 4, 2026
<ImageSquare size={15} /> {busy === 'meme' ? 'Generating...' : 'Generate'}
</button>
</div>
{generatedImageUrl && <img className="dt-preview" src={generatedImageUrl} alt={`${tokenTicker} generated asset`} />}
Clears 4 medium OSV advisories (GHSA-2gcr-mfcq-wcc3, -3hrh-pfw6-9m5x,
-f577-qrjj-4474, -xrhx-7g5j-rcj5) in the transitive hono dep — all fixed in
4.12.21. Affected server features (app.mount routing, ip-restriction) are
unused by DAEMON, but the patch bump resolves them cleanly.
ProjectControlCenter.css redefined .solana-project-score as a 106px circle with
a uniform full green border, overriding the intended horizontal segmented meter
in SolanaToolbox.css — so the ring always looked complete next to e.g. '29%'.
Removed the conflicting circle + duplicate value rules (kept -label, used by
ProjectDiagnosticsPanel); the segmented 2/7 meter now reflects the real score.
Wallet rebuild + terminal/settings/right-panel redesigns left the responsive,
layout-cohesion, and visual-regression smokes asserting removed DOM (stale
.wallet-panel-header/.wallet-tabs/.terminal-tabs/.settings-tab/.right-panel-tab,
hardcoded radii). Repointed to current selectors (added wallet-hero/wallet-tabs
data-testids), made token-radius comparisons normalize 0/0px, guarded snapshots
for conditionally-rendered strips, and asserted control geometry against tokens.
Responsive + layout-cohesion now pass.
The workspace only set selectedId from dashboard.activeWallet, so a tracked
wallet with no default (e.g. a freshly generated one, or CI's seeded wallet)
left the panel on the 'No wallet selected' empty state with no hero/tabs.
Fall back to the first wallet/agent so a wallet always shows when one exists.
On a fresh dashboard the wallet panel can briefly sit on its empty state before
the wallet loads + auto-selects, so the hard wait/assert on the hero/tabs flaked
in CI. The panel-ready check (.wallet-panel) covers layout; hero/tabs geometry is
now asserted only when those elements are present.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants