Skip to main content
Version: 2.2.0

Changelog

This document lists the changes for each version of the MSR (Multi-Session Replay) module.

@mssfoobar/msr-app

1.4.0

Minor Changes

  • feat: add Swagger/OpenAPI documentation
  • chore: update golang.org/x/crypto to v0.44.0

1.3.1

Patch Changes

  • chore: upgrade Golang from 1.24.6 to 1.25.4 to address security vulnerabilities

  • 2d5aa7b: fix: correct continuous aggregate snapshot_time semantics

    Fixed CAGG snapshot labeling to represent state at END of time bucket instead of START. Changed time_bucket('1 day', event_timestamp) to include + INTERVAL '1 day' offset, preventing future data leakage during replay operations. This ensures the snapshot_time accurately reflects when the captured state is valid, maintaining temporal correctness.

  • ecda4f3: fix: include boundary events in state reconstruction queries

    Fixed state reconstruction to include events occurring exactly at snapshot boundary times. Changed event_timestamp > cutoff to event_timestamp >= cutoff in both Go repository queries and SQL functions. This ensures events at exact snapshot boundaries are properly included in the "recent events" tier of 3-tier state reconstruction.

1.3.0

Minor Changes

  • 6c6cf8d: perf: optimize MSR query performance with TimescaleDB continuous aggregates and columnstore compression

    • Added continuous aggregates (CAGG) for daily entity state snapshots
    • Enable columnstore compression on cdc_event table with optimized segmentby/orderby
    • Refactor initial state query to use three-tier lookup (recent → CAGG → earliest_snapshot)
    • Add parameterized timestamps for TimescaleDB chunk exclusion optimization
    • Disable merge joins and JIT compilation for consistent query performance
    • Add EXPLAIN ANALYZE support via query parameter for debugging

1.2.1

Patch Changes

  • Fixed session management by properly updating the last_seen_at timestamp when users interact with MSR sessions. This ensures accurate session activity tracking and prevents premature cleanup of active sessions.

v1.2.0

Minor Changes

  • 0ea5edc: Performance: Optimize initialStateQuery with TimescaleDB SkipScan

    Achieve 125x performance improvement (73s → 584ms) for high-volume CDC queries by implementing TimescaleDB SkipScan optimization.

    Changes:

    • Add composite index (entity_id, table_name, event_timestamp DESC) for DISTINCT ON query patterns
    • Add time-first index (event_timestamp, entity_id) for GetEvents optimization
    • Force SkipScan usage in GetInitializeState with transaction-scoped cost multiplier setting
    • Handle 4M+ CDC events within 1-hour period efficiently
    • Maintain performance stability under high ingestion rates (270k+ events/minute)

    Database Schema:

    • New indexes added to schema.sql for optimal SkipScan performance
    • Backward compatible - existing deployments unaffected

    Service Layer:

    • Transaction wrapper ensures SkipScan setting takes effect
    • Proper error handling with automatic rollback on failures
    • Cost multiplier automatically reverts after transaction completion

    Impact:

    • Dramatically improves /replay/state endpoint performance

v1.1.1

Patch Changes

  • 71549f9: Fix: Add missing earliest_valid_timestamp parameter and update API documentation

    • Add missing earliest_valid_timestamp parameter to updateConfiguration struct with proper ISO 8601 validation
    • Fix PUT /admin/settings endpoint documentation with correct parameter list
    • Add missing API endpoints: DELETE /session/{id}, POST /admin/sessions/terminate, GET /admin/sessions/status, health checks
    • Add comprehensive test coverage for earliest_valid_timestamp validation
    • Add authorization notes for session termination endpoints

v1.1.0

Minor Changes

  • feat: add EARLIEST_VALID_TIMESTAMP support and enhance session error handling

    New Features:

    • Add EARLIEST_VALID_TIMESTAMP configuration parameter to prevent replay attempts before system deployment
    • Comprehensive database schema documentation with deployment setup instructions
    • Enhanced session termination detection with proper error codes and messaging

    Improvements:

    • Configuration service now properly handles string values for timestamp parameters
    • Updated test coverage for new configuration functionality
    • Better error messaging for session termination scenarios

    Database Changes:

    • New EARLIEST_VALID_TIMESTAMP configuration parameter with default value 1900-01-01T00:00:00Z
    • Comprehensive documentation added to schema for operator guidance
    • Fresh deployment setup instructions included

    Developer Experience:

    • Clear SQL commands provided for setting deployment boundaries
    • Prevents empty replay sessions on fresh deployments
    • Maintains backwards compatibility with existing systems
  • feat: add admin session management and cleanup service controls

    New Admin Endpoints:

    • POST /admin/sessions/terminate - Bulk terminate multiple sessions at once
    • GET /admin/sessions - List all sessions (renamed from ListSessions for clarity)
    • GET /admin/sessions/status - Get active session count (renamed from CountActiveSessions)
    • GET /admin/settings - Get session settings (renamed from GetSessionSettings)
    • PUT /admin/settings - Update configuration (renamed from UpdateConfiguration)

    Environment Variables:

    • CLEANUP_SERVICE_ENABLED - Enable/disable automated data cleanup cron jobs (default: true)
      • Set to false to disable cleanup service in development environments
      • Provides fine-grained control over maintenance operations

    Database Improvements:

    • PostgreSQL array operations for efficient bulk session termination
    • Enhanced validation for session ID arrays
    • Improved error handling for invalid session operations

    Developer Experience:

    • Comprehensive test coverage for new admin functionality
    • Clear naming conventions for administrative endpoints
    • Updated .env.template with documentation for new environment variable

