Security improvements and bug fixes
This release includes security hardening and various bug fixes to improve platform stability and reliability.
Changelog
Every release in plain language: new features, improvements, fixes and anything you need to act on.
This release includes security hardening and various bug fixes to improve platform stability and reliability.
1 security hardening fix
stop client components calling read-only server actions
the crash page on /login had three buttons and no way out
the Vercel toggle was on but Next never got a deploymentId
stop the marketing nav rendering on top of /experts, surface the libraries in the footer
stop the marketing nav rendering on top of /experts, surface the libraries in the footer
www reported NOTHING to Sentry — wrong project slug + no DSN
make every sync run addressable, exportable and announced
give manually-added candidates a face
tell the truth about the meeting, and stop showing HTTP codes
rebuild the dashboard as one command surface
booking flow, call room, Expert console, admin curation
Expert Network — public directory + paid consultations
long-tail catalog, role bundles, cost attribution, vendor webhooks, ops
vendor-agnostic post-hire provisioning and measurement platform
custom domain for the booking page, for hosts without a workspace
the sidebar owns create, calendar and help; delete the desktop topbar
notifications nav row across talent, client, agency, recruiter
desktop topbar no longer carries notifications
render notifications as a sidebar nav row
rail + shell surfaces, engagement stats, item feedback
PersonAvatar — one way to render a person
memoize applicant identity resolution per request
move the four analytics mounts off Vercel Flags to env
the activity filters were rendering sentence fragments
stop the dashboard printing "Activity" twice
add the missing 'use server' to the activity action
render candidate photos on the ATS dashboard and interviews
unblock the R2 résumé preview and the localized Ads connect beacon
make the results list return real interviews
rail dot must out-specify the label-hide rule; button nav rows fill width
rail dot ring must match the sidebar surface
restore helpSlot gate, dead mobile-sheet row, tour geometry
retarget the notifications step to the sidebar row
repair 35 bare Headless <Label>/<Description> renders
talent-sourcing entitlement gate + spend guard
classical item analysis (item + version statistics)
trial subsystem — decision gate, sweep, admin grants
commit the emails-billing catalogs its import already requires
hide the unreachable client "view all" link; warn on ignored nav props
localize the mobile bell's accessible name
2 security hardening fixes
cache root /public assets and drop 2.7MB of dead scaffold imagery
stream live sync progress to the cockpit
repair the deal sync and install a schema-drift guard
language switcher on the talent explore intro video
unified documents hub for talent, client and recruiter
host UI for event templates + reminder cadence, with live preview
host-authored event templates + configurable reminders
surface a coarse sync state on the public confirmation
tell the attendee when their booking is held but unsynced
tell the HOST when a booking never reached their calendar
align the PNG renderer with the SVG and share one fitting rule
close the moderation hole in every legacy reader
unmeasurable factors scored 100, pinning half of every match score
send booking mail in the recipient's language, withhold sync diagnostics
two bugs only a real browser could show
language switcher on the profile intro-video section
multi-language intro videos with analysis, quotas and moderation
sequence the device pre-flight, mic before camera
let DeviceChecks accept the intro's optional flags
close the verified-skill self-mint and gate public signal reads
score against the DELIVERED items, not just the answered ones
scope the next-intl client payload per route group
stop loading HubSpot and PostHog Support on the auth funnel
wire violation reporting into the auth-surface CSP
add 34 keys that components call but the catalog never had
restore 2 dropped keys and author 1 that never existed
restore 42 calendar keys an earlier consolidation merge dropped
restore the error-boundary keys staging's boundaries already call
restore the intro-video keys staging's code already calls
4 security hardening fixes
add Apicanta to the hero credit row
Yari Taft + investBA, and the two-panel format
align the panel cards and rebuild partners as a ledger
lengthen ISR windows from hourly to daily on editorial pages
add calendar sync-health schema
real branded-mailbox seat quotas + apex caution at DNS step
phases 2-4 — webhook de-dup, Plan & billing merge, Calendar into Integrations, full i18n + General fixes
phases 2-4 — webhook de-dup, Plan & billing merge, Calendar into Integrations, full i18n + General fixes
green the gate — documents schema decoupled from type regen, optional deps, nav/category contracts
inline pause/resume from the Ops spend table (phase 5)
admin-configurable Didit biometric workflow (system_settings + workflows dropdown; env fallback)
candidate async result reveal + sub-score report (poll → analyzing → CEFR band + dimension meters)
CEFR↔IELTS/TOEFL concordance + preserve SpeechAce scaled scores + show equivalence to candidate
drive SpeechAce dialect from item context (fairness — no hardcoded en-us national-origin proxy)
per-response scoring observability (provider/scorer_kind/needsReview/cost in structured log)
wire live capture → Rekognition match → server-verified proctoring; purge captures on retention
wire server-proctoring session lifecycle into sittings (flag-OFF; verified stays gated on a real matcher)
biometric retention — 365d statutory clamp, provable post-delete verification, warn on disable
wire confidenceMeasured from scorer_kind (real prior gate); TOEFL concordance + throttle guard + honesty (review fixes)
invites empty-title + gate dead career CTAs when flag off, closes #career-compass