Skip to main content

v0.6 Release Notes

v0.6.1

Released: 2026-02-09

What's Changed

Changes since last production release

  • Fix VideoAdmin drag-and-drop test to match renamed CSS classes (c93db21e)
  • Remove legacy recruitment fields from export/import tests (10b478b3)
  • Compute deployment participant counts from rooms and show active sessions (2434fa41)
  • Unify upload video and upload image modal styling (a54f2a0f)
  • Fix permission icons wrapping to 2x2 grid in Deployments table (393b66db)
  • Sync config to Prolific before publishing study (b3be71ad)
  • Fix Prolific API error extraction for nested error objects (fc27b392)
  • Remove legacy experiment-embedded recruitment system (857a9402)
  • Require study description for Prolific publish and fix error classification (7466ca56)
  • Fix Prolific deployment study creation 500 error and rename docKey params (f47f28ed)
  • Add green focus-visible rings to custom-styled buttons across components (47185dab)
  • Fix deployment card UX: top-pinned expand, single-click close, drag reorder, completed sessions (1890bd7a)
  • Derive experiment visibility from resourcePermissions instead of stale doc field (13e3fdaa)
  • Replace default blue focus outlines with green focus rings on recruitment page (5536bdf2)
  • Fix sessionRecorder emulator test expecting undefined instead of empty array (52df265c)
  • Fix org-level permissions missing from deployment and legacy experiment listings (ee915e9c)
  • Add room subcollections, experiment stats, and sync metrics batching (8a03b0fd)
  • Add caching, Firestore transactions, and simplify server-side pagination (e1d34c69)
  • Fix deployment auto-stop not triggering when target participants reached (816cd8e4)
  • Fix expired token errors by preferring Firebase SDK over stale localStorage (c057cee9)
  • Simplify Data Management access column to show only view and export badges (03b87470)
  • Remove draft deployment state, create deployments directly as active (cf2b4e88)
  • Fix Global State Matrix column alignment at narrow window sizes (0f18ad74)
  • Fix waitingRoomManager emulator tests for subcollection removal (d05df5a6)
  • Add deployment deletion, fix deploymentId tracking, replace SSE with WebSocket, remove participants subcollection (5258e617)
  • Replace experiments table with deployments table in Data Management (6cf5e0ed)
  • Fix deployment invitation missing real-time updates and draft study participation (0d411579)
  • Update EligibleRooms test assertions to match Experiment-to-Study terminology change (49fe03cd)
  • Add deployment lifecycle management and use deployment names in participant-facing UI (96c29f56)
  • Fix private recruitment 500 errors and show directly assigned participants (48aff9f3)
  • Replace deployment creation modal with direct navigation and WebSocket auto-save (dc513215)
  • Fix test mocks to use text() for safeParseJson compatibility (1724b34b)
  • Fix recruitment UI bugs: flickering sessions, broken search, non-editable config (9099ddf7)
  • Redesign recruitment UI with expandable cards and collapsible detail sections (0c1bd357)
  • Fix acceptExperimentParticipantInvitation: swap misapplied code review fix (436a7766)
  • Fix 24 failing emulator tests and 2 production permission bugs (e1c1a627)
  • Add deployment-scoped recruitment system (4ed7ee72)
  • Fix missing Comprehension tab in Data Management by including pre-experiment events (bb6b3048)
  • Fix ImageUploader tests to match simplified permissions and updated drag-drop text (f2c0f56d)
  • Fix recruitment deployment system: API resilience, caching, card UI, and edit discoverability (b3bb3d10)
  • Clean up Image and Video uploaders: simplify permissions, improve drag-drop UX (d008eb97)
  • Fix Image Manager showing empty folders by switching to client-side filtering (a3441690)
  • Fix collaboration cursors for scroll offset and add selection highlighting (92ee0176)
  • Fix org members not seeing shared experiments due to missing resourcePermissions entries (d409bb04)
  • Fix recruitment system: Firestore indexes, query simplification, experiment loading, and invitation redirect (9fbe0893)
  • Fix dataAccessControl tests to match resourcePermissions migration (4224bb00)
  • Generalize instruction questions to support scored and unscored types (58baaaee)
  • Add Recruitment tab with deployment service for decoupled experiment campaigns (ba413e23)
  • Fix failing tests for V3 permission migration and race condition in UnifiedPermissionManager (ff31d8cc)
  • Migrate data permissions to resourcePermissions and remove dead V2 data routes (576540ac)
  • Replace PreExperimentTab with dedicated ComprehensionTab in data management (3c830e3f)
  • Migrate media permissions to resourcePermissions as single source of truth (04155d61)
  • Migrate experiment permissions to resourcePermissions as single source of truth (51d13c2a)
  • Update base64 audio recovery script to use org-scoped storage paths (d73843af)
  • Fix recording storage architecture: unify audio and video under org-scoped paths (02b4e5e1)
  • Skip personal workspace creation when registering via team invitation (b999b1ef)
  • Fix Register tests for invitation flow changes (bad9fe35)
  • Fix video preloading failures by enabling CloudFront HLS delivery (bc94bbb4)
  • Fix invitation flow: email pre-fill, auto-approval, and auth hardening (2f99dc9a)
  • Fix audio recording uploads by fixing participant permission check (2f7d776e)
  • Add real-time collaboration UI for experiment designer (7a896f6b)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.0...v0.6.1


