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
/discoversurfaces 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
/discoverlets 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/globalwith 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
- 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
- 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; maintainsdirectory:indexRedis set and per-DID field cache automatically - New API:
GET /api/directory/index— returns enriched member cards filtered byregion,category,verified, andplanet; results cached in Redis for 60 seconds - Region detection from AT Protocol handle TLD:
.gander.ca/gander.social→ca,.eurosky.social→eu, all others →global - Members with
includeInGlobal: trueappear 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.listRecordsagainst 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
IntersectionObserversentinel; 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 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
PlanetCardnow reflects subscription state — green border and “Joined ✓” badge when subscribed- Planets ownership notice updated to “Managed by Verak.app”; DID-hardcoded check replaced with
isCuratorprop driven byVERAK_CURATOR_DIDenv var - Subscribed planet nodes appear on the Orbit Map with ringed ellipses, category colour, and member panel on click
WritingFeedapplieshiddenNetworksfilter 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 ActivityHeatmapacceptshiddenNetworksprop; all derived stats, bars, legend, and tooltips exclude hidden networks- Fixed
Cannot access before initializationerror caused by out-of-orderuseMemodeclarations
- 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
CredibilityTierPillderives label exclusively fromscore.tier; never reads fromlabelsarray
- 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
- Settings verification status now checks both the Redis verification record and
labeler.verak.appdirectly; manually grantedverak-verifiedlabels surface correctly - Ozone label display name updated:
verak-verified→Verak Verified
- Colour palette entry renamed:
Gander Gold→KV Gold(#E6B325unchanged) - All references to “Gander Gold verification” updated to “KV Gold verification” across app copy and admin panel
- Duplicate React key warning in Live Activity feed resolved by deduplicating merged posts by
post.uribefore render isNetworkHiddenandisNetworkVisibleboth now usearticleNetworkKey()consistentlyclearAll()inAtProtoContextis now a hard clear — eliminates previous user’s profile bleeding through on new login- XRPC proxy now routes
app.bsky.*queries topublic.api.bsky.appdirectly; 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-proautomatically)
- Initial reference published covering all active
id.sifa.*andis.verak.*schemas

