> ## Documentation Index
> Fetch the complete documentation index at: https://docs.researchanddesire.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Version 0.0.0

> Placeholder release for the RAD Dashboard

<Update label="Version 0.0.0" description="Placeholder Release">
  ## Placeholder Release

  This is a placeholder entry for future dashboard updates.

  ### What to expect

  * **New features** — Detailed announcements of new capabilities as they ship
  * **Improvements** — Enhancements to existing functionality
  * **Bug fixes** — Notable fixes that improve your experience

  ### v2.4.8

  * **Dependency updates** — Updated react-hook-form to v7.71.2 for improved form handling stability and bug fixes

  ### v2.4.7

  * **Admin email search** — Admins can now search for users by email address in the admin panel, making it easier to find and manage user accounts

  ### v2.4.6

  * **Push notification test accuracy** — Aligned test assertions with error reporting behavior, ensuring failure scenarios correctly expect error responses

  ### v2.4.4

  * **Chaster pull action fix** — Fixed issue where pulling lock data from Chaster could fail due to database permission errors
  * **Chaster lock detection fix** — Fixed lock status filter to correctly identify active locks when syncing from Chaster

  ### v2.4.1

  * **Chaster break state sync** — Hygiene breaks initiated on the physical Lockbox device now automatically sync to linked Chaster locks, triggering temporary openings and resuming when the break ends
  * **Push notification error reporting** — Fixed silent failures in push notifications; errors are now properly reported when VAPID keys are missing, database queries fail, or no subscriptions exist

  ### v2.3.2

  * **Chaster break countdown sync** — Break end times from Chaster temporary openings now sync to the dashboard and Lockbox, enabling accurate countdown timers during hygiene breaks
  * **Bluetooth device matching improvement** — BLE pairing now uses name prefix matching, improving compatibility with devices that have variable name suffixes

  ### v2.2.42

  * **Admin Give Up Control toggle** — Admins can now enable or restore "Give Up Control" for users directly from the admin panel, with a confirmation dialog showing the user's current consent policy

  ### v2.2.41

  * **Legacy email cleanup** — Removed deprecated legacy email field from database; user lookups now use authenticated user IDs exclusively
  * **Feature flag payload fix** — Fixed feature flag display on experiments page using updated PostHog API

  ### v2.2.39

  * **Dependency updates** — Updated Tailwind CSS to v4.2.1 for improved styling performance and bug fixes

  ### v2.2.37

  * **DST duration calculation fix** — Fixed issue where countdown timers could be off by 1 hour when a Daylight Saving Time transition fell within the duration interval

  ### v2.2.36

  * **Device pairing flow for logged-out users** — Pairing code links now work for users who aren't logged in; login redirects automatically to complete device pairing

  ### v2.2.35

  * **Device pairing success feedback** — After pairing a device, a success toast now confirms the pairing (e.g., "OSSM paired successfully!")

  ### v2.2.34

  * **OSSM pairing code refresh fix** — Fixed issue where already-paired OSSM devices could not generate new pairing codes, preventing device re-pairing or transfer to a different account

  ### v2.2.33

  * **Bluetooth OSSM pairing** — Pair your OSSM directly via Web Bluetooth in Chrome/Edge for streamlined one-click setup, matching the Lockbox pairing experience
  * **Improved BLE pairing error handling** — Bluetooth device pairing now displays clear error messages with retry options when auto-claim fails

  ### v2.2.32

  * **Dependency updates** — Updated PostHog analytics package to v1.357.1 for improved stability and latest features

  ### v2.2.31

  * **Vote author usernames fix** — Fixed display of voter names on the lockbox activity page; vote authors now show correctly alongside segment owners

  ### v2.2.30

  * **Bluetooth Lockbox pairing** — Pair your Lockbox directly via Web Bluetooth in Chrome/Edge for a streamlined one-click setup experience
  * **Saved WiFi networks** — Store WiFi credentials in Settings to send them to your Lockbox during Bluetooth pairing without re-entering passwords
  * **Lockbox reboot on unpair** — Unpaired Lockbox devices now automatically reboot to return to setup mode

  ### v2.2.28

  * **Email change modal code quality** — Refactored step state management to use constants for improved maintainability

  ### v2.2.27

  * **Dependency updates** — Updated Hono package to v4.12.2 for improved stability

  ### v2.2.26

  * **Streamlined email change flow** — Email address updates now use in-modal OTP verification instead of redirecting to a separate confirmation page

  ### v2.2.25

  * **Multiple device support fix** — Fixed dashboard errors for users with multiple devices of the same type by selecting the most recently visited device instead of failing

  ### v2.2.24

  * **Training duration accuracy fix** — Fixed duration calculation for DTT training segments to use wall-clock time instead of accumulated play time, correcting inaccurate session duration display
  * **Duration display improvements** — Segments with zero or missing duration now display "—" instead of "0s" for clearer readability

  ### v2.2.22

  * **Development environment cleanup** — Removed unused Cursor editor environment configuration file

  ### v2.2.21

  * **Lock session auto-expiration fix** — Fixed cron job that automatically expires lock sessions; function was broken by previous search\_path security update

  ### v2.2.20

  * **Lock duration statistics fix** — Fixed lock duration calculation functions (`get_longest_lock_duration`, `get_total_lock_duration`, `get_locked_time_percentage`) broken by previous security update

  ### v2.2.19

  * **Database function fix** — Fixed statistics and lock data queries broken by previous security update; restored correct schema resolution for affected database functions

  ### v2.2.17

  * **Database security hardening** — Fixed function search\_path security warnings across all database functions to prevent potential search\_path injection vulnerabilities
  * **Promotions policy fix** — Tightened INSERT policy on Promotions table to properly verify ownership before allowing inserts

  ### v2.2.16

  * **Database query performance** — Added indexes on owner and foreign key columns across Chaster, OSSM, and Lockbox tables for faster data lookups

  ### v2.2.14

  * **Email verification code input** — Upgraded email verification form to use modern OTP input with auto-submit when all 6 digits are entered
  * **DTT web flasher stability fix** — Fixed issue where the erase checkbox could reappear during firmware installation due to lit-html template conflicts

  ### v2.2.13

  * **Discord login configuration fix** — Fixed Discord OAuth configuration to resolve login issues in local development environments

  ### v2.2.12

  * **Chaster debug logging cleanup** — Removed diagnostic logging from Chaster integration now that OAuth state validation issues have been resolved

  ### v2.2.9

  * **Training segment type selector fix** — Fixed issue where Ultra-exclusive segment types were not available when editing training templates

  ### v2.2.8

  * **Chaster integration user context fix** — Fixed issue where Chaster account linking used the wrong user context when managing another user's device
  * **Keyholder lockbox detection** — Keyholders can now link Chaster to lockboxes owned by users they manage, not just their own devices

  ### v2.2.7

  * **Chaster OAuth permissions fix** — Fixed issue where account linking could fail due to insufficient database permissions when storing Chaster credentials

  ### v2.2.6

  * **Chaster OAuth state fix** — Fixed issue where account linking could fail due to state mismatch when completing the Chaster authorization flow

  ### v2.2.4

  * **Chaster OAuth debugging** — Added diagnostic logging to troubleshoot state validation issues during Chaster account linking

  ### v2.2.3

  * **Pull from Chaster button** — New sync button on the Lockbox dashboard and Chaster integration settings to manually pull the latest lock data from Chaster
  * **Bidirectional Chaster time sync** — Time changes made in the dashboard (add/remove time, DTT rewards, break penalties) now sync to linked Chaster locks automatically
  * **Simplified Chaster disconnect** — Removed the "purge data" option when disconnecting Chaster; historical data is now always preserved
  * **Chaster linking improvements** — Smoother account linking from the Chaster extension iframe with automatic lockbox pairing detection

  ### v2.2.2

  * **API naming consistency** — Consolidated DTT and Lockbox API endpoints to use "templates" terminology consistently, removing deprecated "settings" aliases for cleaner API documentation

  ### v2.1.5

  * **DTT & Lockbox API implementation** — Added server-side route handlers for all DTT templates, DTT sessions, Lockbox templates, and Lockbox sessions endpoints
  * **OpenAPI schema expansion** — Extended OpenAPI specification with complete request/response schemas, pagination parameters, and detailed examples for all v1 API endpoints

  ### v2.1.4

  * **DTT Sessions API** — New endpoints to list, retrieve, and fetch the latest DTT training sessions with full segment details via the public API
  * **DTT Template Activation API** — Activate DTT training templates programmatically via `POST /dtt/templates/{id}`
  * **Active Template endpoints** — New `/dtt/templates/active` and `/lkbx/templates/active` endpoints return the currently active template
  * **Lock Sessions API** — New endpoints to list, retrieve, and fetch the latest lock sessions with segment history
  * **API naming consistency** — Renamed "Settings" to "Templates" across DTT and Lockbox API endpoints for clearer terminology

  ### v2.1.3

  * **Lockbox pairing status API** — Lockbox devices can now check their pairing status via a new API endpoint, enabling firmware to verify device registration

  ### v2.1.2

  * **Calibration input feedback** — OSSM toy calibration now displays helpful messages when min/max values are automatically adjusted, explaining why the value changed (e.g., exceeds toy length, negative values, or insufficient gap between min and max)

  ### v2.1.1

  * **Sent invitations visibility** — Partners settings now displays invitations you've sent to others alongside invitations you've received
  * **Cancel sent invitations** — You can now cancel pending partner invitations before the recipient accepts or declines

  ### v2.0.8

  * **Template name display** — Trainer activity now shows the template name separately from the session name, making it easier to identify which template was used for each session
  * **Improved session card layout** — Points badge is now larger and more prominent on recent trainer session cards

  ### v2.0.7

  * **Test stability improvements** — Re-enabled Chaster integration tests and standardized test ID generation across all integration tests, improving CI reliability and reducing flaky test failures

  ### v2.0.6

  * **Integration test infrastructure** — Converted API key and DTT training completion tests from mocked to real database integration tests for improved reliability and confidence in code changes

  ### v2.0.5

  * **Active lock handling on partner removal** — Removing a partner now detects active lock sessions and prompts you to end the lock or keep it active before completing the removal

  ### v2.0.4

  * **DTT release timeline event** — Lock timeline now displays a "Deepthroat release condition met" event when a session auto-completes via DTT training goal

  ### v2.0.3

  * **Give Up Control tooltip** — Disabled settings sections now display a tooltip explaining why they are locked when Give Up Control is enabled

  ### v2.0.2

  * **DTT condition release** — Lock sessions can now be configured to auto-complete when the lockee reaches a cumulative Deepthroat Training goal, allowing early release through training effort

  ### v2.0.1

  * **Configurable DTT time reduction ratio** — Lock settings now support customizable XP thresholds for time reduction (e.g., "5 XP = 10 minutes removed") instead of the previous fixed 1-point-per-minute formula

  ### v1.16.11

  * **Onboarding security improvement** — Username setup during onboarding now uses proper user session permissions instead of elevated privileges
  * **Onboarding error logging** — Added detailed error logging for user verification status updates to improve debugging

  ### v1.16.10

  * **Users API response improvements** — The `/api/v1/users` endpoint now returns enhanced profile data (username, subscriptionTier, profileImage, profileDescription, profileTitle) in a flat structure
  * **Lock session access validation** — The lock/unlock API now validates that target users and keyholders are accessible to the caller before performing operations
  * **Test lock override** — Added `isTestLock` parameter to the lock API allowing override of the template's test lock setting

  ### v1.16.9

  * **API access control hardening** — All v1 API endpoints now explicitly verify user access permissions in addition to row-level security policies
  * **Database query performance** — Added indexes on owner columns across all major tables for faster query execution
  * **Shared access query optimization** — Optimized permission checks for shared user access with short-circuit evaluation

  ### v1.16.8

  * **API token schema cleanup** — Removed redundant `jti` field from API tokens, completing the simplified UUID token format migration
  * **User registration fix** — Fixed issue where existing users were not properly linked during device registration tasks

  ### v1.16.7

  * **API pagination support** — All list endpoints now support `limit` and `offset` query parameters for paginated responses (default 50, max 100)
  * **OpenAPI specification** — Added public OpenAPI 3.1.0 spec at `/openapi.yaml` documenting all v1 API endpoints
  * **API route timeout increase** — Extended API route timeouts to 30 seconds for improved reliability
  * **Lock activation performance** — Improved lock session activation speed by running device lookups in parallel

  ### v1.16.6

  * **API token error logging** — Added error logging for API token lookups to improve debugging when authentication issues occur

  ### v1.16.5

  * **API performance improvements** — Optimized Supabase admin client initialization across device and session endpoints for faster response times

  ### v1.16.4

  * **Chaster SDK migration** — Migrated Chaster API integration to use a generated OpenAPI SDK for improved type safety and maintainability
  * **Automatic token refresh** — Chaster access tokens now refresh automatically when expired, preventing authentication errors during sync operations
  * **Webhook error handling** — Improved Chaster webhook processing to gracefully handle edge cases where session data is incomplete

  ### v1.16.3

  * **Integrations settings page** — Chaster integration has moved to a new dedicated Integrations page under Settings for a cleaner experience
  * **Chaster integration for all users** — Chaster integration is now available to all users with a paired Lockbox (previously limited to beta testers)
  * **In-line Chaster sign-in** — Link your R\&D account directly within the Chaster extension configuration without leaving the page
  * **API token format simplified** — API tokens are now simple UUIDs for improved reliability and easier debugging

  ### v1.16.2

  * **Hygiene break penalties** — Exceeding your allowed break time now automatically extends lock duration by the configured penalty amount
  * **Break settings consolidation** — Break penalty configuration moved into the Hygiene Break Settings dialog for easier setup
  * **Break penalty default** — New locks now default to no break penalty (previously 12 hours)
  * **Timeline improvements** — Break penalty events now appear in your lock timeline with a dedicated timer icon

  ### v1.16.1

  * **Duration display fix** — Fixed edge case where countdown timers could display negative values near month boundaries and DST transitions

  ### v1.15.12

  * **Unlimited training segments for all users** — All users can now create up to 100 training segments per template, removing the previous 3-segment limit for free users

  ### v1.15.11

  * **Public voting duration limits** — Keyholders can now configure minimum and maximum lock durations for public voting, preventing votes from extending or reducing lock time beyond specified bounds
  * **Duration limit UI feedback** — Public voting page now displays warning messages and disables buttons when duration limits are reached
  * **Vote rejection cleanup fix** — Votes rejected due to duration limits no longer create orphan database records

  ### v1.15.10

  * **OSSM pairing codes** — OSSM devices now display a 6-character pairing code on screen for easier setup, replacing the previous MAC address entry method
  * **Pairing code matching fix** — Pairing codes are now matched case-insensitively, preventing issues when entering codes in different letter cases

  ### v1.15.9

  * **Dependency updates** — Updated dotenv package to v17.3.1 for improved environment variable handling

  ### v1.15.8

  * **Partner email notifications** — Keyholders and partners now receive personalized email notifications that reference the lockee by name (e.g., "Your partner, username, has started a break period")

  ### v1.15.7

  * **Database seed modularization** — Split monolithic seed file into organized modules for improved maintainability and faster local development setup
  * **Environment-based storage paths** — Storage asset paths now use environment variables, enabling consistent configuration across local, preview, and production environments

  ### v1.15.5

  * **CI workflow optimization** — Database linting now only runs when supabase files are changed, speeding up pull request checks
  * **Database schema configuration** — Added chaster and ossm schemas to search path for improved query resolution

  ### v1.15.4

  * **Code quality CI workflow** — Added automated linting, code quality checks, and unused code detection for pull requests
  * **TypeScript type safety** — Improved component type definitions across the codebase for better reliability
  * **OSSM web flasher cleanup** — Removed deprecated development mode flasher code; production flasher remains available

  ### v1.15.3

  * **OSSM/RADR web flasher redirect** — Web flashers for OSSM and RADR devices have moved to the documentation site for an improved experience
  * **User account recovery** — Added automatic recovery for accounts with missing user records, preventing sign-in issues
  * **Auth error handling** — Authentication flows now handle registration failures gracefully without blocking sign-in

  ### v1.15.2

  * **Admin user impersonation** — Fixed impersonation feature to properly log in as users from the admin panel
  * **Admin search improvements** — Search now supports finding users by Lockbox MAC address and legacy email
  * **Onboarding consent fix** — Continue button now properly enables when age verification checkbox is checked

  ### v1.15.1

  * **User data integrity** — Enforced required authentication user IDs for improved account data consistency

  ### v1.14.13

  * **Tailwind CSS v4 upgrade** — Migrated to Tailwind CSS v4 with improved styling engine and CSS-based configuration for better performance

  ### v1.14.12

  * **OSSM statistics cards** — OSSM dashboard and activity pages now display total strokes and total distance alongside existing session stats
  * **Enhanced duration formatting** — Duration display now supports days (e.g., "2d 3h 15m") and omits seconds for long durations for better readability
  * **Home page OSSM tile improvements** — OSSM tile on home page now shows total time, total strokes, and total distance stats

  ### v1.14.11

  * **Completed session display** — Lock countdown now shows "Completed" text when a session has ended instead of displaying zeroed timers
  * **Hide modify controls for ended sessions** — Add/remove time and modify buttons are now hidden once a lock session has completed
  * **Improved device state labels** — "Session in progress" replaces generic "Locked" status; "On a break" wording improved for clarity

  ### v1.14.10

  * **Lockbox device state labels** — Device status now displays user-friendly labels based on actual firmware state (e.g., "Locking in progress", "WiFi setup in progress", "On break") instead of generic session states

  ### v1.14.9

  * **Lockbox Quick Actions redesign** — Lock/unlock buttons moved from a separate card to inline placement with context-aware visibility
  * **Button tooltips** — Buttons now support an optional tooltip prop for displaying helpful hints on hover
  * **Lock session button improvements** — Start and end session buttons now have clearer labels and tooltips explaining their effects
  * **Session management icons** — Add/remove time, modify settings, and abandon buttons now display icons for better visual clarity

  ### v1.14.8

  * **Changelog workflow** — Changelog updates are now generated directly in the main repository instead of a separate docs repo, improving release automation

  <Tip>
    Bookmark this page to stay up to date with the latest platform changes.
  </Tip>
</Update>
