Changelog 30 min read

Changelog WEB

0.41.1November 29, 2025

Added

  • Implemented robust country code resolution for dashboard map data, converting various country inputs to standardized ISO 2-letter codes.

Changed

  • Improved dashboard data fetching logic to ensure data freshness based on URL period parameters.
  • Refined daily summary report date range calculations for increased accuracy and consistency.

Fixed

  • Addressed an issue where the dashboard world map might not display data correctly due to inconsistent country key formats by standardizing all map data to ISO 2-letter codes.

0.41.0November 24, 2025

Added

  • Implemented a comprehensive caching service to significantly improve application performance and reduce database load.
  • Introduced pagination controls for the sessions list, allowing users to select the number of items per page and easily navigate through results.

Changed

  • Parallelized the deletion of associated records (events, JS errors) when deleting individual sessions or all sessions for a visitor, improving performance.
  • Enhanced the 'calculateMetrics' function in the analytics service to leverage a pre-computed map of session events for improved performance.

Fixed

  • Website setting update failures now correctly display an error toast and revert the UI control to its previous state, providing clearer user feedback.
  • Ensured complete data cleanup by deleting associated events and JavaScript errors when discarding short sessions via the cron job.
  • Corrected the calculation of the 'five minutes ago' timestamp used in the cron job for discarding short sessions, improving accuracy.

0.40.2November 24, 2025

Changed

  • Refined dashboard real-time update handling to better support events without a specific website ID.
  • Enhanced real-time service's internal context fetching for sessions and events, improving robustness.
  • Clarified the 'Discard Short Sessions' setting description, specifying a 5-minute detection window for discarding.

Fixed

  • Corrected SDK version checker's caching logic to prevent repeated external API calls when version information is unavailable or fetching fails.

0.40.1November 24, 2025

Added

  • Added numerous database indexes across various collections (e.g., api_keys, events, sessions, websites) to enhance query performance and data retrieval efficiency.

Fixed

  • Enhanced dashboard navigation to automatically preserve user-selected data period and results limit when switching websites or navigating between dashboard views.

0.40.0November 22, 2025

Added

  • A dedicated 403 Forbidden page has been introduced for restricted mobile access.
  • Comprehensive responsive design adjustments have been applied across various application sections (dashboard, sessions, SEO, settings, uptime) for improved adaptability on different screen sizes.

Changed

  • Access to several key features, including SEO Analytics, Uptime Monitoring, Website Management, API Keys, Notifications, and Database settings, is now restricted to desktop browsers only. Mobile users attempting to access these will be redirected to a 403 Forbidden page.

0.39.0November 21, 2025

Added

  • SEO Analytics Export: Users can now export comprehensive SEO analytics reports in CSV and JSON formats directly from the dashboard.
  • New Styling Components: Introduced new CSS for a cleaner session timeline, interactive event data payloads, and a reusable dropdown menu for improved UI consistency.

0.38.1November 19, 2025

Removed

  • The 'Traffic Spike' notification feature has been removed, including its detection logic, UI options, documentation, and related email templates.

0.38.0November 19, 2025

Changed

  • Analytics and reporting now directly process raw 'sessions' and 'events' data for all metrics (e.g., page views, visitors, engagement rate, bounce rate, avg session duration). This change provides more real-time and accurate insights across overview, dashboard, detailed reports, daily summary notifications, and traffic spike detection.
  • Data cleanup processes have been streamlined to focus solely on removing orphaned visitor records, eliminating the need for dash_sum related cleanup.

Removed

  • The 'dash_sum' database collection, which previously stored daily aggregated analytics summaries.
  • All associated logic and services for creating, updating, and managing 'dash_sum' records (including the src/services/dashSummary.js file).
  • Cron jobs responsible for finalizing and pruning old daily summaries ('finalizeDailySummaries', 'pruneOldSummaries').
  • The option to delete 'Dashboard Summaries' data from the settings page.
  • Real-time subscriptions for 'dash_sum' collection updates.

0.37.0November 19, 2025

Added

  • Implemented a system-wide update checker for the Skopos application, displaying a badge in the sidebar when a new version is available.
  • Introduced an SDK version update checker for monitored websites, showing an update badge on website cards.
  • Added the ability to manually trigger notification rules directly from the settings page, starting with Daily Summary reports.
  • Improved the Daily Summary notification emails with comprehensive metrics including returning visitors, engaged sessions, engagement/bounce rates, average session duration, JS errors, and breakdown lists for top pages, referrers, and devices.
  • Added an internal retry mechanism for Resend API calls to improve reliability of email notifications in case of temporary rate limits.

Changed

  • Enhanced notification rules to support selecting multiple associated websites or applying to all active websites, improving flexibility.
  • Optimized dashboard settings initialization to prevent redundant data fetches on page load.
  • Refactored internal notification processing to consistently handle multiple websites associated with a single rule in cron jobs.

0.36.1November 18, 2025

Added

  • Implemented automated discarding of user sessions shorter than 1 second, older than 5 days, for websites with the feature enabled.