v0.6.2

Released: 2026-02-09

What's Changed

Changes since last production release

  • Fix Redis reconnection failures and remove conflicting IngressRoute (39328e25)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.1...v0.6.2


v0.6.3

Released: 2026-02-10

What's Changed

Changes since last production release

  • Fix ShowImageComponent test missing isSignedUrl mock (1903889b)
  • Skip crossorigin for signed GCS URLs to avoid CORS failures (9b5c41b8)
  • Remove global button element selectors from app.css and forms.css (cfea1a9e)
  • Fix signed URL corruption in image proxy for stimulus mappings (e8754b1c)
  • Fix image drag-to-folder validation and folder button icon visibility (a97f422b)
  • Fix InstructionsDisplay test missing mocks for imageService and videoService (080429b4)
  • Fix Instructions test selector for block-based content editor (973ff172)
  • Fix Redis client-closed error on shutdown and sync room join timeout (c7c9c66f)
  • Fix ColorPickerButton props_invalid_value and each-block reconciliation crash (1dfc07f5)
  • Harden AudioRecordingComponent against resource leaks, race conditions, and silent failures (90199256)
  • Add media (image/video) support to instruction pages (9c1450f4)
  • Fix svelte-check accessibility and CSS warnings across 5 components (17cd502e)
  • Fix waiting room timeout and countdown bugs (b0d1f968)
  • Add key-category stimulus mapping type with folder-based sampling (e1f1cbf2)
  • Fix reactive loop in VariableManagerPanel causing 429 rate limit errors (2c058562)
  • Fix pre-experiment comprehension data not appearing in data management (e72ad142)
  • Fix deployment participant completion counts always showing 0/N (554712a8)
  • Add pre-experiment pipeline tracking for deployment dashboard (5beb2130)
  • Store video duration at selection time for sparse rating editor (40f9eec6)
  • Fix instructionsPages not persisted on experiment creation (ebbd41a7)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.2...v0.6.3


v0.6.4

Released: 2026-02-10

What's Changed

Changes since last production release

  • Fix HLS video streaming on Safari with CloudFront signed URLs (00cf8035)
  • Enforce consent → instructions → waiting room sequence (c56252e4)
  • Prevent SSL outages during deployments by skipping unnecessary Traefik restarts (68507e35)
  • Fix experiment permission 500 error and owner Unknown display (ba48deb9)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.3...v0.6.4


v0.6.5

Released: 2026-02-12

What's Changed

Changes since last production release

  • Add opt-in monitoring for active deployment cards (cdc8921e)
  • Fix effect_update_depth_exceeded and WaitingComponent console errors (f87509e1)
  • Fix effect_update_depth_exceeded and parseTemplate warning spam (e8c4ca60)
  • Fix lookup() to handle key-category stimulus mappings (7c698de9)
  • Fix deployment API 500: handle Firestore Timestamps in sort (92e67b66)
  • Fix bridgeService tests for structured Kernel event values (41d209fb)
  • Fix Kernel Flow2 event forwarding: sync connection state and improve event data (bb75fdba)
  • Fix deployment API 500 error and platform admin access (2539aee9)
  • Fix Instructions page tab scrollbar artifact and Grant Access button sizing (5074f88c)
  • Add key-category batch draw support for MultipleChoice image source (368f1ab1)
  • Improve Instructions editor: drag-and-drop blocks, remove purple theme, fix Add Page button (41819245)
  • Add inline question blocks, preview toggle, and changeable question types (a9bc0985)
  • Fix empty folder picker and add help text for stimulus mappings (d7e97a8c)
  • Fix emulator tests for org-level deployment permissions (bff22846)
  • Fix Instructions test assertions after tab bar redesign (0abbe830)
  • Integrate deployments into unified permission system (aad3006a)
  • Fix cross-page question corruption and improve instructions designer layout (5d79241b)
  • Fix low audio volume: add loudness normalization, raise bitrates and default volume (eef1a245)
  • Add dynamic image selection for MultipleChoice component (3c2ecabc)
  • Fix HLS video buffering: prefetch segments at startup, fix sync engine PID windup (b8e037c8)
  • Add question preview to instructions designer preview panel (e67a2db4)
  • Fix Kernel Flow fNIRS events silently dropped due to missing id field (96a78daf)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.4...v0.6.5


