what changed · by release

changelog

Every release documented. Code lives at github.com/pyxis-app/pyxis (AGPL-3.0). Mirrored to gitlawb.com/z6MkpbZk via auto-mirror workflow on every push.

╭─ release · v3.2.0 · hardening & observability ────────2026-05-21

Production hardening plus the operational surfaces a live product needs: a health endpoint with a live status pill, a private usage dashboard, an on-brand 404, and a security sweep across auth, payments, and every external API call.

[added]3 entries
  • Public health endpoint /api/health — timeout-raced Neon round-trip, returns 200/503; backs a live status pill on the landing footer + research header (polls every 60s)
  • Private admin dashboard at /admin — wallet-gated usage view: total runs, unique wallets, 24h/7d activity, partial-run count, recent runs, and top wallets, with numbered pagination (25/page)
  • On-brand custom 404 page (terminal/compass aesthetic) replacing the default Next.js not-found
[security]6 entries
  • SIWE sign-in is now bound to the server domain + carries an expiry; JWT verification pinned to HS256
  • Auth-nonce consumption made atomic (single compare-and-swap) to close a replay race
  • Research is attributed only to the cryptographically-verified session — the client-supplied payer header is no longer trusted, and /api/research now requires sign-in
  • On-chain USDC payment verification before a tx is ever stored (active when paid mode returns)
  • Snapshot GraphQL queries parameterized; all external-API params now format-validated + URL-encoded
  • Rate limiter keyed on the platform-trusted client IP instead of a spoofable forwarded header
╭─ release · v3.1.0 · shareable briefings ────────2026-05-20

Briefings became shareable and the history surface grew up: every run now has a public read-only link, history gained working actions + per-session delete, and a systemic JSONB read bug that silently emptied shared briefings was fixed.

[added]5 entries
  • Public shareable briefing links — every research run gets a read-only /b/[id] URL (no login, unguessable UUID, OG + Twitter preview cards)
  • Per-session delete (owner-scoped) + working copy-markdown / copy-link actions on every briefing card
  • /history#id deep links auto-expand and scroll to the target briefing
  • Floating back-to-top button on long briefings
  • gitlawb network link in the footer connect column
[fixed]2 entries
  • Shared + history briefings rendered empty — every briefing_json row was a double-encoded JSONB scalar string, so the body read back as a string and lost its fields; now coerced on read
  • Sidebar + history stuck on 'loading…' for wallets without a session — both now prompt sign-in on 401, and the sidebar re-fetches automatically after SIWE sign-in
[changed]1 entry
  • Hero example queries refreshed to 2026-current topics across tokens / chains / protocols / narratives
╭─ release · v3.0.0 · terminal redesign ────────2026-05-20

Full visual rebuild + pipeline overhaul. Briefings are now data-rich for every topic type — narratives and comparisons get topic decomposition, protocol/chain paths pull native-token data, and confidence theater is gone in favor of explicit Data Gaps.