0.36.0November 18, 2025

Added

  • Configurable global data retention period via the DATA_RETENTION_DAYS environment variable, which governs the automatic cleanup of dashboard summaries, raw session data, raw event data, uptime checks, and uptime incidents.
  • Short Session Filtering feature, which automatically discards sessions lasting less than 1 second to improve data quality by reducing noise from bots and accidental page loads. This includes a new database field, a toggle in the application settings UI, and corresponding backend logic.
  • Automatic pruning of old event data, integrated into the new global data retention policy.

0.35.0November 18, 2025

Added

  • Introduced a new 'Database Management' section in settings, allowing users to prune specific data collections.
  • Added three new automated cron jobs for notifications:
  • Daily Summary Reports: Sends email summaries of website analytics.
  • Error Threshold Monitoring: Checks for exceeding JavaScript error thresholds and sends alerts.
  • Traffic Spike Detection: Identifies unusual increases in website visitors and sends alerts.

Changed

  • Improved modal styling for better positioning and animation, ensuring it's fixed, centered, and has a higher z-index.
  • Standardized border-radius values across various UI components (e.g., SEO cards, Lighthouse scores, metric details) to use a central CSS variable (--border-radius) for consistency.
  • Refactored cron job scheduling: consolidated various daily maintenance tasks into a single, more efficient daily cron job.

Removed

  • Removed the reports collection from the PocketBase schema 'till some time in the future.

0.34.3November 17, 2025

Added

  • Introduced a fallback mechanism for uptime checks to directly resolve hostnames to IPv4 addresses if standard DNS resolution fails.
  • Added an automatic retry for HTTP uptime checks, attempting an HTTPS connection if the initial HTTP check fails.
  • Implemented a recovery retry mechanism for uptime monitoring, allowing quicker detection of website recovery after an outage.
  • Introduced fallback data retrieval for the "Top JS Errors" report, ensuring data availability even when direct error records are not present by utilizing aggregated summaries.

Fixed

  • Improved handling of stack trace information for JavaScript errors; empty stack traces now gracefully default to "Stack trace unavailable."

0.34.2November 15, 2025

Fixed

  • Improved uptime monitoring reliability by implementing a retry mechanism for transient network timeouts.

0.34.1November 14, 2025

Fixed

  • Comprehensive support for decompressing HTTP responses (gzip, deflate, brotli) in the SEO analyzer, enhancing data fetching robustness. This fixes detecting if compression is enabled or not.

Removed

  • The SEO summary card and all associated data fetching and calculation logic have been removed from the dashboard view.

0.34.0November 14, 2025

Added

  • Optimized uptime monitoring system to store 7-day summaries, significantly reducing database load and improving historical data access.
  • Configurable toast notifications implemented across the dashboard to provide immediate feedback for settings updates, with an option to enable/disable them in user settings.

Changed

  • Refactored core analytics utility functions into a dedicated analyticsService for improved modularity and maintainability.

Fixed

  • Improved handling of responseTime values in uptime monitoring statistics to ensure numerical accuracy and prevent parsing errors.

0.33.1November 13, 2025

Fixed

  • Resolved an issue where the dashboard's data period was hardcoded to 7 days, preventing it from respecting user settings or URL parameters.
  • Corrected the uptime timeline's data fetching, which was hardcoded to 24 hours, to now accurately retrieve and display data for the last 7 days.

0.33.0November 13, 2025

Added

  • Introduced comprehensive Uptime Monitoring functionality for websites, including a dedicated dashboard, backend services for continuous checks, incident tracking, database schema additions, and new API endpoints for management (toggle, interval, manual checks, incident resolution).
  • Added 'Website Uptime Change' as a new notification event type, allowing users to configure alerts for website downtime, recovery, or both, with detailed status information in emails.

Changed

  • Refactored existing website settings into a new partial, enhancing code organization and maintainability.
  • Improved layout and visual consistency by adjusting various spacing and gap values across the SEO analytics and other dashboard sections.

Fixed

  • Corrected a typo in pb_schema.json for the notifications collection, changing 'traffic_sipke' to 'traffic_spike'.

0.32.0November 12, 2025

Added

  • Implemented API connection testing functionality for Google PageSpeed, Chapybara, and Resend. This includes dedicated modals with forms, client-side JavaScript for interaction, and new backend API endpoints to validate API keys and configurations.

0.31.0November 12, 2025

Added

  • Implemented a collapsible sidebar to maximize workspace, with user preference saved across sessions.
  • Introduced a comprehensive email notification system powered by Resend, allowing users to receive real-time alerts for various website events.

Changed

  • Enhanced 'Configurable Settings' to include options for notification preferences and explicit mention of collapsible sidebar behavior.
  • Improved responsive design with smart sidebar behavior for mobile and tablet devices.

0.30.0November 6, 2025

Added

  • Advanced IP Intelligence integration with Chapybara, providing detailed geolocation, network information, and real-time security analysis (threat level, proxy/VPN/Tor/datacenter/spammer detection) directly within session details.
  • New frontend architecture using page-specific JavaScript modules (public/js/pages/) for optimized loading, improved code organization, and better maintainability.