v0.6.6

Released: 2026-02-13

What's Changed

Changes since last production release

  • Fix Comprehension tab accuracy for data-only questions and unscored event recording (c4cf8f43)
  • Parallelize Firestore batch queries and add server-side deploymentId filter for data management (39147883)
  • Fix Kernel Flow2 event delivery by serializing value field to string (a4d59329)
  • Add Type column to data management Deployments table (4fef22e9)
  • Fix experimenter account request flow showing Access Denied instead of Pending Approval (4ba1c6b0)
  • Fix answer leaking between questions in InstructionsQuestionBlock (a4dcc501)
  • Make Monitor button a toggle with highlighted active state (bf70a063)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.5...v0.6.6


v0.6.7

Released: 2026-02-16

What's Changed

Changes since last production release

  • Fix Pupil Neon connection bugs and simplify setup UI (b967601f)
  • Streamline Neon REST connection: Bridge resolves hostname internally (54366fa1)
  • Wire up Frenz EEG event/marker sending via bridge LSL (43611739)
  • Fix gaze overlay not working due to LSL data not reaching frontend (ac222bdd)
  • Remove auto-select fallback for global component tabs (5226f7c3)
  • Fix GlobalComponentConfigurator showing wrong config schema for selected component (e86d9252)
  • Hide GazeOverlay from global components UI when Pupil Neon is disabled (851d4691)
  • Fix global component config saving to wrong component on tab switch (713c54bf)
  • Move Neon recording option into DeviceCard component (a68b9eb1)
  • Fix Pupil Neon bridge protocol mismatches and add recording config (d582f344)
  • Set emailVerified on approval and surface re-enable failures (9f57e33b)
  • Fix device event ordering and async cleanup in experiment lifecycle (9887e9b0)
  • Fix registration failure for orphaned Firebase Auth users (72889afd)
  • Register GazeOverlay as a global component with configurable trail (206e48a4)
  • Deploy dev TLSStore in shared deployment workflow (4dcb08bf)
  • Block unapproved experimenters at registration and API level, remove dead auth code (2750aac9)
  • Add Pupil Labs Neon eye tracker integration (b07307d7)
  • Fix post-experiment questionnaire selection highlighting, data shape, and back navigation (b68660e2)
  • Harden auth system: fix race conditions, remove dead code, add tests (d0d2b59d)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.6...v0.6.7


v0.6.8

Released: 2026-02-17

What's Changed

Changes since last production release

  • Fix sessionRecorder mock missing addParticipantToRoom and createOrUpdateRoom (0770d0d4)
  • Hide completed rooms in deployment tracker and allow reactivation (1c7cff8c)
  • Fix participants not appearing in data management panel (ef2dfca5)
  • Fix 3 failing emulator tests after recent refactors (b1bdb5e4)
  • Upgrade API keys route to use resourcePermissions for auth checks (ee9b7573)
  • Fix deployment participant counter never incrementing (647d4169)
  • Remove legacy permission fallbacks and clean up stale data paths (b838b161)
  • Fix comprehension data leaking across rooms via lobbySessionId stamping (33ded8c3)
  • Fix tab overflow in data management panel by adding flex-wrap (fc8b0094)
  • Fix experiment tracker showing wrong completion info for finished sessions (530129a4)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.7...v0.6.8


v0.6.9

Released: 2026-02-18

What's Changed

Changes since last production release

  • Fix Kernel and TTL device status check ignoring Bridge "Connected" response (65dc227b)
  • Fix Neon Bridge integration: race condition, recording order, and gaze setup (6a5cedcf)
  • Fix question buttons clipped when preview panel is open in Instructions tab (ed0cee4d)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.8...v0.6.9


v0.6.10

Released: 2026-02-19

What's Changed