v1.0.0

Major Changes

  • 🎉 Initial v1.0.0 release of MSR App - Multi-Session Replay backend service

    Features

    • CDC Event Processing: Change Data Capture event storage and querying with TimescaleDB hypertables
    • Dynamic Configuration: Runtime-configurable maintenance schedules and data retention policies
    • Session Management: Multi-user session tracking and replay coordination

    This release establishes the foundational MSR backend service for Change Data Capture event processing and multi-session replay capabilities.

@mssfoobar/msr-web

1.5.0

Minor Changes

  • feat: migrate to Web-base v2.1.0 with SDS integration
  • fix: DateTimePicker now defaults to earliest valid time instead of 12am

1.4.1

Patch Changes

  • 6c6cf8d: - Added pagination controls with configurable items per page (10/25/50/100)
  • Added number formatting with .toLocaleString() for entity counts
  • Reset pagination when switching tabs or changing page size
  • Improved empty state messaging

1.4.0

Minor Changes

  • e558473: Changed:

    • Disabled checkbox selection and actions for inactive sessions with informative tooltips

    Fixed:

    • Incorrect error toast message and table empty state description.
    • Playback controller not being centered when mounted

Patch Changes

  • ec436ba: Fixed:

    • Terminating session action used old API.
    • Controller was not centered but off a little to the right.
  • 412db2e: Fixed:

    • INACTIVE rows being selectable when clicking "Select All" in data table, ensuring disabled rows cannot be selected through bulk selection actions.

    Changed:

    • Status column display text from "INACTIVE" to "Terminated" for inactive sessions.
    • Deprecated viewType and viewSwitch properties in DataTable component and removed card view functionality to simplify the component.
  • cb5be71: Changed: Remove the "View Sessions" button on "Session Limit Reached" error toast.

  • e558473: Fixed:

    • Session termination restriction where only session owners could terminate their own sessions. The new bulk termination API allows administrators to terminate multiple sessions regardless of ownership.

    Added:

    • New bulk session termination API endpoint /api/sessions/terminate that accepts multiple session IDs in a single request
    • Updated session list page to use bulk termination API instead of individual session termination calls
    • Improved performance by replacing multiple API calls with a single bulk operation
  • 7bfb8b5: Fixed: Sessions list page didn't fetch all user sessions

v1.3.0

Minor Changes

  • feat: enhanced playback range buffers for improved data boundary handling

    New Features:

    • startBufferMinutes prop to buffer earliest selectable time from data cleanup boundaries
    • endBufferMinutes prop to buffer latest selectable time from current time where CDC data may not exist yet
    • Both buffers default to playbackWindowMinutes value for consistent safety margins
    • Applied buffers to both start and end date time pickers in the UI

    User Experience Improvements:

    • Prevents users from selecting replay times too close to data boundaries
    • Enhanced data reliability by avoiding edge cases where CDC data may be unavailable
    • Improved time range selection with automatic safety buffer enforcement

v1.2.0

Minor Changes

  • feat: implement EARLIEST_VALID_TIMESTAMP validation and improve error handling UX

    New Features:

    • EARLIEST_VALID_TIMESTAMP date range validation in client API automatically prevents invalid replay selections
    • Comprehensive session termination handling with clear user feedback
    • Enhanced error state management with proper UI hierarchy

    User Experience Improvements:

    • Clear "Return to Lobby" messaging for errors and terminated sessions
    • Stop background polling on errors to reduce server load and improve performance

    Code Quality:

    • Remove dayjs mocking in tests for more accurate date logic validation
    • Improved worker error handling - stops polling on any error rather than continuous retries

    Developer Experience:

    • Enhanced test coverage with real dayjs for better date handling validation
    • Added coverage file patterns to gitignore for both JavaScript/TypeScript and Go
    • More maintainable code with semantic status code constants

v1.1.0

Minor Changes

  • Enhanced error handling and API improvements for MSR web modlet

    • Enhanced API Client Error Handling: Comprehensive error response parsing and structured error types
    • Improved Session Management: Better error boundaries and user feedback for session operations
    • TypeScript Type Improvements: Enhanced type definitions for error states and API responses
    • Worker Error Handling: Robust error handling in MSR worker for replay processing
    • Store Error States: Reactive error state management using Svelte 5 runes
    • Component Error Boundaries: Improved error handling in MultiSessionReplay component
    • API Route Enhancements: Better error responses in SvelteKit API routes
    • Test Coverage: Comprehensive error handling test coverage across all modlet components

    This minor release improves the reliability and user experience of the MSR web modlet with enhanced error handling patterns and better API resilience.

v1.0.0

Major Changes

  • Initial release of Multi-Session Replay (MSR) modlet

    New Features:

    • Web Worker-based replay processing engine
    • Interactive replay controls with timeline navigation
    • User replay session administration interface
    • Integration with AOH Web Base modlet architecture

    Components:

    • Timeline-based replay visualization
    • Administrative data table for session oversight
    • Modular component library following AOH standards

    Technical Implementation:

    • SvelteKit frontend with Svelte 5 and Tailwind CSS
    • Web Workers for non-blocking replay processing
    • Comprehensive test coverage and Storybook documentation