Changed

  • Refactored core frontend JavaScript, separating general utilities (in public/js/main.js) from page-specific logic, which is now managed in dedicated modules under public/js/pages/.
  • Dashboard website card layout has been updated from a flexbox to a responsive grid for better visual presentation across various screen sizes.
  • The display of raw IP addresses in session details now clearly indicates 'Not stored (privacy mode)' when IP collection is disabled due to privacy settings.

0.29.0November 5, 2025

Added

  • Implemented a secure API Key Vault allowing users to store and manage third-party API keys directly within the dashboard.
  • Introduced AES-256 encryption for all stored API keys, requiring a new ENCRYPTION_KEY environment variable for enhanced security.
  • Added State-Level Geo Insights, enabling users to drill down into country visitor data to view top states or provinces in reports.
  • Revamped the Settings page with a new, tabbed interface for improved organization and user experience.
  • New database collection 'api_keys' to support secure, per-user API key storage.

Changed

  • Updated SEO analysis workflow from weekly automated scans to an on-demand model, with automatic baseline analysis upon website creation and manual re-scan options.
  • SEO analysis now prioritizes user-stored API keys from the secure vault, with environment variables serving as a fallback.
  • Enhanced dashboard report drill-down capabilities to include state-level geographical breakdowns.
  • Refactored the Session Details UI to a modern tabbed layout for better navigation and presentation of session information, pages, and events.
  • Improved mobile responsiveness and layout for various dashboard and session detail elements.
  • The PAGESPEED_API_KEY environment variable is now considered an optional fallback for SEO analysis.

Removed

  • Removed the recurring weekly automated SEO scans, shifting focus to user-triggered and initial website creation analyses.

0.28.1November 5, 2025

Added

  • Added dedicated GitHub and Changelog buttons to the sidebar footer.
  • Introduced new CSS styles to support the redesigned sidebar footer.

Changed

  • Streamlined PocketBase setup instructions in the README to emphasize schema import from pb_schema.json.

Removed

  • Eliminated PUBLIC_POCKETBASE_URL environment variable and its documentation.
  • Removed SECRET_SALT environment variable and the associated visitor ID anonymization logic (src/utils/anonymize.js).

Fixed

  • Adjusted sidebar footer button visibility for mobile devices.

0.28.0November 4, 2025

Added

  • Added Privacy-First IP Management with optional raw IP address storage, disabled by default for GDPR compliance, configurable via a new dashboard setting, and displayed in session details and lists with a click-to-copy feature.
  • Implemented SDK Version Tracking, automatically detecting and displaying the connected SDK version on website cards, allowing for easier monitoring of SDK deployments.
  • Integrated a global custom alert system (window.customAlert) for consistent and visually improved error and information messages across the dashboard.

Fixed

  • Replaced native JavaScript alert() calls with window.customAlert() for a consistent and user-friendly experience across dashboard JavaScript interactions.
  • Improved mobile display for session tabs with updated icons and layout.

0.27.0November 3, 2025

Added

  • New SEO summary card on the dashboard displaying overall score, critical issues, performance, and key technical SEO statuses (HTTPS, sitemap, mobile readiness).
  • Automated SEO analysis for new websites upon creation.
  • Weekly scheduled SEO analysis for all active websites.
  • Extended database schema to store detailed SEO analysis warnings and prioritized recommendations.
  • Enhanced SEO analysis with checks for image alt text quality, oversized images, empty link anchors, suspicious links, and broken internal links.
  • Generation of prioritized, actionable SEO recommendations (critical, high, medium) to guide optimization efforts.

Changed

  • SEO analytics pages now display structured, prioritized recommendations based on detailed analysis.
  • Improved robustness of analytics data processing for sessions and JavaScript errors, ensuring more accurate aggregation even with missing or invalid timestamps.
  • PageSpeed Insights API key configuration now exclusively uses the "PAGESPEED_API_KEY" environment variable.

0.26.0November 3, 2025

Added

  • Added an endpoint and functionality for users to manually trigger cleanup of orphaned visitor records and empty dashboard summary entries for a website.
  • Implemented a daily scheduled task to automatically clean up orphaned visitor records and empty dashboard summary entries across all websites.

Changed

  • Enhanced session deletion logic to automatically remove associated visitor records if no other sessions remain for that visitor.

Fixed

  • Improved the robustness of dashboard summary adjustments by gracefully handling potential failures when deleting empty summary records.

0.25.0November 3, 2025

Added

  • Implemented a new global loading modal with dedicated CSS styles and JavaScript functions (showLoadingModal, hideLoadingModal).
  • Introduced a 30-second heartbeat mechanism for Server-Sent Events (SSE) connections to improve stability.
  • Added X-Accel-Buffering: no header for SSE to prevent buffering issues with proxies like Nginx.