Changes since last production release

  • Fix emulator tests: create deployments without org for non-owner rejection tests (83c06342)
  • Fix deployment emulator test error messages for unified permissions (5ce63813)
  • Fix tests for read-only mode permission refactor (f751a141)
  • Add read-only mode for Data Manager, Media Manager, and Deployments (a815ad50)
  • Fix error toast for view-only users opening ExperimentDesigner (ca6f9b47)
  • Register LikertScaleComponent in ExperimentRunner (2825d256)
  • Fix instructions tracker visibility and effect_update_depth_exceeded error (bf8bb73e)
  • Emit tracker update on lobby session creation (consent visibility fix) (f4c1dd59)
  • Fix session completion race condition (SESSION_COMPLETED 401 error) (c3e84231)
  • Fix fix-hls-status script to check both s3Key and docId HLS paths (c3e7f5ef)
  • Fix HLS 403 by deriving manifest filename from input stem (47edb26e)
  • Fix HLS silent failure by adding safety timeout and progressive fallback (28df995f)
  • Replace Firestore onSnapshot with REST + Socket.IO in DeploymentTracking (feb08a2b)
  • Fix square top corners on expanded active deployment cards (78efb209)
  • Fix cloudFrontService test mock missing logger.info and logger.warn (83ca8363)
  • Replace REST+WebSocket tracking with Firestore onSnapshot for live session table (80f48031)
  • Fix false reconnection overlay after waiting room matching (9346c512)
  • Fix false reconnection overlay and CloudFront PEM key handling (0bd748fc)
  • Fix HLS 403 from duplicate CloudFront signing params and move tracker notifications server-side (f056845c)
  • Add deployment tracker: pre-experiment visibility, session interventions, and messaging (63438474)
  • Fix remaining emulator test failures across 8 test files (430e478f)
  • Fix emulator tests: rename sessionId to roomId in test helpers (c8c1e253)
  • Fix mediaPreloader progress tracking test (5b94afa9)
  • Fix Firefox hang during multi-person experiment with HLS on S3 (692c5842)
  • Fix 25 failing CI tests across 6 frontend test files (496c8323)
  • Remove participations collection and migrate history to participantSessions (7210772d)
  • Upgrade Storybook v8 to v10 to resolve @sveltejs/vite-plugin-svelte v6 peer dependency conflict (5e972c6d)
  • Eliminate dual-writes, deprecate participations, and optimize downstream reads (da0e4ad9)
  • Leverage V4 sessions for deployment tracking, permission caching, and Prolific gateway (3e067c7e)
  • Clean up stale sessionId references missed in roomId consolidation (6d1ca24e)
  • Consolidate participant sessions and rename sessionId to roomId on events (682bee31)
  • Update dependencies across all workspaces (6ac59886)
  • Fix Prolific deployment issues and add HLS-aware video URL generation (40fc2916)
  • Add tests for gaze calibration and sharing, fix effect_orphan in gazeShareService (4792ee0f)
  • Add gaze calibration, require-calibration config, and multi-participant gaze overlay (1a00c34b)
  • Fix gaze overlay not rendering by handling varied bridge data formats (b5e1ccad)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.9...v0.6.10


v0.6.11

Released: 2026-02-19

What's Changed

Changes since last production release

  • Remove unreliable active sessions count from collapsed deployment cards (880afd9c)
  • Fix participant messaging: use socketMap instead of socket.roomId (53a4a8b7)
  • Restyle participant messaging button as Help pill above Feedback button (4213f55d)
  • Disconnect LiveKit on experiment completion and add redirect countdown timer (5fb7d8b9)
  • Add cancel/remove actions for private recruitment invitations and assignments (82107d67)
  • Fix effect_update_depth_exceeded in InstructionsQuestionBlock (4d52de6e)
  • Fix HLS video loading: switch MediaConvert to SINGLE_DIRECTORY (f589bfa6)
  • Fix duplicate experiment IDs causing Svelte each_key_duplicate crash (75a3fd49)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.10...v0.6.11


v0.6.12

Released: 2026-02-20

What's Changed

Changes since last production release

  • Prolific system review: fix V4 gateway, domain consistency, status guards, bonus V4 support, dead code cleanup (4d9a7286)
  • Fix Prolific real-time tracking by forwarding deploymentId through gateway redirects (84a791f1)
  • Fix Prolific study pause/resume/stop 502 errors for AWAITING_REVIEW status (fbe33a38)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.11...v0.6.12


v0.6.13

Released: 2026-02-20

What's Changed

Changes since last production release

  • Fix video volume resetting to saved value instead of 100% each session (9693ad20)
  • Fix audio recording duration showing 0s in Data Management (b97e8b18)
  • Fix pre-experiment events missing from Data Management by using V4 session tokens (cd4cb95d)
  • Fix experiment permissions system and deployment invite access (8cbf62e6)
  • Fix Prolific workspace selection gaps and improve API key error handling (305f8ed9)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.12...v0.6.13


v0.6.14

Released: 2026-02-21

What's Changed

Changes since last production release

  • Fix emulator test race condition in endExperiment questionnaire tests (fd3f2e7b)
  • Expand test coverage across backend and frontend (c94ccb1d)
  • Refactor Prolific gateway to V4 deployment-scoped route and fix V4 data quality (b96e39f3)
  • Fix required questions in instruction pages being bypassed (f48a99f2)
  • Fix submit button not centered in RapidRateComponent (d2cd14e0)
  • Fix deployment owners getting 403 on experiment tracking session operations (3cfc2ab8)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.13...v0.6.14


v0.6.15

Released: 2026-02-21

What's Changed

Changes since last production release

  • Migrate experiment components from experimentDataService facade to dataServiceV4 directly (70b4fb86)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.14...v0.6.15


