Skip to main content

Changelog

0.1.422-beta — May 2026

Discovery Directory
  • For Hire mode — members can list their availability, services, rate band, and work arrangement; a For Hire tab on /discover surfaces available professionals; a For Hire pill appears on public profiles linking to a contact section
  • Speaker Directory mode — members can publish a speaker profile with topics, formats, travel availability, and fee range; a Speaking tab on /discover lets visitors filter by topic, format, and travel; a Speaker badge on public profiles links to a bookable section with a “Book / Enquire” prompt
  • Regional discovery routes added — /discover/ca, /discover/eu, and /discover/global with region-specific results; Pro members surface first in all regions
  • Filters popover replaces the scrolling chip row — cleaner filter experience with category, Verified, and In a Planet options
  • Verified member dialog — clicking a verified avatar now opens a confirmation card showing the member’s Verak Verification status
Analytics
  • Sovereign analytics now compress older event history into summary records on the user’s PDS, keeping the dashboard fast without losing historical data
  • Network Growth panel added to the Dashboard — tracks Sifa connection growth over time with week-over-week deltas and per-network breakdown; Pro feature
Bug fixes
  • Career location fields from other AT Protocol clients now display correctly
  • Settings deep-link to Beta & Feedback section now works from all entry points

0.1.401-beta — May 2026

Discovery Directory
  • New lexicon published: is.verak.directory.public — members write this record to their own PDS to opt in to the Verak Discovery Directory
  • Record fields: optedIn, includeInGlobal, headline (120 char max), roleCategory, createdAt, updatedAt
  • New API: GET /api/directory/public — reads the authenticated user’s directory record from their PDS
  • New API: PUT /api/directory/public — writes the record to the user’s PDS; maintains directory:index Redis set and per-DID field cache automatically
  • New API: GET /api/directory/index — returns enriched member cards filtered by region, category, verified, and planet; results cached in Redis for 60 seconds
  • Region detection from AT Protocol handle TLD: .gander.ca / gander.socialca, .eurosky.socialeu, all others → global
  • Members with includeInGlobal: true appear in the global directory regardless of their home network
  • Results sorted: Pro members first, then verified, then alphabetical
  • New page: /discover — public directory browsable without login; region tabs, category chips, Verified only and In a Planet filter toggles; filters sync to URL query params
  • New component: DirectoryMemberCard — avatar with gold ring for verified members, headline, role chip, planet badges, spring hover animation, gold left border for Pro members
  • Settings > Discovery Directory section added — opt-in toggle, global directory toggle, headline input, role category select, save with success/error feedback
  • “Discover” added to main navigation between Orbits and Profile

0.1.2-beta — May 2026

Feed
  • Feed filter bar introduced: Orbits (default) / Planets / Satellites / All
  • Planets feed tab now pulls subscribed planets from PDS on load; falls back to localStorage cache
  • Viewer like/repost state now resolved via com.atproto.repo.listRecords against the authenticated user’s own repo — fixes stale state on Orbits, Planets, and Satellites feeds across Gander and EuroSky PDSes
  • Rich text rendering added to feed and thread views: AT Protocol UTF-8 byte-offset facets rendered as live links, @mentions, and #hashtags
  • Reply context indicator: replies to other accounts show “Replying to @handle” inline
  • Inline reply character counter: turns KV Gold below 30 chars, red when over limit
  • Auto infinite scroll via IntersectionObserver sentinel; manual “Load more” button retained as fallback
  • Embed renderers added: images (1–4 grid), external link cards, quoted posts (depth-limited to 1), recordWithMedia
Planets
  • Planets tab filter pills: All / Joined · N / Tech / Legal / Finance / Creative / Science
  • Subscribed planets float to top of “All” view under a dedicated “Joined Planets” section
  • PlanetCard now reflects subscription state — green border and “Joined ✓” badge when subscribed
  • Planets ownership notice updated to “Managed by Verak.app”; DID-hardcoded check replaced with isCurator prop driven by VERAK_CURATOR_DID env var
  • Subscribed planet nodes appear on the Orbit Map with ringed ellipses, category colour, and member panel on click
Profile — Articles section
  • WritingFeed applies hiddenNetworks filter to pinned items, rest items, and platform pills
  • Article cards: platform logo used as blurred background fill when no thumbnail is present
  • Carousel: cards rendered at equal height; native scrollbar replaced with ‹ / › arrow buttons
  • ActivityHeatmap accepts hiddenNetworks prop; all derived stats, bars, legend, and tooltips exclude hidden networks
  • Fixed Cannot access before initialization error caused by out-of-order useMemo declarations
Admin
  • Analytics tab added to admin panel: time-range picker, 5 KPI tiles with period deltas, growth bar chart, credibility tier distribution, broadcast queue panel
  • Members and Verification tabs upgraded with Bluesky typeahead lookahead search (250 ms debounce)
  • Credibility tab header stats now show Total Scored / Authority / Sovereign / Avg Score when active
  • CredibilityTierPill derives label exclusively from score.tier; never reads from labels array
Firehose Service
  • Standalone Node.js worker deployed to Railway (verak-firehose)
  • Connects to AT Protocol relay (wss://bsky.network) filtering Verak/Sifa lexicon events
  • Connects to Ozone label stream (wss://labeler.verak.app)
  • Writes Redis KPI counters (kpi:{metric}:{date}, 90-day TTL) and enqueues post jobs
Verification
  • Settings verification status now checks both the Redis verification record and labeler.verak.app directly; manually granted verak-verified labels surface correctly
  • Ozone label display name updated: verak-verifiedVerak Verified
Brand
  • Colour palette entry renamed: Gander GoldKV Gold (#E6B325 unchanged)
  • All references to “Gander Gold verification” updated to “KV Gold verification” across app copy and admin panel
Bug fixes
  • Duplicate React key warning in Live Activity feed resolved by deduplicating merged posts by post.uri before render
  • isNetworkHidden and isNetworkVisible both now use articleNetworkKey() consistently
  • clearAll() in AtProtoContext is now a hard clear — eliminates previous user’s profile bleeding through on new login
  • XRPC proxy now routes app.bsky.* queries to public.api.bsky.app directly; fixes “Method Not Implemented” errors

0.1.0 — May 2026

Trust Gateway
  • Initial public specification published
  • Ozone labeler live at labeler.verak.app
  • Label vocabulary live: verak-verified, verak-pro, verak-gander, verak-eurosky, verak-recruiter
  • Public label query endpoint live: com.atproto.label.queryLabels
  • WebSocket label subscription live: com.atproto.label.subscribeLabels
  • Subscription-level revocation live (Pro lapse negates verak-pro automatically)
Lexicon Reference
  • Initial reference published covering all active id.sifa.* and is.verak.* schemas