Changed

  • Integrated the new global loading modal into various user actions, including archiving, restoring, deleting websites, creating new websites, deleting sessions, and running SEO analysis.
  • Improved Server-Sent Events (SSE) logging to include the connected user ID and clarified error messages.
  • Enhanced SSE compatibility with HTTP compression middleware by excluding event-stream traffic.
  • Refined the calculation of "engaged sessions" to now consider JavaScript errors as potential engagement triggers, ensuring more accurate metrics.
  • Improved robustness of SSE message parsing by adding a try-catch block for non-JSON payloads.

Removed

  • Eliminated the dedicated analysis spinner UI specifically for SEO analysis, replaced by the new global loading modal.
  • Removed unnecessary console.log statements from the SEO analytics JavaScript.

Fixed

  • Improved error handling for Server-Sent Events (SSE) to correctly log disconnections and reset the event source.
  • Ensured accumulateSessionAdjustments and applyListAdjustments functions are more robust against invalid input (e.g., missing created fields or non-array lists).

0.24.0November 1, 2025

Added

  • Implemented a new user interface for selecting the SEO analysis strategy (Mobile or Desktop) before running PageSpeed Insights.
  • Introduced new CSS styles for the strategy selection modal.

Changed

  • Improved PageSpeed Insights reliability by adding retry mechanisms for network and timeout errors, and increased the request timeout to 45 seconds.
  • Modified the backend to receive and process the selected SEO analysis strategy.
  • Adjusted padding for the main content area of the SEO analytics page.

0.23.0October 31, 2025

Added

  • Implemented Gzip compression for all dashboard responses to improve performance.

Changed

  • Significantly expanded and updated all project documentation, including README.md, the client-side script guide, dashboard guide, and SDK documentation.
  • Refined the conditional logic for displaying dashboard-specific controls in the mobile header, ensuring they only appear on relevant analytics pages.

0.22.0October 31, 2025

Added

  • Implemented a new comprehensive SEO Analytics Dashboard feature. This includes a new seo_data collection in the database to store detailed analysis results covering meta tags, social media tags, headings, images, links, technical SEO aspects, performance scores, and Lighthouse data. The feature also includes new backend routes and controllers, a dedicated frontend UI, client-side JavaScript for interactivity, and extensive new styling.
  • Added a new 'Analytics' link to the sidebar navigation, providing direct access to the SEO analytics dashboard for each website.
  • Integrated with Google PageSpeed Insights API to fetch and display detailed performance, accessibility, best practices, and SEO scores, along with core web vitals metrics.

0.21.1October 30, 2025

Changed

  • Events within session details are now sorted in reverse chronological order, displaying the most recent events first.
  • Enhanced the display format for date and time values in the session details view for improved readability.

0.21.0October 29, 2025

Added

  • Introduced a new dashboard summary adjustment service to automatically update metrics when sessions or visitors are deleted.
  • Added schema fields for enhanced user identification, including userId, name, email, phone, and metadata.
  • Implemented new UI components and styles for displaying user identification badges, session detail tabs, and clear indicators for 'no data' states.
  • Added support for displaying detailed identified user information (ID, name, email, phone, and custom metadata) in session details.
  • Introduced tabbed navigation within session details to organize information into 'Session Information', 'Pages Visited', 'Custom Events', and 'Event Timeline'.
  • Enhanced the main sessions list to prominently display identified user names and emails, along with a distinct 'Identified User' badge.

Changed

  • Improved session and visitor deletion processes to automatically adjust dashboard summaries and delete associated JavaScript error records, ensuring data consistency.
  • Expanded session and visitor data retrieval to include userId, userName, userEmail, userPhone, and userMetadata for richer display in the UI.
  • Refactored the session details page to feature a tabbed interface for better organization and presentation of session information, visited pages, custom events, and event timelines.

0.20.0October 29, 2025

Added

  • Introduced a new, dedicated 'Settings' page with an improved, organized layout for managing application preferences.
  • Implemented a website selector dropdown in the sidebar for seamless switching between different active websites.
  • Added an application version display to the sidebar footer, providing a direct link to the project's GitHub repository.
  • New CSS styles for the redesigned settings page components (e.g., cards, groups, options) and the website selector.
  • New JavaScript functionality to handle website selection changes and open website settings directly from the sidebar.
  • New server-side routes and a dedicated controller to manage and render the settings page.
  • The application version from package.json is now exposed to templates for dynamic display.

Changed

  • Redesigned the sidebar navigation: the 'Settings' entry is now a link to the dedicated settings page, and website navigation is streamlined via a dropdown selector.
  • Conditional display of 'Dashboard' and 'Sessions' links in the sidebar, active only for the currently selected and unarchived website.
  • Adjusted padding in the main header for a more refined user interface.
  • Modified session list items to prevent accidental navigation when interacting with action buttons (e.g., delete) within the list item.

Removed

  • Eliminated the previous global settings drawer component, including its associated HTML and JavaScript.
  • Removed the 'View Sessions' button from the dashboard header.
  • Removed the 'Back to Sessions' and 'Delete Session' buttons from the session details header.
  • Removed the 'Back to Dashboard' button from the sessions page header. Session navigation is now primarily handled via the sidebar or directly within session list items.
  • The explicit listing of individual websites and the dedicated 'Archived' section from the sidebar for a cleaner navigation experience.