[added]13 entries
  • v5 hybrid terminal UI across landing, research workspace, history, settings
  • PYXIS ANSI pixel-shadow wordmark (cyan→deep-blue gradient + breathing glow)
  • Read Mode toggle for briefings — wide measure, 1.75 line-height, agent sub-blocks collapse (default ON for new users)
  • Topic decomposition: narrative & comparison topics auto-fan-out into 3–5 concrete sub-asset dossiers (e.g. "memecoin szn?" → DOGE/SHIB/PEPE/WIF/BONK)
  • Animated 5-phase pipeline visualization in /#method — probe-color pulse + per-phase caption
  • Cycling natural-language prompt placeholder + categorized example chips (// tokens · // chains · // protocols · // narratives)
  • Scrollable briefing container with custom cyan-gradient scrollbar (kept landing height consistent regardless of briefing length)
  • Protocol path probe enrichment — token via CoinGecko + DexScreener pairs + Etherscan contract meta + project-filtered yields
  • Chain path native L1 token lookup (Solana → SOL coin snapshot, Berachain → BERA, etc.)
  • Lenis smooth scroll for landing momentum + anchor jumps
  • SSH commit signing — every push to main now arrives with Verified badge
  • Gitlawb auto-mirror workflow live — push once, mirror to gitlawb decentralized network automatically
  • Sticky workspace statusline with pyxis://research/<slug> breadcrumb + ⌘K commands + ? help
[changed]6 entries
  • Section markers § (silcrow magazine) → // (code-comment style) across all surfaces
  • Brand mark in nav/footer/sidebar now uses real logo image (was P› text prefix)
  • P› gradient text prefix kept only for prompt-style status lines (terminal grammar)
  • Synthesizer prompt no longer requires a Confidence Assessment section — readers judge from explicit Data Gaps + Data Freshness table + inline citations
  • Fear & Greed Index fetched once per research run (was 2 duplicate calls — analyst at limit=14, sentinel at limit=7)
  • Section header copy reflects new transparency: "freshness timestamps, explicit gap notes — no confidence theater, just data you can verify."
[removed]4 entries
  • Numeric confidence scores (0-100) — were LLM-stochastic ±10pt and biased against briefings with more honest data caveats
  • Fraunces serif editorial typography (magazine-spread aesthetic)
  • Star-field constellation background animation (replaced with breathing hairline grid)
  • Dead components: star-field.tsx, flow-graph.tsx, findings-card.tsx, report-drawer.tsx (legacy editorial-era components no longer imported)
[fixed]5 entries
  • SIWE wallet-sign popup state stuck forever at "awaiting wallet signature…" — useEffect dependency self-retrigger bug zeroed the cancelled flag before the wallet promise resolved. Replaced with useRef in-flight guard + mountedRef lifecycle. Added skip/retry escape buttons for stuck popups.
  • 402 Payment Required on first research after wallet connect — NEXT_PUBLIC_X402_FREE_MODE env var was unset, defaulting to paid mode without x402 wired
  • Box-drawing characters (╔╗╚╝═║) rendering broken in PYXIS wordmark — next/font/google subsets to Latin only, stripping U+2500-U+257F glyphs. Switched to raw <link> Google Fonts CSS endpoint (serves multi-range woff2 with box drawing intact)
  • EtherFi protocol briefing had only 2 $-value mentions despite being a top-3 LRT protocol — protocol path was missing token + DEX pair lookups. Now hits CG /coins/ether-fi + DexScreener ETHFI search + project-filtered yields. Backtest shows 7× more hard data per briefing.
  • Narrative briefings (memecoin szn?, AI agents, DePIN) returned 0 dollar-values — narrative path only had sector-level aggregates. Decomposition now spawns 3-5 sub-asset dossiers in parallel. Backtest shows 25 sources fired (vs 9 previously) and 11-13 $-values per briefing.
╭─ release · v2.0.0 · gitlawb migration ────────2026-05-19

LLM provider migrated from OpenRouter (gpt-4o-mini) to gitlawb's Opengateway (mimo-v2.5-pro). Repo now mirrored on gitlawb's federated network on every push. Paid mode paused — free during beta. Same five agents over 13 live APIs; cleaner stack underneath.

[changed]3 entries
  • LLM provider: OpenRouter (openai/gpt-4o-mini) → gitlawb Opengateway (mimo-v2.5-pro)
  • Opengateway base URL → https://opengateway.gitlawb.com/v1 (OpenAI-compatible)
  • Auth flow: API key + UCAN-scoped delegation tied to gitlawb DID did:key:z6MkpbZk… (UCAN renewal 2026-06-18)
[added]3 entries
  • Auto-mirror workflow: every push to GitHub main also mirrors to gitlawb's federated network (DHT peer replication)
  • NEXT_PUBLIC_X402_FREE_MODE flag — bypasses x402 micropayment paywall during beta (sends X-PAYER-ADDRESS header instead of signed authorization)
  • Profile presence at gitlawb.com/z6MkpbZk (contributor trust level, peer-mirror visible)
[paused]1 entry
  • x402 micropayment-per-research flow — code paths kept, gated behind NEXT_PUBLIC_X402_FREE_MODE=false. Resume planned at GA exit.
[unchanged]2 entries
  • All 5 agents (Commander → Scout → Analyst → Sentinel → Synthesizer) and all 13 data sources
  • Briefing markdown shape + freshness table + SIWE wallet auth + research session persistence
╭─ release · v1.0.0 · initial public beta ────────2026-05-19

Pyxis went public on usepyxis.com with editorial-celestial design language. Free beta active. 5-agent pipeline (Commander → Scout → Analyst → Sentinel → Synthesizer) wired up against 13 live data sources. Repo migrated from pyxis-boop/app → pyxis-app/pyxis and flipped public.

[shipped]7 entries
  • 5-agent research pipeline orchestrated via lib/probes/pipeline.ts (sequential probe execution: Commander emits queries → Scout/Analyst/Sentinel fetch data → Synthesizer merges)
  • 13 live data sources: CoinGecko, CoinMarketCap, DefiLlama, DexScreener, GeckoTerminal, Binance, Etherscan, Solscan, GetXAPI (Twitter), Reddit, Snapshot, Tavily, Fear & Greed Index
  • x402 micropayment paywall on Base (USDC, settles ~6 seconds, paused during beta)
  • SIWE (Sign-In With Ethereum) wallet auth + JWT session + Postgres research session persistence
  • Magazine-spread landing with Fraunces serif typography, star-field constellation animation, magazine-style demo briefings
  • Brand identity locked: Mariner's Compass constellation theme, cyan-blue logo, @pyxisbase X handle (Blue Verified), AGPL-3.0 license, usepyxis.com domain
  • Repo migrated pyxis-boop/app → pyxis-app/pyxis (fresh public push, no hackathon-era PR history carried over)