v0.6.16

Released: 2026-02-21

What's Changed

Changes since last production release

  • Fix required questions skippable via outer Next button on instruction pages (88a1d13e)
  • Fix participants rerouted to instructions after waiting room matching (dbd41c54)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.15...v0.6.16


v0.6.17

Released: 2026-02-22

What's Changed

Changes since last production release

  • Add missing stateManager lock mocks to waiting room emulator tests (54937808)
  • Fix waiting room re-matching loop in multi-pod deployments (1081908a)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.16...v0.6.17


v0.6.18

Released: 2026-02-23

What's Changed

Changes since last production release

  • Fix data leak on account switch and cross-org visibility for org admins (037a93fa)
  • Fix folder PUT handler ignoring permission field, breaking cascade (84d5e17c)
  • Fix Kernel Flow not receiving experiment lifecycle events (70be8b90)
  • Add composite index for cross-org public resource permission queries (552cd2ef)
  • Fix Access column field mismatch and add cross-org debug logging (53a16a8a)
  • Fix cross-org visibility for public images, folders, and videos (a8a8eb00)
  • Fix image folder visibility field name mismatch and add cross-org query resilience (05bba06a)
  • Enable public access toggle for image and video folder permissions (c7f33652)
  • Fix public media not visible to non-organization members (dd271065)
  • Fix email template formatting and enforce consistent branding (bfc10c56)
  • Fix video playback CORS error for cross-member experiment deployments (1c7dea2b)
  • Add batch dismiss endpoint to fix slow Clear All notifications (c3823b57)
  • Fix new experimenters seeing all historical release note announcements (4eddd7d3)
  • Fix cross-org media access for shared/public experiments (eb50669d)
  • Fix public experiments not visible to members of other organizations (3f943c41)
  • Add PROLIFIC_GATEWAY_SECRET to deployment pipeline (c4967650)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.17...v0.6.18


v0.6.19

Released: 2026-02-24

What's Changed

Changes since last production release

  • Add EyeLink 1000 Plus frontend integration (6def85ae)
  • Fix Prolific completion codes returning ABANDON instead of SUCCESS (977acdd1)
  • Fix Prolific sending ABANDON codes instead of correct completion codes (ca8605f3)
  • Fix questionnaire preview not syncing to selected page tab (b266ec06)
  • Fix EventProcessor not reading componentType from V4 event.data (a469d6b4)
  • Fix questionnaire events not recording due to session status rejection (7abb984c)
  • Redesign PostExperimentQuestionnaire editor UI (f16b801b)
  • Fix Prolific "Unknown Code" on researcher dashboard (31ba184a)
  • Add ENCRYPTION_KEY to deployment pipeline (43e57d01)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.18...v0.6.19


v0.6.20

Released: 2026-02-24

What's Changed

Changes since last production release

  • Fix multi-page questionnaire responses from page 2+ not being recorded (5fefdd96)
  • Include recording media files in Download All zip (fb46c9e3)
  • Fix missing questionnaire responses for text input questions (049b3c9c)
  • Add missing data types to Download All: participants, questionnaire, comprehension (fbf326fa)
  • Switch Download All Data from lossy CSV to raw JSON (c9beb257)
  • Fix questionnaire badge count and move jszip to runtime dependencies (813254bb)
  • Fix V3 processors crashing on missing Firestore indexes and Prolific completion codes (06b44de2)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.19...v0.6.20


v0.6.21

Released: 2026-02-24

What's Changed

Changes since last production release

  • Fix flush race condition, options override, and recording filenames (9f469e77)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.20...v0.6.21


v0.6.22

Released: 2026-02-24

What's Changed

Changes since last production release

  • Add missing flush mock to PostExperimentQuestionnaireDisplay test (d5ec2887)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.21...v0.6.22


v0.6.23

Released: 2026-02-25

What's Changed

Changes since last production release

  • Fix backend Docker build failure caused by UID/GID 1000 conflict (0a66245f)
  • Remove exposed credentials from tracking, harden Traefik, and clean up dead code (63076008)
  • Fix memory leaks, harden security, and optimize monitoring infrastructure (79ad2ddc)
  • Fix deploymentId data visibility bug, OOM-kill cascade, and data loss on crash (dfd926bc)
  • Make gaze consumption layer device-agnostic with activeGazeService router (5cc8e4e0)
  • Integrate metrics pipeline and restructure Usage & Billing dashboard (49b72c34)
  • Fix Prometheus crash: replace wildcard rule_files glob with explicit paths (6a9242f4)
  • Add Prometheus scrape annotations to backend StatefulSet (93f1f5ed)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.22...v0.6.23


v0.6.24

Released: 2026-02-26

What's Changed