0.19.0October 28, 2025

Added

  • Implemented a new responsive mobile header for improved navigation and user experience on smaller screens.
  • Introduced server-side device detection middleware to identify mobile clients, enabling mobile-specific UI.
  • Added dedicated CSS styles for the new mobile header and its components, including buttons and a progress bar.
  • Integrated a new mobile-header.ejs partial across all main application views.
  • Added JavaScript logic to manage the mobile sidebar toggle and ensure proper closing behavior when clicking outside.
  • Included mobile-specific refresh and website settings buttons with corresponding JavaScript functionality for the dashboard.

Changed

  • Enhanced dashboard UI: 'View Sessions' button now uses a new header-button style, and refresh/settings buttons are optimized for both desktop and mobile layouts.
  • Adjusted sidebar behavior on mobile devices; it now slides in from the left, overlays content, and includes a semi-transparent background when open.
  • Modified the main container padding on mobile to accommodate the new fixed mobile header.

0.18.0October 28, 2025

Added

  • A new API controller and dedicated API routes to handle all dashboard data, detailed reports, custom event details, Server-Sent Events (SSE) connections, and public IP retrieval.
  • Dedicated authentication controller and routes for user registration, login, and logout.
  • Dedicated website management controller and routes for adding, archiving, restoring, deleting websites, and configuring website settings, including IP blacklists.
  • Dedicated session management controller and routes for viewing user sessions, session details, and deleting specific sessions or all sessions for a visitor.

Changed

  • Major architectural refactor: Core functionalities related to API calls, authentication, website management, and session management have been extracted from the main dashboard controller and routes into new, specialized controllers and route files for improved modularity and maintainability.

0.17.0October 28, 2025

Added

  • Implemented comprehensive Session Management features, providing dedicated pages for viewing all visitor sessions grouped by visitor and detailed views for individual sessions.
  • Introduced new controllers and API routes to handle session listing, detailed session information, and deletion of sessions or entire visitor histories.
  • Added new styling for the session and session details pages to support the new user interface elements.
  • Integrated a direct link to the Sessions page from the Dashboard for improved accessibility.
  • Enabled deletion of individual sessions and all sessions associated with a specific visitor.

0.16.1October 28, 2025

Fixed

  • Resolved visual overflow issues within map cards and for the world map display.
  • Corrected text truncation and wrapping for long tracking IDs and other truncated-text elements, preventing content overflow.
  • Addressed responsive layout for website card headers, actions, and content on mobile devices, ensuring proper alignment and usability.
  • Ensured consistent sizing for nested drawers across various screen sizes.
  • Prevented unintended global scrollbars by adjusting body overflow properties.

0.16.0October 27, 2025

Added

  • Implemented user-specific IP address display and management within the IP Blacklist feature, allowing users to block or unblock their own IP directly from the dashboard.
  • Added a new API endpoint /api/user-ip to retrieve the client's current IP address.

Fixed

  • Corrected horizontal alignment of icons in detail tables for better visual consistency.

0.15.2October 26, 2025

Changed

  • Refactored dashboard settings and refresh interval handling for improved maintainability.

Fixed

  • Resolved visual issues in list item display, enhancing readability for long keys and ensuring consistent alignment.

0.15.1October 15, 2025

Changed

  • Improved the world map's data handling and rendering efficiency, leading to smoother updates when geographical data or themes change.
  • Refactored dashboard initialization logic for better performance and stability.

Fixed

  • Corrected issues where the world map might not re-render properly or could consume extra memory, especially after theme changes or data updates.

0.15.0October 15, 2025

Added

  • Introduced a comprehensive logging system using Winston with daily rotating file support.
  • Added NODE_ENV and LOG_LEVEL environment variables to .env.example for configurable application environment and logging verbosity.
  • Included a logs directory in .gitignore to manage generated log files.
  • Added new dependencies winston and winston-daily-rotate-file to package.json.

Changed

  • Replaced all direct console.log and console.error calls with the new structured logging system, providing more consistent and detailed output for application events, errors, and user actions.

Fixed

  • Standardized error page rendering for critical application and API errors, improving user experience by displaying consistent error pages (500 for server errors, 404 for not found) rather than generic text responses.
  • Ensured that calling doesUserExist() before app state initialization now throws a more informative error, improving developer experience.

0.14.0October 15, 2025

Added

  • Introduced new mini-charts displaying daily trends for Page Views, Visitors, Engagement Rate, and Average Session Duration directly within their respective metric cards.
  • Added createMiniChart and initializeMetricCharts functions in dashboard.js to support the rendering and updating of the new mini-trend charts.
  • Implemented the getMetricTrends utility function to efficiently calculate daily metric trends for displaying in the new charts.

