- Added global P50, P95, and P99 latency calculations to the TracesDashboard component.
- Introduced a new formatDuration function to format latency values for display.
- Updated service summaries to include per-service P50 and P95 latencies.
- Improved the layout of the dashboard to display overall requests, error rates, and latency metrics.
- Refactored service health indicators to visually represent error rates with color coding.
- Adjusted the display of recent errors and slow requests for better user experience.
- Updated E2E tests for admin and public dashboards to include response type checks.
- Implemented MonitorUtil for managing monitor secrets and populating them in monitor steps and tests.
- Created StackTraceParser to parse and structure stack traces from various programming languages.
- Developed SyslogParser to handle and parse syslog messages in both RFC 5424 and RFC 3164 formats.
- Added ManualAPI for manually triggering workflows via GET and POST requests.
- Introduced WorkflowAPI for updating workflows with authorization checks.
- Created documentation for JavaScript and Webhook components.
- Established WorkflowFeatureSet to initialize routing and job processing.
- Developed QueueWorkflow service for managing workflow queue operations.
- Implemented RunWorkflow service to execute workflows with error handling and logging.
- Added utility for loading component metadata dynamically.
- Added @pyroscope/nodejs dependency to package.json and package-lock.json.
- Implemented Pyroscope API routes in Telemetry/Index.ts.
- Created new Pyroscope API handler in Telemetry/API/Pyroscope.ts to manage profile ingestion.
- Defined pprof protocol buffer schema in Telemetry/ProtoFiles/pprof/profile.proto.
- Developed PyroscopeIngestService for processing and converting pprof profiles to OTLP format.
- Enhanced error handling and request validation in the Pyroscope ingestion process.
- Integrated profiling initialization in Probe, Telemetry, TestServer, and Worker services.
- Added environment variables for enabling profiling in various services.
- Created Profiling utility to handle CPU profiling and send data to OTLP endpoint.
- Introduced new metric types for exceptions, spans, and dashboards.
- Developed utility classes for handling alert and incident metrics.
- Added new React components for displaying alert and incident metrics in the dashboard.
- Introduced DashboardTemplateCard component for displaying dashboard templates.
- Added DashboardTemplates enum and DashboardTemplate interface to define available templates.
- Implemented template selection in the Dashboards page to allow users to create dashboards from predefined templates.
- Enhanced MetricQueryConfig to manage metric attributes and display settings more effectively.
- Updated MetricView to improve loading states and error handling for metric results.
- Refactored DashboardChartComponent to streamline metric alias data handling and improve UI presentation.
- Created DNS Monitor documentation to outline DNS health checks and configuration options.
- Added Domain Monitor documentation for tracking domain registration status and expiration.
- Introduced Exceptions Monitor documentation for monitoring application exceptions and error patterns.
- Added Incoming Request Monitor documentation for heartbeat monitoring via service pings.
- Created IP Monitor documentation for monitoring the availability of IPv4 and IPv6 addresses.
- Added Kubernetes Monitor documentation for monitoring cluster health and performance metrics.
- Introduced Logs Monitor documentation for monitoring application logs and triggering alerts.
- Created Manual Monitor documentation for manually managed monitor statuses.
- Added Metrics Monitor documentation for monitoring custom application and infrastructure metrics.
- Introduced Ping Monitor documentation for monitoring host availability via ICMP requests.
- Created Port Monitor documentation for monitoring specific TCP/UDP port availability.
- Added Profiles Monitor documentation for monitoring continuous profiling data from applications.
- Introduced SSL Certificate Monitor documentation for monitoring SSL/TLS certificate validity and expiration.
- Created Traces Monitor documentation for monitoring distributed traces and alerting on span patterns.
- Introduced a new hero card for AI Auto-Fix with a fuchsia theme, linking to the AI agent product page.
- Added a hero card for AI Copilot with a violet theme, also linking to the AI agent product page, utilizing an icon for visual representation.
- Updated product showcase to include a new feature card for Scheduled Maintenance with relevant details and icons.
- Modified product tabs to include a new tab for Scheduled Maintenance, ensuring it integrates with existing navigation.
- Enhanced features table to accommodate the Scheduled Maintenance feature card, expanding the grid layout for better visibility.
- Simplified useEffect dependencies in ProfileTimeline component.
- Streamlined option rendering in ProfileTypeSelector component.
- Reformatted TelemetryDocumentation component for better readability.
- Improved formatting and consistency in AuthenticationSettings and Branding pages.
- Removed unused imports in ProfileViewPage.
- Enhanced code readability in StatusPageDelete component.
- Consolidated RouteMap definitions for better clarity.
- Cleaned up API response handling in PublicDashboard and DashboardViewPage.
- Refactored ProfileSample and DashboardAPI for improved code structure.
- Updated migration scripts for better readability and consistency.
- Enhanced incident and profile aggregation services for better clarity.
- Cleaned up telemetry ingestion service for improved readability.
- Improved test cases for OtelProfilesIngestService for better clarity.
- Implemented ProfileMonitor in MonitorTelemetryMonitor.ts to handle profile monitoring.
- Created DiffFlamegraph component for visualizing profile differences.
- Added ProfileTimeline component to display profile data over time.
- Introduced ProfileTypeSelector for selecting profile types.
- Developed ServiceProfiles page to display profiles for a specific service.
- Added ProfileMonitorCriteria for evaluating profile monitoring criteria.
- Implemented PprofEncoder for encoding profile data into pprof-compatible format.
- Defined ProfileMonitorResponse interface for structured profile monitoring responses.
- Updated BlankCanvas.tsx to utilize new dashboard size utilities for dynamic unit sizing and spacing.
- Enhanced BlankDashboardUnit.tsx to simplify unit rendering and remove unnecessary props.
- Modified BlankRow.tsx to eliminate redundant props and streamline unit rendering.
- Refactored Index.tsx to implement grid layout using CSS properties for better responsiveness.
- Improved DashboardBaseComponent.tsx by removing unused pixel helpers and optimizing drag/resize logic.
- Updated OpenTelemetry profiles roadmap documentation to reflect completed phases and remaining tasks.
- Implemented ProfileTable component to visualize profiles with advanced filtering options.
- Integrated telemetry services and attributes loading for dynamic filtering.
- Added error handling and loading states for improved user experience.
feat: Create ProfileUtil for stack frame parsing and formatting
- Introduced ProfileUtil class with methods for frame type color coding and stack frame parsing.
- Added utility functions for formatting profile values based on units.
docs: Add documentation for telemetry profiles integration
- Created comprehensive guide on sending continuous profiling data to OneUptime.
- Included supported profile types, setup instructions, and instrumentation examples.
feat: Implement ProfileAggregationService for flamegraph and function list retrieval
- Developed ProfileAggregationService to aggregate profile samples and generate flamegraphs.
- Added functionality to retrieve top functions based on various metrics.
feat: Define MonitorStepProfileMonitor interface for profile monitoring
- Created MonitorStepProfileMonitor interface and utility for building queries based on monitoring parameters.
test: Add example OTLP profiles payload for testing
- Included example JSON payload for OTLP profiles to assist in testing and integration.
- Implemented ProfilesRoutes for navigating to profiles-related pages.
- Created Profiles page with service count and documentation display.
- Added Profiles documentation page for ingestion setup.
- Developed Profile view page for detailed profiling information.
- Introduced Profiles layout and side menu for navigation.
- Enhanced breadcrumbs for profiles navigation.
- Updated telemetry type to include profiles.
- Refactored ArgumentsForm to improve UI for additional queries.
- Adjusted DashboardToolbar and DashboardView styles for consistency.
- Introduced `profiles_service.proto` to define the ProfilesService for exporting resource profiles.
- Implemented `OtelProfilesIngestService` to handle ingestion of profiles, including processing and flushing to the database.
- Created `ProfilesQueueService` to manage profile ingestion jobs.
- Added comprehensive tests for `OtelProfilesIngestService`, covering stack frame resolution, timestamp parsing, and row building for profiles and samples.
feat: Update AuthenticationSettings to prevent fetching existing model on edit
feat: Modify StatusPageDelete to display master password status and prevent fetching existing model on edit
feat: Expand OpenTelemetry Profiles roadmap with detailed implementation steps and considerations
- Added modal for setting and updating master passwords in DashboardAuthenticationSettings and StatusPageDelete components.
- Updated UI elements to reflect the master password status and provide appropriate actions.
- Enhanced descriptions to clarify the security implications of the master password feature.
- Refactored API calls in DashboardAPI to simplify logo and favicon file handling.
- Updated OpenTelemetry profiles documentation to include new message structures and important migration notes.
- Simplified arrow function syntax in MasterPassword.tsx and DashboardAPI.ts
- Consolidated logger.debug statements in PublicDashboard.ts and DashboardDomainAPI.ts
- Reformatted multi-line statements for better clarity in various files
- Updated migration files for consistent naming conventions and formatting
- Enhanced code structure in DashboardDomainService.ts and MonitorTelemetryMonitor.ts
- Incremented version number to 10.0.40
- Implemented DashboardCanvas component for rendering dashboard.
- Created Index.tsx for application entry point with routing setup.
- Developed AllPages.tsx to export main pages: DashboardView, MasterPassword, NotFound, and Forbidden.
- Added DashboardVariableSelector for managing dashboard variables.
- Built DashboardViewPage to display the dashboard with variable selection and auto-refresh functionality.
- Created Forbidden and NotFound pages for access control and error handling.
- Implemented MasterPassword page for secure access to dashboards.
- Added server-side utility for fetching public dashboard data.
- Established API utility for handling requests specific to the public dashboard.
- Configured routing and page mapping for public dashboard navigation.
- Set up TypeScript configuration for the PublicDashboard FeatureSet.
- Created index.ejs for rendering the public dashboard application.
- Introduced DashboardDomain model with comprehensive fields for managing custom domains for dashboards.
- Implemented DashboardDomainAPI for handling CNAME verification and SSL provisioning.
- Created DashboardDomainService to manage domain-related operations, including SSL ordering and CNAME validation.
- Added master password handling in DashboardAPI for enhanced security.
- Defined constants for master password messages and cookie management.
- Enhanced styling for ComponentPortViewer and ComponentReturnValueViewer components, including updated typography and layout.
- Replaced ErrorMessage with inline messages for better user experience when no ports or return values are present.
- Improved the visual hierarchy and spacing in the ComponentSettingsModal, adding sections for Identity, Documentation, Configuration, Connections, and Output.
- Refactored ComponentsModal to streamline component selection and improve search functionality with better UI elements.
- Updated Workflow component styles for a more modern look, including adjustments to edge styles and background settings.
- Introduced KubernetesAffectedResource and KubernetesResourceBreakdown interfaces to enhance metric monitoring capabilities.
- Updated MetricMonitorResponse to include kubernetesResourceBreakdown.
- Enhanced AreaChart, BarChart, and LineChart components with onValueChange prop for better interactivity.
- Added new Dashboard components: Gauge and Table, with respective configuration arguments.
- Implemented DashboardVariableSelector for dynamic variable selection in dashboards.
- Added warning and critical thresholds to DashboardValueComponent and DashboardChartComponent for improved data visualization.
- Updated DashboardChartComponentUtil to support additional queries and chart types.
- Enhanced error handling and loading states in Dashboard components.
- Introduced new metric query specifications for Istio and Linkerd.
- Refactored metric data fetching to utilize a unified query builder.
- Added a global time range picker for metrics visualization.
- Created reusable MeshSection component for displaying metrics.
- Updated UI to present Istio and Linkerd metrics in organized sections.
- Introduced AreaChart component for area visualization.
- Updated MetricCharts to use AREA chart type instead of LINE for non-bar charts.
- Enhanced ChartGroup to support AreaChart alongside existing Line and Bar charts.
- Modified ChartColors utility to include hex values for color mapping.
- Adjusted LineChart to utilize dynamic curve types based on props.
- Refactored KubernetesYamlTab for improved styling and responsiveness.
- Updated tooltip and legend functionalities for better user interaction.
- Added support for notification rule conditions and filters in incident and alert summaries.
- Introduced utility functions for bold text and links in markdown formatting.
- Updated incident and alert value builders to include labels and descriptions.
- Enhanced summary blocks with improved formatting for total counts, severity, and state breakdowns.
- Refactored detailed incident and alert listings to use new formatting utilities.
- Improved overall readability and consistency of markdown output for notifications.
- Introduced a new column `sendFirstReportAt` to the `WorkspaceNotificationSummary` table.
- Updated default values for `rotation` and `restrictionTimes` columns in the `OnCallDutyPolicyScheduleLayer` table.
- Adjusted the logic in SendSummary.ts to calculate the next send time based on the recurring interval before updating the nextSendAt field.
- Implemented WorkspaceNotificationSummaryAPI to handle notification summary requests.
- Created WorkspaceNotificationSummaryService for business logic related to notification summaries.
- Added enums for WorkspaceNotificationSummaryItem and WorkspaceNotificationSummaryType to define summary items and types.
- Developed a cron job to send workspace notification summaries at regular intervals.
- Enhanced error handling and logging for summary sending process.
- Improved formatting and consistency in various Kubernetes view files, including HPADetail, HPAs, Index, Jobs, Layout, Namespaces, NodeDetail, Nodes, PersistentVolumes, Pods, ServiceMesh, SideMenu, StatefulSets, VPADetail, and VPAs.
- Removed unnecessary line breaks and adjusted indentation for better readability.
- Simplified conditional checks and array methods for clarity.
- Enhanced the overall structure of the code to follow best practices.
- Added KubernetesTemplatePicker and KubernetesMetricPicker components for selecting alert templates and metrics.
- Updated KubernetesMonitorStepForm to support quick setup, custom metrics, and advanced configurations.
- Integrated query parameters for pre-filling template and cluster selections.
- Improved user experience with tabs for different setup modes (Quick, Custom, Advanced).
- Updated descriptions and functionality in MonitorStep and Alerts pages to reflect new features.
- Introduced KubernetesMetricCatalog for managing Kubernetes metrics and their properties.
- Implemented KubernetesClusterServiceMesh component to display Istio and Linkerd metrics.
- Created KubernetesClusterVPADetail component for detailed views of Vertical Pod Autoscalers (VPA).
- Added KubernetesClusterVPAs component to list all VPAs in a cluster.
- Introduced KubernetesAlertTemplates for monitoring various Kubernetes conditions, including CrashLoopBackOff, Pod Pending, Node Not Ready, and more.
- Developed MonitorStepKubernetesMonitor interface for Kubernetes monitoring configurations.
- Added StatusBadge component to display the status of Kubernetes namespaces, nodes, PVCs, PVs, and StatefulSets with appropriate color coding.
- Implemented a new KubernetesEnvVarsTab component to show environment variables for containers, including search functionality and handling of secret values.
- Refactored existing code in NamespaceDetail, NodeDetail, PVCDetail, PVDetail, PodDetail, and StatefulSetDetail to utilize StatusBadge for improved status representation.
- Updated Pods component to correctly parse memory limits from container resources.
- Added StatusBadge component for consistent status representation across the dashboard.
- Introduced AlertBanner component for displaying cluster health and node pressure alerts.
- Implemented FilterButtons component for improved event filtering options.
- Created ResourceUsageBar for visualizing resource usage in pods.
- Developed StackedProgressBar for displaying pod health breakdown.
- Added ConditionsTable for displaying conditions with improved styling and functionality.
- Enhanced existing components (DeploymentDetail, Events, Index, PodDetail) to utilize new UI components and improve overall user experience.
- Added top CPU and memory pod consumers to the Kubernetes cluster overview.
- Implemented node pressure indicators for memory, disk, and PID pressure.
- Introduced recent warning events section in the cluster overview.
- Added YAML tab for viewing resource specifications in Job, Namespace, Node, Pod, PVC, PV, and StatefulSet details.
- Updated side menu to display resource counts for various Kubernetes objects.
- Enhanced node detail view with roles, internal IP, and pressure conditions.
- Improved error handling and loading states in the YAML tab component.
Replace inadequate <script> tag regex with proper sanitization:
- Server-side: override marked's html renderer to escape raw HTML tokens
- Client-side: sanitize preview output with DOMPurify before rendering
- Implemented KubernetesClusterPVCDetail and KubernetesClusterPVCs components to display PVC details and list.
- Created KubernetesClusterPVs component to list all Persistent Volumes in the cluster.
- Updated routing and page mapping for PVCs and PVs.
- Enhanced existing Kubernetes components to utilize new utility functions for better data handling.
- Removed unused InfoCard components for a cleaner UI.
- Added yAxisValueFormatter to metric queries for better chart representation.
- Updated Helm chart to include PVC and PV data collection.
TypeORM sorts migrations by the timestamp in the last 13 chars of the
class name. Migration 1773761409952 (ALTER TABLE) had a lower timestamp
than 1774000000000 (CREATE TABLE), causing it to run first on a
non-existent table and crash the app during startup.
Renamed 1773761409952 → 1774000000001 so the CREATE TABLE migration
executes first.
- Simplified error handling in KubernetesEventsTab and KubernetesLogsTab by removing unnecessary line breaks.
- Consolidated import statements in KubernetesMetricsTab for better readability.
- Improved JSX formatting in KubernetesOverviewTab, KubernetesClusterContainerDetail, and other components for consistency.
- Enhanced code clarity in KubernetesObjectFetcher and KubernetesObjectParser by removing redundant line breaks and comments.
- Streamlined API response handling in IPWhitelistAPI for better readability.
- Updated PageSEO configuration for improved formatting.
- Implemented DaemonSets view with resource fetching and metrics display.
- Created DeploymentDetail page to show metrics for specific deployments.
- Added Deployments view to list all deployments in a Kubernetes cluster.
- Developed JobDetail page for displaying metrics related to jobs.
- Introduced Jobs view to list all jobs in the cluster.
- Created NamespaceDetail page to show metrics for specific namespaces.
- Added Namespaces view to list all namespaces in the cluster.
- Implemented StatefulSetDetail page for metrics related to stateful sets.
- Created StatefulSets view to list all stateful sets in the cluster.
- Improved formatting and readability in Kubernetes PodDetail and SideMenu components.
- Added service count fetching and loading/error handling in Logs, Metrics, and Traces pages.
- Updated Exception and Kubernetes routes for better readability.
- Enhanced Postgres migration scripts for KubernetesCluster and KubernetesClusterLabel.
- Minor formatting adjustments in MarkdownViewer and CriticalPath utility.
- Refactored EmptyState, MonitorSummaryView, and hooks in MobileApp for improved clarity.
- Fixed minor issues in MonitorDetailScreen and MonitorsScreen regarding status display.
- Implemented a new migration for the KubernetesCluster and KubernetesClusterLabel tables in the database.
- Created a KubernetesClusterService for managing cluster instances, including methods for finding or creating clusters, updating their status, and marking disconnected clusters.
- Introduced a Helm chart for the OneUptime Kubernetes Monitoring Agent, including configuration files, deployment templates, and RBAC settings.
- Added support for collecting metrics and logs from Kubernetes clusters using OpenTelemetry.
- Configured service accounts, secrets, and resource limits for the agent's deployment and daemonset.
- Provided detailed notes and helper templates for the Helm chart to facilitate installation and configuration.
- Added CriticalPathUtil class to compute self-time, critical path, and service breakdown for spans in distributed traces.
- Introduced SpanData, SpanSelfTime, CriticalPathResult, and ServiceBreakdown interfaces for structured data handling.
- Created API for fetching monitor data, including fetching all monitors, monitor details, statuses, and feeds.
- Developed MonitorCard component for displaying individual monitor information.
- Implemented MonitorsScreen and MonitorDetailScreen for listing and detailing monitors, respectively.
- Added hooks for managing monitor data fetching and state.
- Integrated navigation for monitor detail views.
The uptime history bar chart and its time labels were hidden on mobile
via `hidden sm:block` and `hidden sm:flex` classes. Replaced with
`overflow-x-auto` so the chart is visible and horizontally scrollable
on small screens.
Fixes#2049
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Introduced detailed plans for enhancing OneUptime's metrics and traces capabilities to match and exceed industry standards.
- Metrics roadmap includes features like percentile aggregations, rate calculations, multi-attribute grouping, rollups, and advanced visualizations.
- Traces roadmap outlines improvements such as trace analytics, RED metrics, trace-based alerting, and enhanced visualization options like flame graphs and critical path analysis.
- Both roadmaps emphasize phased implementation, quick wins, and verification strategies to ensure robust feature delivery and performance.
- Added missing commas in migration index.
- Improved formatting of permission descriptions for better readability.
- Enhanced dependency array formatting in useEffect hooks in LogsViewer component.
- Cleaned up JSON normalization in LogDetailsPanel for better readability.
- Refactored LogSearchBar component for improved readability and structure.
- Simplified filter logic in AnalyticsTooltip and LogsAnalyticsView components.
- Streamlined LogScrubRuleService methods for better clarity and consistency.
- Updated OtelLogsIngestService to improve readability of async calls.
- Enhanced LogFilterEvaluator comments and formatting for better understanding.
- Removed unused fields from LogPipelines settings page.
- Added FilterCondition component for managing individual filter conditions.
- Created FilterQueryBuilder component to build and manage filter queries for log pipelines.
- Introduced ProcessorForm component for creating log pipeline processors with various configurations.
- Added SeverityMappingRow component for managing severity mappings in the Severity Remapper processor.
- Implemented database migration for LogScrubRule table.
- Updated schema migrations to include new migration for LogScrubRule.
- Added keyboard shortcuts for navigating logs using 'j' and 'k', and focusing the search bar with '/'.
- Implemented logic to reset the focused row index when displayed logs change.
- Integrated a ref for the LogSearchBar to allow programmatic focus.
- Updated LogsTable to visually indicate the focused row.
- Enhanced LogsAnalyticsView with a new tooltip component for better data representation.
- Refactored LogSearchBar and LogsFilterCard to support forwarding refs.
- Improved styling and accessibility across various components.
- Implemented LogPipelineProcessor model with necessary fields and access controls.
- Created LogDropFilterAction enum for defining actions on log drop filters.
- Introduced LogPipelineProcessorType enum and configuration interfaces for various processor types.
- Developed LogExport utility for exporting logs in CSV and JSON formats.
- Added LogDropFilterService for managing drop filters with caching.
- Implemented LogPipelineService for loading and processing log pipelines with processors.
- Created LogFilterEvaluator for evaluating filter queries against log entries.
- Updated GitHub Actions workflows to implement a matrix strategy for building Docker images across multiple architectures (linux/amd64 and linux/arm64).
- Introduced new jobs for merging multi-arch manifests after building images, ensuring proper tagging and pushing to Docker Hub and GitHub Container Registry.
- Enhanced the `build_docker_images.sh` script to append architecture suffixes to tags for single-platform builds, preventing tag collisions.
- Added a new script `merge_docker_manifests.sh` to create and push multi-arch manifests for built images.
- Removed redundant Docker metadata actions and streamlined the build process for clarity and efficiency.
style(LogsViewer): format export types for better readability
style(LogsAnalyticsView): clean up function formatting and improve readability
chore: bump version to 10.0.30
- Introduced a new view mode "analytics" to the LogsViewer component.
- Created LogsAnalyticsView component to handle analytics display.
- Updated LogsViewerToolbar to allow switching between "list" and "analytics" views.
- Enhanced LogsViewer to manage internal state for view mode and handle changes.
- Updated types to include LogsViewMode for better type safety.
- Refactored main content rendering logic to conditionally display analytics or logs table.
- Introduced `LogSavedView` model to manage saved log views in the database.
- Created migration to add `LogSavedView` table with necessary fields and constraints.
- Implemented `LogSavedViewService` for CRUD operations on saved views.
- Enhanced `LogsViewerToolbar` to include buttons for saving views and selecting saved views.
- Added `ColumnSelector` component for managing visible columns in the logs table.
- Created `SavedViewsDropdown` component for selecting and managing saved views.
- Updated types to support new saved views and column options.
- Introduced retentionDate column to Log, Metric, Span, and MonitorLog models for per-service data retention.
- Implemented TTL configuration using retentionDate to enable automatic data deletion in ClickHouse.
- Added skip indexes for improved query performance on relevant columns in Log, Span, Metric, and Exception models.
- Updated ingestion services to compute and store retentionDate based on service-specific retention settings.
- Created a data migration to add retentionDate columns and skip indexes to existing telemetry tables.
- Deprecated the cron job for data deletion, transitioning to ClickHouse's native TTL mechanism.
Fixes#2348
Alerts without monitors were causing workspace notifications to crash with:
TypeError: Cannot read properties of null (reading 'id')
This restores proper null handling that was accidentally removed in
commit 76ab3a8cd6.
- Updated arrow functions to use explicit return statements in several files for clarity.
- Adjusted formatting and indentation for better code structure.
- Simplified some conditional checks and improved variable declarations.
- Enhanced error handling in Workflow feature set for documentation retrieval.
- Ensured consistent use of TypeScript types across components.
- Add FacetValueRow component for displaying facet values with counts and actions.
- Introduce HistogramTooltip component for displaying histogram data with severity colors.
- Create LogSearchBar component for improved log searching with suggestions and query syntax.
- Implement LogSearchSuggestions component for displaying search suggestions.
- Develop LogsFacetSidebar component for displaying filters and facets in the sidebar.
- Add LogsHistogram component for visualizing log volume over time with severity differentiation.
- Create severityColors utility for managing severity color mappings.
- Document the roadmap for enhancing log management capabilities, including search UX, analytics, and operational features.
- Deleted the otel-collector job from GitHub workflows and related deployment configurations.
- Updated Helm charts to remove references to the OpenTelemetry Collector, including its deployment and service definitions.
- Added gRPC server functionality directly in the telemetry service to handle telemetry ingestion.
- Updated environment variables and Docker configurations to reflect the removal of the OpenTelemetry Collector.
- Adjusted telemetry service to support both HTTP and gRPC protocols for telemetry data.
- Added breadcrumbs to the documentation content for improved navigation.
- Refined header layout by adjusting the category badge and title positioning.
- Updated the head partial to include JetBrains Mono font and dynamic page titles.
- Enhanced the header with a search button and version indicator.
- Improved navigation structure with icons for each category and collapsible sections.
- Updated pagination to provide a more visually appealing layout with clear previous/next links.
- Introduced callout styles for notes, warnings, tips, and other alerts in markdown rendering.
- Implemented slug generation for headings to enable anchor links.
- Enhanced table rendering for better styling and responsiveness in documentation.
The compiled CSS alone didn't cover all utility classes used in the
docs EJS templates, breaking styling. Restore the CDN but improve
CLS by:
- Loading critical CSS first with layout-stabilizing rules
(header height, sidebar width, body flex, nav width)
- Loading Tailwind CDN before compiled CSS so both are ready at
first paint
- Compiled CSS now supplements (font-face, prose, syntax) rather
than conflicting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove redundant Tailwind CDN from /docs pages (fixes CLS 0.21 → <0.1)
The compiled CSS in style.css already contains all needed utilities;
the CDN was re-processing styles causing layout shifts on 35 desktop URLs.
- Defer PostHog analytics via requestIdleCallback to unblock rendering
- Reduce Google Fonts to wght@400..800 (only weights actually used)
- Move meta charset/viewport to top of <head> for faster parsing
- Add defer to highlight.js on blog posts to unblock LCP
- Add DNS prefetch for PostHog domain
These changes target the 311 mobile URLs with LCP >2.5s and
35 desktop URLs with CLS >0.1 reported by Google Search Console.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Removed workflow service from docker-compose files.
- Updated environment configuration to remove workflow port.
- Implemented new ComponentCodeAPI, ManualAPI, and WorkflowAPI for handling workflow operations.
- Created QueueWorkflow service for managing workflow queue operations.
- Developed RunWorkflow service to execute workflows with improved error handling and logging.
- Added component metadata loading utility for dynamic component management.
- Introduced documentation for JavaScript and Webhook components.
- Enhanced overall structure and organization of workflow feature set.
Resolve conflicts by accepting master's deletion of Dashboard/package-lock.json
and StatusPage/package-lock.json.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Created NotFound.ejs for 404 error page with user-friendly messaging and navigation.
- Added ServerError.ejs for 500 error handling with retry and documentation links.
- Introduced Content.ejs partial for structured article content display.
- Developed Head.ejs partial for consistent head elements across pages.
- Implemented Header.ejs partial for navigation and branding.
- Created Nav.ejs partial for sidebar navigation with dynamic links.
- Added OpenSourceCommitment.ejs partial to highlight open-source contributions.
- Implemented Pagination.ejs partial for navigation between documentation sections.
- Updated package.json in StatusPage to correct dependency path for Common.
- Enhanced main package.json with new scripts for building and watching frontend applications.
- Modified tsconfig.json to exclude frontend directories from compilation.
- Simplified Nginx configuration by removing individual upstreams for each service and routing all to a single app upstream.
- Refactored configure.sh to streamline Dockerfile generation.
- Cleaned up docker-compose files by consolidating services and removing unnecessary definitions.
- Introduced new frontend handling logic in Index.ts for rendering different frontend applications.
- Added utility functions for managing status page data and RSS feeds in StatusPage.ts.
- Created dev.sh and frontend-run.sh scripts to facilitate development and build processes for frontend applications.
- Deleted package.json and tsconfig.json for IsolatedVM.
- Removed isolated-vm upstream configuration from Nginx default.conf.template.
- Removed ISOLATED_VM_PORT and telemetry settings from config.example.env.
- Cleaned up docker-compose.base.yml by removing isolated-vm service and its environment variables.
- Updated docker-compose.dev.yml to eliminate isolated-vm service and its associated volumes.
- Removed isolated-vm service from docker-compose.yml.
- Added McpTypes.ts for defining JSON schema and tool information.
- Created ModelType.ts and OneUptimeOperation.ts enums for model types and operations.
- Implemented MCPLogger for structured logging in MCP servers.
- Integrated MCP routes into the main application index.
- Updated package.json to include @modelcontextprotocol/sdk dependency.
- Removed MCP-related configurations from Helm chart and Docker Compose files.
- Added Data Processing Agreement (DPA) page and route to the legal section.
- Updated legal.ejs to include a link to the new DPA page.
- Implemented Probe registration endpoint to handle global probes.
- Created Server Monitor ingestion API with endpoints for secret key verification and response ingestion.
- Developed job processing functions for incoming request and probe ingestion.
- Added middleware for probe authorization and request type definitions.
- Enhanced monitor utility functions to populate secrets in monitor steps.
- Introduced queue stats and failed jobs endpoints for server monitor.
- Added "Release" and "Environment" columns to the TelemetryExceptionTable and OccurrenceTable components for better context on exceptions.
- Introduced StackFrameViewer component to display structured stack frames from exceptions, supporting various programming languages.
- Implemented StackTraceParser utility to parse raw stack traces into structured frames, identifying application vs. library code.
- Updated OtelTracesIngestService to extract release and environment information from resource attributes and include parsed frames in exception payloads.
- Enhanced ExceptionUtil to handle release and environment properties in exception status updates.
- Added comprehensive tests for StackTraceParser covering multiple programming languages and edge cases.
- Introduced External Status Page Monitor to monitor third-party status pages.
- Implemented fetching logic for Atlassian Statuspage, RSS, and Atom feeds.
- Added new types and interfaces for handling external status page responses.
- Created UI components for configuring and displaying external status page monitors.
- Updated documentation to include details on the new monitor type and its configuration options.
- Created NotFound.ejs for 404 error page with navigation and header.
- Added ServerError.ejs for 500 error page with retry and documentation link.
- Introduced Content.ejs partial for displaying documentation articles.
- Implemented Head.ejs partial for consistent head elements across pages.
- Developed Header.ejs partial for site header with navigation links.
- Created Nav.ejs partial for documentation navigation structure.
- Added OpenSourceCommitment.ejs partial to highlight open-source contributions.
- Implemented Pagination.ejs partial for navigation between documentation pages.
Track clicks on 'Get started free' and 'Request demo' CTAs via
gtag events (cta_get_started, cta_request_demo) and GTM dataLayer.
This enables GA4 conversion tracking for CTA clicks, which was
previously missing (GA audit found zero conversion events).
Uses event delegation so it automatically tracks all CTA links
including dynamically rendered ones.
Added to: homepage, pricing, demo, blog posts, blog list,
status page, and industry pages.
- Added isolated-vm dependency for secure script execution.
- Replaced direct Playwright usage in SyntheticMonitor with a worker process.
- Created SyntheticMonitorWorker to handle script execution in a sandboxed environment.
- Implemented proxy configuration handling for worker processes.
- Enhanced error handling and logging for script execution results.
- Removed unnecessary browser session management from SyntheticMonitor.
- Simplified style definitions in AlertCard, EpisodeCard, FeedTimeline, IncidentCard, AlertDetailScreen, AlertEpisodeDetailScreen, and others by using multi-line formatting.
- Enhanced the layout of components in HomeScreen, MyOnCallPoliciesScreen, and SettingsScreen for better maintainability.
- Updated text styles for better clarity and consistency across screens.
- Updated package.json to include whois-json dependency.
- Created DomainMonitorCriteria class for evaluating domain monitoring criteria.
- Added DomainMonitorResponse interface to define the structure of domain monitoring responses.
- Introduced MonitorStepDomainMonitor interface and utility for managing domain monitor steps.
- Developed DomainMonitorStepForm component for user input on domain monitoring settings.
- Implemented DomainMonitorView component to display monitoring results and details.
- Added DomainMonitorUtil class for querying domain information using WHOIS data.
- Included parsing methods for name servers and domain status in DomainMonitorUtil.
- Changed dependency for Common in CLI package.json to use npm package @oneuptime/common@latest.
- Updated tsconfig.json to exclude Tests, build, node_modules, and jest.config.json.
- Modified PublishAllPackages.sh to replace Common dependency with the pinned version during publish.
- Added GitHub Actions workflow for testing CLI on pull requests and pushes.
- Added missing newlines at the end of files in MarkdownContent.tsx and RootCauseCard.tsx
- Reformatted shadowColor and color properties in NotesSection.tsx, SegmentedControl.tsx, MainTabNavigator.tsx, HomeScreen.tsx for better readability
- Enhanced code formatting in SectionHeader.tsx and OnCallStackNavigator.tsx for consistency
- Improved readability of getEntityId function in useAllProjectOnCallPolicies.ts
- Refactored conditional rendering in AlertDetailScreen.tsx, AlertEpisodeDetailScreen.tsx, IncidentDetailScreen.tsx, and IncidentEpisodeDetailScreen.tsx for better clarity
- Implement tests for ResourceCommands, ConfigCommands, UtilityCommands, and ErrorHandler.
- Enhance test coverage for command registration and execution, including list, get, create, update, delete, and count operations.
- Introduce tests for credential management and context handling in commands.
- Add error handling tests to ensure graceful exits on API errors and invalid inputs.
- Update jest configuration to exclude test files from coverage and adjust TypeScript settings.
- Added package.json for OneUptime CLI with scripts for development and build processes.
- Included TypeScript configuration (tsconfig.json) with strict type checking and module settings.
- Refactored IncidentsScreen to use theme colors for backgrounds and text.
- Adjusted font sizes and styles across various components for better readability.
- Updated SettingsScreen to enhance layout and visual hierarchy, including removing GlassCard and using View components with theme colors.
- Modified LoginScreen and ServerUrlScreen to improve input field styling and overall layout.
- Revised color tokens in theme/colors.ts for better contrast and accessibility.
- Improved button labels for clarity and consistency.
- Removed unused theme variable from IncidentsScreen.
- Updated SettingsScreen to use GlassCard and LinearGradient for improved UI.
- Refactored LoginScreen and ServerUrlScreen to utilize GradientHeader and GlassCard for consistent styling.
- Introduced GradientButton component for reusable gradient-styled buttons.
- Added Logo component for consistent branding across screens.
- Created NotesSection component to manage and display internal notes.
- Implemented SectionHeader component for better organization of section titles.
- Enhanced color theme with new gradient and accent colors.
- Updated BiometricLockScreen with improved icon layout and shadow effects.
- Refined HomeScreen layout for better spacing and added header gradient.
- Enhanced IncidentDetailScreen with gradient backgrounds and improved badge styling.
- Replaced error handling in IncidentsScreen with a reusable EmptyState component.
- Improved SettingsScreen with a profile header and added icons to settings rows.
- Revamped LoginScreen and ServerUrlScreen with gradient headers and refined input fields.
- Updated color theme to include new gradient properties for better visual consistency.
- Introduced new DNS monitor types and criteria checks in CriteriaFilter.ts.
- Implemented DNS monitor instance creation in MonitorCriteriaInstance.ts.
- Enhanced MonitorStep to support DNS configurations.
- Added DNS response handling in ProbeMonitorResponse.ts.
- Created DNS monitor forms and summary views in the Dashboard.
- Developed DNS query utilities and response handling in MonitorTypes/DnsMonitor.ts.
- Added DNS record types and response structures for better data handling.
- Implemented criteria evaluation for DNS monitoring in DnsMonitorCriteria.ts.
Remove ProjectSelectionScreen as it is no longer needed; integrate project selection into other screens
Update IncidentDetailScreen and IncidentEpisodeDetailScreen to directly receive projectId from route params
Refactor IncidentsScreen to utilize useAllProjectIncidents, useAllProjectIncidentEpisodes, and useAllProjectIncidentStates hooks for better data management
Add new hooks: useAllProjectCounts, useAllProjectAlerts, useAllProjectAlertEpisodes, useAllProjectAlertStates, useAllProjectIncidentEpisodes, and useAllProjectIncidentStates for improved data fetching and state management
Remove useProject hook usage from SettingsScreen and adjust project-related logic accordingly
- Added SectionHeader component for consistent section titles in IncidentEpisodeDetailScreen.
- Updated styles for various text elements to improve readability and accessibility.
- Refined button styles in LoginScreen and ServerUrlScreen for better visual feedback.
- Introduced focus states for input fields in LoginScreen and ServerUrlScreen.
- Enhanced ProjectSelectionScreen with improved project item display.
- Implemented SectionCard component in SettingsScreen for better layout organization.
- Updated color tokens in theme for better visual consistency and added new accent colors.
- Adjusted Tailwind CSS configuration for improved shadow effects and new color variables.
- Removed AlertEpisodesStackNavigator and IncidentEpisodesStackNavigator.
- Integrated AlertEpisodeDetailScreen and IncidentEpisodeDetailScreen into AlertsStackNavigator and IncidentsStackNavigator respectively.
- Updated MainTabNavigator to remove references to the deleted stack navigators.
- Adjusted RootNavigator linking to reflect the new navigation structure.
- Modified types to remove unused stack parameter lists.
- Updated handlers for notifications to navigate to the correct screens.
- Refactored AlertsScreen and IncidentsScreen to support segmented control for toggling between alerts and episodes.
- Added SegmentedControl component for better UI navigation.
- Cleaned up unused screen components and hooks related to episodes.
- Updated background colors for various components to use `backgroundElevated` instead of `backgroundSecondary`.
- Increased padding and border radius for cards and buttons across multiple screens for a more modern look.
- Introduced shadow styles for components to improve depth perception.
- Adjusted header styles in navigators to use `backgroundPrimary` and added subtle borders.
- Added a new `shadows` utility to manage shadow styles consistently across the app.
- Modified text styles for better readability and visual hierarchy.
- Updated spacing constants to include larger values for improved layout.
- Introduced CriteriaFilter, CriteriaIncident, and CriteriaAlert for defining filter conditions and incident configurations.
- Added enums for CheckOn, FilterType, and FilterCondition to specify evaluation aspects and comparison operators.
- Included configurations for various monitor step types: Log, Trace, Metric, and SNMP monitors.
- Implemented a new DataTypeDetail service to handle detailed views for data types.
- Created a DataTypeUtil to manage data type definitions and retrieval.
- Added a new EJS template for displaying data type details, including properties, values, and JSON examples.
- Updated navigation to include a section for data types in both desktop and mobile views.
- Introduced a new DataTypes module to encapsulate data type information and improve maintainability.
- Implemented a new page for creating alerts with a form that includes fields for title, description, severity, state, monitor, on-call policy, labels, root cause, and remediation notes.
- Updated the AlertsTable component to conditionally render a "Create Alert" button based on the disableCreate prop.
- Modified the AlertsLayout to optionally hide the side menu when navigating to the create alert page.
- Enhanced routing to include a new route for the alert creation page and adjusted the side menu visibility accordingly.
- Updated PageMap and RouteMap to include the new alert creation route.
- Added migration to update database schema related to incident and alert policies.
- Updated hooks to return specific types using UseQueryResult for better type safety.
- Refactored various components to explicitly define return types for functions and callbacks.
- Improved type annotations for variables and function parameters in screens and hooks.
- Enhanced readability by restructuring code and ensuring consistent formatting.
- Added missing type imports and ensured proper usage of types from the API.
- Cleaned up unnecessary type assertions and improved overall code clarity.
- Simplified state management and data fetching in IncidentEpisodeDetailScreen.
- Enhanced code clarity by using arrow functions consistently and removing unnecessary destructuring.
- Improved type annotations across various screens for better TypeScript support.
- Streamlined the rendering of components in IncidentEpisodesScreen and IncidentsScreen.
- Updated NotificationPreferencesScreen to use consistent function signatures and improved readability.
- Refactored ProjectSelectionScreen and SettingsScreen for better structure and clarity.
- Enhanced LoginScreen and ServerUrlScreen with clearer type definitions and improved error handling.
- Updated storage utilities to ensure consistent type usage and improved code clarity.
- Refactored theme context and spacing utilities for better type safety and readability.
- Improved color and date utility functions for better maintainability.
- Updated expo-server-sdk in package.json from 3.10.0 to 3.15.0.
- Deleted outdated firebase-push-notifications.md and created new push-notifications.md for clarity.
- Updated navigation links in Nav.ts and README.md to point to the new push-notifications documentation.
feat: implement notification preferences management with local storage
feat: enhance accessibility for alert and incident actions
feat: integrate haptic feedback for user interactions in various screens
refactor: update navigation structure to include settings and notification preferences
- Added haptic feedback on state change actions in IncidentDetailScreen and IncidentEpisodeDetailScreen.
- Replaced ActivityIndicator with SkeletonCard for better loading experience in IncidentDetailScreen and IncidentEpisodeDetailScreen.
- Updated empty state messages in IncidentEpisodesScreen and IncidentsScreen for clarity.
- Refactored SettingsScreen to improve layout and added biometric authentication options.
- Introduced OfflineBanner component to notify users of network issues.
- Created SwipeableCard component for better interaction with list items.
- Implemented useBiometric and useNetworkStatus hooks for managing biometric settings and network status.
- Added BiometricLockScreen for unlocking the app using biometric authentication.
- Introduced preferences storage for theme mode and biometric settings.
- Created IncidentEpisodesStackNavigator for managing navigation between incident episodes list and detail screens.
- Implemented AlertEpisodesScreen to display a list of alert episodes with pagination and refresh functionality.
- Developed AlertEpisodeDetailScreen to show detailed information about a specific alert episode, including state changes and internal notes.
- Added IncidentEpisodesScreen to display a list of incident episodes with similar functionality to the alert episodes screen.
- Created IncidentEpisodeDetailScreen for detailed view of incident episodes, including state management and note-taking features.
- Integrated hooks for fetching data related to alert and incident episodes.
- Added UI components for displaying episode details, actions, and notes.
- Implemented `useAlertDetail`, `useAlertStates`, and `useAlertStateTimeline` hooks for fetching alert details, states, and timelines.
- Created `useAlerts` and `useUnresolvedAlertCount` hooks for managing alerts list and unresolved alert counts.
- Developed `useIncidentDetail`, `useIncidentStates`, and `useIncidentStateTimeline` hooks for incident management.
- Added `useIncidents` and `useUnresolvedIncidentCount` hooks for fetching incidents and unresolved incident counts.
- Introduced `ProjectProvider` and `useProject` hook for managing project selection and state.
- Created `AlertsStackNavigator` and `IncidentsStackNavigator` for navigation between alerts and incidents screens.
- Developed `AlertDetailScreen` and `IncidentDetailScreen` for displaying detailed information about alerts and incidents.
- Added `ProjectSelectionScreen` for selecting projects with loading and error handling.
- Implemented utility functions for color conversion and date formatting.
Highlight the AI agent capabilities - auto-detection, root cause analysis,
and automated code fix PRs. This is our key differentiator and was missing
from the README.
refactor(Migration): update comments for clarity and maintainability
fix(MarkdownEditor): adjust code block formatting for consistency in documentation
- Fire sign_up event on successful registration (Accounts/Register.tsx)
- Fire page_view_pricing event on pricing page load
- Fire page_view_demo event on demo page load
- All events use dataLayer.push for GTM/GA4 compatibility
Changed title pattern from:
'OneUptime vs [Product]: Open-Source Alternative | 2026 Comparison'
To:
'[Product] Alternative - OneUptime | Open Source | 2026 Comparison'
Rationale:
- Puts competitor name first (matches search intent)
- 'Alternative' keyword prominent (what users search for)
- Shorter, more scannable
Also improved meta description to be more action-oriented with clear value props.
Targets: /compare/better-uptime (position 13.5, 803 impressions)
Multiple product pages had identical generic meta descriptions:
'OneUptime monitors websites, APIs, and servers...'
This hurt CTR because Google showed the same text for different pages.
Updated with unique, keyword-rich descriptions:
- /product/status-page: Focus on free, unlimited subscribers, Statuspage alternative
- /product/monitoring: Focus on global locations, alerts, Datadog alternative
- /product/incident-management: Focus on features, integrations
- /product/on-call: Focus on rotations, escalations, PagerDuty alternative
- /about: Focus on open source, GitHub stars, mission
Expected impact: Improved CTR from search results
Google Search Console shows 0/10,519 pages indexed. Root cause: 5,000+
thin tag pages are diluting site quality signals and consuming crawl budget.
Changes:
- Add noindex,follow meta tag to blog tag pages (ListByTag.ejs)
- Remove tag sitemaps from sitemap index (Sitemap.ts)
This tells Google to:
1. Stop trying to index tag pages (they're thin content)
2. Still follow links on those pages to discover real content
3. Focus crawl budget on valuable pages (blog posts, product pages)
Expected impact:
- Improved crawl budget efficiency
- Better quality signals for the domain
- Gradual improvement in indexing of valuable pages
- Updated multiple components and worker jobs to improve the formatting of alert and incident numbers.
- Ensured consistent use of conditional rendering for alert and incident numbers with prefixes.
- Enhanced readability by using multiline return statements for JSX elements.
ModelTable/CardModelDetail only fetch the first key from column field objects.
The WithPrefix fields must be in selectMoreFields to be included in the API query.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Implemented functionality to allow users to set custom prefixes for alert numbers and alert episode numbers in the AlertMoreSettings component.
- Added similar functionality for incident numbers and incident episode numbers in the IncidentMoreSettings component.
- Introduced custom prefixes for scheduled maintenance numbers in the ScheduledMaintenanceMoreSettings component.
- Updated various notification jobs to utilize the new prefix settings for alert, incident, and scheduled maintenance numbers.
- Ensured backward compatibility by maintaining the default '#' prefix when no custom prefix is provided.
- All events captured via Analytics.capture() now also push to GA4 dataLayer
- This enables tracking signups (accounts/register) and other events in GA4
- Works alongside existing PostHog tracking
- Adjusted formatting in PublicNote.tsx for better alignment of imports and function parameters.
- Reformatted episode monitor extraction in Detail.tsx for clarity.
- Enhanced readability of episodes data parsing in List.tsx.
- Implement fetching and displaying active incident episodes on the Status Page.
- Introduce episode public notes and state timelines for enhanced episode details.
- Create EpisodeGroup type to structure episode-related data.
- Update Overview component to integrate episodes alongside incidents.
- Implemented SendNotificationToSubscribers job for IncidentEpisodePublicNote to notify subscribers about new public notes added to episodes.
- Implemented SendNotificationToSubscribers job for IncidentEpisodeStateTimeline to notify subscribers about state changes of episodes.
- Both jobs include logic for fetching relevant episodes, monitors, and subscribers, and sending notifications via email, SMS, Slack, and Microsoft Teams.
- Added error handling and logging for better traceability of notification processes.
- Badge: 'Open Source Alternative' with GitHub link (reinforces positioning)
- H1: 'The Open-Source [Competitor] Alternative' (SEO + clear value prop)
- CTA: 'Start free — no credit card' (removes friction)
- Added trust signal: 'Self-host for free or use our cloud. No vendor lock-in.'
These changes make the compare pages more conversion-focused.
- Title: 'OneUptime | The Open-Source Observability Platform'
- Meta: Focus on unified platform, self-hostable
- H1: 'The Open-Source Observability Platform'
- Sub: Emphasize complete reliability stack (monitoring, incidents, status pages, APM)
Part of GTM refresh to improve SEO and conversion.
- Added missing commas in migration index.
- Improved type annotations for dynamic imports in IncidentService and IncidentSlaRuleService.
- Simplified logger debug messages in IncidentSlaService and IncidentSlaRuleService.
- Cleaned up JSX formatting in IconPicker, NotificationBellDropdown, RoleLabel, and Header components.
- Enhanced readability by restructuring long lines and removing unnecessary line breaks in various components.
- Updated error handling in fetch functions within DashboardHeader to use concise catch blocks.
- Refactored UserSettings and Incident routes for better readability.
- Improved code consistency and formatting in CheckSlaBreaches job.
- Added IncidentSlaStatus enum to define SLA status values.
- Created IncidentSlaRulesPage component for managing SLA rules, including documentation and configuration options.
- Developed IncidentViewSla component to display SLA status and deadlines for incidents.
- Implemented CheckSlaBreaches job to monitor SLA breaches and send notifications.
- Created SendNoteReminders job to automate internal and public note reminders based on SLA rules.
- Introduced new models: ProjectUserProfile and TeamMemberCustomField to manage custom fields for users in projects.
- Implemented services for ProjectUserProfile and TeamMemberCustomField for database interactions.
- Created UI components for managing team member custom fields and user-specific custom fields in settings.
- Updated routing to include new pages for custom fields management.
- Added necessary database migrations for new tables and relationships.
- Enhanced side menu in user settings to navigate to custom fields.
- Updated migration file to include new tables and constraints for incident roles and grouping rules.
- Refactored alert grouping engine service for improved readability.
- Adjusted incident episode role member service for better error logging and code clarity.
- Modified data migration to streamline imports and enhance maintainability.
Updated the instructions to clone the repository with only the release branch.
This will save significant bandwidth and disk space by cloning only the release branch as it exists now, rather than the entire repository with its full history.
The install.The URL is a redirect, for curl to follow it, you must use the -L option, otherwise you get an error.
EG:
root@inf1:~# curl https://oneuptime.com/install.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 107 100 107 0 0 242 0 --:--:-- --:--:-- --:--:-- 243
bash: line 1: Found.: command not found
- Updated permission arrays in various database model files to ensure consistent formatting by aligning closing brackets.
- Adjusted the `onBeforeCreate` function in the IncidentMembers component for improved readability.
- Cleaned up descriptions in the Permission helper class for better clarity.
- Added a new migration for IncidentRole and IncidentMember tables with appropriate constraints and indexes.
- Introduced IncidentMember model to manage users assigned to incidents with specific roles.
- Created IncidentRole model to define roles that can be assigned during incident response.
- Implemented IncidentMemberService for CRUD operations on incident members.
- Implemented IncidentRoleService for CRUD operations on incident roles with order management.
- Added OnCallUsers page to display and manage users assigned to incidents.
- Added IncidentRoles settings page to define and manage incident roles.
- Updated RouteMap to include new routes for on-call users and incident roles.
- Updated TelemetryIngestionKey, TelemetryUsageBilling, User, WhatsAppLog, Workflow, WorkflowLog, WorkflowVariable, WorkspaceNotificationLog, WorkspaceNotificationRule, WorkspaceProjectAuthToken models to include the new ReadAllProjectResources permission in access control settings.
- Introduced ReadAllProjectResources permission in Permission.ts with a description outlining its purpose and scope.
- Updated MonitorAlert and MonitorIncident classes to handle labels and owner teams/users.
- Enhanced CriteriaAlert and CriteriaIncident types to include labelIds, ownerTeamIds, and ownerUserIds.
- Modified MonitorCriteriaAlertForm and MonitorCriteriaIncidentForm components to support new fields for labels and ownership.
- Integrated dropdown options for labels, teams, and users in MonitorSteps and related components.
- Implemented fetching of labels, teams, and users in MonitorSteps for dynamic dropdowns.
- Introduced CollapsibleSection component for better organization of advanced options in MonitorStep.
- Replaced existing div structures with Card components for improved visual hierarchy.
- Enhanced user experience by adding collapsible sections for API and Website monitor advanced settings.
- Cleaned up code by removing unnecessary comments and consolidating error handling logic.
- Introduced MonitorStepSnmpMonitor interface for SNMP configuration.
- Implemented SNMP version handling with enums for V1, V2c, and V3.
- Created utility classes for handling SNMP OIDs and v3 authentication parameters.
- Developed SNMP Monitor response structure to capture OID responses and status.
- Added UI components for SNMP Monitor configuration including OID editor and v3 auth form.
- Implemented SNMP query logic with retry mechanism and response time tracking.
- Added type definitions for net-snmp library to support SNMP operations.
- Updated the migration script for IncidentGroupingRule to improve structure and readability.
- Added new foreign key constraints and indexes to enhance database integrity.
- Refactored DeleteAccount component to improve layout and readability.
- Improved placeholder text formatting in IncidentGroupingRules page for better clarity.
- Added ProjectService import in BillingService to resolve circular dependency.
- Refactored condition checks in IncidentGroupingEngineService for better readability.
- Implemented IncidentGroupingRuleService to manage incident grouping rules with automatic deletion of old records if billing is enabled.
- Created IncidentGroupingRules page for managing incident grouping rules, including detailed documentation on grouping logic, match criteria, and configuration options.
- Added UI components for creating, editing, and displaying incident grouping rules with various filtering and grouping options.
- Added missing commas in migration index.
- Removed unused imports in IncidentEpisodeService and UserNotificationRuleService.
- Simplified conditional statements and improved code readability in various services.
- Adjusted formatting for better consistency in code style.
- Enhanced error handling and logging in MicrosoftTeamsIncidentEpisodeActions.
- Updated documentation text in IncidentEpisodeDocs for clarity.
- Improved API call structure in IncidentEpisodesTable and IncidentEpisodeFeed.
- Refactored SlackIncidentEpisodeActions for better readability.
- Cleaned up unnecessary code and improved formatting in various components.
- Implemented AutoResolve job to automatically resolve inactive incident episodes.
- Created ResolveInactiveEpisodes job to resolve episodes inactive for over 24 hours.
- Added SendCreatedResourceNotification job to notify owners of newly created incident episodes.
- Developed SendNotePostedNotification job to inform owners when a note is posted on an incident episode.
- Introduced SendOwnerAddedNotification job to notify users when they are added as owners of an incident episode.
- Implemented SendStateChangeNotification job to alert owners of state changes in incident episodes.
- Implemented SlackIncidentEpisodeMessages class to create message blocks for incident episodes in Slack.
- Added IncidentEpisodeWorkspaceMessages class to handle workspace notifications and message blocks for incident episodes.
- Created IncidentEpisodeDocs component to provide a comprehensive guide on incident grouping, including lifecycle, setup steps, and best practices.
- Implemented Episode Internal Note component for managing private notes related to incident episodes.
- Created Layout component for the Incident Episode view, integrating side menu and breadcrumb navigation.
- Developed Owners component to manage teams and users associated with incident episodes.
- Added Postmortem component for documenting postmortem analyses of incidents.
- Introduced Remediation component for capturing remediation notes for incidents.
- Created Root Cause component to document the root causes of incidents.
- Developed SideMenu for navigating through various sections of the Incident Episode view.
- Implemented State Timeline component to track the status changes of incident episodes.
- Added Episodes and Unresolved Episodes pages for listing all incident episodes and unresolved ones respectively.
- Removed project_id variable and its usage from multiple Terraform test files (23-probe-crud, 24-status-page-crud, 25-status-page-with-domain, 26-monitor-steps-basic, 27-monitor-types, 28-incident-crud, 29-alert-crud, 30-scheduled-maintenance-crud, 31-on-call-duty-policy-crud, 32-monitor-group-crud, 33-team-crud, 35-monitor-with-steps, 36-monitor-types-basic, 37-label-order-idempotency).
- Updated ResourceGenerator to treat project_id as computed-only, inferred from API key authentication.
- Adjusted related logic in resource update and delete operations to exclude project_id from requests.
- Updated email templates for alerts and incidents to include alertNumber and incidentNumber in the subject and body.
- Modified PushNotificationUtil to incorporate alert and incident numbers in notification titles and messages.
- Adjusted UserNotificationRuleService to pass alertNumber and incidentNumber for notifications.
- Enhanced SendCreatedResourceNotification, SendNotePostedNotification, SendOwnerAddedNotification, and SendStateChangeNotification jobs to include alert and incident numbers in subjects and messages.
- Updated ScheduledMaintenance notification jobs to reflect scheduledMaintenanceNumber in relevant notifications.
- Updated migration files to enhance readability by adjusting indentation and line breaks.
- Added missing commas in the index file for migration imports.
- Improved accessibility attributes in various UI components by ensuring proper aria-labels and roles.
- Refactored key event handlers in UI components for better clarity and consistency.
- Enhanced error message handling in form components to ensure proper display and accessibility.
- Updated legacy function comments for clarity and maintainability.
refactor(AlertEpisodeService): change variable declaration from let to const for users
refactor(AlertGroupingEngineService): improve code readability with comments and formatting
fix(WhatsAppTemplateUtil): format long lines for better readability
refactor(MicrosoftTeamsAlertEpisodeActions): format code for consistency and readability
refactor(MicrosoftTeams): improve readability by formatting conditional statements
refactor(SlackAlertEpisodeActions): format code for better readability
refactor(AlertEpisodeMemberService.test): improve imports and formatting for clarity
refactor(AlertEpisodeService.test): enhance readability with consistent formatting
refactor(AlertGroupingEngineService.test): improve code readability and formatting
refactor(MarkdownViewer): format imports and improve readability
refactor(BaseModelTable): format helpContent type definition for clarity
refactor(OrderedStatesList): format JSX for better readability
fix(AlertEpisodeDocs): format descriptions for consistency
fix(AlertGroupingRules): format helpContent description for clarity
fix(UserSettingsRoutes): format route path for better readability
fix(ResolveInactiveEpisodes): format conditional statements for clarity
fix(SendCreatedResourceNotification): format code for better readability
fix(SendNotePostedNotification): format code for consistency
fix(SendStateChangeNotification): format code for better readability
- Implement comprehensive tests for AlertEpisodeService covering model instantiation, property accessors, and template rendering.
- Create tests for AlertGroupingEngineService focusing on alert grouping logic, matching criteria, and grouping key generation.
- Develop tests for AlertGroupingRuleService to validate rule properties, match criteria, group settings, and priority ordering.
- Implemented findOwners method in AlertEpisodeService to retrieve user and team owners for alert episodes.
- Added new email templates for alert episode owner notifications: AlertEpisodeOwnerAdded, AlertEpisodeOwnerStateChanged, AlertEpisodeOwnerNotePosted, and AlertEpisodeOwnerResourceCreated.
- Created jobs for sending notifications when an owner is added, a note is posted, and when the state of an alert episode changes.
- Updated routes to include new jobs for alert episode owner notifications.
- Implemented addNote and hasNoteFromSlackMessage methods in AlertEpisodeInternalNoteService.
- Added isEpisodeAcknowledged method in AlertEpisodeService to check acknowledgment status.
- Enhanced OnCallDutyPolicyService to include triggeredByAlertEpisodeId in logs.
- Updated WorkspaceNotificationRuleService to support Alert Episode conditions.
- Introduced new Slack action types for Alert Episodes.
- Extended NotificationRuleEventType and NotificationRuleConditionCheckOn enums for Alert Episodes.
- Modified WorkspaceConnectionMicrosoftTeams and WorkspaceConnectionSlack components to handle Alert Episodes.
- Created SlackAlertEpisodeActions class for managing Alert Episode actions in Slack.
- Implemented emoji reaction handling for private notes in Alert Episodes.
chore(MonitorStep.ts): remove redundant default monitor assignments in getDefaultMonitorStep method
chore(Port.ts): change toJSON method to return port value as a number instead of string
- Updated multiple test files to replace timestamp-based naming with random suffixes for better uniqueness and idempotency.
- Added random provider to each test file to generate unique identifiers.
- Removed unnecessary lifecycle blocks that ignored changes to resource names.
- Ensured consistent naming conventions across all test cases for clarity and maintainability.
- Implemented monitor types tests including variable definitions and verification scripts.
- Created incident CRUD tests with various configurations and verification logic.
- Added alert CRUD tests to validate alert creation and configurations.
- Developed scheduled maintenance CRUD tests to ensure proper handling of maintenance events.
- Established on-call duty policy CRUD tests to validate policy creation and configurations.
- Introduced monitor group CRUD tests to verify group creation and uniqueness.
- Created team CRUD tests to validate team creation and configurations.
- Added missing comma in schema migrations index.
- Reformatted long lines in AlertEpisodeFeedService and AlertEpisodeMemberService for better readability.
- Improved formatting in AlertEpisodeService for destructured variables.
- Enhanced readability in AlertGroupingEngineService by restructuring filter and map functions.
- Cleaned up permission descriptions in Permission.ts for consistency.
- Standardized description formatting in ChangeState and AlertGroupingRules components.
- Improved formatting in Episodes and AlertView components for better readability.
- Added comments for clarity in AutoResolve and BreakInactive jobs.
- Implemented AlertEpisodeViewLayout for displaying episode details.
- Created Owners component to manage team and user ownership of episodes.
- Added RootCause component for documenting the root cause of episodes.
- Developed SideMenu for navigation within the episode view.
- Introduced StateTimeline component to track the status timeline of episodes.
- Created EpisodesPage for listing all alert episodes.
- Added AlertGroupingRulesPage for managing alert grouping rules.
- Implemented UnresolvedEpisodesPage to display active (unresolved) episodes.
- Developed AutoResolve job to automatically resolve episodes based on alert status.
- Created BreakInactive job to resolve inactive episodes after a specified timeout.
- Deleted the detailed migration plan (5-Migration.md) and implementation plan (README.md) for Alert Grouping.
- Introduced a new summary document (Summary.md) outlining key capabilities, data models, grouping types, and on-call policy resolution for the Alert Grouping feature.
- Added a helper function `unwrap_value` to extract values from API responses that may be wrapped in an object format.
- Updated all verification scripts to use `unwrap_value` for fields such as name, description, color, title, and IDs.
- Enhanced checks for boolean fields to handle cases where the API may not return values due to permission issues.
- Ensured consistency across multiple test scripts for better maintainability and readability.
- Added UI components and pages for Alert Suppression including:
- Suppression Rules List Page
- Create/Edit Suppression Rule Page
- Suppressed Alerts Log Page
- Maintenance Windows Calendar View
- Active Maintenance Banner
- Quick Maintenance Modal
- Created migration scripts for new database tables:
- AlertSuppressionGroup
- AlertSuppressionRule
- SuppressedAlertLog
- AlertThrottleState
- Defined rollout strategy and data retention policies for suppressed alerts
- Updated README with implementation plan and architecture diagram
- Implemented verify.sh scripts for the following tests:
- 08-probe: Validate probe resource creation and API response consistency.
- 09-label-crud: Validate label CRUD operations via API.
- 10-monitor-status-crud: Validate monitor status CRUD operations via API.
- 11-incident-severity-crud: Validate incident severity CRUD operations via API.
- 12-status-page-domain: Validate domain and status page resources via API.
- 13-status-page-domain-computed-fields: Validate computed fields for status page domains.
- 14-status-page-server-defaults: Validate server-provided defaults for status pages.
- 15-monitor-server-defaults: Validate server-provided defaults for monitors.
- 16-incident-server-defaults: Validate server-provided defaults for incidents.
- 17-alert-server-defaults: Validate server-provided defaults for alerts.
- 18-scheduled-maintenance-server-defaults: Validate server-provided defaults for scheduled maintenance events.
- 19-on-call-duty-policy-server-defaults: Validate server-provided defaults for on-call duty policies.
Each script checks the API responses against expected values derived from Terraform outputs, ensuring resource integrity and consistency.
- Added a new directory structure for E2E tests under E2E/Terraform/e2e-tests.
- Created scripts for managing the test lifecycle: index.sh, wait-for-services.sh, setup-test-account.sh, run-tests.sh, and cleanup.sh.
- Developed README.md to document the E2E testing process and directory structure.
- Created individual test cases for various resources including labels, monitor statuses, incident severities, incident states, status pages, alert severities, and alert states.
- Configured GitHub Actions workflow for automated testing on pull requests and pushes to main branches.
- Added necessary variable files for each test case to define required inputs.
- Included cookies.txt for session management during API interactions.
- Implemented MigrationName1768825402472 to create tables for IncomingCallPolicy, IncomingCallPolicyEscalationRule, IncomingCallLog, IncomingCallLogItem, UserIncomingCallNumber, and IncomingCallPolicyLabel.
- Added necessary indexes and foreign key constraints for data integrity.
- Updated the User table to drop the alertPhoneNumber column and adjusted OnCallDutyPolicyScheduleLayer defaults.
- Updated index file to include the new migration.
- Deleted migration file for removing alert phone number from User.
- Deleted extensive migration file for IncomingCallPolicy and related tables.
- Deleted migration file for altering OnCallDutyPolicyScheduleLayer and IncomingCallPolicyEscalationRule.
- Updated index file to remove references to deleted migrations.
- Simplified import statements in PhoneNumber.ts and Config.ts.
- Consolidated async function calls in TwilioCallProvider.ts for clarity.
- Enhanced comment formatting and structure in TwilioCallProvider.ts.
- Reformatted SQL migration code for better readability in MigrationName.ts.
- Updated array syntax in Index.ts for consistency.
- Improved formatting and spacing in IncomingCallPolicyEscalationRuleService.ts.
- Standardized JSX formatting in various components for better readability.
- Enhanced conditional rendering logic in IncomingCallPolicies.tsx and Index.tsx.
- Cleaned up unnecessary whitespace and improved code consistency across multiple files.
- Updated TwilioCallProvider to support X-Forwarded-Proto and X-Forwarded-Host headers for improved webhook signature validation when behind proxies.
- Enabled trust proxy in StartServer to ensure correct interpretation of forwarded headers.
- Removed outdated incoming call policy documentation.
- Added Nginx configuration to handle X-Forwarded-Proto and X-Forwarded-Host headers, ensuring proper proxy behavior and preventing crashes when services are unavailable.
- Removed the `ReleasePhoneNumbersForCancelledSubscriptions` job as it is no longer needed.
- Removed the `SendWarningEmailsForPastDueSubscriptions` job due to redundancy.
- Updated `EmailTemplateType` to remove unused email templates related to incoming call policies.
- Adjusted the schema migrations index to include a trailing comma for consistency.
- Cleaned up imports in `Worker/Routes.ts` by removing references to the deleted jobs.
- Introduced UserIncomingCallNumber model to manage phone numbers for incoming call routing.
- Implemented UserIncomingCallNumberAPI for verification and resend functionality.
- Created UserIncomingCallNumberService to handle business logic for incoming call numbers.
- Added IncomingCallNumber component for UI management of incoming call numbers.
- Integrated IncomingCallPhoneNumbers page to display and manage incoming call numbers in user settings.
- Updated routing and breadcrumbs to include Incoming Call Policy section.
- Enhanced BaseAPI to include UserIncomingCallNumberAPI.
- Added a missing comma in the schema migrations index file.
- Improved formatting of the SCIM Logs table description for better readability.
- Refactored the SCIM settings page to enhance code clarity and maintainability, including restructuring form fields and action buttons.
- Updated SCIM URL confirmation modal to improve user instructions and formatting.
- Enhanced error and success modal handling for bearer token resets in the SCIM pages.
- Added detailed execution steps tracking throughout the SCIM BulkOperation, ListUsers, GetUser, CreateUser, UpdateUser, and DeleteUser endpoints.
- Improved logging structure to include execution steps, user info, and additional context in SCIM logs.
- Updated SCIMLogger to handle new fields for query parameters, execution steps, user info, and additional context.
- Ensured all error handling paths also log execution steps for better traceability.
- Implemented ProjectSCIMLog and StatusPageSCIMLog models to store SCIM operation logs.
- Created services for managing ProjectSCIMLog and StatusPageSCIMLog entries with automatic deletion of old logs.
- Developed SCIMLogger utility for creating logs with sanitized sensitive data.
- Added SCIMLogStatus enum to represent the status of SCIM operations.
- Introduced ProjectSCIMLogsTable and StatusPageSCIMLogsTable components for displaying logs in the dashboard.
- Enhanced logging with detailed request/response information and error handling.
- Implement IncomingCallLogItemService, IncomingCallLogService, IncomingCallPolicyService, and IncomingCallPolicyEscalationRuleService for handling database operations.
- Define types for call providers, including AvailablePhoneNumber, PurchasedPhoneNumber, and DialOptions.
- Create IncomingCallStatus enum to manage call statuses.
- Develop IncomingCallPolicies page with model table for managing incoming call policies.
- Add delete functionality for IncomingCallPolicy with a dedicated Delete component.
- Implement escalation rules management for IncomingCallPolicy with a dedicated Escalation component.
- Create detailed view for IncomingCallPolicy with Labels and status indicators.
- Establish layout and side menu for IncomingCallPolicy management.
- Add logs page to view incoming call history associated with policies.
- Implemented Incoming Email Monitor type in MonitorService.
- Created IncomingEmailCriteria for evaluating email criteria.
- Added IncomingEmailMonitorRequest type for handling incoming email data.
- Developed API endpoint for processing incoming email webhooks.
- Introduced queue service for managing incoming email ingestion jobs.
- Enhanced UI components to display incoming email monitor details.
- Updated criteria filter utility to support email-related checks.
- Integrated email processing into the existing monitoring framework.
- Implement StatusPageAnnouncementTemplateView for viewing and managing status page announcement templates.
- Create StatusPageAnnouncementTemplates for listing and managing all announcement templates.
- Add StatusPageCustomFields for managing custom fields related to status pages.
- Introduce SubscriberNotificationTemplateView for viewing and managing subscriber notification templates.
- Create SubscriberNotificationTemplates for listing and managing all subscriber notification templates.
- Removed TelemetryBreadcrumbs and related telemetry routes.
- Introduced new Breadcrumbs for Logs, Metrics, and Traces.
- Created dedicated pages and layouts for Logs, Metrics, and Traces.
- Updated PageMap and RouteMap to reflect the new structure.
- Implemented side menus for Logs, Metrics, and Traces.
- Added lazy loading for new pages to optimize performance.
- Updated migration script to enhance code clarity and maintainability.
- Reformatted SQL queries for better readability.
- Added comments to clarify migration steps.
- Ensured consistent use of async/await syntax.
- Updated index file to include the new migration.
- Adjusted TelemetryUsageBillingService and other components for better code style and consistency.
- Replaced all instances of TelemetryService with Service in components, pages, and utilities.
- Updated related imports and state management to reflect the new Service model.
- Removed the TelemetryServices view and associated routes, as it is no longer needed.
- Adjusted breadcrumb and route mappings to remove references to Telemetry Services.
- Ensured that all relevant functionality, such as logs and metrics, now utilize the Service model.
- Implemented Service Owners page with team and user management.
- Created Service Settings page for configuring service properties.
- Developed a Side Menu for navigation within the service view.
- Added Telemetry Services page to manage telemetry service assignments.
- Introduced Traces page to display trace data for assigned telemetry services.
- Updated routing to include new service-related pages.
- Enhanced breadcrumbs for improved navigation context.
- Reduced the size of SVG icons from h-7 w-7 to h-5 w-5 in on-call.ejs, status-page.ejs, traces.ejs, workflows.ejs.
- Adjusted the container sizes for icons from h-14 w-14 to h-10 w-10 and changed rounded styles from rounded-2xl to rounded-xl for a more uniform appearance.
- Ensured that all relevant icons and their containers maintain a consistent design language throughout the application.
- Updated subtle background colors from various shades (e.g., violet, blue, rose, orange, etc.) to a uniform gray (bg-gray-100/50) in the following files:
- ai-agent.ejs
- dashboards.ejs
- exceptions.ejs
- incident-management.ejs
- logs-management.ejs
- metrics.ejs
- monitoring.ejs
- on-call.ejs
- status-page.ejs
- traces.ejs
- workflows.ejs
- Adjusted specific UI elements to change color schemes from violet to sky in workflows.ejs for better visual consistency.
- Redesigned the Team Notifications section for improved clarity and engagement.
- Updated headings and descriptions to emphasize real-time alerts for workflows.
- Added integration cards for Slack and Microsoft Teams with detailed descriptions.
- Introduced a features list highlighting success notifications, failure alerts, and action buttons.
- Enhanced the interactive Slack notification demo with improved visuals and functionality.
- Implemented JavaScript functions for retrying workflows, viewing logs, and disabling workflows with user feedback.
- Added custom animations for a more dynamic user experience.
- Updated the layout and styling of the Team Notifications section in on-call.ejs, status-page.ejs, and traces.ejs to improve visual consistency and user experience.
- Replaced old notification descriptions with more concise and relevant content.
- Introduced integration cards for Slack and Microsoft Teams, highlighting their features and functionalities.
- Added a features list to emphasize key capabilities such as real-time delivery, smart escalations, and action buttons.
- Redesigned the Slack demo interface with a modern look and feel, including a new header and message area.
- Implemented dynamic message handling with buttons for investigating traces, creating incidents, and resolving issues.
- Added animations for message appearance and button interactions to improve user experience.
- Introduced a thread reply feature to simulate conversation flow within the Slack demo.
- Updated styles and animations for better visual feedback and engagement.
- Added a "Subscriber Notifications" section to the status page, detailing real-time incident updates, maintenance announcements, and resolution confirmations.
- Introduced a Slack demo with animated message notifications for the status page.
- Implemented a grid glow effect that follows the cursor on the status page.
- Added a "Trace Alerts" section to the traces page, highlighting alerts for slow requests and error rates, along with a Slack demo for trace notifications.
- Enhanced the workflows page with a "Workflow Notifications" section, providing details on execution status, error logs, and custom triggers, along with a Slack-like notification demo.
- Implemented grid glow effects for traces and workflows pages, enhancing user interaction.
- Added CSS animations for Slack message notifications across all pages.
- Updated the stats section in incident-management.ejs to use a new design with enhanced hover effects and updated text styles.
- Refined the logs-management.ejs stats section for better visual appeal and consistency with other views.
- Enhanced the metrics.ejs stats section with a modern layout and improved text presentation.
- Revamped the on-call.ejs stats section to align with the new design standards.
- Updated the status-page.ejs stats section for a cohesive look and feel across the application.
- Improved the traces.ejs stats section with a fresh design and consistent text formatting.
- Refined the workflows.ejs stats section to match the updated design language and improve user experience.
- Removed unnecessary gradient backgrounds and replaced them with solid colors for better clarity.
- Updated text styles to maintain consistency across sections.
- Enhanced image shadow effects for a more modern look.
- Streamlined the layout of stats and feature cards for improved user experience.
- Updated the layout and design of the "How It Works" section in on-call.ejs, status-page.ejs, traces.ejs, and workflows.ejs.
- Changed background styles from gradients to solid colors for better readability.
- Simplified headings and descriptions for clarity.
- Enhanced step indicators with consistent iconography and improved accessibility.
- Adjusted spacing and alignment for a more cohesive look across all sections.
- Introduced a new stats section showcasing key metrics: "5000+ Integrations", "Unlimited Workflows", "No-Code Builder", and "Secure Secrets".
- Added a "More Features" section with detailed feature cards highlighting capabilities such as Reliability, Integrations, Conditional Logic, Scheduled Triggers, Compliance, and Version Control.
- Enhanced visual design with gradients and icons for improved user engagement.
- Changed page title and meta description for better SEO.
- Updated main headline to emphasize uptime expectations.
- Revised subheadline to clarify observability benefits.
- Enhanced CTA buttons for better visibility and engagement.
- Added quick stats section to highlight key features.
- Reworked SaaS pain points section to address common challenges.
- Introduced product grid section to showcase OneUptime solutions.
- Updated features section with clearer descriptions and benefits.
- Included new sections for AI agent, enterprise readiness, and open source.
- Updated transition duration and added backdrop filter to enterprise cards.
- Increased hover translation effect for a more pronounced interaction.
- Enhanced glow effects with adjusted background gradients for each card.
- Refined hover states with new border colors and box shadows for better visibility.
- Updated section background to include a gradient and added premium mesh gradient backgrounds.
- Improved header and description text with gradient accents and trust indicators.
- Redesigned call-to-action buttons for better user engagement and visual appeal.
- Created new metrics.ejs view for performance insights and real-time monitoring.
- Created new traces.ejs view for distributed tracing and request visibility.
- Updated ProductBranding.md to reflect new links for metrics, traces, and dashboards.
- Introduced a new AI Agent card with description and icon.
- Added cards for Dashboards, Exceptions, Incidents, Logs, Metrics, Monitoring, On-Call, Status Page, Traces, and Workflows.
- Implemented CSS styles for ambient glow effects on hero cards to enhance visual appeal.
- Updated the main hero section to include all new feature cards.
- Added RepositoryManager for handling git operations including cloning, branching, committing, and pushing changes.
- Introduced TaskLogger for structured logging of AI Agent tasks with automatic flushing and context management.
- Created WorkspaceManager to manage temporary workspaces for tasks, including creation, deletion, and file operations.
- Integrated AIAgentDataAPI to facilitate data fetching and logging for AI Agent tasks, including LLM configuration and pull request recording.
- Updated BaseAPI to include new AIAgentDataAPI routes for enhanced AI Agent capabilities.
- Implemented AIAgentTaskService for database interactions.
- Created AIAgentTaskMetadata and AIAgentTaskStatus types for task management.
- Developed AIAgentTaskType enum to define task types.
- Added routes and components for managing AI Agent Tasks, including views for scheduled, in-progress, and completed tasks.
- Implemented side menu navigation for AI Agent Tasks.
- Created detailed view and delete functionality for individual tasks.
- Added breadcrumbs for better navigation within AI Agent Tasks.
- Updated RouteMap and PageMap to include new AI Agent Task routes.
- Introduced new WhatsApp templates for AI Agent notifications.
- Added email templates for AI Agent connection status and owner addition.
- Updated notification settings to include AI Agent events.
- Expanded permissions to manage AI Agents, including create, edit, delete, and read permissions.
- Implemented new UI components for displaying AI Agent details and status.
- Created pages for managing AI Agents and viewing individual AI Agent details.
- Enhanced side menu and routing to include AI Agent management sections.
- Introduced AIAgentOwnerTeam and AIAgentOwnerUser models to manage team and user ownership of AI Agents.
- Created AIAgent API to fetch global AI agents.
- Added Handlebars template for notifications when a user is added as an AI agent owner.
- Implemented services for AIAgentOwnerTeam and AIAgentOwnerUser for database interactions.
- Updated database models to include necessary access control and metadata for new entities.
- Updated background styles from gradient to solid colors with rings for better accessibility.
- Changed icon colors to match the new background styles for improved visibility.
- Ensured consistent design language across both views for a cohesive user experience.
- Added a sticky sidebar for better navigation on larger screens.
- Implemented smooth scrolling for in-page links.
- Customized scrollbar styles for the sidebar.
- Enhanced active navigation item indicators with animations.
- Improved content styling for better readability and aesthetics.
- Updated the hero section with a gradient background and trust badges.
- Reorganized sidebar navigation into collapsible sections for better structure.
- Added related documents section for easier access to important policies.
- Included a document footer with last updated date and contact link.
- Updated the title and meta description for clarity.
- Redesigned the layout to enhance visual appeal with a new background pattern and error illustration.
- Simplified the error message and added a status indicator for real-time updates.
- Included action buttons for retrying the request and navigating to the homepage.
- Added a help section with support links for user assistance.
- Updated OSSFriends data structure to include categories and website URLs.
- Modified the HomeFeatureSet to render unique categories for OSS Friends.
- Improved the oss-friends.ejs view to display projects categorized by their respective types.
- Added a hero section and stats section to highlight the number of OSS projects and categories.
- Included a call-to-action for users to submit their projects for listing.
- Updated footer links for consistency and clarity.
- Replaced the footer logo with a new SVG image (4-gray.svg) and adjusted its height.
- Modified the careers link in the footer to increase the gap between text and hiring badge.
- Updated the hiring badge style to include a green border and a dot indicator.
- Updated error messages in errors.ejs to use hyphens instead of em dashes.
- Modified meta description in index.ejs files to use hyphens.
- Adjusted WhatsApp setup instructions in Index.tsx to replace em dashes with hyphens.
- Changed footer description in footer.ejs to use hyphens.
- Updated various markdown and HTML files to replace em dashes with hyphens for uniformity.
- Updated the copy button in code blocks to include icons and text feedback for better user experience.
- Changed the button class from `copy-btn` to `copy-btn-response` and adjusted its styling for improved visibility and interaction.
- Modified the JavaScript function to handle icon toggling and text updates upon copying code.
- Ensured consistent styling for the copy button across different components.
- Implemented a dynamic code tab component using EJS for rendering code examples in various languages (cURL, JavaScript, Python, Go, Ruby, Rust, PowerShell).
- Added responsive design with tab switching functionality and copy-to-clipboard feature.
- Integrated local storage to remember user’s preferred programming language across sessions.
- Enhanced accessibility with ARIA roles and attributes for better screen reader support.
- Added subtle grid pattern background for visual depth.
- Introduced floating status and subscriber cards with animations.
- Updated button styles for better interactivity and responsiveness.
- Enhanced text styles for improved readability and aesthetics.
- Implemented hover effects on various elements for a more engaging user experience.
- Added custom CSS animations for floating effects.
- Updated formatting and indentation for consistency in SelectFieldGenerator.ts and SchemaConverter.ts.
- Enhanced logging messages for better debugging in generateAllFieldsSelect and findModelClass functions.
- Simplified error handling and fallback mechanisms in generateAllFieldsSelect.
- Improved type definitions and structure in Zod schema conversion functions.
- Added tests for server initialization and tool management to ensure proper functionality and error handling.
- Refactored ToolGenerator.ts to include generation of public status page tools.
- Added PublicStatusPageTools.ts with functions to create tools for querying public status pages.
- Implemented tools for getting overview, incidents, scheduled maintenance, announcements, and resolving status page domains.
- Updated logging and error handling for public status page tool execution.
- Added ToolHandler.ts to manage tool execution and response formatting.
- Implemented session management in SessionManager.ts for handling API keys and session data.
- Created MCPServer.ts for initializing and managing the MCP server instance.
- Developed SelectFieldGenerator.ts to generate select field objects for API queries.
- Introduced SchemaConverter.ts for converting Zod schemas to JSON Schema format.
- Built ToolGenerator.ts to generate MCP tools for OneUptime models, including CRUD operations.
- Enhanced logging throughout the code for better traceability and debugging.
- Updated HashedString tests to include async handling and additional cases for hashing with salts.
- Enhanced Dropdown tests to verify value prop display, multiselect functionality, and placeholder handling.
- Revised FilePicker tests to cover rendering, file uploads, error handling, and read-only mode, replacing skipped tests with new implementations.
- Added new tests for API class methods, including PATCH requests and error message handling, while removing outdated instance method tests.
- Implemented GenerateFromAIModal in InternalNote and PublicNote components for Alerts, Incidents, and Scheduled Maintenance.
- Added API endpoints for generating notes from AI for alerts and scheduled maintenance.
- Created context builders for alerts and scheduled maintenance to format data for AI processing.
- Enhanced internal and public note generation with AI capabilities, allowing for automated note creation based on existing data.
- Upgraded @modelcontextprotocol/sdk from ^0.6.0 to ^1.25.0
- Updated ts-node from ^10.9.1 to ^10.9.2
- Upgraded devDependencies:
- @types/jest from ^27.5.0 to ^29.5.14
- @types/node from ^17.0.31 to ^22.15.21
- jest from ^28.1.0 to ^29.7.0
- nodemon from ^2.0.20 to ^3.1.11
- ts-jest from ^28.0.2 to ^29.4.6
- typescript from ^5.8.3 to ^5.9.3
- Changed dependency from "@oneuptime/common" to a local file reference "Common".
- Re-enabled experimental decorators in tsconfig.json.
- Cleaned up tsconfig.json formatting for better readability.
- Ensured strict type-checking options are clearly defined in tsconfig.json.
- Introduced LlmLog model to track AI API calls, including details like provider, tokens used, cost, and status.
- Implemented AILogService to handle AI log creation and management, including billing checks and log updates.
- Created LlmLogsTable component for displaying AI logs in the dashboard with filtering and modal views for request/response details.
- Added new routes and pages for viewing AI logs in the context of incidents, alerts, and settings.
- Updated PageMap and RouteMap to include new AI log views.
- Enhanced error handling and logging for AI API interactions.
- Implement CodeRepositoryService for database interactions.
- Enhance GitHub utility functions for app authentication and repository management.
- Introduce new permissions for Code Repository actions (create, delete, edit, read).
- Create Code Repository pages and routes in the dashboard.
- Add side menu and breadcrumbs for Code Repository navigation.
- Implement settings and delete functionality for Code Repositories.
- Update Helm chart to include GitHub App configuration options.
- Modify example environment configuration to include GitHub App credentials.
- Updated example strings in various database model files to use consistent line breaks for improved readability.
- Ensured that all example properties are formatted uniformly across models, enhancing maintainability and clarity.
- Updated TelemetryException model with example values for Project, Telemetry Service, Exception Message, Stack Trace, Exception Type, Finger Print, Created by User, and more.
- Enhanced TelemetryIngestionKey model with example values for Project, Name, Description, Created by User, and more.
- Improved TelemetryUsageBilling model with example values for Project, Day, Product Type, Data Ingested, Total Cost, and more.
- Added example values to UserCall model for Project ID, Phone, User ID, Created by User ID, and more.
- Included example values in UserEmail model for Project ID, Email, User ID, Created by User ID, and more.
- Updated UserNotificationRule model with example values for Project ID, User ID, Created by User ID, and various notification types.
- Enhanced UserNotificationSetting model with example values for Project ID, User ID, and various notification settings.
- Improved UserOnCallLog model with example values for User ID, Project ID, On-Call Policy ID, and more.
- Added example values to UserSMS model for Project ID, Phone, User ID, Created by User ID, and more.
- Updated MonitorStatus, OnCallDutyPolicy, Probe, Project, ScheduledMaintenance, ScheduledMaintenanceInternalNote, ServiceCatalog, StatusPage, StatusPageAnnouncement, StatusPageDomain, StatusPageGroup, StatusPageHeaderLink, StatusPageResource, StatusPageSubscriber, Team, TelemetryService, User, and Workflow models to include example values for better clarity in API documentation.
- Added example fields to TableColumnMetadata interface to support documentation generation.
- Updated the permissions page to enhance the layout with a hero section and improved typography.
- Refined the index page structure for better responsiveness and alignment.
- Enhanced code block presentation with a copy button and improved styling.
- Redesigned the footer to include a more visually appealing open-source section and updated social media links.
- Improved the head partial with updated styles and scripts for better performance and aesthetics.
- Revamped the navigation bar for a cleaner look and better user experience, including updated links and hover effects.
- Improved the layout and styling of the main documentation page, including a custom scrollbar for the sidebar and a copy button for code blocks.
- Updated the mobile navigation for better accessibility and user experience.
- Redesigned the 404 Not Found and 500 Server Error pages with clearer messaging and improved visuals.
- Enhanced the content presentation in the articles with better typography and spacing.
- Added new meta tags for improved SEO in the head section.
- Refined the header and navigation components for a more cohesive look and feel.
- Updated terminology from "LLMs" to "LLM Providers" across the application for clarity.
- Renamed related routes and page maps to reflect the new terminology.
- Removed deprecated LlmView and Llms components, replacing them with LlmProviderView and LlmProviders components.
- Introduced new settings page for managing global LLM Providers with appropriate UI components.
- Updated side menu and routing to accommodate the changes in naming and structure.
- Replaced all instances of LLM with LLM Provider in the codebase.
- Created a new LlmProvider model to manage LLM Provider configurations.
- Updated API endpoints and services to handle LLM Providers instead of LLMs.
- Modified UI components to reflect the changes from LLM to LLM Provider, including table names, descriptions, and messages.
- Removed the old LLM model and service files to streamline the codebase.
- Deleted the CodeRepositoryPage component and its associated routes.
- Removed AI Copilot breadcrumbs and references from the PageMap and RouteMap.
- Eliminated the LLM Server deployment documentation and introduction content.
- Cleaned up related data migrations and jobs for Copilot actions.
- Updated navigation to exclude Copilot links.
- Introduced new settings page for managing global LLM configurations.
- Added routes and permissions for LLM management in the admin dashboard.
- Implemented LLM model with necessary fields and access controls.
- Created API endpoints for fetching global LLMs.
- Developed UI components for displaying and editing LLM details.
- Integrated LLM settings into the existing admin dashboard structure.
- Added support for multiple LLM providers including OpenAI, Anthropic, and Ollama.
- Deleted RunCommandTool, SearchWorkspaceTool, WriteFileTool, and their associated interfaces and implementations.
- Removed Tool, ToolRegistry, and AgentLogger classes, along with their dependencies.
- Eliminated utility functions for workspace path management and secret sanitization.
- Cleaned up TypeScript configuration and example environment variables related to Copilot.
- Updated Docker Compose files to remove references to Copilot services.
feat: improve search functionality by excluding specific directories and files
feat: implement output sanitization to redact sensitive information
feat: add secret redaction utility to mask known secret patterns
- Integrated custom notification templates for email, SMS, Slack, and Microsoft Teams in IncidentPublicNote, IncidentStateTimeline, ScheduledMaintenancePublicNote, and ScheduledMaintenanceStateTimeline jobs.
- Added logic to fetch and compile templates based on notification method and event type.
- Improved message formatting by including dynamic variables such as incident details, resources affected, and unsubscribe links.
- Updated email sending logic to utilize custom templates where available, falling back to default messages when necessary.
- Enhanced logging for better tracking of notification dispatches.
- Introduced `StatusPageSubscriberNotificationTemplate` model for managing custom notification templates for status page subscribers.
- Created `StatusPageSubscriberNotificationTemplateStatusPage` model to link notification templates to specific status pages.
- Implemented services for managing notification templates and their associations with status pages.
- Added permissions for creating, reading, updating, and deleting notification templates and their links.
- Developed frontend component for displaying and managing subscriber notification templates in the dashboard.
- Defined enums for notification event types and methods to standardize template usage.
- Updated EmailTitle template to enhance title styling and added a title block comment.
- Adjusted spacing in End and Footer templates for better layout.
- Enhanced Footer template with new styling and added a powered by link.
- Modified InfoBlock template for improved text styling and added an info block comment.
- Refined Start template with new background color and added a top spacer.
- Updated Style template with new link and badge styles for better visual consistency.
- Enhanced SupportBlock template with a more engaging support message.
- Improved Thanks template with a more personalized closing message.
- Added TitleBlock comments for better organization.
- Updated UnsubscribeBlock for clearer subscription management options.
- Replaced VerticalSpace with a table-based spacer for consistent spacing.
- Enhanced SignupWelcomeEmail with improved messaging and button text.
- Updated SubscriberAnnouncementCreated template for better clarity and button integration.
- Refined SubscriberIncidentCreated template for improved incident details presentation.
- Enhanced SubscriberIncidentPostmortemCreated template for better postmortem details.
- Updated SubscriberIncidentStateChanged template for clearer incident state updates.
- Refined SubscriberScheduledMaintenanceEventCreated template for better event details.
- Introduced StatusBadge template for consistent incident status representation.
- Added SystemPrompt for guiding the agent's behavior.
- Created WorkspaceContextBuilder to gather workspace information.
- Developed main entry point in index.ts for agent execution.
- Implemented LMStudioClient for interacting with the LM Studio API.
- Added ApplyPatchTool for applying code changes via patches.
- Created ListDirectoryTool for listing files and directories.
- Implemented ReadFileTool for reading file contents.
- Developed RunCommandTool for executing shell commands.
- Added SearchWorkspaceTool for searching files in the workspace.
- Created WriteFileTool for writing content to files.
- Established ToolRegistry for managing and executing tools.
- Defined types for chat messages and tool calls.
- Added utility classes for logging and executing commands.
- Implemented WorkspacePaths for managing file paths within the workspace.
- Configured TypeScript settings in tsconfig.json.
- Add SystemPrompt to define agent behavior and principles.
- Create WorkspaceContextBuilder for workspace snapshot and Git status.
- Initialize main entry point with command-line options for agent configuration.
- Develop LMStudioClient for chat completion requests to LM Studio.
- Implement tools for file operations: ApplyPatchTool, ListDirectoryTool, ReadFileTool, RunCommandTool, SearchWorkspaceTool, WriteFileTool.
- Establish ToolRegistry for managing and executing tools.
- Define types for chat messages, tool calls, and execution results.
- Set up workspace path utilities for file management and validation.
- Configure TypeScript settings for the project.
- Updated versioning in release.yml to use only major_minor version for Helm chart packaging, Docker images, and GitHub releases.
- Adjusted versioning in test-release.yaml to reflect similar changes, removing build number suffix for test releases.
- Enhanced the `test-release.yaml` workflow to read and determine semantic versioning from `VERSION_PREFIX`, including major, minor, and patch components.
- Adjusted versioning format in the workflow to use a new scheme: `major.minor.patch-test+build.build_number`.
- Updated Docker image build script to sanitize version strings by replacing '+' with '-' for tagging.
- Incremented the version in `VERSION_PREFIX` from `9.0` to `9.1.0`.
- Implemented a bash script to build and push Docker images.
- Added support for multiple platforms using docker buildx.
- Included options for specifying image name, version, Dockerfile path, build context, and additional tags.
- Integrated Git SHA detection for build arguments.
- Provided usage instructions and error handling for missing required arguments.
- Replace TelemetryException with ExceptionInstance across types and telemetry query
- Rename MonitorStepExceptionMonitorUtil.toQuery -> toAnalyticsQuery and map fields (telemetryServiceId->serviceId, lastSeenAt->time)
- Use ExceptionInstanceService and Query<ExceptionInstance> in MonitorTelemetryMonitor
- Minor MonitorResource variable cleanup for ExceptionMonitorResponse
- Add ExceptionInstanceTable component and switch UI (forms, Alert/Incident views) to use ExceptionInstance
Update Project model and NotificationSettings UI text to mention WhatsApp alongside SMS and Call for current balance, auto-recharge settings, and related notifications.
- remove jwtRefreshToken property from User model
- add migration to drop column from User and StatusPagePrivateUser and restore it on down
- register new migration in SchemaMigrations index
- Add Telemetry service entrypoint
- Telemetry/Index.ts: app bootstrap, routes mounting, infrastructure init and Telemetry SDK init.
- Unified queue + worker
- Telemetry/Jobs/TelemetryIngest/ProcessTelemetry.ts: single worker that dispatches queued jobs to specific processors (logs, traces, metrics, syslog, fluent logs).
- Telemetry/Services/Queue/TelemetryQueueService.ts: central queue API and job payload types.
- Per-type Queue wrappers (LogsQueueService, MetricsQueueService, TracesQueueService, FluentLogsQueueService, SyslogQueueService).
- OpenTelemetry ingestion middleware and proto support
- Telemetry/Middleware/OtelRequestMiddleware.ts: detect OTLP endpoint (logs/traces/metrics), decode protobuf bodies using protobufjs and set product type.
- Telemetry/ProtoFiles/OTel/v1/*.proto: include common.proto, logs.proto, metrics.proto, resource.proto, traces.proto for OTLP v1 messages.
- Ingest services
- Telemetry/Services/OtelLogsIngestService.ts: parse incoming OTLP logs, map attributes, convert timestamps, batch insert logs.
- Telemetry/Services/OtelTracesIngestService.ts: parse OTLP traces, build span rows, extract exceptions, batch insert spans and exceptions, save telemetry exception summary.
- Telemetry/Services/OtelMetricsIngestService.ts: parse OTLP metrics, normalize datapoints, batch insert metrics and index metric name -> service map.
- Telemetry/Services/SyslogIngestService.ts: syslog ingestion endpoints, parser integration, map syslog fields to attributes and logs.
- Telemetry/Services/FluentLogsIngestService.ts: ingest Fluentd style logs, normalize entries and insert into log backend.
- Telemetry/Services/OtelIngestBaseService.ts: helpers to resolve service name from attributes/headers.
- Syslog parser and utilities
- Telemetry/Utils/SyslogParser.ts: robust RFC5424 and RFC3164 parser, structured data extraction and sanitization.
- Telemetry/Tests/Utils/SyslogParser.test.ts: unit tests for parser behavior.
- Telemetry exception utilities
- Telemetry/Utils/Exception.ts: generate exception fingerprint and upsert telemetry exception status (saveOrUpdateTelemetryException).
- Queue & job integration
- New integration with Common/Server/Infrastructure/Queue and QueueWorker, job id generation and telemetry job types.
- Telemetry services add ingestion jobs instead of processing synchronously.
- Config, build and dev tooling
- Add Telemetry/package.json, package-lock.json, tsconfig.json, nodemon.json, jest config.
- New script configs and dependencies (protobufjs, ts-node, jest, nodemon, etc).
- Docker / environment updates
- docker-compose.base.yml, docker-compose.dev.yml, docker-compose.yml: rename service from open-telemetry-ingest -> telemetry and wire TELEMETRY_* envs.
- config.example.env: rename and consolidate environment variables (OPEN_TELEMETRY_* -> TELEMETRY_*, update hostnames and ports).
- Tests/Scripts/status-check.sh: update ready-check target to telemetry/status/ready.
- Other
- Telemetry/Services/Queue/*: export helpers and legacy-compatible job interface shims.
- Memory cleanup and batching safeguards across ingest services.
- Logging and capture spans added to key code paths.
BREAKING CHANGES / MIGRATION NOTES:
- Environment variables and docker service names changed:
- Replace OPEN_TELEMETRY_... vars with TELEMETRY_... (PORT, HOSTNAME, CONCURRENCY, DISABLE_TELEMETRY, etc).
- docker-compose entries moved from "open-telemetry-ingest" to "telemetry" and image name changed to oneuptime/telemetry.
- Update any deployment automation and monitoring checks referencing the old service name or endpoints.
- Consumers: OTLP endpoints and behavior remain supported, but ingestion is now queued and processed asynchronously.
Testing / Running:
- Install deps in Telemetry/ (npm install) after syncing Common workspace.
- Run dev: npx nodemon (nodemon.json) or build & start using provided scripts.
- Run tests with jest (Telemetry test suite includes SyslogParser unit tests).
Files added/modified (high level):
- Added many files under Telemetry/: Index, Jobs, Middleware, ProtoFiles, Services, Utils, Tests, package and config artifacts.
- Modified docker-compose.* and config.example.env and status check script to use new TELEMETRY service/vars.
- Move Fluent/Fluent Bit logs ingestion into open-telemetry-ingest:
- Add OpenTelemetryIngest/API/Fluent.ts (routes for /fluentd and queue endpoints)
- Add Queue service, job worker and processor:
- OpenTelemetryIngest/Services/Queue/FluentLogsQueueService.ts
- OpenTelemetryIngest/Jobs/TelemetryIngest/ProcessFluentLogs.ts
- Register Fluent API and job processing in OpenTelemetryIngest/Index.ts
- Introduce QueueName.FluentLogs and related queue usage
- Remove legacy FluentIngest service and configuration:
- Delete fluent-ingest docker-compose/dev/base entries and docker-compose.yml service
- Remove fluent-ingest related helm values, KEDA scaledobject, ingress host and schema entries
- Remove FLUENTD_HOST env/values and replace FLUENT_INGEST_HOSTNAME -> FLUENT_LOGS_HOSTNAME (pointing to open-telemetry-ingest)
- Update config.example.env keys (FLUENT_LOGS_CONCURRENCY, DISABLE_TELEMETRY_FOR_FLUENT_LOGS)
- Remove FluentIngestRoute and FLUENT_INGEST_URL/hostname usages from UI config/templates
- Remove VSCode launch debug config for Fluent Ingest
- Remove Fluent ingest E2E status check entry in Tests/Scripts/status-check.sh
- Update docs/architecture diagram and Helm templates to reflect "FluentLogs" / Fluent Bit flow
- Misc:
- Remove FLUENTD_HOST environment injection from docker-compose.base.yml
- Cleanup related values.schema.json and values.yaml entries
This consolidates log ingestion under the OpenTelemetry ingest service and removes the separate FluentIngest service and its configuration.
- Remove FluentIngest CI jobs and release/test deploy steps (build.yml, compile.yml, release.yml, test-release.yaml)
- Delete test.fluent-ingest workflow
- Remove Fluent-related env vars/hostnames from config.example.env, docker-compose.base.yml, HelmChart templates and EnvironmentConfig.ts
- Remove fluent-ingest service block from docker-compose.base.yml
- Bump Playwright and TypeORM versions in OpenTelemetryIngest package-lock.json
- Add spawn and SpawnOptions imports and implement Execute.executeCommandInheritStdio
that runs commands with inherited stdio, logs errors, and rejects on non-zero exit.
- Update NginxConfigurator to run `nginx -t -c /etc/nginx/nginx.conf` via the new
inherit-stdio helper before reloading nginx.
Add --no-cache to docker build and docker buildx commands across build.yml, release.yml and test-release.yaml to force fresh image builds and avoid using cached layers.
- Type setSyslogProductType as RequestHandler
- Import and use ParsedSyslogMessage in parser tests (explicit typed parsed variables)
- Simplify regex usage/formatting in SyslogParser for version and procId matching
- Minor import formatting cleanup
- Remove extraneous blank line in OTelIngest router
- Reflow imports, function signatures and wrapped expressions in:
OtelIngestBaseService, SyslogQueueService, SyslogIngestService
- Tidy regex/whitespace and token handling formatting in SyslogParser
- Simplify quoting and compact multiline expectations in SyslogParser tests
- Pure stylistic changes only — no behavioral modifications
- Add new Syslog API (POST /syslog/v1/logs) with product-type middleware and mount it in OpenTelemetryIngest Index
- Move syslog route out of OTelIngest and clean up related imports
- Add parseRfc5424Timestamp and parseRfc3164Timestamp to OneUptimeDate (handles normalization and year rollovers)
- Refactor SyslogParser to use OneUptimeDate parsing helpers and remove duplicated timestamp parsing code
- Update NGINX template to proxy /syslog/v1/logs to open-telemetry-ingest with proper headers/resolver and connection settings
Create /var/log/nginx and touch access.log/error.log in run.sh so nginx -t succeeds before reloads.
Revert nginx.conf error_log to /var/log/nginx/error.log (notice).
- select incidentNumber/alertNumber when loading open incidents/alerts
- attach relatedIncidentNumber / relatedAlertNumber to evaluation events (created/resolved/skipped)
- add number fields to MonitorEvaluationEvent type
- decorate event title/message in EvaluationLogList to include "Incident #N" / "Alert #N"
Remove firstMetCriteriaIndex and shouldShowShortCircuitMessage, and delete the UI block that displayed the "remaining criteria were not evaluated" short-circuit message. Simplifies criteria rendering by removing unused short-circuit handling.
Extract persistLatestMonitorPayload and consolidate handling of serverMonitorResponse
and incomingMonitorRequest. Ensure monitor payload updates are saved consistently
(including when there are no steps or no matching monitor step) and before writing logs.
Also clone incomingMonitorRequest via JSON to avoid mutating the original payload and
normalize debug messages.
- Reuse an existing team instead of throwing BadRequest on duplicate group names.
- Create a new team when not found, setting isTeamEditable/isTeamDeleteable and allowing empty groups.
- Ensure member additions operate on the resolved target team.
- Expand team select fields and fetch the team for response; return 201 for newly created teams and 200 when reusing an existing one.
- Add notice when a criteria is satisfied under FilterCondition.Any to indicate remaining criteria were not evaluated.
- Ensure FilterCondition is imported where used.
- Change "Criteria met" text color in Logs view from green to gray for consistent summary styling.
- Normalize whitespace/indentation and reformat several monitor utilities and message builders
- Consolidate and reorder imports (including MonitorEvaluationSummary) across evaluator/data-extractor modules
- Add explicit types (MonitorStatus, BasicDiskMetrics) and tighten type annotations in observation/resource code
- Minor cleanups to conditional formatting in dashboard components (EvaluationLogList, SummaryInfo)
Move expectation, observation, data-extraction and formatting logic out of the large
MonitorCriteriaMessageBuilder into new classes:
- MonitorCriteriaExpectationBuilder
- MonitorCriteriaObservationBuilder
- MonitorCriteriaDataExtractor
- MonitorCriteriaMessageFormatter
Keep MonitorCriteriaMessageBuilder slim: it now orchestrates message construction and
delegates description/formatting responsibilities to the new modules.
- Move criteria processing into MonitorCriteriaEvaluator
- Move filter/observation message logic into MonitorCriteriaMessageBuilder
- Move monitor metrics logic into MonitorMetricUtil
- Move monitor log persistence into MonitorLogUtil
- Replace large in-file implementations in MonitorResource with calls to the new utilities to reduce complexity and improve separation of concerns
- Replace ad-hoc success/failure messaging with buildCriteriaFilterMessage / buildCriteriaFilterFailureMessage
- Add detailed describe*Observation helpers for many CheckOn types (response, headers, body, isOnline, timeouts, incoming requests, CPU/memory/disk, processes, SSL, synthetic/custom code, metrics, logs, spans)
- Introduce utility helpers: formatNumber, formatPercentage, formatBytes, formatList, formatSnippet, describeProcesses, computeDiskUsagePercent, summarizeNumericSeries, formatResultValue, and various response extractors
- Enhance metric value extraction to select correct aggregated result by alias and return summarized numeric series
- Wire new messaging into MonitorResource evaluation flow (use filterMessage everywhere)
- Import and use FilterType and ServerProcess types plus several monitor response types
- Small fix in ServerMonitorCriteria: find disk metric and prefer percentUsed (fall back to percentFree) when computing disk usage percent
Compute a probable evaluationSummary from props.evaluationSummary or the first probe response that has one, remove per-probe EvaluationLogList, and render evaluation logs once for probable (probe) monitors to avoid duplicated log lists.
Cache and fetch monitor status names in MonitorResource and include readable status names in evaluationSummary events. Add action buttons in EvaluationLogList to navigate to related incident/alert views.
Add explicit function type annotations for renderCriteriaResult, renderEvent and renderEvaluationLogs in SummaryView to improve type safety and readability. Also type the evaluationSummary variable in Monitor view and simplify the catch block by removing the unused error parameter.
- Normalize multiline/inline formatting in MonitorResource.ts, EvaluationLogList.tsx and Logs.tsx
- Simplify nested else to else-if for FilterCondition.All in MonitorResource
- Minor JSX spacing and map return cleanup for clearer readability
- Add AnalyticsModelAPI call in Monitor view to load the latest MonitorLog and extract evaluationSummary into component state.
- Pass latest evaluationSummary to Summary component in Monitor view.
- Add Evaluation Outcome column to Monitor Logs table to show criteria met / no criteria / not recorded.
- Pass evaluationSummary into the Logs modal's SummaryInfo.
- Import MonitorEvaluationSummary types and MonitorLog analytics model.
- introduce MonitorEvaluationSummary type and related result/event types
- thread evaluationSummary through probe/monitor response types and probe ingest flow
- initialize and populate evaluationSummary in MonitorResource (criteriaResults, events)
- record events for criteria evaluation, monitor status changes, incident/alert create/skip/resolve
- update criteria filter evaluation to produce structured filter results and messages
- add EvaluationLogList UI and wire evaluationSummary into Summary/SummaryInfo views
- minor Date utility usages to timestamp events
Replace generic "Only master admins can access this app." with
"Unauthorized: Only master admins can access the admin dashboard." to
provide clearer, more informative authorization errors.
Add ensure_placeholder_certificate to envsubst-on-templates.sh to generate a temporary self-signed cert when PRIMARY_DOMAIN is set but cert files are missing. Only export SSL listen/certificate directives if certs (real or placeholder) are available; otherwise disable HTTPS directives and emit warnings. Simplify PRIMARY_DOMAIN logging.
Also run "nginx -t" immediately after running the envsubst script in NginxConfigurator to validate generated config before attempting reload.
- WriteServerCertToDisk: read existing cert/key from disk and compare with DB values; skip writing when unchanged. After writing, run envsubst-on-templates.sh and reload nginx with try/catch and logging.
- envsubst-on-templates.sh: derive PRIMARY_DOMAIN from HOST when not set, compute cert/key paths, and only export PROVISION_SSL_* directives when certificate files exist (otherwise clear directives and log).
Replace <<: *common-ui-variables and <<: *common-server-variables with <<: *common-runtime-variables across services and remove the IS_SERVER flag from the server anchor.
Replace separate commonServer/commonUi and oneuptimeSecret includes with a single
oneuptime.env.runtime include across deployments. Move oneuptimeSecret into the
common env where appropriate and remove SERVER_ADMIN_DASHBOARD_HOSTNAME.
Update all affected templates to use the new runtime include.
Add ensureMasterAdminAccess in AdminDashboard/Serve.ts to decode JWT, validate
isMasterAdmin and return a NotAuthorized response when access is not allowed.
Wire this function into App.init as getVariablesToRenderIndexPage so the admin
frontend is protected.
Also add a res.headersSent guard in StartServer.ts to skip rendering the index
page if a response was already sent, avoiding duplicate responses.
Update test-release workflow to build and push Worker images (./Worker/Dockerfile) and adjust tags (including enterprise variants) instead of the previous MCP server build steps.
Add getFrontendEnvVars with an allow-list and allowed prefixes to EnvironmentConfig to avoid exposing the entire process.env to the browser. Update StartServer to use getFrontendEnvVars when rendering /env.js and embed the serialized env object directly.
- set createBy.data.isVerified = false for non-root creations
- require projectId (from query.projectId or props.tenantId) when verifying domains
- query by projectId and other filters, use LIMIT_PER_PROJECT and iterate results to verify TXT records
- add missing imports (LIMIT_PER_PROJECT, ObjectID, FindWhere) and improve error handling/messages
Nest the top-level provisionSSL into ssl.provision in values.yaml and values.schema.json,
and update _helpers.tpl to read the new path (using default false via dig) so PROVISION_SSL
env is derived from ssl.provision.
Expose PROVISION_SSL in docker-compose common variables and update config.example.env docs to explain automatic ACME/Let's Encrypt TLS provisioning and reverse-proxy alternative.
- add server-certs emptyDir volume and mount to nginx Deployment
- update default.conf.template to conditionally listen on 7850 and use /etc/nginx/certs/ServerCerts/${PRIMARY_DOMAIN}.crt/.key when PROVISION_SSL is set
- enhance run.sh to export PRIMARY_DOMAIN, temporarily adjust PROVISION_SSL for envsubst, and restore original PROVISION_SSL afterwards
- Refactor AcmeChallengeAPI into a BaseAPI-backed class that exposes a well-known router.
- Add CrudApiEndpoint(Route("/acme-challenge")) to AcmeChallenge model.
- Register AcmeChallengeAPI router in BaseAPIFeatureSet via (new AcmeChallengeAPI).getRouter().
- Add nginx location /.well-known to proxy ACME challenge requests to /api/acme-challenge/.well-known with proper headers, resolver and websocket support.
- add ProvisionPrimaryDomain worker job to order/renew ACME certificates for the HOST
- register job import in Worker Routes
- add ProvisionSsl env flag in Common/Server/EnvironmentConfig
- expose PROVISION_SSL in Helm chart (values.yaml, values.schema.json, _helpers.tpl)
- add MetricQueryAliasFromUrl type
- populate initial metric alias fields from parsed URL into initial query configs
- include alias when building metricQueries for the URL and when parsing metricQueries from the URL
- add sanitizeAlias and buildAliasFromMetricAliasData helpers to validate/serialize alias fields
- add showAdvancedFiltersByDefault prop to FiltersForm and use it to initialize advanced filter visibility
- MetricQuery: default showAdvancedFilters to true, pass showAdvancedFiltersByDefault to FiltersForm and call onAdvancedFiltersToggle once on mount
- MetricView: introduce getFetchRelevantState and lastFetchSnapshotRef; only fetch aggregated results when relevant state (start/end dates or queryConfigs) actually changes
- Make Modal.onSubmit and ModalFooter.onSubmit optional and use safe optional chaining when invoking
- Extract modalSubmitButtonText, modalOnSubmit, modalIsLoading, and modalDisableSubmitButton in EditionLabel to simplify JSX and reduce inline conditional logic
- Change "Enterprise Edition (Verified)" -> "Enterprise Edition"
- Change "Enterprise Edition (License Needed)" -> "Enterprise Edition (License Required)"
- Render success Alert without extra wrapper
- Only show license input, validation error and explanatory text when license is not valid
- Add POST /global-config/license handler to validate enterprise license via
EnterpriseLicenseValidationUrl and store results in GlobalConfig.
- Introduce EnterpriseLicenseValidationUrl in EnvironmentConfig.
- Update EditionLabel to call /global-config/license (POST) for validation,
remove direct ModelAPI update and ObjectID usage, and replace inline messages
with Alert component. Minor styling and import cleanup.
- Remove isRefreshing state and handleRefresh function; use isValidating for all validation/loading logic
- Make modal submit perform license validation (label "Validate License") and derive isLoading/disable state from licenseKeyInput, isValidating, and isConfigLoading
- Change retry button style to DANGER
- Expand enterprise features copy ("Audit logs and many more enterprise-focused features.")
- Reorder and simplify dialog markup (remove in-body Validate button)
- Add GET /global-config/license that returns enterprise license fields (companyName, expiresAt, licenseKey, token).
- Update EditionLabel to use APP_API_URL and fetch license from the new endpoint instead of ModelAPI.getItem.
- Replace hard-coded validation URL with APP_API_URL-based URL.
- Reflow imports, map callbacks and wrapped long strings in EditionLabel for improved readability.
- Remove stray trailing space in Dashboard Footer link.
- Update EditionLabel UI: new button styling, status indicator, compact CTA text
- Expand modal content with Community vs Enterprise comparison and use enterprise demo URL
- Pass ModalWidth to modal and refine primary action behavior
- Extend Footer types to accept ReactNode content and render content links
- Embed EditionLabel into Dashboard footer links
- Add EditionLabel component to Common UI to show current edition and info modal
- Show edition label in Login page, Dashboard header and Footer
- Add IS_ENTERPRISE env var to config.example.env and export in Common UI Config
- Propagate IS_ENTERPRISE into docker-compose.base.yml service envs
- Add Helm helpers oneuptime.image.tag and oneuptime.image to centralize image name/tag formatting
- If image.type is "enterprise-edition" and tag doesn't already contain "enterprise", prefix tag with "enterprise-"
- Replace inline image printf calls with include "oneuptime.image" across deployments, cronjob and tests
- Add image.type to values.schema.json and set default type to "community-edition" in values.yaml
- Add explicit types for initialQueryConfigs (MetricQueryConfigData) and map callbacks
- Use FilterData<MetricsQuery> and explicit Record<string, unknown> for safer access
- Type lastSerializedStateRef as React.MutableRefObject<string>
- Simplify catch blocks (remove unused error variables) and tidy parsing/sanitization logic
- Minor formatting and type-safe attribute sanitization improvements
- Refactor MetricExplorer to parse/serialize a metricQueries URL param (array of metricName, attributes, aggregationType) and startTime/endTime.
- Add helpers to sanitize attributes, map aggregation types, and build metric query state.
- Update MetricsTable to generate metricQueries payload (with attributes and aggregationType) when navigating to metric view.
- Minor JSX/formatting cleanup.
Replace telemetryServiceId/telemetryServiceName props with telemetryServiceIds array.
Update MetricsTable to accept multiple IDs, construct view route when exactly one
telemetry service is selected, query with Includes for multiple services, and add
select/filters/column to show telemetry service info. Update ServiceCatalog and
Telemetry Service Metrics pages to pass telemetryServiceIds and remove redundant
single-service fetching/state.
- Move "Telemetry Services" into the Resources section and introduce an Operations
section for Alerts and Incidents; update corresponding icons and route targets.
- Reformat FunctionComponent type annotations and async fetch function bodies
in Alerts, Logs, Traces and Metrics for consistent indentation and readability.
- Minor formatting cleanup for pageRoute/path prop in ServiceCatalogRoutes.
- Add new ServiceCatalog view pages: Alerts.tsx, Logs.tsx, Traces.tsx, Metrics.tsx
(fetch monitors/telemetry service ids and render respective tables/viewers).
- Register lazy routes and PageRoute entries in ServiceCatalogRoutes for alerts,
logs, traces and metrics.
- Extend PageMap and RouteMap with new keys/paths and Route entries.
- Update SideMenu to include Alerts under Operations and Logs/Traces/Metrics under
a Telemetry section.
- Add breadcrumbs entries for the new service catalog pages.
- add bg-white/90 and backdrop-blur to base classes
- update active/inactive border, text and hover classes
- adjust indicator colors and make "Live" label font-semibold
- Remove isUpdating and tooltip from LiveLogsToggle props and types
- Drop Tooltip import and spinner markup; always return button content
- Remove isLiveUpdating state and related updates from Dashboard LogsViewer
- Simplify liveOptions to only pass isLive and onToggle
- Add LiveLogsOptions type and LiveLogsToggle component.
- Wire liveOptions through LogsViewer -> LogsViewerToolbar to render the live toggle.
- Update Dashboard LogsViewer to support live mode:
- add isLiveEnabled, isLiveUpdating state and liveRequestInFlight ref.
- change fetchItems to accept skipLoadingState to perform lightweight live refreshes (sets isLiveUpdating instead of full loader).
- poll every 10s when live is enabled (only on page 1, sorted by time desc) and use skipLoadingState for background refreshes.
- integrate with realtime listener and avoid overlapping live requests.
- add handleLiveToggle to enforce page/sort when enabling and to stop live updates when disabling.
- Automatically disable live mode when user changes filters, page, or sort in ways that conflict with live behavior.
- Minor imports/exports and typing adjustments.
- Reformat MigrationName1761834523183.ts SQL queries to multi-line strings and consistent quoting
- Add trailing comma to migrations Index export
- Convert inline // comments to /* ... */ block comments in KeepCurrentStateConsistent jobs (Alert, Incident, Monitor, ScheduledMaintenance) for consistency
- Minor refactor in IncidentPostmortem: expand setRefreshToggle updater to an explicit return
- Add Incident Postmortem page to incident view with:
- Postmortem note CardModelDetail (edit/save)
- "Apply Template" modal to pick and apply a postmortem template
- Add Settings pages for postmortem templates:
- IncidentPostmortemTemplates (list/create)
- IncidentPostmortemTemplateView (view/edit/delete)
- Wire up routes, route map, page map and side menu links for postmortem views
- Add breadcrumbs entries for incident postmortem and settings pages
- Minor cleanup/formatting tweaks in IncidentPostmortemTemplate model and IncidentService
- add IncidentPostmortemTemplate model and IncidentPostmortemTemplateService
- expose model in Common/Models/DatabaseModels index and register API route in BaseAPI
- add postmortemNote column to Incident model
- add IncidentFeedEventType.PostmortemNote enum value
- emit IncidentFeed item when postmortemNote is added/updated/cleared (IncidentService)
- update Dashboard IncidentFeed to show Book icon for PostmortemNote events
Replace bare empty message with a centered card-style panel:
- add full-height centered wrapper with slate background
- constrain width, add rounded border, padding and inner shadow
- update typography to monospace, uppercase tracking and emerald accent
- tweak spacing and muted text color for helper copy
- Clean up multiline signatures and expressions for readability
- Standardize JSX tag formatting and expanded-content rendering (explicit return)
- Minor whitespace/indentation tweaks in LogsViewer, LogsTable, LogDetailsPanel, and Dashboard LogsViewer
No functional changes.
- replace text-based sort markers with Icon (Chevron/ArrowUpDown) and add helper funcs
- adjust table/header/tbody classes (dividers, background, text colors)
- tweak row hover/selected styles and message/service text colors for better contrast
- update small typography and trace/span color for consistency
- Add renderExpandedContent prop to LogsTable and render LogDetailsPanel inline for expanded rows
- Introduce "embedded" variant in LogDetailsPanel and extract container/header/card classes for shared styling
- Update table and surrounding container styles (rounded, gradients, backdrop) and add a click-to-open hint banner
- Remove standalone selectedLog memo and the separate details pane UI; use selectedLogId to control inline expansion
- Add explicit type annotations for callbacks, helpers and theme (SeverityTheme)
- Strengthen severityTheme getSeverityTheme signature and consume typed return
- Remove unused catch variables and mark unused params where applicable
- Minor JSX/formatting tweaks and whitespace cleanup in table, pagination, details panel
- Small import/format fix in Execute.ts
Switch workflow to run on a daily schedule (and via workflow_dispatch) and
replace direct git commit/push steps with peter-evans/create-pull-request to
open changes as a PR instead of pushing to the default branch.
- Update lockfiles for root, TestServer, Worker and Workflow
- Add new/top-level packages and types:
- @simplewebauthn/server, archiver, botbuilder
- @types/archiver
- Bump notable package versions:
- axios, nodemailer, playwright, react-syntax-highlighter
- Sync a large set of transitive dependency upgrades:
- @babel/* (code-frame, parser, template, types, helpers, helper-*), brace-expansion, braces, fill-range, micromatch, picocolors, cross-spawn, to-regex-range and others
- Remove/clean outdated lock entries (e.g. to-fast-properties removed where unnecessary)
- Add/fix license fields for several packages in the lockfiles
- General lockfile normalization to ensure consistent subdependency versions across packages
This keeps dependency trees aligned across monorepo packages and pulls in recent bug/security fixes from transitive upgrades.
- Extend Execute.executeCommand to accept ExecOptions and forward them to child_process.exec
- Log stderr on error and debug-log stderr when present
- Update CodeRepository to pass cwd to Execute.executeCommand instead of prefixing commands with "cd"
- Use CodeRepositoryUtil.runGitCommand / Execute.executeCommandFile instead of building shell command strings.
- Properly resolve and sanitize file paths when adding files to git; skip empty/invalid paths and add relative sanitized paths.
- Use resolvePathWithinRepo and path.relative for accurate file/argument resolution.
- Trim returned git commit hash.
- Improve debug messages for branch creation/checkout, user.name setting, adding remotes, and pushing branches.
- Encode credentials when constructing remote URL for push and use cwd for git operations.
- Remove batchSize field from FindAllBy type.
- Update DatabaseService.findAllBy to stop reading/validating batchSize and use LIMIT_MAX as the batch size.
- Remove per-job batch size constants and batchSize parameters from multiple worker cron jobs (AlertOwners, Incident*, ScheduledMaintenance*, StatusPage*, Announcement, OnCall, Workflow, UserOnCallLog, ServerMonitor, PaymentProvider, etc.).
- Simplify call sites to rely on findAllBy's default batching behavior.
- Add FindAllBy type and implement DatabaseService.findAllBy with batchSize/limit/skip support.
- Add normalizePositiveNumber helper used by findAllBy.
- Add ProjectService.getAllActiveProjects convenience wrapper that uses findAllBy.
- Replace many worker cron jobs' findBy calls with findAllBy, introduce per-job batch size constants, remove LIMIT_MAX imports, and pass batchSize/skip instead of one large limit.
- Convert long-running deletes/hard-deletes to paginated loops (repeat until no more records deleted).
- Adjust various query usages to use LIMIT_PER_PROJECT where appropriate as batchSize.
Introduce buildMonitorMetricAttributes and buildMonitorMetricRow helpers to centralize attribute/timestamp logic. Replace creation of Metric and MonitorLog model instances with JSON row construction and use MetricService.insertJsonRows / MonitorLogService.insertJsonRows. Remove setAttributeKeys/Metric import usage and simplify metric aggregation code paths.
- Remove dependency on Log model; build log JSON rows inline (IDs, ISO timestamps, unix nano)
- Buffer logs and flush in batches using new flushLogBuffer helper and LogService.insertJsonRows
- Add FLUENT_INGEST_LOG_FLUSH_BATCH_SIZE constant and simplify processing loop
Replace ad-hoc shell command construction/Execute.executeCommand calls with a new runGitCommand wrapper that uses Execute.executeCommandFile. Update various methods (getCurrentCommitHash, addAllChangedFilesToGit, setAuthorIdentity, discardAllChangesOnCurrentBranch, pullChanges, createOrCheckoutBranch, discardChanges, etc.) to use the helper. Also improve cloneRepository to derive the cloned folder name from the repo URL and throw a clear error if it can't be determined.
This folder contains the configuration files for the OneUptime Copilot. The Copilot is a tool that automatically improves your code. It can fix issues, improve code quality, and help you ship faster.
This folder has the following structure:
-`config.js`: The configuration file for the Copilot. You can customize the Copilot's behavior by changing this file.
-`scripts`: A folder containing scripts that the Copilot runs. These are hooks that run at different stages of the Copilot's process.
-`on-after-clone.sh`: A script that runs after the Copilot clones your repository.
-`on-before-code-change.sh`: A script that runs before the Copilot makes changes to your code.
-`on-after-code-change.sh`: A script that runs after the Copilot makes changes to your code.
-`on-before-commit.sh`: A script that runs before the Copilot commits changes to your repository.
-`on-after-commit.sh`: A script that runs after the Copilot commits changes to your repository.
This is a local development server hosted at HOST env variable (please read config.env file). This project is hosted on docker compose for local development. When you make any changes to the codebase the container hot-reloads. Please make sure you wait for it to restart to test. If you need access to the database during development, credentials are in config.env file.
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
// "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
/*Modules*/
// "module": "es2022" /* Specify what module code is generated. */,
// "rootDir": "./", /* Specify the root folder within your source files. */
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
/*Emit*/
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
<p class="lead">In this guide, we will talk about what happens when something goes wrong while you work with the API. Mistakes happen, and mostly they will be yours, not ours. Let's look at some status codes and error types you might encounter.</p>
<p>You can tell if your request was successful by checking the status code when receiving an API response. If a response comes back unsuccessful, you can use the status code and error message to figure out what has gone wrong and do some rudimentary debugging (before contacting support).</p>
<p>Whenever a request is unsuccessful, the OneUptime API will return an error response with an error message. You can use this information to understand better what has gone wrong and how to fix it. Most of the error messages are pretty helpful and actionable.</p>
<p class="lead"> Your API Token needs permissions to create, update, read or delete any resource. If you do not have permissions to make a request a <code class="inline-code">4xx</code> status will be sent as response. You can manage permissions for your API Key in Project Settings > API Keys. </p>
content="OneUptime monitors websites, API's, and servers and alerts your team if something goes wrong. It also keeps your customers updated about any downtime. ">
<meta name="twitter:title" content="OneUptime - One Complete Observability platform.">
<meta name="twitter:description"
content="OneUptime monitors websites, API's, and servers and alerts your team if something goes wrong. It also keeps your customers updated about any downtime.">
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Corporation",
"name": "OneUptime",
"url": "https://www.oneuptime.com",
"logo": "https://oneuptime.com/img/ou-bb.svg",
"sameAs": [
"https://www.facebook.com/oneuptimeinc",
"https://twitter.com/OneUptimeInc",
"https://www.linkedin.com/company/oneuptime"
],
"description": "OneUptime monitors websites, API's, and servers and alerts your team if something goes wrong. It also keeps your customers updated about any downtime."
d="M 351.792969 35.324219 L 367.53125 35.324219 L 367.53125 51.0625 L 351.792969 51.0625 Z M 351.792969 35.324219 "
clip-rule="nonzero" />
</clipPath>
<clipPath id="32c1ad7ad2">
<path
d="M 366.480469 51.03125 L 352.816406 51.03125 C 352.253906 51.03125 351.792969 50.574219 351.792969 50.007812 L 351.792969 36.347656 C 351.792969 35.785156 352.253906 35.324219 352.816406 35.324219 L 366.480469 35.324219 C 367.042969 35.324219 367.5 35.785156 367.5 36.347656 L 367.5 50.007812 C 367.5 50.574219 367.042969 51.03125 366.480469 51.03125 "
clip-rule="nonzero" />
</clipPath>
</defs>
<g clip-path="url(#1d83d73318)">
<g clip-path="url(#32c1ad7ad2)">
<path fill="#7ed957"
d="M 351.792969 35.324219 L 367.53125 35.324219 L 367.53125 51.0625 L 351.792969 51.0625 Z M 351.792969 35.324219 "
fill-opacity="1" fill-rule="nonzero" />
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(11.173064, 55.95717)">
<g>
<path
d="M 1.5625 -21.828125 C 1.5625 -25.191406 2.054688 -28.320312 3.046875 -31.21875 C 4.046875 -34.164062 5.5 -36.71875 7.40625 -38.875 C 9.3125 -41.070312 11.632812 -42.773438 14.375 -43.984375 C 15.738281 -44.597656 17.195312 -45.0625 18.75 -45.375 C 20.3125 -45.6875 21.941406 -45.84375 23.640625 -45.84375 C 25.335938 -45.84375 26.960938 -45.6875 28.515625 -45.375 C 30.078125 -45.0625 31.539062 -44.578125 32.90625 -43.921875 C 34.269531 -43.296875 35.53125 -42.546875 36.6875 -41.671875 C 37.851562 -40.804688 38.914062 -39.8125 39.875 -38.6875 C 41.78125 -36.53125 43.25 -34.003906 44.28125 -31.109375 C 45.28125 -28.203125 45.78125 -25.109375 45.78125 -21.828125 C 45.78125 -18.554688 45.28125 -15.46875 44.28125 -12.5625 C 43.957031 -11.613281 43.578125 -10.679688 43.140625 -9.765625 C 42.703125 -8.847656 42.210938 -7.984375 41.671875 -7.171875 C 41.140625 -6.367188 40.5625 -5.597656 39.9375 -4.859375 C 38.976562 -3.734375 37.90625 -2.734375 36.71875 -1.859375 C 35.539062 -0.992188 34.289062 -0.25 32.96875 0.375 C 30.226562 1.65625 27.113281 2.296875 23.625 2.296875 C 20.144531 2.296875 17.039062 1.65625 14.3125 0.375 C 13.644531 0.0390625 13 -0.3125 12.375 -0.6875 C 11.757812 -1.0625 11.160156 -1.460938 10.578125 -1.890625 C 9.992188 -2.328125 9.429688 -2.796875 8.890625 -3.296875 C 8.359375 -3.796875 7.863281 -4.316406 7.40625 -4.859375 C 5.5 -7.054688 4.046875 -9.625 3.046875 -12.5625 C 2.054688 -15.46875 1.5625 -18.554688 1.5625 -21.828125 Z M 10.703125 -21.828125 C 10.703125 -20.796875 10.773438 -19.769531 10.921875 -18.75 C 11.066406 -17.738281 11.28125 -16.734375 11.5625 -15.734375 C 11.894531 -14.785156 12.269531 -13.882812 12.6875 -13.03125 C 13.101562 -12.175781 13.601562 -11.378906 14.1875 -10.640625 C 14.351562 -10.390625 14.535156 -10.160156 14.734375 -9.953125 C 14.941406 -9.742188 15.148438 -9.535156 15.359375 -9.328125 C 15.566406 -9.117188 15.785156 -8.910156 16.015625 -8.703125 C 16.242188 -8.492188 16.484375 -8.304688 16.734375 -8.140625 C 16.984375 -7.984375 17.234375 -7.820312 17.484375 -7.65625 C 17.734375 -7.488281 17.976562 -7.320312 18.21875 -7.15625 C 19.800781 -6.320312 21.609375 -5.90625 23.640625 -5.90625 C 24.378906 -5.90625 25.082031 -5.945312 25.75 -6.03125 C 26.414062 -6.113281 27.035156 -6.25 27.609375 -6.4375 C 28.191406 -6.625 28.734375 -6.84375 29.234375 -7.09375 C 30.847656 -7.875 32.195312 -8.953125 33.28125 -10.328125 C 33.65625 -10.785156 33.984375 -11.269531 34.265625 -11.78125 C 34.554688 -12.300781 34.828125 -12.863281 35.078125 -13.46875 C 35.328125 -14.070312 35.554688 -14.679688 35.765625 -15.296875 C 36.347656 -17.328125 36.640625 -19.503906 36.640625 -21.828125 C 36.640625 -23.898438 36.328125 -25.894531 35.703125 -27.8125 C 35.117188 -29.71875 34.25 -31.414062 33.09375 -32.90625 C 31.96875 -34.351562 30.617188 -35.515625 29.046875 -36.390625 C 27.472656 -37.222656 25.671875 -37.640625 23.640625 -37.640625 C 23.140625 -37.640625 22.640625 -37.617188 22.140625 -37.578125 C 21.640625 -37.535156 21.160156 -37.460938 20.703125 -37.359375 C 20.253906 -37.253906 19.820312 -37.128906 19.40625 -36.984375 C 18.988281 -36.835938 18.59375 -36.660156 18.21875 -36.453125 C 17.394531 -36.078125 16.648438 -35.617188 15.984375 -35.078125 C 15.316406 -34.546875 14.71875 -33.925781 14.1875 -33.21875 C 13.0625 -31.8125 12.1875 -30.148438 11.5625 -28.234375 C 10.988281 -26.242188 10.703125 -24.109375 10.703125 -21.828125 Z M 10.703125 -21.828125 " />
</g>
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(58.505968, 55.95717)">
<g>
<path
d="M 11.9375 -31.046875 C 12.269531 -31.367188 12.601562 -31.65625 12.9375 -31.90625 C 13.269531 -32.15625 13.625 -32.382812 14 -32.59375 C 16.070312 -33.957031 18.5 -34.640625 21.28125 -34.640625 C 23.3125 -34.640625 25.113281 -34.316406 26.6875 -33.671875 C 28.257812 -33.035156 29.585938 -32.078125 30.671875 -30.796875 C 32.703125 -28.304688 33.71875 -25.070312 33.71875 -21.09375 L 33.71875 1.5625 L 25 1.5625 L 25 -20.46875 C 25 -21.164062 24.945312 -21.804688 24.84375 -22.390625 C 24.738281 -22.972656 24.59375 -23.488281 24.40625 -23.9375 C 24.226562 -24.394531 23.992188 -24.789062 23.703125 -25.125 C 23.453125 -25.457031 23.171875 -25.738281 22.859375 -25.96875 C 22.546875 -26.195312 22.179688 -26.363281 21.765625 -26.46875 C 21.359375 -26.570312 20.882812 -26.625 20.34375 -26.625 C 19.59375 -26.625 18.84375 -26.476562 18.09375 -26.1875 C 17.3125 -25.894531 16.546875 -25.476562 15.796875 -24.9375 C 15.054688 -24.363281 14.351562 -23.722656 13.6875 -23.015625 C 13.4375 -22.679688 13.164062 -22.335938 12.875 -21.984375 C 12.582031 -21.628906 12.332031 -21.289062 12.125 -20.96875 L 12.125 1.5625 L 3.421875 1.5625 L 3.421875 -33.90625 L 11.9375 -33.90625 Z M 11.9375 -31.046875 " />
</g>
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(95.327364, 55.95717)">
<g>
<path
d="M 10.390625 -12.3125 C 10.847656 -10.488281 11.632812 -9.019531 12.75 -7.90625 C 14.195312 -6.488281 16.144531 -5.78125 18.59375 -5.78125 C 19.175781 -5.78125 19.738281 -5.800781 20.28125 -5.84375 C 20.820312 -5.882812 21.335938 -5.945312 21.828125 -6.03125 C 22.328125 -6.113281 22.804688 -6.21875 23.265625 -6.34375 C 23.722656 -6.46875 24.175781 -6.601562 24.625 -6.75 C 25.082031 -6.894531 25.53125 -7.050781 25.96875 -7.21875 C 26.40625 -7.382812 26.851562 -7.570312 27.3125 -7.78125 L 28.921875 -8.515625 L 29.421875 -6.78125 L 30.734375 -1.984375 L 31.109375 -0.6875 L 29.921875 -0.125 C 28.304688 0.625 26.503906 1.207031 24.515625 1.625 C 23.515625 1.863281 22.460938 2.035156 21.359375 2.140625 C 20.265625 2.242188 19.117188 2.296875 17.921875 2.296875 C 15.390625 2.296875 13.085938 1.882812 11.015625 1.0625 C 8.941406 0.1875 7.175781 -1.054688 5.71875 -2.671875 C 4.269531 -4.242188 3.148438 -6.191406 2.359375 -8.515625 C 1.617188 -10.753906 1.25 -13.304688 1.25 -16.171875 C 1.25 -18.742188 1.617188 -21.148438 2.359375 -23.390625 C 2.773438 -24.503906 3.253906 -25.554688 3.796875 -26.546875 C 4.335938 -27.546875 4.957031 -28.460938 5.65625 -29.296875 C 7.070312 -30.953125 8.773438 -32.257812 10.765625 -33.21875 C 12.753906 -34.164062 14.972656 -34.640625 17.421875 -34.640625 C 18.242188 -34.640625 19.039062 -34.585938 19.8125 -34.484375 C 20.582031 -34.390625 21.328125 -34.25 22.046875 -34.0625 C 22.773438 -33.875 23.472656 -33.632812 24.140625 -33.34375 C 25.128906 -32.882812 26.023438 -32.351562 26.828125 -31.75 C 27.640625 -31.15625 28.378906 -30.460938 29.046875 -29.671875 C 30.335938 -28.140625 31.3125 -26.378906 31.96875 -24.390625 C 32.257812 -23.390625 32.488281 -22.359375 32.65625 -21.296875 C 32.820312 -20.242188 32.90625 -19.175781 32.90625 -18.09375 C 32.90625 -17.8125 32.90625 -17.523438 32.90625 -17.234375 C 32.90625 -16.941406 32.894531 -16.640625 32.875 -16.328125 C 32.851562 -16.015625 32.84375 -15.710938 32.84375 -15.421875 C 32.84375 -15.128906 32.832031 -14.847656 32.8125 -14.578125 C 32.789062 -14.316406 32.757812 -14.039062 32.71875 -13.75 L 32.59375 -12.3125 Z M 17.296875 -26.6875 C 15.304688 -26.6875 13.6875 -26.019531 12.4375 -24.6875 C 11.9375 -24.15625 11.5 -23.492188 11.125 -22.703125 C 10.757812 -21.910156 10.472656 -21 10.265625 -19.96875 L 24.5625 -19.96875 C 24.363281 -21.957031 23.742188 -23.507812 22.703125 -24.625 C 21.421875 -26 19.617188 -26.6875 17.296875 -26.6875 Z M 17.296875 -26.6875 " />
</g>
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(129.163241, 55.95717)">
<g>
<path
d="M 31.28125 -45.09375 L 38.5625 -45.09375 L 38.5625 -16.796875 C 38.5625 -13.890625 38.148438 -11.253906 37.328125 -8.890625 C 36.492188 -6.523438 35.289062 -4.492188 33.71875 -2.796875 C 33.382812 -2.460938 33.039062 -2.148438 32.6875 -1.859375 C 32.332031 -1.578125 31.976562 -1.289062 31.625 -1 C 31.28125 -0.707031 30.910156 -0.445312 30.515625 -0.21875 C 30.117188 0.0078125 29.710938 0.226562 29.296875 0.4375 C 28.878906 0.644531 28.441406 0.832031 27.984375 1 C 25.828125 1.863281 23.425781 2.296875 20.78125 2.296875 C 15.257812 2.296875 10.925781 0.660156 7.78125 -2.609375 C 4.664062 -5.890625 3.109375 -10.535156 3.109375 -16.546875 L 3.109375 -45.09375 L 12.125 -45.09375 L 12.125 -17.484375 C 12.125 -13.617188 12.875 -10.691406 14.375 -8.703125 C 15.03125 -7.796875 15.875 -7.113281 16.90625 -6.65625 C 17.945312 -6.195312 19.238281 -5.96875 20.78125 -5.96875 C 23.800781 -5.96875 26.019531 -6.878906 27.4375 -8.703125 C 28.96875 -10.648438 29.734375 -13.578125 29.734375 -17.484375 L 29.734375 -45.09375 Z M 31.28125 -45.09375 " />
</g>
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(170.836098, 55.95717)">
<g>
<path
d="M 3.671875 -33.90625 C 4.492188 -33.90625 5.257812 -33.84375 5.96875 -33.71875 C 6.675781 -33.59375 7.347656 -33.394531 7.984375 -33.125 C 8.628906 -32.851562 9.222656 -32.507812 9.765625 -32.09375 C 10.304688 -31.675781 10.765625 -31.179688 11.140625 -30.609375 C 11.835938 -31.304688 12.644531 -31.925781 13.5625 -32.46875 C 13.8125 -32.632812 14.0625 -32.789062 14.3125 -32.9375 C 14.5625 -33.082031 14.828125 -33.21875 15.109375 -33.34375 C 15.398438 -33.46875 15.691406 -33.582031 15.984375 -33.6875 C 16.273438 -33.789062 16.566406 -33.90625 16.859375 -34.03125 C 17.523438 -34.238281 18.207031 -34.390625 18.90625 -34.484375 C 19.613281 -34.585938 20.34375 -34.640625 21.09375 -34.640625 C 23.164062 -34.640625 25.164062 -34.222656 27.09375 -33.390625 C 29.019531 -32.566406 30.707031 -31.367188 32.15625 -29.796875 C 33.613281 -28.222656 34.753906 -26.316406 35.578125 -24.078125 C 35.867188 -23.328125 36.109375 -22.535156 36.296875 -21.703125 C 36.484375 -20.878906 36.628906 -20.03125 36.734375 -19.15625 C 36.835938 -18.289062 36.890625 -17.398438 36.890625 -16.484375 C 36.890625 -13.742188 36.472656 -11.210938 35.640625 -8.890625 C 35.222656 -7.773438 34.734375 -6.71875 34.171875 -5.71875 C 33.617188 -4.726562 32.96875 -3.816406 32.21875 -2.984375 C 31.96875 -2.648438 31.6875 -2.335938 31.375 -2.046875 C 31.070312 -1.765625 30.753906 -1.476562 30.421875 -1.1875 C 30.085938 -0.894531 29.753906 -0.625 29.421875 -0.375 C 29.085938 -0.125 28.734375 0.101562 28.359375 0.3125 C 27.992188 0.519531 27.625 0.707031 27.25 0.875 C 26.289062 1.375 25.300781 1.734375 24.28125 1.953125 C 23.269531 2.179688 22.25 2.296875 21.21875 2.296875 C 19.019531 2.296875 17.003906 1.863281 15.171875 1 C 14.515625 0.707031 13.894531 0.375 13.3125 0 L 13.3125 15.234375 L 4.609375 15.234375 L 4.609375 -24.078125 C 4.609375 -25.023438 4.441406 -25.644531 4.109375 -25.9375 C 3.734375 -26.269531 3.191406 -26.4375 2.484375 -26.4375 L 0.4375 -26.4375 L 1 -28.421875 L 2.171875 -32.78125 L 2.484375 -33.90625 Z M 28.046875 -16.296875 C 28.046875 -17.171875 27.984375 -17.976562 27.859375 -18.71875 C 27.742188 -19.46875 27.570312 -20.160156 27.34375 -20.796875 C 27.113281 -21.441406 26.851562 -22.035156 26.5625 -22.578125 C 26.269531 -23.117188 25.9375 -23.617188 25.5625 -24.078125 C 24.820312 -24.941406 23.960938 -25.59375 22.984375 -26.03125 C 22.003906 -26.46875 20.957031 -26.6875 19.84375 -26.6875 C 19.09375 -26.6875 18.382812 -26.59375 17.71875 -26.40625 C 17.0625 -26.21875 16.441406 -25.9375 15.859375 -25.5625 C 14.785156 -24.894531 13.9375 -24.191406 13.3125 -23.453125 L 13.3125 -8.703125 C 14.1875 -7.921875 15.140625 -7.257812 16.171875 -6.71875 C 17.335938 -6.09375 18.644531 -5.78125 20.09375 -5.78125 C 21.25 -5.78125 22.304688 -6.007812 23.265625 -6.46875 C 24.210938 -6.96875 25.039062 -7.648438 25.75 -8.515625 C 26.125 -8.972656 26.445312 -9.472656 26.71875 -10.015625 C 26.988281 -10.554688 27.226562 -11.15625 27.4375 -11.8125 C 27.644531 -12.476562 27.796875 -13.179688 27.890625 -13.921875 C 27.992188 -14.671875 28.046875 -15.460938 28.046875 -16.296875 Z M 28.046875 -16.296875 " />
</g>
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(208.963656, 55.95717)">
<g>
<path
d="M 7.53125 -42.921875 L 13.375 -42.921875 L 13.375 -32.71875 L 22.328125 -32.71875 L 22.328125 -24.75 L 13.375 -24.75 L 13.375 -10.703125 C 13.375 -9.660156 13.476562 -8.8125 13.6875 -8.15625 C 13.894531 -7.53125 14.144531 -7.050781 14.4375 -6.71875 C 14.71875 -6.382812 15.066406 -6.15625 15.484375 -6.03125 C 15.734375 -5.945312 15.984375 -5.882812 16.234375 -5.84375 C 16.484375 -5.800781 16.734375 -5.78125 16.984375 -5.78125 C 17.847656 -5.78125 18.632812 -5.90625 19.34375 -6.15625 C 20.21875 -6.488281 21.023438 -6.863281 21.765625 -7.28125 L 23.390625 -8.15625 L 24.015625 -6.40625 L 25.5625 -1.921875 L 25.9375 -0.75 L 24.875 -0.125 C 23.96875 0.457031 22.75 1 21.21875 1.5 C 20.425781 1.78125 19.613281 1.984375 18.78125 2.109375 C 17.957031 2.234375 17.128906 2.296875 16.296875 2.296875 C 12.734375 2.296875 9.894531 1.113281 7.78125 -1.25 C 6.695312 -2.445312 5.90625 -3.875 5.40625 -5.53125 C 4.914062 -7.195312 4.671875 -9.066406 4.671875 -11.140625 L 4.671875 -24.75 L -0.9375 -24.75 L -0.9375 -32.71875 L 4.96875 -32.71875 L 5.96875 -41.546875 L 6.15625 -42.921875 Z M 7.53125 -42.921875 " />
</g>
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(233.656391, 55.95717)">
<g>
<path
d="M 10.578125 1.5625 L 3.421875 1.5625 L 3.421875 -33.90625 L 12.125 -33.90625 L 12.125 1.5625 Z M 7.78125 -36.328125 C 6.28125 -36.328125 4.988281 -36.863281 3.90625 -37.9375 C 2.832031 -39.019531 2.296875 -40.304688 2.296875 -41.796875 C 2.296875 -43.410156 2.800781 -44.726562 3.8125 -45.75 C 4.832031 -46.769531 6.15625 -47.28125 7.78125 -47.28125 C 8.519531 -47.28125 9.222656 -47.144531 9.890625 -46.875 C 10.554688 -46.601562 11.144531 -46.207031 11.65625 -45.6875 C 12.175781 -45.164062 12.570312 -44.570312 12.84375 -43.90625 C 13.113281 -43.25 13.25 -42.546875 13.25 -41.796875 C 13.25 -40.179688 12.738281 -38.863281 11.71875 -37.84375 C 10.707031 -36.832031 9.394531 -36.328125 7.78125 -36.328125 Z M 7.78125 -36.328125 " />
</g>
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(249.205965, 55.95717)">
<g>
<path
d="M 11.9375 -31.109375 C 12.269531 -31.390625 12.59375 -31.65625 12.90625 -31.90625 C 13.21875 -32.15625 13.5625 -32.382812 13.9375 -32.59375 C 14.4375 -32.925781 14.953125 -33.226562 15.484375 -33.5 C 16.023438 -33.769531 16.59375 -33.984375 17.1875 -34.140625 C 17.789062 -34.304688 18.394531 -34.429688 19 -34.515625 C 19.601562 -34.597656 20.238281 -34.640625 20.90625 -34.640625 C 23.800781 -34.640625 26.203125 -33.914062 28.109375 -32.46875 C 29.273438 -31.59375 30.234375 -30.515625 30.984375 -29.234375 C 32.015625 -30.398438 33.113281 -31.4375 34.28125 -32.34375 C 34.6875 -32.632812 35.117188 -32.90625 35.578125 -33.15625 C 36.035156 -33.40625 36.507812 -33.625 37 -33.8125 C 37.5 -34 38.007812 -34.148438 38.53125 -34.265625 C 39.050781 -34.390625 39.578125 -34.484375 40.109375 -34.546875 C 40.648438 -34.609375 41.210938 -34.640625 41.796875 -34.640625 C 42.046875 -34.640625 42.285156 -34.640625 42.515625 -34.640625 C 42.742188 -34.640625 42.972656 -34.628906 43.203125 -34.609375 C 43.429688 -34.585938 43.65625 -34.554688 43.875 -34.515625 C 44.101562 -34.472656 44.320312 -34.429688 44.53125 -34.390625 C 44.738281 -34.359375 44.945312 -34.320312 45.15625 -34.28125 C 45.363281 -34.238281 45.570312 -34.1875 45.78125 -34.125 C 45.988281 -34.0625 46.195312 -33.988281 46.40625 -33.90625 C 46.613281 -33.820312 46.820312 -33.738281 47.03125 -33.65625 C 47.394531 -33.488281 47.753906 -33.300781 48.109375 -33.09375 C 48.460938 -32.882812 48.796875 -32.65625 49.109375 -32.40625 C 49.421875 -32.15625 49.722656 -31.894531 50.015625 -31.625 C 50.304688 -31.351562 50.570312 -31.054688 50.8125 -30.734375 C 51.851562 -29.523438 52.601562 -28.09375 53.0625 -26.4375 C 53.5625 -24.820312 53.8125 -23.039062 53.8125 -21.09375 L 53.8125 1.5625 L 45.09375 1.5625 L 45.09375 -20.65625 C 45.09375 -22.5625 44.679688 -24.070312 43.859375 -25.1875 C 43.109375 -26.144531 42.09375 -26.625 40.8125 -26.625 C 40.0625 -26.625 39.351562 -26.476562 38.6875 -26.1875 C 37.945312 -25.851562 37.242188 -25.414062 36.578125 -24.875 C 35.867188 -24.300781 35.179688 -23.640625 34.515625 -22.890625 C 34.273438 -22.554688 34.007812 -22.203125 33.71875 -21.828125 C 33.425781 -21.460938 33.175781 -21.113281 32.96875 -20.78125 L 32.96875 1.5625 L 24.265625 1.5625 L 24.265625 -20.65625 C 24.265625 -22.5625 23.847656 -24.070312 23.015625 -25.1875 C 22.265625 -26.144531 21.25 -26.625 19.96875 -26.625 C 19.257812 -26.625 18.554688 -26.476562 17.859375 -26.1875 C 17.523438 -26.0625 17.171875 -25.894531 16.796875 -25.6875 C 16.421875 -25.476562 16.066406 -25.226562 15.734375 -24.9375 C 15.609375 -24.851562 15.484375 -24.757812 15.359375 -24.65625 C 15.234375 -24.5625 15.117188 -24.460938 15.015625 -24.359375 C 14.910156 -24.253906 14.796875 -24.148438 14.671875 -24.046875 C 14.554688 -23.941406 14.445312 -23.835938 14.34375 -23.734375 C 14.238281 -23.628906 14.132812 -23.515625 14.03125 -23.390625 C 13.925781 -23.265625 13.8125 -23.140625 13.6875 -23.015625 C 13.4375 -22.679688 13.164062 -22.335938 12.875 -21.984375 C 12.582031 -21.628906 12.332031 -21.289062 12.125 -20.96875 L 12.125 1.5625 L 3.421875 1.5625 L 3.421875 -33.90625 L 11.9375 -33.90625 Z M 11.9375 -31.109375 " />
</g>
</g>
</g>
<g fill="#121212" fill-opacity="1">
<g transform="translate(306.117405, 55.95717)">
<g>
<path
d="M 10.390625 -12.3125 C 10.847656 -10.488281 11.632812 -9.019531 12.75 -7.90625 C 14.195312 -6.488281 16.144531 -5.78125 18.59375 -5.78125 C 19.175781 -5.78125 19.738281 -5.800781 20.28125 -5.84375 C 20.820312 -5.882812 21.335938 -5.945312 21.828125 -6.03125 C 22.328125 -6.113281 22.804688 -6.21875 23.265625 -6.34375 C 23.722656 -6.46875 24.175781 -6.601562 24.625 -6.75 C 25.082031 -6.894531 25.53125 -7.050781 25.96875 -7.21875 C 26.40625 -7.382812 26.851562 -7.570312 27.3125 -7.78125 L 28.921875 -8.515625 L 29.421875 -6.78125 L 30.734375 -1.984375 L 31.109375 -0.6875 L 29.921875 -0.125 C 28.304688 0.625 26.503906 1.207031 24.515625 1.625 C 23.515625 1.863281 22.460938 2.035156 21.359375 2.140625 C 20.265625 2.242188 19.117188 2.296875 17.921875 2.296875 C 15.390625 2.296875 13.085938 1.882812 11.015625 1.0625 C 8.941406 0.1875 7.175781 -1.054688 5.71875 -2.671875 C 4.269531 -4.242188 3.148438 -6.191406 2.359375 -8.515625 C 1.617188 -10.753906 1.25 -13.304688 1.25 -16.171875 C 1.25 -18.742188 1.617188 -21.148438 2.359375 -23.390625 C 2.773438 -24.503906 3.253906 -25.554688 3.796875 -26.546875 C 4.335938 -27.546875 4.957031 -28.460938 5.65625 -29.296875 C 7.070312 -30.953125 8.773438 -32.257812 10.765625 -33.21875 C 12.753906 -34.164062 14.972656 -34.640625 17.421875 -34.640625 C 18.242188 -34.640625 19.039062 -34.585938 19.8125 -34.484375 C 20.582031 -34.390625 21.328125 -34.25 22.046875 -34.0625 C 22.773438 -33.875 23.472656 -33.632812 24.140625 -33.34375 C 25.128906 -32.882812 26.023438 -32.351562 26.828125 -31.75 C 27.640625 -31.15625 28.378906 -30.460938 29.046875 -29.671875 C 30.335938 -28.140625 31.3125 -26.378906 31.96875 -24.390625 C 32.257812 -23.390625 32.488281 -22.359375 32.65625 -21.296875 C 32.820312 -20.242188 32.90625 -19.175781 32.90625 -18.09375 C 32.90625 -17.8125 32.90625 -17.523438 32.90625 -17.234375 C 32.90625 -16.941406 32.894531 -16.640625 32.875 -16.328125 C 32.851562 -16.015625 32.84375 -15.710938 32.84375 -15.421875 C 32.84375 -15.128906 32.832031 -14.847656 32.8125 -14.578125 C 32.789062 -14.316406 32.757812 -14.039062 32.71875 -13.75 L 32.59375 -12.3125 Z M 17.296875 -26.6875 C 15.304688 -26.6875 13.6875 -26.019531 12.4375 -24.6875 C 11.9375 -24.15625 11.5 -23.492188 11.125 -22.703125 C 10.757812 -21.910156 10.472656 -21 10.265625 -19.96875 L 24.5625 -19.96875 C 24.363281 -21.957031 23.742188 -23.507812 22.703125 -24.625 C 21.421875 -26 19.617188 -26.6875 17.296875 -26.6875 Z M 17.296875 -26.6875 " />
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.