Changes since last production release

  • Restore lcov reporter removed during coverage config changes (8805ad9f)
  • Raise frontend test coverage from 45% to 71% with 5,700+ new tests (d306d3a4)
  • Fix experiment designer WebSocket disconnect/reconnect bugs (8594eae7)
  • Fix un-centered submit buttons in AudioRecordingComponent (fb49a363)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.23...v0.6.24


v0.6.25

Released: 2026-02-27

What's Changed

Changes since last production release

  • Update invitation service test to expect deploymentId field (6c163892)
  • Hide Send Invite button when participant already exists on platform (d212b088)
  • Fix email invitation flow for private experiment participants (87e2e4ae)
  • Fix participant 403 on experiments accessed via public deployment links (0d14765f)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.24...v0.6.25


v0.6.26

Released: 2026-02-27

What's Changed

Changes since last production release

  • Fix effect_update_depth_exceeded in ExperimentDesigner (d71ac1f4)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.25...v0.6.26


v0.6.27

Released: 2026-02-27

What's Changed

Changes since last production release

  • Fix second effect_update_depth_exceeded loop in ExperimentDesigner (c1450a35)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.26...v0.6.27


v0.6.28

Released: 2026-03-01

What's Changed

Changes since last production release

  • Create shared RefreshButton component, remove dead code, data-driven nav (4c73ed70)
  • Improve stimulus display: boolean toggle, media browser, right/below layouts (f09de6c7)
  • Add inline stimulus image display to input components (410bf741)
  • Fix delete button removing group instead of selected state within group (5d2746a7)
  • Fix video/audio tracks not toggling on videochat visibility state transitions (33308693)
  • Add configurable encoding preset for LiveKit recording egress (8e3e4069)
  • Fix Kernel Flow event timestamp ordering for correct duration calculation (f6070c80)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.27...v0.6.28


v0.6.29

Released: 2026-03-02

What's Changed

Changes since last production release

  • Fix cluster scaling: PDB deadlock, anti-affinity, HPAs, and dev environment (a2c14f46)
  • Add stimulus metadata to component responses and data management table (921e5fd4)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.28...v0.6.29


v0.6.30

Released: 2026-03-03

What's Changed

Changes since last production release

  • Fix deployment reactivation immediately re-completing (287b6b40)
  • Fix video not reappearing after chat window collapse/expand (0ebbd3f0)
  • Fix submit button hidden when scroll/overflow mode active (082fa379)
  • Add display options (overflow mode, fit strategy) to RapidRate config editor (af89ae33)
  • Fix participant count excluding egress bots and corrupted back button (4d5fbefc)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.29...v0.6.30


v0.6.31

Released: 2026-03-04

What's Changed

Changes since last production release

  • Fix PlatformAdminDashboard test to account for Plan Quotas tab (10fb06d0)
  • Fix monthly reset missing livekitMinutesThisMonth and add Plan Quotas admin UI (ed1858ce)
  • Fix LiveKit recording event visibility and timing precision (1ce976f8)
  • Fix participant disconnect and Prolific completion bugs (f974e453)
  • Fix each_key_duplicate error in StateListWithGroups (559bdbdb)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.30...v0.6.31


v0.6.32

Released: 2026-03-05

What's Changed

Changes since last production release

  • Fix non-Prolific participants showing COMPLETED_NO_CODE completion status (c1a07c4e)
  • Merge branch 'worktree-rosy-sleeping-pascal' into dev (640e7a62)
  • Merge branch 'worktree-peppy-forging-umbrella' into dev (9f696358)
  • Fix Prolific participant stuck state and completion code bugs (1b268280)
  • Fix questionnaire data recording reliability for non-text components (bc471004)
  • Fix recording events missing from CSV export and recording duration overshoot (6f407701)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.31...v0.6.32


v0.6.33

Released: 2026-03-10

What's Changed