Changed

  • Refactored the dashboard and overview pages to integrate mini-trend charts into metric cards, replacing the single large 'Page Views Over Time' chart.
  • Adjusted the layout of the metrics grid on dashboard and overview pages from 5 columns to 4 for better visual organization.
  • Improved the precision of date range filtering for previous summaries in analytics data fetching, ensuring more accurate change calculations.
  • Refactored ensureAdminAuth calls within dashboard controllers, streamlining authentication checks.
  • Updated chart theming logic to apply to the new mini-trend charts, ensuring consistent visual experience.
  • Adjusted the onRegionTooltipShow function signature in dashboard.js for consistency.

Removed

  • Eliminated the dedicated 'Page Views Over Time' chart from both dashboard and overview pages.
  • Removed the 'JS Errors' metric card from the dashboard and overview interfaces.
  • Deprecated getChartDataFromSummaries and getMultiWebsiteChartData utility functions, as their functionality is replaced by getMetricTrends.
  • Removed the lineChart variable and associated initialization/update logic in dashboard.js.
  • Removed the closeAllDrawers function from dashboard.js.
  • Removed the req parameter from handleSseConnection in dashboardController.js.

0.13.2October 15, 2025

Added

  • Introduced a new dedicated service for managing overall application state, including user existence, for better consistency.
  • Implemented ensureAdminAuth to handle PocketBase admin authentication, ensuring tokens are valid and refreshed as needed.

Changed

  • Refactored the core application initialization and user existence checks to utilize the new centralized appState service.
  • Updated authentication, dashboard, cron, and realtime services to use the robust ensureAdminAuth mechanism for all administrative PocketBase operations.

Removed

  • The userState service has been removed, as its functionality is now handled by the new appState service.

Fixed

  • Addressed potential issues with PocketBase admin authentication tokens expiring by ensuring automatic re-authentication before critical operations.

0.13.1October 15, 2025

Added

  • Implemented automatic token refresh for Pocketbase admin authentication every 15 minutes to ensure continuous active sessions.
  • Introduced startup validation to check for the presence of POCKETBASE_ADMIN_EMAIL and POCKETBASE_ADMIN_PASSWORD environment variables, terminating the process if essential credentials are not configured.

Changed

  • Refactored Pocketbase admin authentication logic for improved modularity and clearer error reporting.

0.13.0October 14, 2025

Added

  • Introduced real-time dashboard updates using Server-Sent Events (SSE), enabling immediate data synchronization without manual refreshes.
  • Implemented new server-side services for real-time functionality, including subscription to database changes and broadcasting updates to connected clients.
  • Exposed a new API endpoint (/dashboard/events) for client-side Server-Sent Events connections.
  • Integrated the eventsource package to support Server-Sent Events (SSE) functionality.

0.12.0October 14, 2025

Added

  • Implemented an initial user registration process for first-time setup, including new /register routes and a dedicated registration page.
  • Introduced a user state service to manage and track the existence of the initial user account.
  • Added middleware to guide users through the initial setup or login based on user existence.

Changed

  • Refactored server initialization to perform an asynchronous check for existing users upon startup.
  • Improved the website creation workflow to redirect to the website list after adding a new site.
  • Adjusted dashboard metric displays to show 0% change for archived websites.
  • Enhanced the login page by adding autofocus to the email input field.

Removed

  • The user avatar field and associated avatar URL handling from the database schema and the application's user interface.

0.11.0October 13, 2025

Added

  • Archive and restore functionality for websites, allowing users to temporarily disable tracking and manage inactive sites.
  • A new isArchived boolean field in the websites database collection to support archiving.
  • A custom, reusable modal dialog system for confirmations and enhanced user interaction.
  • Dedicated UI elements and styling to indicate and manage archived websites, including an "Archived" section in the sidebar and on the website management page.
  • New routes for handling website archive and restore operations.
  • Enhanced website deletion process to optionally remove all associated analytics data (summaries, events, JS errors, sessions, visitors).
  • A separate PocketBase admin client (pbAdmin) for all backend data modification and retrieval operations, improving security.

Changed

  • Implemented stricter access control rules for reports and websites database collections, restricting access to user = @request.auth.id. Other collection rules were updated from empty strings to null for consistency, meaning restricted to admin users only.
  • Dashboard behavior and UI are now adapted for archived websites, disabling active user tracking, auto-refresh, and website settings.
  • Increased the data fetching limit for country breakdown reports from 100 to 1000.
  • Modified the world map data normalization function from polynomial to linear for improved visual representation.
  • Centralized PocketBase client configuration for autoCancellation to ensure consistent behavior across all services.

Fixed

  • Ensured consistent and proper PocketBase client usage across backend services and controllers, specifically by moving all administrative operations to the pbAdmin client and setting autoCancellation(false) centrally.

0.10.1October 12, 2025

Added

  • Added a new "Languages" report card to the overview dashboard.
  • Introduced a local vendor copy of jsVectorMap (version 1.7.0) with custom fixes.

Changed

  • Reordered report cards on the dashboard overview page for improved layout.

0.10.0October 11, 2025

Removed

  • Removed client-side collection and transmission of UTM parameters (utm_source, utm_medium, utm_campaign, utm_term, utm_content) from all tracked events.
  • Discontinued storing UTM parameter fields (utmSource, utmMedium, utmCampaign) in the database schema.
  • Eliminated dashboard reports and backend analytics processing for UTM Source, Medium, and Campaign breakdowns.
  • Removed the "Top Pages" and "Top Referrers" report cards from the overview dashboard.

0.9.0October 11, 2025

Added

  • Introduced a new Global Overview Dashboard displaying aggregated analytics across all tracked websites, accessible at the root route (/).
  • Added a dedicated API endpoint /overview/data for fetching global overview analytics data.
  • Implemented a new utility function, getMultiWebsiteChartData, to aggregate and format chart data for multiple websites on the overview page.
  • Added a Data Retention setting for individual websites, allowing users to configure how long their analytics data is stored.

Changed

  • Adjusted the width of nested drawers (e.g., item detail, IP blacklist) from 50% to 40% for improved layout.
  • Revised the client-side dashboard data fetching logic (fetchDashboardData) to dynamically select between single-website and global overview endpoints based on context.
  • Modified chart rendering logic to support multiple data series, enabling the display of page views for individual websites on the Global Overview chart.
  • Simplified the calculatePercentageChange utility function by removing the redundant invert parameter.
  • The application's root route (/) now redirects to the new Global Overview Dashboard.
  • Updated sidebar navigation to correctly highlight the 'Overview' page when active.

Removed

  • Eliminated separate client-side functions (closeDetailListDrawer, closeItemDetailDrawer) by integrating their logic directly into respective event listeners for better code maintainability.

Fixed

  • Addressed potential client-side issues by ensuring website-specific functions (e.g., fetchDetailedData, updateWebsiteSetting, IP blacklist management) only execute when a WEBSITE_ID is present, preventing errors on the Global Overview page.
  • Improved the detailDrawerOverlay click handler to correctly dismiss only the topmost active drawer, resolving previous interaction inconsistencies.

0.8.0October 10, 2025

Added

  • New "Website Settings" feature, accessible from the dashboard, allowing per-website configuration.
  • IP Blacklist management, enabling users to block specific IP addresses from being tracked.
  • Option to disable tracking for localhost (127.0.0.1) explicitly in website settings.
  • Dedicated UI components and API endpoints for managing website settings and the IP blacklist.
  • Extended website data schema to support disableLocalhostTracking (boolean) and ipBlacklist (JSON array) settings.
  • Initialized new websites with default values for disableLocalhostTracking and ipBlacklist.

Changed

  • Improved dashboard drawer management logic to seamlessly integrate new website settings and IP blacklist drawers.
  • Enhanced dark theme styling for secondary button and icon button hover states.
  • Adjusted styling for search input fields within detail drawers, including dark theme support.
  • Minor adjustment to trash icon alignment in detail tables.

0.7.1October 9, 2025

Added

  • Introduced a custom 404 Not Found page.
  • Implemented a custom 500 Internal Server Error page.
  • Added a favicon to improve branding and user experience across all pages.

Changed

  • Improved user avatar URL handling to support distinct internal and public PocketBase URLs.
  • Enhanced authentication reliability by clearing the PocketBase auth store at the start of each request.

0.7.0October 9, 2025

Added

  • Introduced comprehensive JavaScript error tracking, including automatic capture of console errors, console warnings, unhandled promise rejections, and uncaught exceptions.
  • Added a new js_errors database collection to store detailed JavaScript error information, including error messages, stack traces, and associated session/website data.
  • Implemented a new "JS Errors" metric card on the dashboard, providing an overview of error occurrences.
  • Added a "Top JS Errors" report to the dashboard, allowing users to view and sort the most frequent JavaScript errors.
  • Developed a dedicated "Item Detail Drawer" to display verbose details for individual report entries, such as full stack traces for JS errors or custom event data.
  • Enabled the ability to inspect detailed eventData for custom events directly from the "Custom Events" report.
  • Added a new API endpoint (/dashboard/report/:websiteId/custom-event-details) to fetch specific data for custom events.

Changed

  • Refined the dashboard's metric grid layout to accommodate the new "JS Errors" metric, expanding from 4 to 5 columns.
  • Standardized report table headers from "Views" to "Count" for consistency across various data types.
  • Increased the default dashboard refresh rate from 10 seconds to 60 seconds for improved performance and reduced server load.
  • Enhanced chart and map elements to dynamically adapt their themes and styling in response to dashboard theme changes.
  • Restructured the "Your Websites" listing UI for a cleaner and more organized presentation.

Removed

  • Removed console warnings previously logged by the client-side script for malformed skopos-data-from attributes or unfound elements, reducing console noise.

Fixed

  • Addressed an issue where chart tooltips and the world map did not consistently update their visual themes when the dashboard theme was switched.

0.6.0October 9, 2025

Added

  • Introduced a new client-side option, data-observe-dom, allowing control over DOM mutation observation for dynamic event binding.
  • Added new dashboard reports to display Entry Pages and Exit Pages.
  • Implemented tracking for new visitors with the addition of an isNewVisitor field in the analytics schema.