Changes since last production release

  • Fix DeploymentsTable tests failing due to stale cache between test runs (7c34bcee)
  • Fix owner name resolution and consolidate user display name logic (79f4677d)
  • Cache deployments data in singleton store to eliminate loading spinner on breadcrumb navigation (cf601521)
  • Fix recordings cache staleness and add speaker detection diagnostics (52e5a5f8)
  • Fix role-specific behavior ignored due to stale experiment-level configMode (dc66a365)
  • Fix missing authorization header in external user search (6d257f9e)
  • Fix broken audio level meter during device setup (99268790)
  • Add completionOutcome tracking to experiment sessions (c5d033c0)
  • Fix normalizeRecordingStatus to separate STARTING from ACTIVE (654f89de)
  • Fix recording event timestamps round 2: duration, offset, and duplicate events (71fa01d4)
  • Fix recording events to use authoritative LiveKit capture timestamps (237aca18)
  • Fix silence event emit to match original LiveKit behavior (ca193be5)
  • Patch LiveKit silence detection to use shared AudioContext (9b671897)
  • Fix dev deployment timeouts from resource exhaustion (6f8c451d)
  • Fix LiveKit audio track ended loop from duplicate getUserMedia stream (f32ad8fd)
  • Fix pre-buffer duplicate URL loss, upgrade livekit-client, improve freeze diagnostics (4d73255e)
  • Fix HLS worker race condition and LiveKit AudioContext UI freeze (82b72e79)
  • Fix measureLatency tests using wrong socket object (3148a495)
  • Guard LogRocket initialization to production only (b39584be)
  • Fix sparse rating UI freeze from redundant persistence and resume contention (4ce987a7)
  • Fix measureLatency() using wrong socket and event name (18c8f228)
  • Fix HLS.js main-thread transmuxing freezes and pre-buffer video display (10e55c44)
  • Add missing mock methods for claimPreBufferedHls and attachHlsEventHandlers in ShowVideoComponent test (d483fa3a)
  • Fix HLS.js worker blocked by missing CSP worker-src directive, filter HLS from LogRocket (d4bd2741)
  • Add HLS pre-buffering and fix stimulusMappings preload gap (690405ee)
  • Replace || with ?? for numeric input bindings to stop masking valid 0 values (4f579e26)
  • Fix dataServiceV4 test: avoid microtask yield when no in-flight promises (442241cd)
  • Fix nested path updates failing in designer WebSocket, add metadata save diagnostics (69333778)
  • Fix main thread freeze, V4 event flush race condition, and HLS startup thrashing (28de9c4f)
  • Fix spurious batch events on rating clicks, add HLS freeze diagnostics, re-enable Sentry/LogRocket (93b98258)
  • Switch dev SSL cert from DNS-01 to HTTP-01 challenge to fix expired cert (bd30fb08)
  • Defer Sentry init during experiments to fix periodic main thread freezes (fac62d8f)
  • Fix video autoplay during sparse rating pauses, defer LogRocket during experiments (5668afb5)
  • Add deeper instrumentation to diagnose UI freeze trigger points (364e2fd5)
  • Add main thread freeze monitor, fix logger perf, restore RapidRate transition (d7ea7493)
  • Fix ActiveSpeakersChanged test to account for single-participant guard (801fd225)
  • Fix SparseRating modal lag caused by VideoChat reactive overhead (b94c0ac6)
  • Fix participant reconnection not working after disconnect (5bf051fb)
  • Fix WaitingRoom test: fire joined-waiting-room event before asserting timer (0fbe5569)
  • Fix questionnaire components missing data and inconsistent submit UX (5f16f9f5)
  • Fix Prolific completion code mappings and add server-side write for offline participants (3a319b83)
  • Show remaining time countdown in waiting room instead of elapsed time (95fca820)
  • Fix VideoChat black video on uncollapse/unhide and reduce UI lag (b5c72688)
  • Fix video recording timestamps and eliminate duplicate completion events (38e34a2e)
  • Surface participant disconnections in deployment tracking table (28666eaa)
  • Reduce experiment runner UI lag: eliminate redundant reactive updates (525b4d5a)
  • Fix systematic UI lag from LiveKit participant state update cascades (71edc4d9)
  • Fix sparse rating UI lag from redundant reactive cascades (48e6fc14)
  • Fix VideoChat collapse: black video on uncollapse and blocked header clicks (87c77258)
  • Replace sparse rating client polling with server-driven pause timers (36f3b0ba)
  • Fix ExperimentRunner test mock missing dataServiceV4.flush (7e25f1b1)
  • Fix sparse rating missing pauses on second video and countdown UI lag (b00d6cc9)
  • Fix VideoChat black video on uncollapse, add recordWhenHidden config (b6529357)
  • Fix sparse rating timeout tests to account for 2s server buffer (00a87ac5)
  • Fix LiveKit video black after VideoChat uncollapse (a7e4ee8d)
  • Fix experiment designer loading failures (4 Sentry bugs) (1376a79b)
  • Fix sparse rating modal freeze and data loss, add pause diagnostics (86590a16)
  • Fix sparse rating reliability: restore blocking init and eliminate reactive cascades (fb654dd5)
  • Fix video sync effect not re-running on collapse/uncollapse (b35e7ba0)
  • Eliminate sparse rating schedule pre-fetch in favor of server-driven pause events (97a79631)
  • Fix sparse rating modal race condition and reliability bugs (048a6fba)
  • Fix LiveKit video not showing after collapse/uncollapse (ac6bb17b)
  • Revert v0.6.32 commits to restore v0.6.31 stability (9dcbefac)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.32...v0.6.33


v0.6.34

Released: 2026-03-11

What's Changed