Changed

  • Replaced the 'Bounce Rate' metric with a new 'Engagement' metric across the dashboard, affecting UI, calculations, and data aggregation.
  • Improved the layout of the websites page by adjusting main content padding.

0.5.0October 8, 2025

Added

  • Introduced a client-side tracking script (skopos-min.js).
  • Implemented a new database schema (pb_schema.json) defining collections for users, websites, sessions, events, reports, and dashboard summaries.
  • Added an interactive World Map visualization to the dashboard, displaying visitor origin by country.
  • Included a new "Countries" breakdown report in the dashboard analytics.
  • Enabled user avatar display in the sidebar.

Changed

  • Overhauled the user interface with a new color palette, enhanced shadows, rounded corners, and refined component styles.
  • Revised dashboard layout for improved metrics and reports presentation, including dedicated sections for map and country reports.
  • Expanded sidebar width and updated navigation link styling and brand presentation.
  • Relocated the dashboard update progress bar to the bottom of the main header.
  • Converted the manual refresh button to a more compact icon-only style.
  • Adjusted the default dashboard auto-refresh interval from 10 seconds to 60 seconds.
  • Updated user authentication object access from pb.authStore.model to pb.authStore.record.
  • Enhanced country data display in reports and detail tables to show full country names instead of ISO codes.

0.4.0October 8, 2025

Added

  • Implemented a new cron job to prune old session data, removing records older than 7 days to manage database size.
  • Introduced new refresh rate options for the dashboard: 5 minutes, 15 minutes, and 30 minutes.

Changed

  • Refreshed the dark theme's color palette and styling for improved consistency and a modern visual appeal across the UI.
  • Optimized dashboard data fetching by consolidating summary data queries, reducing database load and improving performance.
  • Enhanced the active user calculation method by directly querying session records, leading to more accurate and efficient real-time user metrics.
  • Improved the accuracy of aggregate metrics (average session duration and bounce rate) by ensuring calculations only include finalized daily summaries.
  • Adjusted the number of items displayed per page in the dashboard's detailed reports from 25 to 20.
  • Refined the date filtering logic in daily summary finalization cron jobs for more precise and robust data processing.
  • Modified available dashboard refresh rate options, removing the 5-second interval to promote more sustainable usage.

Removed

  • Eliminated PDF and CSV report generation functionality, including associated routes, controller, service, and UI export buttons from the dashboard.
  • Discontinued the 5-second refresh rate option from dashboard settings.

0.3.0October 7, 2025

Added

  • Implemented daily cron jobs for automated data management and summary finalization.
  • Introduced a cron job to prune dashboard summaries older than 30 days, optimizing database size.
  • Introduced a cron job to enforce website-specific data retention policies by automatically removing old sessions and events.
  • Introduced a cron job to finalize daily dashboard summaries, calculating and updating metrics such as bounce rate and average session duration for the previous day.

Changed

  • Refactored dashboard and report generation to utilize pre-calculated daily summary data (dash_sum collection), significantly improving performance and scalability by reducing direct queries on raw session and event data.
  • Updated analytics utility functions to process and aggregate data efficiently from the new daily summary structure.
  • Disabled PocketBase auto-cancellation during user login to enhance stability and prevent potential issues during authentication.

Removed

  • Direct, real-time aggregation of all analytics metrics (page views, visitors, session duration, bounce rate) and detailed reports from raw session and event data within the dashboard and report controllers, as this is now handled by daily summaries.

0.2.0October 7, 2025

Added

  • Dark Mode: Introduced a new dark theme for the user interface, improving visual comfort and personalization.
  • Customizable Dashboard Settings: Users can now configure dashboard refresh rate, data display period, and report result limits via a new global settings drawer.
  • Detailed Report Views: Implemented interactive detail drawers for all dashboard report cards, offering paginated, sortable, and searchable tables for in-depth data analysis.
  • Manual Dashboard Refresh: Added a button to manually trigger an immediate dashboard data refresh.

Changed

  • Dashboard Metrics Calculation: Enhanced the "Active Users" metric calculation for improved real-time accuracy, now based on recent events.
  • Dynamic Data Loading: Dashboard and report data fetching now dynamically adjust based on user-selected data periods and result limits.
  • PDF Report Generation: Improved the layout and pagination for generated PDF reports to better handle extensive data, ensuring readability.
  • User Interface Theming: Analytics charts and other UI elements now dynamically adapt their appearance based on the selected dark or light theme.
  • Website Management Page: Redesigned the "Manage Websites" page layout for improved organization and refined the tracking ID copy functionality.
  • Codebase Structure: Refactored JavaScript into separate global (main.js) and dashboard-specific (dashboard.js) files for better modularity and conditional loading.

Removed

  • Hardcoded dashboard update intervals, replaced by user-configurable settings.
  • Direct inline CSS transitions for the progress bar, now managed dynamically by JavaScript.
  • Outdated CSS classes and structures related to previous report card and website list layouts, simplifying the stylesheet.

0.1.0October 7, 2025

  • Initial release of the Skopos Web Analytics project.