Changes since last production release

  • Fix recordWhenHidden videochat recording unreliability (b67c1e1e)
  • Remove dead Firebase upload path and clean up webhook handler (0bb6bd4b)
  • Fix role-specific configs storing full copies instead of deltas (de72d7c3)
  • Fix CountdownTimer not ticking and add countdown support to LikertScale (4ad7b8e1)
  • Fix duplicate component.response events in questionnaire and instructions contexts (731f5f9b)
  • Fix recording offset race condition and missing recording events (0bb21476)
  • Fix room participant count using subcollection data instead of drifted denormalized counter (e5b83cac)
  • Fix completion code recording for non-Prolific participants (12622c26)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.33...v0.6.34


v0.6.35

Released: 2026-03-12

What's Changed

Changes since last production release

  • Add Escape key support to close custom modals (b523d503)
  • Add write/admin scopes to API key generation (afabdf9d)
  • Fix backend Docker build missing shared/ directory and roles format in test (faa35f70)
  • Fix emulator tests for component type validation (9f7d2037)
  • Fix alias resolution in Docker build and CI tests (d886858b)
  • Add per-component JSON Schema validation (Phase 4) (a152ef73)
  • Add V3 experiment CRUD routes with API key authentication (f80f2331)
  • Fix experiment import rejecting valid component types and add schema-driven validation (ac1cc714)
  • Fix submit button visibility on MultipleChoice, Ranking, and RapidRate components (6d33e80a)
  • Clean up HLS video playback technical debt (f8d49c0b)
  • Fix CollaboratorCursors infinite effect loop and toFixed type errors (032355f1)
  • Add multi-layer video error recovery to prevent experiment freeze (34ce4784)
  • Fix EventProcessor state lookup mismatch causing confused component names (6fea3b34)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.34...v0.6.35


v0.6.36

Released: 2026-03-13

What's Changed

Changes since last production release

  • Fix ghost states from duplicate state IDs in experiment designer (662a8220)
  • Fix Escape key in API key modals by using window-level handler (cbe9a0f9)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.35...v0.6.36


v0.6.37

Released: 2026-03-14

What's Changed

Changes since last production release

  • Improve Consent tab UI consistency and reduce editor-preview code duplication (0c49aaac)
  • Add fresh production screenshots and TTL device photos to landing page (532eb146)
  • Fix video wrapping at end of playback in sync mode (fd184dd5)
  • Fix fit-to-screen view modes by implementing strategy-specific scaling and layout collapse (c72d3e5b)
  • Suppress remote audio playback when videochat is hidden with recordWhenHidden (f102e286)
  • Update landing page with accurate feature descriptions and accessibility improvements (82fe0acd)
  • Add complete OpenAPI 3.1.1 spec and Scalar docs UI for V3 API (87c44d8e)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.36...v0.6.37


v0.6.38

Released: 2026-03-14

What's Changed

Changes since last production release

  • Rename Compliance card to Collaboration and reorder deployment screenshots (f8943e22)
  • Add experiment tracker and Prolific configuration screenshots to landing page (de415c81)
  • Fix unifiedPermissionService test failure with optional chaining on response.headers (dec87fe7)
  • Update landing page feature cards with fresh screenshots and layout fix (a94bf414)
  • Fix permission removal JSON error and add server-side user enrichment (b2a2ee7e)
  • Fix blank API v3 docs page by allowing Scalar CDN in CSP for docs route (9f3832d2)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.37...v0.6.38


v0.6.39

Released: 2026-03-14

What's Changed

Changes since last production release

  • Allow cross-origin access to OpenAPI spec endpoint (88782ba2)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.38...v0.6.39


v0.6.40

Released: 2026-03-16

What's Changed

Changes since last production release

  • Update GitHub repo URLs from ljchang to hyperstudyio org (694c47da)
  • Add Terms of Service, Privacy Policy, and legal agreement infrastructure (3170c94f)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.39...v0.6.40


v0.6.41

Released: 2026-03-18

What's Changed

Changes since last production release

  • Fix tests for video sync throttling and buffering grace timer (580d843d)
  • Fix Firefox CPU spike during HLS video sync (d9f50f56)
  • Fix syncParametersManager tests for 2-state Kalman filter (b890df67)
  • Fix designer server to reassign duplicate state IDs instead of dropping them (c9b2dbfb)
  • Improve sync engine: 2-state Kalman, PID pause awareness, derivative filter (4201e3ca)
  • Fix video sync lifecycle issues: ended replay, slow calibration, stale state (d9db5cd8)
  • Fix sync metrics tab not showing for non-host participants (e0245cc1)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.40...v0.6.41


v0.6.42

Released: 2026-03-19

What's Changed

Changes since last production release

  • Add true sampling without replacement (no pool reset) (9a6041d8)
  • Preserve state groupings and randomizeStates through experiment export/import (9d850169)

Full Changelog: https://github.com/ljchang/hyperstudy/compare/v0.6.41...v0.6.42