Compare commits

...

2759 Commits

Author SHA1 Message Date
Nawaz Dhandala
a02018aeb2 refactor: adjust formatting in SelectFieldGenerator test and update roadmap documents for clarity and new features 2026-03-16 21:23:59 +00:00
Nawaz Dhandala
9f1389ce87 Merge branch 'release' of https://github.com/OneUptime/oneuptime into release 2026-03-16 21:08:11 +00:00
Nawaz Dhandala
11e5c2778d refactor: update AnalyticsTableName declaration for improved type safety in tests 2026-03-16 21:06:37 +00:00
Nawaz Dhandala
9619090b98 fix: optimize SQL query in fetchAttributesFromDatabase to improve attribute key handling 2026-03-16 20:57:58 +00:00
Nawaz Dhandala
92c00e4fc8 feat: add LogScrubRule migration and update OnCallDutyPolicyScheduleLayer defaults; refactor test imports and clean up code formatting 2026-03-16 20:00:52 +00:00
Nawaz Dhandala
5f52af2aa8 refactor: rename Record to AnalyticsRecord for clarity in StatementGenerator 2026-03-16 19:40:54 +00:00
Nawaz Dhandala
777e9612a4 feat: add migration for LogScrubRule table and update OnCallDutyPolicyScheduleLayer defaults 2026-03-16 15:51:24 +00:00
Nawaz Dhandala
7ff5d9dba6 feat: remove unused migration imports from Index.ts 2026-03-16 15:48:55 +00:00
Nawaz Dhandala
8b97807991 feat: update SQL query in ExceptionInstance model to remove unnecessary ORDER BY clause 2026-03-16 15:47:18 +00:00
Nawaz Dhandala
dff3c50a97 feat: update SQL queries in Log and Span models to remove unnecessary ORDER BY clauses 2026-03-16 15:37:30 +00:00
Nawaz Dhandala
d00d7cb19f feat: update SQL queries in ExceptionInstance, Log, and Span models to include GROUP BY clauses 2026-03-16 15:37:02 +00:00
Nawaz Dhandala
8cb25d9917 feat: remove unused migration imports from Index.ts 2026-03-16 14:56:11 +00:00
Nawaz Dhandala
ea58fbdc0d feat: add RFP directory to .gitignore 2026-03-16 12:57:21 +00:00
Nawaz Dhandala
5f660bae02 feat: refactor table names in analytics models to use AnalyticsTableName enum 2026-03-16 12:43:55 +00:00
Nawaz Dhandala
d327edb165 feat: update table names to include version suffix for ExceptionInstance, Log, Metric, MonitorLog, and Span models 2026-03-16 12:27:49 +00:00
Nawaz Dhandala
de7990c41e feat: add skipIndex configurations and projections in ExceptionInstance model; update codec in MonitorLog and Span models 2026-03-16 12:16:36 +00:00
Nawaz Dhandala
8f9e5a46fa feat: update column types to MapStringString and BigNumber, and add projections in Log, Metric, and Span models 2026-03-16 12:08:30 +00:00
Nawaz Dhandala
046482a2a8 feat: upgrade time field type to DateTime64 for improved precision in MonitorLog model 2026-03-16 11:54:33 +00:00
Nawaz Dhandala
3568d766ea feat: upgrade time field type to DateTime64 for enhanced precision in ExceptionInstance model 2026-03-16 11:49:32 +00:00
Nawaz Dhandala
41a8287975 refactor: remove unused data migration entries from the migration list 2026-03-16 11:47:49 +00:00
Nawaz Dhandala
6629cc9023 feat: upgrade time fields to DateTime64 for improved precision in Metric and Span models 2026-03-16 11:46:45 +00:00
Nawaz Dhandala
85d927f291 refactor: remove ChangeLogTimeColumnToDateTime64 migration from the migration list 2026-03-16 10:37:33 +00:00
Nawaz Dhandala
1edda202be feat: implement basic trace-based alerting with span count threshold and filtering options 2026-03-16 10:29:00 +00:00
Nawaz Dhandala
9a47b02a0c feat: upgrade time column to DateTime64 for nanosecond precision in logs 2026-03-16 10:26:03 +00:00
Nawaz Dhandala
3ccd089d4f Delete the Traces Audit document, which included a comprehensive analysis of OneUptime's traces implementation, storage, visualization, correlation, and competitive gaps. 2026-03-16 10:05:55 +00:00
Nawaz Dhandala
2c7486714f feat: Add comprehensive metrics and traces roadmap for industry parity
- 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.
2026-03-16 09:51:08 +00:00
Nawaz Dhandala
4781c6a532 fix: update array access syntax for consistency in AnalyticsDatabaseService 2026-03-16 09:20:32 +00:00
Nawaz Dhandala
1a58481265 refactor: simplify code formatting in LogAggregationService and LogsViewerToolbar 2026-03-15 00:28:07 +00:00
Nawaz Dhandala
58024398cf feat: add methods for column existence check and codec management in SpanItem 2026-03-15 00:03:46 +00:00
Nawaz Dhandala
dde1e89c34 fix: cast attributes to JSONObject in attribute remapping methods 2026-03-14 23:23:00 +00:00
Nawaz Dhandala
4b89add3b8 chore: update version to 10.0.32 2026-03-14 22:50:05 +00:00
Nawaz Dhandala
c7b8d13b49 feat: enhance trace storage and indexing with new skip indexes and compression codecs 2026-03-14 22:46:12 +00:00
Nawaz Dhandala
7622367d5d refactor: improve data handling and component state management in various files 2026-03-14 22:36:00 +00:00
Simon Larsen
916666fba5 Merge pull request #2356 from OneUptime/log-phase3
Log phase3
2026-03-14 22:07:31 +00:00
Simon Larsen
8683e7a880 Merge pull request #2354 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-03-14 22:07:09 +00:00
Nawaz Dhandala
1e8f8da91d feat(LogPipelineService): add attribute key resolution methods for improved attribute handling
feat(ProcessorForm, LogPipelines): set default sortOrder to 1 on processor creation
2026-03-14 21:47:08 +00:00
Nawaz Dhandala
564f69d91a feat: enhance UI components for filter conditions and processor forms with improved layout and descriptions 2026-03-14 21:11:18 +00:00
Nawaz Dhandala
7da10c48a8 feat: update route handling in various components to utilize RouteUtil for parameter population 2026-03-14 20:54:32 +00:00
Nawaz Dhandala
59904cb843 feat(ProcessorForm): enhance descriptions and add usage examples for processors 2026-03-14 20:45:14 +00:00
Nawaz Dhandala
43c7954dbe fix(FilterConditionElement): align delete button with other columns for consistent UI 2026-03-14 20:31:42 +00:00
Nawaz Dhandala
9c361b4150 feat(FilterCondition, FilterQueryBuilder): enhance filter condition UI with timeline and improve severity color handling 2026-03-14 20:25:38 +00:00
Nawaz Dhandala
6dfc364cea feat(FilterCondition, FilterQueryBuilder): enhance filter conditions with severity options and improve UI for condition management 2026-03-14 14:00:20 +00:00
Nawaz Dhandala
bb48f530bc fix(FilterQueryBuilder): remove unused originalQuery state management 2026-03-14 13:44:48 +00:00
Nawaz Dhandala
8c2931b8c9 refactor(FilterQueryBuilder, LogDropFilterView, LogPipelineView, StatementGenerator, AddSpanTableOptimizations): streamline code formatting and improve readability 2026-03-14 13:36:35 +00:00
Nawaz Dhandala
202b8b3845 feat(AddSpanTableOptimizations): apply async settings for codec modifications and index operations to prevent timeouts 2026-03-14 13:32:18 +00:00
Nawaz Dhandala
53a77ed47a feat(SpanTableOptimizations): streamline span table migration by removing RetrySpanTableOptimizations and optimizing codec application 2026-03-14 13:06:52 +00:00
Nawaz Dhandala
34dffaa710 feat(RetrySpanTableOptimizations): add migration for hasException column and codec optimizations in SpanItem 2026-03-14 12:17:09 +00:00
Nawaz Dhandala
d8bbe4b2cd feat(Span): add hasException column and optimize Span table with new skip indexes and codecs 2026-03-14 12:08:04 +00:00
Nawaz Dhandala
0b922f4dbf feat(ProcessorForm): replace Card with Modal for improved user experience in processor configuration 2026-03-14 11:40:39 +00:00
simlarsen
526cc21b9c chore: npm audit fix 2026-03-14 02:23:15 +00:00
Nawaz Dhandala
d7ac8dbb1e feat(LogFilterEvaluator): refactor getFieldValue to use getAttrValue for improved attribute retrieval 2026-03-13 20:42:13 +00:00
Nawaz Dhandala
b4fecdad21 feat(FilterQueryBuilder): remove success message handling from filter save process 2026-03-13 20:17:24 +00:00
Nawaz Dhandala
df613292df feat(FilterQueryBuilder): implement modal for editing filter conditions with improved UI and validation 2026-03-13 20:16:31 +00:00
Nawaz Dhandala
7088e8073f feat(LogStatusIndicators): add status indicators using Pill components for Log Drop Filter and Log Pipeline views 2026-03-13 20:01:33 +00:00
Nawaz Dhandala
f3fc6904bd feat(LogDropFilters): enhance Log Drop Filters with action and status indicators using Pill components 2026-03-13 19:54:28 +00:00
Nawaz Dhandala
af79613637 feat(LogDropFilterView): add Log Drop Filter view with details, action configuration, and filter conditions 2026-03-13 19:53:43 +00:00
Nawaz Dhandala
b7289c918c feat(LogScrubRules): enhance scrub rules configuration with new fields and detailed pill components 2026-03-13 18:03:02 +00:00
Nawaz Dhandala
1b65ca934e feat(LogDropFilters): add detailed documentation for Log Drop Filters functionality
refactor(LogScrubRules): remove initial values for create operation and update sort order requirement
2026-03-13 17:54:50 +00:00
Nawaz Dhandala
d968666535 feat(LogDocumentation): add detailed markdown documentation for Log Pipelines, Log Processors, and Log Scrub Rules 2026-03-13 17:23:42 +00:00
Nawaz Dhandala
aaa5414248 feat(LogScrubRules): enhance custom regex pattern field with conditional visibility 2026-03-13 17:18:41 +00:00
Nawaz Dhandala
60ae745fb1 feat(LogScrubRules): add multi-step form configuration for scrub rules 2026-03-13 17:16:35 +00:00
Nawaz Dhandala
2081f9030a Refactor and clean up code across multiple components
- 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.
2026-03-13 15:37:44 +00:00
Nawaz Dhandala
735024216b feat(LogsViewerToolbar): simplify keyboard shortcuts button with kbd element 2026-03-13 15:24:48 +00:00
Nawaz Dhandala
4f84966326 feat(Migration): Add MigrationName1773414578773 for LogScrubRule constraints and indexes 2026-03-13 15:13:02 +00:00
Nawaz Dhandala
bcac918edd feat: Implement Log Pipeline Filter Query Builder and Processor Form
- 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.
2026-03-13 15:02:58 +00:00
Nawaz Dhandala
b64c66a7c2 feat(LogScrubRules): Implement Log Scrub Rules feature with CRUD operations and UI integration 2026-03-13 14:55:09 +00:00
Nawaz Dhandala
2d88e4fe0e feat(LogsViewer): add keyboard shortcuts functionality and help component 2026-03-13 14:46:02 +00:00
Nawaz Dhandala
ec0c9c8c56 feat(LogPipelines): set isDeleteable prop to false for LogPipelines table 2026-03-13 14:39:09 +00:00
Nawaz Dhandala
71fb8e7bc9 feat(LogsViewer): Enhance keyboard navigation and focus management
- 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.
2026-03-13 14:19:30 +00:00
Nawaz Dhandala
cae34e080e feat: add isViewable prop to LogPipelines component for enhanced functionality 2026-03-13 13:55:04 +00:00
Nawaz Dhandala
0282ac3977 feat: update LogPipelineView to use Dropdown for processor type and add descriptions for configuration options 2026-03-13 13:43:01 +00:00
Nawaz Dhandala
df35775f3f feat: add LogPipeline, LogPipelineProcessor, and LogDropFilter services and integrate with BaseAPI 2026-03-13 12:38:44 +00:00
Nawaz Dhandala
da26755cbf feat: add comprehensive Dashboards Audit documentation comparing OneUptime with industry leaders 2026-03-13 12:26:47 +00:00
Nawaz Dhandala
48cdfee319 feat: add migration for LogPipeline, LogPipelineProcessor, and LogDropFilter tables 2026-03-13 11:51:01 +00:00
Nawaz Dhandala
0e93929a3f feat: add LogPipelineProcessor model and related services
- 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.
2026-03-13 11:50:07 +00:00
Nawaz Dhandala
fd1ee0c248 feat: add OpenTelemetry Metrics and Traces Audit documentation 2026-03-13 11:49:34 +00:00
Nawaz Dhandala
8e3e6769ed chore: update permissions in release workflows for consistency 2026-03-13 10:15:38 +00:00
Simon Larsen
417ae4473e Merge pull request #2353 from OneUptime/master
Release
2026-03-13 10:07:09 +00:00
Simon Larsen
810fcd4740 Merge pull request #2352 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-03-13 08:40:07 +00:00
simlarsen
374de9cf82 chore: npm audit fix 2026-03-13 02:25:28 +00:00
Nawaz Dhandala
b9eff113ac Refactor Docker image build and merge workflows for multi-architecture support
- 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.
2026-03-12 22:14:10 +00:00
Nawaz Dhandala
de0d923c63 fix(Log): correct formatting of description for dropped attributes count column in log model 2026-03-12 21:39:44 +00:00
Nawaz Dhandala
d394c96eb9 feat(Logs): add missing OpenTelemetry log fields to enhance compliance and debugging 2026-03-12 21:38:58 +00:00
Nawaz Dhandala
03c38be19c feat(Logs): add new fields for observed time, dropped attributes count, and flags in log model and migration 2026-03-12 21:37:57 +00:00
Nawaz Dhandala
a94e48501e feat(Logs): update gap analysis and implementation phases for log management features 2026-03-12 21:23:47 +00:00
Nawaz Dhandala
35e973ebd9 feat(Nginx): update short URL location path for link shortener
feat(VERSION): bump version to 10.0.31
2026-03-12 21:10:06 +00:00
Nawaz Dhandala
8b6bfc3ef7 feat(LogsViewer): refactor saved view query handling for improved clarity and type safety 2026-03-12 21:07:41 +00:00
Nawaz Dhandala
ad25241d1c feat(OnTriggerBaseModel): improve comments for boolean conversion in select values
style(LogsViewer): format export types for better readability

style(LogsAnalyticsView): clean up function formatting and improve readability

chore: bump version to 10.0.30
2026-03-12 20:38:25 +00:00
Nawaz Dhandala
954281c3d5 feat(LogsViewer): add analytics view mode and corresponding components
- 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.
2026-03-12 20:35:36 +00:00
Nawaz Dhandala
fca0816d6b feat(OnTriggerBaseModel): convert string "true"/"false" values to booleans in select 2026-03-12 20:27:39 +00:00
Nawaz Dhandala
d67d5315e0 feat(migrations): update LogSavedView schema migration to include new constraints and indexes 2026-03-12 19:43:56 +00:00
Nawaz Dhandala
2177f8d56c feat(migrations): add MigrationName1773344537755 to update LogSavedView schema 2026-03-12 19:43:04 +00:00
Nawaz Dhandala
5602536058 feat(OpenAPI): add pagination parameters 'limit' and 'skip' to API specifications
refactor(LogsViewer): format emptyMessage prop for better readability
refactor(SavedViewsDropdown): simplify className conditional rendering
2026-03-12 19:41:22 +00:00
Nawaz Dhandala
abdc4b1d07 chore(version): bump version to 10.0.29 2026-03-12 19:32:45 +00:00
Nawaz Dhandala
6c7f3b5090 feat(start-server): add protobuf body parser middleware for OTLP ingestion 2026-03-12 19:25:50 +00:00
Nawaz Dhandala
7e9fc625c4 Merge branch 'log-view' 2026-03-12 19:11:50 +00:00
Nawaz Dhandala
1382758f12 fix(logs-viewer): update selectedSavedViewId prop to allow undefined value in dropdown and toolbar components
refactor(logs-viewer): conditionally unset other defaults in LogSavedViewService
2026-03-12 19:11:29 +00:00
Simon Larsen
7442270e08 Merge pull request #2350 from OneUptime/log-view
Log view
2026-03-12 19:06:22 +00:00
Nawaz Dhandala
295e191456 feat(logs-viewer): update SavedViewsDropdown layout and enhance button interactions 2026-03-12 18:57:26 +00:00
Nawaz Dhandala
8baaa587e2 feat(logs-viewer): enhance empty message handling and update button styles across components 2026-03-12 18:52:02 +00:00
Nawaz Dhandala
66034a2473 feat(logs-viewer): add create saved view button to SavedViewsDropdown and update LogsViewerToolbar 2026-03-12 18:41:54 +00:00
Nawaz Dhandala
d972c565e3 refactor(logs-viewer): simplify layout structure and enhance toolbar display 2026-03-12 18:32:13 +00:00
Nawaz Dhandala
45d2c4aa2a feat(logs-viewer): implement saved view functionality and refactor related handlers 2026-03-12 18:18:24 +00:00
Nawaz Dhandala
144826ff84 feat(logs-viewer): add saved views functionality with toolbar enhancements
- 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.
2026-03-12 17:36:04 +00:00
Nawaz Dhandala
4c620a2600 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-03-12 16:57:25 +00:00
Nawaz Dhandala
9786e46a2b refactor(Logs.md): update log management context and completed features for clarity 2026-03-12 16:57:21 +00:00
Simon Larsen
22c89b7579 Merge pull request #2345 from OneUptime/snyk-fix-8ed94913d5b7c146b3ac6c4b38e8fee5
[Snyk] Security upgrade multer from 2.0.2 to 2.1.1
2026-03-12 15:42:21 +00:00
Nawaz Dhandala
9a08c945bd chore(VERSION): update version to 10.0.28 2026-03-12 15:23:15 +00:00
Nawaz Dhandala
d79588e02c refactor(FacetSection): format imports and improve line length readability 2026-03-12 15:22:34 +00:00
Nawaz Dhandala
9ae8dc2266 feat(FacetSection): add search functionality to filter displayed values
feat(LogAggregationService): update default facet limit to 500
feat(TelemetryAPI): increase default limit for metrics attributes to 500
2026-03-12 15:21:32 +00:00
Nawaz Dhandala
4d5bb32ad6 chore(VERSION): update version to 10.0.27 2026-03-12 15:13:33 +00:00
Nawaz Dhandala
375b2e67d0 refactor(LogsViewer, DataMigrations, Routes): convert comments to block comments for clarity 2026-03-12 15:13:21 +00:00
Nawaz Dhandala
7e48bbb206 feat(DataMigrations): remove FixTokenBFIndexesAndAddCodecs migration and update migration order 2026-03-12 15:11:42 +00:00
Nawaz Dhandala
737f053347 feat(Statement): add NotEqual condition to value serialization 2026-03-12 14:27:09 +00:00
Nawaz Dhandala
20594be771 feat(DataRetention): add monitor metric retention settings and migration 2026-03-12 13:59:22 +00:00
Nawaz Dhandala
890e0a836c feat(MonitorLog): implement dynamic log retention based on GlobalConfig and remove old cron jobs 2026-03-12 13:46:20 +00:00
Nawaz Dhandala
6fb4e24808 feat(DataMigrations): fix retentionDate for existing rows in multiple tables 2026-03-12 13:32:54 +00:00
Nawaz Dhandala
3ba5af0f95 chore: update version to 10.0.26 2026-03-12 13:27:08 +00:00
Nawaz Dhandala
a6058c6e65 refactor: clean up code formatting and comments across multiple files 2026-03-12 13:26:57 +00:00
Nawaz Dhandala
dfc2755551 feat(DataMigrations): add migration to fix tokenbf_v1 indexes and apply ZSTD codecs 2026-03-12 13:12:38 +00:00
Nawaz Dhandala
1ff774684c feat(Logs): implement ClickHouse storage optimizations and telemetry data retention with TTL support 2026-03-12 11:59:32 +00:00
Nawaz Dhandala
28c4eeb6ff feat: Add retentionDate column and TTL support to telemetry models
- 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.
2026-03-12 11:54:26 +00:00
Nawaz Dhandala
4a566c7369 refactor(LogQueryToFilter): update comment formatting for severity normalization 2026-03-12 11:28:04 +00:00
Nawaz Dhandala
5ff9a8b75b chore(VERSION): bump version to 10.0.25 2026-03-12 11:26:40 +00:00
Nawaz Dhandala
46c9f36578 feat(Logs): add Phase 5 optimizations for ClickHouse storage and query performance 2026-03-12 11:26:10 +00:00
Nawaz Dhandala
981f609b84 feat(Nginx): update /otlp location block to remove trailing slash 2026-03-12 11:10:24 +00:00
Nawaz Dhandala
fa7bde4aca feat(LogsViewer): add service name resolution and improve value suggestions handling
feat(LogQueryToFilter): normalize severity values and enhance filter application logic
chore(config): update OpenTelemetry exporter endpoint and headers
2026-03-12 10:42:09 +00:00
Nawaz Dhandala
a8a9022ea2 chore(VERSION): bump version to 10.0.24 2026-03-12 10:05:12 +00:00
Nawaz Dhandala
2e903d82e5 Merge branch 'release' 2026-03-12 10:04:59 +00:00
Nawaz Dhandala
27ecf76254 refactor(LogAggregationService): improve formatting and logging level in authentication and service files 2026-03-12 10:04:45 +00:00
Nawaz Dhandala
a77c59a9bd feat(LogAggregationService): add validation for facet keys and improve SQL query construction 2026-03-12 09:02:34 +00:00
Simon Larsen
d48e40efac Merge pull request #2346 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-03-11 21:16:42 +00:00
Simon Larsen
b7412813fd Merge pull request #2349 from Eliaxie/fix/alert-without-monitor-notification
fix: Handle null monitor in workspace notification rules
2026-03-11 21:16:25 +00:00
Elia Maggioni
b93f4a9d7f fix: Handle null monitor in workspace notification rules
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.
2026-03-11 22:09:45 +01:00
Nawaz Dhandala
9df8513954 chore(release): bump version to 10.0.23 2026-03-11 19:51:53 +00:00
Nawaz Dhandala
bbd6bdac12 refactor(tests): improve formatting of makeAggregateBy function for better readability 2026-03-11 18:47:00 +00:00
Nawaz Dhandala
484dbabc3c fix(analytics): improve formatting and readability in input validation and error handling 2026-03-11 18:46:28 +00:00
simlarsen
989de0c811 chore: npm audit fix 2026-03-11 02:14:09 +00:00
Nawaz Dhandala
818f6a3788 test(aggregateBy): add input validation tests for aggregation parameters 2026-03-09 18:45:35 +00:00
Nawaz Dhandala
02e2a247c3 fix(analytics): validate aggregation types and column names in aggregateBy method 2026-03-09 18:32:23 +00:00
snyk-bot
599b7fdf7b fix: Common/package.json & Common/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-MULTER-15417528
2026-03-09 18:11:44 +00:00
Nawaz Dhandala
812e6ab6df fix(UUID): update UUID generation to use v4 for improved uniqueness 2026-03-09 18:06:30 +00:00
Nawaz Dhandala
dd4effa449 feat(markdown): integrate DOMPurify for enhanced security in Mermaid diagrams 2026-03-09 18:04:01 +00:00
Nawaz Dhandala
fed52fecd9 fix(logs): restructure LogsViewerToolbar layout for improved readability 2026-03-08 09:51:47 +00:00
Nawaz Dhandala
0ef5c7aa1e fix(authentication): hash reset password tokens for enhanced security 2026-03-08 09:49:17 +00:00
Nawaz Dhandala
ef05364de3 chore(version): bump version to 10.0.22 2026-03-08 09:41:22 +00:00
Nawaz Dhandala
924a107c5d fix(permissions): update tenantId condition for user global access permission checks 2026-03-08 09:41:04 +00:00
Nawaz Dhandala
781dda8c36 chore(version): bump version to 10.0.21 2026-03-07 21:45:01 +00:00
Nawaz Dhandala
61ba647668 fix(logs): format liveRequestInFlight initialization for better readability 2026-03-07 21:32:49 +00:00
Nawaz Dhandala
ecc77ad8f7 fix(types): update optional properties in LogSearchBarProps interface for clarity 2026-03-07 21:32:05 +00:00
Nawaz Dhandala
27828828d7 refactor(sandbox): update comments to clarify RCE prevention measures for Playwright methods 2026-03-07 18:50:20 +00:00
Nawaz Dhandala
e5ffada194 Merge branch 'better-logs' 2026-03-07 18:48:51 +00:00
Nawaz Dhandala
ea57608ca6 feat(api): add item validation and user ID checks in verification endpoints for UserCall, UserEmail, UserSMS, and UserWhatsApp 2026-03-07 18:44:27 +00:00
Nawaz Dhandala
4dc9542c2c fix(docs): remove redundant browser reference and clarify browser context usage in synthetic monitor documentation 2026-03-07 18:31:24 +00:00
Nawaz Dhandala
ce253975e5 feat(security): block Playwright methods to prevent RCE and limit sandbox exposure 2026-03-07 18:29:56 +00:00
Simon Larsen
ea83b4523d Merge pull request #2343 from OneUptime/better-logs
feat(logs): implement enhanced log filtering and aggregation
2026-03-07 18:20:32 +00:00
Simon Larsen
4b85a6bc38 Merge pull request #2342 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-03-07 18:20:04 +00:00
Nawaz Dhandala
3eafc54413 Refactor code for improved readability and consistency
- 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.
2026-03-07 18:18:33 +00:00
Nawaz Dhandala
72cea8148d feat(logs): add traceId and spanId filters to logs and update related components 2026-03-07 17:59:41 +00:00
Nawaz Dhandala
0188c01115 feat(logs): enhance LogSearchBar for improved suggestion handling and add formatYAxisTick for better histogram display 2026-03-07 14:01:37 +00:00
Nawaz Dhandala
4871342e55 feat(logs): add LogTimeRangePicker component and integrate time range selection in LogsViewer 2026-03-07 13:23:26 +00:00
Nawaz Dhandala
e30f3b4ef2 feat(logs): update histogram request to include active facet filters for severity and service IDs 2026-03-07 13:05:15 +00:00
Nawaz Dhandala
9bdff2e733 feat(logs): add field:value selection and autocomplete suggestions for log search 2026-03-07 13:01:35 +00:00
Nawaz Dhandala
f7bcf21030 feat(logs): enhance facet filter management to support multiple values per filter 2026-03-07 12:45:36 +00:00
Nawaz Dhandala
bf2c26169c feat(logs): add LogSearchHelp component for enhanced search syntax guidance 2026-03-07 12:39:22 +00:00
Nawaz Dhandala
fe883919c3 feat(logs): implement active filter management and UI components for enhanced log filtering 2026-03-07 12:25:33 +00:00
Nawaz Dhandala
76421d8691 refactor(logs): streamline LogsViewer and enhance HistogramTooltip styling 2026-03-07 11:07:03 +00:00
Nawaz Dhandala
de0c6881b7 refactor: update styles and layout for log viewer components 2026-03-07 10:53:22 +00:00
Nawaz Dhandala
43ac4a7ef1 feat(logs): Implement enhanced log management features
- 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.
2026-03-07 10:32:52 +00:00
simlarsen
38646fd811 chore: npm audit fix 2026-03-07 02:10:52 +00:00
Nawaz Dhandala
707bfd62e7 feat: enhance docker build caching with cache-from and cache-to options 2026-03-06 19:13:23 +00:00
Nawaz Dhandala
2f0e4c0196 chore: update version to 10.0.20 2026-03-06 18:13:16 +00:00
Nawaz Dhandala
a5e92d81cb Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-03-06 18:12:57 +00:00
Nawaz Dhandala
47c136a140 refactor: add getOwnPropertyDescriptor to sandbox proxies for enhanced property handling 2026-03-06 18:12:53 +00:00
Nawaz Dhandala
24278095d2 Merge branch 'master' into release 2026-03-06 15:58:30 +00:00
Nawaz Dhandala
a316a7668d chore: update version to 10.0.19 2026-03-06 15:58:08 +00:00
Nawaz Dhandala
d7efdf70b5 refactor: add type annotations for userTenantAccessPermission in GitHubAPI 2026-03-06 15:57:51 +00:00
Nawaz Dhandala
bc9f57c9f5 refactor: update GitHub installation URL to include redirect and home client URL 2026-03-06 15:54:38 +00:00
Nawaz Dhandala
37769f8640 fix: correct URL formatting for GitHub installation redirect 2026-03-06 15:47:30 +00:00
Nawaz Dhandala
aa26780ee3 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-03-06 15:41:36 +00:00
Nawaz Dhandala
d4f9791732 refactor: enhance GitHub API authentication and authorization flow 2026-03-06 15:41:08 +00:00
Nawaz Dhandala
3e42805fbf refactor: update iOS build configuration for OneUptimeOnCall 2026-03-06 13:48:43 +00:00
Nawaz Dhandala
d395a5aa26 refactor: update access message to include user-defined hostname 2026-03-06 13:46:19 +00:00
Nawaz Dhandala
d41e0f914c refactor: add user input for hostname configuration in installation script 2026-03-06 13:43:50 +00:00
Nawaz Dhandala
25a1b1f089 refactor: add random password generation for placeholder values in config.env 2026-03-06 13:42:35 +00:00
Nawaz Dhandala
5366c1f5b6 refactor: add environment configuration steps in installation script 2026-03-06 13:39:37 +00:00
Nawaz Dhandala
9a4a7c58d9 Merge branch 'master' into release 2026-03-06 13:34:44 +00:00
Nawaz Dhandala
adfb9a115c refactor: update environment variable loading in installation scripts 2026-03-06 13:34:35 +00:00
Nawaz Dhandala
101fa838ce chore: bump version to 10.0.19 2026-03-06 13:26:01 +00:00
Nawaz Dhandala
8e90f45142 refactor: enhance dependency installation process in installation script 2026-03-06 13:23:22 +00:00
Nawaz Dhandala
9d0afe0d36 refactor: update curl commands to use -sSL for silent and follow redirects 2026-03-06 13:21:55 +00:00
Nawaz Dhandala
7162c8fbca refactor: rename IPA file for consistent naming in GitHub release 2026-03-06 13:16:29 +00:00
Nawaz Dhandala
8903bac79e refactor: rename APK file for consistent naming in GitHub release 2026-03-06 13:13:34 +00:00
Nawaz Dhandala
0c023c835d refactor: remove unused Docker image from deployment matrix in release workflow 2026-03-06 11:42:26 +00:00
Nawaz Dhandala
de04babe79 refactor: update NGINX configuration to use rewrite rules for API endpoints 2026-03-06 10:28:53 +00:00
Nawaz Dhandala
7af8f18b9d refactor: update NGINX resolver configuration to use dynamic DNS resolver 2026-03-06 08:59:21 +00:00
Nawaz Dhandala
be03aea22b Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-03-06 08:45:14 +00:00
Nawaz Dhandala
c1b5a731ce refactor: add service definitions for app, home, telemetry, and worker in Helm templates 2026-03-06 08:44:52 +00:00
Nawaz Dhandala
52dc185d40 refactor: replace upstream server definitions with dynamic backend variables in Nginx configuration 2026-03-06 08:41:17 +00:00
Nawaz Dhandala
fb8f1f55a9 refactor: update docker-compose for billing-enabled deployments and adjust service startup commands 2026-03-06 08:28:34 +00:00
Nawaz Dhandala
b177d9c5f3 refactor: add error handling to status-check.sh script 2026-03-06 08:08:50 +00:00
Simon Larsen
54d1f1cee4 Merge pull request #2341 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-03-05 21:00:55 +00:00
Nawaz Dhandala
f974e85ee3 refactor: remove deprecated Admin Dashboard status check from status-check.sh 2026-03-05 20:55:52 +00:00
Nawaz Dhandala
0fa6b0925a refactor: expand language support in syntax highlighting for blog post code blocks 2026-03-05 19:18:44 +00:00
Nawaz Dhandala
e9e739a34d refactor: remove deprecated service worker file for OneUptime Dashboard 2026-03-05 19:09:58 +00:00
Nawaz Dhandala
7b468cc431 refactor: update service worker generation timestamp and cache version in sw.js; improve protobuf handling in OpenTelemetryRequestMiddleware 2026-03-05 18:10:31 +00:00
Nawaz Dhandala
2e07165c27 refactor: enhance protobuf handling in OpenTelemetryRequestMiddleware 2026-03-05 16:17:10 +00:00
Nawaz Dhandala
ac94cd5fae refactor: update storage class configuration in ci-values.yaml and index.sh 2026-03-05 15:24:24 +00:00
Nawaz Dhandala
9eedec679f refactor: optimize metadata handling in buildTelemetryRequest function 2026-03-05 13:20:48 +00:00
Nawaz Dhandala
2c3d8dcd84 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-03-05 11:17:21 +00:00
Nawaz Dhandala
f3a06257c0 refactor: remove obsolete status check tests for ProbeIngest and IncomingRequestIngest 2026-03-05 11:17:18 +00:00
Nawaz Dhandala
94e509e417 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-03-05 11:16:46 +00:00
Nawaz Dhandala
171e44f413 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-03-05 11:15:19 +00:00
Nawaz Dhandala
e22bfa189d refactor: streamline status checks in the status-check script 2026-03-05 11:15:18 +00:00
Nawaz Dhandala
f01007c953 fix: standardize formatting and improve readability in GrpcServer.ts 2026-03-05 09:37:33 +00:00
Nawaz Dhandala
f9c90d7143 refactor: remove OpenTelemetry Collector and integrate telemetry service
- 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.
2026-03-05 09:36:11 +00:00
Nawaz Dhandala
88a280031b fix: update KinD cluster setup to ensure default StorageClass is available 2026-03-05 08:41:01 +00:00
simlarsen
8d6fd14078 chore: npm audit fix 2026-03-05 02:25:59 +00:00
Nawaz Dhandala
82c5169071 fix: standardize return statement formatting in monitor classes 2026-03-04 21:29:22 +00:00
Nawaz Dhandala
9444734e7f fix: handle AggregateError in monitors and return detailed failure responses 2026-03-04 21:28:03 +00:00
Nawaz Dhandala
dc8f5b8160 feat: enhance mermaid diagram wrapper to allow scrolling for large diagrams 2026-03-04 21:22:01 +00:00
Nawaz Dhandala
13dbbcad8a Merge branch 'release' of https://github.com/OneUptime/oneuptime into release 2026-03-04 21:17:59 +00:00
Nawaz Dhandala
acdecfea8d refactor: simplify findIndex logic in Docs feature and improve Markdown config declaration 2026-03-04 21:17:39 +00:00
Nawaz Dhandala
14c1b89af6 chore: update version to 10.0.18 2026-03-04 21:17:29 +00:00
Nawaz Dhandala
506e64c3a6 feat: add responsive mermaid diagram wrapper and TOC sidebar visibility toggle 2026-03-04 21:16:28 +00:00
Nawaz Dhandala
f4985c876b feat: enhance documentation layout and navigation
- 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.
2026-03-04 20:36:45 +00:00
Simon Larsen
eeaa6c9f41 Merge pull request #2340 from OneUptime/master
Release
2026-03-04 20:30:37 +00:00
Nawaz Dhandala
010ec39d8b fix: Change code block syntax highlighting from YAML to text in Webhook documentation 2026-03-04 20:10:09 +00:00
Nawaz Dhandala
787b1c79fe refactor: Enhance code block styling and add copy functionality for improved user experience 2026-03-04 20:06:20 +00:00
Nawaz Dhandala
d2f0fed6a7 feat: Implement caching mechanism for blog posts and clear cache functionality 2026-03-04 19:55:51 +00:00
Nawaz Dhandala
58d198fc57 fix: Increase top padding for improved spacing in blog post content 2026-03-04 19:50:18 +00:00
Nawaz Dhandala
c9b201a1bd fix: Adjust main headline font size for better readability in Blog CTA 2026-03-04 19:47:19 +00:00
Nawaz Dhandala
e63be526cc fix: Update highlight.js script loading to ensure proper syntax highlighting functionality 2026-03-04 19:44:28 +00:00
Nawaz Dhandala
cf5f51985f refactor: Update font loading and styles to use Google Fonts CDN, streamline CSS, and enhance layout 2026-03-04 19:37:25 +00:00
Nawaz Dhandala
9da5877209 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-03-04 19:30:09 +00:00
Nawaz Dhandala
fd44d6ffca fix: Remove obsolete workflow-docker-image-deploy job from test-release.yaml 2026-03-04 19:29:45 +00:00
Simon Larsen
4f3f578098 Merge pull request #2339 from OneUptime/claude/suspicious-elbakyan
fix: Restore Tailwind CDN for docs with improved CLS prevention
2026-03-04 19:29:33 +00:00
Nawaz Dhandala
35f3733070 fix: Restore Tailwind CDN for docs with improved CLS prevention
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>
2026-03-04 19:26:42 +00:00
Nawaz Dhandala
502b52b5b1 fix: Refactor telemetry deployment to use included template for REGISTER_PROBE_KEY environment variable 2026-03-04 19:24:19 +00:00
Nawaz Dhandala
482003cb83 fix: Update service worker generation timestamp and Git SHA; remove obsolete accounts and status page configurations from Helm chart 2026-03-04 18:06:17 +00:00
Nawaz Dhandala
f386e5cd26 fix: Remove dashboard and adminDashboard configurations from values files and schema 2026-03-04 18:03:18 +00:00
Nawaz Dhandala
1243099971 fix: Remove obsolete workflow jobs from build, compile, and release YAML files 2026-03-04 17:47:40 +00:00
Nawaz Dhandala
6271436702 fix: Remove obsolete worktree for suspicious-elbakyan 2026-03-04 17:44:52 +00:00
Nawaz Dhandala
6c5e013fb5 fix: Adjust padding in CodeBlock component for improved layout 2026-03-04 17:43:26 +00:00
Nawaz Dhandala
5a52f85d3e fix: Add .claude/worktrees to .gitignore to prevent tracking of worktree files 2026-03-04 17:27:58 +00:00
Simon Larsen
554abbd34b Merge pull request #2338 from OneUptime/claude/suspicious-elbakyan
fix: Improve Core Web Vitals (LCP and CLS)
2026-03-04 14:50:28 +00:00
Nawaz Dhandala
83baa4d9c2 fix: Improve Core Web Vitals (LCP and CLS) for mobile and desktop
- 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>
2026-03-04 14:46:05 +00:00
Nawaz Dhandala
cf26ce657e fix: Update getQueueSize method to return combined queue sizes for worker and workflow 2026-03-04 14:02:39 +00:00
Nawaz Dhandala
75f456089b fix: Update workflow timeout configuration and remove deprecated workflow settings 2026-03-04 14:00:24 +00:00
Nawaz Dhandala
f04fdde6b4 fix: Remove unused server hostname variables to simplify configuration 2026-03-04 13:51:30 +00:00
Nawaz Dhandala
c5f04595e8 fix: Remove SERVER_WORKFLOW_HOSTNAME and related references to streamline configuration 2026-03-04 13:43:06 +00:00
Nawaz Dhandala
3cbe443862 Refactor workflow service and API components
- 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.
2026-03-04 13:39:25 +00:00
Nawaz Dhandala
07ba3779f2 fix: Correct path for generateServiceWorker import in generate-sw.js 2026-03-04 13:27:57 +00:00
Nawaz Dhandala
e3096af8c5 fix: Update path for Common dependency in multiple package.json files 2026-03-04 12:35:37 +00:00
Nawaz Dhandala
f7b969e7b1 fix: Increase max attempts for waiting on pods to be ready from 50 to 90 2026-03-04 12:18:34 +00:00
Nawaz Dhandala
5a72742fb9 style: Refactor legal route handlers for improved readability 2026-03-04 12:04:43 +00:00
Simon Larsen
9f0d645e5a Merge pull request #2337 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-03-04 11:42:48 +00:00
Nawaz Dhandala
f92dce41e7 Merge branch 'master' into chore/npm-audit-fix
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>
2026-03-04 11:42:33 +00:00
Simon Larsen
d059a2f21a Merge pull request #2336 from OneUptime/ingest-merge
Ingest merge
2026-03-04 11:40:56 +00:00
Nawaz Dhandala
5d254f5ca3 fix: Add probe ID check to return queue size 0 if probe not registered 2026-03-04 11:39:53 +00:00
Nawaz Dhandala
8a9228dd4a feat: Add legal compliance pages for GAMP 5, Annex 11, ISO 9001, GxP Cloud, and CSA STAR 2026-03-04 11:17:33 +00:00
Nawaz Dhandala
3a5be4bd71 feat: Add 21 CFR Part 11 legal page and update navigation links 2026-03-04 11:08:49 +00:00
Nawaz Dhandala
7d18b0f7a3 Merge branch 'master' of https://github.com/OneUptime/oneuptime into ingest-merge 2026-03-04 11:00:34 +00:00
Nawaz Dhandala
2a5a0f972a fix: Implement sandbox proxy creation and unwrapping for secure code execution 2026-03-04 09:32:09 +00:00
Nawaz Dhandala
3bad62b244 fix: Refactor imports and improve formatting in notification subscriber services 2026-03-04 08:55:33 +00:00
Nawaz Dhandala
c8ae23497e fix: Refactor status page resource retrieval to use findByMonitors method 2026-03-04 08:54:23 +00:00
simlarsen
83c743c788 chore: npm audit fix 2026-03-04 02:16:10 +00:00
Nawaz Dhandala
172cdf24f4 refactor: Update paths to use FeatureSet structure for accounts, dashboards, and status pages 2026-03-03 22:01:29 +00:00
Nawaz Dhandala
a53912ceb8 Refactor code structure for improved readability and maintainability 2026-03-03 22:01:17 +00:00
Nawaz Dhandala
d823f81e69 refactor: Enhance MCP server initialization and routing with CORS support 2026-03-03 21:33:55 +00:00
Nawaz Dhandala
a7782564a2 refactor: Update MCP endpoint to use prefix directly instead of appending '/mcp' 2026-03-03 21:01:32 +00:00
Nawaz Dhandala
824803e6b0 refactor: Remove last updated date from Data Processing Agreement 2026-03-03 20:46:06 +00:00
Nawaz Dhandala
acaab0fb1a Add documentation views and partials for error handling and content display
- 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.
2026-03-03 19:45:46 +00:00
Nawaz Dhandala
63f2a6138b refactor: Remove unused Dockerfile templates and clean up workflow configurations 2026-03-03 19:25:33 +00:00
Nawaz Dhandala
948e276923 Merge branch 'master' into ingest-merge 2026-03-03 18:30:54 +00:00
Nawaz Dhandala
f7705e5e6f refactor: Enhance type safety by specifying types for authData and staticHandler 2026-03-03 18:28:55 +00:00
Nawaz Dhandala
c9c1f9d93e refactor: Improve code readability by formatting imports and simplifying async function syntax 2026-03-03 18:25:47 +00:00
Nawaz Dhandala
a69ae87dfc fix: Add IsRequestTimeout to Ping Monitor filter validation 2026-03-03 18:10:51 +00:00
Nawaz Dhandala
3326f9a1f6 refactor: Remove unused hostname variables from environment configuration and docker-compose 2026-03-03 18:01:37 +00:00
Nawaz Dhandala
f24c181658 fix: Remove unnecessary undefined type from timeout option in runCodeInSandbox 2026-03-03 18:00:39 +00:00
Nawaz Dhandala
3e5cd57082 Refactor frontend build and deployment scripts; consolidate services into a single app
- 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.
2026-03-03 17:51:47 +00:00
Nawaz Dhandala
4e8fde3b23 feat: Integrate frontend services into Docker setup and add build scripts 2026-03-03 17:51:13 +00:00
Simon Larsen
95942725aa Merge pull request #2334 from OneUptime/ingest-merge
Ingest merge
2026-03-03 15:29:20 +00:00
Nawaz Dhandala
72af43b323 fix: Remove home service from docker-compose.yml 2026-03-03 14:59:34 +00:00
Nawaz Dhandala
2f85b9f4e3 fix: Refactor logger info statement for OneUptime API Service initialization and streamline FedRAMP route definition 2026-03-03 14:47:54 +00:00
Nawaz Dhandala
c309fafdb6 Remove IsolatedVM service and related configurations from the project
- 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.
2026-03-03 12:25:31 +00:00
Nawaz Dhandala
a6f2e83c72 feat: Add FedRAMP legal section and corresponding view 2026-03-03 12:12:31 +00:00
Nawaz Dhandala
ac388aded1 chore: update @modelcontextprotocol/sdk to version 1.27.1 2026-03-03 11:44:50 +00:00
Nawaz Dhandala
9d457b8c9f fix: Update address in Data Processing Agreement to reflect new location 2026-03-03 11:38:49 +00:00
Nawaz Dhandala
560f45f3cc feat(MCP): Introduce MCP types, logger, and integration into the application
- 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.
2026-03-03 11:34:46 +00:00
Nawaz Dhandala
d617b73a5d refactor: Update monitor type check to use MonitorTypeHelper for probeable monitors 2026-03-03 11:24:01 +00:00
Simon Larsen
a8a8cdd295 Merge pull request #2332 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-03-03 08:35:30 +00:00
simlarsen
8aa0723b2a chore: npm audit fix 2026-03-03 02:29:31 +00:00
Nawaz Dhandala
bc6c81aae9 refactor: Remove unused probe-2 service from docker-compose 2026-03-02 21:56:41 +00:00
Nawaz Dhandala
41704fde99 refactor: Improve formatting of ProbeIngest and IncomingRequestIngest route definitions 2026-03-02 21:26:28 +00:00
Nawaz Dhandala
7935148ea6 refactor: Remove obsolete debug configurations for ProbeIngest and ServerMonitorIngest 2026-03-02 21:11:27 +00:00
Nawaz Dhandala
dc59d59811 feat: Add telemetry API for probe and server monitor ingestion
- 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.
2026-03-02 21:02:24 +00:00
Nawaz Dhandala
5695490b3f chore: Bump version to 10.0.17 2026-03-02 19:54:32 +00:00
Nawaz Dhandala
888b638d71 refactor: Simplify telemetry monitor interval handling by removing unnecessary checks 2026-03-02 19:48:26 +00:00
Nawaz Dhandala
9cfc5ea994 refactor: Update browser executable path handling to use dynamic browsers path based on OS 2026-03-02 10:45:35 +00:00
Nawaz Dhandala
aa7788ddfa refactor: Enhance type annotations for wrapped timeout and interval functions for better clarity 2026-03-02 10:36:36 +00:00
Nawaz Dhandala
b889ff6edd refactor: Simplify logger.debug call in metrics endpoint for cleaner code 2026-03-02 10:34:24 +00:00
Nawaz Dhandala
5ad6d6736a feat: Enhance VMRunner with improved timeout handling and resource cleanup 2026-03-02 10:30:47 +00:00
Nawaz Dhandala
f7bb93e439 refactor: Remove SyntheticMonitorSemaphore and SyntheticMonitorWorkerPool for improved code simplicity 2026-03-02 10:25:57 +00:00
Nawaz Dhandala
4598f0d751 feat: Implement VMRunner for executing code in isolated VM with enhanced logging and context management
refactor: Update SyntheticMonitor to utilize VMRunner for script execution and remove legacy worker implementation
chore: Bump version to 10.0.16
2026-03-02 10:22:18 +00:00
Nawaz Dhandala
2a52094766 refactor: Improve code formatting and comments in SyntheticMonitor execution logic 2026-03-01 14:02:07 +00:00
Nawaz Dhandala
e6a756b515 feat: Enhance synthetic monitor execution with retry logic and detailed skip reasons 2026-03-01 13:58:15 +00:00
Nawaz Dhandala
c50f92b330 chore: Bump version to 10.0.15 2026-03-01 13:26:01 +00:00
Nawaz Dhandala
9512487b73 refactor: Improve code comments for clarity in Metrics and SyntheticMonitorWorker 2026-03-01 13:25:35 +00:00
Nawaz Dhandala
7b6f3eeb3f feat: Enhance metrics endpoint to include synthetic monitor semaphore status for better scaling insights 2026-03-01 13:24:50 +00:00
Nawaz Dhandala
667793bf0a fix: Update memory allocation for monitors and enhance browser health checks 2026-03-01 13:13:50 +00:00
Nawaz Dhandala
11401fdd72 refactor: Simplify code formatting and improve readability across multiple files 2026-03-01 12:59:29 +00:00
Nawaz Dhandala
991a8a6f97 fix lint 2026-03-01 12:48:17 +00:00
Nawaz Dhandala
098a4e624f Probe fixes 2026-03-01 12:41:42 +00:00
Nawaz Dhandala
449ee826d4 feat: Enhance SyntheticMonitor to handle infrastructure issues gracefully and prevent unnecessary status flapping 2026-02-28 13:30:08 +00:00
Nawaz Dhandala
9359c31fd5 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-28 09:15:19 +00:00
Nawaz Dhandala
0ac0fd8f92 feat: Update MarkdownEditor and TextArea components for improved styling and functionality 2026-02-28 09:12:33 +00:00
Simon Larsen
7fd14793c4 Merge pull request #2329 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-28 09:07:28 +00:00
simlarsen
217218109a chore: npm audit fix 2026-02-28 02:07:25 +00:00
Nawaz Dhandala
a33622f851 feat: Refactor SyntheticMonitor to utilize worker pool and semaphore for improved execution management 2026-02-27 21:19:25 +00:00
Nawaz Dhandala
43338813cb feat: Update SyntheticMonitor to use runCodeInNodeVM for script execution 2026-02-27 16:44:18 +00:00
Nawaz Dhandala
70e273349d Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-27 16:40:29 +00:00
Nawaz Dhandala
d797e46f27 feat: Refactor SyntheticMonitor to use Playwright for browser sessions and enhance error handling 2026-02-27 16:40:15 +00:00
Simon Larsen
28828b02d0 Merge pull request #2330 from OneUptime/syn-semaphore
Syn semaphore
2026-02-27 16:32:40 +00:00
Nawaz Dhandala
8fbc003a30 feat: Enhance runExecution function with proactive browser health checks to prevent zombie instances 2026-02-27 14:02:50 +00:00
Nawaz Dhandala
ac7fea3a4b feat: Add logging capability to SyntheticMonitorWorker and enhance WorkerToParentMessage interface 2026-02-27 13:48:31 +00:00
Nawaz Dhandala
ac6b87ae36 feat: Enhance sendMessage function with error handling for IPC channel closure 2026-02-27 13:33:47 +00:00
Nawaz Dhandala
d69fabeef1 feat: Implement worker retirement logic in SyntheticMonitorWorkerPool and enhance safety timeout handling in SyntheticMonitorWorker 2026-02-27 13:29:31 +00:00
Nawaz Dhandala
65cbfd9bcb feat: Enhance SyntheticMonitorWorker with proxy handling and execution safety timer 2026-02-27 13:26:17 +00:00
Nawaz Dhandala
b114ce115d feat: Implement context and page creation with retry logic in SyntheticMonitorWorker 2026-02-27 13:19:34 +00:00
Nawaz Dhandala
9614084d12 feat: Refactor SyntheticMonitor to use SyntheticMonitorWorkerPool for execution management and enhance semaphore handling 2026-02-27 13:12:01 +00:00
Nawaz Dhandala
16f29a813c feat: Implement WebAuthn challenge handling and storage for user authentication 2026-02-27 13:10:22 +00:00
Nawaz Dhandala
1557ff0ac6 feat: Add RSS feed links to blog list and list by tag pages for improved content accessibility 2026-02-27 12:58:23 +00:00
Nawaz Dhandala
9e165fd600 feat: Implement SyntheticMonitorSemaphore to manage concurrent monitor executions and prevent duplicates 2026-02-27 12:50:24 +00:00
Nawaz Dhandala
95a679cab3 feat: Add RSS feed generation for blog and tags, and update views to include RSS links 2026-02-27 12:42:48 +00:00
Nawaz Dhandala
6d2366f195 feat: Remove unnecessary saveRequestOptions from Upgrade component formProps 2026-02-27 12:31:52 +00:00
Nawaz Dhandala
58a33c4c2d feat: Reduce max old space size for worker processes and improve browser cleanup logic 2026-02-27 12:25:22 +00:00
Nawaz Dhandala
ee2e77df8f feat: Add __esModule exports to mocked modules for consistency in tests 2026-02-27 12:10:41 +00:00
Nawaz Dhandala
aec64be646 feat: Update collapsible code block threshold from 20 to 100 lines for improved usability 2026-02-26 22:19:34 +00:00
Nawaz Dhandala
4f21865d6a feat: Simplify CodeBlock rendering in MarkdownViewer for cleaner code 2026-02-26 22:13:48 +00:00
Nawaz Dhandala
624176960f feat: Remove breadcrumb navigation from blog post template for cleaner layout 2026-02-26 22:02:25 +00:00
Nawaz Dhandala
adf399a89b feat: Improve breadcrumb navigation styling and structure for better user experience 2026-02-26 21:57:54 +00:00
Nawaz Dhandala
84c2d3fa22 feat: Enhance blog post functionality with breadcrumb schema, image lightbox, time remaining indicator, and collapsible code blocks 2026-02-26 21:55:53 +00:00
Nawaz Dhandala
921f1f1f0d feat: Add copy button and language labels to code blocks in blog posts 2026-02-26 20:28:00 +00:00
Nawaz Dhandala
6dc225409d feat: Update syntax highlighting theme to VS Code dark for improved code readability 2026-02-26 20:21:59 +00:00
Nawaz Dhandala
fcc84bfe72 refactor: Simplify truncation logic for value string in checkEqualToOrNotEqualTo method 2026-02-26 19:26:46 +00:00
Nawaz Dhandala
e2ff553eab feat: Truncate long values in criteria filter checks for better readability 2026-02-26 19:25:04 +00:00
Nawaz Dhandala
d85107a836 chore: Bump version to 10.0.14 2026-02-26 18:34:58 +00:00
Nawaz Dhandala
5d8c7e5c19 feat: Preserve parent execArgv while limiting worker heap size in SyntheticMonitor 2026-02-26 18:27:25 +00:00
Nawaz Dhandala
ad9e937b9e feat: Implement child process termination logic to prevent leaks in SyntheticMonitor 2026-02-26 18:25:46 +00:00
Nawaz Dhandala
43d4854917 feat: Enhance timeout handling in SyntheticMonitor and Worker for better stability 2026-02-26 18:21:15 +00:00
Nawaz Dhandala
8f5f982786 feat: Add service version and environment to telemetry resource 2026-02-26 18:12:12 +00:00
Nawaz Dhandala
4264311122 chore: Bump version to 10.0.13 2026-02-26 15:05:53 +00:00
Nawaz Dhandala
d931ae4ee7 refactor: Simplify destructuring in CategoryFilterBar, AttributeTable, and StackFrameViewer components 2026-02-26 14:51:23 +00:00
Nawaz Dhandala
3880e6f51a Merge branch 'exception-improvements' 2026-02-26 14:40:17 +00:00
Nawaz Dhandala
91466a465f feat: Add support for looping over arrays in incident alert templating with examples 2026-02-26 14:39:50 +00:00
Simon Larsen
d6119671bb Merge pull request #2328 from OneUptime/exception-improvements
Exception improvements
2026-02-26 14:38:27 +00:00
Nawaz Dhandala
3f0c09dd70 feat: Implement expandEachLoops and replaceLoopVariables methods for enhanced template processing 2026-02-26 14:36:35 +00:00
Nawaz Dhandala
7e0b864767 feat: Refactor StackFrameViewer to enhance frame display, add view mode toggle, and improve raw stack trace handling 2026-02-26 14:32:35 +00:00
Nawaz Dhandala
c27d91cade feat: Enhance BreadcrumbTimeline with event categorization, filtering, and improved display attributes 2026-02-26 14:24:49 +00:00
Nawaz Dhandala
25b99b5979 feat: Remove unnecessary peer dependencies from package-lock.json 2026-02-26 14:08:13 +00:00
Nawaz Dhandala
9167769135 feat: Improve code formatting and descriptions in ExceptionInstance, ExceptionDetail, and related components 2026-02-26 13:48:42 +00:00
Nawaz Dhandala
a6642ac1b7 feat: Add migration for firstSeenInRelease, lastSeenInRelease, and environment columns in TelemetryException 2026-02-26 13:20:33 +00:00
Nawaz Dhandala
c80a464616 feat: Update TelemetryException model to track first and last seen release versions 2026-02-26 13:16:47 +00:00
Nawaz Dhandala
3627fe54fe feat: Add migration to include release, environment, and parsedFrames columns in ExceptionInstance 2026-02-26 13:11:59 +00:00
Nawaz Dhandala
ef9d99dd2b feat: Enhance exception handling with release and environment tracking
- 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.
2026-02-26 13:04:07 +00:00
Simon Larsen
8dd48350b6 Merge pull request #2326 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-26 12:35:43 +00:00
Nawaz Dhandala
e6c85f0fa2 chore: update version to 10.0.12 2026-02-26 11:30:39 +00:00
Nawaz Dhandala
feca7fa078 refactor: simplify condition checks for RequestBody, RequestHeader, and RequestHeaderValue 2026-02-26 11:20:44 +00:00
simlarsen
161a97612a chore: npm audit fix 2026-02-26 02:25:51 +00:00
Nawaz Dhandala
15916be15c chore: update version to 10.0.11 2026-02-25 11:35:24 +00:00
Nawaz Dhandala
2bc6c3af9c Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-25 11:25:09 +00:00
Nawaz Dhandala
ea77dbd2f6 feat: enhance Chromium and Firefox stability arguments for memory optimization in containerized environments 2026-02-25 11:25:06 +00:00
Nawaz Dhandala
06e784684e fix: enhance error handling for Axios timeout and network errors 2026-02-25 09:37:23 +00:00
Nawaz Dhandala
5a11df9d32 chore: update version to 10.0.10 2026-02-25 09:36:45 +00:00
Nawaz Dhandala
483a3eace8 feat: add axios and crypto imports to SyntheticMonitorWorker for enhanced functionality 2026-02-25 09:36:01 +00:00
Nawaz Dhandala
bd06418a00 Refactor code structure and remove redundant sections for improved readability and maintainability 2026-02-25 09:00:11 +00:00
Nawaz Dhandala
b741c61e7e feat: update iOS screenshots for iPhone 17 Pro 2026-02-24 17:28:04 +00:00
Nawaz Dhandala
6e183a9ebd Refactor code structure for improved readability and maintainability 2026-02-24 17:20:42 +00:00
Nawaz Dhandala
14c235dcd8 feat: add versionCode to Android configuration in app.json 2026-02-24 14:44:37 +00:00
Nawaz Dhandala
09e13c5203 feat: update build and submission scripts for Android and iOS in package.json 2026-02-24 14:40:05 +00:00
Nawaz Dhandala
62cd8656d4 feat: change app orientation to default in app.json 2026-02-24 11:55:01 +00:00
Nawaz Dhandala
1c01234ac2 feat: enable edge-to-edge display for Android app 2026-02-24 11:53:04 +00:00
Nawaz Dhandala
c089976147 feat: add build and submission scripts for Android and iOS in package.json 2026-02-24 11:38:20 +00:00
Nawaz Dhandala
06d29af6e1 feat: implement user-friendly error handling for login process 2026-02-24 11:17:55 +00:00
Nawaz Dhandala
4923938753 feat: add iOS app publishing workflow to App Store 2026-02-24 10:53:22 +00:00
Nawaz Dhandala
5a4dcdc4ec Merge branch 'master' into release 2026-02-24 10:46:25 +00:00
Nawaz Dhandala
2b38b8ee32 chore: bump version to 10.0.9 2026-02-24 10:46:19 +00:00
Nawaz Dhandala
56cc8befba feat: format ScrollView component for improved readability in MyOnCallPoliciesScreen 2026-02-24 10:45:37 +00:00
Nawaz Dhandala
665f1d28d0 feat: enhance notification permission request for iOS with critical alerts and logging 2026-02-24 09:55:34 +00:00
Nawaz Dhandala
950dcce81f feat: adjust justifyContent style in SettingsRow for improved layout consistency 2026-02-24 09:51:50 +00:00
Nawaz Dhandala
aa29bb07da feat: add contentInsetAdjustmentBehavior to ScrollView in MyOnCallPoliciesScreen and SettingsScreen for improved layout handling 2026-02-24 09:50:37 +00:00
Nawaz Dhandala
263d979eda feat: enhance SettingsScreen layout and server URL display for improved user experience 2026-02-24 09:49:15 +00:00
Nawaz Dhandala
1be62c6b8b feat: enhance SettingsRow to support valueBelowLabel for improved UI 2026-02-24 09:43:58 +00:00
Nawaz Dhandala
501494f558 feat: wrap content in ScrollView for Alerts and Incidents screens 2026-02-24 09:41:21 +00:00
Nawaz Dhandala
1497106fbb feat: update iOS and Android splash screen configurations in app.json 2026-02-24 09:32:44 +00:00
Nawaz Dhandala
fc211b6830 Merge branch 'release' of https://github.com/OneUptime/oneuptime into release 2026-02-24 08:19:46 +00:00
Nawaz Dhandala
bbb0452c03 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-24 08:19:36 +00:00
Nawaz Dhandala
f6bea83ddf chore: bump version to 10.0.8 2026-02-24 08:19:32 +00:00
Nawaz Dhandala
ba5647a7f5 feat: add HTML escaping for code snippets in Markdown renderer 2026-02-24 08:19:01 +00:00
Simon Larsen
789321ae1b Merge pull request #2322 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-24 07:52:51 +00:00
Simon Larsen
9d508cfc0d Merge pull request #2323 from OneUptime/master
Release
2026-02-24 07:52:41 +00:00
Nawaz Dhandala
07f86730fb chore: clean up code formatting and improve readability across multiple files 2026-02-24 07:38:56 +00:00
simlarsen
125f0e9d35 chore: npm audit fix 2026-02-24 02:29:41 +00:00
Nawaz Dhandala
7764aac696 chore: remove unused provider type dropdown from ExternalStatusPageMonitorStepForm and MonitorStep 2026-02-23 19:44:18 +00:00
Nawaz Dhandala
9c5ed699cb chore: update fast-xml-parser to version 5.3.7 and add missing dependencies in package-lock.json 2026-02-23 19:41:33 +00:00
Nawaz Dhandala
3f166ac8e1 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-23 19:37:50 +00:00
Simon Larsen
0c99bd18db Merge pull request #2318 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-23 19:37:31 +00:00
Nawaz Dhandala
4b77f4627a chore: resolve merge conflict - accept deletion of APIReference/package-lock.json 2026-02-23 19:37:11 +00:00
Nawaz Dhandala
45e040ca34 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-23 19:35:49 +00:00
Nawaz Dhandala
c6ab306a08 refactor: enhance MonitorCriteriaInstance and MonitorMetricType to support additional monitor types 2026-02-23 19:35:00 +00:00
Nawaz Dhandala
14cd9d249f feat: Add External Status Page Monitor functionality
- 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.
2026-02-23 19:20:04 +00:00
Nawaz Dhandala
83149665e8 refactor: streamline Axios response handling and error parsing in VMRunner 2026-02-23 19:16:56 +00:00
Nawaz Dhandala
c2574d52da feat: extend crypto operations in VMRunner with randomUUID and randomInt 2026-02-23 19:03:58 +00:00
Simon Larsen
40efa99864 Merge pull request #2320 from OneUptime/api-ref-refactor
Api ref refactor
2026-02-23 18:36:56 +00:00
Nawaz Dhandala
1ede78e669 fix: update proxy_pass paths for documentation routes 2026-02-23 18:16:24 +00:00
Nawaz Dhandala
c3875137a5 Remove Alert Suppression Documentation and Migration Plans
- Deleted UI implementation document for Alert Suppression.
- Removed migration plan detailing database changes for Alert Suppression.
- Eliminated README file summarizing Alert Suppression implementation.
2026-02-23 18:14:55 +00:00
Nawaz Dhandala
b1ed2c00c4 Add documentation views and partials for error handling and content display
- 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.
2026-02-23 18:14:15 +00:00
simlarsen
3a379fb87c chore: npm audit fix 2026-02-23 02:33:07 +00:00
Nawaz Dhandala
1809a6f726 refactor: remove APIReference from nodemon watch and docker-compose volumes 2026-02-22 13:46:44 +00:00
Nawaz Dhandala
3e48478b4f Add sidenav partial for API reference documentation 2026-02-22 13:40:51 +00:00
Nawaz Dhandala
8ba6d5d058 refactor: remove SelfSignedSSL utility class 2026-02-22 09:18:16 +00:00
Nawaz Dhandala
d75e7f8d10 feat: add hostname and IP validation in DnsMonitorUtil 2026-02-22 09:15:56 +00:00
Nawaz Dhandala
b23236e85f chore: update version to 10.0.7 2026-02-22 08:58:05 +00:00
Nawaz Dhandala
2fe2d2c614 refactor: improve code formatting and comment clarity in NetworkPathMonitor and SyntheticMonitorWorker 2026-02-22 08:57:49 +00:00
Nawaz Dhandala
f2cce35a04 feat: enhance NetworkPathMonitor with destination validation and execFile usage 2026-02-22 08:56:30 +00:00
Nawaz Dhandala
93cead93fd Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-21 20:19:52 +00:00
Nawaz Dhandala
de2a1b463e feat: enhance error handling in SyntheticMonitor and add IPC flush timeout 2026-02-21 20:19:50 +00:00
Simon Larsen
88871cac78 Merge pull request #2314 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-21 15:43:11 +00:00
Nawaz Dhandala
39bf5da168 feat: handle SSO authorization exceptions in on-call policy fetch 2026-02-21 13:28:37 +00:00
Nawaz Dhandala
23d2341051 feat: filter projects based on SSO authentication before fetching on-call assignments 2026-02-21 13:09:55 +00:00
Nawaz Dhandala
c6d13d3647 feat: replace Text component with MarkdownContent for alert and incident descriptions 2026-02-21 12:49:09 +00:00
Nawaz Dhandala
1011f0704e chore: clean up code structure and remove unused code blocks 2026-02-21 12:45:54 +00:00
simlarsen
5ff6942b93 chore: npm audit fix 2026-02-21 02:14:33 +00:00
Nawaz Dhandala
93eff373a6 refactor: improve formatting of SSO token refresh effect in ProjectsScreen 2026-02-20 22:35:35 +00:00
Nawaz Dhandala
2fbc1b426d refactor: update comments for clarity and improve code formatting across multiple files 2026-02-20 22:30:17 +00:00
Nawaz Dhandala
288874be45 feat: add SSO authentication check and display warning for unauthenticated projects in HomeScreen 2026-02-20 22:29:04 +00:00
Nawaz Dhandala
47717fff17 feat: enhance ProjectsScreen layout and improve SSO authentication button styling 2026-02-20 21:46:48 +00:00
Nawaz Dhandala
5f58043b38 feat: refactor SSO provider fetching functions to improve data parsing and handling 2026-02-20 21:39:40 +00:00
Nawaz Dhandala
2bce40d993 feat: enhance SSO provider selection UI with project grouping and improved styling 2026-02-20 21:33:08 +00:00
Nawaz Dhandala
81e8931c19 feat: add SSO provider selection screen and integrate with ProjectsScreen 2026-02-20 21:23:40 +00:00
Nawaz Dhandala
314ec696ce feat: implement fetchSSOProvidersForProject function and update ProjectsScreen to use it 2026-02-20 21:11:14 +00:00
Nawaz Dhandala
3e80060ff8 fix: convert AxiosHeaders to plain object to prevent invalid Cookie headers 2026-02-20 20:31:10 +00:00
Nawaz Dhandala
8e5f5fc854 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-20 16:34:37 +00:00
Nawaz Dhandala
5655d72fe1 fix: add headers property to request object in UserAuthorization tests 2026-02-20 16:34:33 +00:00
Simon Larsen
c4063fecdc Merge pull request #2313 from OneUptime/feat/ga4-cta-click-tracking
feat: Add GA4 CTA click tracking across all pages
2026-02-20 14:54:16 +00:00
Jamie Mallers
3e416c1679 feat: Add GA4 CTA click tracking across all 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.
2026-02-20 14:46:19 +00:00
Nawaz Dhandala
006c41472c fix: improve formatting of error message in browser launch retries 2026-02-20 13:05:54 +00:00
Nawaz Dhandala
f6d8761fe8 feat: enhance browser launch functionality with retry logic and timeout settings 2026-02-20 12:56:56 +00:00
Nawaz Dhandala
a9e16a96d3 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-20 12:48:59 +00:00
Nawaz Dhandala
387f948abe feat: add function to validate axios config against functions for security 2026-02-20 12:42:33 +00:00
Simon Larsen
e2ece21a8e Merge pull request #2312 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-20 09:38:58 +00:00
simlarsen
70651ace2e chore: npm audit fix 2026-02-20 02:27:39 +00:00
Nawaz Dhandala
3fd6582bc4 feat: implement SSO token management and projects screen for SSO authentication 2026-02-20 00:24:59 +00:00
Nawaz Dhandala
a6682624fc feat: add support for x-sso-tokens header to retrieve SSO tokens for mobile app flow 2026-02-20 00:24:38 +00:00
Nawaz Dhandala
7bb7837ec9 feat: implement SSO authentication flow and project management features 2026-02-20 00:23:29 +00:00
Nawaz Dhandala
f5d724a829 refactor: streamline SSO provider fetching logic and improve code readability 2026-02-19 23:29:57 +00:00
Nawaz Dhandala
b3081e109d feat: extend axios bridging to support additional HTTP methods and improve request handling 2026-02-19 23:25:45 +00:00
Nawaz Dhandala
4aafdb2d28 feat: enhance axios bridging to support additional HTTP methods and improved argument handling 2026-02-19 23:22:45 +00:00
Nawaz Dhandala
6afc99f54d feat: implement SSO login functionality and add SSO provider fetching 2026-02-19 23:20:15 +00:00
Nawaz Dhandala
b971482aaa feat: add additional Chromium arguments for stability in containerized environments 2026-02-19 23:12:14 +00:00
Nawaz Dhandala
00ff39a0cd refactor: update comment for pending notification processing in RootNavigator 2026-02-19 20:27:35 +00:00
Nawaz Dhandala
b14e319b66 feat: add push notification handling for incident episode creation 2026-02-19 20:12:56 +00:00
Nawaz Dhandala
43472de521 feat: add support for alert and incident number prefixes in notification templates 2026-02-19 20:10:55 +00:00
Nawaz Dhandala
cf72280ffa feat: enhance notification handling by processing pending notifications and improving navigation readiness 2026-02-19 20:08:22 +00:00
Nawaz Dhandala
049dd870d0 feat: add step to upload AAB as build artifact in Android deployment workflow 2026-02-19 19:45:57 +00:00
Nawaz Dhandala
02000e1a28 feat: add workflow for publishing Android app to Google Play Store 2026-02-19 19:43:31 +00:00
Nawaz Dhandala
32884930ae feat: add ITSAppUsesNonExemptEncryption key for iOS app compliance 2026-02-19 19:04:47 +00:00
Nawaz Dhandala
1a80b89fb8 feat: update app name and adaptive icon background color for improved branding 2026-02-19 18:50:09 +00:00
Nawaz Dhandala
ab83172d60 feat: preload Tailwind CSS and Google Fonts to improve loading performance and reduce layout shifts 2026-02-19 18:04:49 +00:00
Nawaz Dhandala
3a0d85174f feat: add native project generation for Android and iOS in MobileApp workflow 2026-02-19 17:44:24 +00:00
Nawaz Dhandala
6eee812701 feat: update font loading strategy and improve layout stability in documentation 2026-02-19 17:44:03 +00:00
Nawaz Dhandala
319093d3d8 feat: refactor axios instance creation with config merging support 2026-02-19 17:38:22 +00:00
Nawaz Dhandala
7b99129c2e feat: skip publishing if package version is already published on npm 2026-02-19 17:20:15 +00:00
Nawaz Dhandala
ee1996e961 feat: remove single-process argument from Chromium stability args 2026-02-19 17:03:27 +00:00
Nawaz Dhandala
d82d63b54a chore: bump version to 10.0.6 2026-02-19 15:48:43 +00:00
Nawaz Dhandala
5d2ab103ee Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-19 14:23:59 +00:00
Nawaz Dhandala
c57bda87ab feat: expose stability arguments and preferences in BrowserUtil for reuse 2026-02-19 14:21:56 +00:00
Nawaz Dhandala
54554d50c1 feat: add Firefox stability preferences for containerized environments 2026-02-19 14:19:42 +00:00
Nawaz Dhandala
3e6760dc7f feat: add Chromium stability arguments for containerized environments 2026-02-19 14:18:44 +00:00
Simon Larsen
c6d0200a98 Merge pull request #2309 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-19 14:08:10 +00:00
Nawaz Dhandala
fd9bd6ba6f feat: add stability arguments for headless browser in containerized environments
chore: bump version to 10.0.5
2026-02-19 08:45:12 +00:00
simlarsen
3348f44bf1 chore: npm audit fix 2026-02-19 02:31:47 +00:00
Nawaz Dhandala
b01ccf6318 chore: bump version to 10.0.4 2026-02-18 20:43:21 +00:00
Nawaz Dhandala
9a8b989e85 refactor: update comments for clarity and consistency in VMRunner 2026-02-18 20:43:14 +00:00
Nawaz Dhandala
f546126ee4 feat: add http/https Agent constructors for boundary serialization 2026-02-18 20:30:19 +00:00
Nawaz Dhandala
f903d0bea2 chore: bump version to 10.0.3 2026-02-18 20:15:12 +00:00
Nawaz Dhandala
32fcb9398c fix: improve waiting mechanism for @oneuptime/common availability on npm 2026-02-18 20:14:50 +00:00
Nawaz Dhandala
eee7b4cb67 chore: bump version to 10.0.2 2026-02-18 19:06:58 +00:00
Nawaz Dhandala
afb172c345 chore: bump version to 10.0.1 2026-02-18 18:41:04 +00:00
Nawaz Dhandala
1f9fad972c fix: remove expo-server-sdk dependency from package.json 2026-02-18 17:26:09 +00:00
Nawaz Dhandala
d9d9e70fd6 fix: remove NODE_AUTH_TOKEN environment variable from NPM publish step 2026-02-18 16:04:11 +00:00
Nawaz Dhandala
8b3912d369 feat: update NPM publish workflow to use NODE_AUTH_TOKEN and adjust CLI entry point 2026-02-18 16:03:32 +00:00
Nawaz Dhandala
7bf03074b2 fix: update shebang in Index.ts and correct paths in package.json for CLI execution 2026-02-18 15:55:03 +00:00
Nawaz Dhandala
b05db3486e feat: refactor tests to use environment variables for credentials and update jest command 2026-02-18 15:50:31 +00:00
Nawaz Dhandala
5e5fdb5402 feat: conditionally include title and body in push notification payload 2026-02-18 15:42:38 +00:00
Nawaz Dhandala
9ec5efbd1e feat: update base image to Node.js 24.9 in Dockerfile 2026-02-18 15:39:02 +00:00
Nawaz Dhandala
7d6e81cb8b feat: add mocks for isolated-vm and whois-json modules in Jest configuration 2026-02-18 15:37:53 +00:00
Nawaz Dhandala
a5e3e05f86 Merge branch 'master' into release 2026-02-18 15:24:00 +00:00
Nawaz Dhandala
266fcb274e chore: update version to 10.0.0 2026-02-18 15:23:48 +00:00
Nawaz Dhandala
70a8c9974c feat: update base image to Node.js 24.9-alpine3.21 in Dockerfile 2026-02-18 15:17:52 +00:00
Nawaz Dhandala
87501d8d1b feat: implement centralized logging utility and replace console statements in push notification handling 2026-02-18 15:08:30 +00:00
Nawaz Dhandala
a31f9d9d28 refactor: clean up code formatting and improve readability across multiple files 2026-02-18 15:02:24 +00:00
Nawaz Dhandala
d89be8ed57 feat: enhance error handling and process exit flow in SyntheticMonitorWorker 2026-02-18 15:00:25 +00:00
Nawaz Dhandala
509a010261 feat: enhance sandbox execution by wrapping user code in async IIFE and handling non-cloneable return values 2026-02-18 14:22:39 +00:00
Nawaz Dhandala
54754ff5ae feat: add registerProbeKey to values schema 2026-02-18 14:15:25 +00:00
Nawaz Dhandala
7f9ed4d439 feat: refactor SyntheticMonitor to use child processes for script execution
- 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.
2026-02-18 14:14:24 +00:00
Nawaz Dhandala
d62816dd49 feat: update probe services to include environment variables for telemetry and logging 2026-02-18 13:50:28 +00:00
Nawaz Dhandala
7dd6129dad feat: add environment variables for log level and node environment in isolated-vm deployment 2026-02-18 13:42:14 +00:00
Nawaz Dhandala
7ccea02340 fix secret in probe 2026-02-18 13:37:22 +00:00
Nawaz Dhandala
0af41725b4 fix: add missing comma in dependencies section of package.json 2026-02-18 13:25:17 +00:00
Nawaz Dhandala
9f6bcddc1e feat: implement default notification rules for verified communication methods in User APIs 2026-02-18 13:16:54 +00:00
Nawaz Dhandala
97c461f7a3 fix: update key generation in MyOnCallPoliciesScreen to handle undefined policyId 2026-02-18 13:08:38 +00:00
Nawaz Dhandala
736f8bb83c chore: update adaptive and regular icons in MobileApp assets 2026-02-18 13:05:25 +00:00
Nawaz Dhandala
eb33daf64f refactor: add expo-splash-screen plugin configuration to app.json 2026-02-18 12:57:19 +00:00
Nawaz Dhandala
c3c90eef03 fix: ensure title and body are defaulted to empty strings in push notification 2026-02-18 12:25:14 +00:00
Nawaz Dhandala
e92e9f08d3 refactor: enhance push notification handling with PushNotificationService integration 2026-02-18 10:31:12 +00:00
Nawaz Dhandala
2b313a7702 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-18 09:58:01 +00:00
Nawaz Dhandala
3cf7c7d1ae refactor: implement push notification relay and enhance Expo integration 2026-02-18 09:56:10 +00:00
Nawaz Dhandala
76cfa7186e refactor: add eas.json configuration for build and submission settings 2026-02-18 09:00:13 +00:00
Simon Larsen
afaff717c0 Merge pull request #2304 from OneUptime/snyk-upgrade-950bdb1d48a0c3f367ba1c51cd0a7dee
[Snyk] Upgrade playwright from 1.57.0 to 1.58.0
2026-02-18 08:57:48 +00:00
Simon Larsen
fde0d5f2c6 Merge pull request #2302 from OneUptime/snyk-fix-68e2c2852a4c507876028cf50ec2c87c
[Snyk] Security upgrade nginx from 1.29.3-alpine to 1.29.5-alpine
2026-02-18 08:57:18 +00:00
Simon Larsen
d5c5387621 Merge branch 'master' into snyk-upgrade-950bdb1d48a0c3f367ba1c51cd0a7dee 2026-02-18 08:56:47 +00:00
Simon Larsen
e0ef6e9a77 Merge pull request #2308 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-18 08:56:11 +00:00
Nawaz Dhandala
2dc0dc4c96 refactor: add google services configuration for Firebase integration 2026-02-18 08:54:10 +00:00
Nawaz Dhandala
c9eb72ba2c refactor: enhance push notification registration with improved error handling and retry logic 2026-02-18 08:39:29 +00:00
Nawaz Dhandala
92e247d168 refactor: update logo size and styling in LoginScreen and ServerUrlScreen for improved visual consistency 2026-02-18 07:57:47 +00:00
Nawaz Dhandala
14988c438a refactor: update app.json slug and add permissions for biometric authentication 2026-02-18 07:48:31 +00:00
Nawaz Dhandala
d81682d02f Refactor styles in various components for improved readability and consistency
- 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.
2026-02-18 07:47:07 +00:00
simlarsen
9d5faca3ec chore: npm audit fix 2026-02-18 02:31:53 +00:00
Nawaz Dhandala
89ccde1bc4 refactor: standardize device type strings to lowercase in registerPushDevice function for consistency 2026-02-17 22:12:43 +00:00
Nawaz Dhandala
3aab280dcd refactor: standardize shadow properties and background colors across components for improved consistency 2026-02-17 22:04:56 +00:00
Nawaz Dhandala
b8e44a1bcf refactor: update layout and styling in AddNoteModal and NotesSection for improved consistency and visual clarity 2026-02-17 21:55:20 +00:00
Nawaz Dhandala
4c3b4d23ff refactor: update assignment badge colors and icon in MyOnCallPoliciesScreen for improved visual consistency 2026-02-17 21:42:26 +00:00
Nawaz Dhandala
a4ff718d61 refactor: remove unnecessary shadow properties and simplify layout in MyOnCallPoliciesScreen for improved performance and consistency 2026-02-17 21:40:03 +00:00
Nawaz Dhandala
3433a815f3 refactor: simplify Pressable style and adjust layout properties in HomeScreen for improved accessibility and visual consistency 2026-02-17 21:32:54 +00:00
Nawaz Dhandala
2a20807126 refactor: update padding values in MyOnCallPoliciesScreen for improved layout consistency 2026-02-17 21:31:10 +00:00
Nawaz Dhandala
991dc1c842 refactor: update icon in AlertCard and IncidentCard from desktop-outline to pulse-outline for improved visual representation 2026-02-17 21:29:59 +00:00
Nawaz Dhandala
2026e7fd77 refactor: move marginBottom to parent View in EpisodeCard for improved layout consistency 2026-02-17 21:28:48 +00:00
Nawaz Dhandala
1d0016412e refactor: add marginBottom to SwipeableCard for improved layout spacing 2026-02-17 21:27:38 +00:00
Nawaz Dhandala
917f27fe11 Refactor styles in multiple screens to use inline styles instead of class names for consistency and improved readability. Updated layout properties and adjusted padding, margin, and font sizes across IncidentsScreen, MyOnCallPoliciesScreen, SettingsScreen, LoginScreen, and ServerUrlScreen for better UI alignment and responsiveness. 2026-02-17 21:25:03 +00:00
Nawaz Dhandala
c07c89e3dd refactor: replace Pressable with TouchableOpacity in StatCard for improved touch handling and update layout for better spacing 2026-02-17 21:16:58 +00:00
Nawaz Dhandala
32c4c1666d refactor: update button layout and styles in AlertEpisodeDetailScreen and IncidentEpisodeDetailScreen for consistency 2026-02-17 21:12:52 +00:00
Nawaz Dhandala
636a419cbd refactor: replace Pressable with TouchableOpacity for improved touch handling in SegmentedControl, AlertDetailScreen, and IncidentDetailScreen 2026-02-17 21:10:54 +00:00
Nawaz Dhandala
61699b9f4a refactor: replace Pressable with TouchableOpacity for theme selection options 2026-02-17 21:07:19 +00:00
Nawaz Dhandala
b6ed3643c3 fix: update splash screen background color and replace asset images 2026-02-17 20:57:17 +00:00
Nawaz Dhandala
9e73ac45a1 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-17 15:08:20 +00:00
Nawaz Dhandala
7a3dbd0e8e refactor: streamline style definitions in multiple components for consistency 2026-02-17 14:57:46 +00:00
Nawaz Dhandala
1ec25c27ee refactor: replace TouchableOpacity with Pressable for improved touch handling across components 2026-02-17 14:55:36 +00:00
Simon Larsen
5286527155 Merge pull request #2305 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-17 09:49:52 +00:00
simlarsen
895af10755 chore: npm audit fix 2026-02-17 02:28:09 +00:00
Nawaz Dhandala
77ccca7e2a refactor: simplify query client setup and improve deep link handling in navigation 2026-02-16 22:31:13 +00:00
Nawaz Dhandala
66f46e9b84 chore: remove unused whois-json type definitions and update package dependencies 2026-02-16 20:06:11 +00:00
Nawaz Dhandala
91edae50b2 feat: Implement domain monitoring criteria and secret handling for domain names 2026-02-16 19:17:00 +00:00
Nawaz Dhandala
7ab3dfe043 feat: Add Domain Monitor functionality with WHOIS integration
- 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.
2026-02-16 19:10:44 +00:00
Nawaz Dhandala
fb661126d4 chore: bump version to 9.5.13 2026-02-16 17:10:17 +00:00
Nawaz Dhandala
94c57f3189 style: update DNSSEC comment to use block comment format for clarity 2026-02-16 17:10:06 +00:00
Nawaz Dhandala
4de6021905 fix: update DNSSEC check to use a default resolver if none specified 2026-02-16 17:09:41 +00:00
Nawaz Dhandala
c62a49d499 fix: combine iputils and dnsutils installation in Dockerfile 2026-02-16 16:56:11 +00:00
snyk-bot
01fd5263ca fix: upgrade playwright from 1.57.0 to 1.58.0
Snyk has created this PR to upgrade playwright from 1.57.0 to 1.58.0.

See this package in npm:
playwright

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/49c81d9c-12c2-4e8e-b9e8-72f98b1b595c?utm_source=github&utm_medium=referral&page=upgrade-pr
2026-02-16 15:58:33 +00:00
Nawaz Dhandala
d87eee68e8 style: refactor arrow functions to use explicit return statements for clarity 2026-02-16 14:55:08 +00:00
Nawaz Dhandala
3f4db5b7e0 feat: implement project creation restriction for non-admin users 2026-02-16 14:54:14 +00:00
Nawaz Dhandala
462ad9d6ab Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-16 14:36:46 +00:00
Nawaz Dhandala
6444d3d5cc Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-16 14:36:31 +00:00
Nawaz Dhandala
415222561b feat: add health checks and common dependencies for services in Docker Compose files 2026-02-16 14:34:26 +00:00
Nawaz Dhandala
8cf2661c63 style: adjust spacing and styling for CardSelect option groups and EvaluationLogList component 2026-02-16 11:23:21 +00:00
Nawaz Dhandala
a820f817ff fix: update header color for option groups in CardSelect component 2026-02-16 11:20:14 +00:00
Nawaz Dhandala
576927c6c7 refactor: rename monitoring category from "Active Monitoring" to "Basic Monitoring" 2026-02-16 11:08:57 +00:00
Nawaz Dhandala
e866db9e18 feat: enhance monitor type handling with categorized card select options and improve DNS resolver configuration 2026-02-16 11:08:31 +00:00
Nawaz Dhandala
8e91a786f9 refactor: streamline route definition for CLI endpoint 2026-02-16 10:39:43 +00:00
Nawaz Dhandala
02d16446f1 feat: update documentation links in CLI and MCP server pages for improved navigation 2026-02-16 10:32:28 +00:00
Nawaz Dhandala
5d5517258b Refactor code structure for improved readability and maintainability 2026-02-16 08:59:39 +00:00
Nawaz Dhandala
5df632c46c feat: update CLI documentation to reflect changes in incident state handling and queries 2026-02-16 08:47:01 +00:00
Nawaz Dhandala
c1ee79b339 feat: enhance CLI documentation with additional context and options for commands 2026-02-16 08:41:48 +00:00
Nawaz Dhandala
67265c0fc8 feat: include createdAt and planName in project details for improved project information 2026-02-16 08:32:46 +00:00
Nawaz Dhandala
72e5384012 chore: remove ora dependency from package.json and package-lock.json 2026-02-16 08:30:39 +00:00
Nawaz Dhandala
dc8e9d44b1 chore: bump version to 9.5.12 2026-02-16 08:21:14 +00:00
Nawaz Dhandala
91102ee952 feat: add CLI section to navigation with links to documentation 2026-02-15 20:29:36 +00:00
Nawaz Dhandala
e46d1ae7da chore: update compile workflow to install and compile Common package 2026-02-15 20:19:08 +00:00
Nawaz Dhandala
008005415a fix: update MarkdownContent styles to use ReturnType for better type inference 2026-02-15 20:14:56 +00:00
Nawaz Dhandala
c7362f3ada feat: add comprehensive CLI documentation including authentication, command reference, resource operations, output formats, and scripting for automation 2026-02-15 20:10:21 +00:00
Nawaz Dhandala
1f634576fe chore: update CLI to use npm package for Common, adjust TypeScript config, and add CI workflow
- 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.
2026-02-15 12:05:35 +00:00
Nawaz Dhandala
d25a97fe17 Refactor components for improved readability and consistency
- 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
2026-02-15 11:47:32 +00:00
Nawaz Dhandala
b89ff11db8 Add comprehensive tests for CLI commands and error handling
- 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.
2026-02-15 10:54:50 +00:00
Nawaz Dhandala
5ac5ffede5 feat(cli): initialize CLI package with TypeScript configuration and dependencies
- 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.
2026-02-15 10:36:30 +00:00
Nawaz Dhandala
d9167b89ba feat: Add toPlainText utility function and update components to use it for improved text handling 2026-02-14 22:02:21 +00:00
Nawaz Dhandala
66b995c64a feat: Implement On-Call policies feature with navigation, API integration, and UI components 2026-02-14 21:51:09 +00:00
Nawaz Dhandala
f383bbba4d refactor: Update notification icons in MainTabNavigator for improved clarity 2026-02-14 21:42:19 +00:00
Nawaz Dhandala
43f1a59042 refactor: Update icon names in HomeScreen for improved clarity and consistency 2026-02-14 21:41:10 +00:00
Nawaz Dhandala
7d49872edc refactor: Enhance HomeScreen layout by adding section headers for Incidents and Alerts, improving organization and readability 2026-02-14 21:38:03 +00:00
Nawaz Dhandala
6d2d5892b9 refactor: Update label from 'Total active issues' to 'Total active items' and adjust total count calculation in HomeScreen for improved accuracy 2026-02-14 21:35:53 +00:00
Nawaz Dhandala
756217e19e refactor: Simplify layout in HomeScreen by removing unnecessary Live indicator for cleaner UI 2026-02-14 21:34:57 +00:00
Nawaz Dhandala
ca3cf01be7 refactor: Update icon for Root Cause section in AlertDetailScreen, IncidentDetailScreen, and IncidentEpisodeDetailScreen for improved clarity 2026-02-14 21:33:33 +00:00
Nawaz Dhandala
fd0a81a0b1 refactor: Remove unused Ionicons import and clean up RootCauseCard layout for improved readability 2026-02-14 21:31:49 +00:00
Nawaz Dhandala
14016d188b refactor: Replace MarkdownContent with RootCauseCard component in AlertDetailScreen, IncidentDetailScreen, and IncidentEpisodeDetailScreen for improved root cause display 2026-02-14 21:31:30 +00:00
Nawaz Dhandala
3a2aff7f34 refactor: Integrate MarkdownContent component for improved markdown rendering in FeedTimeline, AlertDetailScreen, IncidentDetailScreen, and IncidentEpisodeDetailScreen; update package.json and package-lock.json for new dependencies 2026-02-14 21:28:04 +00:00
Nawaz Dhandala
4a6edfee06 refactor: Update AlertCard, EpisodeCard, and IncidentCard components for improved styling and consistency; enhance rgbToHex function for better color handling 2026-02-14 21:23:20 +00:00
Nawaz Dhandala
2dc1b8aa8c refactor: Enhance footer in SettingsScreen with updated layout, styling, and open source acknowledgment 2026-02-14 21:18:45 +00:00
Nawaz Dhandala
eb0f0e742d refactor: Update color handling in GradientButton, NotesSection, SegmentedControl, and SettingsScreen for improved theme support 2026-02-14 21:16:37 +00:00
Nawaz Dhandala
23c82c5239 refactor: Update UI components for improved styling and consistency across AlertCard, EpisodeCard, IncidentCard, GradientButton, NotesSection, SegmentedControl, and detail screens 2026-02-14 21:15:32 +00:00
Nawaz Dhandala
2b61e4f4b7 refactor: Improve layout and accessibility in AlertCard, EpisodeCard, and IncidentCard components 2026-02-14 21:11:58 +00:00
Nawaz Dhandala
9b21abf78d refactor: Enhance footer in SettingsScreen with gradient background and open source acknowledgment 2026-02-14 20:56:02 +00:00
Nawaz Dhandala
bd54b38a69 refactor: Update footer text in SettingsScreen for clarity and add text alignment 2026-02-14 20:55:26 +00:00
Nawaz Dhandala
4dc799d238 refactor: Add useWindowDimensions for responsive tab bar label visibility 2026-02-14 20:52:24 +00:00
Nawaz Dhandala
b4d90e3bef refactor: Update color palette to neutral monochrome accents for improved consistency 2026-02-14 20:51:14 +00:00
Nawaz Dhandala
6c8d4203da refactor: Update Logo component sizes in HomeScreen and SettingsScreen for improved layout 2026-02-14 20:50:19 +00:00
Nawaz Dhandala
f7e9745624 refactor: Update Logo component to use SvgXml and adjust sizes in HomeScreen and SettingsScreen 2026-02-14 20:48:00 +00:00
Nawaz Dhandala
f7d133adba refactor: Add TypeScript types for alert and incident models and update tsconfig paths 2026-02-14 20:38:15 +00:00
Nawaz Dhandala
b06c2cb1c3 refactor: Add root cause field to alert and incident APIs and update detail screens for display 2026-02-14 20:31:06 +00:00
Nawaz Dhandala
b51c5d9677 refactor: Improve UI components with enhanced styles and layout adjustments across multiple screens 2026-02-14 20:29:12 +00:00
Nawaz Dhandala
9a1e265d1c refactor: Enhance UI with LinearGradient backgrounds and improve component styles across multiple screens 2026-02-14 20:26:05 +00:00
Nawaz Dhandala
e18d75fc8e refactor: Add TypeScript declarations for additional languages in react-syntax-highlighter across multiple files 2026-02-14 20:14:11 +00:00
Nawaz Dhandala
5a68d2f726 refactor: Add TypeScript declarations for additional languages in react-syntax-highlighter 2026-02-14 20:03:04 +00:00
Nawaz Dhandala
dfa7c4875a refactor: Simplify JSX structure in multiple components for improved readability 2026-02-14 20:00:20 +00:00
Nawaz Dhandala
8a568e0495 chore: Bump version to 9.5.11 2026-02-14 19:59:46 +00:00
Nawaz Dhandala
7152058ee2 Merge branch 'dash-chunk' 2026-02-14 19:54:45 +00:00
Nawaz Dhandala
b198dc0ec8 refactor: Enhance lazy loading of components in StatusPage for improved type safety and maintainability 2026-02-14 19:54:05 +00:00
Nawaz Dhandala
b0a3f8d60f refactor: Enable tree shaking in esbuild configuration for optimized bundle size 2026-02-14 19:42:53 +00:00
Nawaz Dhandala
83a13635cf Refactor route components to improve readability and consistency in prop spreading 2026-02-14 18:38:45 +00:00
Nawaz Dhandala
a2c1744e8c refactor: Enhance mermaid plugin to serve pre-bundled CJS file with ESM export for improved compatibility 2026-02-14 15:00:28 +00:00
snyk-bot
9dfbc05618 fix: Nginx/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-ALPINE322-LIBPNG-15062355
- https://snyk.io/vuln/SNYK-ALPINE322-LIBPNG-15062356
- https://snyk.io/vuln/SNYK-ALPINE322-OPENSSL-15121112
- https://snyk.io/vuln/SNYK-ALPINE322-OPENSSL-15121113
- https://snyk.io/vuln/SNYK-ALPINE322-OPENSSL-15121196
2026-02-14 14:53:26 +00:00
Nawaz Dhandala
4271ddbdcb refactor: Consolidate lazy loading of components into AllPages for improved organization and performance 2026-02-14 14:52:55 +00:00
Nawaz Dhandala
6ffb081a02 refactor: Consolidate route imports into AllRoutes for improved organization and maintainability 2026-02-14 14:51:01 +00:00
Nawaz Dhandala
16a9edbfcd Refactor route imports in StatusPagesRoutes, TracesRoutes, UserSettingsRoutes, and WorkflowRoutes for improved readability and performance by replacing lazy loading with direct imports. Remove unnecessary Suspense components around routes. 2026-02-14 11:00:15 +00:00
Nawaz Dhandala
e32d4395a3 refactor: update UI components for consistency and improved theming
- 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.
2026-02-13 21:24:31 +00:00
Nawaz Dhandala
b8cd3ce1c1 Merge branch 'release' of https://github.com/OneUptime/oneuptime into release 2026-02-13 20:57:59 +00:00
Nawaz Dhandala
b86aee7f2a refactor: Update comments for channel name normalization and sanitization in Slack and Teams utilities 2026-02-13 20:57:25 +00:00
Nawaz Dhandala
2cde167445 refactor: Enhance channel name normalization to remove invalid characters for Microsoft Teams 2026-02-13 20:56:22 +00:00
Nawaz Dhandala
9bd6b011fe refactor: Sanitize Slack channel names to remove invalid characters 2026-02-13 20:52:02 +00:00
Nawaz Dhandala
538eef5660 chore: Bump version to 9.5.10 2026-02-13 19:27:29 +00:00
Simon Larsen
e1a343ae38 Merge pull request #2300 from OneUptime/master
Release
2026-02-13 19:27:00 +00:00
Nawaz Dhandala
8b42af35c1 refactor: Remove unused noteModalVisible prop from NotesSection component 2026-02-13 17:12:49 +00:00
Nawaz Dhandala
fc9026a8d8 refactor: Clean up component code and improve formatting across multiple files 2026-02-13 17:11:00 +00:00
Nawaz Dhandala
86edee35c1 style: Update color scheme and improve UI consistency across components 2026-02-13 17:09:12 +00:00
Nawaz Dhandala
109c276bc5 feat: Update GlassCard component to support opaque prop and apply it to multiple cards 2026-02-13 16:55:15 +00:00
Nawaz Dhandala
8040dd0f56 Refactor UI components and enhance styling
- 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.
2026-02-13 16:45:48 +00:00
Nawaz Dhandala
00d4148b6b Enhance UI and UX across multiple screens
- 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.
2026-02-13 16:14:15 +00:00
Nawaz Dhandala
dec03bc3a8 feat: Add expo-font dependency to package.json and package-lock.json 2026-02-13 15:45:30 +00:00
Nawaz Dhandala
46a9f95fc0 fix: Update error handling in getUserMiddleware to use NotAuthenticatedException 2026-02-13 15:42:10 +00:00
Simon Larsen
8b2f9bc778 Merge pull request #2299 from OneUptime/dna-monitor
DNS monitor
2026-02-13 14:04:51 +00:00
Nawaz Dhandala
fcc6223850 refactor: Remove unused variables and improve type annotations in hooks and screens 2026-02-13 14:04:23 +00:00
Nawaz Dhandala
c9bc214e86 fix: Correct CAA record resolution method and typo in value formatting 2026-02-13 13:57:31 +00:00
Simon Larsen
2897a937ba Merge pull request #2298 from OneUptime/refactor-mob-app
Refactor mob app
2026-02-13 13:49:05 +00:00
Nawaz Dhandala
f3cd7be143 refactor: Clean up code formatting and improve readability across multiple components 2026-02-13 13:48:46 +00:00
Nawaz Dhandala
f324a4e864 feat: Implement DNS monitoring configuration and secret handling 2026-02-13 13:42:45 +00:00
Nawaz Dhandala
f6a8cef649 feat: Add DNS monitoring capabilities
- 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.
2026-02-13 13:29:01 +00:00
Nawaz Dhandala
770ef007a4 refactor: Enhance response normalization in API client to handle serialized types 2026-02-13 12:10:42 +00:00
Nawaz Dhandala
dafa0cc5d9 refactor: Update styling in AppContent and RootNavigator for consistent theme integration 2026-02-13 11:48:31 +00:00
Nawaz Dhandala
196e9cae10 refactor: Enhance error handling in getBlogPost method to return null on failure 2026-02-13 11:33:02 +00:00
Nawaz Dhandala
d0d26d20b2 refactor: Integrate SplashScreen to hide native splash screen after loading completes 2026-02-13 11:25:13 +00:00
Nawaz Dhandala
6a90ee97bf Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-13 11:12:22 +00:00
Nawaz Dhandala
f2a2644b0e Merge branch 'release' 2026-02-13 11:12:12 +00:00
Nawaz Dhandala
5cb2ac8c8b fix: Use absolute path for npm in ts-node installation to ensure correct execution 2026-02-13 11:10:34 +00:00
Nawaz Dhandala
6751d59b2f refactor: Remove totalActive calculation and active issues summary from HomeScreen 2026-02-13 11:05:09 +00:00
Nawaz Dhandala
aefc649743 refactor: Integrate useAuth in ProjectProvider for authentication handling 2026-02-13 10:25:57 +00:00
Nawaz Dhandala
cfba73665c refactor: Update loading state to use 'isPending' instead of 'isLoading' in multiple hooks 2026-02-13 10:21:06 +00:00
Nawaz Dhandala
049c5d003c refactor: Add flex styling to SectionList in AlertsScreen and IncidentsScreen for better layout 2026-02-13 10:15:17 +00:00
Simon Larsen
fd8998952d Merge pull request #2297 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-13 10:06:30 +00:00
Nawaz Dhandala
5ca85e4915 refactor: Update header comment in fetchProjects function for clarity on multi-tenant request 2026-02-13 09:58:09 +00:00
Nawaz Dhandala
aa401291b6 refactor: Update SettingsRow component to consolidate version display in SettingsScreen 2026-02-13 09:01:30 +00:00
Nawaz Dhandala
bf3d90871d refactor: Add feed fetching functions and integrate FeedTimeline component in detail screens 2026-02-13 09:00:20 +00:00
Nawaz Dhandala
4a4dff9264 refactor: Add 'muted' prop to AlertCard, EpisodeCard, and IncidentCard; implement opacity adjustment based on prop value 2026-02-13 08:51:36 +00:00
Nawaz Dhandala
fd3f75e4e2 refactor: Consolidate API fetching logic for alerts, incidents, and episodes; streamline hooks to use unified fetching methods 2026-02-13 08:46:59 +00:00
Nawaz Dhandala
43fc5acdda Refactor HomeScreen to consolidate project counts using useAllProjectCounts hook; remove unused hooks and simplify loading logic
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
2026-02-13 08:39:24 +00:00
simlarsen
c7ca6138f3 chore: npm audit fix 2026-02-13 02:34:23 +00:00
Nawaz Dhandala
87475b00c4 Enhance UI components and improve accessibility across multiple screens
- 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.
2026-02-12 22:36:25 +00:00
Nawaz Dhandala
d5613cc4bd refactor: Integrate Ionicons for improved iconography in EmptyState, BiometricLockScreen, HomeScreen, and SettingsScreen 2026-02-12 22:19:24 +00:00
Nawaz Dhandala
b1c9d9a645 refactor: Add Ionicons for tab bar icons in MainTabNavigator 2026-02-12 22:17:33 +00:00
Nawaz Dhandala
01c6101ae9 Refactor navigation and screens for incidents and alerts
- 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.
2026-02-12 22:14:55 +00:00
Nawaz Dhandala
ec56609bf4 refactor: Update biometric labels for clarity in SettingsScreen 2026-02-12 22:07:44 +00:00
Nawaz Dhandala
e5f652a950 refactor: Remove Notification Preferences screen and related navigation; update settings stack and types accordingly 2026-02-12 22:06:36 +00:00
Nawaz Dhandala
749bd2e41d refactor: Replace react-native-keychain with AsyncStorage for token management 2026-02-12 22:03:50 +00:00
Nawaz Dhandala
cc23416ad8 refactor: Move SafeAreaProvider to wrap the PersistQueryClientProvider for improved layout handling 2026-02-12 21:56:58 +00:00
Nawaz Dhandala
86fda9ba16 refactor: Update Tailwind CSS configuration and clean up imports; remove unused tailwind.config.ts file 2026-02-12 21:54:17 +00:00
Nawaz Dhandala
969983043b feat: Add babel-preset-expo to dependencies for improved Babel configuration 2026-02-12 21:39:30 +00:00
Nawaz Dhandala
2b64dd0b1d Refactor Settings, Login, and Server URL screens to use Tailwind CSS for styling; remove unused styles and theme properties; integrate NativeWind for utility-first styling approach; update theme context to support dark mode; enhance accessibility and maintainability. 2026-02-12 21:31:38 +00:00
Nawaz Dhandala
3a514969dc Refactor UI components to enhance styling and shadows
- 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.
2026-02-12 21:02:46 +00:00
Nawaz Dhandala
10d006890c Refactor code structure for improved readability and maintainability 2026-02-12 20:46:28 +00:00
Nawaz Dhandala
2cb719d53a feat: Add check to skip localhost instances in OpenSourceDeploymentAPI 2026-02-12 20:34:30 +00:00
Nawaz Dhandala
eafb543371 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-12 19:35:57 +00:00
Nawaz Dhandala
5800fe4f7a feat: Implement aggressive disk cleanup in release workflow to optimize build space 2026-02-12 18:55:47 +00:00
Nawaz Dhandala
8d3712c36a feat: Enhance probe handling in secrets.yaml with improved logic for existing secrets 2026-02-12 17:05:33 +00:00
Nawaz Dhandala
f8e26246dd refactor: Improve related types handling and add peer dependencies in package-lock.json 2026-02-12 10:33:04 +00:00
Nawaz Dhandala
8560ecab41 chore: Bump version to 9.5.9 2026-02-12 09:14:53 +00:00
Nawaz Dhandala
5b2a6924d9 feat: Enhance DataTypeDetail and data-type.ejs with enriched related types and summary box 2026-02-11 22:51:39 +00:00
Nawaz Dhandala
e047143974 refactor: Improve type annotations and code readability in Dropdown component and migration file 2026-02-11 22:43:09 +00:00
Nawaz Dhandala
d23dc791e2 feat: Enhance data type documentation with category grouping and related types links 2026-02-11 22:38:41 +00:00
Nawaz Dhandala
a4b3b340c8 Add new data types for monitoring criteria and configurations
- 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.
2026-02-11 22:25:59 +00:00
Nawaz Dhandala
2173e4e611 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-11 22:10:58 +00:00
Nawaz Dhandala
dc19f87404 refactor: Clean up code formatting and improve readability across multiple files 2026-02-11 22:08:17 +00:00
Nawaz Dhandala
a3045c5f26 feat: Implement PermissionPicker component for enhanced permission selection 2026-02-11 22:04:25 +00:00
Nawaz Dhandala
5d6907be97 feat: Enhance dropdown options handling by introducing DropdownOptionGroup support 2026-02-11 21:42:57 +00:00
Nawaz Dhandala
e2ace9fc11 feat: Enhance permissions documentation with quick navigation and category links 2026-02-11 21:18:43 +00:00
Nawaz Dhandala
5a11bf228a feat: Enhance permissions handling by grouping permissions into categories 2026-02-11 21:14:55 +00:00
Nawaz Dhandala
cdd8d5523f Implement feature X to enhance user experience and optimize performance 2026-02-11 21:06:04 +00:00
Nawaz Dhandala
f5029fada7 feat: Refactor TypeToDocPath mapping to use dynamic generation from DataTypes 2026-02-11 20:54:47 +00:00
Nawaz Dhandala
8131c9d42f feat: Swap Data Types and Resources sections in navigation 2026-02-11 20:47:15 +00:00
Nawaz Dhandala
946c7d4c48 feat: Add detailed data type documentation and navigation
- 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.
2026-02-11 20:46:02 +00:00
Simon Larsen
9cbc7d9646 Merge pull request #2293 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-11 20:20:52 +00:00
Nawaz Dhandala
72d95871f7 feat: enhance model documentation links in API reference view 2026-02-11 19:24:51 +00:00
Nawaz Dhandala
3545a221bc feat: Add Alert Creation Page and Update Related Components
- 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.
2026-02-11 19:17:25 +00:00
Nawaz Dhandala
9a5bcb9f31 feat: add migration for updating constraints and indexes in Incident and Alert OnCallDutyPolicy tables 2026-02-11 18:25:10 +00:00
Nawaz Dhandala
91a4d3601c fix: rename columns and update constraints in AlertOnCallDutyPolicy and IncidentOnCallDutyPolicy migrations 2026-02-11 18:23:43 +00:00
Nawaz Dhandala
ea99dd4873 refactor: update model relationships and descriptions for On-Call Duty Policies in Alert, Incident, and IncidentTemplate models; add migration for database schema changes 2026-02-11 18:16:38 +00:00
Nawaz Dhandala
34863dbcb6 fix: rename "Deleted by User ID" to "Acknowledged by User ID" in OnCallDutyPolicyExecutionLog and UserOnCallLog models 2026-02-11 18:09:28 +00:00
Nawaz Dhandala
effeb3a0b6 fix: update title and description for Monitor ID in Alert model 2026-02-11 18:06:59 +00:00
Nawaz Dhandala
86bdcb416a fix: await token refresh before retrying original request in response interceptor 2026-02-11 17:38:36 +00:00
Nawaz Dhandala
665f194f6d feat: add peer dependency flag to multiple packages in package-lock.json 2026-02-11 15:01:14 +00:00
Nawaz Dhandala
1378445dc5 feat: update dependencies for React and React Native 2026-02-11 14:59:54 +00:00
Nawaz Dhandala
236be5b60e feat: conditionally include prefix properties in alert and incident services 2026-02-11 14:53:57 +00:00
Nawaz Dhandala
256f4334eb Merge branch 'release' 2026-02-11 14:32:22 +00:00
Nawaz Dhandala
28d5ad4292 chore: bump version to 9.5.8 2026-02-11 14:32:03 +00:00
Nawaz Dhandala
5c169ccd5b feat: simplify props handling in Slack alert and incident episode actions 2026-02-11 14:27:26 +00:00
Nawaz Dhandala
e05f15d3f6 feat: refactor episode state update methods for Slack and Microsoft Teams actions 2026-02-11 14:24:50 +00:00
Nawaz Dhandala
de0cbe1f42 feat: update on-call policy notifications in Slack and Teams actions for clarity 2026-02-11 13:36:58 +00:00
Nawaz Dhandala
fc48a0efdb feat: add notification for missing on-call policies in Slack actions 2026-02-11 13:31:02 +00:00
Nawaz Dhandala
e623c973ee feat: enhance incident episode note handling with public/private options 2026-02-11 13:26:00 +00:00
Nawaz Dhandala
8d56287892 feat: update workspace channel retrieval to support incident and alert episodes 2026-02-11 13:09:21 +00:00
Nawaz Dhandala
0950d4288f feat: add episode and incident number prefixes to relevant services and messages 2026-02-11 12:58:23 +00:00
Nawaz Dhandala
56ea1c4690 fix: streamline formatting in various services for consistency 2026-02-11 12:52:15 +00:00
Nawaz Dhandala
08d2b6f5a2 feat: add emoji to button titles in Slack incident episode messages 2026-02-11 12:49:21 +00:00
Nawaz Dhandala
2cabdde5bd feat: add workspace notification handling for alert and incident episode services 2026-02-11 12:45:16 +00:00
Nawaz Dhandala
3e48a706bd feat: enhance workspace notification handling in various services 2026-02-11 12:39:48 +00:00
Nawaz Dhandala
7c672e14a1 feat: add workspace notification handling in Alert and Incident episode services 2026-02-11 12:16:42 +00:00
Nawaz Dhandala
80a3bbac3d Merge branch 'master' into release 2026-02-11 11:46:59 +00:00
simlarsen
25f9b826cf chore: npm audit fix 2026-02-11 02:38:02 +00:00
Nawaz Dhandala
c478e6af30 feat: add openSourceDeployment schema with webhookUrl property 2026-02-10 23:26:06 +00:00
Nawaz Dhandala
555a722732 feat: update expo-device to version 8.0.10 and react-native-screens to version 4.16.0 2026-02-10 23:24:47 +00:00
Nawaz Dhandala
6b5f981424 feat: refactor push token handling and move related functions to pushTokenUtils 2026-02-10 23:23:17 +00:00
Nawaz Dhandala
e0e614cf21 feat: enable new architecture in app.json 2026-02-10 23:17:53 +00:00
Nawaz Dhandala
44cc072d98 feat: add expo-system-ui dependency to package.json and package-lock.json 2026-02-10 23:15:38 +00:00
Nawaz Dhandala
c2c97dae0a feat: add mobile app Android and iOS deployment jobs to release workflow 2026-02-10 23:09:02 +00:00
Nawaz Dhandala
3978374ccb feat: add release signing setup documentation for Android and iOS 2026-02-10 23:08:24 +00:00
Nawaz Dhandala
6950daf10a feat: add workflows for mobile app Android and iOS deployment 2026-02-10 23:06:32 +00:00
Nawaz Dhandala
7a07e669c9 feat: add mobile app compilation and testing workflows 2026-02-10 22:55:57 +00:00
Nawaz Dhandala
67ece0fcca refactor: enhance type safety and improve code readability across multiple files 2026-02-10 22:45:12 +00:00
Nawaz Dhandala
5413e24bd4 refactor: enhance type safety and improve code readability across multiple files
- 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.
2026-02-10 22:38:45 +00:00
Nawaz Dhandala
59b3fc0334 Refactor screens and components for improved readability and consistency
- 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.
2026-02-10 22:29:37 +00:00
Nawaz Dhandala
2bc72dbdb6 feat: update project view route to use current navigation context 2026-02-10 22:21:19 +00:00
Nawaz Dhandala
15ccf00503 chore: update expo-server-sdk to version 3.15.0; reorganize push notifications documentation
- 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.
2026-02-10 22:07:39 +00:00
Nawaz Dhandala
b3d73a5523 feat: add notification preferences screen and settings stack navigator
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
2026-02-10 22:04:37 +00:00
Nawaz Dhandala
43e6291608 feat: enhance incident detail screens with haptic feedback and loading skeletons
- 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.
2026-02-10 21:54:18 +00:00
Nawaz Dhandala
09d82f64de refactor: remove Firebase Cloud Messaging configuration and related code for push notifications 2026-02-10 21:38:42 +00:00
Nawaz Dhandala
51ed9fc2bb feat: implement push notification registration and unregistration functionality 2026-02-10 21:27:35 +00:00
Nawaz Dhandala
b23ccdcc57 feat: add Incident and Alert Episodes screens and navigators
- 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.
2026-02-10 20:34:53 +00:00
Nawaz Dhandala
147e687bac fix: refactor alert and incident state handling to use state IDs for acknowledgment and resolution 2026-02-10 20:15:46 +00:00
Nawaz Dhandala
b84cebcb10 feat: add hooks and screens for alerts and incidents management
- 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.
2026-02-10 20:10:37 +00:00
Nawaz Dhandala
7374e3bf9a fix: update UI/UX design philosophy to emphasize native app experience 2026-02-10 18:00:54 +00:00
Nawaz Dhandala
413ba90b02 fix: correct property access for miscData in login function 2026-02-10 17:59:55 +00:00
Nawaz Dhandala
2fd61385bd fix: update login function to structure email and password as objects 2026-02-10 17:58:04 +00:00
Nawaz Dhandala
822bc9f8d5 fix: update newArchEnabled to false and modify start scripts in package.json 2026-02-10 17:54:43 +00:00
Nawaz Dhandala
e53a490606 Merge branch 'master' into release 2026-02-10 16:39:21 +00:00
Nawaz Dhandala
cc53460e7a feat: add README.md for OneUptime Mobile App setup and configuration 2026-02-10 16:01:51 +00:00
Nawaz Dhandala
7d6e0488ba feat: add Firebase Cloud Messaging configuration for native push notifications 2026-02-10 15:58:12 +00:00
Nawaz Dhandala
385a0fb9e5 fix: change deviceType property type to PushDeviceType in UserPush model 2026-02-10 15:34:21 +00:00
Nawaz Dhandala
584b79f48c Merge branch 'master' into mob-phase-1 2026-02-10 15:26:41 +00:00
Nawaz Dhandala
92901b1647 feat: add openSourceDeployment schema and update values.yaml documentation 2026-02-10 15:23:15 +00:00
Nawaz Dhandala
bcbc4f6d99 chore: bump version to 9.5.7 2026-02-10 15:00:30 +00:00
Nawaz Dhandala
04dd1260ac style: improve code formatting for better readability in Register and BasicForm components 2026-02-10 15:00:08 +00:00
Nawaz Dhandala
882f9f6ae4 feat: add support for full row spanning in form fields and conditionally display notification checkbox based on billing status 2026-02-10 14:58:51 +00:00
Nawaz Dhandala
549dc3546b refactor: clean up code formatting and improve readability in Authentication and OpenSourceDeploymentAPI 2026-02-10 14:14:33 +00:00
Nawaz Dhandala
25edcf7d9b feat: add migration for OpenSourceDeployment table and update OnCallDutyPolicyScheduleLayer defaults 2026-02-10 14:13:07 +00:00
Nawaz Dhandala
46378fc3db Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-10 14:11:31 +00:00
Nawaz Dhandala
f9f5bff4ce feat: add Open Source Deployment webhook support and related configuration 2026-02-10 14:11:03 +00:00
Nawaz Dhandala
12b78249c5 feat: rename version field to oneuptimeVersion in OpenSourceDeployment model and API 2026-02-10 13:57:55 +00:00
Nawaz Dhandala
f8cbc3a551 feat: implement Open Source Deployment registration and related database schema 2026-02-10 13:50:56 +00:00
Simon Larsen
670b984cee Merge pull request #2288 from OneUptime/episode-resolve
Episode resolve
2026-02-10 13:29:17 +00:00
Nawaz Dhandala
e677e54ea9 feat: update migration and services to handle allIncidentsResolvedAt and allAlertsResolvedAt fields 2026-02-10 13:28:18 +00:00
Nawaz Dhandala
928a2589c2 feat: remove workspaceProjectAuthTokenId from WorkspaceNotificationRule in migration 2026-02-10 13:20:40 +00:00
Nawaz Dhandala
45f7a86888 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-10 13:12:42 +00:00
Nawaz Dhandala
0fa7848ab9 feat: add migration for allIncidentsResolvedAt and allAlertsResolvedAt fields with index creation 2026-02-10 13:12:10 +00:00
Nawaz Dhandala
ae6e49da8f feat: add allAlertsResolvedAt and allIncidentsResolvedAt fields for resolve delay calculations 2026-02-10 13:08:42 +00:00
Simon Larsen
e80e22b1fa Merge pull request #2285 from OneUptime/inc-episode
feat(AutoResolve): implement resolve delay logic based on incident gr…
2026-02-10 12:42:17 +00:00
Simon Larsen
2adefd1cee Merge pull request #2287 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-10 11:17:17 +00:00
simlarsen
36cbb3159a chore: npm audit fix 2026-02-10 02:40:36 +00:00
Nawaz Dhandala
54909116b9 mobile phase 1 2026-02-09 23:45:17 +00:00
Nawaz Dhandala
4582f6100a feat(MobileApp): enhance UI/UX design philosophy with modern aesthetics and user experience considerations 2026-02-09 22:49:00 +00:00
Nawaz Dhandala
49a01eca8c feat(MobileApp): add UI/UX design philosophy and core design principles to the design document 2026-02-09 22:47:15 +00:00
Nawaz Dhandala
349df0e181 feat(MobileApp): enhance multi-project support with project badges and filters in UI 2026-02-09 22:43:03 +00:00
Nawaz Dhandala
c52116bec1 feat(MobileApp): add design document for OneUptime On-Call mobile app 2026-02-09 22:32:55 +00:00
Nawaz Dhandala
098a18005f feat(ResolveInactiveEpisodes): implement inactivity timeout logic based on incident grouping rules 2026-02-09 22:20:42 +00:00
Nawaz Dhandala
6dbcd69ecd feat(AutoResolve): implement resolve delay logic based on incident grouping rules 2026-02-09 21:49:49 +00:00
Nawaz Dhandala
09a6827709 refactor(Service): streamline incident count template replacement 2026-02-09 21:16:52 +00:00
Nawaz Dhandala
dbb1fa6c18 feat(IncidentEpisodeService): enhance incident count update with dynamic title and description templates 2026-02-09 21:15:56 +00:00
Nawaz Dhandala
cd450bc3b6 feat(migrations): set default value of groupByMonitor to false for Alert and Incident grouping rules 2026-02-09 20:15:15 +00:00
Nawaz Dhandala
047195116d feat(migrations): optimize backfill queries to use MAX instead of COUNT for performance and accuracy 2026-02-09 19:27:12 +00:00
Nawaz Dhandala
564f21388b chore(VERSION): bump version to 9.5.6 2026-02-09 18:21:05 +00:00
Nawaz Dhandala
c69d7c949e feat(templates): reorder service and autoscaler definitions in Helm chart templates 2026-02-09 18:04:54 +00:00
Nawaz Dhandala
dd47b9c3a9 feat(e2e-tests): add CRUD and idempotency tests for oneuptime_file resource 2026-02-09 14:46:40 +00:00
Nawaz Dhandala
ce731cb489 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-09 14:41:34 +00:00
Nawaz Dhandala
f725fdd2d9 feat(ResourceGenerator): implement no-op methods for read, update, and delete operations 2026-02-09 14:41:32 +00:00
Simon Larsen
1aec570c83 Merge pull request #2280 from OneUptime/feat/readme-ai-copilot
docs: add AI Copilot section to README
2026-02-09 14:32:57 +00:00
Jamie Mallers
97b7e15ece docs: add AI Copilot section to README
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.
2026-02-09 14:31:03 +00:00
Nawaz Dhandala
7cdac5fe66 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-09 14:28:11 +00:00
Nawaz Dhandala
4add175070 refactor(Monitor): improve code readability by consolidating API ping parameters
refactor(Migration): update comments for clarity and maintainability
fix(MarkdownEditor): adjust code block formatting for consistency in documentation
2026-02-09 14:28:09 +00:00
Nawaz Dhandala
711cfd2f6b feat(MonitorUtil): add tests for URL placeholder resolution and update method visibility 2026-02-09 14:21:05 +00:00
Nawaz Dhandala
6869ee670a fix(VMUtil): skip replacement if variable is not found in storageMap 2026-02-09 14:17:20 +00:00
Nawaz Dhandala
c4d978cc3b feat: add API and Website monitor documentation with dynamic URL placeholders 2026-02-09 14:11:02 +00:00
Simon Larsen
1dffc2fbbe Merge pull request #2279 from OneUptime/feat/ga4-signup-tracking
feat(analytics): add GA4 sign_up and page view tracking
2026-02-09 13:56:18 +00:00
Jamie Mallers
6b0756cd3a feat(analytics): add GA4 sign_up and page view tracking
- 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
2026-02-09 13:54:44 +00:00
Simon Larsen
fbfa7747e0 Merge pull request #2278 from OneUptime/fluentbit
Fluentbit
2026-02-09 13:14:59 +00:00
Nawaz Dhandala
a7c38dcbf2 refactor(FluentLogsIngestService): improve code readability by formatting function arguments and object properties 2026-02-09 13:14:39 +00:00
Nawaz Dhandala
6b8dd9e8b5 feat(FluentLogsIngestService): enhance log ingestion with structured fields and attributes extraction
test(FluentLogsIngestService): add comprehensive tests for log normalization and attribute extraction
2026-02-09 13:05:52 +00:00
Nawaz Dhandala
c5e7429b3d chore(VERSION): bump version to 9.5.5 2026-02-09 11:54:17 +00:00
Nawaz Dhandala
13ccee4e69 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-09 11:53:31 +00:00
Nawaz Dhandala
f9c9ac5ef0 fix(Migration): optimize backfill queries for project counters using JOINs 2026-02-09 11:53:29 +00:00
Nawaz Dhandala
10654a0a04 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-09 11:07:56 +00:00
Nawaz Dhandala
0d900dca78 fix(StatusPageDomain): change subdomain requirement from required to optional 2026-02-09 11:07:24 +00:00
Nawaz Dhandala
bf5846e7f4 fix(ProductCompare): improve question formatting for clarity in FAQ section 2026-02-08 22:25:06 +00:00
Nawaz Dhandala
9fa48c7a25 chore(VERSION): bump version to 9.5.4 2026-02-08 22:02:16 +00:00
Simon Larsen
9efb070334 Merge pull request #2276 from OneUptime/fix/seo-better-uptime-enhanced
SEO: Add FAQ schema to compare pages + enhance Better Uptime content
2026-02-08 18:46:52 +00:00
Nawaz Dhandala
85e7dd1150 fix(sitemap): update comment format for clarity on blog tag sitemaps removal 2026-02-08 18:16:51 +00:00
Nawaz Dhandala
072f162b6e fix(Project): update create permissions to allow User role 2026-02-08 18:12:26 +00:00
Nawaz Dhandala
9e01b0b75a fix(playwright): install browsers to a fixed path for runtime accessibility 2026-02-08 17:56:59 +00:00
Nawaz Dhandala
3d7b98d1ee fix(deps): update net-snmp to version 3.26.1 2026-02-08 15:37:41 +00:00
Jamie Mallers
62f6900dd2 Merge origin/master - resolve conflict in product-compare.ejs
Keep both:
- Updated meta description from master
- FAQ schema for rich snippets from this branch
2026-02-08 15:20:49 +00:00
Jamie Mallers
51cf4a88bf SEO: Add FAQ schema + enhance Better Uptime comparison content
Changes:
1. Add JSON-LD FAQ schema to all compare pages for rich snippets
2. Expand Better Uptime FAQs from 4 to 8 questions
3. Add more detailed answers covering:
   - Better Uptime → Better Stack rebrand context
   - Self-hosting advantages
   - Detailed pricing comparison
   - Feature differences

Target: /compare/better-uptime at position 13.5 for 'better uptime' query
Expected: Rich snippet eligibility + better content relevance
2026-02-08 09:21:54 +00:00
Simon Larsen
0dfd38d263 Merge pull request #2275 from OneUptime/fix/seo-compare-page-titles
fix(seo): improve compare page title tags for better CTR
2026-02-07 20:44:53 +00:00
Simon Larsen
66424eee24 Merge pull request #2274 from OneUptime/fix/seo-meta-descriptions
fix(seo): unique meta descriptions for product pages
2026-02-07 20:44:14 +00:00
Simon Larsen
93adee4b16 Merge pull request #2273 from OneUptime/fix/seo-noindex-tag-pages
fix(seo): noindex tag pages and remove from sitemap
2026-02-07 20:42:57 +00:00
Jamie Mallers
d7efe2445c fix(seo): improve compare page title tags for better CTR
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)
2026-02-07 17:01:18 +00:00
Jamie Mallers
1bf4c52518 fix(seo): unique meta descriptions for product pages
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
2026-02-07 16:53:21 +00:00
Jamie Mallers
8348bf6897 fix(seo): noindex tag pages and remove from sitemap
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
2026-02-07 15:49:51 +00:00
Simon Larsen
7f2192206f Merge pull request #2272 from OneUptime/prefix-alert-number
Prefix alert number
2026-02-06 20:50:57 +00:00
Nawaz Dhandala
ddf7636965 Set default number prefixes for incident, alert, and maintenance numbers in ProjectService 2026-02-06 20:48:02 +00:00
Nawaz Dhandala
52514fbb7e Rename parameter onCreate to _onCreate in onCreateSuccess method for clarity 2026-02-06 20:40:21 +00:00
Nawaz Dhandala
2c3521561d Add type annotations to fix ESLint typedef errors for numberResult variables
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 20:31:31 +00:00
Nawaz Dhandala
8d6ef5a277 Refactor alert and incident number display formatting
- 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.
2026-02-06 20:27:35 +00:00
Nawaz Dhandala
726ae7ef98 Fix prefix display in UI tables and detail views by adding WithPrefix to selectMoreFields
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>
2026-02-06 20:19:52 +00:00
Nawaz Dhandala
fde974d968 Add alertNumberWithPrefix support to AlertEpisodeMemberService and UserNotificationRuleService
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 20:08:08 +00:00
Nawaz Dhandala
eae5e026fa Add prefix support to monitor evaluation log incident/alert number display
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 20:00:44 +00:00
Nawaz Dhandala
5b01743e74 Add alertNumberWithPrefix support to AlertOwners Worker notification files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 19:53:01 +00:00
Nawaz Dhandala
2cfc6a5e68 feat: Add migration for new prefix fields in Project, Incident, Alert, and ScheduledMaintenance tables 2026-02-06 19:46:40 +00:00
Nawaz Dhandala
0976df1bee feat: Add custom prefixes for alert, incident, and scheduled maintenance numbers
- 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.
2026-02-06 19:43:11 +00:00
Nawaz Dhandala
caa59aea7e Refactor Analytics event tracking for consistent string quoting 2026-02-06 14:46:44 +00:00
Nawaz Dhandala
ab5e0ec3c4 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-02-06 14:43:21 +00:00
Nawaz Dhandala
f4eda526c5 Remove semaphore mutex implementation from AlertEpisodeService and IncidentEpisodeService for simplified episode creation 2026-02-06 14:43:19 +00:00
Nawaz Dhandala
19f347a826 Remove semaphore mutex implementation from AlertService, IncidentService, and ScheduledMaintenanceService for simplified alert and incident creation 2026-02-06 14:39:49 +00:00
Nawaz Dhandala
7eb84c2fb0 Refactor increment methods in ProjectService to use atomicIncrementColumnValueByOne for better code reuse 2026-02-06 14:32:30 +00:00
Nawaz Dhandala
a27f3953ab Add counters for incidents, alerts, and scheduled maintenance to Project model and implement corresponding increment methods 2026-02-06 14:30:16 +00:00
Simon Larsen
4ec162208b Merge pull request #2269 from OneUptime/fix/add-ga4-conversion-tracking
Add GA4 conversion tracking for demo bookings and CTA clicks
2026-02-06 00:00:01 +00:00
Jamie Mallers
13482b13d7 Add GA4 tracking to Analytics module for signup and all events
- 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
2026-02-05 23:52:33 +00:00
Jamie Mallers
69c0253862 Add GA4 conversion tracking for demo bookings and CTA clicks
- Add GA4 gtag event tracking alongside PostHog for demo bookings
- Add dataLayer push for GTM compatibility
- Add CTA click tracking for 'Get started' and 'Request demo' buttons
- Enable conversion funnel analysis in Google Analytics

This fixes the issue where GA4 Key Events showed 0 conversions
despite demos being booked (only tracked in PostHog previously).
2026-02-05 23:42:10 +00:00
Nawaz Dhandala
92d8b7b425 Add computed property to various database models 2026-02-05 15:23:06 +00:00
Nawaz Dhandala
0ef053dc3d Add computed property to schedule next event column in ScheduledMaintenanceTemplate 2026-02-05 13:52:34 +00:00
Nawaz Dhandala
fa0bd99bc8 Bump version to 9.5.3 2026-02-05 12:58:30 +00:00
Simon Larsen
68b6ca9fd3 Merge pull request #2267 from OneUptime/episode-status-page
Episode status page
2026-02-05 12:58:03 +00:00
Simon Larsen
cd9b711ee4 Merge pull request #2268 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-05 12:56:59 +00:00
Nawaz Dhandala
b05d1652e1 Implement logic to mark episode public notes and state timelines as Skipped for subscriber notifications 2026-02-05 12:52:55 +00:00
Nawaz Dhandala
d971573db0 Refactor code for improved readability and consistency
- 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.
2026-02-05 12:48:13 +00:00
Nawaz Dhandala
5a11518c31 Add episode settings section to Alert Grouping Rules page 2026-02-05 12:47:09 +00:00
Nawaz Dhandala
ce4f41367b Add episode settings section to Incident Grouping Rules page 2026-02-05 12:44:37 +00:00
Nawaz Dhandala
f553726186 Refactor code structure for improved readability and maintainability 2026-02-05 12:32:56 +00:00
Nawaz Dhandala
1bd746b285 Update icon SVG path for improved rendering and clarity 2026-02-05 12:14:41 +00:00
Nawaz Dhandala
82558fda59 Add episode management features to Status Page
- 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.
2026-02-05 12:11:41 +00:00
Nawaz Dhandala
3f1fe2bf1c Preserve monitor data in episodes from raw JSON and update serialization logic 2026-02-05 12:00:57 +00:00
Nawaz Dhandala
d00fa80e47 Add monitor mapping and resource filtering for episode events in Detail component 2026-02-05 11:40:37 +00:00
Nawaz Dhandala
dc4805c3b2 Add settings page for incident episodes with routing and UI integration 2026-02-05 11:27:50 +00:00
Nawaz Dhandala
642fb95209 Replace Toggle components with Checkbox in MonitorCriteriaAlertForm and MonitorCriteriaIncidentForm 2026-02-05 11:19:06 +00:00
Nawaz Dhandala
01baf60b2e Add endpoint and logic for retrieving incident episode public note attachments 2026-02-05 10:52:03 +00:00
simlarsen
225679f5d3 chore: npm audit fix 2026-02-05 02:25:19 +00:00
Nawaz Dhandala
51f16e2213 Add public notes feature for incident episodes with routing and UI integration 2026-02-04 21:55:32 +00:00
Nawaz Dhandala
0af23bbacb Add migration for new StatusPage fields and update index 2026-02-04 20:36:14 +00:00
Nawaz Dhandala
7b446a853c Add migration for StatusPage enhancements and OnCallDutyPolicyScheduleLayer defaults 2026-02-04 20:35:43 +00:00
Nawaz Dhandala
df480577ab Clarify comments regarding incident visibility and episode display logic in StatusPageAPI 2026-02-04 20:33:42 +00:00
Nawaz Dhandala
c031cc2af3 Refactor incident query logic to clarify episode visibility criteria on status page 2026-02-04 20:31:26 +00:00
Nawaz Dhandala
ae17820d0d Add subscriber episode notification templates for incident updates 2026-02-04 20:28:37 +00:00
Nawaz Dhandala
f2f3900506 Refactor notification templates and job scripts to replace "Episode" with "Incident" for consistency across the application. 2026-02-04 20:26:49 +00:00
Nawaz Dhandala
4c8b92144c Refactor code for improved readability and consistency: adjust formatting, enhance type annotations, and streamline notification logging in various files. 2026-02-04 20:20:08 +00:00
Nawaz Dhandala
4c45e16f56 Refactor episode handling: remove EpisodeDetail component and update routing; enhance incident and episode event item retrieval 2026-02-04 20:13:25 +00:00
Nawaz Dhandala
53e39724e7 Add episode management features to status page: enable episode display, history, and labels 2026-02-04 20:09:01 +00:00
Nawaz Dhandala
849882d868 Add notification jobs for incident episode public notes and state timelines
- 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.
2026-02-04 19:11:44 +00:00
Nawaz Dhandala
e3f8af83e5 Add showIncidentOnStatusPage feature to CriteriaIncident and update forms 2026-02-04 18:30:06 +00:00
Simon Larsen
18a5559116 Merge pull request #2265 from OneUptime/compare-pages-seo-improvement
Improve compare page SEO: add 'open-source alternative' positioning
2026-02-03 15:20:18 +00:00
Jamie Mallers
3c3ecfc698 Enhance compare pages: stronger positioning and CTAs
- 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.
2026-02-03 15:16:51 +00:00
Jamie Mallers
c22f7fec46 Improve compare page SEO: add 'open-source alternative' positioning
- Title: 'OneUptime vs [Competitor]: Open-Source Alternative | 2026 Comparison'
- Meta: Highlights open-source, alternative positioning, and all-in-one value prop
- Targets high-intent search terms: '[competitor] alternative', 'open source [competitor]'

Affects all /compare/* pages (Datadog, PagerDuty, New Relic, Statuspage, etc.)
2026-02-03 15:12:45 +00:00
Simon Larsen
75d473f6d7 Merge pull request #2264 from OneUptime/homepage-messaging-update
Update homepage messaging: lead with open-source positioning
2026-02-03 15:04:40 +00:00
Jamie Mallers
5d8f8e248e Update homepage messaging: lead with open-source positioning
- 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.
2026-02-03 14:54:29 +00:00
Simon Larsen
a7c3ea274f Merge pull request #2263 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-02-03 08:13:39 +00:00
simlarsen
da324f49d9 chore: npm audit fix 2026-02-03 02:29:12 +00:00
Nawaz Dhandala
6fd9223ee9 refactor: Improve code formatting for better readability in UserSettings components 2026-02-02 19:36:32 +00:00
Nawaz Dhandala
c062d651e8 chore: Bump version number to 9.5.2 2026-02-02 19:35:12 +00:00
Nawaz Dhandala
1c264ac5a1 feat: Enhance User Settings with Incident On-Call Rules and related components 2026-02-02 19:31:58 +00:00
Nawaz Dhandala
8923a4bff6 feat: Format MicrosoftTeamsIntegration component for improved readability 2026-02-02 18:29:57 +00:00
Nawaz Dhandala
ab4e0cf85f chore: Bump version number to 9.5.1 2026-02-02 18:29:48 +00:00
Nawaz Dhandala
8f63e93eba feat: Replace ComingSoon component with MicrosoftTeamsIntegration for immediate functionality 2026-02-02 18:26:52 +00:00
Nawaz Dhandala
c06697f299 chore: Clean up whitespace in migration file for better readability 2026-02-02 18:21:51 +00:00
Nawaz Dhandala
2590a8d671 feat: Refactor DashboardSideMenu to use sections for better organization and readability 2026-02-02 18:20:55 +00:00
Nawaz Dhandala
e4eadc297b feat: Update Dashboard SideMenu to rename "Overview" to "Monitors" and conditionally add "Monitor Groups" section 2026-02-02 18:05:45 +00:00
Nawaz Dhandala
d0bf351dc1 feat: Add monitorId column and constraints to log tables in migration 2026-02-02 17:56:22 +00:00
Nawaz Dhandala
3234cc7d09 feat: Add migration for monitorId integration and schema updates across log tables 2026-02-02 17:46:50 +00:00
Nawaz Dhandala
0158271e6a feat: Add monitorId support across notification services and logs, and implement Notification Logs page 2026-02-02 17:44:25 +00:00
Nawaz Dhandala
9d50bf2535 chore: Bump version to 9.5.0 2026-02-01 16:19:28 +00:00
Nawaz Dhandala
c8ca2eacc5 fix: Improve descriptions for note reminder intervals and templates in IncidentSlaRule 2026-02-01 16:18:42 +00:00
Nawaz Dhandala
66699901a7 refactor: Simplify function signatures and improve code readability in Sla.tsx 2026-02-01 16:13:20 +00:00
Nawaz Dhandala
68a33eee2f feat: Enhance SLA management by integrating incident state timeline for accurate response and resolution tracking 2026-02-01 16:04:50 +00:00
Nawaz Dhandala
016793d77d feat: Implement SLA rule management with add and remove functionality in IncidentViewSla 2026-02-01 16:00:52 +00:00
Nawaz Dhandala
7b040b659d fix: Update SlaCard to consider incident resolution status for completion state 2026-02-01 15:56:54 +00:00
Nawaz Dhandala
c6db71f383 fix: Convert modelId and projectId to strings for stable dependency references in IncidentViewSla 2026-02-01 15:50:07 +00:00
Nawaz Dhandala
16923c750b feat: Add canReadOnRelationQuery property to IncidentSlaRule model and enhance SLA timers with real-time updates 2026-02-01 15:49:07 +00:00
Nawaz Dhandala
f57173f43c fix: Update sorting field in SLA tracking to use 'slaStartedAt' instead of 'createdAt' 2026-02-01 15:42:45 +00:00
Nawaz Dhandala
9716d138ea refactor: Update fetchStates function type annotation and simplify error handling in EpisodeAlerts and EpisodeIncidents components 2026-02-01 15:34:18 +00:00
Nawaz Dhandala
8e1b6859f5 feat: Add support for incident episode notification rule type and update default title generation to use 'Untitled Episode' 2026-02-01 15:28:38 +00:00
Nawaz Dhandala
9751dd0d5f refactor: Update episode title generation to remove prefix and use 'Untitled Episode' as default 2026-02-01 15:21:47 +00:00
Nawaz Dhandala
e84bd95f49 feat: Add canReadOnRelationQuery property to Alert and Incident models 2026-02-01 14:10:13 +00:00
Nawaz Dhandala
02b76539ab feat: Fetch and display alert and incident states in episode views 2026-02-01 14:07:46 +00:00
Nawaz Dhandala
c40c33773b feat: Add action buttons and current state display for alerts and incidents in episode views 2026-02-01 13:55:49 +00:00
Nawaz Dhandala
b0cebf9338 refactor: Improve code structure and readability in role assignment components 2026-02-01 13:47:39 +00:00
Nawaz Dhandala
674e35dc70 refactor: Improve code readability by formatting and simplifying filter/map functions in various components 2026-02-01 13:44:07 +00:00
Nawaz Dhandala
d5f42141a0 feat: Enhance Episode Member Role Assignments with user selection and role management 2026-02-01 13:41:54 +00:00
Nawaz Dhandala
8fb6da7d41 feat: Add Episode Member Role Assignments form field for incident grouping rules 2026-02-01 13:39:41 +00:00
Nawaz Dhandala
d14e77ee7f feat: Implement role assignment functionality for incident episodes with UI components 2026-02-01 13:29:31 +00:00
Nawaz Dhandala
71e8a70717 feat: Add IncidentEpisodeRoleMember service and model to BaseAPI feature set 2026-02-01 13:20:21 +00:00
Nawaz Dhandala
370bdc6e21 feat: Refactor MonitorCriteria components to use dedicated UI elements for teams, users, and labels 2026-02-01 13:09:07 +00:00
Nawaz Dhandala
d2a5d037c1 feat: Add support for labels, teams, users, and incident roles in monitor criteria components 2026-02-01 13:02:53 +00:00
Nawaz Dhandala
1ffa87d322 feat: Update title of My On-Call Policies card to reflect active assignments 2026-02-01 12:48:45 +00:00
Nawaz Dhandala
28ffde7983 feat: Enhance My On-Call Policies page with project details and improved UI components 2026-02-01 12:48:17 +00:00
Nawaz Dhandala
4655e207a5 feat: Add My On-Call Policies page and integrate routing 2026-02-01 12:44:00 +00:00
Nawaz Dhandala
62a5b216a0 feat: Update collapsible section titles for clarity in Monitor Criteria forms 2026-02-01 12:33:15 +00:00
Nawaz Dhandala
79fb9d18ca feat: Conditionally render Test Monitor Card based on monitor type 2026-02-01 12:28:23 +00:00
Nawaz Dhandala
ba5e8fdaeb feat: Simplify Monitor Criteria section by removing conditional rendering 2026-02-01 12:26:50 +00:00
Nawaz Dhandala
aa31bbab45 feat: Refactor Ownership & Labels section in MonitorCriteriaIncidentForm with improved dropdown handling 2026-02-01 12:22:27 +00:00
Nawaz Dhandala
3c84365d61 feat: Add reassign functionality for member roles with modal confirmation 2026-02-01 12:13:57 +00:00
Nawaz Dhandala
ae59bd8300 feat: Enhance incident member assignment logic to include primary role assignments for creators 2026-02-01 12:08:34 +00:00
Nawaz Dhandala
b868206e82 feat: Improve user assignment flow with enhanced dropdown handling and feedback 2026-02-01 12:05:23 +00:00
Nawaz Dhandala
ddbf971f1f feat: Reorder Owners item in SideMenu for improved accessibility 2026-02-01 12:01:35 +00:00
Nawaz Dhandala
483578ba4d refactor: Remove unused owner teams and users fields from incident creation 2026-02-01 12:00:41 +00:00
Nawaz Dhandala
614cb4413e feat: Enhance user assignment button with disabled state and tooltip for clarity 2026-02-01 11:57:47 +00:00
Nawaz Dhandala
ad43fc2df2 fix: Adjust icon size in MemberRoleAssignment component for better visibility 2026-02-01 11:54:44 +00:00
Nawaz Dhandala
aa2a6deb9e feat: Refactor role assignments to use useRef for better performance and update role assignment handling in IncidentCreate 2026-02-01 11:51:28 +00:00
Nawaz Dhandala
dcb13bb401 feat: Add showEvenIfPermissionDoesNotExist option to incident roles assignment 2026-02-01 11:40:00 +00:00
Nawaz Dhandala
5260364e91 fix lint 2026-01-30 20:38:36 +00:00
Nawaz Dhandala
1938e620bb feat: Update role assignment label to clarify multiple user assignment for incident roles 2026-01-30 20:32:27 +00:00
Nawaz Dhandala
c3fd71dcd4 feat: Enhance incident role assignment functionality with new IncidentRoleFormField component and support for multiple user assignments 2026-01-30 20:24:34 +00:00
Nawaz Dhandala
aba191c533 feat: Implement validation for primary roles to restrict multiple user assignments and update IncidentRoles component to include toggle for multiple user assignment 2026-01-30 20:09:31 +00:00
Nawaz Dhandala
847c019aea feat: Add canAssignMultipleUsers field to IncidentRole and update related components for multi-user assignment 2026-01-30 19:55:13 +00:00
Nawaz Dhandala
edf05944c1 feat: Add roleIcon to MemberRole and IncidentMemberRoleAssignment for enhanced role representation 2026-01-30 19:48:13 +00:00
Nawaz Dhandala
5293876943 feat: Update MemberRoleAssignment to allow single member assignment per role and improve user dropdown options 2026-01-30 19:42:51 +00:00
Nawaz Dhandala
ca7a702c13 feat: Add createdAt field to user selection in IncidentMemberRoleAssignment 2026-01-30 19:37:42 +00:00
Nawaz Dhandala
4020b4b647 feat: Update SideMenu section titles for clarity and consistency 2026-01-30 19:34:44 +00:00
Nawaz Dhandala
650849f4ad feat: Rename Members page to Roles and implement role assignment component 2026-01-30 19:09:06 +00:00
Nawaz Dhandala
9098261ac0 feat: Enhance user role assignment logic by validating role assignments and filtering available users by role 2026-01-30 19:07:28 +00:00
Nawaz Dhandala
70c6abbb86 feat: Add alert and incident episode counts with real-time updates in DashboardHeader 2026-01-30 14:15:52 +00:00
Nawaz Dhandala
23bc5531f0 feat: Add Incident SLA and Incident SLA Rule services and models to BaseAPI 2026-01-30 14:07:55 +00:00
Nawaz Dhandala
20404458e2 refactor: Remove dynamic imports of IncidentService and IncidentSlaService for improved performance 2026-01-30 14:00:44 +00:00
Nawaz Dhandala
31d3ce949d Refactor and clean up code across multiple files
- 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.
2026-01-30 13:50:50 +00:00
Nawaz Dhandala
61ed224ad0 feat: Add Incident SLA and related tables with migration 2026-01-30 13:39:46 +00:00
Nawaz Dhandala
71ea76ee62 feat: Implement Incident SLA Management System
- 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.
2026-01-30 13:03:48 +00:00
Nawaz Dhandala
7a4a0553ca fix: Update fetchData dependencies to use string representations of incidentId and projectId 2026-01-30 12:26:22 +00:00
Nawaz Dhandala
cb57fa4a07 feat: Add new icon types (Compass, Disc, Grid) to Icon component 2026-01-30 12:20:47 +00:00
Nawaz Dhandala
22bc222689 feat: Refactor IconPicker and RoleLabel components for improved icon handling and styling 2026-01-30 12:12:21 +00:00
Nawaz Dhandala
9d96170c42 feat: Add migration for roleIcon column in IncidentRole and update OnCallDutyPolicyScheduleLayer defaults 2026-01-30 12:03:01 +00:00
Nawaz Dhandala
d0f4d21177 feat: Change roleIcon type from string to IconProp in IncidentRole model 2026-01-30 11:59:18 +00:00
Nawaz Dhandala
e9a2167484 feat: Rename icon to roleIcon in IncidentRole model and update references in IncidentRoles and CustomFields components 2026-01-30 11:59:03 +00:00
Nawaz Dhandala
a8af991a80 feat: Add IconPicker component and integrate icon selection in IncidentRoles 2026-01-30 11:52:21 +00:00
Nawaz Dhandala
8bb3a5b7ac feat: Replace Pill with RoleLabel component in IncidentRoles for enhanced role display 2026-01-30 11:45:22 +00:00
Nawaz Dhandala
d0b1efb660 feat: Add isEditable prop to CustomFieldsDetail and set it in UserView 2026-01-30 11:34:24 +00:00
Nawaz Dhandala
4f3259c3b1 feat: Enhance user profile creation with HTTP response handling and validation 2026-01-30 11:31:42 +00:00
Nawaz Dhandala
30b53a90a4 feat: Reorder profile section in SideMenu for improved organization 2026-01-30 11:31:00 +00:00
Nawaz Dhandala
cf8377ceec feat: Add custom fields management for team members and user profiles
- 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.
2026-01-30 11:28:00 +00:00
Nawaz Dhandala
ffc7dbc35f feat: Update user notification event type for incident episode creation 2026-01-30 11:01:23 +00:00
Nawaz Dhandala
97fd817db4 feat: Enhance change plan API with payment method validation and error handling 2026-01-30 10:50:19 +00:00
Nawaz Dhandala
aa7caaa193 feat: Add validation for payment provider customer and methods before changing plan 2026-01-30 10:48:08 +00:00
Nawaz Dhandala
a05853ea09 feat: Move NotificationBell component to the right section for improved visibility 2026-01-30 10:45:26 +00:00
Nawaz Dhandala
2ba96c093d feat: Update NotificationBell to improve badge count logic and display based on alert types 2026-01-30 10:43:56 +00:00
Nawaz Dhandala
ed3df77ca4 feat: Refactor NotificationBell and related components for improved alert handling and UI consistency 2026-01-30 10:39:35 +00:00
Nawaz Dhandala
9ec363d222 feat: Implement notification system with NotificationBell and related components 2026-01-30 10:29:33 +00:00
Nawaz Dhandala
a090ec2747 feat: Enhance migration and service files for incident roles and alert grouping
- 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.
2026-01-29 22:09:38 +00:00
Nawaz Dhandala
9fde4fece9 feat: Add migration for IncidentEpisodeRoleMember and related grouping rules 2026-01-29 22:03:40 +00:00
Nawaz Dhandala
596798801a feat: Add episode configuration fields and role assignments to incident and alert grouping rules 2026-01-29 21:59:13 +00:00
Nawaz Dhandala
dcc87c46b2 feat: Implement Incident Episode Role Member functionality and UI components 2026-01-29 21:51:49 +00:00
Nawaz Dhandala
33fdabaea3 feat: Add migration to assign default incident roles to existing projects 2026-01-29 21:41:30 +00:00
Nawaz Dhandala
35deea863b feat: Refactor incident member role assignment and improve code readability across components 2026-01-29 21:39:29 +00:00
Nawaz Dhandala
2b2bbbdd55 feat: Add incident member role assignment functionality to MonitorIncident and related components 2026-01-29 21:38:41 +00:00
Nawaz Dhandala
d8cd92c504 feat: Update title and description in ListByTag.ejs for improved SEO 2026-01-29 21:38:17 +00:00
Nawaz Dhandala
f6ef2fa97d feat: Add IncidentMemberRoleAssignment component for managing team member roles in incidents 2026-01-29 21:25:03 +00:00
Nawaz Dhandala
8a86f6a94f feat: Implement auto-assignment of Incident Commander during state changes 2026-01-29 21:14:33 +00:00
Nawaz Dhandala
4b30274915 feat: Add incident member notification system with email and WhatsApp templates 2026-01-29 21:09:44 +00:00
Nawaz Dhandala
01f7d7cc78 feat: Refactor routing and add ActiveIncidents and ActiveAlerts components 2026-01-29 20:59:58 +00:00
Nawaz Dhandala
616e64110a feat: Add MigrationName1769719826928 to implement isPrimaryRole and isDeleteable fields in IncidentRole 2026-01-29 20:51:00 +00:00
Nawaz Dhandala
903a72a4e1 feat: Add isPrimaryRole and isDeleteable fields to IncidentRole model and update related service logic 2026-01-29 20:50:17 +00:00
Nawaz Dhandala
699c1d4341 feat: Update MigrationName1769719135546 to include down method and fix formatting 2026-01-29 20:42:13 +00:00
Nawaz Dhandala
078a4e8180 Merge branch 'incident-roles' 2026-01-29 20:39:52 +00:00
Nawaz Dhandala
29232e7052 feat: Add new migration MigrationName1769719135546 to schema migrations 2026-01-29 20:39:29 +00:00
Nawaz Dhandala
a221f7247c feat: Remove startsAt and endsAt fields from IncidentMember model and update related migration 2026-01-29 20:39:12 +00:00
Simon Larsen
c4b5aca463 Merge pull request #2259 from OneUptime/incident-roles
feat: Add Incident Member and Role Management
2026-01-29 20:32:09 +00:00
Nawaz Dhandala
9de4be6661 chore: Remove unnecessary blank lines in SettingsRoutes component 2026-01-29 20:31:57 +00:00
Simon Larsen
a532dcdd5f Merge pull request #2260 from digitalsparky/patch-1
Fix installation command to ensure it can follow the redirect
2026-01-29 20:20:35 +00:00
Simon Larsen
bde09d2326 Merge pull request #2261 from digitalsparky/patch-2
Modify clone instructions for release branch
2026-01-29 20:19:40 +00:00
Matt Spurrier
b36ac68026 Modify clone instructions for release branch
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.
2026-01-30 04:02:16 +08:00
Matt Spurrier
200a94692e Fix installation command to ensure it can follow the redirect
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
2026-01-30 03:42:58 +08:00
Nawaz Dhandala
3afc3a3302 feat: Add IncidentRole and IncidentMember APIs to BaseAPIFeatureSet 2026-01-29 19:16:23 +00:00
Nawaz Dhandala
fa52c30462 feat: Add Incident Roles page and update routing in incidents and settings 2026-01-29 19:09:19 +00:00
Nawaz Dhandala
c229936d5c Refactor permission arrays in database models to improve formatting consistency
- 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.
2026-01-29 18:58:05 +00:00
Nawaz Dhandala
70b2fb8c16 feat: Add IncidentRole and IncidentMember migration with constraints and indexes 2026-01-29 18:54:51 +00:00
Nawaz Dhandala
264613c676 feat: Rename On-Call Users to Members and update related routes and components 2026-01-29 16:52:50 +00:00
Nawaz Dhandala
61209f967f refactor: Remove order field from IncidentRole model and related services 2026-01-29 16:50:59 +00:00
Nawaz Dhandala
f82de89f3f feat: Add Incident Member and Role Management
- 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.
2026-01-29 16:33:52 +00:00
Nawaz Dhandala
b94a095bef feat: add ReadAllProjectResources permission to various models
- 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.
2026-01-29 15:03:22 +00:00
Simon Larsen
c08de3da35 Merge pull request #2258 from OneUptime/monitor-ui
feat: Add support for labels and ownership in Monitor Alert and Incid…
2026-01-29 14:09:25 +00:00
Nawaz Dhandala
748e18fd1b fix: Correct type annotation for updateField function in MonitorCriteriaAlertForm and MonitorCriteriaIncidentForm 2026-01-29 14:09:08 +00:00
Nawaz Dhandala
c0d7c34018 refactor: Improve code readability by formatting multiline expressions and consistent function signatures in Monitor components 2026-01-29 14:04:42 +00:00
Nawaz Dhandala
e249ee6e59 feat: Add support for labels and ownership in Monitor Alert and Incident forms
- 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.
2026-01-29 14:02:55 +00:00
Simon Larsen
9eca0153ce Merge pull request #2257 from OneUptime/monitor-ui
feat: Refactor MonitorStep component to use CollapsibleSection for ad…
2026-01-29 13:34:13 +00:00
Nawaz Dhandala
c4deb0d0b4 feat: Refactor MonitorStep component to use CollapsibleSection for advanced options and improve UI structure
- 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.
2026-01-29 13:28:33 +00:00
Simon Larsen
7ecd86eca7 Merge pull request #2256 from elmy-team/fix-missing-redis-existing-secret
Fix missing Redis & ClickHouse existing secrets
2026-01-29 12:09:37 +00:00
Matías Plaza
f3312a2417 fix(helm-chart): add missing existing secret condition for clickhouse 2026-01-29 10:52:33 +01:00
Nawaz Dhandala
e0558a4a0a chore: Bump version to 9.4.13 2026-01-29 09:07:31 +00:00
Nawaz Dhandala
e2a238e3e3 refactor: Simplify imports and improve type annotations in IncidentEpisode services 2026-01-29 09:06:32 +00:00
Nawaz Dhandala
543c62df5a feat: Implement AI-generated postmortem functionality for IncidentEpisode 2026-01-29 09:05:42 +00:00
Matías Plaza
382c838d40 fix(helm-chart): add missing existing secret condition for redis 2026-01-29 10:04:31 +01:00
Nawaz Dhandala
1a88832efc feat: Enhance EpisodePostmortem component with template functionality 2026-01-29 09:01:07 +00:00
Nawaz Dhandala
d1f97a3193 feat: Add canReadOnRelationQuery property to Incident model 2026-01-29 08:58:18 +00:00
Nawaz Dhandala
70a269b662 fix: Update icons in DashboardSideMenu for better clarity 2026-01-29 08:56:23 +00:00
Nawaz Dhandala
a4ae42fd08 feat: Add create episode button to IncidentEpisodesTable component 2026-01-29 08:54:05 +00:00
Simon Larsen
6c0161543a Merge pull request #2255 from OneUptime/snmp-monitor
Snmp monitor
2026-01-29 08:45:54 +00:00
Nawaz Dhandala
4519292cc8 feat: Add migration to rename 'eveluateOverTime' to 'evaluateOverTime' in Monitor table 2026-01-29 08:42:34 +00:00
Nawaz Dhandala
83993fc2a4 fix: Correct spelling of 'evaluateOverTime' in multiple criteria files 2026-01-29 08:38:35 +00:00
Simon Larsen
5340b04b26 Merge pull request #2253 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-29 08:28:58 +00:00
Nawaz Dhandala
2a6003e78f refactor: Add type annotations for functions in SnmpOidEditor and SnmpMonitor 2026-01-29 08:28:23 +00:00
Nawaz Dhandala
bfed03a10e refactor: Improve code formatting and readability in SNMP monitor components 2026-01-29 08:24:51 +00:00
Nawaz Dhandala
d99b20327f feat: Update SNMP monitor implementation and add net-snmp dependency 2026-01-29 08:22:04 +00:00
Nawaz Dhandala
3a317a8b55 feat: Enhance E2E test execution with retry mechanism 2026-01-29 08:09:32 +00:00
Nawaz Dhandala
0c64ba30b0 fix: Correct URL construction in generateBlogSitemapXml function 2026-01-29 08:08:40 +00:00
simlarsen
4400a7e5dd chore: npm audit fix 2026-01-29 02:15:00 +00:00
Nawaz Dhandala
45aab853c4 feat: Add SNMP monitor documentation with configuration and usage details 2026-01-28 23:26:10 +00:00
Nawaz Dhandala
b37c13d347 feat: Enhance monitor destination handling for SNMP monitors 2026-01-28 23:21:32 +00:00
Nawaz Dhandala
d13407494b feat: Implement SNMP monitor support with criteria and view components 2026-01-28 23:06:13 +00:00
Nawaz Dhandala
724ab97874 feat: Add SNMP Monitor functionality with v3 authentication support
- 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.
2026-01-28 22:56:28 +00:00
Nawaz Dhandala
15e2fdcf48 feat: add IncidentGroupingRule service and router integration 2026-01-28 21:10:37 +00:00
Simon Larsen
3a546f9b5a Merge pull request #2254 from OneUptime/incident-episodes
feat: Add Incident Episode Management Pages and Components
2026-01-28 20:32:17 +00:00
Nawaz Dhandala
291a0f12f1 feat: Enhance Incident Grouping Rules Migration and UI Components
- 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.
2026-01-28 20:27:23 +00:00
Nawaz Dhandala
3d62b67bca feat: add IncidentGroupingRule migration with related tables and constraints 2026-01-28 19:55:03 +00:00
Nawaz Dhandala
4c31c2b651 feat: add incidentEpisodeId to multiple service classes 2026-01-28 19:42:44 +00:00
Nawaz Dhandala
acdcb2d5da feat: add IncidentGroupingRuleService and IncidentGroupingRules page
- 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.
2026-01-28 19:31:13 +00:00
Nawaz Dhandala
43084263ab feat: Add tabs for Incident and Incident Episodes in Microsoft Teams and Slack pages 2026-01-28 19:10:10 +00:00
Nawaz Dhandala
1bbc953462 Refactor and clean up code across multiple services and components
- 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.
2026-01-28 18:49:22 +00:00
Nawaz Dhandala
7cef3956e8 feat: Add IncidentEpisode migration with related tables and constraints 2026-01-28 18:48:36 +00:00
Nawaz Dhandala
4904a535d1 feat: Add Active Incident Episodes page and integrate with SideMenu 2026-01-28 18:47:26 +00:00
Nawaz Dhandala
5db511036e feat: Add notification handling for Incident Episodes and enhance Push Notification utility 2026-01-28 18:40:39 +00:00
Nawaz Dhandala
8b9023d93d feat: Add incident episode auto-resolution and notification jobs
- 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.
2026-01-28 18:30:45 +00:00
Nawaz Dhandala
0546d1fb12 feat: Enhance User Notification and OnCall Duty Policy services to support Incident Episode handling 2026-01-28 18:13:09 +00:00
Nawaz Dhandala
d523ae822d feat: Implement Incident Episode services, routes, and notification templates 2026-01-28 18:07:36 +00:00
Nawaz Dhandala
9fd781c083 feat: Add Slack and Workspace message handling for 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.
2026-01-28 18:00:10 +00:00
Nawaz Dhandala
8d743dbb59 feat: Add Incident Episode creation functionality and related routes 2026-01-28 17:19:15 +00:00
Nawaz Dhandala
5b3e97c10d feat: Add Incident Episode Management Pages and Components
- 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.
2026-01-28 17:10:08 +00:00
Nawaz Dhandala
252a81c9ae chore: bump version to 9.4.12 2026-01-28 15:50:27 +00:00
Nawaz Dhandala
e6b414a94b feat: enhance project fetching in NewAlerts and NewIncidents components with ListResult type 2026-01-28 15:50:15 +00:00
Nawaz Dhandala
f521091f8e feat: update project filter to use projectId and change filter type to EntityArray in NewAlerts and NewIncidents components 2026-01-28 15:46:08 +00:00
Nawaz Dhandala
19e112a8a8 feat: add project filter functionality to NewAlerts and NewIncidents components 2026-01-28 15:33:35 +00:00
Nawaz Dhandala
84dd084dae feat: add saveFilterProps to NewAlerts and NewIncidents components for improved table filtering 2026-01-28 13:08:56 +00:00
Nawaz Dhandala
439c1f8716 style: format code for improved readability in EpisodeCreate component 2026-01-28 12:59:00 +00:00
Nawaz Dhandala
647b713375 feat: add episode creation functionality with form and routing 2026-01-28 12:58:16 +00:00
Nawaz Dhandala
a2e6b7a4fc feat: add Stripe type definitions and improve type safety in Billing and Project services 2026-01-28 12:09:41 +00:00
Nawaz Dhandala
b06bc71a2c refactor: improve logging and code formatting in billing and project services 2026-01-28 12:08:01 +00:00
Nawaz Dhandala
367a80c413 fix: remove unused status field from invoice template and billing service 2026-01-28 12:05:03 +00:00
Nawaz Dhandala
f49e4bd5d0 feat: implement invoice email notification system with template and email handling 2026-01-28 12:01:28 +00:00
Nawaz Dhandala
a74a7e0a9a feat: enhance billing functionality with detailed logging for invoice email processes and Stripe synchronization 2026-01-28 11:52:34 +00:00
Nawaz Dhandala
f4946449f3 feat: add migration to introduce sendInvoicesByEmail column and update defaults for OnCallDutyPolicyScheduleLayer 2026-01-28 11:32:44 +00:00
Nawaz Dhandala
9640732e29 feat: implement Stripe webhook for automatic invoice email sending and add configuration for webhook secret 2026-01-28 11:26:22 +00:00
Nawaz Dhandala
6ef5e409da fix: replace Navigation with window.location for redirect after account deletion 2026-01-28 09:53:57 +00:00
Nawaz Dhandala
bcdfa034f6 feat: add user account deletion functionality with confirmation modal 2026-01-28 09:50:25 +00:00
Nawaz Dhandala
959267a174 feat: update NewAlerts and NewIncidents to use alertNumber and incidentNumber with appropriate types 2026-01-28 09:40:42 +00:00
Nawaz Dhandala
767db415d2 fix: conditionally include incidentNumber in notification payloads 2026-01-27 21:11:50 +00:00
Nawaz Dhandala
7ca81aa9f8 chore: bump version to 9.4.11 2026-01-27 20:42:20 +00:00
Nawaz Dhandala
26bd4c7a90 fix: improve readability of conditional check in Delete method 2026-01-27 20:42:00 +00:00
Nawaz Dhandala
9d29a1d00b Refactor Terraform tests to remove project_id references
- 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.
2026-01-27 20:00:41 +00:00
Nawaz Dhandala
935608d23d fix: format condition for attribute import check in DataSourceGenerator 2026-01-27 18:30:58 +00:00
Nawaz Dhandala
4a3000d3c3 feat: add initial Netscape HTTP cookie file for E2E tests 2026-01-27 18:30:17 +00:00
Nawaz Dhandala
b5df7042f7 fix: correct variable name in label validation checks for idempotency test 2026-01-27 18:30:01 +00:00
Nawaz Dhandala
a345390b9b feat: add URL normalization helpers to avoid drift in resource handling 2026-01-27 18:16:28 +00:00
Nawaz Dhandala
d0a8c049ba feat: add support for 'set' type in data source and resource generation, enhancing collection handling 2026-01-27 18:04:51 +00:00
Nawaz Dhandala
56037adcf0 fix: update alert field to use alertId for episode alerts 2026-01-27 16:18:28 +00:00
Nawaz Dhandala
73e2fcf3c6 feat: implement Episode Alerts table with CRUD functionality and enhanced alert display 2026-01-27 16:13:55 +00:00
Nawaz Dhandala
710bdea813 refactor: remove unused alert feed entry creation logic and related parameters 2026-01-27 15:44:11 +00:00
Nawaz Dhandala
f07ba35310 feat: add RemovedFromEpisode event type and update alert feed creation logic 2026-01-27 15:39:43 +00:00
Nawaz Dhandala
9ef2163bc0 feat: add New Alerts page and integrate with routing 2026-01-27 14:32:38 +00:00
Nawaz Dhandala
1f53a56b8f chore: bump version to 9.4.10 2026-01-27 13:55:36 +00:00
Nawaz Dhandala
6998b63f59 feat: enhance alert data retrieval in notification service for improved accuracy 2026-01-27 13:55:21 +00:00
Nawaz Dhandala
dccddf3ebc refactor: define ResourceInfo type for improved type safety in resource info retrieval 2026-01-27 13:36:43 +00:00
Nawaz Dhandala
2a7d076407 chore: bump version to 9.4.9 2026-01-27 13:33:00 +00:00
Nawaz Dhandala
0e82b17f6b refactor: format code for better readability in notification handling 2026-01-27 13:30:37 +00:00
Nawaz Dhandala
0aa7838fc5 feat: include alert numbers in push notification titles and bodies for note and state change updates 2026-01-27 13:29:52 +00:00
Nawaz Dhandala
b1d243896f feat: update alert episode notification templates to include episode numbers 2026-01-27 13:26:42 +00:00
Nawaz Dhandala
ab70c2c041 Enhance notification templates and services to include alert and incident numbers
- 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.
2026-01-27 13:19:12 +00:00
Nawaz Dhandala
22b6c5ace0 feat: update email subject and template to include alert episode number 2026-01-27 13:04:04 +00:00
Nawaz Dhandala
ad32579214 feat: enhance alert episode email template with styled alerts list 2026-01-27 13:01:51 +00:00
Nawaz Dhandala
e525cc3708 feat: enhance UserNotificationRuleService to include alert episode members and build alerts list for notifications 2026-01-27 12:56:02 +00:00
Nawaz Dhandala
db7eaacd14 feat: enhance UserNotificationLogTimelineAPI to support Alert Episodes and improve notification handling 2026-01-27 12:52:03 +00:00
Nawaz Dhandala
a549daf9ab refactor: improve code readability by updating comments and formatting in migration and services 2026-01-27 12:45:28 +00:00
Nawaz Dhandala
d9e65ce633 feat: add migration to rename notification rule types in UserNotificationRule 2026-01-27 12:43:00 +00:00
Nawaz Dhandala
be2d33591d refactor: update notification rule types for incidents and alerts 2026-01-27 12:36:00 +00:00
Nawaz Dhandala
88897004a2 refactor: rename fetchSitemap to fetchSitemapXml and update tests for sitemap structure 2026-01-27 12:20:41 +00:00
Simon Larsen
dceccf00fa Merge pull request #2251 from elmy-team/support-existing-secret-clickhouse-redis
Support existing secrets for Redis & ClickHouse
2026-01-27 10:39:44 +00:00
Matías Plaza
f079a2b9e6 feat: support existing secrets for redis & clickhouse 2026-01-27 10:53:29 +01:00
Nawaz Dhandala
4044d705d6 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-01-27 08:44:35 +00:00
Nawaz Dhandala
a2cbe4e241 fix: update containerRef type to remove null from HTMLDivElement reference 2026-01-27 08:43:00 +00:00
Simon Larsen
b509b57bb8 Merge pull request #2250 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-27 08:38:44 +00:00
simlarsen
4a7f27a372 chore: npm audit fix 2026-01-27 02:04:49 +00:00
Nawaz Dhandala
214ac678d3 feat: add triggeredByAlertEpisodeId to on-call related tables and update UserOnCallLogService comments 2026-01-26 23:35:05 +00:00
Nawaz Dhandala
9dabce1b7a feat: add support for alert episode handling in user on-call logs and notifications 2026-01-26 23:34:30 +00:00
Nawaz Dhandala
9bc260847d feat: add migration for triggeredByAlertEpisodeId in on-call related tables 2026-01-26 23:24:27 +00:00
Nawaz Dhandala
229775935e style: improve code formatting and readability in various services 2026-01-26 23:22:27 +00:00
Nawaz Dhandala
668c35ba2e feat: add AcknowledgeAlertEpisode template and update related services for alert episode notifications 2026-01-26 23:21:50 +00:00
Nawaz Dhandala
a808913049 feat: add support for alert episode handling in user on-call logs and notifications 2026-01-26 23:06:20 +00:00
Nawaz Dhandala
54da185280 feat: enhance on-call duty policy execution to support alert episode handling 2026-01-26 22:45:49 +00:00
Nawaz Dhandala
b1bc7bfde4 fix: update canonical link generation in blog post view 2026-01-26 22:43:27 +00:00
Nawaz Dhandala
09d5ce0e1a feat: add support for triggeredByAlertEpisodeId in on-call duty policy execution and related services 2026-01-26 22:36:15 +00:00
Nawaz Dhandala
3935446071 feat: enhance on-call policy execution by adding policy names to feed entry 2026-01-26 22:28:52 +00:00
Nawaz Dhandala
2463dcb2db fix: update alert episode handling in ExecutionLogsTable; add support for triggeredByAlertEpisodeId 2026-01-26 22:26:17 +00:00
Nawaz Dhandala
0eb239a469 feat: implement on-call duty policy execution in episode creation process 2026-01-26 22:21:31 +00:00
Nawaz Dhandala
b865caae7a fix: update comment formatting in AlertEpisodeService for clarity 2026-01-26 22:16:32 +00:00
Nawaz Dhandala
a3e25723af fix: update sorting and resolve logic in AlertEpisodeService; improve clarity in auto-resolve comments 2026-01-26 22:15:14 +00:00
Nawaz Dhandala
bae0338c36 fix: encode tag slugs in AllTagsFilter and Tags partials for proper URL formatting 2026-01-26 22:07:39 +00:00
Nawaz Dhandala
f656f23836 fix: encode tag slugs in generateTagsSitemapXml for proper URL formatting 2026-01-26 22:06:24 +00:00
Nawaz Dhandala
a8a79162e4 fix: ensure consistent response handling in sitemap generation routes 2026-01-26 22:02:57 +00:00
Nawaz Dhandala
04556835b0 feat: add bulk delete action to Team and Users tables 2026-01-26 21:36:51 +00:00
Nawaz Dhandala
84c5e50199 chore: bump version to 9.4.8 2026-01-26 21:13:31 +00:00
Nawaz Dhandala
06fd44ecaf refactor: improve code formatting and consistency across multiple components 2026-01-26 21:12:47 +00:00
Nawaz Dhandala
c535b68056 feat(tests): update icon visibility checks in Input and TextArea tests 2026-01-26 21:03:03 +00:00
Nawaz Dhandala
34c8e4fdec feat(alert): update feed message icons for episode creation and addition 2026-01-26 20:50:39 +00:00
Nawaz Dhandala
bf04796637 feat(subscriber-notification-template): add connected status pages table for linking templates 2026-01-26 20:46:05 +00:00
Nawaz Dhandala
16e6c0c601 feat(alert): add event type for alert added to episode and create corresponding feed entries 2026-01-26 20:39:56 +00:00
Nawaz Dhandala
75a733e9b8 feat(scheduled-maintenance): implement bulk state change functionality for scheduled maintenance events 2026-01-26 20:33:38 +00:00
Nawaz Dhandala
30217a64ec feat(alert): enhance mutex handling in groupAlertWithRule to prevent race conditions 2026-01-26 20:23:28 +00:00
Nawaz Dhandala
488295e303 feat(alert): trigger sidebar badge count refresh on bulk actions 2026-01-26 20:12:55 +00:00
Nawaz Dhandala
973131b70a feat(alert): implement mutex for episode creation to prevent race conditions 2026-01-26 20:07:33 +00:00
Nawaz Dhandala
52cb00a1c4 feat(alert-episode): fetch current state order and name for alert episodes in bulk state change 2026-01-26 20:03:27 +00:00
Nawaz Dhandala
ab0027a042 feat(alert-episode): implement bulk state change functionality for alert episodes 2026-01-26 19:58:46 +00:00
Nawaz Dhandala
26a6d12809 refactor(alert): simplify episode retrieval by removing resolved state checks 2026-01-26 19:52:20 +00:00
Nawaz Dhandala
0bdf74cab2 feat(modal): exclude close button from focus trap in modal 2026-01-26 19:43:07 +00:00
Nawaz Dhandala
dd996539bc feat(alert): implement mutex for episode number generation to prevent race conditions 2026-01-26 19:40:57 +00:00
Nawaz Dhandala
ad2ee2b0d6 feat(alert): make cascadeStateToMemberAlerts public and integrate it into onCreateSuccess 2026-01-26 19:38:59 +00:00
Nawaz Dhandala
ed6630c2d6 feat(alert): update current alert state and handle resolvedAt transitions 2026-01-26 19:34:23 +00:00
Simon Larsen
3af9121d6a Merge pull request #2238 from OneUptime/alert-episode
Alert episode
2026-01-26 19:24:18 +00:00
Nawaz Dhandala
e9d5a560ff Refactor migration files and improve code formatting
- 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.
2026-01-26 19:23:58 +00:00
Nawaz Dhandala
d87b6da7c5 fix(dependencies): update random provider version and adjust lock file handling 2026-01-26 19:19:23 +00:00
Nawaz Dhandala
34d6c8edbe feat(remediation): add remediation notes feature and alert episode feed component 2026-01-26 17:26:27 +00:00
Nawaz Dhandala
e9f63fb1e2 feat(alert): add lastAlertAddedAt and resolvedAt fields to alert selection 2026-01-26 17:18:20 +00:00
Nawaz Dhandala
7a515f7ad8 feat(alert): add priority field to alert selection criteria 2026-01-26 17:13:04 +00:00
Nawaz Dhandala
4564baae70 fix(accessibility): remove skip to main content link for improved keyboard navigation 2026-01-26 17:07:26 +00:00
Nawaz Dhandala
4316fdbf81 fix(vpat): update conformance status for Non-text Contrast to reflect full support 2026-01-26 16:58:08 +00:00
Nawaz Dhandala
be98736f4e fix(modal): correct type definition for modalRef to avoid null type 2026-01-26 16:55:45 +00:00
Nawaz Dhandala
ce7e10e3d9 feat(accessibility): enhance ARIA attributes and keyboard navigation across multiple components for improved accessibility 2026-01-26 16:53:41 +00:00
Nawaz Dhandala
21683de677 feat(accessibility): enhance ARIA roles and attributes across multiple components for improved screen reader support 2026-01-26 16:37:03 +00:00
Nawaz Dhandala
4dddec9966 feat(accessibility): enhance ARIA roles and attributes across components for improved screen reader support 2026-01-26 16:23:47 +00:00
Nawaz Dhandala
b79a287791 feat(accessibility): enhance ARIA attributes and alt text for improved screen reader support 2026-01-26 15:58:59 +00:00
Nawaz Dhandala
6bd4b7257d feat(legal): add VPAT page and update legal navigation 2026-01-26 14:41:48 +00:00
Nawaz Dhandala
438f8f4b6f refactor(AlertEpisodeService): import AlertService to avoid circular dependency 2026-01-26 13:46:25 +00:00
Nawaz Dhandala
75c1fedfba feat(package-lock): add peer dependency flag to multiple packages 2026-01-26 13:41:40 +00:00
Nawaz Dhandala
731a8e8b8f refactor(MarkdownViewer): simplify containerRef declaration in MermaidDiagram component 2026-01-26 13:40:29 +00:00
Simon Larsen
74768efea1 Merge pull request #2249 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-26 13:32:56 +00:00
Nawaz Dhandala
716d05b105 feat(logging): enhance alert processing with detailed debug logs 2026-01-26 13:18:11 +00:00
Nawaz Dhandala
8ea7b26299 feat(migration): add migration for episodeTitleTemplate and titleTemplate adjustments 2026-01-26 12:01:03 +00:00
Nawaz Dhandala
1538852bc4 feat: update title template fields to use LongText type for better flexibility 2026-01-26 11:58:41 +00:00
Nawaz Dhandala
a85607b996 feat(migration): add migration for AlertEpisode and OnCallDutyPolicyScheduleLayer schema updates 2026-01-26 11:58:05 +00:00
Nawaz Dhandala
a53db3b673 feat: rename menu items for clarity in DashboardSideMenu 2026-01-26 11:56:29 +00:00
Nawaz Dhandala
f6ec592cb6 feat: add Active Episodes page and integrate into dashboard routing 2026-01-26 11:54:48 +00:00
Nawaz Dhandala
d2e82fe50e feat(sitemap): implement paginated tags sitemap generation with caching 2026-01-25 18:51:23 +00:00
Nawaz Dhandala
30cb030470 feat(sitemap): enhance sitemap generation with multiple endpoints and caching mechanisms 2026-01-25 18:45:20 +00:00
Nawaz Dhandala
3b84f5cece feat: add comprehensive Dashboard Grafana Parity Plan document outlining improvements and implementation phases 2026-01-24 12:22:39 +00:00
Nawaz Dhandala
7f84f5c34d feat(migrations): add episodeDescriptionTemplate to AlertGroupingRule and update OnCallDutyPolicyScheduleLayer defaults
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
2026-01-24 11:50:16 +00:00
Nawaz Dhandala
47b42d92c1 Add unit tests for AlertEpisodeService, AlertGroupingEngineService, and AlertGroupingRuleService
- 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.
2026-01-24 11:38:56 +00:00
simlarsen
1928244a8e chore: npm audit fix 2026-01-24 01:54:38 +00:00
Nawaz Dhandala
c3af14c3fe feat: Add title and description template support in AlertEpisode and update related services for dynamic variable handling 2026-01-23 21:26:07 +00:00
Nawaz Dhandala
324666bafe feat: Refactor template variable display in AlertGroupingRules for improved clarity and structure 2026-01-23 21:22:18 +00:00
Nawaz Dhandala
8d4862f39f feat: Add migration for episodeDescriptionTemplate in AlertGroupingRule and update OnCallDutyPolicyScheduleLayer defaults 2026-01-23 21:15:36 +00:00
Nawaz Dhandala
8c42627d46 feat: Add episode description template support and update placeholders in AlertGroupingRules 2026-01-23 21:14:44 +00:00
Nawaz Dhandala
590caa0563 feat: Remove unused ShowAs prop and related ordered states list props from AlertGroupingRulesPage 2026-01-23 21:06:58 +00:00
Nawaz Dhandala
15ac2bf749 feat: Update help content button style in BaseModelTable for improved UI 2026-01-23 20:55:32 +00:00
Nawaz Dhandala
d98103ca94 feat: Add help content support to BaseModelTable and integrate into AlertGroupingRules 2026-01-23 20:49:33 +00:00
Nawaz Dhandala
f8a6354fb4 feat: Update documentation headings in AlertGroupingRules for improved clarity 2026-01-23 20:38:01 +00:00
Nawaz Dhandala
c7cb3b3b20 feat: Enhance MarkdownViewer to handle Mermaid diagrams without additional wrappers 2026-01-23 20:22:53 +00:00
Nawaz Dhandala
978998b3f8 feat: Enhance Mermaid diagram styling in MarkdownViewer component 2026-01-23 20:21:10 +00:00
Nawaz Dhandala
738e464c1e feat: Add 'Group By Service' option to Alert Grouping Rules and implement related database migration 2026-01-23 20:15:58 +00:00
Nawaz Dhandala
8882d62eac chore: update mermaid dependency from 11.4.0 to 11.12.2 in package.json 2026-01-23 19:24:22 +00:00
Nawaz Dhandala
90cd819b0a feat: Add Mermaid diagram support to MarkdownViewer and integrate documentation in AlertGroupingRules 2026-01-23 19:23:47 +00:00
Nawaz Dhandala
a6873c687a feat: Update grouping logic to require explicit enabling of group by options 2026-01-23 19:16:40 +00:00
Nawaz Dhandala
4b54bd6b91 feat: Conditionally display no items message based on create button presence 2026-01-23 18:51:03 +00:00
Nawaz Dhandala
eaf2cbcb71 feat: Remove no items message from Alert Grouping Rules page 2026-01-23 18:46:49 +00:00
Nawaz Dhandala
d9a1876ad4 feat: Add cascade state change functionality for member alerts in AlertEpisodeService 2026-01-23 18:44:18 +00:00
Nawaz Dhandala
c09f75faf0 feat: Add Episode On-Call Rules functionality and related routes 2026-01-23 18:32:19 +00:00
Nawaz Dhandala
674e32b95b feat: add computed properties for SSL ordered and provisioned in StatusPageDomain 2026-01-23 18:20:48 +00:00
Nawaz Dhandala
84cab49386 feat: Add migration for remediation notes and workspace channel updates in AlertEpisode 2026-01-23 17:49:31 +00:00
Nawaz Dhandala
479b83f6bf feat: Implement Alert Episode functionality with Slack and Microsoft Teams integration 2026-01-23 17:33:15 +00:00
Nawaz Dhandala
81ed9e0fc1 fix: correct typo in TerraformPrompt.md regarding provider code generation 2026-01-23 17:28:39 +00:00
Nawaz Dhandala
1f162461ad feat: Add alert episode owner notifications and related email templates
- 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.
2026-01-23 14:17:32 +00:00
Nawaz Dhandala
ad4f901e2f feat: add alert episode support across services and notification settings 2026-01-23 14:05:00 +00:00
Nawaz Dhandala
a885e2e8a8 feat: add migration for alert episode related fields and constraints 2026-01-23 13:56:25 +00:00
Nawaz Dhandala
8f11156011 feat: Add Alert Episode functionality and Slack integration
- 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.
2026-01-23 13:53:54 +00:00
Nawaz Dhandala
1ef1101134 Merge branch 'master' into release 2026-01-23 13:05:05 +00:00
Nawaz Dhandala
5664ad48dd fix: move git user configuration after repository initialization in publish script 2026-01-23 13:04:50 +00:00
Nawaz Dhandala
e2608f56db feat: add migration for AlertGroupingRuleMonitor and related tables 2026-01-23 12:47:09 +00:00
Nawaz Dhandala
78df267145 feat: add monitor name and description pattern fields to alert grouping rules 2026-01-23 12:45:45 +00:00
Nawaz Dhandala
20e7e68e71 feat: enhance alert grouping rules with match criteria and grouping options 2026-01-23 12:35:30 +00:00
Nawaz Dhandala
877d69f22e feat: add migration for enableTimeWindow column in AlertGroupingRule 2026-01-23 12:16:48 +00:00
Nawaz Dhandala
0791029f4a feat: add enable time window option for alert grouping rules 2026-01-23 12:16:10 +00:00
Nawaz Dhandala
69c91a2c41 Merge branch 'master' into alert-episode 2026-01-23 12:04:34 +00:00
Nawaz Dhandala
499d28c34c Merge branch 'master' into release 2026-01-23 12:01:58 +00:00
Nawaz Dhandala
ec57a9ddbc chore: bump version to 9.4.7 2026-01-23 12:01:46 +00:00
Nawaz Dhandala
e59db99b22 feat: update migration for monitor log retention and format RouteMap entries 2026-01-23 11:58:30 +00:00
Nawaz Dhandala
aaa3c4f602 fix: remove unnecessary constraints and columns from Alert table in migration 2026-01-23 11:57:21 +00:00
Nawaz Dhandala
29842c06e3 feat: add migration for monitor log retention and update alert table structure 2026-01-23 11:56:46 +00:00
Nawaz Dhandala
402ccf01d0 feat: add Data Retention settings page and integrate with global configuration 2026-01-23 11:55:37 +00:00
Nawaz Dhandala
b7114304ee fix: streamline git repository handling in Terraform provider publishing script 2026-01-23 11:51:40 +00:00
Nawaz Dhandala
dca72856a2 fix: configure git user before committing generated Terraform provider files 2026-01-23 11:48:30 +00:00
Nawaz Dhandala
1d7c758096 fix: update import path for ReactElement in CategoryCheckboxTypes 2026-01-23 11:31:50 +00:00
Simon Larsen
1e748365a5 Merge pull request #2245 from OneUptime/snyk-fix-a7af8e60213a832c66f6a2fdddd05e1e
[Snyk] Fix for 1 vulnerabilities
2026-01-23 11:28:56 +00:00
Nawaz Dhandala
a8022762a2 Merge branch 'release' into alert-episode 2026-01-23 11:02:19 +00:00
Nawaz Dhandala
9c1ed659e9 fix(URL): streamline route handling in toString method 2026-01-23 09:24:03 +00:00
Nawaz Dhandala
42accb4204 feat(Migration): add migration for new alert grouping rule features and on-call duty policy updates 2026-01-22 23:46:59 +00:00
Nawaz Dhandala
529e5954d4 feat(AlertEpisodes): add resolve delay, reopen window, and inactivity timeout features 2026-01-22 23:45:48 +00:00
Nawaz Dhandala
75ea34ef9e feat(AlertEpisodeDocs): enhance descriptions and update icons for clarity 2026-01-22 23:32:10 +00:00
Nawaz Dhandala
c4e1b8d97d fix: increase timeout for Terraform E2E tests from 60 to 120 minutes 2026-01-22 23:31:21 +00:00
Nawaz Dhandala
b5626ef352 feat(AlertEpisodeDocs): add on-call policy flow steps and notification scenarios 2026-01-22 23:14:56 +00:00
Nawaz Dhandala
692d15159c feat(Terraform E2E): enhance disk cleanup process and optimize Docker storage management 2026-01-22 23:13:51 +00:00
Nawaz Dhandala
91c163af9e feat(AlertEpisodes): add documentation page for alert episodes and update side menu 2026-01-22 23:05:49 +00:00
Nawaz Dhandala
fe71be64dd refactor: replace dynamic imports with direct imports for service dependencies 2026-01-22 22:58:49 +00:00
Nawaz Dhandala
9e6587cb62 feat(OrderedStatesList): enhance no items message with add new item option 2026-01-22 22:48:05 +00:00
snyk-bot
42b2f58d6a fix: Common/package.json & Common/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-DIFF-14917201
2026-01-22 22:34:30 +00:00
Simon Larsen
98afb63880 Merge pull request #2243 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-22 22:33:12 +00:00
Nawaz Dhandala
6d352c8579 Merge branch 'master' into alert-episode 2026-01-22 22:28:57 +00:00
Nawaz Dhandala
21b761ddbf chore(VERSION): bump version to 9.4.6 2026-01-22 22:23:34 +00:00
Nawaz Dhandala
e51009e94d Merge branch 'master' into release 2026-01-22 22:23:21 +00:00
Nawaz Dhandala
619136c9da feat(MailService): enhance email sending response types for SendGrid and SMTP 2026-01-22 21:58:45 +00:00
Nawaz Dhandala
d622334bd3 feat(StatusPageAuthentication): integrate SMTP configuration into status page login and creation processes 2026-01-22 21:51:34 +00:00
Nawaz Dhandala
5508bf6302 feat(StatusPagePrivateUserService): integrate SMTP configuration into status page creation process 2026-01-22 21:44:11 +00:00
Nawaz Dhandala
4ba9151400 feat(dockerignore): add large directories to ignore for Docker builds 2026-01-22 21:42:52 +00:00
Nawaz Dhandala
97fe212d15 feat(ExceptionProductImprovements): add comprehensive plan for enhancing exception tracking features 2026-01-22 21:21:09 +00:00
Nawaz Dhandala
af3738924e feat(MailService): add debug logging for SMTP and SendGrid email responses 2026-01-22 20:57:18 +00:00
Nawaz Dhandala
92f77c7ce2 feat(SCIM): update user name in SCIM request if missing or different 2026-01-22 20:44:11 +00:00
Nawaz Dhandala
ecb54381d8 style(Login.tsx, MasterPassword.tsx, StatusPage.ts): improve code formatting for better readability 2026-01-22 20:29:08 +00:00
Nawaz Dhandala
0a9435ef1a feat(auth): implement safe redirect URL handling to prevent navigation to auth pages 2026-01-22 20:23:18 +00:00
Nawaz Dhandala
2bc52c7b5d Merge branch 'master' into release 2026-01-22 18:11:50 +00:00
Nawaz Dhandala
392b6dda9a chore: bump version to 9.4.5 2026-01-22 18:11:39 +00:00
Nawaz Dhandala
0a6035ed65 style(ProductCompare.ts, GenerateProvider.ts): improve code formatting for better readability 2026-01-22 18:11:21 +00:00
Nawaz Dhandala
70f9444aab feat(svg): add new SVG icons for better integration and visual consistency 2026-01-22 18:07:19 +00:00
Nawaz Dhandala
088333c91c style(pricing.ejs, product-compare.ejs): improve text wrapping and update image styling for better layout 2026-01-22 15:47:30 +00:00
Nawaz Dhandala
7fc7276207 feat(pricing.ejs): enhance Bitcoin payment interaction with clickable text and improved styling 2026-01-22 15:43:20 +00:00
Nawaz Dhandala
631bf12c23 style(pricing.ejs): adjust genesis text styling and update content for clarity 2026-01-22 15:19:28 +00:00
Nawaz Dhandala
5ce158ebf3 Refactor code structure for improved readability and maintainability 2026-01-22 15:18:17 +00:00
Nawaz Dhandala
4684f25f22 easter egg 2026-01-22 15:17:19 +00:00
Nawaz Dhandala
3d36d86bd6 chore(VERSION): bump version to 9.4.4 2026-01-22 13:36:19 +00:00
Nawaz Dhandala
93c017dbab chore(GenerateProvider): add VERSION file generation to ensure proper detection of changes 2026-01-22 13:25:03 +00:00
Nawaz Dhandala
c74204ed1f chore(sitemap): remove outdated sitemap.xml file 2026-01-22 13:12:09 +00:00
Nawaz Dhandala
80125f500c chore(views): update card components to ensure full height for better layout consistency 2026-01-22 12:58:43 +00:00
Nawaz Dhandala
2771efcd87 chore(GoModuleGenerator): update comments for clarity in generateGoMod method
chore(GenerateProvider): format log message for consistency in main function
2026-01-22 12:43:45 +00:00
Nawaz Dhandala
0e27802f1a chore(verify.sh): update monitor verification logic to check for manual with description and remove empty steps check 2026-01-22 12:39:14 +00:00
Nawaz Dhandala
a96c270a94 chore(URL.ts): update toString method to conditionally add route and improve URL construction logic
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
2026-01-22 12:38:50 +00:00
Nawaz Dhandala
66d76676f5 chore(ResourceGenerator): add sorting for list items to ensure consistent ordering and fix idempotency issues 2026-01-22 12:35:50 +00:00
simlarsen
cc0eb6a4b9 chore: npm audit fix 2026-01-22 02:02:10 +00:00
Nawaz Dhandala
2d687a3275 chore(E2E Tests): refactor verification scripts to use shared library functions and improve validation 2026-01-21 22:23:20 +00:00
Nawaz Dhandala
47bca3fb9b chore(ResourceGenerator): refactor valid ObjectType handling to use dynamic generation from enum 2026-01-21 21:29:29 +00:00
Nawaz Dhandala
79d3548492 chore(ResourceGenerator): add validation for OneUptime ObjectType in resource handling 2026-01-21 21:26:07 +00:00
Nawaz Dhandala
3156302dbc chore(JSON.ts): remove unnecessary blank line in ObjectType enum 2026-01-21 21:15:35 +00:00
Nawaz Dhandala
84307250b7 chore(GoModuleGenerator): update go.mod generation to specify minimum versions and clarify dependency fetching process 2026-01-21 21:13:07 +00:00
Nawaz Dhandala
c3986bd66a chore(GoModuleGenerator): update go.mod to use Go 1.23 and pin dependencies for compatibility with Terraform 1.5+ 2026-01-21 21:08:42 +00:00
Nawaz Dhandala
a4a56bf2c7 chore(GoModuleGenerator): update go.mod to pin additional indirect dependencies for compatibility with Terraform 1.5+ 2026-01-21 21:04:36 +00:00
Nawaz Dhandala
6644523c54 chore(robots.txt): update AI agent access rules and refine API disallow directive 2026-01-21 18:20:50 +00:00
Nawaz Dhandala
44aa046fec chore: update Go version to 'stable' in workflow files 2026-01-21 17:27:08 +00:00
Nawaz Dhandala
da5b9b4955 chore(VERSION): bump version to 9.4.3 2026-01-21 15:59:54 +00:00
Nawaz Dhandala
81dd803b62 Merge branch 'release' 2026-01-21 15:59:39 +00:00
Nawaz Dhandala
efffa82cbf refactor(StatusPageService): simplify conditional check for downtimeMonitorStatuses 2026-01-21 15:56:49 +00:00
Nawaz Dhandala
64b0c9f137 feat(Terraform): update monitor names to use random suffixes for uniqueness 2026-01-21 15:48:15 +00:00
Nawaz Dhandala
a3661e1626 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-01-21 15:46:18 +00:00
Nawaz Dhandala
4115deadc4 feat(Monitor): add monitorId prop to MonitorStep and MonitorSteps components for secret population during testing 2026-01-21 14:58:09 +00:00
Nawaz Dhandala
6fbd112964 fix(ResourceGenerator): enhance handling of complex typed objects in Delete method 2026-01-21 14:55:25 +00:00
Nawaz Dhandala
a171c52c8d feat(tests): refactor E2E tests to use random suffixes for resource names
- 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.
2026-01-21 14:45:46 +00:00
Nawaz Dhandala
4f7d3ed2be feat(E2E Tests): add comprehensive tests for various monitor types with steps and basic configurations 2026-01-21 13:38:49 +00:00
Nawaz Dhandala
9db97b3919 Add E2E tests for OneUptime resources
- 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.
2026-01-21 13:25:55 +00:00
Nawaz Dhandala
8bc545c90f Add end-to-end tests for OneUptime resources
- Implemented idempotency tests for status pages, monitors, and probes.
- Created Terraform configurations and verification scripts for:
  - StatusPageDomain idempotency (Issue #2236)
  - Monitor CRUD operations with various configurations
  - Probe CRUD operations, ensuring probe_version is a string (Issue #2228)
  - StatusPage CRUD operations, handling server defaults (Issue #2232)
  - StatusPage with domain integration, validating computed fields and server-injected defaults
- Added necessary variable files for configuration.
2026-01-21 13:09:36 +00:00
Nawaz Dhandala
19d1629e37 fix(StatusPageDomain): update access control for create permissions and adjust required fields 2026-01-21 13:01:51 +00:00
Nawaz Dhandala
e7fd472c14 fix(ResourceGenerator): enhance handling of complex object responses in Delete method 2026-01-21 12:33:27 +00:00
Nawaz Dhandala
dd4a1416fc fix(StatusPageService): simplify downtime monitor statuses check 2026-01-21 12:17:25 +00:00
Nawaz Dhandala
09b65b9a5b fix(StatusPageDomain): change CNAME Verification Token requirement to optional 2026-01-21 12:09:11 +00:00
Simon Larsen
8fb1a1daf9 Merge pull request #2239 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-21 09:27:59 +00:00
simlarsen
d3d0dedfee chore: npm audit fix 2026-01-21 02:01:12 +00:00
Nawaz Dhandala
46635f4251 refactor: improve type safety with type aliases for dynamically imported services 2026-01-20 21:09:37 +00:00
Nawaz Dhandala
1068a5d96e refactor: add type annotations for improved type safety and clarity in service imports 2026-01-20 21:00:36 +00:00
Nawaz Dhandala
d1e200a54f Refactor code for improved readability and consistency
- 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.
2026-01-20 20:50:09 +00:00
Nawaz Dhandala
8220b0356c Merge branch 'master' into alert-episode 2026-01-20 20:46:58 +00:00
Nawaz Dhandala
bc9b09aed5 chore: Bump version to 9.4.2 2026-01-20 20:46:03 +00:00
Nawaz Dhandala
6822718c46 feat(SCIM): Normalize operation strings to lowercase in PATCH requests 2026-01-20 20:42:57 +00:00
Nawaz Dhandala
9a935c4e90 feat(AlertEpisode): add services and models for AlertEpisode management 2026-01-20 19:56:41 +00:00
Nawaz Dhandala
6137199e63 feat: add AlertGroupingRule, AlertEpisode, and related tables with foreign key constraints and indexes 2026-01-20 19:42:01 +00:00
Nawaz Dhandala
6e6d989be4 feat: Add Alert Episode Management Features
- 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.
2026-01-20 19:35:31 +00:00
Simon Larsen
5a7af27543 Merge pull request #2237 from OneUptime/alert-episode
Alert episode
2026-01-20 19:08:04 +00:00
Nawaz Dhandala
7c422b4384 feat(AlertGrouping): Enhance episode management documentation with ownership, severity, root cause, flapping prevention, manual creation, deletion, UI navigation, and alert relationships 2026-01-20 18:53:00 +00:00
Nawaz Dhandala
b06de38f69 feat(AlertGrouping): Update manual management details and enhance episode title generation guidelines 2026-01-20 18:46:13 +00:00
Nawaz Dhandala
71723675d6 feat(AlertGrouping): Update Alert Model enhancements and add Implementation Q&A for episode state management and grouping logic 2026-01-20 18:41:53 +00:00
Nawaz Dhandala
e699e323cb feat(AlertGrouping): Remove outdated migration and implementation documents; add summary for Alert Grouping feature
- 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.
2026-01-20 18:32:31 +00:00
Nawaz Dhandala
8e8bc54aed feat: Add on-call policy override fields and behavior to AlertEpisode and AlertGroupingRule models 2026-01-20 18:18:09 +00:00
Nawaz Dhandala
d3cf309aef feat: Add flapping prevention fields and behavior to AlertEpisode model 2026-01-20 18:02:32 +00:00
Nawaz Dhandala
a24f9d37a9 Refactor verify scripts to handle API response wrapper formats
- 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.
2026-01-20 18:02:18 +00:00
Nawaz Dhandala
d5332ed494 test: Add idempotency tests for probe_version READ operation 2026-01-20 16:57:30 +00:00
Nawaz Dhandala
23fdd3bfd7 feat: Implement Alert Suppression UI and Migration Plan
- 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
2026-01-20 13:46:10 +00:00
Nawaz Dhandala
714f8b4edf chore: bump version to 9.4.1 2026-01-20 11:05:38 +00:00
Nawaz Dhandala
02f920a152 refactor: improve code formatting and structure in EvaluationLogList and Logs components 2026-01-20 10:50:49 +00:00
Nawaz Dhandala
378663b03c fix: enhance status indicator styles for better visibility in EvaluationLogList 2026-01-20 10:46:29 +00:00
Nawaz Dhandala
78257ebda8 fix: update status indicators in EvaluationLogList for improved clarity 2026-01-20 10:16:23 +00:00
Nawaz Dhandala
d29e876b96 feat: add probeName prop to monitor summary components for enhanced monitoring details 2026-01-20 10:07:52 +00:00
Nawaz Dhandala
88c1e23da9 fix: clean node_modules to prevent permission issues with npm cache in CI 2026-01-20 09:35:58 +00:00
Nawaz Dhandala
cb50f89a12 Refactor code structure for improved readability and maintainability 2026-01-19 21:36:54 +00:00
Simon Larsen
869cc6d2b8 Merge pull request #2234 from OneUptime/terraform-tests
Terraform tests
2026-01-19 21:09:46 +00:00
Nawaz Dhandala
1566bd6a21 Add verification scripts for various resources in E2E tests
- 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.
2026-01-19 21:08:05 +00:00
Nawaz Dhandala
d175841b2a feat: enhance Terraform E2E tests with comprehensive API validation and remove CRUD tests 2026-01-19 19:56:39 +00:00
Nawaz Dhandala
811fb49c2d refactor: update comments for clarity and consistency in DomainService, Domain, and ResourceGenerator 2026-01-19 19:47:37 +00:00
Nawaz Dhandala
290b59dfc9 feat: add Terraform tests for server-provided defaults in incident, alert, scheduled maintenance, and on-call policy configurations 2026-01-19 19:40:56 +00:00
Nawaz Dhandala
acb57b6b32 feat: enable tool-cache in disk space cleanup and add additional disk cleanup step 2026-01-19 19:40:37 +00:00
Nawaz Dhandala
ff1feb1a9f feat: add Terraform test for server-provided defaults in monitor configuration 2026-01-19 19:30:06 +00:00
Nawaz Dhandala
a99c09c05a feat: remove isDefaultValueColumn from TerraformAttribute interface 2026-01-19 19:25:58 +00:00
Nawaz Dhandala
b400965384 feat: enhance resource generation with dynamic plan modifier imports and add tests for server-provided defaults 2026-01-19 19:25:37 +00:00
Nawaz Dhandala
48a9523bb6 Merge branch 'terraform-tests' of https://github.com/OneUptime/oneuptime into terraform-tests 2026-01-19 18:46:22 +00:00
Nawaz Dhandala
aa5ff55a9c feat: refactor domain verification logic to use isTestDomain method for clarity 2026-01-19 18:43:47 +00:00
Nawaz Dhandala
08f8200d5b feat: allow auto-verification for test domains and update Terraform test configurations 2026-01-19 18:29:02 +00:00
Simon Larsen
7030f27076 Potential fix for code scanning alert no. 1311: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-01-19 18:08:21 +00:00
Nawaz Dhandala
d7611b895b feat: add script to run Terraform tests in package.json 2026-01-19 18:05:41 +00:00
Nawaz Dhandala
ec8afb2d0b refactor: dynamically discover test directories in run-tests.sh 2026-01-19 17:58:57 +00:00
Nawaz Dhandala
81aeb373c4 feat: add Terraform E2E tests for status page domain and computed fields 2026-01-19 17:57:46 +00:00
Nawaz Dhandala
cbc779ae0b feat: add computed property to Full Domain and CNAME Verification Token in StatusPageDomain model 2026-01-19 17:50:16 +00:00
Nawaz Dhandala
9906115faf feat: add transaction execution method to DatabaseService and refactor MonitorProbeService to use it 2026-01-19 17:29:43 +00:00
Nawaz Dhandala
86d60f4688 refactor: improve code comments for clarity in MonitorProbeService and ResourceGenerator 2026-01-19 17:25:11 +00:00
Nawaz Dhandala
d7f329fcff feat: add comprehensive CRUD tests for probe, label, monitor status, and incident severity resources 2026-01-19 17:21:10 +00:00
Nawaz Dhandala
120d36f3dd fix: always import math/big and add helper for converting *big.Float to float64 2026-01-19 14:43:18 +00:00
Nawaz Dhandala
13f22b1611 fix: extract API key value correctly from response in setup-test-account.sh 2026-01-19 14:29:53 +00:00
Nawaz Dhandala
f9a89548e2 fix: remove terraform init step for tests using dev_overrides 2026-01-19 14:27:05 +00:00
Nawaz Dhandala
88c55f9e14 fix: correct provider directory path in run-tests.sh script 2026-01-19 14:24:01 +00:00
Nawaz Dhandala
91965f3cc9 feat: add peer dependency flags in package-lock.json and update .gitignore for test environment script 2026-01-19 14:21:50 +00:00
Nawaz Dhandala
1383b1f3b0 feat: add conditions to disable active monitoring for manual incidents and scheduled maintenance 2026-01-19 14:03:47 +00:00
Nawaz Dhandala
cf45f089af feat: add subscription status checks for claiming monitor probes 2026-01-19 14:01:44 +00:00
Nawaz Dhandala
ecfcbae86b feat: implement atomic claiming of monitor probes using FOR UPDATE SKIP LOCKED 2026-01-19 13:59:57 +00:00
Nawaz Dhandala
b714ad168c chore: add step to free disk space in Terraform E2E tests workflow 2026-01-19 13:49:39 +00:00
Nawaz Dhandala
59d6aeb2b4 refactor: remove cleanup function and associated trap from index.sh 2026-01-19 13:36:45 +00:00
Nawaz Dhandala
be6d122879 fix: update cleanup function to use npm run down instead of docker compose 2026-01-19 13:36:33 +00:00
Nawaz Dhandala
b9fcfd5c61 chore: remove unused cookies.txt file from e2e-tests 2026-01-19 13:29:26 +00:00
Nawaz Dhandala
9e902e5b76 fix: update index.sh file permissions to make it executable 2026-01-19 13:29:22 +00:00
Nawaz Dhandala
4fa44b40c9 refactor: remove wait-for-services script and update index.sh to use npm status-check 2026-01-19 13:27:55 +00:00
Nawaz Dhandala
3baa081850 feat: Implement end-to-end tests for Terraform provider
- 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.
2026-01-19 13:27:11 +00:00
Nawaz Dhandala
bcc7218091 feat: add implementation plan for Terraform provider end-to-end tests 2026-01-19 12:45:31 +00:00
Nawaz Dhandala
91937ea9bc fix: update .gitignore to include specific Terraform files and exclude general directory 2026-01-19 12:42:04 +00:00
Nawaz Dhandala
79835d411e feat(migrations): add IncomingCallPolicy and related tables with constraints
- 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.
2026-01-19 12:25:06 +00:00
Nawaz Dhandala
8a965dcf1a feat: Add IncomingCallPolicy migration and related database schema changes 2026-01-19 12:24:14 +00:00
Nawaz Dhandala
549cbe7102 Revert "fix: Enhance handling of complex object responses in ResourceGenerator"
This reverts commit 5c84699bae.
2026-01-19 11:45:15 +00:00
Nawaz Dhandala
2f727b7707 Remove obsolete migration files and update index
- 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.
2026-01-19 11:34:58 +00:00
Nawaz Dhandala
5dd1f1a7f1 chore: Bump version to 9.4.0 2026-01-17 22:47:59 +00:00
Simon Larsen
80defab7b2 Merge pull request #2224 from OneUptime/on-call-route
On call route
2026-01-17 22:46:38 +00:00
Nawaz Dhandala
5dea6fcbad feat: Implement Twilio configuration helper and refactor related code for consistency 2026-01-17 22:46:14 +00:00
Nawaz Dhandala
5e6d5aebff refactor: Add type annotations for function return types in various components 2026-01-17 22:24:20 +00:00
Nawaz Dhandala
d7e8dc3d92 Refactor code for improved readability and maintainability
- 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.
2026-01-17 22:21:37 +00:00
Nawaz Dhandala
0e21d2755b feat: Add filters prop to IncomingCallPolicyLogViewPage for enhanced data handling 2026-01-17 22:21:02 +00:00
Nawaz Dhandala
52ed66fafe feat: Add Incoming Call Policy Log View and enhance routing and breadcrumbs 2026-01-17 21:56:33 +00:00
Nawaz Dhandala
37215aca51 feat: Update webhook URL handling for Twilio signature validation 2026-01-17 21:40:26 +00:00
Nawaz Dhandala
441cd5c73d feat: Add debug logging for incoming call webhook and Twilio signature validation 2026-01-17 21:38:59 +00:00
Nawaz Dhandala
046e0c00cd feat: Add IncomingCallLog and IncomingCallLogItem APIs for enhanced call management 2026-01-17 21:35:04 +00:00
Nawaz Dhandala
e0a9ab8cfb Enhance Twilio Call Provider and Nginx Configuration
- 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.
2026-01-17 21:18:27 +00:00
Nawaz Dhandala
ea47d2bd2c feat: Refactor OnCallDutyScheduleElement and SchedulesElement for improved schedule handling and navigation 2026-01-17 20:51:30 +00:00
Nawaz Dhandala
7b249f55b5 feat: Add migration for updating default values in OnCallDutyPolicyScheduleLayer and IncomingCallPolicyEscalationRule 2026-01-17 20:35:17 +00:00
Nawaz Dhandala
f261fe98f0 feat: Enhance IncomingCallPolicyEscalationRule service with order management and validation in escalation page 2026-01-17 20:34:12 +00:00
Nawaz Dhandala
3070b549e3 feat: Remove auto-generation of order in IncomingCallPolicyEscalationPage for improved item management 2026-01-17 20:18:56 +00:00
Nawaz Dhandala
4731a67ab4 feat: Revamp form structure in IncomingCallPolicyEscalationPage with multi-step navigation and updated field descriptions 2026-01-17 20:18:33 +00:00
Nawaz Dhandala
b204b05bc3 feat: Update notify type selection in IncomingCallPolicyEscalationPage to use dropdown with async options 2026-01-17 20:11:04 +00:00
Nawaz Dhandala
9217d869dd feat: Remove placeholder rendering in IncomingCallPolicyEscalationPage for improved UI clarity 2026-01-17 20:00:45 +00:00
Nawaz Dhandala
02e512e6e8 feat: Add notify type selection to IncomingCallPolicyEscalationPage with validation and auto-ordering 2026-01-17 19:51:25 +00:00
Nawaz Dhandala
475ad54a8f feat: Enhance IncomingCallPolicyEscalationPage with drag-and-drop support and improved field descriptions 2026-01-17 19:46:54 +00:00
Nawaz Dhandala
739cf632e5 feat: Enhance IncomingCallPolicyView to include escalation rules count and improve setup logic 2026-01-17 19:19:58 +00:00
Nawaz Dhandala
e069e94971 feat: Remove rendering of owned numbers and search results in PhoneNumberPurchase component 2026-01-17 19:03:51 +00:00
Nawaz Dhandala
391c9ea2e7 feat: Update webhook URL construction to use environment variables for protocol and host 2026-01-17 19:01:20 +00:00
Nawaz Dhandala
72a6b426ea feat: Refactor IncomingCallPolicyView to consolidate setup steps and improve layout 2026-01-17 18:54:45 +00:00
Nawaz Dhandala
86aca6a48e feat: Update terminology from "purchase" to "reserve" for phone number actions 2026-01-17 18:53:28 +00:00
Nawaz Dhandala
9b81a82eed feat: Add configuration modal for managing phone numbers with options to use existing or buy new 2026-01-17 18:50:05 +00:00
Nawaz Dhandala
c4ab245824 feat: Add IncomingCall icon to IconProp and update SideMenu to use it 2026-01-17 18:46:05 +00:00
Nawaz Dhandala
06cf878446 feat: Implement Twilio configuration modal with loading and no config warning states 2026-01-17 18:26:36 +00:00
Nawaz Dhandala
cd068f9219 feat: Adjust padding and gap in ConceptCards component for improved layout 2026-01-17 15:56:34 +00:00
Nawaz Dhandala
53c0b1fb92 feat: Refactor diagram components to unify color properties and improve UI consistency 2026-01-17 15:54:02 +00:00
Nawaz Dhandala
642a5a2982 feat: Add visual components for incoming call policy documentation including flow steps, escalation chain, and setup steps 2026-01-17 15:40:33 +00:00
Nawaz Dhandala
c0c162cca5 feat: Add documentation page for Incoming Call Policy with detailed setup and escalation flow 2026-01-17 15:34:18 +00:00
Nawaz Dhandala
c94a2db6fa feat: Add Twilio configuration modal for incoming call policy management 2026-01-17 15:28:08 +00:00
Nawaz Dhandala
3b4828eea1 feat: Add option to hide card wrapper in PhoneNumberPurchase component and improve UI for Twilio configuration steps 2026-01-17 14:00:48 +00:00
Nawaz Dhandala
5907bfe4d1 feat: Enhance Incoming Call Policy view with step indicators and Twilio configuration setup 2026-01-17 13:54:05 +00:00
Nawaz Dhandala
a2d9cda7d9 fix: Update dependency in useAsyncEffect to use modelId as a string for consistency 2026-01-17 13:48:43 +00:00
Nawaz Dhandala
a8be03d3c9 fix: Update voiceUrl type to include undefined for better type safety 2026-01-17 13:28:30 +00:00
Nawaz Dhandala
272ae08048 feat: Implement phone number management features including listing owned numbers and assigning existing numbers to policies 2026-01-17 13:25:12 +00:00
Nawaz Dhandala
5f2bda119a feat: Enhance Incoming Call Policy view with phone number routing and Twilio configuration setup 2026-01-17 13:07:50 +00:00
Nawaz Dhandala
64cfeb5400 feat: Add Incoming Call Policy Settings page and update routing and breadcrumbs 2026-01-17 12:56:05 +00:00
Nawaz Dhandala
1e1d3e939e feat: Add Incoming Call Policy and Escalation Rule APIs to BaseAPI feature set 2026-01-17 12:42:34 +00:00
Nawaz Dhandala
6894cae68c feat: Add project SMS notification checks to ensure notifications are enabled and balance is sufficient 2026-01-17 12:38:28 +00:00
Nawaz Dhandala
65b4a8217b feat: Add SMS balance check before sending notifications to prevent low balance issues 2026-01-17 12:35:48 +00:00
Nawaz Dhandala
5452342f2f feat: Enhance Incoming Call Policies page with form steps and improved labels description 2026-01-17 12:27:58 +00:00
Nawaz Dhandala
d1f583fb47 feat: Add project SMS notification checks in UserIncomingCallNumberService 2026-01-17 12:23:47 +00:00
Nawaz Dhandala
41f3a4ce21 fix: Correct default message in IncomingCallPolicy to improve clarity 2026-01-17 11:57:48 +00:00
Nawaz Dhandala
41f151b8eb feat: Add Incoming Call Policy link to navigation and create documentation 2026-01-17 11:55:12 +00:00
Nawaz Dhandala
60276876bd Refactor Incoming Call Policy Jobs
- 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.
2026-01-17 11:47:15 +00:00
Nawaz Dhandala
86fb8fbb30 feat: Add migration to update IncomingCallPolicy and related tables 2026-01-17 11:37:11 +00:00
Nawaz Dhandala
5e9b5be0ad refactor: Remove unnecessary create permissions from IncomingCallLog model 2026-01-17 11:34:45 +00:00
Nawaz Dhandala
a9734dd18e refactor: Consolidate Twilio import statements and enhance type definitions for incoming phone number creation 2026-01-17 11:32:22 +00:00
Nawaz Dhandala
511c65a01b refactor: Simplify Twilio config retrieval and improve code formatting 2026-01-17 11:29:08 +00:00
Nawaz Dhandala
a619f323e7 refactor: Remove unused billing-related code and simplify Twilio configuration handling 2026-01-17 11:25:41 +00:00
Nawaz Dhandala
a021ad41ef feat: Remove alert phone number from User model and related migration 2026-01-17 11:04:12 +00:00
Nawaz Dhandala
1eddfff608 refactor: Improve logic for verifying incoming call numbers and user details retrieval 2026-01-17 11:02:17 +00:00
Nawaz Dhandala
578774df08 feat: Add Incoming Call Number Management
- 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.
2026-01-17 10:58:30 +00:00
Nawaz Dhandala
82d0d68a7c refactor: Simplify phone number handling and improve subscription status checks 2026-01-17 09:51:27 +00:00
Nawaz Dhandala
8d9ba58964 refactor: Improve code readability and consistency across multiple files 2026-01-17 09:38:55 +00:00
Nawaz Dhandala
52dbab88f6 feat: Implement subscription cancellation handling for incoming call policies and add related email notifications 2026-01-17 09:29:12 +00:00
Nawaz Dhandala
387ebc9375 feat: Add project-level Twilio configuration support for incoming call policies 2026-01-17 09:17:32 +00:00
Nawaz Dhandala
26f3e5bd5e feat: Implement single webhook endpoint for incoming calls and update related documentation 2026-01-17 08:58:39 +00:00
Nawaz Dhandala
7ed06d7391 Merge branch 'master' into on-call-route 2026-01-16 21:11:29 +00:00
Nawaz Dhandala
3c2811000e refactor: Update comments for clarity in complex object handling in ResourceGenerator 2026-01-16 20:27:48 +00:00
Nawaz Dhandala
5979e4f345 feat: Add title display to SimpleLogViewer component 2026-01-16 20:26:34 +00:00
Nawaz Dhandala
5c84699bae fix: Enhance handling of complex object responses in ResourceGenerator 2026-01-16 20:24:42 +00:00
Simon Larsen
d153fc4cd4 Merge pull request #2229 from OneUptime/scim-log
SCIM log
2026-01-16 19:54:20 +00:00
Nawaz Dhandala
34475f76f9 refactor: Update type annotations for clarity and consistency in SCIM log components 2026-01-16 19:52:26 +00:00
Nawaz Dhandala
6565b7c803 refactor: Improve code formatting in SCIM and SCIM logs components for consistency 2026-01-16 19:47:21 +00:00
Nawaz Dhandala
c63923ed5b fix: Update SCIM user filtering to handle non-email usernames; log adjustments for clarity 2026-01-16 19:19:21 +00:00
Nawaz Dhandala
33d51932c5 refactor: Remove title prop from SimpleLogViewer in SCIM logs tables for consistency 2026-01-16 19:10:51 +00:00
Nawaz Dhandala
557d14106c feat: Enhance SimpleLogViewer with line numbers and height customization; update modal implementations across SCIM logs tables 2026-01-16 19:07:44 +00:00
Nawaz Dhandala
8d5395ae74 refactor: Replace ConfirmModal with Modal and integrate SimpleLogViewer for SCIM logs 2026-01-16 18:51:47 +00:00
Nawaz Dhandala
06e0100ede refactor: Remove unused fields from SCIM logs tables for cleaner display 2026-01-16 18:50:25 +00:00
Nawaz Dhandala
3db29ab264 fix: Update SCIM error logging to handle NotFoundException as a success case 2026-01-16 18:48:13 +00:00
Nawaz Dhandala
7442e36b18 feat: Implement "Unassigned" team management for SCIM provisioning 2026-01-16 18:41:15 +00:00
Nawaz Dhandala
1fa446ec0c feat: Add SCIM logging routes for Project and Status Page 2026-01-16 18:22:39 +00:00
Nawaz Dhandala
ef85d98362 Refactor SCIM configuration components and update modal descriptions
- 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.
2026-01-16 17:21:27 +00:00
Nawaz Dhandala
46bccfb596 feat: Add migration for SCIM logging tables and constraints 2026-01-16 17:20:19 +00:00
Nawaz Dhandala
f7b2588647 Enhance SCIM logging and execution tracking in StatusPageSCIM API
- 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.
2026-01-16 17:15:45 +00:00
Nawaz Dhandala
b4106eb580 feat: Add SCIM logging functionality for projects and status pages
- 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.
2026-01-16 16:42:10 +00:00
Nawaz Dhandala
de05f727d7 fix: Ensure tenantid is consistently set to an empty string in getDefaultHeaders method 2026-01-16 16:11:47 +00:00
Nawaz Dhandala
5a3d6d9ccc fix: Update tenantid in getDefaultHeaders method to use an empty string instead of null 2026-01-16 15:36:26 +00:00
Nawaz Dhandala
7d5f813bac chore: Bump version to 9.3.22 2026-01-16 14:35:06 +00:00
Nawaz Dhandala
d4cb2587c9 chore: Bump version to 9.3.21 2026-01-16 12:16:46 +00:00
Nawaz Dhandala
75ca86d92d refactor: Improve code formatting for better readability in StartAndEndDate and Input components 2026-01-16 12:16:37 +00:00
Nawaz Dhandala
ddf3dcd8a8 feat: Add resetSecondsAndMilliseconds method to OneUptimeDate class 2026-01-16 12:16:02 +00:00
Nawaz Dhandala
bc1a30f877 fix: Update date conversion methods to use Clickhouse format 2026-01-16 12:10:58 +00:00
Nawaz Dhandala
194d87041c feat: Add option to display seconds in date formatting for filters 2026-01-16 12:07:29 +00:00
Nawaz Dhandala
ba950928a4 feat: Add support for seconds in datetime-local input 2026-01-16 12:05:18 +00:00
Nawaz Dhandala
449f780201 refactor: Clean up tenant ID property declaration in API class 2026-01-16 11:37:01 +00:00
Nawaz Dhandala
b95fe3ad4f chore: Bump version to 9.3.20 2026-01-16 11:36:34 +00:00
Nawaz Dhandala
0dc3e5fe8d refactor: Remove unused props initialization in hasReadAccess method 2026-01-16 11:20:15 +00:00
Nawaz Dhandala
36e0b18f13 refactor: Remove redundant access check in hasReadAccess method 2026-01-16 11:19:45 +00:00
Nawaz Dhandala
c9e1a3b2b6 fix: Add null tenant ID to default headers in API class 2026-01-16 11:04:21 +00:00
Nawaz Dhandala
1a15e446ff refactor: Remove redundant comment about project ID validation 2026-01-16 10:29:52 +00:00
Nawaz Dhandala
3947b0bba1 fix: Enhance UUID validation in ObjectID and ProjectUtil classes 2026-01-16 10:29:20 +00:00
Simon Larsen
3968428f0c Merge pull request #2225 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-15 08:04:56 +00:00
simlarsen
79b36c5b27 chore: npm audit fix 2026-01-15 01:57:09 +00:00
Nawaz Dhandala
3f24c910c0 feat: Introduce NotificationWebhookHost for consistent webhook URL construction 2026-01-14 21:57:13 +00:00
Nawaz Dhandala
8619ba379a feat: Validate webhook signature for incoming call and dial status callback 2026-01-14 21:49:18 +00:00
Nawaz Dhandala
34396c764e feat: Enhance call logging by creating logs early and updating statuses for various failure scenarios 2026-01-14 21:43:45 +00:00
Nawaz Dhandala
7ab6b8e135 feat: Remove redundant properties and access controls from IncomingCallPolicy model 2026-01-14 21:40:21 +00:00
Nawaz Dhandala
54c7955c78 feat: Simplify incoming call handling by removing concurrent call checks and related properties 2026-01-14 21:38:07 +00:00
Nawaz Dhandala
d5ae25545c feat: Refactor call cost handling by introducing configuration constants for minimum balance and price multipliers 2026-01-14 21:35:56 +00:00
Nawaz Dhandala
f449191f84 feat: Refactor Incoming Call and Phone Number handling, update icons and improve data validation 2026-01-14 21:31:57 +00:00
Nawaz Dhandala
3168b57e28 feat: Add Incoming Call Policy management features
- 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.
2026-01-14 21:14:53 +00:00
Nawaz Dhandala
dbff165c34 Merge branch 'master' into on-call-route 2026-01-14 20:36:09 +00:00
Nawaz Dhandala
25c3cf8aec feat: Update migration to add new indexes and alter table defaults for OnCallDutyPolicyScheduleLayer 2026-01-14 20:29:21 +00:00
Nawaz Dhandala
0c0fb1be2d feat: Add migration to update incoming email monitor indexes and alter table defaults 2026-01-14 20:26:47 +00:00
Nawaz Dhandala
497394e5ee feat: Enhance Incoming Call Policy with cost deduction timing, webhook security, and user phone number verification flow 2026-01-14 19:45:41 +00:00
Nawaz Dhandala
bdc9683c04 feat: Revamp Incoming Call Policy to support provider-agnostic phone number management and enhance API endpoints 2026-01-14 19:36:50 +00:00
Nawaz Dhandala
ad5372e354 feat: Enhance Incoming Call Policy with phone number purchasing flow, API endpoints, and UI components 2026-01-14 19:18:14 +00:00
Nawaz Dhandala
72a31714a8 feat: Add Incoming Call Policy implementation plan with database models, API endpoints, and UI components 2026-01-14 19:01:17 +00:00
Nawaz Dhandala
bccf8c116b fix: Remove backtick content from code elements in prose styling 2026-01-14 18:09:02 +00:00
Nawaz Dhandala
6999849b7d feat: Update SendGrid webhook handling to include path secret for validation and enhance documentation 2026-01-14 18:07:21 +00:00
Nawaz Dhandala
44c71bff85 feat: Add inboundEmail configuration to values schema and bump version to 9.3.19 2026-01-14 17:53:10 +00:00
Nawaz Dhandala
3870a9ed08 feat: Add support for Mermaid diagrams in Markdown renderer and update navigation structure 2026-01-14 17:03:17 +00:00
Nawaz Dhandala
31fca8c50f refactor: Format cardSelectOptions for improved readability 2026-01-14 16:34:08 +00:00
Nawaz Dhandala
7e8c6b42c3 chore: Bump version to 9.3.18 2026-01-14 16:32:50 +00:00
Nawaz Dhandala
5fb9357ad2 refactor: Update icon for Server / VM monitor type for improved clarity 2026-01-14 16:32:33 +00:00
Nawaz Dhandala
60c01b2180 refactor: Update CardSelect component styles for improved visual consistency 2026-01-14 16:26:02 +00:00
Nawaz Dhandala
760f1ea2d6 refactor: Update icons for Manual, Traces, and Metrics monitor types for improved clarity 2026-01-14 16:23:35 +00:00
Nawaz Dhandala
d2c2f66b66 feat: Add CardSelect component and integrate with Monitor creation form 2026-01-14 16:12:56 +00:00
Nawaz Dhandala
3631a48d83 chore: Bump version to 9.3.17 2026-01-14 15:37:07 +00:00
Simon Larsen
5d3d344110 Merge pull request #2223 from OneUptime/incoming-email-monitor
Incoming email monitor
2026-01-14 15:36:39 +00:00
Nawaz Dhandala
ec2105d916 refactor: Simplify SendGridInboundConfig definition and enhance type clarity for attachments 2026-01-14 15:35:35 +00:00
Nawaz Dhandala
821cda573a refactor: Clean up comments and formatting in various files for better readability 2026-01-14 15:32:10 +00:00
Nawaz Dhandala
537b257e1d fix: Update Destination URL in SendGrid Inbound Email documentation 2026-01-14 15:29:17 +00:00
Nawaz Dhandala
319becae1b feat: Update package.json and package-lock.json to include multer and its types 2026-01-14 14:48:50 +00:00
Nawaz Dhandala
7806bb9f91 feat: Move MultipartFormDataMiddleware to a new file for better organization 2026-01-14 14:28:50 +00:00
Nawaz Dhandala
70ceccf3c1 feat: Add multer middleware for handling multipart/form-data in IncomingEmail webhook 2026-01-14 14:26:27 +00:00
Nawaz Dhandala
68034b8eaf feat: Add functionality to reset Incoming Email Secret Key in MonitorCriteria 2026-01-14 11:17:13 +00:00
Nawaz Dhandala
66ed8fd9aa feat: Update DataToProcess to include IncomingEmailMonitorRequest and refactor IncomingEmail processing 2026-01-14 09:27:01 +00:00
Simon Larsen
38508f36b4 Merge pull request #2220 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-14 09:22:43 +00:00
Nawaz Dhandala
691227dfef feat: Add INBOUND_EMAIL_DOMAIN to frontend environment variable allow list 2026-01-14 09:19:59 +00:00
Nawaz Dhandala
7ed8372c4f feat: Refactor IncomingEmailMonitor to check online status and update documentation link 2026-01-14 09:17:47 +00:00
Nawaz Dhandala
e9d53a9e3b feat: Add IncomingEmailMonitor heartbeat check functionality 2026-01-14 09:14:41 +00:00
Nawaz Dhandala
3801915850 feat: Enhance MonitorCreate to utilize MonitorTypeHelper for interval validation 2026-01-14 09:08:42 +00:00
simlarsen
d83e4684c4 chore: npm audit fix 2026-01-14 02:01:38 +00:00
Nawaz Dhandala
f6897e776d feat: Add Incoming Email criteria handling for online and offline states in MonitorCriteriaInstance 2026-01-13 23:11:08 +00:00
Nawaz Dhandala
e8a2c5eb7e feat: Update Self Hosted navigation links in DocsNav 2026-01-13 22:34:10 +00:00
Nawaz Dhandala
91e8fffbe1 feat: Add Inbound Email configuration for Incoming Email Monitor feature 2026-01-13 22:20:43 +00:00
Nawaz Dhandala
bd0ef197d9 feat: Refactor Incoming Email processing to use unified Probe Ingest queue and remove legacy code 2026-01-13 22:17:05 +00:00
Nawaz Dhandala
05c15ddd09 feat: Enhance Inbound Email configuration handling and improve error messaging 2026-01-13 22:12:21 +00:00
Nawaz Dhandala
7b99b0214d feat: Update Incoming Email Monitor webhook endpoint and improve Nginx configuration 2026-01-13 22:10:34 +00:00
Nawaz Dhandala
4b738ef85a feat: Remove Incoming Email Ingest Hostname configuration 2026-01-13 22:10:02 +00:00
Nawaz Dhandala
6c9879003e feat: Add Incoming Email Monitor documentation and navigation links 2026-01-13 22:07:19 +00:00
Nawaz Dhandala
c9e4ac526a feat: Add Incoming Email Monitor functionality
- 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.
2026-01-13 21:57:31 +00:00
Nawaz Dhandala
a59eccdd9f chore: Bump version to 9.3.16 2026-01-13 10:55:47 +00:00
Nawaz Dhandala
b484b9b989 feat: Update button title from "Watch Video" to "Watch Demo" in CardModelDetail, BaseModelTable, and Builder components 2026-01-13 10:55:26 +00:00
Nawaz Dhandala
c63202150d feat: Add responsive visibility for documentation and video buttons in CardModelDetail and BaseModelTable components 2026-01-13 10:49:02 +00:00
Nawaz Dhandala
66d4e0fe62 feat: Add video link support across multiple components for enhanced user guidance 2026-01-13 10:47:27 +00:00
Nawaz Dhandala
2a49ea987c link documentation to cards 2026-01-13 09:27:56 +00:00
Nawaz Dhandala
5c334f6476 feat: Add documentation link support in CardModelDetail and BaseModelTable components 2026-01-13 09:19:19 +00:00
Nawaz Dhandala
cca0d53f56 chore: Bump version to 9.3.15 2026-01-12 22:07:24 +00:00
Nawaz Dhandala
e477948b16 style: Format code for improved readability and consistency across multiple files 2026-01-12 22:07:04 +00:00
Nawaz Dhandala
2adaa81af4 feat: Set default collapsed state for Settings in SideMenu across multiple pages 2026-01-12 22:06:17 +00:00
Nawaz Dhandala
f22f18734f refactor: Update route mappings and clean up unused page maps in settings 2026-01-12 21:56:15 +00:00
Nawaz Dhandala
2d52126da4 Add Status Page Announcement and Subscriber Notification Templates
- 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.
2026-01-12 21:49:38 +00:00
Nawaz Dhandala
707f35d12f feat: Implement alert suppression rules with parent-child relationship and notification suppression 2026-01-12 19:18:20 +00:00
Nawaz Dhandala
3d45986b5a chore: Bump version to 9.3.14 2026-01-12 18:31:16 +00:00
Nawaz Dhandala
1b498ca5fa refactor: Improve fallback comment for tenant ID retrieval in ModelAPI 2026-01-12 18:30:58 +00:00
Nawaz Dhandala
ce7ed97281 feat: Add fallback for tenant ID retrieval in ModelAPI when project data is not fully loaded 2026-01-12 18:30:18 +00:00
Nawaz Dhandala
d5a6e0b7c7 feat: Implement alert suppression rules with parent-child relationship and notification suppression 2026-01-12 15:46:52 +00:00
Nawaz Dhandala
1131b7eea0 feat: Refactor JWT signing to use custom method with private key for OAuth flows 2026-01-12 13:46:30 +00:00
Nawaz Dhandala
b48b3f31fc refactor: Improve code formatting and readability in SCIM and StatusPageSCIM APIs 2026-01-12 13:04:58 +00:00
Nawaz Dhandala
7b35e7752c fix: Update SCIMBulkOperationResponse to explicitly define optional properties 2026-01-12 13:03:42 +00:00
Nawaz Dhandala
b9c6be38a1 feat: Implement SCIM Bulk Operations for Users and Groups in SCIM and Status Page SCIM APIs 2026-01-12 12:56:18 +00:00
Nawaz Dhandala
e8ff2cd7af chore: Bump version to 9.3.13 2026-01-12 12:48:45 +00:00
Nawaz Dhandala
50868ac8ea feat: Add SCIM Schemas and ResourceTypes endpoints for project and status page 2026-01-12 12:47:52 +00:00
Nawaz Dhandala
f74c003065 chore: Bump version to 9.3.12 2026-01-12 12:37:48 +00:00
Simon Larsen
0420d9042a Merge pull request #2212 from OneUptime/email-oauth
Email oauth
2026-01-12 12:36:57 +00:00
Nawaz Dhandala
4672a2d79e refactor: Add public access modifier to class name properties in migration files for consistency 2026-01-12 12:29:25 +00:00
Nawaz Dhandala
f59c215d1f refactor: Improve code formatting and readability across multiple files 2026-01-12 12:11:57 +00:00
Nawaz Dhandala
3f3be46789 refactor: Remove in-flight request deduplication logic in SMTPOAuthService for simplified token fetching 2026-01-12 12:09:12 +00:00
Nawaz Dhandala
e046a5514d refactor: Replace LocalCache with GlobalCache for cross-container token caching in SMTPOAuthService 2026-01-12 12:07:06 +00:00
Nawaz Dhandala
63e69f82f2 refactor: Improve scalability and error handling in SMTPOAuthService for token fetching 2026-01-12 12:05:10 +00:00
Nawaz Dhandala
f7db7c537c refactor: Enhance documentation for OAuth flows and improve clarity in error messages 2026-01-12 11:55:55 +00:00
Nawaz Dhandala
a5e4717c2a refactor: Remove OAuth Type field from CustomSMTPTable for improved clarity 2026-01-12 11:52:53 +00:00
Nawaz Dhandala
43a0fc3694 feat: Add OAuth provider type selection and enhance descriptions for OAuth fields in SMTP configuration 2026-01-12 11:50:58 +00:00
Nawaz Dhandala
4c669000fa feat: Add OAuth provider type support for SMTP configuration and enhance documentation 2026-01-12 11:36:00 +00:00
Nawaz Dhandala
07476f366c refactor: Update clientSecret field to support longer OAuth secrets and enhance documentation 2026-01-12 11:17:31 +00:00
Nawaz Dhandala
1a0fac5a3f docs: Add comprehensive SMTP configuration guide with OAuth setup for Microsoft 365 and Google Workspace 2026-01-12 10:45:21 +00:00
Nawaz Dhandala
4f68fd0542 refactor: Remove SMTP configuration documentation for improved clarity and maintenance 2026-01-12 10:37:24 +00:00
Nawaz Dhandala
c83600e446 Merge branch 'master' into email-oauth 2026-01-12 10:36:50 +00:00
Nawaz Dhandala
02368685b5 refactor: Remove unnecessary span elements for improved readability in multiple views 2026-01-12 10:28:52 +00:00
Nawaz Dhandala
113106a30d refactor: Simplify privacy statements and enhance layout consistency in AI Agent section 2026-01-12 10:26:14 +00:00
Nawaz Dhandala
b98fa7af0e refactor: Remove unused icon elements from AI Agent section for cleaner code 2026-01-12 10:24:42 +00:00
Nawaz Dhandala
f027dda584 Merge branch 'release' 2026-01-12 10:20:13 +00:00
Nawaz Dhandala
32f662a84c refactor: Update AI model section for improved clarity and visual consistency 2026-01-12 10:20:03 +00:00
Nawaz Dhandala
3e218e14f1 feat: Add Waterfall icon and update DashboardNavbar to use it 2026-01-10 11:16:14 +00:00
Nawaz Dhandala
495b4e3a79 feat: Add ChartPie and Heartbeat icons; update icon usage in DashboardNavbar 2026-01-10 10:27:16 +00:00
Nawaz Dhandala
abd9741337 refactor: Format comments in MoveTelemetryServiceTokenToTelemetryIngestionKey migration for clarity 2026-01-10 09:29:27 +00:00
Nawaz Dhandala
54b1a74dc2 refactor: Update telemetry service references to use ServiceService in AddTelemetryServiceColor migration 2026-01-10 09:28:59 +00:00
Nawaz Dhandala
b07fa604d0 refactor: Rename telemetryServices to services in AlertService and IncidentService 2026-01-10 09:11:49 +00:00
Nawaz Dhandala
b77f966cd1 chore: Bump version to 9.3.11 2026-01-09 21:58:19 +00:00
Simon Larsen
b464ff1cf9 Merge pull request #2219 from OneUptime/diff-products
Diff products
2026-01-09 21:50:10 +00:00
Nawaz Dhandala
f34bd4ad36 refactor: Simplify route parameter population in Logs and Span components 2026-01-09 21:49:42 +00:00
Nawaz Dhandala
9196a81693 Refactor telemetry-related components and routes into separate logs, metrics, and traces sections
- 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.
2026-01-09 21:46:05 +00:00
Nawaz Dhandala
82e4beb8d9 refactor(navbar): Update footer type definition for clarity and consistency 2026-01-09 21:26:44 +00:00
Simon Larsen
f494e0cdaa Merge pull request #2218 from OneUptime/navbar-improvement
Navbar improvement
2026-01-09 21:16:07 +00:00
Nawaz Dhandala
b2833d115d chore: Bump version to 9.3.10 2026-01-09 21:15:42 +00:00
Nawaz Dhandala
6115da2a2d feat(navbar): Refactor NavBar and NavBarMenu for improved readability and structure 2026-01-09 21:15:33 +00:00
Nawaz Dhandala
b6f52df524 feat(navbar): Refactor Navbar to enhance active product handling and group more menu items by category 2026-01-09 21:12:16 +00:00
Nawaz Dhandala
57c7f239e6 feat(navbar): Update NavBar and NavBarMenu for improved active product handling and layout adjustments 2026-01-09 21:08:01 +00:00
Nawaz Dhandala
8b49f709e3 feat(navbar): Improve NavBarMenu layout with separate Settings section and enhanced styling 2026-01-09 21:04:06 +00:00
Nawaz Dhandala
a25836db1b feat(navbar): Enhance Navbar and NavBarMenu with category grouping and additional properties 2026-01-09 20:58:02 +00:00
Nawaz Dhandala
0426c3c064 chore: Bump version to 9.3.9 2026-01-09 19:45:16 +00:00
Simon Larsen
f083abd741 Merge pull request #2216 from OneUptime/telemetry-service-migration
Telemetry service migration
2026-01-09 19:43:30 +00:00
Nawaz Dhandala
57a58849ec refactor(migration): Specify type for telemetry service existence checks for clarity 2026-01-09 19:42:13 +00:00
Nawaz Dhandala
c1efcf578f feat(migration): Refactor MigrationName1767979448478 for improved readability and structure
- 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.
2026-01-09 19:36:10 +00:00
Nawaz Dhandala
30c1585dd8 fix: Update create permissions for AIAgentTask model to include necessary roles 2026-01-09 19:10:14 +00:00
Nawaz Dhandala
92cefa70fa fix: Update create permissions for description and aiAgent fields in AIAgentTask model 2026-01-09 19:04:19 +00:00
Nawaz Dhandala
57f36d75b3 refactor: Update telemetryService references to service in FixExceptionTaskHandler for consistency 2026-01-09 18:46:07 +00:00
Nawaz Dhandala
165976608d refactor: Replace telemetryServiceId with serviceId in FixException metadata and related services for consistency 2026-01-09 18:43:39 +00:00
Nawaz Dhandala
f016c02dfb fix: Update telemetryServiceId references to serviceId in ExceptionUtil for consistency 2026-01-09 18:39:53 +00:00
Nawaz Dhandala
2dc2f3bf36 feat: Refactor telemetryService references to service in components and add ServicesElement for improved service handling 2026-01-09 18:07:11 +00:00
Nawaz Dhandala
a9b5ea4702 feat: Implement comprehensive migration from TelemetryService to Service, including data transfer and constraint updates 2026-01-09 17:57:05 +00:00
Nawaz Dhandala
81051064dd feat: Implement data migration from TelemetryService to Service and related tables 2026-01-09 17:35:55 +00:00
Nawaz Dhandala
3dee4e9cc6 feat: Implement migration for Service entity and related constraints 2026-01-09 17:27:18 +00:00
Nawaz Dhandala
f272738ae9 Merge branch 'master' into telemetry-service-migration 2026-01-09 17:23:45 +00:00
Nawaz Dhandala
99d198a33b feat: Add migration to drop constraints and create new indexes for Service and related entities 2026-01-09 17:18:31 +00:00
Nawaz Dhandala
e7089e9e85 Refactor TelemetryService to Service across the application
- 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.
2026-01-09 15:49:52 +00:00
Nawaz Dhandala
827e4c8b90 chore: Bump version to 9.3.8 2026-01-09 14:46:15 +00:00
Simon Larsen
6513938b00 Merge pull request #2215 from OneUptime/service-name-migration
Service name migration
2026-01-09 14:45:47 +00:00
Nawaz Dhandala
1c6d243457 feat: Refactor navigation in delete components to utilize RouteUtil for parameterized routing 2026-01-09 14:34:23 +00:00
Nawaz Dhandala
491e6341a9 feat: Enhance ServiceDelete component to utilize RouteUtil for parameterized navigation 2026-01-09 14:29:35 +00:00
Nawaz Dhandala
89e1bdedaf feat: Update Services and Settings pages to include Labels and Tech Stack fields with improved descriptions 2026-01-09 14:27:16 +00:00
Nawaz Dhandala
b0ab3f299c feat: Rename ServiceLabel to TelemetryServiceLabel in TelemetryService and update migration script 2026-01-09 14:12:15 +00:00
Nawaz Dhandala
94c8a25bfd refactor: Simplify code formatting and improve readability across multiple files 2026-01-09 13:58:15 +00:00
Nawaz Dhandala
2dfd33a86e feat: Rename ServiceCatalog and related tables/columns for improved clarity 2026-01-09 13:56:28 +00:00
Nawaz Dhandala
21232465bc feat: Add Service Owners, Settings, Side Menu, Telemetry Services, and Traces pages
- 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.
2026-01-09 13:53:21 +00:00
Nawaz Dhandala
fc12833ae5 fix: update iconColor prop type to include undefined 2026-01-09 08:46:21 +00:00
Simon Larsen
e2707581a2 Merge pull request #2214 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-09 08:36:39 +00:00
simlarsen
d91272fd6c chore: npm audit fix 2026-01-09 01:58:08 +00:00
Nawaz Dhandala
bf4e6cd6ab Refactor NavBarMenuItem component for improved layout consistency 2026-01-08 20:45:06 +00:00
Simon Larsen
da4f5f6c03 Merge pull request #2213 from OneUptime/exception-refactor
Exception refactor
2026-01-08 20:28:01 +00:00
Nawaz Dhandala
ff90d94b6b Bump version to 9.3.7 2026-01-08 20:27:43 +00:00
Nawaz Dhandala
1a7d2a76de Refactor StatusPageApiInternalUrl documentation for clarity and consistency 2026-01-08 20:27:30 +00:00
Nawaz Dhandala
8ed7381356 Refactor exception handling routes for improved readability and organization 2026-01-08 20:15:22 +00:00
Nawaz Dhandala
23dcca41fc Refactor exception handling components and routes for improved clarity and organization 2026-01-08 20:14:19 +00:00
Nawaz Dhandala
dbad765586 Add orange color variant to NavBarMenuItem and remove unused fields from TelemetryExceptionTable 2026-01-08 20:05:41 +00:00
Nawaz Dhandala
c2be57e2f0 Refactor StatusPageApiInternalUrl to use AppApiClientUrl for improved clarity in server communication 2026-01-08 19:59:15 +00:00
Nawaz Dhandala
6134fa467c Update StatusPageApiInternalUrl to use correct internal route for server communication 2026-01-08 19:58:03 +00:00
Nawaz Dhandala
918fda707e Add Bug icon to Icon component and update NavBar to use it 2026-01-08 19:53:36 +00:00
Nawaz Dhandala
c8bdbf619a Update navigation to redirect to EXCEPTIONS page on delete success in ExceptionExplorer 2026-01-08 19:49:47 +00:00
Nawaz Dhandala
27004092e3 Add EXCEPTIONS_VIEW_ROOT to PageMap and update routing in TelemetryExceptionTable 2026-01-08 19:48:13 +00:00
Nawaz Dhandala
dbd3742bbe Refactor routing in ExceptionsTable and ExceptionsRoutes for improved clarity and structure 2026-01-08 19:22:15 +00:00
Nawaz Dhandala
c562af4d90 Add Exceptions feature with routing, layout, and side menu integration 2026-01-08 19:14:42 +00:00
Nawaz Dhandala
bc5457259f Refactor SMTP OAuth authentication: streamline token handling and utilize nodemailer's built-in XOAUTH2 support 2026-01-08 18:48:25 +00:00
Nawaz Dhandala
551faa170d Add migration for ProjectSmtpConfig: include authType, clientId, clientSecret, tokenUrl, and scope fields 2026-01-08 18:31:21 +00:00
Nawaz Dhandala
73122b7d72 Add SMTP section to documentation with configuration details for OAuth 2.0 and username/password authentication 2026-01-08 18:26:57 +00:00
Nawaz Dhandala
5eb83dec0a Refactor SMTP OAuth implementation: replace Microsoft365OAuthService with generic SMTPOAuthService, update ProjectSmtpConfig to include tokenUrl and scope, and enhance error handling for OAuth configurations. 2026-01-08 18:22:30 +00:00
Nawaz Dhandala
123e0275bc Implement OAuth 2.0 support for SMTP authentication, including configuration fields and validation; enhance error handling for OAuth scenarios. 2026-01-08 18:14:10 +00:00
Nawaz Dhandala
e29b9ce00d bump version to 9.3.6 2026-01-08 15:44:51 +00:00
Nawaz Dhandala
65fa365d06 Refactor comments in OpenCodeAgent and AIAgentDataAPI for clarity; remove unused sections in NavBarMenu and NavBarMenuItem 2026-01-08 14:25:17 +00:00
Nawaz Dhandala
c40e18b2ed Align footer text to the left in NavBarMenu component 2026-01-08 14:23:27 +00:00
Nawaz Dhandala
f2520750fc Add GitHub icon to Icon component and update NavBarMenu to use it 2026-01-08 14:15:36 +00:00
Nawaz Dhandala
ecfce30adb Add FlowDiagram icon and update Navbar to use it 2026-01-08 14:13:16 +00:00
Nawaz Dhandala
20b184d6bd Enhance Navbar components with icon color support and update menu items 2026-01-08 14:09:53 +00:00
Nawaz Dhandala
bbfe8dcf7e Add backup and restoration for opencode.json in OpenCodeAgent 2026-01-08 13:39:40 +00:00
Nawaz Dhandala
f80497ead9 Implement GitHub installation expiration handling and error management 2026-01-08 13:22:09 +00:00
Nawaz Dhandala
8826635920 Refactor StatusPage API integration to use internal URL for server-to-server communication 2026-01-08 13:05:24 +00:00
Nawaz Dhandala
a08700e9f5 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-01-08 12:17:39 +00:00
Nawaz Dhandala
1b642885ab Enhance GitHub integration by updating access token permissions and documentation for AI Agent requirements 2026-01-08 12:05:39 +00:00
Nawaz Dhandala
5342317d57 Enhance OpenCodeAgent to pass prompt via stdin, improving handling of long prompts 2026-01-08 12:00:23 +00:00
Nawaz Dhandala
6d919920f7 Enhance OpenCodeAgent to use CLI mode flags for improved logging and output handling 2026-01-08 11:47:19 +00:00
Simon Larsen
4fcfe2e44c Merge pull request #2209 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-08 08:57:56 +00:00
simlarsen
e87d5de02f chore: npm audit fix 2026-01-08 01:57:11 +00:00
Nawaz Dhandala
992af21d05 Bump version to 9.3.5 2026-01-07 20:52:51 +00:00
Nawaz Dhandala
5c4c6dec93 Add agreedProbeNames to ProbeAgreementResult and enhance root cause logging 2026-01-07 20:41:28 +00:00
Nawaz Dhandala
9cae95d23b Merge branch 'master' of https://github.com/OneUptime/oneuptime 2026-01-07 20:29:16 +00:00
Nawaz Dhandala
8db3c6d8c3 Enhance value processing in MonitorCriteriaEvaluator to handle primitive types and custom class instances 2026-01-07 20:24:09 +00:00
Simon Larsen
95ff3b510e Merge pull request #2191 from tollercode/fix/processing-of-teams-response
Fix processing of teams response
2026-01-07 19:42:18 +00:00
Nawaz Dhandala
921bbe3cc1 Bump version to 9.3.4 2026-01-07 15:19:05 +00:00
Nawaz Dhandala
71d67ab48a Merge branch 'master' into release 2026-01-07 15:18:44 +00:00
Nawaz Dhandala
8d1fe98c17 Refactor demo page: integrate reviews section and remove testimonials view for improved layout and content management 2026-01-07 14:55:10 +00:00
Nawaz Dhandala
20c93e379b Bump version to 9.3.3 2026-01-07 14:30:48 +00:00
Nawaz Dhandala
5e04a8c13c Refactor icon sizes and styles across multiple views for consistency
- 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.
2026-01-07 13:54:27 +00:00
Nawaz Dhandala
4eb513e852 Refactor multiple views: update headings for clarity and consistency in feature descriptions 2026-01-07 13:40:39 +00:00
Nawaz Dhandala
d3583aa2c7 Refactor exceptions.ejs: enhance "Why OneUptime" section layout and content for improved clarity and engagement 2026-01-07 13:34:20 +00:00
Nawaz Dhandala
2d4f2d0d95 Refactor dashboards.ejs: enhance layout and content for the "Why OneUptime" section, improving readability and visual appeal 2026-01-07 13:16:49 +00:00
Nawaz Dhandala
f351d90046 Refactor metrics, on-call, traces, workflows views: remove unnecessary spans, enhance layout with icons and labels, and improve overall readability. 2026-01-07 13:08:56 +00:00
Nawaz Dhandala
f9b284dd7c Refactor status page content layout for improved readability and consistency 2026-01-07 13:02:16 +00:00
Nawaz Dhandala
40b57f8e5f Refactor background colors across multiple views to use a consistent gray tone
- 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.
2026-01-07 12:39:49 +00:00
Nawaz Dhandala
6f94e3dec9 Update color scheme for badges and text across multiple views for improved visual consistency 2026-01-07 12:28:38 +00:00
Nawaz Dhandala
b7bf950db6 Enhance Team Notifications Section with Real-Time Alerts and Integrations
- 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.
2026-01-07 12:15:19 +00:00
Nawaz Dhandala
f961e946be Refactor button styles and update section headers across multiple views for improved consistency and responsiveness 2026-01-07 12:00:27 +00:00
Nawaz Dhandala
ca44b797a5 Enhance Team Notifications Section across multiple views
- 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.
2026-01-07 11:51:42 +00:00
Nawaz Dhandala
75be6baf28 Enhance Slack Demo UI and Interactivity for Traces
- 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.
2026-01-07 11:41:17 +00:00
Nawaz Dhandala
a42a00edd5 refactor: remove stats section and enhance workflow builder UI with detailed action nodes and logs 2026-01-07 11:18:47 +00:00
Simon Larsen
c372419de6 Merge pull request #2208 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-07 08:42:02 +00:00
simlarsen
37f35a5ea3 chore: npm audit fix 2026-01-07 01:56:57 +00:00
Nawaz Dhandala
781455abb5 Enhance status, traces, and workflows pages with new notification sections and interactive grid effects
- 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.
2026-01-06 21:15:16 +00:00
Nawaz Dhandala
b539e474d0 refactor: Remove Stats Section for improved layout and focus on key features 2026-01-06 20:55:17 +00:00
Nawaz Dhandala
21605b2a41 refactor: Add grid glow effect on cursor movement in hero section for enhanced interactivity 2026-01-06 20:54:20 +00:00
Nawaz Dhandala
fd143903c9 refactor: Add subtle grid pattern background for improved visual depth in hero section 2026-01-06 20:53:53 +00:00
Nawaz Dhandala
ad8c825a62 refactor: Update color scheme for improved visual consistency in notifications section 2026-01-06 20:52:17 +00:00
Nawaz Dhandala
cca88b9073 refactor: Update color scheme and text for improved visual consistency 2026-01-06 20:51:10 +00:00
Nawaz Dhandala
1950175f0b refactor: Update button styles for improved consistency and accessibility 2026-01-06 20:47:22 +00:00
Nawaz Dhandala
fdd9319162 refactor: Adjust journey flow visualization layout for improved clarity and spacing 2026-01-06 20:46:31 +00:00
Nawaz Dhandala
fb26b120bd refactor: Update monitoring page design for enhanced clarity and modern aesthetics 2026-01-06 20:41:04 +00:00
Nawaz Dhandala
b8814f128b refactor: Redesign monitoring page layout for improved clarity and user engagement 2026-01-06 20:39:59 +00:00
Nawaz Dhandala
66c9ecdb8f refactor: Remove redundant status display for improved layout clarity 2026-01-06 20:34:02 +00:00
Nawaz Dhandala
462b6db8b8 refactor: Revamp monitoring page layout and illustrations for enhanced user experience 2026-01-06 20:32:39 +00:00
Nawaz Dhandala
7e12dde1ba refactor: Enhance monitoring page design for improved clarity and consistency 2026-01-06 20:27:58 +00:00
Nawaz Dhandala
f03daf66ee Implement feature X to enhance user experience and optimize performance 2026-01-06 20:18:14 +00:00
Nawaz Dhandala
0312586770 refactor: Update monitoring features with improved illustrations and descriptions for clarity 2026-01-06 19:33:33 +00:00
Nawaz Dhandala
d5e717f9b0 refactor: Update integration cards layout and styling for improved visual consistency 2026-01-06 19:26:02 +00:00
Nawaz Dhandala
9351218df6 refactor: Replace SVG avatars with image-based avatars for improved visual consistency 2026-01-06 19:23:31 +00:00
Nawaz Dhandala
eaa6a7fe66 refactor: Revamp interactive Slack notification illustration with enhanced design and functionality 2026-01-06 19:21:14 +00:00
Nawaz Dhandala
81a477cf49 refactor: Enhance interactive Slack notification illustration with improved layout and functionality 2026-01-06 19:18:02 +00:00
Nawaz Dhandala
95ed963071 refactor: Revamp Slack notification illustration to enhance visual design and user interaction 2026-01-06 19:15:36 +00:00
Nawaz Dhandala
247d732d1b refactor: Update SVG icons and improve layout in Team Notifications section for better visual consistency 2026-01-06 19:10:22 +00:00
Nawaz Dhandala
7211bd3fac refactor: Add Team Notifications section with integration options for Slack and Microsoft Teams 2026-01-06 19:05:14 +00:00
Nawaz Dhandala
1f07ad7c0f refactor: Revamp illustrations and layout in monitoring section for enhanced visual appeal and consistency 2026-01-06 18:31:41 +00:00
Nawaz Dhandala
d749be5cd0 refactor: Enhance visual elements and layout of monitoring sections for improved user experience 2026-01-06 18:24:56 +00:00
Nawaz Dhandala
be55e82075 Refactor stats sections across multiple views for improved styling and consistency
- 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.
2026-01-06 18:01:50 +00:00
Nawaz Dhandala
886337ae30 refactor: Update Stats Section layout and styling for improved visual consistency 2026-01-06 17:19:36 +00:00
Nawaz Dhandala
0ef23eb161 Refactor traces and workflows views to simplify styles and enhance readability
- 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.
2026-01-06 16:32:29 +00:00
Nawaz Dhandala
737cdf4d3d Refactor "How It Works" sections across multiple views for consistency and improved styling
- 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.
2026-01-06 16:03:27 +00:00
Nawaz Dhandala
6a50b0cdf4 refactor: Simplify and enhance the "How It Works" section layout and styling 2026-01-06 15:53:38 +00:00
Nawaz Dhandala
dfe6f9be14 feat: Add demo video includes to incident management, monitoring, on-call, status page, and workflows views 2026-01-06 13:45:48 +00:00
Nawaz Dhandala
93a22c67fd Refactor code structure for improved readability and maintainability 2026-01-06 12:41:30 +00:00
Nawaz Dhandala
c069355a83 feat: Add White-Glove Onboarding feature card to enterprise overview 2026-01-06 12:30:54 +00:00
Nawaz Dhandala
197b7d5e22 refactor: Update avatar styling for improved aesthetics and consistency 2026-01-06 12:29:09 +00:00
Nawaz Dhandala
4ef184d21e fix: Update government monitoring description for clarity and accuracy 2026-01-06 12:25:11 +00:00
Nawaz Dhandala
9d77b9ab09 Refactor code structure for improved readability and maintainability 2026-01-06 12:22:37 +00:00
Nawaz Dhandala
d2df638df0 Implement feature X to enhance user experience and optimize performance 2026-01-06 12:13:18 +00:00
Nawaz Dhandala
78ed019d50 Refactor hero sections in incident management, monitoring, and status page views for improved aesthetics and consistency. Simplified badge elements, adjusted typography, and enhanced background gradients. Updated call-to-action buttons for better clarity and responsiveness. Cleaned up feature highlights for a more streamlined presentation. 2026-01-06 11:54:56 +00:00
Nawaz Dhandala
89f9faacf6 fix: Simplify blog post layout by removing unnecessary grid structure 2026-01-06 11:43:40 +00:00
Nawaz Dhandala
7ff0da5ab5 fix: Update navigation for Enterprise dropdown and adjust Request Demo link 2026-01-06 11:19:07 +00:00
Nawaz Dhandala
e295525698 feat: Add disk space cleanup step to release workflows 2026-01-06 11:15:07 +00:00
Nawaz Dhandala
48b398b032 fix: Update description formatting for PageSEOConfig 2026-01-05 13:24:40 +00:00
Nawaz Dhandala
772e3684e5 chore: Bump version to 9.3.2 2026-01-05 13:24:18 +00:00
Nawaz Dhandala
20ee5fed6c fix: Change overflow property to 'visible' for improved card layout 2026-01-05 13:24:05 +00:00
Nawaz Dhandala
e77fbdc439 refactor: Update navigation links for legal and enterprise sections 2026-01-05 12:39:45 +00:00
Nawaz Dhandala
7a207c9020 refactor: Enhance demo page layout and content for improved user engagement 2026-01-05 12:36:19 +00:00
Nawaz Dhandala
75b05c359e Add "How It Works" sections to various views with step-by-step guides for incident management, logs management, metrics, monitoring, on-call, status page, traces, and workflows. 2026-01-05 12:32:13 +00:00
Nawaz Dhandala
1c02a82a2c refactor: Update APM link to Traces and modify description for clarity 2026-01-05 12:32:07 +00:00
Nawaz Dhandala
0e111b4bc1 refactor: Update APM link to Traces and modify description for clarity 2026-01-05 12:31:13 +00:00
Nawaz Dhandala
2c0db9fe55 refactor: Update sitemap and SEO configuration for new product and industry pages 2026-01-05 12:30:16 +00:00
Nawaz Dhandala
c42fcc480b Remove APM product route, SEO configuration, and view files 2026-01-05 12:26:39 +00:00
Nawaz Dhandala
bdfcf04d58 refactor: Update product links in footer for consistency and clarity 2026-01-05 12:22:58 +00:00
Nawaz Dhandala
e392a61916 refactor: Remove outdated use cases from footer links for clarity 2026-01-05 12:21:06 +00:00
Nawaz Dhandala
0349926d81 refactor: Update navigation links to reflect enterprise solutions and demo request 2026-01-05 12:20:08 +00:00
Nawaz Dhandala
6c033dfe10 refactor: Simplify route definition for product traces 2026-01-03 21:59:38 +00:00
Simon Larsen
f62ad9527c Merge pull request #2193 from OneUptime/ui-upgrade
UI upgrade
2026-01-03 21:55:57 +00:00
Simon Larsen
dfec19b40e Merge pull request #2207 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2026-01-03 21:55:38 +00:00
Nawaz Dhandala
5a9d35ea8d Refactor hero sections in on-call, traces, and workflows pages for improved design consistency and readability. Updated background gradients, adjusted padding, and simplified feature lists. Enhanced button styles and cleaned up image presentations for a more modern look. 2026-01-03 21:50:28 +00:00
Nawaz Dhandala
c5bc5e30b0 Add stats and features sections to workflows page
- 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.
2026-01-03 21:19:55 +00:00
Nawaz Dhandala
346c1f6dcc fix: Update downtime cost message for clarity 2026-01-03 21:17:43 +00:00
Nawaz Dhandala
d56a0b7c5c Update SaaS landing page for improved messaging and layout
- 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.
2026-01-03 19:40:42 +00:00
Nawaz Dhandala
8984bb4ea6 Refactor code structure for improved readability and maintainability 2026-01-03 19:17:27 +00:00
Nawaz Dhandala
07c624d34c feat: Enhance product grid section with dynamic labels and improve DevOps pain points presentation 2026-01-03 19:02:24 +00:00
Nawaz Dhandala
9406f5af96 feat: Update language icons and paths for improved visual consistency 2026-01-03 18:51:42 +00:00
Nawaz Dhandala
1e08c35bb8 Implement feature X to enhance user experience and optimize performance 2026-01-03 18:43:05 +00:00
Nawaz Dhandala
12f8aaa10a feat: Remove redundant promotional text from developers section for cleaner layout 2026-01-03 18:10:08 +00:00
Nawaz Dhandala
1cfe9e7dad feat: Enhance code block styling and terminal window design for improved readability and user interaction 2026-01-03 18:05:29 +00:00
Nawaz Dhandala
4f9c30dadf feat: Revamp language pills section with a grid layout and enhanced styling for better visual appeal 2026-01-03 18:01:36 +00:00
Nawaz Dhandala
7f42566aeb feat: Revamp OpenTelemetry section with new design and enhanced content 2026-01-03 13:38:21 +00:00
Nawaz Dhandala
3b148dce68 feat: Update otel-collector configuration for improved clarity and accuracy 2026-01-03 13:33:42 +00:00
Nawaz Dhandala
473b5886b2 feat: Add reusable product grid section with dynamic content and enhanced styling 2026-01-03 13:31:08 +00:00
Nawaz Dhandala
07fbf3f47b Implement feature X to enhance user experience and optimize performance 2026-01-03 13:09:53 +00:00
Nawaz Dhandala
9814edfc19 feat: Enhance developers page with new design elements and improved content 2026-01-03 11:20:20 +00:00
Nawaz Dhandala
a4dda7f8e2 Implement feature X to enhance user experience and fix bug Y in module Z 2026-01-03 11:17:56 +00:00
Nawaz Dhandala
a7dd2283c0 Implement feature X to enhance user experience and optimize performance 2026-01-03 11:07:29 +00:00
Nawaz Dhandala
38d0d73a3f Implement feature X to enhance user experience and optimize performance 2026-01-03 11:03:06 +00:00
Nawaz Dhandala
4298a005ef feat: Update image source for AI agent in copilot section 2026-01-02 20:50:52 +00:00
Nawaz Dhandala
583211b0e7 Implement feature X to enhance user experience and optimize performance 2026-01-02 20:34:53 +00:00
Nawaz Dhandala
545860404c feat: Update status update description for clarity 2026-01-02 20:29:07 +00:00
Nawaz Dhandala
283785f64b feat: Revise product descriptions for clarity and impact across multiple sections 2026-01-02 20:28:12 +00:00
Nawaz Dhandala
1362ba96f9 Refactor code structure for improved readability and maintainability 2026-01-02 20:09:00 +00:00
Nawaz Dhandala
fd519d7d9c Refactor code structure for improved readability and maintainability 2026-01-02 19:56:16 +00:00
Nawaz Dhandala
ec097b6531 Implement feature X to enhance user experience and optimize performance 2026-01-02 19:06:37 +00:00
Nawaz Dhandala
84a99c06b6 feat: Update SVG icon path for "Custom Contracts" for improved clarity 2026-01-02 19:04:09 +00:00
Nawaz Dhandala
22b1ea282c feat: Update SVG icon path for improved visual representation in enterprise-ready section 2026-01-02 19:02:31 +00:00
Nawaz Dhandala
32e1377a05 feat: Update text color for "Built for Scale" in enterprise-ready section 2026-01-02 19:01:03 +00:00
Nawaz Dhandala
d7caf79b6d feat: Remove final CTA section to streamline features table layout 2026-01-02 18:12:49 +00:00
Nawaz Dhandala
4a915c4779 feat: Update text color for "Built for Scale" in enterprise-ready section 2026-01-02 18:10:28 +00:00
Nawaz Dhandala
ba6de67c45 feat: Simplify enterprise-ready section by removing compliance badges and adjusting description 2026-01-02 18:09:20 +00:00
Nawaz Dhandala
b21fdba307 Implement feature X to enhance user experience and fix bug Y in module Z 2026-01-02 18:08:26 +00:00
Nawaz Dhandala
1f8d0b5ea6 Enhance enterprise-ready section with improved styles and animations
- 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.
2026-01-02 18:01:15 +00:00
Nawaz Dhandala
6d41c8baa7 feat: Revamp header section with enhanced styling and updated text for AI Reliability Agent 2026-01-02 17:35:56 +00:00
Nawaz Dhandala
148167c911 feat: Update Copilot section with enhanced background styling and improved text contrast 2026-01-02 17:33:44 +00:00
Nawaz Dhandala
9de24a5be3 feat: Enhance Copilot section with refined background elements and improved styling 2026-01-02 17:31:22 +00:00
Nawaz Dhandala
cdc280fd15 feat: Refine Final CTA section with updated background effects and improved text styling 2026-01-02 17:19:53 +00:00
Nawaz Dhandala
70e2fcee45 feat: Revamp final CTA section with enhanced styling and updated content 2026-01-02 17:18:05 +00:00
Nawaz Dhandala
3e82e3af78 feat: Simplify feature descriptions for Log Management, Metrics, and Distributed Traces 2026-01-02 17:14:41 +00:00
Nawaz Dhandala
ce5b7d9bc1 feat: Add new features for latency tracking and AI-powered auto-fix 2026-01-02 17:12:12 +00:00
Nawaz Dhandala
6ee68271e0 feat: Update feature descriptions for clarity and add new capabilities 2026-01-02 17:05:39 +00:00
Nawaz Dhandala
0a34ef3253 feat: Enhance Dashboards feature description to include sharing and embedding options 2026-01-02 16:27:07 +00:00
Nawaz Dhandala
d719ce30e9 feat: Revise AI Agent feature description and update key functionalities for clarity 2026-01-02 16:25:41 +00:00
Nawaz Dhandala
883653738a feat: Remove 'New' badge from AI Agent feature card for cleaner presentation 2026-01-02 16:24:07 +00:00
Nawaz Dhandala
39caaff50e feat: Update feature list to include new metrics and password protection options 2026-01-02 16:23:17 +00:00
Nawaz Dhandala
40979b9e2b feat: Update feature card descriptions for accuracy and clarity 2026-01-02 16:21:55 +00:00
Nawaz Dhandala
1547dd4e6f feat: Update feature headings and descriptions for improved clarity and relevance 2026-01-02 16:19:04 +00:00
Nawaz Dhandala
52dfcb42b1 feat: Add open source and no vendor lock-in indicators to feature section 2026-01-02 16:17:11 +00:00
Nawaz Dhandala
561cb73f83 feat: Update feature descriptions for clarity and add new features for enhanced user experience 2026-01-02 16:08:31 +00:00
Nawaz Dhandala
e86b21e96c feat: Update feature list to include Slack & Teams integration and clarify severity levels 2026-01-02 16:02:29 +00:00
Nawaz Dhandala
8867a17abe feat: Remove "Popular" and "Essential" badges for a cleaner feature presentation 2026-01-02 16:01:25 +00:00
Nawaz Dhandala
9aa4080fba feat: Update feature descriptions for clarity and accuracy in the features list 2026-01-02 16:00:23 +00:00
Nawaz Dhandala
1e9aa83f15 feat: Update feature card styling and remove redundant information for a cleaner presentation 2026-01-02 15:56:58 +00:00
Nawaz Dhandala
0f585e0ca3 feat: Update icon path and change section title from "Core Reliability" to "Essentials" for improved clarity 2026-01-02 15:55:44 +00:00
Nawaz Dhandala
4d51ee9afa feat: Update features section intro and adjust product count for accuracy 2026-01-02 15:54:21 +00:00
Nawaz Dhandala
29e5590493 feat: Simplify "100% Open Source" badge by removing background and styling for cleaner presentation 2026-01-02 15:51:21 +00:00
Nawaz Dhandala
1c1bb6ff32 feat: Enhance Legal Center with glow effects and improved layout for better user interaction 2026-01-02 15:46:35 +00:00
Nawaz Dhandala
82d0f004a8 feat: Revamp Copilot section with improved visuals and updated messaging for enhanced user engagement 2026-01-02 13:46:52 +00:00
Nawaz Dhandala
d5f532821e feat: Update Copilot messaging for clarity and improved user understanding 2026-01-02 13:38:06 +00:00
Nawaz Dhandala
b96ec9a292 feat: Revise console Easter egg message for enhanced encouragement and support to builders 2026-01-02 13:36:14 +00:00
Nawaz Dhandala
67c71fa452 feat: Update floating TOC width for improved layout consistency across screen sizes 2025-12-31 16:15:16 +00:00
Nawaz Dhandala
5ce45a3c8e feat: Refactor floating TOC positioning logic for improved visibility and responsiveness 2025-12-31 16:11:47 +00:00
Nawaz Dhandala
8fc4294f4a feat: Improve floating TOC visibility logic based on content position and enhance transition effects 2025-12-31 14:48:12 +00:00
Nawaz Dhandala
054f0047fa feat: Add floating table of contents with visibility control and update back-to-top button position 2025-12-31 14:45:23 +00:00
Nawaz Dhandala
ba22e4b745 feat: Enhance blog post layout with improved styling, add back-to-top button, and implement smooth scroll behavior 2025-12-31 14:40:43 +00:00
Nawaz Dhandala
3344d87f86 feat: Update syntax highlighting theme and add support for additional languages 2025-12-31 13:33:44 +00:00
Nawaz Dhandala
da1647ecb7 feat: Enhance blog layout and styling with decorative backgrounds, improved card designs, and updated tag styles for better visual appeal 2025-12-31 13:31:30 +00:00
Nawaz Dhandala
e3d13c74eb feat: Update text in about section for improved clarity and engagement 2025-12-31 12:41:23 +00:00
Nawaz Dhandala
adda1bf450 feat: Update contributor avatars with soft pastel colors for improved aesthetics 2025-12-31 12:40:02 +00:00
Nawaz Dhandala
52275ba3cc feat: Add gradient avatars for contributors with initials for enhanced visual appeal 2025-12-31 12:37:51 +00:00
Nawaz Dhandala
1587a96be3 feat: Revamp contributors section with enhanced layout and styling for improved visibility 2025-12-31 12:31:12 +00:00
Nawaz Dhandala
a683681906 feat: Enhance about card styles with full height for improved layout consistency 2025-12-31 12:21:58 +00:00
Nawaz Dhandala
331b79ecc2 feat: Update open source badge styles for improved aesthetics and consistency 2025-12-31 12:17:21 +00:00
Nawaz Dhandala
c8e2c755c1 feat: Update contributor section styles for improved visibility and aesthetics 2025-12-31 12:13:55 +00:00
Nawaz Dhandala
dcdd578b87 feat: Update navigation links for privacy and terms for better organization 2025-12-31 12:11:20 +00:00
Nawaz Dhandala
9a86b01638 feat: Add z-index to CTA buttons for improved layering and visibility 2025-12-31 12:04:13 +00:00
Nawaz Dhandala
461fc5b6f5 feat: Update support section with colorful glow effects and improved styling for better user engagement 2025-12-31 11:59:42 +00:00
Nawaz Dhandala
2427b8d72c Implement feature X to enhance user experience and optimize performance 2025-12-31 11:55:57 +00:00
Nawaz Dhandala
0b6ae78adf feat: Enhance glow effects in "About" section with new color themes for improved aesthetics 2025-12-31 10:09:20 +00:00
Nawaz Dhandala
dd56240591 feat: Update glow effects in "About" section to monochrome gray for a modern look 2025-12-31 10:06:32 +00:00
Nawaz Dhandala
d374423786 feat: Update text color in "About" section for improved readability 2025-12-31 09:58:00 +00:00
Nawaz Dhandala
bb606805ee feat: Revamp hiring section with improved layout, glow effects, and updated messaging for better engagement 2025-12-31 09:55:38 +00:00
Nawaz Dhandala
5fa3cbf787 feat: Simplify contributor display by replacing avatars with icons for a cleaner layout 2025-12-31 09:45:04 +00:00
Nawaz Dhandala
90d7200794 feat: Update glow effects in "About" section with new color themes for enhanced visual appeal 2025-12-31 09:44:13 +00:00
Nawaz Dhandala
4d07d78b66 feat: Enhance "About" section with glow effects and improved card styles for better visual engagement 2025-12-31 09:41:18 +00:00
Nawaz Dhandala
5e06fc554c feat: Reintroduce "To The Builders" section with enhanced layout and messaging for improved engagement 2025-12-31 09:35:05 +00:00
Nawaz Dhandala
81f7451350 feat: Revise "To The Builders" section for improved emphasis and readability 2025-12-31 09:32:27 +00:00
Nawaz Dhandala
1e6d65448c feat: Update "To The Builders" section with new font styles for improved emphasis and readability 2025-12-31 09:31:22 +00:00
Nawaz Dhandala
90a5fb2062 feat: Update "To The Builders" section with new font styles and improved text for enhanced readability and engagement 2025-12-31 09:29:36 +00:00
Nawaz Dhandala
6fd4f93b7a feat: Update "To The Builders" section with new font styles and refined messaging for enhanced engagement 2025-12-31 09:27:36 +00:00
simlarsen
b1ab1c4775 chore: npm audit fix 2025-12-31 01:55:30 +00:00
Nawaz Dhandala
04602a245c feat: Update messaging in "About" section for enhanced motivation and connection 2025-12-30 20:55:44 +00:00
Nawaz Dhandala
f9b75e36fd feat: Revamp "To The Builders" section with updated messaging, enhanced visuals, and improved animations for greater engagement 2025-12-30 20:55:12 +00:00
Nawaz Dhandala
c642315df1 feat: Update messaging in "To The Builders" section for enhanced motivation and resilience 2025-12-30 20:50:16 +00:00
Nawaz Dhandala
5b200b9ab8 feat: Enhance messaging in "To The Builders" section for greater inspiration and connection 2025-12-30 20:48:07 +00:00
Nawaz Dhandala
3fc8d650a8 feat: Update messaging in "To The Builders" section for enhanced inspiration and connection 2025-12-30 20:07:09 +00:00
Nawaz Dhandala
e63a0ed45d feat: Revamp "To The Builders" section with enhanced visuals, animations, and typography for improved engagement 2025-12-30 20:05:16 +00:00
Nawaz Dhandala
d8fd1ec863 feat: Revise "To The Builders" section for enhanced clarity and emotional connection 2025-12-30 20:02:03 +00:00
Nawaz Dhandala
3f3a1a7d98 refactor: Remove badge section from about page for cleaner layout 2025-12-30 19:57:58 +00:00
Nawaz Dhandala
84c8b1e3d7 feat: Add "To The Builders" section with enhanced visuals and animations for improved engagement 2025-12-30 19:28:49 +00:00
Nawaz Dhandala
30b781c26f feat: Add "To The Builders" section and update background colors for improved aesthetics 2025-12-30 19:21:45 +00:00
Nawaz Dhandala
a3f0bf0428 feat: Enhance about page with improved hover effects and visual elements 2025-12-30 19:19:30 +00:00
Nawaz Dhandala
dc321c365a feat: Revamp log management and metrics tabs for enhanced clarity and engagement 2025-12-30 19:14:20 +00:00
Nawaz Dhandala
0e8c204ca0 fix: Correct translation classes in watch demo button for proper positioning 2025-12-30 19:02:38 +00:00
Nawaz Dhandala
d1cc9c72c1 feat: Update footer links and headings for better organization and clarity 2025-12-30 19:00:10 +00:00
Nawaz Dhandala
3634011c06 feat: Update text color in CTA heading for improved readability 2025-12-30 18:46:42 +00:00
Nawaz Dhandala
21b6ebe183 feat: Update background gradient and mask image for improved visual effect in CTA section 2025-12-30 18:45:22 +00:00
Nawaz Dhandala
5e18d5c2cf feat: Enhance CTA section with improved grid glow effect and updated text for better engagement 2025-12-30 18:44:03 +00:00
Nawaz Dhandala
4a95225671 feat: Add grid glow effect to CTA section for enhanced interactivity 2025-12-30 18:41:53 +00:00
Nawaz Dhandala
cfbb473199 feat: Update contact link to use email instead of contact page 2025-12-30 18:38:29 +00:00
Nawaz Dhandala
3971edfaaa feat: Update navigation link to point to system status page with improved labeling 2025-12-30 18:36:59 +00:00
Nawaz Dhandala
69d568a0cb feat: Update links in navigation for changelog and videos to external resources 2025-12-30 18:35:16 +00:00
Nawaz Dhandala
9dc47190ab feat: Enhance resources menu layout and styling for improved user engagement 2025-12-30 18:33:42 +00:00
Nawaz Dhandala
283c2b8c89 Implement feature X to enhance user experience and optimize performance 2025-12-30 18:29:10 +00:00
Nawaz Dhandala
25fd4cee7b chore: Bump version to 9.3.1 2025-12-30 18:10:03 +00:00
Nawaz Dhandala
6153e8b450 fix: Simplify error logging in metrics queue-size endpoint 2025-12-30 18:09:49 +00:00
Nawaz Dhandala
dd6ccbead8 fix: Update autoscaler condition for AI Agent to prevent conflicts with KEDA 2025-12-30 14:49:08 +00:00
Nawaz Dhandala
2413340b3c Add status communication and uptime monitoring pages with comprehensive features and CTAs 2025-12-30 14:03:52 +00:00
Nawaz Dhandala
fb37e67ac8 feat: Remove 'Updated' label from Documentation section for cleaner presentation 2025-12-30 13:15:01 +00:00
Nawaz Dhandala
63e5c4abf8 feat: Revamp footer section with improved layout and new links for documentation, pricing, and registration 2025-12-30 13:09:35 +00:00
Nawaz Dhandala
c023f7236b feat: Update review section icon to enhance visual appeal 2025-12-30 13:08:08 +00:00
Nawaz Dhandala
4d453c9680 feat: Update Industries section layout and add Government industry link 2025-12-30 13:02:10 +00:00
Nawaz Dhandala
481eff1636 feat: Add Industries section to navigation with links for various sectors 2025-12-30 12:58:38 +00:00
Nawaz Dhandala
9544c77524 feat: Enhance Solutions section layout with improved styling and accessibility 2025-12-30 12:50:45 +00:00
Nawaz Dhandala
bbdd6ca24c feat: Refactor Teams section in navigation for improved layout and accessibility 2025-12-30 12:49:17 +00:00
Nawaz Dhandala
5eeac0368b feat: Update solutions count and add new developer solution card in navigation 2025-12-30 12:46:24 +00:00
Nawaz Dhandala
c88fd61753 feat: Add Enterprise section with overview and demo request links in navigation 2025-12-30 12:43:39 +00:00
Nawaz Dhandala
4bae52be93 feat: Rename 'Solutions' to 'Enterprise' in navigation for clarity 2025-12-30 12:40:27 +00:00
Nawaz Dhandala
2114d33941 feat: Enhance mobile menu visibility with opacity transitions for smoother user experience 2025-12-30 12:34:57 +00:00
Nawaz Dhandala
5678e36259 feat: Simplify background styles in reviews and features sections for improved clarity 2025-12-30 12:29:53 +00:00
Nawaz Dhandala
0628b8fb7e feat: Enhance demo request button with improved z-index for better visibility 2025-12-30 12:26:16 +00:00
Nawaz Dhandala
3a45c1e11a Implement feature X to enhance user experience and optimize performance 2025-12-30 11:47:34 +00:00
Nawaz Dhandala
3aef8dd62a Implement feature X to enhance user experience and optimize performance 2025-12-30 11:32:25 +00:00
Nawaz Dhandala
d520149d99 Implement feature X to enhance user experience and optimize performance 2025-12-30 11:28:15 +00:00
Nawaz Dhandala
c4130c0a1f feat: Update product descriptions to reflect accurate product count 2025-12-30 10:02:45 +00:00
Nawaz Dhandala
b826f9f19a feat: Enhance review and testimonial sections with improved styling and animations 2025-12-30 09:58:54 +00:00
Nawaz Dhandala
13fc89e3a5 Implement feature X to enhance user experience and fix bug Y in module Z 2025-12-30 09:54:17 +00:00
Nawaz Dhandala
2df4446062 style: Remove 'New' label from AI Agent section for cleaner presentation 2025-12-30 09:47:47 +00:00
Nawaz Dhandala
046bdc2eee style: Adjust margin for section headers in navigation for better alignment 2025-12-30 09:43:16 +00:00
Nawaz Dhandala
3b9c0ab692 feat: Enhance AI Agent section with improved layout and description 2025-12-30 09:38:39 +00:00
Nawaz Dhandala
c11224a59d feat: Add product showcase section with interactive feature cards 2025-12-30 00:06:15 +00:00
Nawaz Dhandala
5b77798676 docs: Add branding prompt to guide design implementation in hero section 2025-12-29 23:55:57 +00:00
Nawaz Dhandala
1c1f23da88 style: Update grid glow effect opacity and mask size for improved visual effect 2025-12-29 23:51:14 +00:00
Nawaz Dhandala
5879ae3a73 feat: Add grid glow effect that follows cursor in hero section 2025-12-29 23:48:32 +00:00
Nawaz Dhandala
60b05191c0 style: Enhance button styling and hover effects in proudly open source section 2025-12-29 23:43:45 +00:00
Nawaz Dhandala
c5b3ca88c6 style: Update terminal UI with improved styling and hover effects 2025-12-29 23:39:07 +00:00
Nawaz Dhandala
79b0d2f63a style: Update transition effects and improve hover interactions in navigation menu 2025-12-29 23:38:15 +00:00
Nawaz Dhandala
d9e65e5657 feat: Enhance terminal UI with improved styling and animations 2025-12-29 23:28:55 +00:00
Nawaz Dhandala
ef724ab274 feat: Revamp product menu layout with enhanced sections and new resource links 2025-12-29 23:25:06 +00:00
Nawaz Dhandala
ca2d3abbc2 feat: Add Escape key functionality to revert terminal content during Easter egg activation 2025-12-29 23:23:00 +00:00
Nawaz Dhandala
8bccd0419f feat: Update terminal Easter egg interaction to reveal on dot clicks instead of triple-click 2025-12-29 23:22:07 +00:00
Nawaz Dhandala
f78c46e5e3 style: Enhance terminal appearance with updated padding, background, and font styles 2025-12-29 23:12:36 +00:00
Nawaz Dhandala
773af8f184 feat: Add terminal Easter egg with triple-click reveal and updated builder tribute 2025-12-29 23:08:18 +00:00
Nawaz Dhandala
2cd750c7fd Add new SVG icons for various features including AI Agent, Dashboards, Exceptions, Incidents, Logs, Metrics, Monitoring, On-Call, Status Page, Traces, and Workflows 2025-12-29 23:03:09 +00:00
Nawaz Dhandala
eae325e4f4 feat: Add console Easter egg with ASCII art and developer message 2025-12-29 23:03:03 +00:00
Nawaz Dhandala
3769e0d1a5 Add metrics and traces pages with detailed features and branding updates
- 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.
2025-12-29 22:13:09 +00:00
Nawaz Dhandala
26e241802d feat: Refactor hero feature grid to use a dedicated product grid component 2025-12-29 21:57:53 +00:00
Nawaz Dhandala
94e1812293 Add hero cards for various features and implement ambient glow effects
- 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.
2025-12-29 21:56:55 +00:00
Nawaz Dhandala
660d15bce5 feat: Enhance hover effects for hero cards with improved box-shadow styling 2025-12-29 21:53:05 +00:00
Nawaz Dhandala
8beddbf53e feat: Add comprehensive Product Branding Guide with color and icon specifications 2025-12-29 21:50:58 +00:00
Nawaz Dhandala
07a383314d feat: Update description for Dashboards card to enhance clarity 2025-12-29 21:45:20 +00:00
Nawaz Dhandala
0097d38811 feat: Update description for Monitoring card to improve clarity 2025-12-29 21:44:47 +00:00
Nawaz Dhandala
4c26ccfe95 feat: Update description for Workflows card to enhance clarity 2025-12-29 21:43:57 +00:00
Nawaz Dhandala
9673e54f9d feat: Update log description for clarity and improved messaging 2025-12-29 21:43:20 +00:00
Nawaz Dhandala
89172c4f9d feat: Add Stone glow style for On-Call card to enhance visual consistency 2025-12-29 21:40:38 +00:00
Nawaz Dhandala
5e1a776777 feat: Rotate SVG icon for Workflows card to enhance visual appeal 2025-12-29 21:35:49 +00:00
Nawaz Dhandala
05863e5824 feat: Update On-Call & Alerts card to use Cyan glow style 2025-12-29 21:32:07 +00:00
Nawaz Dhandala
a13949f340 feat: Update hero card glow styles for Emerald and Amber categories 2025-12-29 21:26:43 +00:00
Nawaz Dhandala
bc49ad1409 feat: Update alert and AI agent feature names and pricing plans for clarity 2025-12-29 21:24:56 +00:00
Nawaz Dhandala
78dc69bb5b feat: Add new hero card glow styles for Lime, Purple, Yellow, and Sky categories 2025-12-29 21:24:49 +00:00
Nawaz Dhandala
8b6fdbd4a7 feat: Update SVG icon for Traces card to improve visual alignment and clarity 2025-12-29 21:20:48 +00:00
Nawaz Dhandala
0779aaf24e feat: Update SVG icon for Traces card to enhance visual clarity and consistency 2025-12-29 21:19:37 +00:00
Nawaz Dhandala
58e2be3619 feat: Update SVG icons for Metrics, Traces, and Exceptions cards for improved clarity and consistency 2025-12-29 21:13:22 +00:00
Nawaz Dhandala
61a6c564ba feat: Update SVG icons for hero cards to enhance visual representation and clarity 2025-12-29 21:11:14 +00:00
Nawaz Dhandala
9cca558d2d feat: Update SVG icons for hero cards to improve visual consistency and clarity 2025-12-29 21:07:47 +00:00
Nawaz Dhandala
40c4cc2133 feat: Remove 'New' badge from AI Agent card for a cleaner presentation 2025-12-29 20:48:02 +00:00
Nawaz Dhandala
f5ad971f4b feat: Revamp AI Agent card with new styling, updated descriptions, and a 'New' badge for enhanced visibility 2025-12-29 20:45:56 +00:00
Nawaz Dhandala
9e442958d3 feat: Add pink hero card for Workflows and enhance AI Agent card with new descriptions 2025-12-29 20:42:39 +00:00
Nawaz Dhandala
115e0d6323 feat: Enhance hero card layout with full-height adjustments and updated descriptions for clarity 2025-12-29 20:34:18 +00:00
Nawaz Dhandala
29e07e3b41 feat(pricing): Implement Pay As You Go pricing tabs with dynamic content and pricing calculators for Monitoring, SMS & Call, Telemetry, and AI Agent services. 2025-12-29 20:33:42 +00:00
Nawaz Dhandala
3ece51504f feat: Update hero card labels and styles for improved clarity and consistency 2025-12-29 20:31:09 +00:00
Nawaz Dhandala
7456184dc5 feat: Update tool count in product description to reflect recent additions 2025-12-29 20:26:22 +00:00
Nawaz Dhandala
4c8b720968 feat: Enhance proudly open source section with mouse-following glow effect 2025-12-29 20:03:27 +00:00
Nawaz Dhandala
11050a7b3a Merge branch 'master' into ui-upgrade 2025-12-29 19:52:23 +00:00
Nawaz Dhandala
e5dbe6ed05 chore: Bump version to 9.3.0 2025-12-29 19:47:10 +00:00
Nawaz Dhandala
288b7bc8c8 style: Add margin-bottom to Banner component for improved spacing 2025-12-29 19:46:03 +00:00
Nawaz Dhandala
305d1133e0 feat: Add KEDA configuration schema with properties for autoscaling 2025-12-29 19:36:02 +00:00
Nawaz Dhandala
a0a31e9e25 feat: Implement KEDA autoscaling for AI Agent with metrics endpoint and configuration 2025-12-29 19:28:00 +00:00
Nawaz Dhandala
892305e13b style: Remove AI_AGENT_ID environment variable from ai-agent deployment 2025-12-29 19:19:00 +00:00
Simon Larsen
6ee6aa59fd Merge pull request #2206 from OneUptime/side-imporve
Side imporve
2025-12-29 19:10:05 +00:00
Nawaz Dhandala
7fae47faee style: Update title of Inoperational Monitors link for clarity 2025-12-29 19:09:05 +00:00
Nawaz Dhandala
c8d3b091b1 style: Update Badge and SideMenuItem components for improved styling and responsiveness 2025-12-29 19:04:30 +00:00
Nawaz Dhandala
623d41f694 style: Update layout and spacing for Page and SideMenu components for better responsiveness 2025-12-29 18:49:18 +00:00
Nawaz Dhandala
47e5e0c706 style: Refactor SideMenu components for improved spacing and layout consistency 2025-12-29 18:43:08 +00:00
Nawaz Dhandala
14ff0b7956 feat: Enhance SideMenu component with collapsible sections and improved styling 2025-12-29 18:22:50 +00:00
Nawaz Dhandala
1f793e8750 feat: Add job to reset stuck AI Agent tasks to Scheduled status 2025-12-29 15:54:18 +00:00
Nawaz Dhandala
051641339a style: Improve code formatting for better readability in PullRequestCreator 2025-12-29 15:19:25 +00:00
Nawaz Dhandala
43947932f2 style: Update type definition for API response to include HTTPErrorResponse in PullRequestCreator 2025-12-29 15:18:21 +00:00
Nawaz Dhandala
d838343eea style: Remove redundant test for null/undefined handling in ExceptionUtil 2025-12-29 14:42:41 +00:00
Simon Larsen
0cf556efde Merge pull request #2205 from OneUptime/ai-agent-tasks
Ai agent tasks
2025-12-29 14:29:22 +00:00
Nawaz Dhandala
c381c51957 style: Refactor type definitions and improve error handling across multiple files 2025-12-29 14:28:52 +00:00
Nawaz Dhandala
8ab088ace0 style: Improve code formatting and add comments for clarity across multiple files 2025-12-29 14:13:05 +00:00
Nawaz Dhandala
f96c0404bc style: Enhance logging in OpenCodeAgent to stream output to console and task logger immediately 2025-12-29 14:04:18 +00:00
Nawaz Dhandala
347e0cdd2f style: Modify log flushing to send each log entry separately for better granularity 2025-12-29 13:59:15 +00:00
Nawaz Dhandala
629890b118 style: Add OpenCode AI to PATH in Dockerfile for easier access 2025-12-29 13:26:57 +00:00
Nawaz Dhandala
0a20591bf9 style: Remove unnecessary border from Header component for cleaner appearance 2025-12-29 13:21:12 +00:00
Nawaz Dhandala
464645dbc3 style: Refactor HeaderIconDropdownButton to simplify icon rendering and improve styling 2025-12-29 13:04:31 +00:00
Nawaz Dhandala
d9ffa6a108 style: Update Add Card button to use div with icon and improved styling 2025-12-29 13:02:07 +00:00
Nawaz Dhandala
38cfed6c24 style: Adjust margin in Logo component for improved layout 2025-12-29 12:59:47 +00:00
Nawaz Dhandala
e97dbc4579 style: Refactor Header components for improved layout and styling consistency 2025-12-29 12:58:26 +00:00
Nawaz Dhandala
f194b17b1b style: Adjust margin in Logo component for improved layout 2025-12-29 12:51:22 +00:00
Nawaz Dhandala
eb45aecda5 style: Enhance Header and Logo components with improved styling and layout adjustments 2025-12-29 12:50:23 +00:00
Nawaz Dhandala
3633e376bc fix: Change log severity from warning to error for telemetry and repository issues in FixExceptionTaskHandler 2025-12-29 12:45:26 +00:00
Nawaz Dhandala
5c7b201305 fix: Correctly render task number in AIAgentTaskViewPage 2025-12-29 12:39:10 +00:00
Nawaz Dhandala
6726dd9a6d fix: Update URL handling in BackendAPI methods to use URL.fromURL for consistency 2025-12-29 12:35:12 +00:00
Nawaz Dhandala
0eece03dcd feat: Implement security checks for Project AI Agents accessing LLM Providers 2025-12-29 12:26:15 +00:00
Nawaz Dhandala
fec7853a2e feat: Add contentClassName for improved text wrapping in AIAgentTaskTable 2025-12-29 12:21:15 +00:00
Nawaz Dhandala
81193dc441 feat: Remove unused fields and components from AIAgentTaskTable for cleaner code 2025-12-29 12:20:08 +00:00
Nawaz Dhandala
7abf6f29e9 feat: Update AIAgentTaskTable to display tasks in a table format and hide view ID button 2025-12-29 12:18:17 +00:00
Nawaz Dhandala
4b18181f2d feat: Add taskNumber column and default values for AIAgentTask and OnCallDutyPolicyScheduleLayer 2025-12-29 12:03:18 +00:00
Nawaz Dhandala
b08174be97 feat: Add task number handling and display for AI Agent Tasks 2025-12-29 11:59:41 +00:00
Nawaz Dhandala
660c800166 feat: Update error handling in FixExceptionTaskHandler to mark failures as actual errors 2025-12-29 11:48:57 +00:00
Nawaz Dhandala
39de2ebb87 feat: Replace UUID with ObjectID for unique workspace identification in WorkspaceManager 2025-12-29 11:44:57 +00:00
Nawaz Dhandala
afe072f5e7 feat: Refactor task ID handling to use ObjectID for improved type safety in task processing 2025-12-29 11:38:47 +00:00
Nawaz Dhandala
16fb097c55 feat: Enhance task handling and API response types for AI Agent functionality 2025-12-29 11:33:36 +00:00
Nawaz Dhandala
122a4b7b0a feat: Implement RepositoryManager, TaskLogger, and WorkspaceManager for AI Agent functionality
- 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.
2025-12-29 11:20:34 +00:00
Simon Larsen
ff38942416 Merge pull request #2204 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2025-12-29 09:21:35 +00:00
simlarsen
e72a0d2b16 chore: npm audit fix 2025-12-29 02:03:34 +00:00
Simon Larsen
1c9425169a Merge pull request #2202 from OneUptime/snyk-upgrade-26bc23a2f8e9e50d9452afdb2d24fd6d
[Snyk] Upgrade typeorm from 0.3.27 to 0.3.28
2025-12-28 22:52:39 +00:00
Simon Larsen
59b49519c9 Merge pull request #2203 from OneUptime/conn-github
Conn GitHub
2025-12-28 22:52:20 +00:00
Nawaz Dhandala
9ff1a20858 feat: add GitHub App Installation ID to Project migration and update related components 2025-12-28 22:50:53 +00:00
Nawaz Dhandala
d8806159e4 feat: enhance GitHub repository selector modal with improved UI and display options 2025-12-28 22:48:34 +00:00
Nawaz Dhandala
3f1bb2cb0b feat: add repository description handling in GitHub API and selector modal 2025-12-28 22:13:17 +00:00
Nawaz Dhandala
513b1d7e55 feat: simplify RepositoryConnectionStatus component by removing description prop and related markup 2025-12-28 22:08:57 +00:00
Nawaz Dhandala
e49c005431 feat: add RepositoryConnectionStatus component for improved connection status display 2025-12-28 22:06:27 +00:00
Nawaz Dhandala
7892dbcac3 feat: enhance display of GitHub connection status with improved UI elements 2025-12-28 22:01:22 +00:00
Nawaz Dhandala
25d3d755dd feat: add GitHub App installation ID to Project model and update related API logic 2025-12-28 21:56:58 +00:00
Nawaz Dhandala
92fed4016f feat: enhance CodeRepositoryPage with improved GitHub and Git repository connection options 2025-12-28 21:48:48 +00:00
Nawaz Dhandala
d8d20aef8a feat: enhance Git repository connection modal with multi-step form structure 2025-12-28 21:46:06 +00:00
Nawaz Dhandala
41a1f80140 feat: implement Git repository connection modal and update CodeRepositoryPage for improved integration 2025-12-28 21:43:12 +00:00
Nawaz Dhandala
cdb4d04cc3 fix: correct redirect URL format in GitHub App installation callback 2025-12-28 21:19:57 +00:00
Nawaz Dhandala
0f8e949190 feat: update GitHub integration documentation with setup URL and environment variable details 2025-12-28 21:15:11 +00:00
Nawaz Dhandala
0a98f33d72 test: update Card and HiddenText component tests for improved assertions and class names 2025-12-28 20:56:21 +00:00
Nawaz Dhandala
64947413b0 feat: update GitHub App configuration to use GitHubAppName instead of GitHubAppClientId 2025-12-28 20:49:41 +00:00
Nawaz Dhandala
8635726344 feat: add GitHub repository connection modal and integrate GitHub app client ID 2025-12-28 20:40:55 +00:00
Nawaz Dhandala
3fa6f9e7b1 feat: install OpenCode AI coding assistant in Dockerfile 2025-12-28 20:22:14 +00:00
Nawaz Dhandala
6689aaa8b8 feat: add Dockerfile for OneUptime-AIAgent with environment setup and dependency installation 2025-12-28 20:19:38 +00:00
Nawaz Dhandala
a47a3c79e0 docs: add instructions to fix failing tests in Common 2025-12-28 20:17:56 +00:00
Nawaz Dhandala
8bd5916d14 fix: remove unused dependencies from package.json 2025-12-28 19:54:41 +00:00
Nawaz Dhandala
1f28f0191d fix: update package-lock.json to include peer dependency and improve query prop handling in AIAgentTaskTable 2025-12-28 19:36:12 +00:00
Nawaz Dhandala
dcb9da7d91 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-28 13:33:56 +00:00
Nawaz Dhandala
3311e9d354 refactor: update metrics endpoint to return pending monitor count for KEDA autoscaling 2025-12-28 13:33:52 +00:00
Nawaz Dhandala
755b76cbce style: Improve code formatting and readability in various files 2025-12-28 12:40:00 +00:00
Nawaz Dhandala
45a1748d50 feat: Implement logging for AI Agent task execution lifecycle 2025-12-28 12:33:46 +00:00
Nawaz Dhandala
c256b03be6 feat: Add conditional display for status message in AIAgentTaskViewPage 2025-12-28 12:30:22 +00:00
Nawaz Dhandala
c2cfe123d6 feat: Update AIAgentTaskLog schema to replace 'logs' column with 'severity' and 'message' columns 2025-12-28 12:04:29 +00:00
Nawaz Dhandala
e5c73daee6 feat: Refactor AIAgentTaskLog model to store severity and message as direct columns, removing JSON array structure 2025-12-28 11:58:18 +00:00
Nawaz Dhandala
9cb5b27e9b feat: Enhance AI Agent display in AIAgentTaskTable and AIAgentTaskViewPage with icon support and improved 'Not Assigned' message 2025-12-28 11:51:03 +00:00
Nawaz Dhandala
33a819853b feat: Add refresh button to AIAgentTaskTable for improved user experience 2025-12-28 11:48:03 +00:00
Nawaz Dhandala
3da9bbdf78 feat: Refactor task type display by creating AIAgentTaskTypeElement component and updating AIAgentTaskTable and AIAgentTaskViewPage 2025-12-28 11:44:18 +00:00
Nawaz Dhandala
d7bb54332d feat: Add task type display functionality with color coding in AIAgentTaskTable and AIAgentTaskViewPage 2025-12-28 11:41:52 +00:00
Nawaz Dhandala
bfb11c8366 feat: Update action name to 'Mark as Resolved' and change button style to SUCCESS_OUTLINE 2025-12-28 11:34:15 +00:00
Nawaz Dhandala
f11c8fd60b feat: Implement normalization for dynamic values in exception messages and add comprehensive tests 2025-12-28 11:30:39 +00:00
Nawaz Dhandala
cd7dfc4efb feat: Clean up AIAgentsPage by removing unused state and action buttons 2025-12-28 11:16:32 +00:00
Nawaz Dhandala
227a5ca52b feat: Add name and description fields to AIAgentTask and update OnCallDutyPolicyScheduleLayer defaults 2025-12-28 11:12:49 +00:00
Nawaz Dhandala
9bbfe35880 feat: Enhance AI Agent task creation with automatic agent assignment and validation 2025-12-28 11:08:47 +00:00
Nawaz Dhandala
94603b5615 feat: Refactor AI Agent Task creation logic and enhance telemetry exception handling 2025-12-28 11:02:43 +00:00
Nawaz Dhandala
f07b002744 feat: Implement task creation and linking for telemetry exceptions in AIAgentTaskService 2025-12-28 10:57:36 +00:00
Nawaz Dhandala
1680c955f9 feat: Refactor AI Agent Task creation logic for Telemetry Exception handling 2025-12-28 10:53:46 +00:00
Nawaz Dhandala
3394903323 feat: Add migration to include isDefault field in AIAgent table and update OnCallDutyPolicyScheduleLayer defaults 2025-12-28 10:49:56 +00:00
Nawaz Dhandala
877a97017d feat: Add isDefault field to AIAgent model and update service logic for default agent handling 2025-12-28 10:46:44 +00:00
snyk-bot
c389260b60 fix: upgrade typeorm from 0.3.27 to 0.3.28
Snyk has created this PR to upgrade typeorm from 0.3.27 to 0.3.28.

See this package in npm:
typeorm

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/c3622982-05c8-495c-809c-20f301c75f92?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-12-27 11:10:33 +00:00
Nawaz Dhandala
c8df86011c feat: Update Footer component styles and enhance link titles with icons for better UX 2025-12-26 22:17:21 +00:00
Nawaz Dhandala
77a922b27e feat: Disable editing on AIAgentTaskViewPage for improved user experience 2025-12-26 21:44:51 +00:00
Nawaz Dhandala
14909a8dce feat: Add name and description fields to AIAgentTaskViewPage for improved task details 2025-12-26 21:40:58 +00:00
Nawaz Dhandala
84c5cdab9d feat: Enhance JSON handling in Detail component to stringify objects for better display 2025-12-26 21:38:57 +00:00
Nawaz Dhandala
178e4a5e70 feat: Refactor AI Agent Task navigation to use RouteUtil for parameter population 2025-12-26 21:33:51 +00:00
Nawaz Dhandala
9183b6eb1f feat: Add exception type and message to AI Agent task name and description for better context 2025-12-26 21:25:30 +00:00
Nawaz Dhandala
fa953a13cd feat: Update button titles from "Generate from AI" to "Generate with AI" for consistency across components 2025-12-26 21:16:45 +00:00
Nawaz Dhandala
bf426d026c feat: Update alert, incident, and scheduled maintenance displays with improved styling and icons 2025-12-26 20:55:31 +00:00
Nawaz Dhandala
69e073ac65 feat: Enhance alert, incident, and scheduled maintenance number displays with styled components 2025-12-26 20:47:43 +00:00
Nawaz Dhandala
fdc4f08222 feat: Enhance HiddenText component with copy functionality and tooltips 2025-12-26 20:41:53 +00:00
Nawaz Dhandala
57669ba27d feat: Add ObjectIDView component for enhanced ObjectID display and copy functionality 2025-12-26 20:37:14 +00:00
Nawaz Dhandala
2161330598 feat: Update fieldType to ObjectID for various components to enhance data handling 2025-12-26 20:34:33 +00:00
Nawaz Dhandala
9555c3827f feat: Move title span to display before the indicator in FieldLabel component 2025-12-26 20:22:39 +00:00
Nawaz Dhandala
bf44af92b7 feat: Add overflow-hidden class to Card component for improved layout handling 2025-12-26 20:19:29 +00:00
Nawaz Dhandala
02549cb33d feat: Remove hover shadow effect from Card component for a cleaner design 2025-12-26 20:04:11 +00:00
Nawaz Dhandala
97c437b5ce feat: Add rounded bottom corners to the table footer for improved UI aesthetics 2025-12-26 20:02:22 +00:00
Nawaz Dhandala
17ea3c6ae5 feat: Refactor AIAgentTasks page to consolidate task views under a single tabbed interface and remove individual status pages 2025-12-26 19:58:36 +00:00
Nawaz Dhandala
d5abbf420f feat: Simplify noItemsMessage in AIAgentTaskTable and related pages by removing EmptyState component 2025-12-26 19:52:45 +00:00
Nawaz Dhandala
2b2c821af5 feat: Add noItemsMessage prop to AIAgentTaskTable and implement EmptyState for various task pages 2025-12-26 19:48:11 +00:00
Nawaz Dhandala
07ed74d04e feat: Add showAs prop to AIAgentTaskTable for list view display 2025-12-26 19:43:23 +00:00
Nawaz Dhandala
915712bf27 feat: Add migration for name and description fields in AIAgentTask table 2025-12-26 19:40:30 +00:00
Nawaz Dhandala
a02d181b86 feat: Add name and description fields to AIAgentTaskTable for enhanced task details 2025-12-26 19:39:25 +00:00
Nawaz Dhandala
922c4ec3d3 refactor: Move AIAgentTaskTable component to a new directory for better organization 2025-12-26 19:37:02 +00:00
Nawaz Dhandala
c912326ff2 feat: Refactor AIAgentTasks pages to use AIAgentTaskTable component for improved structure and readability 2025-12-26 19:35:47 +00:00
Nawaz Dhandala
53e1573c73 refactor: Set isDeleteable to false for AI Agent Tasks, Completed Tasks, and Scheduled Tasks pages 2025-12-26 19:32:44 +00:00
Nawaz Dhandala
0c56943818 refactor: Update type declaration for getSeverityPill function in AIAgentTaskLogsPage 2025-12-26 19:07:12 +00:00
Nawaz Dhandala
2a620f4cf3 feat: Add migration for AIAgentTaskLog and AIAgentTaskPullRequest tables with constraints and indexes 2025-12-26 18:45:27 +00:00
Nawaz Dhandala
e7fbda886b refactor: Clean up code formatting and improve readability in various components 2025-12-26 18:44:41 +00:00
Nawaz Dhandala
9116cb0397 feat: Update icons and user preferences keys for AI Agent Task Pull Requests and Logs 2025-12-26 18:42:12 +00:00
Nawaz Dhandala
0d3112a1f4 feat: Add AI Agent Task Pull Request functionality with model, API, service, and UI integration 2025-12-26 18:37:13 +00:00
Nawaz Dhandala
aa61be7e78 feat: Add AI Agent Task Logs page and integrate with SideMenu and routing 2025-12-26 18:26:58 +00:00
Nawaz Dhandala
fc4ed33bd8 feat: Add AIAgentTaskLogAPI and integrate with BaseAPIFeatureSet 2025-12-26 18:23:16 +00:00
Nawaz Dhandala
b88406524d feat: Add AI Agent relationship and access control to AIAgentTaskLog model 2025-12-26 18:19:10 +00:00
Nawaz Dhandala
a32a66ce12 feat: Add AIAgentTaskLog model, service, and log entry types for AI agent task logging 2025-12-26 18:14:41 +00:00
Nawaz Dhandala
6ef91bd9df fix: Update navigation to use RouteParams for modelId in ExceptionExplorer 2025-12-26 18:11:40 +00:00
Nawaz Dhandala
1b06ec7138 fix: Add MigrationName1766754182870 to schema migrations 2025-12-26 13:03:42 +00:00
Nawaz Dhandala
a85bf13361 feat: Add AIAgentTaskTelemetryException model and migration for telemetry exceptions 2025-12-26 13:03:21 +00:00
Nawaz Dhandala
288d91c2c0 fix: Implement AI Agent Task retrieval and status polling in ExceptionExplorer component 2025-12-26 12:59:40 +00:00
Nawaz Dhandala
b3ffcc72ca fix: Add manyToOneRelationColumn for projectId in AIAgentTask model 2025-12-26 12:47:33 +00:00
Nawaz Dhandala
ab6148b8b6 fix: Add InlineCode field type and update ExceptionDetail to use it for message and fingerprint 2025-12-26 12:42:32 +00:00
Nawaz Dhandala
7aa1ce0929 fix: Add common headers to API request for creating AI Agent tasks 2025-12-26 12:33:25 +00:00
Nawaz Dhandala
cdf435b27a fix: Replace CodeEditor with CodeBlock component for improved code display and copying functionality 2025-12-26 12:28:00 +00:00
Nawaz Dhandala
6ff22c2660 fix: Update description for AI Agent task creation to clarify its functionality 2025-12-26 12:15:29 +00:00
Nawaz Dhandala
bb3d1007a6 fix: Add "Fix with AI Agent" button to create AI Agent tasks for unresolved exceptions 2025-12-26 12:13:42 +00:00
Nawaz Dhandala
05607d0487 fix: Refactor task processing logic by renaming and updating the task processing loop implementation 2025-12-26 12:03:39 +00:00
Nawaz Dhandala
29e7078670 fix: Enhance styling and layout for Detail, FieldLabel, and PlaceholderText components 2025-12-26 12:00:57 +00:00
Nawaz Dhandala
864b8c7bac fix: Adjust margin and padding for children container in Card component 2025-12-26 11:51:33 +00:00
Nawaz Dhandala
a77a752062 fix: Simplify task status update logic in AIAgentTaskAPI by consolidating update data handling 2025-12-25 22:16:56 +00:00
Nawaz Dhandala
57a8084fd6 fix: Update metadata type and improve update data structure in AIAgentTaskAPI; enhance styling in Card and InfoCard components 2025-12-25 22:12:01 +00:00
Nawaz Dhandala
ec7eb958e8 fix: Remove unused imports for AIAgentTask and AIAgentTaskService in Index.ts 2025-12-25 21:43:35 +00:00
Nawaz Dhandala
7da6584c48 feat: Add ProcessScheduledTasks job and AIAgentTaskAPI for task management 2025-12-25 21:09:16 +00:00
Nawaz Dhandala
8f1cde9ec0 fix: Remove unnecessary blank lines and ensure proper object spread in TelemetryExceptionAPI 2025-12-25 20:46:15 +00:00
Nawaz Dhandala
0492a1c679 fix: Update API endpoint for creating AI Agent tasks in TelemetryException 2025-12-25 20:42:10 +00:00
Nawaz Dhandala
fa7097539f feat: Implement TelemetryExceptionAPI and integrate AI Agent Task creation in ExceptionExplorer 2025-12-25 20:41:06 +00:00
Nawaz Dhandala
8ee329c143 feat: Add AIAgentTaskTelemetryException model and service, and integrate telemetry exception linking in ExceptionExplorer 2025-12-25 20:25:34 +00:00
Nawaz Dhandala
f2d83fc08e feat: Add CreateProjectAIAgentTask permission and integrate AI Agent task creation in ExceptionExplorer 2025-12-25 20:20:10 +00:00
Nawaz Dhandala
c711316097 Implement feature X to enhance user experience and optimize performance 2025-12-25 19:38:06 +00:00
Simon Larsen
1cd57bc35d Merge pull request #2201 from OneUptime/ai-agent-task
Ai agent task
2025-12-25 19:18:37 +00:00
Nawaz Dhandala
efc0632b6c feat: Update permissions for AIAgentTask to include task-specific actions 2025-12-25 19:10:34 +00:00
Nawaz Dhandala
b674993b11 feat: Simplify AIAgentTask creation permissions by removing unnecessary roles 2025-12-25 19:06:40 +00:00
Nawaz Dhandala
7a2a79ceba feat: Enhance AIAgentTask migration, metadata, and status handling 2025-12-25 18:59:46 +00:00
Nawaz Dhandala
90ddd29e0e feat(migrations): Add AIAgentTask migration with table and constraints 2025-12-25 18:44:36 +00:00
Nawaz Dhandala
1e99da5c4c feat: Add AI Agent Task Management
- 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.
2025-12-25 18:41:26 +00:00
Nawaz Dhandala
75304a4c67 feat(ci): Add ai-agent Docker image deployment to release and test workflows 2025-12-25 17:50:48 +00:00
Nawaz Dhandala
ea19a70e14 feat(ci): Add CI workflows for AIAgent build, compile, and test processes 2025-12-25 17:44:21 +00:00
Nawaz Dhandala
fe3582b972 feat(robots): Update robots.txt to disallow access to /api/* 2025-12-25 17:27:24 +00:00
Nawaz Dhandala
dbb13ce231 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-25 09:20:41 +00:00
Nawaz Dhandala
5726941e19 feat(monitor): Update evaluation summary to include probe agreement event type 2025-12-25 09:18:02 +00:00
Simon Larsen
a9c5dceeaa Merge pull request #2200 from OneUptime/probe-agreement
Probe agreement
2025-12-24 22:07:08 +00:00
Nawaz Dhandala
c037bc3825 feat(aiAgent): Add schema definition for AI agent configuration options 2025-12-24 22:06:56 +00:00
Nawaz Dhandala
e1ba3127ee fix(env): Update global probe keys to include default values 2025-12-24 20:11:18 +00:00
Nawaz Dhandala
9fcf84db9c fix(migration): Correct formatting and ensure proper migration structure for minimum probe agreement 2025-12-24 20:07:58 +00:00
Nawaz Dhandala
59d4c60d5c feat(migration): Add migration for minimum probe agreement column in Monitor table 2025-12-24 20:06:08 +00:00
Nawaz Dhandala
e445ada7d0 feat(monitor): Add minimum probe agreement settings and logic for probe-based monitors 2025-12-24 20:05:08 +00:00
Nawaz Dhandala
287c61b5bb Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-24 19:13:55 +00:00
Nawaz Dhandala
3f695053a6 chore(version): Bump version to 9.2.28 2025-12-24 19:13:52 +00:00
Simon Larsen
26964ad073 Merge pull request #2199 from OneUptime/ai-agents
Ai agents
2025-12-24 19:13:19 +00:00
Nawaz Dhandala
5687618c53 fix(icon): Update WhatsApp icon SVG for improved design and clarity 2025-12-24 19:12:42 +00:00
Nawaz Dhandala
b5c6c93d7f fix(icon): Refactor WhatsApp icon SVG for improved rendering and clarity 2025-12-24 19:10:19 +00:00
Nawaz Dhandala
ba08694e43 feat(migration): Update migration scripts for AIAgent and OnCallDutyPolicyScheduleLayer 2025-12-24 19:05:44 +00:00
Nawaz Dhandala
60df00686c fix(ai-agent): Revise AI agent documentation to clarify capabilities and privacy features 2025-12-24 19:03:17 +00:00
Nawaz Dhandala
9bfa13c9f5 fix(ai-agent): Update documentation link for AI agent setup guide 2025-12-24 18:58:43 +00:00
Nawaz Dhandala
f7bb851c80 fix(ai-agent): Update AI agent icon from Brain to Automation 2025-12-24 18:53:11 +00:00
Nawaz Dhandala
79c3cf981f fix(ai-agent): Improve error handling during AI Agent registration 2025-12-24 18:48:41 +00:00
Nawaz Dhandala
ea85d08c7a feat(migration): Add migration for updating AIAgent description field and OnCallDutyPolicyScheduleLayer defaults 2025-12-24 18:29:01 +00:00
Nawaz Dhandala
84e51a836d fix(ai-agent): Change description field type from Name to Description in AIAgent model 2025-12-24 18:27:24 +00:00
Nawaz Dhandala
a3f8403a17 fix(ai-agent): Update default description for global AI agents during registration 2025-12-24 18:26:08 +00:00
Nawaz Dhandala
8aaf278982 feat(ai-agent): Add default description for global AI agents during registration 2025-12-24 18:24:36 +00:00
Nawaz Dhandala
ca93dc12d6 feat(side-menu): Add AI Agents link to the dashboard side menu 2025-12-24 18:21:49 +00:00
Nawaz Dhandala
75d0803650 fix(ai-agent): Correct query parameter from secretKey to key in AIAgentService lookup 2025-12-24 18:17:33 +00:00
Nawaz Dhandala
f519520966 feat(ai-agent): Enhance AI Agent registration with name and description fields 2025-12-24 17:29:54 +00:00
Nawaz Dhandala
958cb3c9fd feat(ai-agent): Update AI Agent configuration to require a random AI_AGENT_KEY and streamline environment variable usage in docker-compose 2025-12-24 17:20:32 +00:00
Nawaz Dhandala
f6ebc3db16 feat(migration): Add AIAgent and related tables with foreign key constraints 2025-12-24 15:42:36 +00:00
Nawaz Dhandala
583d86bbc9 refactor: Standardize formatting for alive URL construction in InitJob and Register classes 2025-12-24 15:39:26 +00:00
Nawaz Dhandala
19f8dc8b19 feat(ai-agent): Update AI Agent API routes and remove deprecated ingest feature 2025-12-24 15:29:24 +00:00
Nawaz Dhandala
1a2acbf12d feat(ai-agent): Implement AI Agent service with configuration, registration, and health check functionality 2025-12-24 15:24:47 +00:00
Nawaz Dhandala
51e9e2d95b refactor: Improve code formatting for better readability in Detail, AIAgentView, and AIAgents components 2025-12-24 14:26:27 +00:00
Nawaz Dhandala
818a638580 feat(ai-agent): Add cron jobs for sending owner notifications and updating connection status 2025-12-24 14:22:04 +00:00
Nawaz Dhandala
ca2f0cd644 feat(nav): Add AI Agents link to navigation and create AI Agents documentation 2025-12-24 14:17:22 +00:00
Nawaz Dhandala
4a8b265b41 refactor: Remove optional proxy configuration examples from Custom AI Agent documentation 2025-12-24 14:14:34 +00:00
Nawaz Dhandala
66124f9de6 feat: Add AI Agent management features
- 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.
2025-12-24 14:13:16 +00:00
Nawaz Dhandala
73bd9838c7 feat: Implement AI Agent service with last alive tracking and owner notifications 2025-12-24 13:59:16 +00:00
Nawaz Dhandala
1da6ec7a16 feat: Add AI Agent ownership management features
- 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.
2025-12-24 13:56:33 +00:00
Simon Larsen
558eb54783 Merge pull request #2198 from OneUptime/model-ui-upgrade
Model UI upgrade
2025-12-24 11:12:36 +00:00
Nawaz Dhandala
cb46155224 fix(detail): Remove hover effect from card and default styles in Detail component 2025-12-24 11:08:32 +00:00
Nawaz Dhandala
fc78723d7b feat(detail): Enhance Detail component with style options and improve UI elements 2025-12-24 11:07:11 +00:00
Simon Larsen
40562ea0d1 Merge pull request #2197 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2025-12-24 09:10:45 +00:00
simlarsen
72369485a1 chore: npm audit fix 2025-12-24 01:52:31 +00:00
Nawaz Dhandala
d09228a71d fix(tests): Update navigation link types to use Locator for better type safety
chore: Bump version to 9.2.27
2025-12-23 21:58:44 +00:00
Nawaz Dhandala
e5c48061e4 refactor(tests): Simplify navigation link interactions in pricing and enterprise tests 2025-12-23 21:52:43 +00:00
Nawaz Dhandala
e1ffba9fbd Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-23 21:47:03 +00:00
Nawaz Dhandala
cd44bf0360 fix(telegram): Update description for Chat ID to include bot administrator requirement 2025-12-23 21:47:00 +00:00
Nawaz Dhandala
04a553eec6 fix(telegram): Enhance error handling by providing additional context for Telegram API errors 2025-12-23 21:39:00 +00:00
Nawaz Dhandala
d2c33f4996 fix(telegram): Simplify error handling for missing Telegram message 2025-12-23 21:27:09 +00:00
Nawaz Dhandala
b2321dd966 feat(telegram): Add Send Message to Telegram component with necessary configurations 2025-12-23 21:24:48 +00:00
Simon Larsen
47d9c118c0 Merge pull request #2196 from OneUptime/snyk-upgrade-65b43cef168cd3ea4773f38623f87961
[Snyk] Upgrade xmlbuilder2 from 4.0.0 to 4.0.3
2025-12-23 21:15:04 +00:00
Simon Larsen
649f317c3d Merge pull request #2194 from OneUptime/snyk-upgrade-c57662cf87ba0d6564e00e5c30e3deea
[Snyk] Upgrade playwright from 1.56.1 to 1.57.0
2025-12-23 21:14:58 +00:00
Nawaz Dhandala
1afcaab6fd Refactor testimonials and review sections for improved design and accessibility 2025-12-23 12:11:40 +00:00
Nawaz Dhandala
22c832f14a Update product tabs with new icon designs and improved accessibility 2025-12-23 12:00:43 +00:00
snyk-bot
272bb1b3ab fix: upgrade xmlbuilder2 from 4.0.0 to 4.0.3
Snyk has created this PR to upgrade xmlbuilder2 from 4.0.0 to 4.0.3.

See this package in npm:
xmlbuilder2

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/102b46c1-e36e-406c-acd1-31c8200a6c5f?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-12-23 11:52:59 +00:00
Nawaz Dhandala
cde10e34da Refactor UI components in on-call and status-page views to use lighter backgrounds and updated color schemes
- 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.
2025-12-22 22:43:49 +00:00
Nawaz Dhandala
1dd79e052f Update hero card styles for improved clarity and consistency 2025-12-22 21:48:24 +00:00
Nawaz Dhandala
dce71c4eae Update enterprise card styles for improved clarity and consistency 2025-12-22 21:24:37 +00:00
Nawaz Dhandala
75fa822489 Refactor Copilot section for improved design and clarity 2025-12-22 20:50:10 +00:00
Nawaz Dhandala
0b0de6e32c Update Grafana SVG path for improved clarity and accuracy 2025-12-22 20:43:31 +00:00
Nawaz Dhandala
797373d0dc Update Prometheus icon to OpenTelemetry for improved clarity and accuracy 2025-12-22 20:25:35 +00:00
Nawaz Dhandala
4a41808afb Update Kubernetes and Prometheus SVG paths for improved clarity and accuracy 2025-12-22 20:23:49 +00:00
Nawaz Dhandala
0f36040cec Update Microsoft Azure SVG path for improved clarity and accuracy 2025-12-22 20:20:35 +00:00
Nawaz Dhandala
e3ea99d182 Update Microsoft Teams SVG path for improved clarity and accuracy 2025-12-22 20:14:57 +00:00
Nawaz Dhandala
4f06b241e4 Update AWS icon SVG path for improved rendering and clarity 2025-12-22 20:12:54 +00:00
Nawaz Dhandala
d38bd9a1bd Remove last updated date from the legal document footer for improved clarity 2025-12-22 20:01:19 +00:00
Nawaz Dhandala
9c1fb7820c Update company address in contact, DMCA, and SLA pages for accuracy 2025-12-22 19:59:24 +00:00
Nawaz Dhandala
9e99ee14a4 Fix sidebar overflow issues and enhance table of contents link transitions for improved usability 2025-12-22 19:59:01 +00:00
Nawaz Dhandala
0bbd99aa32 Update hero section background gradient colors for improved visual consistency 2025-12-22 19:56:34 +00:00
Nawaz Dhandala
317f472013 Refactor styles in support, testimonials, and workflows pages to use gray color scheme instead of slate. Update button hover effects and text colors for better consistency and readability. 2025-12-22 19:53:04 +00:00
Nawaz Dhandala
1058f45160 Refactor GitHub stats functions for improved readability and consistency 2025-12-22 19:50:36 +00:00
Nawaz Dhandala
a2ce44127c Add reviews section to enterprise overview page and update route to include review data 2025-12-22 19:49:52 +00:00
Nawaz Dhandala
1457d248e0 Implement feature X to enhance user experience and optimize performance 2025-12-22 19:47:11 +00:00
Nawaz Dhandala
78b4af6698 Refactor code structure for improved readability and maintainability 2025-12-22 18:34:47 +00:00
Nawaz Dhandala
fdc30dc128 Implement feature X to enhance user experience and optimize performance 2025-12-22 18:25:00 +00:00
Nawaz Dhandala
712e26f9a5 Enhance workflows.ejs with new hero section, improved layout, and feature highlights; update styles for better visual appeal and user engagement. 2025-12-22 18:16:00 +00:00
Nawaz Dhandala
c91ade202a Remove testimonials section from status page 2025-12-22 17:38:19 +00:00
Nawaz Dhandala
64c2fe6fd0 Revamp More Features section with enhanced layout, new feature highlights, and improved messaging 2025-12-22 16:28:04 +00:00
Nawaz Dhandala
bf9fbe88c1 Revamp Why OneUptime section with enhanced layout, improved messaging, and new feature highlights 2025-12-22 16:19:12 +00:00
Nawaz Dhandala
dd6554435d Revamp hero section with enhanced layout, background elements, and updated messaging 2025-12-22 16:15:25 +00:00
Nawaz Dhandala
c65d199e5e Refactor contributor display logic to skip bots and improve displayed count 2025-12-22 15:52:47 +00:00
Nawaz Dhandala
9100b4c485 Add conditional rendering for contributors section and fallback message 2025-12-22 15:49:23 +00:00
Nawaz Dhandala
90f7f735e7 Enhance contributor display with improved layout and icon integration 2025-12-22 15:48:07 +00:00
Nawaz Dhandala
a386c75dbd Revamp Contributors Section with Enhanced Layout and Updated Messaging 2025-12-22 15:46:09 +00:00
Nawaz Dhandala
a54257b5db Implement feature X to enhance user experience and fix bug Y in module Z 2025-12-22 15:41:34 +00:00
Nawaz Dhandala
9b0dfcffac Remove OpsGenie comparisons from footer and pricing pages; add AI Agent tab to product tabs with relevant content. 2025-12-22 15:21:20 +00:00
Nawaz Dhandala
c3ab746d24 Add comparison links and detailed sections for additional observability tools in footer and pricing compare pages 2025-12-22 15:00:42 +00:00
Nawaz Dhandala
78b51ffb43 Refactor code structure for improved readability and maintainability 2025-12-22 13:22:40 +00:00
Nawaz Dhandala
485570cbff Enhance Legal Center Page with Sticky Sidebar, Improved Styles, and Navigation
- 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.
2025-12-22 11:50:50 +00:00
Nawaz Dhandala
235fcd4af2 Refactor button styles across multiple views to use a consistent gray color scheme instead of slate. Updated buttons in cta.ejs, demo.ejs, enterprise-overview.ejs, footer.ejs, incident-management.ejs, logs-management.ejs, monitoring.ejs, nav.ejs, not-found.ejs, on-call.ejs, oss-friends.ejs, pricing-compare.ejs, server-error.ejs, status-page.ejs, support.ejs, and workflows.ejs for improved UI consistency. 2025-12-22 11:37:35 +00:00
Nawaz Dhandala
dfbc86deb0 Refactor styles in support, testimonials, and workflows pages to use slate color scheme instead of indigo for a more modern look 2025-12-22 11:02:57 +00:00
snyk-bot
d218f5e9cf fix: upgrade playwright from 1.56.1 to 1.57.0
Snyk has created this PR to upgrade playwright from 1.56.1 to 1.57.0.

See this package in npm:
playwright

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/49c81d9c-12c2-4e8e-b9e8-72f98b1b595c?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-12-22 10:21:25 +00:00
Nawaz Dhandala
3a4ca497ac feat: Enhance hero card styles with dynamic glow effects and improved hover interactions 2025-12-21 23:27:34 +00:00
Nawaz Dhandala
2c0cd1b13d feat: Refine ambient glow effects for improved visual consistency and responsiveness 2025-12-21 23:25:15 +00:00
Nawaz Dhandala
17edd054a9 feat: Update logo styles for improved visibility and background contrast 2025-12-21 23:08:15 +00:00
Nawaz Dhandala
72a1003c06 feat: Implement dynamic ambient glow effect for enterprise cards 2025-12-21 22:54:14 +00:00
Nawaz Dhandala
0e2e1360a6 feat: Add ambient glow effect to enhance visual appeal 2025-12-21 22:52:03 +00:00
Nawaz Dhandala
9fcd93dc52 feat: Enhance enterprise card styles with improved hover effects and glow transitions 2025-12-21 22:49:28 +00:00
Nawaz Dhandala
de8a917a92 feat: Enhance enterprise card styles for improved hover effects and transitions 2025-12-21 22:47:22 +00:00
Nawaz Dhandala
166ac24565 feat: Update compliance badges to be clickable links for better navigation 2025-12-21 22:42:32 +00:00
Nawaz Dhandala
7275212bb9 feat: Update API access description to include Terraform support 2025-12-21 22:41:52 +00:00
Nawaz Dhandala
fd002ea2f2 feat: Update enterprise overview link for improved navigation 2025-12-21 22:38:23 +00:00
Nawaz Dhandala
afdff472e6 feat: Update icon backgrounds and colors for consistency across quick links 2025-12-21 22:36:13 +00:00
Nawaz Dhandala
8bd9342183 feat: Update action button on server error page to navigate back instead of reload 2025-12-21 21:03:23 +00:00
Nawaz Dhandala
86511b15f8 feat: Improve styling and layout for error pages for better user experience 2025-12-21 21:01:39 +00:00
Nawaz Dhandala
a187750581 Refactor server error page for improved user experience and design consistency
- 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.
2025-12-21 20:49:27 +00:00
Nawaz Dhandala
e3f14c5424 feat: Revise enterprise section header and description for clarity and impact 2025-12-21 20:31:10 +00:00
Nawaz Dhandala
2739dcc30c feat: Update icon SVG paths for improved clarity and consistency 2025-12-21 20:08:47 +00:00
Nawaz Dhandala
d963e81365 feat: Update icon SVG paths for improved clarity and consistency 2025-12-21 19:54:56 +00:00
Nawaz Dhandala
0599df28d7 feat: Enhance icon hover effects for improved visual feedback 2025-12-21 19:48:45 +00:00
Nawaz Dhandala
d2d1d0dad3 feat: Update enterprise section styling and enhance link accessibility 2025-12-21 19:43:31 +00:00
Nawaz Dhandala
00fcc51dc9 Implement feature X to enhance user experience and optimize performance 2025-12-21 19:41:25 +00:00
Nawaz Dhandala
a3de5ceb7b feat: Update enterprise section with enhanced messaging for clarity and inclusivity 2025-12-21 18:52:46 +00:00
Nawaz Dhandala
ef817d0095 Implement feature X to enhance user experience and optimize performance 2025-12-21 18:51:05 +00:00
Nawaz Dhandala
15d8816eed feat: Update product feature links to use anchor tags for improved accessibility and styling 2025-12-21 18:42:18 +00:00
Nawaz Dhandala
b98e90f7ec Implement feature X to enhance user experience and optimize performance 2025-12-21 14:28:49 +00:00
Nawaz Dhandala
84e3fa02a4 Implement feature X to enhance user experience and optimize performance 2025-12-21 14:22:20 +00:00
Nawaz Dhandala
801d75d5b5 feat: Revamp Support section with updated styling and enhanced content clarity 2025-12-21 13:36:39 +00:00
Nawaz Dhandala
c221890339 feat: Update Security & Integrations cards with new styling and improved readability 2025-12-21 13:34:23 +00:00
Nawaz Dhandala
7083d17dbb feat: Revamp enterprise-ready section with enhanced styling and improved content clarity 2025-12-21 13:33:11 +00:00
Nawaz Dhandala
955cd25fe9 feat: Update color scheme for enterprise-ready section to enhance visual appeal 2025-12-21 13:29:11 +00:00
Nawaz Dhandala
434ae5954f feat: Revamp enterprise-ready section with updated styling and improved readability 2025-12-21 13:20:34 +00:00
Nawaz Dhandala
a87c455c1a feat: Enhance stats section with hover effects for improved interactivity 2025-12-21 13:10:10 +00:00
Nawaz Dhandala
e7d13f9e7c feat: Add installation script and update README for simplified setup 2025-12-21 13:08:14 +00:00
Nawaz Dhandala
6564fe2ae6 feat: Update GitHub stats formatting for improved clarity and accuracy 2025-12-21 13:03:02 +00:00
Nawaz Dhandala
bd3e19f774 feat: Update GitHub stats fetching to use default values and improve formatting 2025-12-21 13:00:46 +00:00
Nawaz Dhandala
51ad4a5e9b feat: Add GitHub stats fetching and display contributors and commits count 2025-12-21 12:58:12 +00:00
Nawaz Dhandala
921da83b2c feat: Revamp proudly open-source section for improved aesthetics and clarity 2025-12-21 12:55:10 +00:00
Nawaz Dhandala
3450ab87a9 feat: Update features list in CTA section for improved clarity and engagement 2025-12-21 12:51:46 +00:00
Nawaz Dhandala
2ea6c7328f feat: Improve heading formatting for better readability in CTA section 2025-12-21 12:50:20 +00:00
Nawaz Dhandala
3a36f148b7 feat: Update text formatting for improved readability and consistency across sections 2025-12-21 12:46:56 +00:00
Nawaz Dhandala
82c7217cd5 feat: Update CTA section with new heading, subtext, and button labels for improved clarity and engagement 2025-12-21 12:40:20 +00:00
Nawaz Dhandala
cc0fc07e73 feat: Update CTA section with enhanced subtext and new features list for better engagement 2025-12-21 12:28:34 +00:00
Nawaz Dhandala
2d8a328a69 feat: Redesign CTA section with improved layout, content, and button styles 2025-12-21 12:26:20 +00:00
Nawaz Dhandala
eea5d1e447 feat: Revamp 'Proudly Open Source' section with new design, animations, and enhanced content 2025-12-21 12:22:35 +00:00
Nawaz Dhandala
0fc7fa75a8 feat: Redesign enterprise-ready section with enhanced visuals and improved content structure 2025-12-21 12:19:43 +00:00
Nawaz Dhandala
03e30276ec Refactor code structure for improved readability and maintainability 2025-12-21 12:09:23 +00:00
Nawaz Dhandala
2bc585df20 feat(reviews): Enhance review structure with role and company details, and improve styling for better presentation 2025-12-20 12:38:55 +00:00
Nawaz Dhandala
7ef6c5fbdb chore: Bump version to 9.2.26 2025-12-19 21:56:40 +00:00
Simon Larsen
cc9372edfb Merge pull request #2192 from OneUptime/demo-improve
Demo improve
2025-12-19 21:27:34 +00:00
Nawaz Dhandala
43aae580e2 Implement feature X to enhance user experience and fix bug Y in module Z 2025-12-19 21:20:18 +00:00
Nawaz Dhandala
9d147c9aa5 fix(demo): Update compliance certification sections to use anchor links for improved navigation 2025-12-19 21:09:53 +00:00
Nawaz Dhandala
c417d87c00 fix(demo): Add customer reference call prompt with contact link 2025-12-19 21:05:13 +00:00
Nawaz Dhandala
c14708ac8d fix(demo): Update SVG path for improved icon representation in workflows section 2025-12-19 21:02:59 +00:00
Nawaz Dhandala
e92d7b3834 fix(demo): Update SVG icons for improved visual consistency and clarity 2025-12-19 21:01:07 +00:00
Nawaz Dhandala
43583c3c30 fix(demo): Adjust logo image styles for improved alignment and consistency 2025-12-19 20:57:52 +00:00
Nawaz Dhandala
51b08d34d0 fix(demo): Revise main headline for improved clarity and update logo image sizes 2025-12-19 20:56:41 +00:00
Nawaz Dhandala
b847ef6aca fix(demo): Update main headline to better reflect software operations focus 2025-12-19 20:52:27 +00:00
Nawaz Dhandala
2cf3cd7e32 fix(demo): Remove Trusted By section to streamline demo page layout 2025-12-19 20:51:28 +00:00
Nawaz Dhandala
cc389542ad fix(demo): Update section title and description to enhance clarity and engagement 2025-12-19 20:50:05 +00:00
Nawaz Dhandala
ab521336b6 fix(demo): Update section title and content to clarify demo objectives 2025-12-19 20:49:24 +00:00
Nawaz Dhandala
e796c74d6f fix(demo): Update CTA button text and link for scheduling a demo 2025-12-19 20:31:30 +00:00
Nawaz Dhandala
99eca5b8de fix(demo): Update tagline to reflect broader client base and enhance messaging 2025-12-19 20:28:47 +00:00
Nawaz Dhandala
1090f56684 fix(demo): Adjust logo vertical alignment and heights for improved visual consistency 2025-12-19 20:27:12 +00:00
Nawaz Dhandala
083408f8a5 fix(demo): Adjust logo image heights for better visual consistency in marquee 2025-12-19 20:24:00 +00:00
Nawaz Dhandala
0f2b0a40b8 fix(demo): Adjust logo marquee width and item flex properties for better layout 2025-12-19 20:12:18 +00:00
Nawaz Dhandala
fd4661301e Refactor code structure for improved readability and maintainability 2025-12-19 20:09:46 +00:00
Nawaz Dhandala
7906280c98 feat(demo): Add CSCS logo to logo marquee for enhanced branding 2025-12-19 20:02:31 +00:00
Nawaz Dhandala
0353b57711 feat(demo): Update FAQ section with security certifications and deployment options for clarity 2025-12-19 19:14:16 +00:00
Nawaz Dhandala
ba26e1a24b Remove SVG logo and replace with PNG version for Syniti in logo-roll.ejs 2025-12-19 19:09:46 +00:00
Nawaz Dhandala
4283131030 Add new SVG logo for Syniti 2025-12-19 19:03:03 +00:00
Nawaz Dhandala
154cdf6d25 feat(demo): Enhance logo marquee with improved styling and seamless looping for better visual impact 2025-12-19 18:50:24 +00:00
Nawaz Dhandala
a0f9c2892f feat(demo): Update demo messaging for clarity and improved user understanding 2025-12-19 18:40:29 +00:00
Nawaz Dhandala
3b8a91128a feat(demo): Simplify calendar widget container by removing decorative glow for a cleaner look 2025-12-19 18:38:26 +00:00
Nawaz Dhandala
63debedf65 feat(demo): Update hero section background to match design consistency with a refined dot pattern 2025-12-19 18:36:26 +00:00
Nawaz Dhandala
14dd1f16a0 feat(demo): Enhance calendar widget with new header, decorative elements, and helper text for improved user experience 2025-12-19 18:35:09 +00:00
Nawaz Dhandala
df04467ae9 feat(demo): Update demo page background and remove floating elements for a cleaner design 2025-12-19 18:30:21 +00:00
Nawaz Dhandala
6ac4591c26 feat(demo): Revise demo page with updated messaging, improved CTA, and enhanced layout for better user engagement 2025-12-19 18:26:54 +00:00
Nawaz Dhandala
945d5df750 feat(demo): Revamp FAQ section with collapsible items and improved layout for better user engagement 2025-12-19 18:22:10 +00:00
Nawaz Dhandala
1a9b3d48c0 Improve demo page layout and content; adjust typography, enhance CTA buttons, and reorganize sections for better user experience 2025-12-19 18:16:52 +00:00
Nawaz Dhandala
225480d99a feat(oss-friends): Update category icon colors for improved visual consistency 2025-12-19 18:12:01 +00:00
Nawaz Dhandala
c3f598f2f3 feat(demo): Enhance demo page with animated elements and improved messaging 2025-12-19 16:42:35 +00:00
Nawaz Dhandala
54982c5e88 feat(oss-friends): Update badge design and messaging in the OSS Friends section 2025-12-19 16:29:24 +00:00
Nawaz Dhandala
3eb465a901 feat(footer): Update CTA design and enhance messaging for clarity 2025-12-19 16:27:42 +00:00
Nawaz Dhandala
c8d091e5ef feat(footer): Revamp CTA section with updated design and messaging 2025-12-19 16:25:02 +00:00
Nawaz Dhandala
2986e94655 feat: Enhance OSS Friends page with improved category navigation and project stats display 2025-12-19 16:24:29 +00:00
Nawaz Dhandala
ddc21d6947 fix(footer): simplify Careers link by removing hiring badge 2025-12-19 16:21:53 +00:00
Nawaz Dhandala
e7ca4dc1c2 feat: Revamp OSS Friends page layout and enhance project visibility 2025-12-19 16:20:16 +00:00
Nawaz Dhandala
5136dd5412 refactor: Remove "Observability & Monitoring" category and associated projects from OSSFriends 2025-12-19 16:18:23 +00:00
Nawaz Dhandala
7642d2dd80 feat: Enhance OSS Friends page with categories and additional projects
- 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.
2025-12-19 16:13:49 +00:00
Nawaz Dhandala
01d22b0ff1 fix(footer): reduce logo height for better alignment 2025-12-19 15:51:49 +00:00
Nawaz Dhandala
2f1f446980 fix(footer): increase logo size for better visibility 2025-12-19 15:50:03 +00:00
Nawaz Dhandala
319eb98ffa Update footer logo and enhance careers link styling
- 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.
2025-12-19 15:45:55 +00:00
Nawaz Dhandala
f864e389ea style: Update footer links for consistency and improved clarity 2025-12-19 15:40:57 +00:00
Nawaz Dhandala
bdc40bcd59 fix: replace em dashes with hyphens in various files for consistency
- 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.
2025-12-19 15:39:29 +00:00
Nawaz Dhandala
65bd7a90bd style: Enhance footer design with improved layout, content, and accessibility 2025-12-19 15:34:14 +00:00
Nawaz Dhandala
f61ee70c2c style: Update footer design for improved aesthetics and user engagement 2025-12-19 15:31:20 +00:00
Nils T
b2a0ca1a2f Remove unnecessary whitespace in MicrosoftTeams.ts 2025-12-19 16:21:33 +01:00
Nils T
3908eb8701 Remove unused import for MicrosoftTeamsTeam 2025-12-19 16:15:41 +01:00
Nils T
dd793f7a90 Fix formatting of user retrieval in MicrosoftTeams.ts 2025-12-19 16:10:06 +01:00
Nils T
36cf20ef21 Refactor getUserJoinedTeams to return array of teams 2025-12-19 16:08:04 +01:00
Nawaz Dhandala
aafab4b313 Implement feature X to enhance user experience and fix bug Y in module Z 2025-12-19 14:17:10 +00:00
Simon Larsen
2e7ec3e5bf Merge pull request #2190 from tollercode/fix/msteams-scoped-teams-retrieval
Fix user ID handling in MicrosoftTeams service
2025-12-19 11:41:38 +00:00
Nawaz Dhandala
433482b87c chore: Bump version to 9.2.25 2025-12-19 11:03:40 +00:00
Simon Larsen
904788fb34 Merge pull request #2182 from OneUptime/better-prod--pages
Refactor code structure for improved readability and maintainability
2025-12-19 11:03:21 +00:00
Nawaz Dhandala
7f6efa0b55 style: Refactor code for consistent formatting and improved readability 2025-12-19 11:03:10 +00:00
Nawaz Dhandala
633c07323e Refactor code structure for improved readability and maintainability 2025-12-19 11:02:35 +00:00
Nils T
3a575f8666 Handle potential null user in UserService call 2025-12-19 10:37:22 +01:00
Nils T
2eed0cbfb2 Update import path for User model 2025-12-19 10:33:41 +01:00
Nils T
c4f21561ff Fix formatting of User type declaration 2025-12-19 10:22:50 +01:00
Nils T
ff3113cc30 Update user ID handling in MicrosoftTeams service 2025-12-19 10:01:28 +01:00
Nawaz Dhandala
1050cc729a style: Improve code tab layout and prevent content overflow 2025-12-18 22:59:56 +00:00
Nawaz Dhandala
50c43c6b7a fix: Update SVG icons for various programming languages in code tabs 2025-12-18 22:51:27 +00:00
Nawaz Dhandala
de088b4012 feat: Enhance syntax highlighting support by adding additional language scripts and improving code block highlighting logic 2025-12-18 22:40:12 +00:00
Nawaz Dhandala
0d5418e4a0 feat: Add request preview functionality with headers and body display in code tabs 2025-12-18 22:31:32 +00:00
Nawaz Dhandala
3ef008415e refactor: Remove Project ID placeholder from API request examples 2025-12-18 22:15:51 +00:00
Nawaz Dhandala
6560fea782 Enhance code block copy functionality and styling
- 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.
2025-12-18 22:10:18 +00:00
Nawaz Dhandala
e26f3ea9d3 fix: Update layout of API reference sections for improved readability 2025-12-18 22:00:04 +00:00
Nawaz Dhandala
ce7925f947 Add code tabs for multiple programming languages in API reference
- 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.
2025-12-18 21:56:10 +00:00
Nawaz Dhandala
1076987cc8 feat: Implement SMS template variable handling with plain text conversion for notifications 2025-12-18 21:37:01 +00:00
Nawaz Dhandala
704456e256 fix: Update Slack message formatting to use standard Markdown syntax 2025-12-18 21:09:30 +00:00
Nawaz Dhandala
73b38b9bcb fix: Simplify SMS example formatting in notification template documentation 2025-12-18 21:02:59 +00:00
Nawaz Dhandala
f1ee95e1e2 fix: Adjust formatting for Microsoft Teams notification method check 2025-12-18 20:58:16 +00:00
Nawaz Dhandala
21acba85f4 feat: Update notification template handling for different methods and improve documentation examples 2025-12-18 20:56:53 +00:00
Nawaz Dhandala
0f7f8aafe3 Enhance status page design with floating elements and improved animations
- 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.
2025-12-18 19:05:19 +00:00
Nawaz Dhandala
66dd76ab6a fix: Simplify date assignment logic in timeline for scheduled maintenance events 2025-12-18 18:15:39 +00:00
Nawaz Dhandala
e86f033a8b Refactor code structure for improved readability and maintainability 2025-12-18 18:00:19 +00:00
Nawaz Dhandala
994c614d5e Add AI Agent landing page with features, capabilities, and privacy details 2025-12-18 17:47:08 +00:00
Nawaz Dhandala
c467d2ec30 feat: Rename "Reliability Copilot" to "AI Agent" in feature descriptions 2025-12-18 14:34:42 +00:00
Nawaz Dhandala
4d1cde73b3 Merge branch 'master' into better-prod--pages 2025-12-18 14:31:37 +00:00
Nawaz Dhandala
1b354cb040 chore: Bump version to 9.2.24 2025-12-18 14:08:42 +00:00
Nawaz Dhandala
c75e37b58c Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-18 13:59:26 +00:00
Nawaz Dhandala
384fe01ddc test: Refactor test fixtures in BaseAPI tests for consistency and clarity 2025-12-18 13:59:24 +00:00
Simon Larsen
8609fa638f Merge pull request #2188 from tollercode/fix/msteams-scoped-teams-refresh
Refactor the use app-scoped token for fetching teams per user
2025-12-18 13:58:20 +00:00
Nawaz Dhandala
992eb51eac chore: Bump version to 9.2.23 2025-12-18 13:52:56 +00:00
Nawaz Dhandala
e7f489da3b fix: Add type annotations for improved type safety in various modules 2025-12-18 13:46:22 +00:00
Nawaz Dhandala
9481d61c2f Refactor SelectFieldGenerator and SchemaConverter for improved readability and maintainability
- 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.
2025-12-18 13:22:18 +00:00
Nawaz Dhandala
89dd543677 feat: Remove EnableMCP decorator from Project model 2025-12-18 13:21:07 +00:00
Nawaz Dhandala
b94c6f9fb7 feat: Remove resolve_status_page_domain tool from public status page tools 2025-12-18 13:20:08 +00:00
Nawaz Dhandala
c8409da40b feat: Update MCP server to support public tools without API key 2025-12-18 13:13:53 +00:00
Nawaz Dhandala
eecf87bd0f feat: Enhance MCP tool generation with public status page tools
- 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.
2025-12-18 13:03:17 +00:00
Nawaz Dhandala
2cf23c203e feat: update StatusPageAPI to validate UUIDs and use domain in route parameters 2025-12-18 13:02:43 +00:00
Nawaz Dhandala
9dd2876664 feat: add UUID validation methods to ObjectID and update BaseAPI to use them 2025-12-18 12:44:24 +00:00
Nawaz Dhandala
51e6c1ce9c feat: add helper tools for resource discovery and guidance in MCP 2025-12-18 12:03:57 +00:00
Nawaz Dhandala
8e399accc1 feat: add enableMCP property and decorator to various models for enhanced MCP functionality 2025-12-18 11:49:01 +00:00
Nawaz Dhandala
53ec40a3cb refactor: enhance formatCountResponse to handle various result formats 2025-12-18 11:39:59 +00:00
Nawaz Dhandala
73c126699d refactor: update Nginx configuration for MCP endpoint handling 2025-12-18 11:19:04 +00:00
Nawaz Dhandala
e93b9f7759 feat: Implement MCP Tool Handler and Server Management
- 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.
2025-12-17 18:01:21 +00:00
Nawaz Dhandala
6cdc9f9a2b refactor: update Dockerfile for Node.js version and improve nodemon configuration 2025-12-17 17:46:40 +00:00
Nawaz Dhandala
2fd7dd136d refactor: add CORS support and handle root endpoint in MCP routes 2025-12-17 17:43:41 +00:00
Nawaz Dhandala
fd0c84d6b9 refactor: update cost display from per million to per 1000 tokens 2025-12-17 17:30:20 +00:00
Nils T
df78d71802 Fix logger.debug formatting in MicrosoftTeams.ts 2025-12-17 14:04:53 +01:00
Nawaz Dhandala
7ebbfb062a refactor: remove playwright dependencies from Dockerfiles 2025-12-17 12:38:53 +00:00
Nawaz Dhandala
60b2ee0b45 refactor: remove playwright dependencies from Dockerfile 2025-12-17 12:27:13 +00:00
Nawaz Dhandala
e2cde12c2f refactor: add QEMU_CPU environment variable to Docker image deployment jobs 2025-12-17 12:05:52 +00:00
Nils T
849326d54e Refactor the use app-scoped token for fetching teams per user 2025-12-17 12:51:40 +01:00
Nawaz Dhandala
ab600ee29c refactor: consolidate MCP Docker image deployment steps in release workflows 2025-12-17 11:07:10 +00:00
Nawaz Dhandala
cdd4ea1644 refactor: rename MCP server references to use a consistent naming convention 2025-12-17 10:45:31 +00:00
Nawaz Dhandala
694f20f231 chore: update version number to 9.2.22 2025-12-16 21:58:50 +00:00
Nawaz Dhandala
6a0db02101 refactor: improve code formatting and enhance type definitions in MCP server 2025-12-16 21:50:32 +00:00
Nawaz Dhandala
14ebd5450b refactor: enhance MCP server documentation for VS Code integration with GitHub Copilot 2025-12-16 21:42:36 +00:00
Nawaz Dhandala
b27863ed37 refactor: remove multiple instances configuration section from MCP server documentation 2025-12-16 21:36:53 +00:00
Nawaz Dhandala
8a6be6960b refactor: update API service initialization to use environment variables for URL configuration 2025-12-16 21:32:18 +00:00
Nawaz Dhandala
af155d8c43 refactor: replace Server with McpServer for improved functionality and clarity 2025-12-16 21:29:22 +00:00
Nawaz Dhandala
449549e1f9 refactor: update MCP server transport to Streamable HTTP and enhance session management 2025-12-16 21:27:10 +00:00
Nawaz Dhandala
da0d3b2e34 refactor(tests): update mock event type for preventDefault in Breadcrumbs tests 2025-12-16 21:14:18 +00:00
Nawaz Dhandala
39cc8bcb3f Merge branch 'release' of https://github.com/OneUptime/oneuptime into release 2025-12-16 20:54:39 +00:00
Nawaz Dhandala
136c9bca26 refactor(tests): add type annotations for better clarity and maintainability 2025-12-16 20:41:15 +00:00
Nawaz Dhandala
8998faac57 refactor: improve code readability by normalizing whitespace and enhancing comments in tests 2025-12-16 20:35:34 +00:00
Nawaz Dhandala
9c3d21fec4 chore: bump version to 9.2.21 2025-12-16 20:27:53 +00:00
Nawaz Dhandala
1a33d51190 Refactor tests for HashedString, Dropdown, FilePicker, and API
- 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.
2025-12-16 20:27:35 +00:00
Nawaz Dhandala
37884050f8 test: Skip FilePicker tests that check for image rendering due to component changes 2025-12-16 20:09:52 +00:00
Nawaz Dhandala
737ba1b242 test: Skip outdated FilePicker and API tests due to component redesign and method changes 2025-12-16 20:02:29 +00:00
Nawaz Dhandala
ed43f22815 test: Update BaseAPI tests to use DEFAULT_LIMIT for limit=0; normalize whitespace in StatementGenerator tests; refine FilePicker tests to use text for dropzone; enhance uuid mock for valid UUID generation 2025-12-16 19:58:02 +00:00
Nawaz Dhandala
9508c31a1e test: Update cookie utility tests to include default path and sameSite options; modify modal tests for responsive width; enhance navbar tests with mock navigation location; adjust ordered states list test for bar loader role 2025-12-16 19:52:09 +00:00
Nawaz Dhandala
fd47a72d54 test: Skip database-dependent test suites and update mock configurations 2025-12-16 19:18:28 +00:00
Nawaz Dhandala
6acf9fe3cf feat: Introduce AI templates for incident postmortem, public notes, and internal notes 2025-12-16 19:03:25 +00:00
Nawaz Dhandala
3e8ad4c05c fix: Update error message for AI balance recharge instructions 2025-12-16 18:48:12 +00:00
Simon Larsen
ac1d052f35 Merge pull request #2187 from OneUptime/master
fix: Remove unused data source items from AI postmortem generation
2025-12-16 18:33:55 +00:00
Nawaz Dhandala
da21231d9b chore: Bump version to 9.2.20 2025-12-16 18:32:23 +00:00
Nawaz Dhandala
c14976bac8 feat: Add ejs as a dependency in package.json and package-lock.json 2025-12-16 18:32:00 +00:00
Nawaz Dhandala
b7c3070204 feat: Add markdown table conversion for Slack formatting 2025-12-16 18:02:52 +00:00
Nawaz Dhandala
f5b18a0a3d fix: Remove unused data source items from AI postmortem generation 2025-12-16 17:50:02 +00:00
Nawaz Dhandala
6cfb7bf965 fix: Update internal note generation to use correct type for API response 2025-12-16 16:11:25 +00:00
Nawaz Dhandala
1526b59ff5 refactor: Clean up import statements and improve code formatting in API files 2025-12-16 16:02:24 +00:00
Nawaz Dhandala
4966468d99 fix: Change button style for AI generation to outline 2025-12-16 15:58:35 +00:00
Nawaz Dhandala
b4357d8e5b feat: Enhance Domain validation with comprehensive checks and regex implementation 2025-12-16 15:55:30 +00:00
Nawaz Dhandala
1895bffb95 feat: Update AI note generation for alerts, incidents, and scheduled maintenance with structured request data 2025-12-16 15:53:16 +00:00
Nawaz Dhandala
8d79a38a1e refactor: Remove maxTokens parameter from LLMCompletionRequest and related methods 2025-12-16 15:39:43 +00:00
Nawaz Dhandala
bdd894f57e feat: Add maxTokens parameter to LLMCompletionRequest and update related methods 2025-12-16 15:33:33 +00:00
Nawaz Dhandala
64a584dd76 fix: Add peer dependency flag to various packages in package-lock.json 2025-12-16 15:29:37 +00:00
Nawaz Dhandala
4b967375aa refactor: Update type annotations for note templates and API response in InternalNote 2025-12-16 15:25:23 +00:00
Nawaz Dhandala
35441d90a8 feat: Add AI-generated note functionality for alerts, incidents, and scheduled maintenance
- 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.
2025-12-16 15:18:04 +00:00
Nawaz Dhandala
ea2b1192ff refactor: Correct type annotation for costInUSD in LlmPage 2025-12-16 14:35:59 +00:00
Nawaz Dhandala
9dc2e8e04d refactor: Correct type annotations for cost calculations in LlmPage 2025-12-16 14:35:17 +00:00
Nawaz Dhandala
56e2baeb44 refactor: Update LlmPage description based on BILLING_ENABLED status 2025-12-16 14:32:54 +00:00
Nawaz Dhandala
907379ef23 refactor: Add billing cost display logic in LlmPage based on BILLING_ENABLED 2025-12-16 14:31:24 +00:00
Nawaz Dhandala
afb3de360b refactor: Add billing enabled check in AIBillingAPI and AIBillingService 2025-12-16 14:28:09 +00:00
Nawaz Dhandala
a1587c33e7 refactor: Add peer property to multiple dependencies in package-lock.json 2025-12-16 14:20:39 +00:00
Nawaz Dhandala
f01227c997 refactor: Remove border styling from MarkdownEditor in GenerateFromAIModal and update icon color handling in Modal component 2025-12-16 14:10:50 +00:00
Nawaz Dhandala
ce50121696 refactor: Comment out AI Logs SideMenuItem in multiple SideMenu components 2025-12-16 14:03:01 +00:00
Nawaz Dhandala
e109b01ae5 refactor: Move LLM Providers link to the end of the AI section in DashboardSideMenu 2025-12-16 14:02:53 +00:00
Nawaz Dhandala
9bd2dd0942 refactor: Update button style to PRIMARY in GenerateFromAIModal and IncidentPostmortem 2025-12-16 14:00:47 +00:00
Nawaz Dhandala
0fba2bb8bf refactor: Simplify AILoader usage in GenerateFromAIModal and remove unused data source prop 2025-12-16 13:58:43 +00:00
Nawaz Dhandala
3ca7d37c49 refactor: Remove unused data source info section from GenerateFromAIModal 2025-12-16 13:56:41 +00:00
Nawaz Dhandala
78c4a7cfc5 refactor: Set default selected template ID and simplify template options mapping 2025-12-16 13:55:36 +00:00
Nawaz Dhandala
2e7fdd53a5 Merge remote-tracking branch 'origin/incident-ai' 2025-12-16 13:33:18 +00:00
Nawaz Dhandala
6335887d62 feat: Reduce npm fetch retry timeout values in Dockerfiles 2025-12-16 13:30:12 +00:00
Nawaz Dhandala
3797f258e8 refactor: Update inputSchema type to JSONSchema and improve route setup with forEach 2025-12-16 12:15:37 +00:00
Nawaz Dhandala
8e628d0a4f refactor: Remove unused properties from AILoaderProps and improve type definitions in LlmLogsTable and MCP Index 2025-12-16 12:13:27 +00:00
Nawaz Dhandala
858710cf1b refactor: Clean up imports and improve formatting across multiple files 2025-12-16 12:11:48 +00:00
Nawaz Dhandala
5cbce238b1 refactor: Update AILoaderProps to explicitly define optional properties and enhance GenerateFromAIModal with default templates and improved template selection 2025-12-16 12:06:04 +00:00
Nawaz Dhandala
276f79057d feat: Enhance incident postmortem generation with template support and clearer instructions 2025-12-16 11:59:44 +00:00
Nawaz Dhandala
c50aa35064 refactor: Simplify AILoader component by removing unused icons and stages, enhancing loading message display 2025-12-16 11:57:32 +00:00
Nawaz Dhandala
87ab8b6c40 feat: Add visibility condition for error view button in LlmLogsTable 2025-12-16 11:54:24 +00:00
Nawaz Dhandala
06f248717d refactor: Remove outdated MCP documentation and update navigation for AI integration 2025-12-16 11:51:20 +00:00
Nawaz Dhandala
9b714bbe29 refactor: Improve type definitions and enhance JSON schema handling in MCP services 2025-12-16 11:42:56 +00:00
Nawaz Dhandala
2fb8239fe9 refactor: Simplify tsconfig structure in jest.config.json 2025-12-16 11:34:02 +00:00
Nawaz Dhandala
fbdedaacc3 chore: update dependencies in package.json
- 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
2025-12-16 11:33:05 +00:00
Nawaz Dhandala
4c577c7dfa fix: Allow any type for request parameters in tool call handler 2025-12-16 11:30:50 +00:00
Nawaz Dhandala
f15f797d43 refactor: Replace MCP server implementation with a streamlined structure and improved logging 2025-12-16 11:27:02 +00:00
Nawaz Dhandala
f92a109f3d feat: Add MCP service configuration with volumes and debugging port 2025-12-16 11:24:29 +00:00
Nawaz Dhandala
5eca1a5d04 refactor: Remove maxTokens from LLMCompletionRequest and related usages 2025-12-16 11:21:47 +00:00
Nawaz Dhandala
091a766c29 docs: Update MCP documentation for improved clarity and configuration details 2025-12-16 11:19:44 +00:00
Nawaz Dhandala
f2906f59a2 refactor: Simplify server run logic and remove unused stdio mode 2025-12-16 11:06:02 +00:00
Nawaz Dhandala
83107857bd feat: Add MCP service configuration and related environment variables 2025-12-16 11:04:56 +00:00
Nawaz Dhandala
73d2cab46e refactor: update import paths to use relative imports for consistency 2025-12-16 10:50:16 +00:00
Nawaz Dhandala
0563970eb6 refactor: update package dependencies and tsconfig settings
- 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.
2025-12-16 10:50:09 +00:00
Nawaz Dhandala
2818146543 feat: Introduce AILoader component for enhanced loading experience during AI content generation 2025-12-16 10:33:04 +00:00
Nawaz Dhandala
6371ac4e36 feat: Refactor AI logging service by renaming AILogService to AIService and updating references in IncidentAPI 2025-12-16 10:28:52 +00:00
Nawaz Dhandala
cc077aff99 feat: Conditionally display cost settings based on billing configuration in LlmProviders settings 2025-12-16 10:27:21 +00:00
Nawaz Dhandala
5652298f38 feat: Implement hard delete for LlmLog items older than 3 days when billing is enabled; refactor LlmLogsTable by removing unused fields and action buttons 2025-12-16 10:25:31 +00:00
Nawaz Dhandala
931a5f9e63 feat: Add AI Logs section to Scheduled Maintenance with routing and component integration 2025-12-15 21:43:26 +00:00
Nawaz Dhandala
bc05f75304 feat: Refactor LlmLog model by removing input and output tokens, and update related migrations and table display 2025-12-15 21:38:27 +00:00
Nawaz Dhandala
60955f0e1c fix: Update error message for missing payment methods to provide clearer instructions 2025-12-15 21:35:12 +00:00
Nawaz Dhandala
863737c2a3 feat: Conditionally display cost column in LlmLogsTable based on billing configuration 2025-12-15 21:32:06 +00:00
Nawaz Dhandala
cac0ef7155 feat: Update cost display in LlmLogsTable to show USD instead of cents 2025-12-15 21:30:59 +00:00
Nawaz Dhandala
b361d854bb feat: Add LlmLog API integration to BaseAPIFeatureSet for enhanced logging capabilities 2025-12-15 21:29:07 +00:00
Nawaz Dhandala
ee83583044 fix: Add public access modifier to name property in MigrationName1765830758857 class 2025-12-15 20:33:42 +00:00
Nawaz Dhandala
632849b334 feat: Add LlmLog table and related constraints for enhanced logging functionality 2025-12-15 20:33:09 +00:00
Nawaz Dhandala
17ba51a359 feat: Enhance type definitions and improve type safety in various components and services 2025-12-15 20:30:33 +00:00
Nawaz Dhandala
bb485070af style: Improve code formatting and readability in AILogs components 2025-12-15 20:19:06 +00:00
Nawaz Dhandala
393e01eb9e feat: Update AILogService and IncidentAPI to handle optional userId and improve logging in LlmLogsTable 2025-12-15 20:18:17 +00:00
Nawaz Dhandala
035edaf435 feat: Add AI Logs functionality with LLM logging and management
- 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.
2025-12-15 20:13:36 +00:00
Nawaz Dhandala
8fda0325d9 feat: Integrate AI template fetching and handling in IncidentPostmortem component 2025-12-15 19:03:26 +00:00
Nawaz Dhandala
93d9c045e2 style: Improve code formatting and readability across multiple files 2025-12-15 19:01:02 +00:00
Nawaz Dhandala
db895a0f11 feat: Enhance channel message retrieval for Slack and Microsoft Teams 2025-12-15 19:00:36 +00:00
Nawaz Dhandala
ab1d357625 feat: Add data source items for AI generation in IncidentPostmortem 2025-12-15 18:46:38 +00:00
Nawaz Dhandala
2515da12aa feat: Add AI generation functionality for postmortem notes in IncidentPostmortem 2025-12-15 18:42:30 +00:00
Nawaz Dhandala
ac12a33405 feat: Refactor AI context handling by introducing IncidentAIContextBuilder 2025-12-15 18:41:12 +00:00
Nawaz Dhandala
4cfebb5e49 feat: Add LLMService for handling multiple LLM provider completions 2025-12-15 18:38:17 +00:00
Nawaz Dhandala
b9ae827c29 feat: Implement AI-driven postmortem generation endpoint in IncidentAPI 2025-12-15 18:38:02 +00:00
Nawaz Dhandala
f69c81e815 feat: Add AI postmortem generation method to IncidentService 2025-12-15 18:37:15 +00:00
Nawaz Dhandala
012228d9d1 feat: Add telemetry capture to getLLMProviderForProject method 2025-12-15 18:28:45 +00:00
Nawaz Dhandala
8efe2284f9 feat: Rename "AI Billing" to "AI Credits" in SettingsRoutePath 2025-12-15 16:52:49 +00:00
Nawaz Dhandala
530a5b4f12 feat: Update "AI Billing" to "AI Credits" in SideMenu and Breadcrumbs 2025-12-15 16:51:28 +00:00
Nawaz Dhandala
9fe3209db6 feat: Add GitHub App configuration variables to docker-compose 2025-12-15 14:57:30 +00:00
Nawaz Dhandala
11087350de feat: Add migration for AI-related fields in Project and OnCallDutyPolicyScheduleLayer 2025-12-15 14:52:06 +00:00
Nawaz Dhandala
aebe606374 feat: Add migration for new AI-related fields in Project and OnCallDutyPolicyScheduleLayer 2025-12-15 14:51:12 +00:00
Nawaz Dhandala
37b492beb2 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-15 14:49:14 +00:00
Nawaz Dhandala
95136cd3c0 Refactor code structure for improved readability and maintainability 2025-12-15 14:48:51 +00:00
Simon Larsen
1653e7626c Merge pull request #2181 from omri-shilton/master
Added nginx service annotations and load balancer class
2025-12-15 14:46:19 +00:00
Nawaz Dhandala
33f7ce129d chore: Bump version to 9.2.17 2025-12-15 13:35:12 +00:00
Nawaz Dhandala
464a4ff46a feat: Add complete guide for OneUptime Terraform Provider with installation, configuration, and best practices 2025-12-15 13:26:38 +00:00
Nawaz Dhandala
8491c89a0b fix: Remove unnecessary line breaks in descriptions for AIBillingSettings component 2025-12-15 13:12:37 +00:00
Nawaz Dhandala
0f7ffb7a66 feat: Implement AI Billing feature with recharge functionality and UI integration 2025-12-15 12:57:32 +00:00
omrishilton
b53aae5516 Added nginx service annotations and load balancer class for use in AWS NLB 2025-12-15 14:48:26 +02:00
Nawaz Dhandala
2c7d3562f6 feat: Update publish script to handle existing tags gracefully and improve user feedback 2025-12-15 12:41:02 +00:00
Nawaz Dhandala
9d95232e69 feat: Enhance footer design with gradient background, updated social links, and improved accessibility 2025-12-15 12:29:17 +00:00
Nawaz Dhandala
62e5c944dd feat: Add enableAutomaticImprovements and maxOpenPullRequests fields to ServiceCatalogCodeRepository model and update related migrations and UI 2025-12-15 12:29:03 +00:00
Nawaz Dhandala
af21ea967a feat: Refactor migration for ServiceCatalogCodeRepository and update related routes 2025-12-15 10:35:29 +00:00
Nawaz Dhandala
a9046071cf feat: Add ServiceCatalogCodeRepositoryService and integrate with BaseAPI 2025-12-13 14:32:09 +00:00
Nawaz Dhandala
0b6a59ce1d feat: Implement Service Catalog Code Repository model and related routes 2025-12-13 13:47:22 +00:00
Nawaz Dhandala
f1c7f0a32e feat: Add base64 decoding for GitHub App private key 2025-12-13 12:42:56 +00:00
Nawaz Dhandala
78c6bb82aa feat: Add migration for CodeRepository and CodeRepositoryLabel tables 2025-12-13 12:28:52 +00:00
Nawaz Dhandala
fc259cb0b2 docs: Update GitHub integration instructions to use base64 encoded private key 2025-12-13 12:26:25 +00:00
Nawaz Dhandala
b0f5db650c docs: Update GitHub integration documentation for clarity and completeness 2025-12-13 12:24:14 +00:00
Nawaz Dhandala
229987db94 chore: Update CodeRepository component for better performance 2025-12-13 12:24:09 +00:00
Nawaz Dhandala
e53af4d49e feat: Add Code Repository API integration 2025-12-13 12:15:05 +00:00
Nawaz Dhandala
962398a947 fix: Remove unnecessary background gradient from introduction section 2025-12-13 12:08:49 +00:00
Nawaz Dhandala
8d6f301075 Refactor code structure for improved readability and maintainability 2025-12-13 12:06:47 +00:00
Nawaz Dhandala
3a93181e89 Merge branch 'master' into code-repo 2025-12-13 09:22:34 +00:00
Nawaz Dhandala
518fe45c4b chore: Bump version to 9.2.16 2025-12-13 09:22:09 +00:00
Nawaz Dhandala
488a30a2c1 feat: Add migration for CodeRepository and CodeRepositoryLabel tables 2025-12-12 22:56:57 +00:00
Nawaz Dhandala
ffcfa93ed3 fix: Update GitHub callback URL in documentation and API to use state parameter 2025-12-12 22:55:28 +00:00
Nawaz Dhandala
467d35889f feat: Add GitHub Integration documentation and navigation link 2025-12-12 22:44:02 +00:00
Nawaz Dhandala
6681640b5f refactor: Clean up code formatting and improve readability in GitHub API and related files 2025-12-12 22:38:58 +00:00
Nawaz Dhandala
f65197a0bf feat: Add Code Repository management features
- 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.
2025-12-12 22:37:01 +00:00
Nawaz Dhandala
7c06b22e9d feat: Update example secret value in MonitorSecret model for clarity 2025-12-12 22:28:04 +00:00
Nawaz Dhandala
bb2bd2dde9 feat: Update subject line formatting for incident notifications 2025-12-12 22:25:06 +00:00
Nawaz Dhandala
7d468be1e3 feat: Add previous state duration details to alert, incident, and scheduled maintenance notifications 2025-12-12 21:57:50 +00:00
Nawaz Dhandala
2b0b66a606 feat: Add conditional rendering for table permissions in model view 2025-12-12 21:31:31 +00:00
Nawaz Dhandala
aa0105a8e2 Refactor example formatting in database models for consistency
- 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.
2025-12-12 21:23:31 +00:00
Nawaz Dhandala
ca5c31fc32 Add example values to various fields in Telemetry and User models for better documentation
- 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.
2025-12-12 21:10:10 +00:00
Nawaz Dhandala
e928328bbb Add example values to various database models for improved API documentation
- 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.
2025-12-12 20:49:28 +00:00
Nawaz Dhandala
f502548dff Implement feature X to enhance user experience and optimize performance 2025-12-12 19:31:50 +00:00
Nawaz Dhandala
7c05566167 fix: Update footer layout for improved responsiveness and consistency
feat: Add conditional rendering for API permissions in model documentation
2025-12-12 19:11:48 +00:00
Nawaz Dhandala
9803872917 feat: Enhance mobile navigation with toggle functionality and improved layout 2025-12-12 19:07:39 +00:00
Nawaz Dhandala
698d4c020a fix: Update footer and navigation for improved accessibility and visual consistency 2025-12-12 19:00:18 +00:00
Nawaz Dhandala
e69f32e244 Refactor API documentation layout and styles
- 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.
2025-12-12 18:54:06 +00:00
Nawaz Dhandala
04e07da274 feat: Update color scheme to use indigo for improved visual consistency across components 2025-12-12 17:58:13 +00:00
Nawaz Dhandala
a015869447 Enhance documentation UI and error handling
- 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.
2025-12-12 17:57:00 +00:00
Nawaz Dhandala
cab5630ab3 feat: Update LLM Providers page for improved clarity and consistency in incident notes 2025-12-12 17:15:49 +00:00
Nawaz Dhandala
41f25269dc feat: Update description for Global LLM Providers to clarify usage 2025-12-12 15:05:18 +00:00
Nawaz Dhandala
fdb33d9375 feat: Remove unused Pill component and related status fields in LLM Providers settings 2025-12-12 14:44:16 +00:00
Nawaz Dhandala
1aa5074ca2 feat: Update icon for Global LLM Providers in SideMenu to improve clarity 2025-12-12 14:42:34 +00:00
Nawaz Dhandala
92d316d557 feat: Replace Icon with Pill component for default indicators in LLM Provider views 2025-12-12 14:32:06 +00:00
Nawaz Dhandala
e56fe553d3 feat: Replace Pill components with Icon for default indicators and add a Card for LLM Providers description 2025-12-12 14:28:31 +00:00
Nawaz Dhandala
e4736c4f45 feat: Add new migration and update open-source indicators in index.ejs for consistency 2025-12-12 14:15:30 +00:00
Nawaz Dhandala
145f164c21 feat: Update APM icon in product-tabs.ejs for improved visual representation 2025-12-12 14:07:56 +00:00
Nawaz Dhandala
c9382817e3 feat: Update APM description in features-table.ejs for improved clarity 2025-12-12 14:06:16 +00:00
Nawaz Dhandala
8709120d66 feat: Update APM icon in index.ejs for improved visual representation 2025-12-12 14:01:47 +00:00
Nawaz Dhandala
722a74f46b feat: Update feature descriptions in index.ejs for improved clarity and engagement 2025-12-12 14:00:04 +00:00
Nawaz Dhandala
0e2629473a feat: Update feature descriptions in index.ejs for enhanced clarity and engagement 2025-12-12 13:58:44 +00:00
Nawaz Dhandala
98031222bc feat: Update main headline and subheadline in index.ejs for improved clarity and engagement 2025-12-12 13:56:12 +00:00
Nawaz Dhandala
db3871aab6 feat: Update feature labels and descriptions in index.ejs for clarity and consistency 2025-12-12 13:05:51 +00:00
Nawaz Dhandala
a892c38905 refactor: Add public access modifier to 'name' property in migration classes and specify type for itemsToUpdate in LlmProviderService 2025-12-12 12:57:15 +00:00
Nawaz Dhandala
06d3614bc8 refactor: Simplify array syntax for 'AI' links in DocsNav 2025-12-12 12:55:18 +00:00
Nawaz Dhandala
3f651d52a3 feat: Refactor LlmProvider to rename 'isEnabled' to 'isDefault' and remove related fields from UI 2025-12-12 12:54:12 +00:00
Nawaz Dhandala
dcf00d313c feat: Add 'isDefault' field to LlmProvider and implement logic for default provider handling 2025-12-12 12:51:42 +00:00
Nawaz Dhandala
e6f9f2fe59 feat: Remove unused fields from LlmProvider selection in API 2025-12-12 12:43:16 +00:00
Nawaz Dhandala
fa29b32cf0 feat: Update LlmPage to replace 'Provider' and 'Model' titles with 'Description' 2025-12-12 12:41:48 +00:00
Nawaz Dhandala
7dc229bf7e feat: Enhance LLM provider documentation with detailed capabilities and setup instructions 2025-12-12 12:31:57 +00:00
Nawaz Dhandala
8db2f4a962 feat: Update Icon component SVG path for improved rendering 2025-12-12 12:29:45 +00:00
Nawaz Dhandala
ddd372a9b0 feat: Add migration to drop Copilot and CodeRepository related tables 2025-12-12 11:57:33 +00:00
Nawaz Dhandala
7f41ebe697 feat: Add LlmProvider migration and update OnCallDutyPolicyScheduleLayer defaults 2025-12-12 11:52:52 +00:00
Nawaz Dhandala
e8d282ec06 feat: Update GitHub stars fetching logic and improve rendering in homepage 2025-12-12 11:31:10 +00:00
Nawaz Dhandala
0eeea3b76c fix: Correct string quotes and improve formatting in LLM provider settings 2025-12-12 11:28:21 +00:00
Nawaz Dhandala
b5eee5968d Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-12 11:14:53 +00:00
Nawaz Dhandala
02b6ee5985 feat: Add GitHub stars count feature to homepage 2025-12-12 11:14:45 +00:00
Simon Larsen
fea6bf2196 Merge pull request #2177 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2025-12-12 11:11:49 +00:00
Nawaz Dhandala
6a9a9bcba6 refactor: Improve code formatting and readability across multiple files 2025-12-12 11:09:02 +00:00
Nawaz Dhandala
775d875174 Refactor LLM settings to LLM Providers
- 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.
2025-12-12 11:07:53 +00:00
Nawaz Dhandala
165952255c feat: Refactor LLM to LLM Provider
- 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.
2025-12-12 11:04:59 +00:00
simlarsen
5dbef764df chore: npm audit fix 2025-12-12 01:53:37 +00:00
Nawaz Dhandala
60a2a76469 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-11 23:11:04 +00:00
Nawaz Dhandala
3387f3ddfc fix: Update wording for clarity in contributing and support sections 2025-12-11 23:06:24 +00:00
Nawaz Dhandala
2a172bfcf7 feat: Add new migration for LLM table to schema 2025-12-11 22:40:34 +00:00
Nawaz Dhandala
431d49f547 feat: Add migration for LLM table with necessary constraints 2025-12-11 22:39:56 +00:00
Nawaz Dhandala
4dd806eaf8 feat: Add new features to the homepage grid for enhanced service visibility 2025-12-11 22:28:42 +00:00
Nawaz Dhandala
1f9805441e feat: Enhance homepage layout and content for improved user engagement 2025-12-11 22:25:58 +00:00
Nawaz Dhandala
b72c9bf087 refactor: Rename menu items in SideMenu for clarity and reorganization 2025-12-11 22:18:49 +00:00
Simon Larsen
ef537ea791 Merge pull request #2175 from OneUptime/ai-llm
docs: Update quick start instructions in README to use 'npm run start…
2025-12-11 22:13:36 +00:00
Nawaz Dhandala
37ee6eb74a docs: Update quick start instructions in README to use 'npm run start' instead of 'docker compose up -d' 2025-12-11 22:12:31 +00:00
Simon Larsen
e72af99a39 Merge pull request #2174 from OneUptime/ai-llm
Ai llm
2025-12-11 22:11:06 +00:00
Nawaz Dhandala
f1004d2d75 chore: Update license references from MIT to Apache 2.0 in footer, contributing guide, and README 2025-12-11 22:04:19 +00:00
Nawaz Dhandala
73225a06d6 docs: Revise README to enhance clarity and structure, adding new sections and updating features 2025-12-11 22:00:24 +00:00
Nawaz Dhandala
355c351203 docs: Update README to rename 'Coming Soon' section to 'Error Tracking' and provide description 2025-12-11 21:58:44 +00:00
Nawaz Dhandala
8f8704e2d0 Remove AI Copilot feature and related components
- 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.
2025-12-11 21:52:49 +00:00
Nawaz Dhandala
c617372e37 feat: Add repository field to package.json files across the project 2025-12-11 21:31:52 +00:00
Nawaz Dhandala
27a2fdc794 feat: Add Brain icon to IconProp and update SideMenu to use it 2025-12-11 20:47:26 +00:00
Nawaz Dhandala
94b107beb3 feat: Add LLM (Large Language Model) settings and management features
- 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.
2025-12-11 20:45:23 +00:00
Nawaz Dhandala
abc0446c3a feat: improve logging and error handling in Microsoft Teams user token retrieval 2025-12-11 19:20:13 +00:00
Nawaz Dhandala
6e5e0b4a0a feat: remove unused endpoint for team selection in Microsoft Teams API 2025-12-11 19:07:05 +00:00
Simon Larsen
b04e639864 Merge pull request #2173 from OneUptime/slack-pushpin
Slack pushpin
2025-12-11 18:34:02 +00:00
Simon Larsen
d30e06c740 Merge pull request #2099 from tollercode/feat/msteams-userscope
feat(MicrosoftTeams): enhance refreshTeams to support user-scoped tokens
2025-12-11 18:33:30 +00:00
Nawaz Dhandala
221b70a5cf feat: add postedFromSlackMessageId to multiple note models and create migration for database updates 2025-12-11 18:25:34 +00:00
Nawaz Dhandala
60f292048d feat: add postedFromSlackMessageId to internal and public note models and services for duplicate prevention 2025-12-11 18:22:04 +00:00
Nawaz Dhandala
efc7a99982 feat: optimize emoji reaction handling by checking supported emojis before database queries 2025-12-11 18:03:19 +00:00
Nawaz Dhandala
ab4e3d9aa8 feat: add type annotations for reaction and user authentication data in Slack actions 2025-12-11 15:46:40 +00:00
Nawaz Dhandala
e21c26f2e0 refactor: clean up code formatting and improve debug logging in Slack actions 2025-12-11 15:38:55 +00:00
Nawaz Dhandala
4d1c687412 feat: add WorkspaceNotificationRuleTable for alerts, incidents, and scheduled maintenance in Slack 2025-12-11 15:21:23 +00:00
Nawaz Dhandala
7b2636f46a feat: add tips for using emoji reactions in Slack for alerts, incidents, and scheduled maintenance 2025-12-11 15:19:55 +00:00
Nawaz Dhandala
aa60206beb feat: update confirmation messages to use Slack's link formatting for alerts, incidents, and scheduled maintenance 2025-12-11 13:31:01 +00:00
Nawaz Dhandala
524f0cc867 feat: refactor Slack user ID retrieval to use WorkspaceUserAuthTokenService 2025-12-11 13:27:50 +00:00
Nawaz Dhandala
08c960ba89 feat: enhance Slack request handling by adding raw body support for signature verification 2025-12-11 13:19:37 +00:00
Nawaz Dhandala
4dbb24de77 feat: implement Slack emoji reaction handling for alerts, incidents, and scheduled maintenance 2025-12-11 13:16:57 +00:00
Simon Larsen
7d0d3c31b0 Merge pull request #2172 from tollercode/fix/incident-root-cause-edit-modal
fix: Change form field from description to rootCause
2025-12-11 12:34:38 +00:00
Nils T
32463b370e fix: Change form field from description to rootCause
RootCause Edit Modal wrongly fetched the Incident description in the form and also updates the wrong field.
2025-12-11 12:47:17 +01:00
Nawaz Dhandala
d7d382bcf6 feat: update npm authentication process for OIDC trusted publishing 2025-12-10 15:42:51 +00:00
Nawaz Dhandala
8079f5b74d feat: include status page group name in resource selection 2025-12-10 12:42:27 +00:00
Nawaz Dhandala
a08b551139 fix: allow default behavior for opening links in a new tab 2025-12-10 12:38:43 +00:00
Nawaz Dhandala
4f73e60d9b chore: bump version to 9.2.14 2025-12-10 12:34:20 +00:00
Nawaz Dhandala
f163390970 feat: include status page group name in event resource display for announcements, incidents, and scheduled events 2025-12-10 12:34:08 +00:00
Nawaz Dhandala
eea9c2788b Refactor: Remove Copilot tools and related utilities
- 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.
2025-12-10 11:42:31 +00:00
Nawaz Dhandala
210eb82369 fix: update resource grouping output to use <br/> for HTML rendering 2025-12-10 11:36:42 +00:00
Nawaz Dhandala
e9a02b5579 chore: bump version to 9.2.13 2025-12-10 11:28:47 +00:00
Nawaz Dhandala
34cc0af99e fix: update resource grouping logic to display ungrouped resources on separate lines without "Other" label 2025-12-10 11:28:10 +00:00
Nawaz Dhandala
c2a8431624 feat: implement StatusPageResourceUtil for grouping resources by their group name 2025-12-10 11:24:51 +00:00
Nawaz Dhandala
05b6a1b33b fix: reset log file on each command run to ensure fresh logging 2025-12-09 14:18:50 +00:00
Nawaz Dhandala
de6a58009a fix: handle grep command errors and return user-friendly message for no matches 2025-12-09 14:16:28 +00:00
Nawaz Dhandala
cc9e8f174a fix: add completion requirements to system prompt for improved task execution 2025-12-09 14:15:05 +00:00
Nawaz Dhandala
15026fdc0a fix: add peer flag to dependencies in package-lock.json for better compatibility 2025-12-09 13:32:00 +00:00
Nawaz Dhandala
c6c39d92ac fix: prevent default behavior for middle click and onClick event in Link component 2025-12-09 12:41:54 +00:00
Nawaz Dhandala
e01d67a7d9 fix: improve layout and styling for various account-related pages for better user experience 2025-12-09 12:31:20 +00:00
Simon Larsen
fd5d828a6d Merge pull request #2169 from OneUptime/synthetic-retry-count
Synthetic retry count
2025-12-09 12:23:48 +00:00
Nawaz Dhandala
7a9b46cede fix: remove unnecessary return statement in setTimeout for retry logic 2025-12-09 12:19:25 +00:00
Nawaz Dhandala
f44435e44c fix: format description for retry count on error for better readability; adjust state initialization for advanced options 2025-12-09 12:17:49 +00:00
Nawaz Dhandala
10e1f5b411 chore: bump version to 9.2.12 2025-12-09 12:17:42 +00:00
Nawaz Dhandala
28de37dc1a fix: update retry count label and description for clarity; refine interval filtering logic 2025-12-09 12:17:24 +00:00
Nawaz Dhandala
5e445f918b feat: add advanced options for retry count configuration in synthetic monitors 2025-12-09 12:15:34 +00:00
Nawaz Dhandala
7dd2a7e61d feat: add retry count on error for synthetic monitors 2025-12-09 12:11:05 +00:00
Nawaz Dhandala
c41b74070b chore: bump version to 9.2.11 2025-12-09 11:40:06 +00:00
Nawaz Dhandala
d4a0b2689d refactor: improve formatting and readability of the redactSecrets function in SecretSanitizer 2025-12-09 11:39:40 +00:00
Nawaz Dhandala
e272215c9e refactor: improve code readability by formatting and restructuring functions in OpenAIClient and ApplyPatchTool 2025-12-09 11:38:13 +00:00
Nawaz Dhandala
2ec80061c8 feat: add Discord integration with SendMessageToChannel component 2025-12-09 11:36:52 +00:00
Nawaz Dhandala
f085caed43 fix: update installation instructions for OneUptime app in Microsoft TeamsIntegration 2025-12-09 10:56:26 +00:00
Simon Larsen
c8acc720cf Merge pull request #2168 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2025-12-09 09:02:17 +00:00
simlarsen
4fd5420ddc chore: npm audit fix 2025-12-09 01:51:25 +00:00
Simon Larsen
83a3ecb217 feat: add jest for testing and enhance patch handling in ApplyPatchTool
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
2025-12-08 21:07:51 +00:00
Simon Larsen
777f45dd96 fix: remove temperature from ResponsesRequestPayload and related methods 2025-12-08 20:01:25 +00:00
Simon Larsen
896801dcb0 feat: enhance tool mapping in OpenAIClient and update ResponsesRequestPayload type 2025-12-08 19:58:35 +00:00
Simon Larsen
e1d94955c3 Merge branch 'master' of github.com:OneUptime/oneuptime 2025-12-08 19:54:32 +00:00
Simon Larsen
c30a4d0ed6 fix: update ResponsesRequestPayload to explicitly allow undefined for tool_choice and tools 2025-12-08 19:54:29 +00:00
Simon Larsen
0cc97ca25c refactor: simplify response handling and enhance payload construction in OpenAIClient 2025-12-08 19:51:33 +00:00
Simon Larsen
ec5f7b081d Merge pull request #2166 from OneUptime/snyk-upgrade-bfb9122e9f65a4b4c901546b27a39e9e
[Snyk] Upgrade react-router-dom from 6.30.1 to 6.30.2
2025-12-08 19:47:50 +00:00
Simon Larsen
fda52266ee Merge pull request #2165 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2025-12-08 19:47:43 +00:00
Simon Larsen
7d893bed2e Merge pull request #2167 from OneUptime/sub-templates
Sub templates
2025-12-08 19:47:31 +00:00
Nawaz Dhandala
5c96f160ea fix: remove empty onTabChange handler in subscriber settings 2025-12-08 19:47:16 +00:00
Simon Larsen
a0cc36715e refactor: remove OpenAIResponsesClient and streamline OpenAIClient for improved API handling 2025-12-08 19:46:33 +00:00
Simon Larsen
fca7bac461 feat: implement OpenAIResponsesClient and update CopilotAgent to utilize new API for OpenAI responses 2025-12-08 19:39:24 +00:00
Simon Larsen
a0d15a4c75 feat: enhance model URL resolution for OpenAI and add support for model name in CLI options 2025-12-08 19:36:32 +00:00
Simon Larsen
41a2b5f3d6 feat: rename CLI command and update package dependencies in Copilot 2025-12-08 19:32:10 +00:00
Nawaz Dhandala
455d6dc4a6 fix: remove unused refreshCount state and related logic in subscriber settings 2025-12-08 19:26:06 +00:00
Nawaz Dhandala
2119689c8b fix: remove unnecessary useMemo for modelId string conversion in subscriber settings 2025-12-08 19:25:24 +00:00
Simon Larsen
46e6a37d71 feat: rename CLI command from oneuptime-copilot-agent to oneuptime-copilot 2025-12-08 19:20:09 +00:00
Simon Larsen
11ae53b6de fix: format code for better readability in AnthropicClient.ts 2025-12-08 19:15:36 +00:00
Simon Larsen
a4a2d118e4 feat: add publish workflow for Copilot agent and update package name 2025-12-08 19:15:01 +00:00
Simon Larsen
0ac884900d feat: add support for Ollama model in Copilot agent and update documentation 2025-12-08 19:08:44 +00:00
Nawaz Dhandala
231cee0c9f fix: optimize modelId string conversion in subscriber settings 2025-12-08 19:08:09 +00:00
Simon Larsen
b87f4d0893 feat: enhance model URL handling and tool metadata in Copilot agent 2025-12-08 19:04:36 +00:00
Simon Larsen
b4a43cca0f feat: add support for OpenAI and Anthropic models in Copilot agent 2025-12-08 19:02:28 +00:00
Nawaz Dhandala
c8995aa057 fix: correct singular and plural names in status page subscriber notification template metadata 2025-12-08 18:34:39 +00:00
Nawaz Dhandala
6062e7cd24 feat: refresh status page data on tab change in subscriber settings 2025-12-08 18:33:57 +00:00
Nawaz Dhandala
21ba2d0939 feat: add loading state and warning alerts for custom SMTP and Twilio configuration in subscriber settings 2025-12-08 18:28:10 +00:00
Nawaz Dhandala
84c7e5fc3a feat: simplify SMS notification message format for scheduled maintenance 2025-12-08 17:30:21 +00:00
Nawaz Dhandala
607bdaecbc feat: enhance notification templates to use custom configurations for SMS and email 2025-12-08 17:23:25 +00:00
Nawaz Dhandala
8d9d1b9182 refactor: clean up notification templates and improve code readability 2025-12-08 16:14:44 +00:00
Nawaz Dhandala
a1999f12e7 Enhance notification system with custom templates for incident notes, state changes, and scheduled maintenance
- 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.
2025-12-08 16:11:12 +00:00
Nawaz Dhandala
e4d9263b9f feat: add support for postmortem published event in notification templates 2025-12-08 15:22:44 +00:00
Nawaz Dhandala
4b15893f12 Merge branch 'master' into sub-templates 2025-12-08 14:56:54 +00:00
Nawaz Dhandala
9e72288885 chore: bump version to 9.2.10 2025-12-08 14:56:25 +00:00
Nawaz Dhandala
403f4a1c5b fix: ensure browser session is disposed to prevent zombie processes 2025-12-08 14:55:54 +00:00
Nawaz Dhandala
e328dca641 fix: add tini for proper zombie process reaping in Dockerfile 2025-12-08 14:54:50 +00:00
Nawaz Dhandala
eb7db11cd6 refactor: Remove StatusPageSubscriberNotification utility functions and related types 2025-12-08 14:37:50 +00:00
Nawaz Dhandala
42314e4e3f fix: Update singular and plural names in StatusPageSubscriberNotificationTemplateStatusPage for clarity and link context in SubscriberSettings 2025-12-08 14:03:30 +00:00
Nawaz Dhandala
48ffea35c4 fix: Update singular and plural names in TableMetadata for clarity in StatusPageSubscriberNotificationTemplateStatusPage 2025-12-08 14:02:10 +00:00
Nawaz Dhandala
e2fe58f9cd feat: Add type annotations for function signatures in SubscriberNotificationTemplateView, SubscriberNotificationTemplates, and SubscriberNotificationTemplateVariables for improved type safety 2025-12-08 13:50:52 +00:00
Nawaz Dhandala
3a858e81eb refactor: Improve code formatting and readability in SubscriberNotificationTemplateView and SubscriberNotificationTemplates 2025-12-08 13:48:29 +00:00
Nawaz Dhandala
4d9fd5ee1d feat: Update SubscriberSettings to use Element type for template name and event type fields with custom rendering 2025-12-08 13:47:55 +00:00
Nawaz Dhandala
7ca91c848b feat: Simplify notification templates description for clarity and conciseness 2025-12-08 13:44:59 +00:00
Nawaz Dhandala
424b57db65 feat: Simplify SubscriberNotificationTemplateView by removing unused form steps and fields for improved clarity 2025-12-08 13:42:17 +00:00
Nawaz Dhandala
ac09d45a61 feat: Refactor template variable documentation retrieval to a dedicated utility function for improved maintainability 2025-12-08 13:36:31 +00:00
Nawaz Dhandala
3c7b9dc9ea feat: Enhance SubscriberNotificationTemplateView with detailed event-specific variable documentation and improved template content structure 2025-12-08 13:31:36 +00:00
Nawaz Dhandala
31f73ec551 feat: Add createEditModalWidth prop to SubscriberNotificationTemplates for improved modal sizing 2025-12-08 13:21:04 +00:00
Nawaz Dhandala
b2ca376520 feat: Update template variable documentation for Subscriber Notification Templates to enhance clarity and consistency 2025-12-08 13:20:48 +00:00
Nawaz Dhandala
5fede38237 feat: Refactor variable documentation in Subscriber Notification Templates for improved clarity and structure 2025-12-08 13:18:27 +00:00
Nawaz Dhandala
521cd911ee feat: Remove Card component from Subscriber Notification Templates for cleaner layout 2025-12-08 13:13:21 +00:00
Nawaz Dhandala
c43b191b2e feat: Enhance Subscriber Notification Templates with tabbed interface for notification methods 2025-12-08 13:09:33 +00:00
Nawaz Dhandala
c8e9b7d6cf feat: Add getFooterElement to Field interface and implement in SubscriberNotificationTemplates 2025-12-08 13:06:16 +00:00
Nawaz Dhandala
7ebc0ee4a5 feat: Add status page subscriber notification template status page linking table to API 2025-12-08 12:57:30 +00:00
Nawaz Dhandala
6dceb063f0 feat: Add status page subscriber notification templates to API 2025-12-08 12:55:05 +00:00
Nawaz Dhandala
7c291b58df feat: Update icon in DashboardSideMenu from Email to Bell 2025-12-08 12:52:34 +00:00
Nawaz Dhandala
5759328d6a feat: Enhance documentation for available template variables in subscriber notifications 2025-12-08 12:50:49 +00:00
Nawaz Dhandala
f79b1cec03 feat: Add type annotations for improved type safety in notification services and templates 2025-12-08 12:12:24 +00:00
Nawaz Dhandala
cbe2777e7d feat: Refactor notification template models and services for improved readability and maintainability 2025-12-08 12:10:35 +00:00
Nawaz Dhandala
308efbbddc feat: Add migration for Status Page Subscriber Notification Template and related tables 2025-12-08 12:08:09 +00:00
Nawaz Dhandala
e481cf3488 feat: Enhance Subscriber Settings with Notification Templates and Methods 2025-12-08 11:48:55 +00:00
Nawaz Dhandala
5172dd8e1d feat: Add Subscriber Notification Templates and Views to Settings 2025-12-08 11:43:15 +00:00
Nawaz Dhandala
ec10cefbb2 feat: Implement Status Page Subscriber Notification utilities and templates 2025-12-08 11:34:55 +00:00
Nawaz Dhandala
0933f01082 feat: Add Status Page Subscriber Notification Template and related services
- 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.
2025-12-08 11:33:06 +00:00
snyk-bot
bdd3c5fc40 fix: upgrade react-router-dom from 6.30.1 to 6.30.2
Snyk has created this PR to upgrade react-router-dom from 6.30.1 to 6.30.2.

See this package in npm:
react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/11bb5528-45f9-473c-a635-dc097fd03b3c?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-12-08 09:59:11 +00:00
simlarsen
1e953feeb8 chore: npm audit fix 2025-12-08 01:52:06 +00:00
Simon Larsen
48f86579be Merge pull request #2164 from OneUptime/snyk-upgrade-2d5ead31cbe58e2bd5c3f9e186213162
[Snyk] Upgrade react-router-dom from 6.30.1 to 6.30.2
2025-12-07 20:27:33 +00:00
Simon Larsen
34e1ceec33 Merge pull request #2163 from OneUptime/snyk-upgrade-42f7d10f38ab259b26178999a6727268
[Snyk] Upgrade react-router-dom from 6.30.1 to 6.30.2
2025-12-07 20:27:26 +00:00
Simon Larsen
edba39d475 Merge pull request #2162 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2025-12-07 20:27:21 +00:00
snyk-bot
5385eb2076 fix: upgrade react-router-dom from 6.30.1 to 6.30.2
Snyk has created this PR to upgrade react-router-dom from 6.30.1 to 6.30.2.

See this package in npm:
react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/40b17bc5-1bd4-48b1-88f1-5b4dc1400e80?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-12-07 10:15:16 +00:00
snyk-bot
40597b7647 fix: upgrade react-router-dom from 6.30.1 to 6.30.2
Snyk has created this PR to upgrade react-router-dom from 6.30.1 to 6.30.2.

See this package in npm:
react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/8ca4ee75-8bc5-43a1-a3bc-244ceebf1437?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-12-07 10:15:12 +00:00
simlarsen
2e5cc47522 chore: npm audit fix 2025-12-06 01:45:01 +00:00
Nawaz Dhandala
e6c7eceb57 fix: streamline SMS notification messages for various job handlers 2025-12-05 21:27:07 +00:00
Nawaz Dhandala
ef2bb2f7b6 fix: update Loader component test IDs and change test environment to jsdom 2025-12-05 21:05:11 +00:00
Nawaz Dhandala
049dc02a5f fix: bump version to 9.2.9 2025-12-05 20:39:33 +00:00
Nawaz Dhandala
100f46ab3c fix: update badge styles for previous and current state indicators in StateTransition template 2025-12-05 19:02:52 +00:00
Nawaz Dhandala
e21d080e6f fix: add previous status and color to notification data in SendStatusChangeNotification 2025-12-05 18:55:49 +00:00
Nawaz Dhandala
3740382e76 fix: enhance status badge display with color indicators in StatusTransition template 2025-12-05 18:53:41 +00:00
Nawaz Dhandala
d3864e268b fix: improve table styling and layout in StatusPageSubscriberReport template 2025-12-05 17:42:29 +00:00
Nawaz Dhandala
d3db3fd174 fix: remove outdated reliability copilot workflow file 2025-12-05 13:52:27 +00:00
Nawaz Dhandala
9f9e337350 chore: update version number to 9.2.8 2025-12-05 13:45:39 +00:00
Nawaz Dhandala
1e84ece07e fix: simplify import statements in Queue.ts for better clarity 2025-12-05 13:32:17 +00:00
Nawaz Dhandala
ee4981bd19 fix: enhance job handling in Queue class to manage repeatable jobs 2025-12-05 13:31:25 +00:00
Nawaz Dhandala
f8802eea24 fix: format code for better readability in Landing.spec.ts 2025-12-05 11:10:15 +00:00
Nawaz Dhandala
5b45cab822 fix: update link selector for OneUptime in Landing.spec.ts 2025-12-05 11:03:33 +00:00
Simon Larsen
908f16d769 Merge pull request #2159 from OneUptime/snyk-upgrade-2036816bc1d34768c430f289cb384bca
[Snyk] Upgrade react-router-dom from 6.30.1 to 6.30.2
2025-12-05 08:41:21 +00:00
Simon Larsen
e4852e5799 Merge pull request #2160 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2025-12-05 08:41:14 +00:00
simlarsen
06e672abdd chore: npm audit fix 2025-12-05 01:51:29 +00:00
snyk-bot
efed184276 fix: upgrade react-router-dom from 6.30.1 to 6.30.2
Snyk has created this PR to upgrade react-router-dom from 6.30.1 to 6.30.2.

See this package in npm:
react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/5dd2ef9c-1270-4729-aff4-e407805f7a9c?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-12-05 00:44:09 +00:00
Simon Larsen
9bd14ec3f3 Merge pull request #2158 from OneUptime/monitor-more-info
refactor: implement detailed error handling for request failures acro…
2025-12-04 22:00:18 +00:00
Nawaz Dhandala
9950f1502e refactor: enhance promise handling and error rejection in DNS and traceroute operations 2025-12-04 21:57:42 +00:00
Nawaz Dhandala
43432261e1 refactor: improve formatting and readability in error handling and network monitoring code 2025-12-04 21:54:13 +00:00
Nawaz Dhandala
bd2b8ba1fb refactor: add detailed logging for request failure scenarios in monitor response 2025-12-04 21:48:27 +00:00
Nawaz Dhandala
03742ab6f4 refactor: implement detailed error handling for request failures across monitors 2025-12-04 20:25:55 +00:00
Nawaz Dhandala
7324bff68b refactor: add NetworkPathTrace and NetworkPathMonitor for comprehensive network diagnostics 2025-12-04 19:46:34 +00:00
Nawaz Dhandala
8dbfa524e5 refactor: enhance error message validation in API error handling 2025-12-04 18:15:50 +00:00
Nawaz Dhandala
b2ef34f45f refactor: improve error handling in API class for more meaningful messages 2025-12-04 18:14:54 +00:00
Nawaz Dhandala
1ec9c885f3 refactor: enhance type annotations for SEO-related functions and improve sitemap entry configuration 2025-12-04 15:20:23 +00:00
Nawaz Dhandala
007973aa86 refactor: improve code formatting for better readability in Routes and Sitemap 2025-12-04 15:10:49 +00:00
Nawaz Dhandala
500101350f refactor: update version check logic to prevent re-releasing existing versions 2025-12-04 15:01:36 +00:00
Nawaz Dhandala
524fcae430 chore: update version number to 9.2.7 2025-12-04 15:00:26 +00:00
Nawaz Dhandala
7ec8fc5b1c chore: revert version number to 9.2.5 2025-12-04 15:00:09 +00:00
Nawaz Dhandala
6af3daa98e chore: update version number to 9.2.7 2025-12-04 14:41:16 +00:00
Nawaz Dhandala
1d35614cd3 refactor: correct grammar in the blog call-to-action header for clarity 2025-12-04 14:40:34 +00:00
Nawaz Dhandala
91219c9a96 refactor: correct grammar and improve consistency in meta descriptions and content across multiple views 2025-12-04 14:29:32 +00:00
Nawaz Dhandala
65ca7623d5 refactor: correct pluralization in product descriptions for consistency 2025-12-04 14:29:29 +00:00
Nawaz Dhandala
c569977b45 refactor: enhance sitemap configuration with detailed priority and change frequency settings 2025-12-04 14:28:47 +00:00
Nawaz Dhandala
2263916a9f refactor: implement SEO enhancements with structured metadata and dynamic canonical URLs 2025-12-04 14:26:47 +00:00
Nawaz Dhandala
2cca728dfc refactor: improve accessibility by enhancing skip link and alt text for logo 2025-12-04 14:20:58 +00:00
Nawaz Dhandala
ed687a1639 refactor: enhance alt text for images and wrap main content in <main> tags for improved accessibility 2025-12-04 14:17:52 +00:00
Nawaz Dhandala
270199806c refactor: remove LLM-related Docker workflows and associated files 2025-12-04 13:47:12 +00:00
Nawaz Dhandala
30a3c5e1b2 refactor: improve type definition for getMetricChartType in DashboardChartComponent 2025-12-04 13:38:55 +00:00
Nawaz Dhandala
0c5bd31023 refactor: remove unused chart type determination logic in MonitorMetrics 2025-12-04 13:32:44 +00:00
Nawaz Dhandala
84a75b7af6 chore: bump version to 9.2.6 2025-12-04 13:30:27 +00:00
Nawaz Dhandala
e25be96040 feat: add rounded corners to BarChart rendering for improved aesthetics 2025-12-04 13:29:48 +00:00
Nawaz Dhandala
7777f7d9aa feat: add syncid prop to BarChart component for synchronized chart rendering 2025-12-04 13:15:09 +00:00
Nawaz Dhandala
8e37df3fc0 feat: add dropdown support for chart type selection in Dashboard components 2025-12-04 12:43:55 +00:00
Nawaz Dhandala
88c9e0beb5 feat: add BarChart component and integrate chart type handling in MetricCharts and MonitorMetrics 2025-12-04 12:36:41 +00:00
Nawaz Dhandala
d751537473 feat: add migration for postmortemPostedAt column in Incident table 2025-12-04 12:22:50 +00:00
Nawaz Dhandala
60be6c00e9 chore: bump version to 9.2.5 2025-12-04 11:45:50 +00:00
Nawaz Dhandala
91bf55dc20 refactor: simplify logging for previous status duration and improve code formatting 2025-12-04 09:17:31 +00:00
Nawaz Dhandala
d20a125742 refactor: update previous status duration handling in notification template and logging 2025-12-04 09:14:41 +00:00
Nawaz Dhandala
d10bcd2edd refactor: enhance code readability by adding comments for previous status duration calculation 2025-12-04 08:59:04 +00:00
Nawaz Dhandala
0b32408bf2 refactor: update notification template and improve duration calculation logic 2025-12-04 08:58:42 +00:00
Nawaz Dhandala
269fbd3f24 feat: add dep-check script and remove tsconfig-paths from devDependencies 2025-12-04 08:51:40 +00:00
Nawaz Dhandala
2640ea8c10 refactor: streamline previous status duration calculation in notification 2025-12-03 23:21:07 +00:00
Nawaz Dhandala
f3180d3a83 feat: add previous status duration calculation to status change notification 2025-12-03 23:18:35 +00:00
Nawaz Dhandala
7727fe835f refactor: improve parameter destructuring for createIncidentStateChangedNotification method 2025-12-03 23:17:23 +00:00
Nawaz Dhandala
00fbfbc08e chore: bump version to 9.2.4 2025-12-03 23:08:21 +00:00
Nawaz Dhandala
44d1183066 feat: add monitor destination and request type details to notification templates and services 2025-12-03 23:08:04 +00:00
Nawaz Dhandala
0ccef797ab chore: bump version to 9.2.3 2025-12-03 22:44:46 +00:00
Nawaz Dhandala
9914fb905f fix: update background color for previous and current state/status badges to transparent 2025-12-03 22:43:03 +00:00
Nawaz Dhandala
35ecc19ceb fix: update background color for current state/status badge in notification templates 2025-12-03 22:37:01 +00:00
Nawaz Dhandala
fa0362f739 feat: update notification templates to include state transition details for alerts, incidents, monitors, and scheduled maintenance 2025-12-03 22:36:09 +00:00
Nawaz Dhandala
8ea9084d9e feat: enhance notification templates and logic to include previous state information for alerts, incidents, monitors, and scheduled maintenance 2025-12-03 22:25:45 +00:00
Simon Larsen
eeb31a2250 Merge pull request #2154 from OneUptime/email-improve
Email improve
2025-12-03 21:40:46 +00:00
Nawaz Dhandala
b58c91dbab fix: update version number to 9.2.2 2025-12-03 21:40:11 +00:00
Nawaz Dhandala
868bf4d3e1 fix: remove unnecessary empty row from DetailBoxEnd template for improved clarity 2025-12-03 21:37:20 +00:00
Nawaz Dhandala
a3fc20b393 fix: update incident and event title fields for improved clarity in email templates 2025-12-03 21:14:32 +00:00
Nawaz Dhandala
c8dad04b5c fix: add border-radius to logo images for improved aesthetics 2025-12-03 21:10:15 +00:00
Nawaz Dhandala
ee7db393f8 fix: update email templates to remove empty fields for improved clarity 2025-12-03 21:06:09 +00:00
Nawaz Dhandala
e52da9fef2 fix: remove emojis from email titles for consistency 2025-12-03 21:00:19 +00:00
Nawaz Dhandala
9332df5648 Refactor email templates for improved styling and structure
- 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.
2025-12-03 20:40:46 +00:00
Nawaz Dhandala
120fc2ad71 fix: change field type for subscriber notification from Toggle to Checkbox 2025-12-03 19:35:49 +00:00
Nawaz Dhandala
1a7672748f fix: update title for status page visibility and add conditional display for subscriber notification 2025-12-03 19:35:07 +00:00
Nawaz Dhandala
4868e285b0 fix: simplify description for postmortem published timestamp field 2025-12-03 19:30:08 +00:00
Nawaz Dhandala
f572eb6f93 feat: add subscriber notification fields and migration for postmortem 2025-12-03 19:18:43 +00:00
Nawaz Dhandala
a0868e2f75 feat: add subscriber notification status and resend functionality in postmortem 2025-12-03 19:16:49 +00:00
Nawaz Dhandala
3dfd7a9206 feat: set subscriber notification status to Pending on postmortem published 2025-12-03 19:12:42 +00:00
Nawaz Dhandala
d7582337bf fix: remove ignoreHooks option from incident status update in postmortem notification 2025-12-03 19:11:00 +00:00
Nawaz Dhandala
23043462d7 fix: correct incident number retrieval in postmortem notification logic 2025-12-03 19:08:29 +00:00
Nawaz Dhandala
76d53c53c8 feat: add notifySubscribersOnPostmortemPublished toggle to postmortem form 2025-12-03 19:06:40 +00:00
Nawaz Dhandala
4437e912a3 feat: add notifySubscribersOnPostmortemPublished field and update notification logic 2025-12-03 19:05:28 +00:00
Nawaz Dhandala
937d4675a8 feat: add postmortem notification system for subscribers 2025-12-03 19:03:02 +00:00
Nawaz Dhandala
3cc984f149 Merge branch 'master' into release 2025-12-03 18:53:12 +00:00
Nawaz Dhandala
991928a5a5 fix: update version to 9.2.1 2025-12-03 18:53:05 +00:00
Nawaz Dhandala
6f46812418 fix: remove welcome message sending on bot installation 2025-12-03 18:52:18 +00:00
Nawaz Dhandala
6e20e7f08f fix: correct typo in debug log message for sleep duration in FetchListAndProbe 2025-12-03 18:45:25 +00:00
Nawaz Dhandala
ae406d8ee1 fix: update QEMU setup to use tonistiigi/binfmt:qemu-v10.0.4 in release workflows 2025-12-03 18:42:01 +00:00
Nawaz Dhandala
05920d5b99 fix: improve error logging for Playwright resource closure 2025-12-03 18:33:27 +00:00
Nawaz Dhandala
3a309aabcf fix: enhance browser context closure handling in SyntheticMonitor 2025-12-03 18:31:12 +00:00
Nawaz Dhandala
22a3004a3f fix: simplify error logging in safeCloseBrowserContext and adjust formatting in safeCloseBrowser 2025-12-03 18:27:09 +00:00
Nawaz Dhandala
b8f69fbea3 fix: refactor browser session management in SyntheticMonitor for improved clarity and error handling 2025-12-03 18:25:37 +00:00
Nawaz Dhandala
888aff6392 fix: format migration queries and update index for new migration 2025-12-03 14:42:10 +00:00
Nawaz Dhandala
234de977c4 fix: prevent rendering icon for non-highlighted timeline items 2025-12-03 14:41:39 +00:00
Nawaz Dhandala
fa5f606709 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-03 14:20:38 +00:00
Nawaz Dhandala
b889611d16 fix: update postmortem attachment message for improved visibility and change version to 9.2.0 2025-12-03 14:04:09 +00:00
Nawaz Dhandala
43f0eeb0f8 fix: improve clarity in postmortem status page description and enhance attachment handling messages 2025-12-03 13:57:40 +00:00
Nawaz Dhandala
be311dd8b5 feat: add default value for Postmortem Published At field 2025-12-03 13:56:30 +00:00
Nawaz Dhandala
29428bf660 fix: update placeholder for Postmortem Published At field to improve clarity 2025-12-03 13:55:58 +00:00
Simon Larsen
9eebbe9dfb feat: implement retry logic with configurable attempts and delay for LMStudioClient 2025-12-03 13:51:30 +00:00
Nawaz Dhandala
0dc3bb4f33 feat: add MigrationName1764767371788 for updating OnCallDutyPolicyScheduleLayer defaults 2025-12-03 13:10:12 +00:00
Nawaz Dhandala
adf5a9c1f3 feat: add postmortemPostedAt field and update related components for incident tracking 2025-12-03 13:09:23 +00:00
Nawaz Dhandala
faaded049a feat: add DocumentCheck icon to IconProp and update incident postmortem note icon 2025-12-03 12:58:27 +00:00
Nawaz Dhandala
d02e3882be fix: adjust font size classes for TimelineItem highlight to improve readability 2025-12-03 12:52:20 +00:00
Nawaz Dhandala
e1af84fafa feat: enhance EventItem styling with conditional highlight for improved visibility 2025-12-03 12:51:03 +00:00
Nawaz Dhandala
c371f0a25f feat: add title and highlight properties to TimelineItem for enhanced event display 2025-12-03 12:42:17 +00:00
Nawaz Dhandala
c86d2c2a4a refactor: streamline API route registration and improve code readability 2025-12-03 11:50:17 +00:00
Nawaz Dhandala
a807cc10ab feat: add migration for IncidentPostmortemAttachmentFile table and related constraints 2025-12-03 11:43:31 +00:00
Nawaz Dhandala
6cc480744d Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-03 11:42:07 +00:00
Nawaz Dhandala
7cb6104795 feat: enhance postmortem functionality with attachment handling and status page visibility 2025-12-03 11:42:05 +00:00
Nawaz Dhandala
49dd315501 feat: implement postmortem attachment handling in Incident and StatusPage APIs 2025-12-03 11:34:00 +00:00
Simon Larsen
9ec2b458ed style: remove unnecessary first-letter styling from blog post body 2025-12-03 11:14:50 +00:00
Nawaz Dhandala
702b5811a9 fix: add missing line continuation for workspace-path in usage example 2025-12-02 22:25:59 +00:00
Nawaz Dhandala
7dc7255790 feat: add alias normalization for historical argument names in ReadFileTool 2025-12-02 22:22:19 +00:00
Nawaz Dhandala
1f620e7092 feat: update default max iterations for tool-calling rounds to 100 2025-12-02 21:48:32 +00:00
Nawaz Dhandala
87466246fa Revert "feat: enhance log file path resolution in CLI to support home directory and relative paths"
This reverts commit 12eaa17859.
2025-12-02 21:34:16 +00:00
Nawaz Dhandala
12eaa17859 feat: enhance log file path resolution in CLI to support home directory and relative paths 2025-12-02 21:31:20 +00:00
Nawaz Dhandala
e782ae6b3c feat: enhance logging in CopilotAgent and WorkspaceContext with detailed message contents 2025-12-02 21:17:34 +00:00
Nawaz Dhandala
9ad87328c2 feat: add detailed JSDoc comments for Copilot agent and tools 2025-12-02 21:04:08 +00:00
Nawaz Dhandala
8279294d15 feat: implement oneuptime-copilot-agent CLI with logging and configuration options 2025-12-02 20:52:15 +00:00
Nawaz Dhandala
8c6da51d58 Adopt PascalCase paths in Copilot 2025-12-02 20:34:27 +00:00
Nawaz Dhandala
6d114e3ac4 chore: bump version to 9.1.3 2025-12-02 20:18:07 +00:00
Nawaz Dhandala
44427d3ee7 feat: enhance ReadFileTool with optional line start and end parameters 2025-12-02 14:52:07 +00:00
Nawaz Dhandala
09b0c3b1ef feat: add debug logging instructions and example to README 2025-12-02 14:42:08 +00:00
Nawaz Dhandala
ad597fe5dd feat: update model name and workspace path in usage examples 2025-12-02 14:39:36 +00:00
Nawaz Dhandala
74f17fa45c fix: handle notification skipping for already notified scheduled maintenance events 2025-12-02 14:22:10 +00:00
Nawaz Dhandala
b19a5fa58a feat: add isCreatedState and isScheduledState checks to skip notifications for already notified incidents 2025-12-02 14:21:52 +00:00
Nawaz Dhandala
57abffa113 Merge branch 'master' of https://github.com/OneUptime/oneuptime 2025-12-02 13:06:53 +00:00
Nawaz Dhandala
e8e493ee5a Refactor code structure for improved readability and maintainability 2025-12-02 13:06:50 +00:00
Simon Larsen
e065ebdddc Merge branch 'copilot-v2' 2025-12-02 13:02:32 +00:00
Simon Larsen
39da442892 style: update blog post first paragraph styling for improved readability 2025-12-02 13:02:18 +00:00
Simon Larsen
45b02b30e3 Merge pull request #2152 from OneUptime/chore/npm-audit-fix
chore: npm audit fix
2025-12-02 11:46:04 +00:00
Nawaz Dhandala
30414327f9 feat: add Dockerfile for OneUptime-copilot setup 2025-12-02 11:05:16 +00:00
simlarsen
b99a20a588 chore: npm audit fix 2025-12-02 01:50:48 +00:00
Nawaz Dhandala
22178c282d fix: format command descriptions for consistency in MicrosoftTeamsAPI 2025-12-01 17:13:11 +00:00
Nawaz Dhandala
30389a8d49 feat: add command lists for improved interaction with OneUptime bot in Microsoft Teams 2025-12-01 17:11:37 +00:00
Nawaz Dhandala
7b73cc2ea7 fix: remove trailing spaces in action type definitions 2025-12-01 17:05:30 +00:00
Nawaz Dhandala
6d2c331216 feat: update command triggers for incident and maintenance actions 2025-12-01 17:05:05 +00:00
Nawaz Dhandala
624e4c2296 chore: update version to 9.1.2 2025-12-01 16:38:51 +00:00
Simon Larsen
5e901ee973 Merge pull request #2151 from OneUptime/copilot-v2
Copilot v2
2025-12-01 16:25:22 +00:00
Simon Larsen
a103abc7a9 fix: simplify boolean expression for hasProgressedBeyondScheduledState 2025-12-01 15:45:35 +00:00
Simon Larsen
a7dda0bd53 feat: add logic to update nextSubscriberNotificationBeforeTheEventAt for progressed scheduled maintenance events 2025-12-01 15:45:15 +00:00
Simon Larsen
6948754c86 Merge pull request #2147 from OneUptime/copilot-v2
Copilot v2
2025-12-01 15:21:05 +00:00
Simon Larsen
cc5731bb6d feat: add error handling and logging for missing tool calls and directory entries 2025-12-01 15:20:44 +00:00
Simon Larsen
6761a8a686 Merge pull request #2148 from OneUptime/snyk-upgrade-240d43adaab510cce84165a4f1ccf9b5
[Snyk] Upgrade mailparser from 3.7.5 to 3.9.0
2025-12-01 13:42:14 +00:00
Simon Larsen
6e487199aa refactor: add type annotations and improve type safety across multiple files 2025-12-01 13:41:34 +00:00
snyk-bot
cda5de92ec fix: upgrade mailparser from 3.7.5 to 3.9.0
Snyk has created this PR to upgrade mailparser from 3.7.5 to 3.9.0.

See this package in npm:
mailparser

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/c3622982-05c8-495c-809c-20f301c75f92?utm_source=github&utm_medium=referral&page=upgrade-pr
2025-11-29 12:10:48 +00:00
Simon Larsen
33349341a9 refactor: improve code formatting and readability across multiple files 2025-11-28 21:53:50 +00:00
Simon Larsen
db81fdd3e7 feat: enhance logging throughout the Copilot agent and tools for better traceability 2025-11-28 21:52:33 +00:00
Simon Larsen
d71eba91dd chore: remove vscode-copilot-chat subproject reference 2025-11-28 21:45:07 +00:00
Simon Larsen
682bb805f3 feat: implement AgentLogger for file-based logging with exit handlers 2025-11-28 21:43:15 +00:00
Simon Larsen
7f38e3d417 docs: add usage example for running the agent in development mode 2025-11-28 21:31:08 +00:00
Simon Larsen
559985e93b feat: add tsconfig-paths for improved module resolution in development 2025-11-28 21:28:19 +00:00
Simon Larsen
43588cbe5a refactor: update optional properties to include 'undefined' type in various interfaces 2025-11-28 20:57:17 +00:00
Simon Larsen
0772fce477 refactor: update Telemetry class to use type assertions for loggerProviderConfig and nodeSdkConfiguration
chore: remove unused common type definitions and clean up tsconfig.json
2025-11-28 20:20:09 +00:00
Simon Larsen
78107d8b1c chore: remove unused type definitions and clean up tsconfig.json 2025-11-28 20:06:43 +00:00
Simon Larsen
078af43b0c chore: remove tsconfig.json for OneUptime Copilot Agent 2025-11-28 19:58:11 +00:00
Simon Larsen
9b9aeb2f40 feat: Implement OneUptime Copilot Agent with workspace tools
- 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.
2025-11-28 19:57:52 +00:00
Nawaz Dhandala
67577f5a2b refactor: improve formatting and readability in Incident migration and MonitorService 2025-11-28 17:42:22 +00:00
Nawaz Dhandala
4e808cf382 feat: enhance monitor deletion process to include MetricService cleanup 2025-11-28 17:40:31 +00:00
Nawaz Dhandala
c993b33dab feat: add projectId to MetricService deletion query in incident handling 2025-11-28 17:35:23 +00:00
Nawaz Dhandala
3c5a64024b feat: include projectId in MetricService deletion query for incidents 2025-11-28 17:34:30 +00:00
Nawaz Dhandala
86efe54a29 refactor: remove unused favicon handling from DashboardMasterPage 2025-11-28 17:29:43 +00:00
Simon Larsen
17bf568428 feat: Implement OneUptime Copilot Agent with core functionalities
- 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.
2025-11-28 16:49:46 +00:00
Simon Larsen
26ac698cc7 Remove Copilot package configuration files 2025-11-28 15:43:36 +00:00
Simon Larsen
72bb25e036 chore: migrate VERSION_PREFIX to VERSION and update related workflows 2025-11-28 15:40:24 +00:00
Nawaz Dhandala
1f23742c1f chore: remove vscode-copilot-chat subproject 2025-11-28 14:12:12 +00:00
Nawaz Dhandala
ac66cee4aa feat: add declaredAt field to Incident model with migration and default value 2025-11-28 10:12:43 +00:00
Nawaz Dhandala
66efe2d2fa feat: add declaredAt field to Incident model and update related services and components 2025-11-28 10:10:05 +00:00
Nils T
fb761438ab feat(MicrosoftTeams): enhance refreshTeams to support user-scoped tokens 2025-11-11 10:29:22 +00:00
3303 changed files with 313452 additions and 150905 deletions

View File

@@ -33,6 +33,15 @@ stop
nohup.out*
# Large directories not needed for Docker builds
E2E/playwright-report
E2E/test-results
Terraform
HelmChart
Scripts
.git
GoSDK
encrypted-credentials.tar
encrypted-credentials/

View File

@@ -10,52 +10,6 @@ on:
jobs:
docker-build-accounts:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for accounts service
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./Accounts/Dockerfile .
docker-build-isolated-vm:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for accounts service
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./IsolatedVM/Dockerfile .
docker-build-home:
runs-on: ubuntu-latest
env:
@@ -102,98 +56,6 @@ jobs:
max_attempts: 3
command: sudo docker build --no-cache -f ./Worker/Dockerfile .
docker-build-workflow:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for accounts service
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./Workflow/Dockerfile .
docker-build-api-reference:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for accounts service
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./APIReference/Dockerfile .
docker-build-docs:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for accounts service
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./Docs/Dockerfile .
docker-build-otel-collector:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for accounts service
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./OTelCollector/Dockerfile .
docker-build-app:
runs-on: ubuntu-latest
@@ -220,29 +82,6 @@ jobs:
command: sudo docker build --no-cache -f ./App/Dockerfile .
docker-build-copilot:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for accounts service
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./Copilot/Dockerfile .
docker-build-e2e:
runs-on: ubuntu-latest
env:
@@ -267,52 +106,6 @@ jobs:
max_attempts: 3
command: sudo docker build --no-cache -f ./E2E/Dockerfile .
docker-build-admin-dashboard:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for home
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./AdminDashboard/Dockerfile .
docker-build-dashboard:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for home
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./Dashboard/Dockerfile .
docker-build-probe:
runs-on: ubuntu-latest
env:
@@ -336,52 +129,6 @@ jobs:
max_attempts: 3
command: sudo docker build --no-cache -f ./Probe/Dockerfile .
docker-build-probe-ingest:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image probe api
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./ProbeIngest/Dockerfile .
docker-build-server-monitor-ingest:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image probe api
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./ServerMonitorIngest/Dockerfile .
docker-build-telemetry:
runs-on: ubuntu-latest
env:
@@ -405,61 +152,15 @@ jobs:
max_attempts: 3
command: sudo docker build --no-cache -f ./Telemetry/Dockerfile .
docker-build-incoming-request-ingest:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image probe api
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./IncomingRequestIngest/Dockerfile .
docker-build-status-page:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for home
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./StatusPage/Dockerfile .
docker-build-test-server:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
@@ -473,3 +174,26 @@ jobs:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./TestServer/Dockerfile .
docker-build-ai-agent:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# build image for ai agent service
- name: build docker image
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
command: sudo docker build --no-cache -f ./AIAgent/Dockerfile .

View File

@@ -25,24 +25,7 @@ jobs:
with:
timeout_minutes: 30
max_attempts: 3
command: cd Accounts && npm install && npm run compile && npm run dep-check
compile-isolated-vm:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile IsolatedVM
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd IsolatedVM && npm install && npm run compile && npm run dep-check
command: cd App/FeatureSet/Accounts && npm install && npm run compile && npm run dep-check
compile-common:
runs-on: ubuntu-latest
@@ -111,73 +94,6 @@ jobs:
max_attempts: 3
command: cd Worker && npm install && npm run compile && npm run dep-check
compile-workflow:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile Workflow
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd Workflow && npm install && npm run compile && npm run dep-check
compile-api-reference:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile API Reference
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd APIReference && npm install && npm run compile && npm run dep-check
compile-docs-reference:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile Docs Reference
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd Docs && npm install && npm run compile && npm run dep-check
compile-copilot:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile Copilot
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd Copilot && npm install && npm run compile && npm run dep-check
compile-nginx:
runs-on: ubuntu-latest
@@ -229,7 +145,7 @@ jobs:
with:
timeout_minutes: 30
max_attempts: 3
command: cd AdminDashboard && npm install && npm run compile && npm run dep-check
command: cd App/FeatureSet/AdminDashboard && npm install && npm run compile && npm run dep-check
compile-dashboard:
runs-on: ubuntu-latest
@@ -247,7 +163,7 @@ jobs:
with:
timeout_minutes: 30
max_attempts: 3
command: cd Dashboard && npm install && npm run compile && npm run dep-check
command: cd App/FeatureSet/Dashboard && npm install && npm run compile && npm run dep-check
compile-e2e:
@@ -285,40 +201,6 @@ jobs:
max_attempts: 3
command: cd Probe && npm install && npm run compile && npm run dep-check
compile-probe-ingest:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile Probe Ingest
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd ProbeIngest && npm install && npm run compile && npm run dep-check
compile-server-monitor-ingest:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile Server Monitor Ingest
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd ServerMonitorIngest && npm install && npm run compile && npm run dep-check
compile-telemetry:
runs-on: ubuntu-latest
env:
@@ -337,23 +219,6 @@ jobs:
command: cd Telemetry && npm install && npm run compile && npm run dep-check
compile-incoming-request-ingest:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile Incoming Request Ingest
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd IncomingRequestIngest && npm install && npm run compile && npm run dep-check
compile-status-page:
runs-on: ubuntu-latest
env:
@@ -370,7 +235,7 @@ jobs:
with:
timeout_minutes: 30
max_attempts: 3
command: cd StatusPage && npm install && npm run compile && npm run dep-check
command: cd App/FeatureSet/StatusPage && npm install && npm run compile && npm run dep-check
compile-test-server:
runs-on: ubuntu-latest
@@ -389,7 +254,24 @@ jobs:
max_attempts: 3
command: cd TestServer && npm install && npm run compile && npm run dep-check
compile-mcp:
compile-mobile-app:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install && npm run compile
- name: Compile MobileApp
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd MobileApp && npm install && npm run compile
compile-ai-agent:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
@@ -399,9 +281,26 @@ jobs:
with:
node-version: latest
- run: cd Common && npm install
- name: Compile MCP
- name: Compile AIAgent
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd MCP && npm update @oneuptime/common && npm install && npm run compile && npm run dep-check
command: cd AIAgent && npm install && npm run compile && npm run dep-check
compile-cli:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd Common && npm install
- name: Compile CLI
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd CLI && npm install && npm run compile && npm run dep-check

File diff suppressed because it is too large Load Diff

View File

@@ -1,32 +0,0 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
name: "OneUptime Reliability Copilot"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
# Run every day at midnight UTC
- cron: '0 0 * * *'
jobs:
analyze:
name: Analyze Code
runs-on: ubuntu-latest
steps:
# Run Reliability Copilot in Docker Container
- name: Run Copilot
run: |
docker run --rm \
-e ONEUPTIME_URL="https://test.oneuptime.com" \
-e ONEUPTIME_REPOSITORY_SECRET_KEY="${{ secrets.COPILOT_ONEUPTIME_REPOSITORY_SECRET_KEY }}" \
-e CODE_REPOSITORY_PASSWORD="${{ github.token }}" \
-e CODE_REPOSITORY_USERNAME="simlarsen" \
-e OPENAI_API_KEY="${{ secrets.OPENAI_API_KEY }}" \
--net=host oneuptime/copilot:test

View File

@@ -0,0 +1,143 @@
name: Terraform Provider E2E Tests
permissions:
contents: read
on:
pull_request:
push:
branches:
- main
- master
- develop
workflow_dispatch:
jobs:
terraform-e2e-tests:
runs-on: ubuntu-latest
timeout-minutes: 120
env:
CI_PIPELINE_ID: ${{ github.run_number }}
APP_TAG: latest
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
tool-cache: true
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Additional Disk Cleanup
run: |
echo "=== Initial disk space ==="
df -h
echo "=== Removing unnecessary tools and libraries ==="
# Remove Android SDK (if not already removed)
sudo rm -rf /usr/local/lib/android || true
# Remove .NET SDK and runtime
sudo rm -rf /usr/share/dotnet || true
sudo rm -rf /etc/skel/.dotnet || true
# Remove Haskell/GHC
sudo rm -rf /opt/ghc || true
sudo rm -rf /usr/local/.ghcup || true
# Remove CodeQL
sudo rm -rf /opt/hostedtoolcache/CodeQL || true
# Remove Boost
sudo rm -rf /usr/local/share/boost || true
# Remove Swift
sudo rm -rf /usr/share/swift || true
# Remove Julia
sudo rm -rf /usr/local/julia* || true
# Remove Rust (cargo/rustup)
sudo rm -rf /usr/share/rust || true
sudo rm -rf /home/runner/.rustup || true
sudo rm -rf /home/runner/.cargo || true
# Remove unnecessary hostedtoolcache items
sudo rm -rf /opt/hostedtoolcache/Python || true
sudo rm -rf /opt/hostedtoolcache/PyPy || true
sudo rm -rf /opt/hostedtoolcache/Ruby || true
sudo rm -rf /opt/hostedtoolcache/Java* || true
# Remove additional large directories
sudo rm -rf /usr/share/miniconda || true
sudo rm -rf /usr/local/graalvm || true
sudo rm -rf /usr/local/share/chromium || true
sudo rm -rf /usr/local/share/powershell || true
sudo rm -rf /usr/share/az_* || true
# Remove documentation
sudo rm -rf /usr/share/doc || true
sudo rm -rf /usr/share/man || true
# Remove unnecessary locales
sudo rm -rf /usr/share/locale || true
# Clean apt cache
sudo apt-get clean || true
sudo rm -rf /var/lib/apt/lists/* || true
sudo rm -rf /var/cache/apt/archives/* || true
# Clean tmp
sudo rm -rf /tmp/* || true
echo "=== Moving Docker data to /mnt for more space ==="
# Stop docker
sudo systemctl stop docker || true
# Move docker data directory to /mnt (which has ~70GB)
sudo mv /var/lib/docker /mnt/docker || true
sudo mkdir -p /var/lib/docker || true
sudo mount --bind /mnt/docker /var/lib/docker || true
# Restart docker
sudo systemctl start docker || true
echo "=== Final disk space ==="
df -h
echo "=== Docker info ==="
docker info | grep -E "Docker Root Dir|Storage Driver" || true
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: latest
cache: 'npm'
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: 'stable'
cache: true
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: "1.6.0"
terraform_wrapper: false
- name: Run E2E Tests
uses: nick-fields/retry@v3
with:
timeout_minutes: 60
max_attempts: 3
command: |
chmod +x ./E2E/Terraform/e2e-tests/scripts/*.sh
./E2E/Terraform/e2e-tests/scripts/index.sh

View File

@@ -28,7 +28,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
go-version: 'stable'
cache: true
- name: Install Common dependencies

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,15 @@
name: ProbeIngest Test
name: AIAgent Test
on:
pull_request:
pull_request:
push:
branches-ignore:
- 'hotfix-*' # excludes hotfix branches
- 'hotfix-*'
- 'release'
jobs:
test:
runs-on: ubuntu-latest
env:
@@ -17,5 +19,5 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd ProbeIngest && npm install && npm run test
- run: cd Common && npm install
- run: cd AIAgent && npm install && npm run test

View File

@@ -1,7 +1,7 @@
name: MCP Server Test
name: CLI Test
on:
pull_request:
pull_request:
push:
branches-ignore:
- 'hotfix-*' # excludes hotfix branches
@@ -16,6 +16,6 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
node-version: latest
- run: cd Common && npm install
- run: cd MCP && npm install && npm run test
- run: cd CLI && npm install && npm run test

View File

@@ -1,21 +0,0 @@
name: Incoming Request Ingest Test
on:
pull_request:
push:
branches-ignore:
- 'hotfix-*' # excludes hotfix branches
- 'release'
jobs:
test:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd IncomingRequestIngest && npm install && npm run test

39
.github/workflows/test.mobile-app.yaml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: MobileApp Test
on:
pull_request:
push:
branches-ignore:
- 'hotfix-*' # excludes hotfix branches
- 'release'
jobs:
expo-doctor:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd MobileApp && npm install
- name: Run Expo Doctor
run: cd MobileApp && npx expo-doctor@latest
expo-web-export:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd MobileApp && npm install
- name: Export Web Bundle
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: cd MobileApp && npx expo export --platform web

21
.gitignore vendored
View File

@@ -65,7 +65,7 @@ secret.env
# This file is autogenerated from the template
*/.env
*/Dockerfile
**/Dockerfile
config.env
config.env.tmp
config.env.temp
@@ -116,8 +116,8 @@ InfrastructureAgent/oneuptime-infrastructure-agent
# Terraform generated files
openapi.json
Terraform/**
Terraform/terraform-provider-oneuptime/**
Terraform/openapi.json
TerraformTest/**
terraform-provider-example/**
@@ -127,4 +127,19 @@ MCP/build/
MCP/.env
MCP/node_modules
Dashboard/public/sw.js
App/Dashboard/public/sw.js
.claude/settings.local.json
Common/.claude/settings.local.json
E2E/Terraform/e2e-tests/test-env.sh
# Terraform state and plan files
*.tfplan
tfplan
terraform.tfstate
terraform.tfstate.backup
.terraform/
.terraform.lock.hcl
.claude/worktrees/**
App/FeatureSet/Dashboard/public/sw.js
RFP/

View File

@@ -1,15 +0,0 @@
## OneUptime Copilot
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.

View File

@@ -1,10 +0,0 @@
// This is the configuration file for the oneuptime copilot.
const getCopilotConfig = () => {
return {
// The version of the schema for this configuration file.
schemaVersion: '1.0',
}
}
export default getCopilotConfig;

View File

@@ -1,16 +0,0 @@
# Description: Copilot clones your repository and to improve your code.
# This scirpt runs after the clone process is completed.
# Some of the common tasks you can do here are:
# 1. Install dependencies
# 2. Run linting
# 3. Run tests
# 4. Run build
# 5. Run any other command that you want to run after the clone process is completed.
# If this script fails, copilot will not proceed with the next steps to improve your code.
# This step is to ensure that the code is in a good state before we start improving it.
# If you want to skip this script, you can keep this file empty.
# It's highly recommended to run linting and tests in this script to ensure the code is in a good state.
# This scirpt will run on ubuntu machine. So, make sure the commands you run are compatible with ubuntu.
npm install
npm run lint

View File

@@ -1,13 +0,0 @@
# Description: Copilot will run this script after we make improvements to your code and write it to disk.
# Some of the common tasks you can do here are:
# 1. Run linting
# 2. Run tests
# 3. Run build
# 4. Run any other command that you want to run after the code is changed.
# If this script fails, copilot will not commit the changes to your repository.
# This step is to ensure that the code is in a good state before we commit the changes.
# If you want to skip this script, you can keep this file empty.
# It's highly recommended to run linting and tests in this script to ensure the code is in a good state.
# This scirpt will run on ubuntu machine. So, make sure the commands you run are compatible with ubuntu.
npm run fix

View File

@@ -1 +0,0 @@
# Description: Copilot will run this script after the commit process is completed.

View File

@@ -1,9 +0,0 @@
# Description: Copilot will run this script before we make changes to your code.
# Some of the common tasks you can do here are:
# 1. Install dependencies
# 2. Run any other command that you want to run before the code is changed.
# If this script fails, copilot will not make any changes to the code.
# This step is to ensure that the code is in a good state before we start making changes.
# If you want to skip this script, you can keep this file empty.
# It's highly recommended to run things like installing dependencies in this script.
# This scirpt will run on ubuntu machine. So, make sure the commands you run are compatible with ubuntu.

View File

@@ -1 +0,0 @@
# Description: Copilot will run this script before we commit the changes to your repository.

View File

@@ -49,5 +49,4 @@ LICENSE
marketing/*/*
licenses/*
certifications/*
ApiReference/public/assets/*
JavaScriptSDK/src/cli/server-monitor/out/scripts/prettify/*

84
.vscode/launch.json vendored
View File

@@ -19,20 +19,6 @@
}
],
"configurations": [
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/TestServer",
"name": "Copilot: Debug with Docker",
"port": 9985,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"name": "Debug Infrastructure Agent",
"type": "go",
@@ -119,20 +105,6 @@
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/APIReference",
"name": "API Reference: Debug with Docker",
"port": 8737,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/TestServer",
@@ -161,48 +133,6 @@
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/ProbeIngest",
"name": "ProbeIngest: Debug with Docker",
"port": 9932,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/ServerMonitorIngest",
"name": "ServerMonitorIngest: Debug with Docker",
"port": 9941,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/IncomingRequestIngest",
"name": "IncomingRequestIngest: Debug with Docker",
"port": 9933,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/Telemetry",
@@ -217,20 +147,6 @@
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/IsolatedVM",
"name": "Isolated VM: Debug with Docker",
"port": 9974,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/Workflow",

95
AIAgent/API/Metrics.ts Normal file
View File

@@ -0,0 +1,95 @@
import Express, {
ExpressRequest,
ExpressResponse,
ExpressRouter,
NextFunction,
} from "Common/Server/Utils/Express";
import Response from "Common/Server/Utils/Response";
import { ONEUPTIME_URL } from "../Config";
import HTTPErrorResponse from "Common/Types/API/HTTPErrorResponse";
import HTTPMethod from "Common/Types/API/HTTPMethod";
import HTTPResponse from "Common/Types/API/HTTPResponse";
import URL from "Common/Types/API/URL";
import { JSONObject } from "Common/Types/JSON";
import API from "Common/Utils/API";
import logger from "Common/Server/Utils/Logger";
import AIAgentAPIRequest from "../Utils/AIAgentAPIRequest";
const router: ExpressRouter = Express.getRouter();
/*
* Metrics endpoint for Keda autoscaling
* Returns the number of pending AI agent tasks
*/
router.get(
"/queue-size",
async (
req: ExpressRequest,
res: ExpressResponse,
next: NextFunction,
): Promise<void> => {
try {
/*
* Get the pending task count from OneUptime API
* This is the correct metric - the number of tasks waiting to be processed
*/
const pendingTaskCountUrl: URL = URL.fromString(
ONEUPTIME_URL.toString(),
).addRoute("/api/ai-agent-task/get-pending-task-count");
logger.debug(
"Fetching pending task count from OneUptime API for KEDA scaling",
);
// Use AI Agent authentication (AI Agent key and AI Agent ID)
const requestBody: JSONObject = AIAgentAPIRequest.getDefaultRequestBody();
const result: HTTPResponse<JSONObject> | HTTPErrorResponse =
await API.fetch<JSONObject>({
method: HTTPMethod.POST,
url: pendingTaskCountUrl,
data: requestBody,
headers: {},
});
if (result instanceof HTTPErrorResponse) {
logger.error("Error fetching pending task count from OneUptime API");
logger.error(result);
throw result;
}
logger.debug(
"Pending task count fetched successfully from OneUptime API",
);
logger.debug(result.data);
// Extract count from the response - this is the number of tasks pending to be processed
let queueSize: number = (result.data["count"] as number) || 0;
// if string then convert to number
if (typeof queueSize === "string") {
const parsedQueueSize: number = parseInt(queueSize, 10);
if (!isNaN(parsedQueueSize)) {
queueSize = parsedQueueSize;
} else {
logger.warn(
"Pending task count is not a valid number, defaulting to 0",
);
queueSize = 0;
}
}
logger.debug(`Pending task count for KEDA: ${queueSize}`);
return Response.sendJsonObjectResponse(req, res, {
queueSize: queueSize,
});
} catch (err) {
logger.error("Error in metrics queue-size endpoint");
logger.error(err);
return next(err);
}
},
);
export default router;

View File

@@ -0,0 +1,103 @@
import {
CodeAgent,
CodeAgentType,
getCodeAgentDisplayName,
} from "./CodeAgentInterface";
import OpenCodeAgent from "./OpenCodeAgent";
import logger from "Common/Server/Utils/Logger";
// Factory class to create code agents
export default class CodeAgentFactory {
// Default agent type to use
private static defaultAgentType: CodeAgentType = CodeAgentType.OpenCode;
// Create an agent of the specified type
public static createAgent(type: CodeAgentType): CodeAgent {
logger.debug(`Creating code agent: ${getCodeAgentDisplayName(type)}`);
switch (type) {
case CodeAgentType.OpenCode:
return new OpenCodeAgent();
/*
* Future agents can be added here:
* case CodeAgentType.Goose:
* return new GooseAgent();
* case CodeAgentType.ClaudeCode:
* return new ClaudeCodeAgent();
*/
default:
throw new Error(`Unknown code agent type: ${type}`);
}
}
// Create the default agent
public static createDefaultAgent(): CodeAgent {
return this.createAgent(this.defaultAgentType);
}
// Set the default agent type
public static setDefaultAgentType(type: CodeAgentType): void {
this.defaultAgentType = type;
}
// Get the default agent type
public static getDefaultAgentType(): CodeAgentType {
return this.defaultAgentType;
}
// Get all available agent types
public static getAvailableAgentTypes(): Array<CodeAgentType> {
return Object.values(CodeAgentType);
}
// Check if an agent type is available on the system
public static async isAgentAvailable(type: CodeAgentType): Promise<boolean> {
try {
const agent: CodeAgent = this.createAgent(type);
return await agent.isAvailable();
} catch (error) {
logger.error(`Error checking agent availability for ${type}:`);
logger.error(error);
return false;
}
}
// Get the first available agent
public static async getFirstAvailableAgent(): Promise<CodeAgent | null> {
for (const type of this.getAvailableAgentTypes()) {
if (await this.isAgentAvailable(type)) {
return this.createAgent(type);
}
}
return null;
}
/*
* Create agent with fallback
* Tries to create the specified type, falls back to first available
*/
public static async createAgentWithFallback(
preferredType?: CodeAgentType,
): Promise<CodeAgent> {
// If preferred type is specified and available, use it
if (preferredType && (await this.isAgentAvailable(preferredType))) {
return this.createAgent(preferredType);
}
// Try the default type
if (await this.isAgentAvailable(this.defaultAgentType)) {
return this.createAgent(this.defaultAgentType);
}
// Fall back to first available
const agent: CodeAgent | null = await this.getFirstAvailableAgent();
if (!agent) {
throw new Error("No code agents are available on this system");
}
return agent;
}
}

View File

@@ -0,0 +1,94 @@
import LlmType from "Common/Types/LLM/LlmType";
import TaskLogger from "../Utils/TaskLogger";
// Configuration for the LLM provider
export interface CodeAgentLLMConfig {
llmType: LlmType;
apiKey?: string;
baseUrl?: string;
modelName?: string;
}
// The task to be executed by the code agent
export interface CodeAgentTask {
workingDirectory: string;
prompt: string;
context?: string;
timeoutMs?: number;
servicePath?: string; // Path within the repo where the service code lives
}
// Result from the code agent execution
export interface CodeAgentResult {
success: boolean;
filesModified: Array<string>;
summary: string;
logs: Array<string>;
error?: string;
exitCode?: number;
}
// Progress event from the code agent
export interface CodeAgentProgressEvent {
type: "stdout" | "stderr" | "status";
message: string;
timestamp: Date;
}
// Callback type for progress events
export type CodeAgentProgressCallback = (
event: CodeAgentProgressEvent,
) => void | Promise<void>;
/*
* Abstract interface for code agents
* This allows us to support multiple agents (OpenCode, Goose, Claude Code, etc.)
*/
export interface CodeAgent {
// Name of the agent (e.g., "OpenCode", "Goose", "ClaudeCode")
readonly name: string;
// Initialize the agent with LLM configuration
initialize(config: CodeAgentLLMConfig, logger?: TaskLogger): Promise<void>;
// Execute a task and return the result
executeTask(task: CodeAgentTask): Promise<CodeAgentResult>;
// Set a callback for progress events (streaming output)
onProgress(callback: CodeAgentProgressCallback): void;
// Check if the agent is available on the system
isAvailable(): Promise<boolean>;
// Abort the current task execution
abort(): Promise<void>;
// Clean up any resources used by the agent
cleanup(): Promise<void>;
}
// Enum for supported code agent types
export enum CodeAgentType {
OpenCode = "OpenCode",
/*
* Future agents:
* Goose = "Goose",
* ClaudeCode = "ClaudeCode",
* Aider = "Aider",
*/
}
// Helper function to get display name for agent type
export function getCodeAgentDisplayName(type: CodeAgentType): string {
switch (type) {
case CodeAgentType.OpenCode:
return "OpenCode AI";
default:
return type;
}
}
// Helper function to check if an agent type is valid
export function isValidCodeAgentType(type: string): type is CodeAgentType {
return Object.values(CodeAgentType).includes(type as CodeAgentType);
}

View File

@@ -0,0 +1,15 @@
// Export all code agent related types and classes
export {
CodeAgent,
CodeAgentLLMConfig,
CodeAgentTask,
CodeAgentResult,
CodeAgentProgressEvent,
CodeAgentProgressCallback,
CodeAgentType,
getCodeAgentDisplayName,
isValidCodeAgentType,
} from "./CodeAgentInterface";
export { default as CodeAgentFactory } from "./CodeAgentFactory";
export { default as OpenCodeAgent } from "./OpenCodeAgent";

View File

@@ -0,0 +1,562 @@
import {
CodeAgent,
CodeAgentLLMConfig,
CodeAgentTask,
CodeAgentResult,
CodeAgentProgressCallback,
CodeAgentProgressEvent,
} from "./CodeAgentInterface";
import TaskLogger from "../Utils/TaskLogger";
import Execute from "Common/Server/Utils/Execute";
import LocalFile from "Common/Server/Utils/LocalFile";
import LlmType from "Common/Types/LLM/LlmType";
import logger from "Common/Server/Utils/Logger";
import path from "path";
import { ChildProcess, spawn } from "child_process";
import BadDataException from "Common/Types/Exception/BadDataException";
// OpenCode configuration file structure
interface OpenCodeConfig {
provider?: Record<string, unknown>;
model?: string;
small_model?: string;
disabled_providers?: Array<string>;
enabled_providers?: Array<string>;
}
export default class OpenCodeAgent implements CodeAgent {
public readonly name: string = "OpenCode";
private config: CodeAgentLLMConfig | null = null;
private taskLogger: TaskLogger | null = null;
private progressCallback: CodeAgentProgressCallback | null = null;
private currentProcess: ChildProcess | null = null;
private aborted: boolean = false;
// Track original opencode.json content for restoration
private originalOpenCodeConfig: string | null = null;
private openCodeConfigPath: string | null = null;
// Default timeout: 30 minutes
private static readonly DEFAULT_TIMEOUT_MS: number = 30 * 60 * 1000;
public async initialize(
config: CodeAgentLLMConfig,
taskLogger?: TaskLogger,
): Promise<void> {
this.config = config;
if (taskLogger) {
this.taskLogger = taskLogger;
}
await this.log(`Initializing ${this.name} with ${config.llmType} provider`);
}
public async executeTask(task: CodeAgentTask): Promise<CodeAgentResult> {
if (!this.config) {
return this.createErrorResult(
"Agent not initialized. Call initialize() first.",
);
}
this.aborted = false;
const logs: Array<string> = [];
const timeoutMs: number =
task.timeoutMs || OpenCodeAgent.DEFAULT_TIMEOUT_MS;
try {
await this.log(`Executing task in directory: ${task.workingDirectory}`);
// Create OpenCode config file in the working directory
await this.createOpenCodeConfig(task.workingDirectory);
// Build the prompt
const fullPrompt: string = this.buildFullPrompt(task);
await this.log("Starting OpenCode execution...");
logs.push(`Prompt: ${fullPrompt.substring(0, 500)}...`);
// Execute OpenCode
const output: string = await this.runOpenCode(
task.workingDirectory,
fullPrompt,
timeoutMs,
(event: CodeAgentProgressEvent) => {
logs.push(`[${event.type}] ${event.message}`);
if (this.progressCallback) {
this.progressCallback(event);
}
},
);
logs.push(
`Output: ${output.substring(0, 1000)}${output.length > 1000 ? "..." : ""}`,
);
if (this.aborted) {
return this.createErrorResult("Task was aborted", logs);
}
// Check for modified files
const modifiedFiles: Array<string> = await this.getModifiedFiles(
task.workingDirectory,
);
// Restore or delete opencode.json before returning
await this.restoreOpenCodeConfig();
await this.log(
`OpenCode completed. ${modifiedFiles.length} files modified.`,
);
return {
success: true,
filesModified: modifiedFiles,
summary: this.extractSummary(output),
logs,
exitCode: 0,
};
} catch (error) {
const errorMessage: string =
error instanceof Error ? error.message : String(error);
// Restore or delete opencode.json on error
await this.restoreOpenCodeConfig();
await this.log(`OpenCode execution failed: ${errorMessage}`);
logs.push(`Error: ${errorMessage}`);
return this.createErrorResult(errorMessage, logs);
}
}
public onProgress(callback: CodeAgentProgressCallback): void {
this.progressCallback = callback;
}
public async isAvailable(): Promise<boolean> {
try {
const result: string = await Execute.executeCommandFile({
command: "opencode",
args: ["--version"],
cwd: process.cwd(),
});
logger.debug(`OpenCode version check: ${result}`);
return true;
} catch (error) {
logger.debug("OpenCode is not available:");
logger.debug(error);
return false;
}
}
public async abort(): Promise<void> {
this.aborted = true;
if (this.currentProcess) {
this.currentProcess.kill("SIGTERM");
this.currentProcess = null;
}
await this.log("OpenCode execution aborted");
}
public async cleanup(): Promise<void> {
if (this.currentProcess) {
this.currentProcess.kill("SIGTERM");
this.currentProcess = null;
}
this.config = null;
this.progressCallback = null;
}
// Create OpenCode configuration file in the workspace
private async createOpenCodeConfig(workingDirectory: string): Promise<void> {
if (!this.config) {
throw new Error("Config not initialized");
}
const configPath: string = path.join(workingDirectory, "opencode.json");
this.openCodeConfigPath = configPath;
// Check if opencode.json already exists and backup its content
try {
const existingContent: string = await LocalFile.read(configPath);
this.originalOpenCodeConfig = existingContent;
await this.log("Backed up existing opencode.json from repository");
} catch {
// File doesn't exist, which is the normal case
this.originalOpenCodeConfig = null;
}
const openCodeConfig: OpenCodeConfig = {
model: this.getModelString(),
small_model: this.getSmallModelString(),
};
// Set enabled providers based on LLM type
if (this.config.llmType === LlmType.Anthropic) {
openCodeConfig.enabled_providers = ["anthropic"];
} else if (this.config.llmType === LlmType.OpenAI) {
openCodeConfig.enabled_providers = ["openai"];
}
await LocalFile.write(configPath, JSON.stringify(openCodeConfig, null, 2));
await this.log(`Created OpenCode config at ${configPath}`);
}
// Restore or delete opencode.json after execution
private async restoreOpenCodeConfig(): Promise<void> {
if (!this.openCodeConfigPath) {
return;
}
try {
if (this.originalOpenCodeConfig !== null) {
// Restore the original file content
await LocalFile.write(
this.openCodeConfigPath,
this.originalOpenCodeConfig,
);
await this.log("Restored original opencode.json from repository");
} else {
// Delete the file we created
await LocalFile.deleteFile(this.openCodeConfigPath);
await this.log("Deleted generated opencode.json config file");
}
} catch (error) {
// Log but don't throw - cleanup failure shouldn't fail the task
logger.warn(`Failed to restore/delete opencode.json: ${error}`);
}
// Reset the tracking variables
this.openCodeConfigPath = null;
this.originalOpenCodeConfig = null;
}
// Get the model string in OpenCode format (provider/model)
private getModelString(): string {
if (!this.config) {
throw new Error("Config not initialized");
}
const provider: string = this.getProviderName();
const model: string = this.config.modelName || this.getDefaultModel();
return `${provider}/${model}`;
}
// Get the small model string for quick operations
private getSmallModelString(): string {
if (!this.config) {
throw new Error("Config not initialized");
}
const provider: string = this.getProviderName();
const smallModel: string = this.getDefaultSmallModel();
return `${provider}/${smallModel}`;
}
// Get provider name for OpenCode config
private getProviderName(): string {
if (!this.config) {
return "anthropic";
}
switch (this.config.llmType) {
case LlmType.Anthropic:
return "anthropic";
case LlmType.OpenAI:
return "openai";
case LlmType.Ollama:
return "ollama";
default:
throw new BadDataException("Unsupported LLM type for OpenCode agent");
}
}
// Get default model based on provider
private getDefaultModel(): string {
if (!this.config) {
return "claude-sonnet-4-20250514";
}
switch (this.config.llmType) {
case LlmType.Anthropic:
return "claude-sonnet-4-20250514";
case LlmType.OpenAI:
return "gpt-4o";
case LlmType.Ollama:
return "llama2";
default:
throw new BadDataException("Unsupported LLM type for OpenCode agent");
}
}
// Get default small model for quick operations
private getDefaultSmallModel(): string {
if (!this.config) {
return "claude-haiku-4-20250514";
}
switch (this.config.llmType) {
case LlmType.Anthropic:
return "claude-haiku-4-20250514";
case LlmType.OpenAI:
return "gpt-4o-mini";
case LlmType.Ollama:
return "llama2";
default:
throw new BadDataException("Unsupported LLM type for OpenCode agent");
}
}
// Build the full prompt including context
private buildFullPrompt(task: CodeAgentTask): string {
let prompt: string = task.prompt;
if (task.context) {
prompt = `${task.context}\n\n${prompt}`;
}
if (task.servicePath) {
prompt = `The service code is located at: ${task.servicePath}\n\n${prompt}`;
}
return prompt;
}
// Run OpenCode in non-interactive mode
private async runOpenCode(
workingDirectory: string,
prompt: string,
timeoutMs: number,
onOutput: (event: CodeAgentProgressEvent) => void,
): Promise<string> {
return new Promise(
(resolve: (value: string) => void, reject: (reason: Error) => void) => {
if (!this.config) {
reject(new Error("Config not initialized"));
return;
}
// Set environment variables for API key
const env: NodeJS.ProcessEnv = { ...process.env };
if (this.config.apiKey) {
switch (this.config.llmType) {
case LlmType.Anthropic:
env["ANTHROPIC_API_KEY"] = this.config.apiKey;
break;
case LlmType.OpenAI:
env["OPENAI_API_KEY"] = this.config.apiKey;
break;
case LlmType.Ollama:
if (this.config.baseUrl) {
env["OLLAMA_HOST"] = this.config.baseUrl;
}
break;
}
}
/*
* Use CLI mode flags to ensure output goes to stdout/stderr instead of TUI
* Pass prompt via stdin using "-" to avoid command line argument issues with long prompts
*/
const args: Array<string> = [
"run",
"--print-logs",
"--log-level",
"DEBUG",
"--format",
"default",
"-", // Read prompt from stdin
];
logger.debug(
`Running: opencode ${args.join(" ")} (prompt via stdin, ${prompt.length} chars)`,
);
const child: ChildProcess = spawn("opencode", args, {
cwd: workingDirectory,
env,
stdio: ["pipe", "pipe", "pipe"],
});
this.currentProcess = child;
// Write prompt to stdin and close it
if (child.stdin) {
child.stdin.write(prompt);
child.stdin.end();
}
let stdout: string = "";
let stderr: string = "";
// Set timeout
const timeout: ReturnType<typeof setTimeout> = setTimeout(() => {
if (child.pid) {
child.kill("SIGTERM");
reject(
new Error(
`OpenCode execution timed out after ${timeoutMs / 1000} seconds`,
),
);
}
}, timeoutMs);
child.stdout?.on("data", (data: Buffer) => {
const text: string = data.toString();
stdout += text;
// Stream to console immediately
const trimmedText: string = text.trim();
if (trimmedText) {
logger.info(`[OpenCode stdout] ${trimmedText}`);
// Stream to task logger for server-side logging
if (this.taskLogger) {
this.taskLogger
.info(`[OpenCode] ${trimmedText}`)
.catch((err: Error) => {
logger.error(`Failed to log OpenCode output: ${err.message}`);
});
}
}
onOutput({
type: "stdout",
message: trimmedText,
timestamp: new Date(),
});
});
child.stderr?.on("data", (data: Buffer) => {
const text: string = data.toString();
stderr += text;
// Stream to console immediately
const trimmedText: string = text.trim();
if (trimmedText) {
logger.warn(`[OpenCode stderr] ${trimmedText}`);
// Stream to task logger for server-side logging
if (this.taskLogger) {
this.taskLogger
.warning(`[OpenCode stderr] ${trimmedText}`)
.catch((err: Error) => {
logger.error(`Failed to log OpenCode stderr: ${err.message}`);
});
}
}
onOutput({
type: "stderr",
message: trimmedText,
timestamp: new Date(),
});
});
child.on("close", (code: number | null) => {
clearTimeout(timeout);
this.currentProcess = null;
if (this.aborted) {
reject(new Error("Execution aborted"));
return;
}
if (code === 0 || code === null) {
resolve(stdout);
} else {
reject(
new Error(
`OpenCode exited with code ${code}. stderr: ${stderr.substring(0, 500)}`,
),
);
}
});
child.on("error", (error: Error) => {
clearTimeout(timeout);
this.currentProcess = null;
reject(error);
});
},
);
}
// Get list of modified files using git
private async getModifiedFiles(
workingDirectory: string,
): Promise<Array<string>> {
try {
const result: string = await Execute.executeCommandFile({
command: "git",
args: ["status", "--porcelain"],
cwd: workingDirectory,
});
if (!result.trim()) {
return [];
}
return result
.split("\n")
.filter((line: string) => {
return line.trim().length > 0;
})
.map((line: string) => {
// Git status format: "XY filename"
return line.substring(3).trim();
});
} catch (error) {
logger.error("Error getting modified files:");
logger.error(error);
return [];
}
}
// Extract summary from OpenCode output
private extractSummary(output: string): string {
// Try to extract a meaningful summary from the output
const lines: Array<string> = output.split("\n").filter((line: string) => {
return line.trim().length > 0;
});
// Return last few meaningful lines as summary
const summaryLines: Array<string> = lines.slice(-5);
return summaryLines.join("\n") || "No summary available";
}
// Create error result helper
private createErrorResult(
errorMessage: string,
logs: Array<string> = [],
): CodeAgentResult {
return {
success: false,
filesModified: [],
summary: "",
logs,
error: errorMessage,
exitCode: 1,
};
}
// Logging helper
private async log(message: string): Promise<void> {
if (this.taskLogger) {
await this.taskLogger.info(`[${this.name}] ${message}`);
} else {
logger.debug(`[${this.name}] ${message}`);
}
}
}

36
AIAgent/Config.ts Normal file
View File

@@ -0,0 +1,36 @@
import URL from "Common/Types/API/URL";
import ObjectID from "Common/Types/ObjectID";
import logger from "Common/Server/Utils/Logger";
import Port from "Common/Types/Port";
if (!process.env["ONEUPTIME_URL"]) {
logger.error("ONEUPTIME_URL is not set");
process.exit();
}
export const ONEUPTIME_URL: URL = URL.fromString(
process.env["ONEUPTIME_URL"] || "https://oneuptime.com",
);
export const AI_AGENT_ID: ObjectID | null = process.env["AI_AGENT_ID"]
? new ObjectID(process.env["AI_AGENT_ID"])
: null;
if (!process.env["AI_AGENT_KEY"]) {
logger.error("AI_AGENT_KEY is not set");
process.exit();
}
export const AI_AGENT_KEY: string = process.env["AI_AGENT_KEY"];
export const AI_AGENT_NAME: string | null =
process.env["AI_AGENT_NAME"] || null;
export const AI_AGENT_DESCRIPTION: string | null =
process.env["AI_AGENT_DESCRIPTION"] || null;
export const HOSTNAME: string = process.env["HOSTNAME"] || "localhost";
export const PORT: Port = new Port(
process.env["PORT"] ? parseInt(process.env["PORT"]) : 3875,
);

View File

@@ -1,15 +1,14 @@
#
# OneUptime-App Dockerfile
# OneUptime-AIAgent Dockerfile
#
# Pull base image nodejs image.
FROM public.ecr.aws/docker/library/node:24.9-alpine3.21
FROM public.ecr.aws/docker/library/node:24.9
RUN mkdir /tmp/npm && chmod 2777 /tmp/npm && chown 1000:1000 /tmp/npm && npm config set cache /tmp/npm --global
RUN npm config set fetch-retries 5
RUN npm config set fetch-retry-mintimeout 100000
RUN npm config set fetch-retry-maxtimeout 600000
RUN npm config set fetch-retry-mintimeout 20000
RUN npm config set fetch-retry-maxtimeout 60000
ARG GIT_SHA
@@ -19,25 +18,32 @@ ARG IS_ENTERPRISE_EDITION=false
ENV GIT_SHA=${GIT_SHA}
ENV APP_VERSION=${APP_VERSION}
ENV IS_ENTERPRISE_EDITION=${IS_ENTERPRISE_EDITION}
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
ENV NODE_OPTIONS="--use-openssl-ca"
## Add Intermediate Certs
COPY ./SslCertificates /usr/local/share/ca-certificates
RUN update-ca-certificates
# IF APP_VERSION is not set, set it to 1.0.0
RUN if [ -z "$APP_VERSION" ]; then export APP_VERSION=1.0.0; fi
# Install bash.
RUN apk add bash && apk add curl
RUN apt-get update
# Install bash.
RUN apt-get install bash -y && apt-get install curl -y
# Install python
RUN apk update && apk add --no-cache --virtual .gyp python3 make g++
# Install OpenCode AI coding assistant
RUN curl -fsSL https://opencode.ai/install | bash
# Add OpenCode to PATH (installed to $HOME/.opencode/bin by default)
ENV PATH="/root/.opencode/bin:${PATH}"
#Use bash shell by default
SHELL ["/bin/bash", "-c"]
RUN mkdir /usr/src
RUN mkdir -p /usr/src
WORKDIR /usr/src/Common
COPY ./Common/package*.json /usr/src/Common/
@@ -46,26 +52,27 @@ RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Comm
RUN npm install
COPY ./Common /usr/src/Common
ENV PRODUCTION=true
WORKDIR /usr/src/app
# Install app dependencies
COPY ./APIReference/package*.json /usr/src/app/
# Set version in ./App/package.json to the APP_VERSION
COPY ./AIAgent/package*.json /usr/src/app/
# Set version in ./AIAgent/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/app/package.json
RUN npm install
# Expose ports.
# - 1446: OneUptime-api-reference
EXPOSE 1446
# - 3875: OneUptime-AIAgent
EXPOSE 3875
{{ if eq .Env.ENVIRONMENT "development" }}
#Run the app
CMD [ "npm", "run", "dev" ]
{{ else }}
# Copy app source
COPY ./APIReference /usr/src/app
COPY ./AIAgent /usr/src/app
# Bundle app source
RUN npm run compile
# Set permission to write logs and cache in case container run as non root

84
AIAgent/Index.ts Normal file
View File

@@ -0,0 +1,84 @@
import { PORT } from "./Config";
import AliveJob from "./Jobs/Alive";
import startTaskProcessingLoop from "./Jobs/ProcessScheduledTasks";
import Register from "./Services/Register";
import MetricsAPI from "./API/Metrics";
import {
getTaskHandlerRegistry,
FixExceptionTaskHandler,
} from "./TaskHandlers/Index";
import { PromiseVoidFunction } from "Common/Types/FunctionTypes";
import logger from "Common/Server/Utils/Logger";
import App from "Common/Server/Utils/StartServer";
import Telemetry from "Common/Server/Utils/Telemetry";
import Express, { ExpressApplication } from "Common/Server/Utils/Express";
import "ejs";
const APP_NAME: string = "ai-agent";
const init: PromiseVoidFunction = async (): Promise<void> => {
try {
// Initialize telemetry
Telemetry.init({
serviceName: APP_NAME,
});
logger.info("AI Agent Service - Starting...");
// init the app
await App.init({
appName: APP_NAME,
port: PORT,
isFrontendApp: false,
statusOptions: {
liveCheck: async () => {},
readyCheck: async () => {},
},
});
// Add metrics API routes for KEDA autoscaling
const app: ExpressApplication = Express.getExpressApp();
app.use("/metrics", MetricsAPI);
// add default routes
await App.addDefaultRoutes();
try {
// Register this AI Agent.
await Register.registerAIAgent();
logger.debug("AI Agent registered");
AliveJob();
// Register task handlers
logger.debug("Registering task handlers...");
const taskHandlerRegistry: ReturnType<typeof getTaskHandlerRegistry> =
getTaskHandlerRegistry();
taskHandlerRegistry.register(new FixExceptionTaskHandler());
logger.debug(
`Registered ${taskHandlerRegistry.getHandlerCount()} task handler(s): ${taskHandlerRegistry.getRegisteredTaskTypes().join(", ")}`,
);
// Start task processing loop (runs in background)
startTaskProcessingLoop().catch((err: Error) => {
logger.error("Task processing loop failed:");
logger.error(err);
});
} catch (err) {
logger.error("Register AI Agent failed");
logger.error(err);
throw err;
}
} catch (err) {
logger.error("App Init Failed:");
logger.error(err);
throw err;
}
};
init().catch((err: Error) => {
logger.error(err);
logger.error("Exiting node process");
process.exit(1);
});

56
AIAgent/Jobs/Alive.ts Normal file
View File

@@ -0,0 +1,56 @@
import { ONEUPTIME_URL } from "../Config";
import Register from "../Services/Register";
import AIAgentAPIRequest from "../Utils/AIAgentAPIRequest";
import URL from "Common/Types/API/URL";
import API from "Common/Utils/API";
import { EVERY_MINUTE } from "Common/Utils/CronTime";
import LocalCache from "Common/Server/Infrastructure/LocalCache";
import BasicCron from "Common/Server/Utils/BasicCron";
import logger from "Common/Server/Utils/Logger";
import HTTPResponse from "Common/Types/API/HTTPResponse";
import { JSONObject } from "Common/Types/JSON";
const InitJob: VoidFunction = (): void => {
BasicCron({
jobName: "AIAgent:Alive",
options: {
schedule: EVERY_MINUTE,
runOnStartup: false,
},
runFunction: async () => {
logger.debug("Checking if AI Agent is alive...");
const aiAgentId: string | undefined = LocalCache.getString(
"AI_AGENT",
"AI_AGENT_ID",
);
if (!aiAgentId) {
logger.warn(
"AI Agent is not registered yet. Skipping alive check. Trying to register AI Agent again...",
);
await Register.registerAIAgent();
return;
}
logger.debug("AI Agent ID: " + aiAgentId.toString());
const aliveUrl: URL = URL.fromString(ONEUPTIME_URL.toString()).addRoute(
"/api/ai-agent/alive",
);
const result: HTTPResponse<JSONObject> = await API.post({
url: aliveUrl,
data: AIAgentAPIRequest.getDefaultRequestBody(),
});
if (result.isSuccess()) {
logger.debug("AI Agent update sent to server successfully.");
} else {
logger.error("Failed to send AI Agent update to server.");
}
},
});
};
export default InitJob;

View File

@@ -0,0 +1,257 @@
import { ONEUPTIME_URL } from "../Config";
import AIAgentAPIRequest from "../Utils/AIAgentAPIRequest";
import AIAgentTaskLog from "../Utils/AIAgentTaskLog";
import TaskLogger from "../Utils/TaskLogger";
import BackendAPI from "../Utils/BackendAPI";
import {
getTaskHandlerRegistry,
TaskContext,
TaskMetadata,
TaskHandler,
TaskResult,
} from "../TaskHandlers/Index";
import TaskHandlerRegistry from "../TaskHandlers/TaskHandlerRegistry";
import URL from "Common/Types/API/URL";
import API from "Common/Utils/API";
import HTTPResponse from "Common/Types/API/HTTPResponse";
import { JSONObject } from "Common/Types/JSON";
import logger from "Common/Server/Utils/Logger";
import AIAgentTaskStatus from "Common/Types/AI/AIAgentTaskStatus";
import AIAgentTaskType from "Common/Types/AI/AIAgentTaskType";
import ObjectID from "Common/Types/ObjectID";
import Sleep from "Common/Types/Sleep";
// Type for task data from the API
interface AIAgentTaskData {
_id: string;
projectId: string;
taskType: AIAgentTaskType;
metadata: TaskMetadata;
createdAt: string;
status?: AIAgentTaskStatus;
}
// Type for API response containing task
interface GetPendingTaskResponse {
task: AIAgentTaskData | null;
}
const SLEEP_WHEN_NO_TASKS_MS: number = 60 * 1000; // 1 minute
type ExecuteTaskFunction = (task: AIAgentTaskData) => Promise<void>;
/**
* Execute an AI Agent task using the registered task handler
*/
const executeTask: ExecuteTaskFunction = async (
task: AIAgentTaskData,
): Promise<void> => {
const taskIdString: string = task._id;
const projectIdString: string = task.projectId;
const taskId: ObjectID = new ObjectID(taskIdString);
const projectId: ObjectID = new ObjectID(projectIdString);
const taskType: AIAgentTaskType = task.taskType;
const metadata: TaskMetadata = task.metadata || {};
const createdAt: Date = new Date(task.createdAt);
// Get the task handler from the registry
const registry: TaskHandlerRegistry = getTaskHandlerRegistry();
const handler: TaskHandler | undefined = registry.getHandler(taskType);
if (!handler) {
throw new Error(`No handler registered for task type: ${taskType}`);
}
// Create task logger
const taskLogger: TaskLogger = new TaskLogger({
taskId: taskIdString,
context: `${handler.name}`,
});
// Create backend API client
const backendAPI: BackendAPI = new BackendAPI();
// Build task context
const context: TaskContext = {
taskId,
projectId,
taskType,
metadata,
logger: taskLogger,
backendAPI,
createdAt,
startedAt: new Date(),
};
try {
// Log handler starting
await taskLogger.info(
`Starting ${handler.name} for task type: ${taskType}`,
);
// Validate metadata if the handler supports it
if (handler.validateMetadata && !handler.validateMetadata(metadata)) {
throw new Error(`Invalid metadata for task type: ${taskType}`);
}
// Execute the task handler
const result: TaskResult = await handler.execute(context);
// Log result
if (result.success) {
await taskLogger.info(`Task completed: ${result.message}`);
if (result.pullRequestsCreated && result.pullRequestsCreated > 0) {
await taskLogger.info(
`Created ${result.pullRequestsCreated} pull request(s): ${result.pullRequestUrls?.join(", ") || ""}`,
);
}
} else {
await taskLogger.warning(`Task did not succeed: ${result.message}`);
}
// Flush all pending logs
await taskLogger.flush();
/*
* If the task was not successful and we want to report it as an error
* Note: Based on user requirements, "no fix found" should be Completed, not Error
* Only throw if there was an actual error (not just "no action taken")
*/
if (!result.success && result.data?.["isError"]) {
throw new Error(result.message);
}
} catch (error) {
// Ensure logs are flushed even on error
await taskLogger.flush();
throw error;
}
};
const startTaskProcessingLoop: () => Promise<void> =
async (): Promise<void> => {
logger.info("Starting AI Agent task processing loop...");
const getPendingTaskUrl: URL = URL.fromString(
ONEUPTIME_URL.toString(),
).addRoute("/api/ai-agent-task/get-pending-task");
const updateTaskStatusUrl: URL = URL.fromString(
ONEUPTIME_URL.toString(),
).addRoute("/api/ai-agent-task/update-task-status");
/* Continuous loop to process tasks */
while (true) {
try {
/* Fetch one scheduled task */
const getPendingTaskResult: HTTPResponse<JSONObject> = await API.post({
url: getPendingTaskUrl,
data: AIAgentAPIRequest.getDefaultRequestBody(),
});
if (!getPendingTaskResult.isSuccess()) {
logger.error("Failed to fetch pending task from server");
logger.debug(
`Sleeping for ${SLEEP_WHEN_NO_TASKS_MS / 1000} seconds before retrying...`,
);
await Sleep.sleep(SLEEP_WHEN_NO_TASKS_MS);
continue;
}
const responseData: GetPendingTaskResponse =
getPendingTaskResult.data as unknown as GetPendingTaskResponse;
const task: AIAgentTaskData | null = responseData.task;
if (!task || !task._id) {
logger.debug("No pending tasks available");
logger.debug(
`Sleeping for ${SLEEP_WHEN_NO_TASKS_MS / 1000} seconds before checking again...`,
);
await Sleep.sleep(SLEEP_WHEN_NO_TASKS_MS);
continue;
}
const taskId: string = task._id;
const taskType: string = task.taskType || "Unknown";
logger.info(`Processing task: ${taskId} (type: ${taskType})`);
try {
/* Mark task as InProgress */
const inProgressResult: HTTPResponse<JSONObject> = await API.post({
url: updateTaskStatusUrl,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
taskId: taskId,
status: AIAgentTaskStatus.InProgress,
},
});
if (!inProgressResult.isSuccess()) {
logger.error(
`Failed to mark task ${taskId} as InProgress. Skipping.`,
);
continue;
}
/* Send task started log */
await AIAgentTaskLog.sendTaskStartedLog(taskId);
/* Execute the task using the handler system */
await executeTask(task);
/* Mark task as Completed */
const completedResult: HTTPResponse<JSONObject> = await API.post({
url: updateTaskStatusUrl,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
taskId: taskId,
status: AIAgentTaskStatus.Completed,
},
});
if (!completedResult.isSuccess()) {
logger.error(`Failed to mark task ${taskId} as Completed`);
} else {
/* Send task completed log */
await AIAgentTaskLog.sendTaskCompletedLog(taskId);
logger.info(`Task completed successfully: ${taskId}`);
}
} catch (error) {
/* Mark task as Error with error message */
const errorMessage: string =
error instanceof Error ? error.message : "Unknown error occurred";
const errorResult: HTTPResponse<JSONObject> = await API.post({
url: updateTaskStatusUrl,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
taskId: taskId,
status: AIAgentTaskStatus.Error,
statusMessage: errorMessage,
},
});
if (!errorResult.isSuccess()) {
logger.error(
`Failed to mark task ${taskId} as Error: ${errorMessage}`,
);
}
/* Send task error log */
await AIAgentTaskLog.sendTaskErrorLog(taskId, errorMessage);
logger.error(`Task failed: ${taskId} - ${errorMessage}`);
logger.error(error);
}
} catch (error) {
logger.error("Error in task processing loop:");
logger.error(error);
logger.debug(
`Sleeping for ${SLEEP_WHEN_NO_TASKS_MS / 1000} seconds before retrying...`,
);
await Sleep.sleep(SLEEP_WHEN_NO_TASKS_MS);
}
}
};
export default startTaskProcessingLoop;

View File

@@ -0,0 +1,127 @@
import {
ONEUPTIME_URL,
AI_AGENT_ID,
AI_AGENT_KEY,
AI_AGENT_NAME,
AI_AGENT_DESCRIPTION,
} from "../Config";
import HTTPResponse from "Common/Types/API/HTTPResponse";
import URL from "Common/Types/API/URL";
import { JSONObject } from "Common/Types/JSON";
import Sleep from "Common/Types/Sleep";
import API from "Common/Utils/API";
import { HasClusterKey } from "Common/Server/EnvironmentConfig";
import LocalCache from "Common/Server/Infrastructure/LocalCache";
import logger from "Common/Server/Utils/Logger";
import ClusterKeyAuthorization from "Common/Server/Middleware/ClusterKeyAuthorization";
export default class Register {
public static async registerAIAgent(): Promise<void> {
// register AI agent with 10 retries and 30 second interval between each retry.
let currentRetry: number = 0;
const maxRetry: number = 10;
const retryIntervalInSeconds: number = 30;
while (currentRetry < maxRetry) {
try {
logger.debug(`Registering AI Agent. Attempt: ${currentRetry + 1}`);
await Register._registerAIAgent();
logger.debug(`AI Agent registered successfully.`);
break;
} catch (error) {
logger.error(
`Failed to register AI Agent. Retrying after ${retryIntervalInSeconds} seconds...`,
);
logger.error(error);
currentRetry++;
await Sleep.sleep(retryIntervalInSeconds * 1000);
}
}
}
private static async _registerAIAgent(): Promise<void> {
if (HasClusterKey) {
// Clustered mode: Auto-register and get ID from server
const aiAgentRegistrationUrl: URL = URL.fromString(
ONEUPTIME_URL.toString(),
).addRoute("/api/ai-agent/register");
logger.debug("Registering AI Agent...");
logger.debug("Sending request to: " + aiAgentRegistrationUrl.toString());
const result: HTTPResponse<JSONObject> = await API.post({
url: aiAgentRegistrationUrl,
data: {
aiAgentKey: AI_AGENT_KEY,
aiAgentName: AI_AGENT_NAME,
aiAgentDescription: AI_AGENT_DESCRIPTION,
clusterKey: ClusterKeyAuthorization.getClusterKey(),
},
});
if (!result.isSuccess()) {
logger.error(
`Failed to register AI Agent. Status: ${result.statusCode}`,
);
logger.error(result.data);
throw new Error(
"Failed to register AI Agent: HTTP " + result.statusCode,
);
}
logger.debug("AI Agent Registered");
logger.debug(result.data);
const aiAgentId: string | undefined = result.data["_id"] as
| string
| undefined;
if (!aiAgentId) {
logger.error("AI Agent ID not found in response");
logger.error(result.data);
throw new Error("AI Agent ID not found in registration response");
}
LocalCache.setString("AI_AGENT", "AI_AGENT_ID", aiAgentId);
} else {
// Non-clustered mode: Validate AI agent by sending alive request
if (!AI_AGENT_ID) {
logger.error("AI_AGENT_ID or ONEUPTIME_SECRET should be set");
return process.exit();
}
const aliveUrl: URL = URL.fromString(ONEUPTIME_URL.toString()).addRoute(
"/api/ai-agent/alive",
);
logger.debug("Registering AI Agent...");
logger.debug("Sending request to: " + aliveUrl.toString());
const result: HTTPResponse<JSONObject> = await API.post({
url: aliveUrl,
data: {
aiAgentKey: AI_AGENT_KEY.toString(),
aiAgentId: AI_AGENT_ID.toString(),
},
});
if (result.isSuccess()) {
LocalCache.setString(
"AI_AGENT",
"AI_AGENT_ID",
AI_AGENT_ID.toString() as string,
);
logger.debug("AI Agent registered successfully");
} else {
throw new Error("Failed to register AI Agent: " + result.statusCode);
}
}
logger.debug(
`AI Agent ID: ${LocalCache.getString("AI_AGENT", "AI_AGENT_ID") || "Unknown"}`,
);
}
}

View File

@@ -0,0 +1,454 @@
import {
BaseTaskHandler,
TaskContext,
TaskResult,
TaskMetadata,
TaskResultData,
} from "./TaskHandlerInterface";
import AIAgentTaskType from "Common/Types/AI/AIAgentTaskType";
import {
LLMConfig,
ExceptionDetails,
CodeRepositoryInfo,
RepositoryToken,
} from "../Utils/BackendAPI";
import RepositoryManager, {
RepositoryConfig,
CloneResult,
} from "../Utils/RepositoryManager";
import PullRequestCreator, {
PullRequestResult,
} from "../Utils/PullRequestCreator";
import WorkspaceManager, { WorkspaceInfo } from "../Utils/WorkspaceManager";
import {
CodeAgentFactory,
CodeAgent,
CodeAgentType,
CodeAgentTask,
CodeAgentResult,
CodeAgentProgressEvent,
CodeAgentLLMConfig,
} from "../CodeAgents/Index";
// Metadata structure for Fix Exception tasks
export interface FixExceptionMetadata extends TaskMetadata {
exceptionId: string;
serviceId?: string;
stackTrace?: string;
errorMessage?: string;
}
export default class FixExceptionTaskHandler extends BaseTaskHandler<FixExceptionMetadata> {
public readonly taskType: AIAgentTaskType = AIAgentTaskType.FixException;
public readonly name: string = "Fix Exception Handler";
// Default timeout for code agent execution (30 minutes)
private static readonly CODE_AGENT_TIMEOUT_MS: number = 30 * 60 * 1000;
public async execute(
context: TaskContext<FixExceptionMetadata>,
): Promise<TaskResult> {
const metadata: FixExceptionMetadata = context.metadata;
await this.log(
context,
`Starting Fix Exception task for exception: ${metadata.exceptionId} (taskId: ${context.taskId.toString()})`,
);
let workspace: WorkspaceInfo | null = null;
try {
// Step 1: Get LLM configuration for the project
await this.log(context, "Fetching LLM provider configuration...");
const llmConfig: LLMConfig = await context.backendAPI.getLLMConfig(
context.projectId.toString(),
);
await this.log(
context,
`Using LLM provider: ${llmConfig.llmType}${llmConfig.modelName ? ` (${llmConfig.modelName})` : ""}`,
);
// Step 2: Get exception details
await this.log(context, "Fetching exception details...");
const exceptionDetails: ExceptionDetails =
await context.backendAPI.getExceptionDetails(metadata.exceptionId);
if (!exceptionDetails.service) {
await this.log(context, "No service linked to this exception", "error");
return this.createFailureResult("No service linked to this exception", {
isError: true,
});
}
await this.log(
context,
`Exception: ${exceptionDetails.exception.message.substring(0, 100)}...`,
);
await this.log(context, `Service: ${exceptionDetails.service.name}`);
// Step 3: Get linked code repositories
await this.log(context, "Finding linked code repositories...");
const repositories: Array<CodeRepositoryInfo> =
await context.backendAPI.getCodeRepositories(
exceptionDetails.service.id,
);
if (repositories.length === 0) {
await this.log(
context,
"No code repositories linked to this service",
"error",
);
return this.createFailureResult(
"No code repositories linked to this service via Service Catalog",
{ isError: true },
);
}
await this.log(
context,
`Found ${repositories.length} linked code repository(ies)`,
);
// Step 4: Create workspace for the task
workspace = await WorkspaceManager.createWorkspace(
context.taskId.toString(),
);
await this.log(context, `Created workspace: ${workspace.workspacePath}`);
// Step 5: Process each repository
const pullRequestUrls: Array<string> = [];
const errors: Array<string> = [];
for (const repo of repositories) {
try {
await this.log(
context,
`Processing repository: ${repo.organizationName}/${repo.repositoryName}`,
);
const prUrl: string | null = await this.processRepository(
context,
repo,
exceptionDetails,
llmConfig,
workspace,
);
if (prUrl) {
pullRequestUrls.push(prUrl);
}
} catch (error) {
const errorMessage: string =
error instanceof Error ? error.message : String(error);
errors.push(
`${repo.organizationName}/${repo.repositoryName}: ${errorMessage}`,
);
await this.log(
context,
`Failed to process repository ${repo.organizationName}/${repo.repositoryName}: ${errorMessage}`,
"error",
);
// Continue with next repository
}
}
// Step 6: Return result
if (pullRequestUrls.length > 0) {
await this.log(
context,
`Successfully created ${pullRequestUrls.length} pull request(s)`,
);
const resultData: TaskResultData = {
pullRequests: pullRequestUrls,
};
if (errors.length > 0) {
resultData.errors = errors;
}
return {
success: true,
message: `Created ${pullRequestUrls.length} pull request(s)`,
pullRequestsCreated: pullRequestUrls.length,
pullRequestUrls,
data: resultData,
};
}
// No PRs created - mark as error
await this.log(
context,
"No fixes could be applied to any repository",
"error",
);
return this.createFailureResult(
errors.length > 0
? `No fixes could be applied. Errors: ${errors.join("; ")}`
: "No fixes could be applied to any repository",
{ isError: true },
);
} catch (error) {
const errorMessage: string =
error instanceof Error ? error.message : String(error);
await this.log(context, `Task failed: ${errorMessage}`, "error");
// Mark as an actual error (not just "no action taken") so task gets Error status
return this.createFailureResult(errorMessage, { isError: true });
} finally {
// Cleanup workspace
if (workspace) {
await this.log(context, "Cleaning up workspace...");
await WorkspaceManager.deleteWorkspace(workspace.workspacePath);
}
// Flush logs
await context.logger.flush();
}
}
// Process a single repository
private async processRepository(
context: TaskContext<FixExceptionMetadata>,
repo: CodeRepositoryInfo,
exceptionDetails: ExceptionDetails,
llmConfig: LLMConfig,
workspace: WorkspaceInfo,
): Promise<string | null> {
// Get access token for the repository
await this.log(
context,
`Getting access token for ${repo.organizationName}/${repo.repositoryName}...`,
);
const tokenData: RepositoryToken =
await context.backendAPI.getRepositoryToken(repo.id);
// Clone the repository
await this.log(
context,
`Cloning repository ${repo.organizationName}/${repo.repositoryName}...`,
);
const repoConfig: RepositoryConfig = {
organizationName: tokenData.organizationName,
repositoryName: tokenData.repositoryName,
token: tokenData.token,
repositoryUrl: tokenData.repositoryUrl,
};
const repoManager: RepositoryManager = new RepositoryManager(
context.logger,
);
const cloneResult: CloneResult = await repoManager.cloneRepository(
repoConfig,
workspace.workspacePath,
);
// Create a fix branch
const branchName: string = `oneuptime-fix-exception-${context.taskId.toString().substring(0, 8)}`;
await this.log(context, `Creating branch: ${branchName}`);
await repoManager.createBranch(cloneResult.repositoryPath, branchName);
// Build the prompt for the code agent
const prompt: string = this.buildFixPrompt(
exceptionDetails,
repo.servicePathInRepository,
);
// Initialize code agent
await this.log(context, "Initializing code agent...");
const agent: CodeAgent = CodeAgentFactory.createAgent(
CodeAgentType.OpenCode,
);
const agentConfig: CodeAgentLLMConfig = {
llmType: llmConfig.llmType,
};
if (llmConfig.apiKey) {
agentConfig.apiKey = llmConfig.apiKey;
}
if (llmConfig.baseUrl) {
agentConfig.baseUrl = llmConfig.baseUrl;
}
if (llmConfig.modelName) {
agentConfig.modelName = llmConfig.modelName;
}
await agent.initialize(agentConfig, context.logger);
// Set up progress callback to log agent output
agent.onProgress((event: CodeAgentProgressEvent) => {
context.logger.logProcessOutput("CodeAgent", event.message);
});
// Execute the code agent
await this.log(context, "Running code agent to fix exception...");
const codeAgentTask: CodeAgentTask = {
workingDirectory: cloneResult.repositoryPath,
prompt,
timeoutMs: FixExceptionTaskHandler.CODE_AGENT_TIMEOUT_MS,
};
if (repo.servicePathInRepository) {
codeAgentTask.servicePath = repo.servicePathInRepository;
}
const agentResult: CodeAgentResult = await agent.executeTask(codeAgentTask);
// Check if any changes were made
if (!agentResult.success || agentResult.filesModified.length === 0) {
await this.log(
context,
`Code agent did not make any changes: ${agentResult.error || agentResult.summary}`,
"warning",
);
await agent.cleanup();
return null;
}
await this.log(
context,
`Code agent modified ${agentResult.filesModified.length} file(s)`,
);
// Add all changes and commit
await this.log(context, "Committing changes...");
await repoManager.addAllChanges(cloneResult.repositoryPath);
const commitMessage: string = this.buildCommitMessage(exceptionDetails);
await repoManager.commitChanges(cloneResult.repositoryPath, commitMessage);
// Push the branch
await this.log(context, `Pushing branch ${branchName}...`);
await repoManager.pushBranch(
cloneResult.repositoryPath,
branchName,
repoConfig,
);
// Create pull request
await this.log(context, "Creating pull request...");
const prCreator: PullRequestCreator = new PullRequestCreator(
context.logger,
);
const prTitle: string = PullRequestCreator.generatePRTitle(
exceptionDetails.exception.message,
);
const prBody: string = PullRequestCreator.generatePRBody({
exceptionMessage: exceptionDetails.exception.message,
exceptionType: exceptionDetails.exception.exceptionType,
stackTrace: exceptionDetails.exception.stackTrace,
serviceName: exceptionDetails.service?.name || "Unknown Service",
summary: agentResult.summary,
});
const prResult: PullRequestResult = await prCreator.createPullRequest({
token: tokenData.token,
organizationName: tokenData.organizationName,
repositoryName: tokenData.repositoryName,
baseBranch: repo.mainBranchName || "main",
headBranch: branchName,
title: prTitle,
body: prBody,
});
await this.log(context, `Pull request created: ${prResult.htmlUrl}`);
// Record the PR in the backend
await context.backendAPI.recordPullRequest({
taskId: context.taskId.toString(),
codeRepositoryId: repo.id,
pullRequestUrl: prResult.htmlUrl,
pullRequestNumber: prResult.number,
pullRequestId: prResult.id,
title: prResult.title,
description: prBody.substring(0, 1000),
headRefName: branchName,
baseRefName: repo.mainBranchName || "main",
});
// Cleanup agent
await agent.cleanup();
return prResult.htmlUrl;
}
// Build the prompt for the code agent
private buildFixPrompt(
exceptionDetails: ExceptionDetails,
servicePathInRepository: string | null,
): string {
let prompt: string = `You are a software engineer fixing a bug in a codebase.
## Exception Information
**Exception Type:** ${exceptionDetails.exception.exceptionType}
**Error Message:**
${exceptionDetails.exception.message}
**Stack Trace:**
\`\`\`
${exceptionDetails.exception.stackTrace}
\`\`\`
## Task
Please analyze the stack trace and fix the exception. Here are the steps to follow:
1. Identify the root cause of the exception from the stack trace
2. Find the relevant source files in the codebase
3. Implement a fix for the issue
4. Make sure your fix handles edge cases appropriately
5. The fix should be minimal and focused - only change what's necessary
## Guidelines
- Do NOT add excessive error handling or logging unless necessary
- Do NOT refactor unrelated code
- Keep the fix simple and targeted
- Preserve existing code style and patterns
- If you cannot determine how to fix the issue, explain why
Please proceed with analyzing and fixing this exception.`;
if (servicePathInRepository) {
prompt = `The service code is located in the \`${servicePathInRepository}\` directory.\n\n${prompt}`;
}
return prompt;
}
// Build commit message for the fix
private buildCommitMessage(exceptionDetails: ExceptionDetails): string {
const shortMessage: string = exceptionDetails.exception.message
.replace(/\n/g, " ")
.replace(/\s+/g, " ")
.trim()
.substring(0, 50);
return `fix: ${shortMessage}
This commit fixes an exception detected by OneUptime.
Exception Type: ${exceptionDetails.exception.exceptionType}
Exception ID: ${exceptionDetails.exception.id}
Automatically generated by OneUptime AI Agent.`;
}
// Validate metadata
public validateMetadata(metadata: FixExceptionMetadata): boolean {
return Boolean(metadata.exceptionId);
}
// Get handler description
public getDescription(): string {
return "Analyzes exceptions detected by OneUptime and attempts to fix them by modifying the source code and creating a pull request.";
}
}

View File

@@ -0,0 +1,16 @@
// Export all task handler related types and classes
export {
TaskHandler,
TaskContext,
TaskResult,
TaskMetadata,
TaskResultData,
BaseTaskHandler,
} from "./TaskHandlerInterface";
export {
default as TaskHandlerRegistry,
getTaskHandlerRegistry,
} from "./TaskHandlerRegistry";
export { default as FixExceptionTaskHandler } from "./FixExceptionTaskHandler";

View File

@@ -0,0 +1,161 @@
import AIAgentTaskType from "Common/Types/AI/AIAgentTaskType";
import ObjectID from "Common/Types/ObjectID";
import TaskLogger from "../Utils/TaskLogger";
import BackendAPI from "../Utils/BackendAPI";
// Base interface for task metadata - handlers should define their own specific metadata types
export interface TaskMetadata {
// All metadata must have at least these optional fields for extensibility
[key: string]: unknown;
}
// Base interface for task result data
export interface TaskResultData {
// Pull requests created (for Fix Exception tasks)
pullRequests?: Array<string>;
// Errors encountered during processing
errors?: Array<string>;
// Flag to indicate if this is an error result (not just "no action taken")
isError?: boolean;
// Additional data fields
[key: string]: unknown;
}
// Context provided to task handlers
export interface TaskContext<TMetadata extends TaskMetadata = TaskMetadata> {
// Task identification
taskId: ObjectID;
projectId: ObjectID;
taskType: AIAgentTaskType;
// Task metadata (varies by task type)
metadata: TMetadata;
// Utilities
logger: TaskLogger;
backendAPI: BackendAPI;
// Task timestamps
createdAt: Date;
startedAt: Date;
}
// Result returned by task handlers
export interface TaskResult {
// Whether the task completed successfully
success: boolean;
// Human-readable message describing the result
message: string;
// Additional data about the result (optional)
data?: TaskResultData;
// Number of PRs created (for Fix Exception tasks)
pullRequestsCreated?: number;
// List of PR URLs created
pullRequestUrls?: Array<string>;
}
// Interface that all task handlers must implement
export interface TaskHandler<TMetadata extends TaskMetadata = TaskMetadata> {
// The type of task this handler processes
readonly taskType: AIAgentTaskType;
// Human-readable name for the handler
readonly name: string;
// Execute the task and return a result
execute(context: TaskContext<TMetadata>): Promise<TaskResult>;
// Check if this handler can process a given task
canHandle(taskType: AIAgentTaskType): boolean;
// Optional: Validate task metadata before execution
validateMetadata?(metadata: TMetadata): boolean;
// Optional: Get a description of what this handler does
getDescription?(): string;
}
// Abstract base class that provides common functionality for task handlers
export abstract class BaseTaskHandler<
TMetadata extends TaskMetadata = TaskMetadata,
> implements TaskHandler<TMetadata>
{
public abstract readonly taskType: AIAgentTaskType;
public abstract readonly name: string;
public abstract execute(context: TaskContext<TMetadata>): Promise<TaskResult>;
public canHandle(taskType: AIAgentTaskType): boolean {
return taskType === this.taskType;
}
// Create a success result
protected createSuccessResult(
message: string,
data?: TaskResultData,
): TaskResult {
const result: TaskResult = {
success: true,
message,
};
if (data) {
result.data = data;
}
return result;
}
// Create a failure result
protected createFailureResult(
message: string,
data?: TaskResultData,
): TaskResult {
const result: TaskResult = {
success: false,
message,
};
if (data) {
result.data = data;
}
return result;
}
// Create a result for when no action was taken
protected createNoActionResult(message: string): TaskResult {
return {
success: true,
message,
pullRequestsCreated: 0,
};
}
// Log to the task logger
protected async log(
context: TaskContext<TMetadata>,
message: string,
level: "info" | "debug" | "warning" | "error" = "info",
): Promise<void> {
switch (level) {
case "debug":
await context.logger.debug(message);
break;
case "warning":
await context.logger.warning(message);
break;
case "error":
await context.logger.error(message);
break;
case "info":
default:
await context.logger.info(message);
break;
}
}
}

View File

@@ -0,0 +1,93 @@
import { TaskHandler } from "./TaskHandlerInterface";
import AIAgentTaskType from "Common/Types/AI/AIAgentTaskType";
import logger from "Common/Server/Utils/Logger";
/*
* Registry for task handlers
* Allows dynamic registration and lookup of handlers by task type
*/
export default class TaskHandlerRegistry {
private static instance: TaskHandlerRegistry | null = null;
private handlers: Map<AIAgentTaskType, TaskHandler> = new Map();
// Private constructor for singleton pattern
private constructor() {}
// Get the singleton instance
public static getInstance(): TaskHandlerRegistry {
if (!TaskHandlerRegistry.instance) {
TaskHandlerRegistry.instance = new TaskHandlerRegistry();
}
return TaskHandlerRegistry.instance;
}
// Reset the singleton (useful for testing)
public static resetInstance(): void {
TaskHandlerRegistry.instance = null;
}
// Register a task handler
public register(handler: TaskHandler): void {
if (this.handlers.has(handler.taskType)) {
logger.warn(
`Overwriting existing handler for task type: ${handler.taskType}`,
);
}
this.handlers.set(handler.taskType, handler);
logger.debug(
`Registered handler "${handler.name}" for task type: ${handler.taskType}`,
);
}
// Register multiple handlers at once
public registerAll(handlers: Array<TaskHandler>): void {
for (const handler of handlers) {
this.register(handler);
}
}
// Unregister a handler
public unregister(taskType: AIAgentTaskType): void {
if (this.handlers.has(taskType)) {
this.handlers.delete(taskType);
logger.debug(`Unregistered handler for task type: ${taskType}`);
}
}
// Get a handler for a specific task type
public getHandler(taskType: AIAgentTaskType): TaskHandler | undefined {
return this.handlers.get(taskType);
}
// Check if a handler exists for a task type
public hasHandler(taskType: AIAgentTaskType): boolean {
return this.handlers.has(taskType);
}
// Get all registered task types
public getRegisteredTaskTypes(): Array<AIAgentTaskType> {
return Array.from(this.handlers.keys());
}
// Get all registered handlers
public getAllHandlers(): Array<TaskHandler> {
return Array.from(this.handlers.values());
}
// Get the number of registered handlers
public getHandlerCount(): number {
return this.handlers.size;
}
// Clear all handlers
public clear(): void {
this.handlers.clear();
logger.debug("Cleared all task handlers");
}
}
// Export a convenience function to get the registry instance
export function getTaskHandlerRegistry(): TaskHandlerRegistry {
return TaskHandlerRegistry.getInstance();
}

17
AIAgent/Utils/AIAgent.ts Normal file
View File

@@ -0,0 +1,17 @@
import BadDataException from "Common/Types/Exception/BadDataException";
import ObjectID from "Common/Types/ObjectID";
import LocalCache from "Common/Server/Infrastructure/LocalCache";
export default class AIAgentUtil {
public static getAIAgentId(): ObjectID {
const id: string | undefined =
LocalCache.getString("AI_AGENT", "AI_AGENT_ID") ||
process.env["AI_AGENT_ID"];
if (!id) {
throw new BadDataException("AI Agent ID not found");
}
return new ObjectID(id);
}
}

View File

@@ -0,0 +1,12 @@
import { AI_AGENT_KEY } from "../Config";
import AIAgentUtil from "./AIAgent";
import { JSONObject } from "Common/Types/JSON";
export default class AIAgentAPIRequest {
public static getDefaultRequestBody(): JSONObject {
return {
aiAgentKey: AI_AGENT_KEY,
aiAgentId: AIAgentUtil.getAIAgentId().toString(),
};
}
}

View File

@@ -0,0 +1,79 @@
import { ONEUPTIME_URL } from "../Config";
import AIAgentAPIRequest from "./AIAgentAPIRequest";
import URL from "Common/Types/API/URL";
import API from "Common/Utils/API";
import HTTPResponse from "Common/Types/API/HTTPResponse";
import { JSONObject } from "Common/Types/JSON";
import LogSeverity from "Common/Types/Log/LogSeverity";
import logger from "Common/Server/Utils/Logger";
export interface SendLogOptions {
taskId: string;
severity: LogSeverity;
message: string;
}
export default class AIAgentTaskLog {
private static createLogUrl: URL | null = null;
private static getCreateLogUrl(): URL {
if (!this.createLogUrl) {
this.createLogUrl = URL.fromString(ONEUPTIME_URL.toString()).addRoute(
"/api/ai-agent-task-log/create-log",
);
}
return this.createLogUrl;
}
public static async sendLog(options: SendLogOptions): Promise<boolean> {
try {
const result: HTTPResponse<JSONObject> = await API.post({
url: this.getCreateLogUrl(),
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
taskId: options.taskId,
severity: options.severity,
message: options.message,
},
});
if (!result.isSuccess()) {
logger.error(`Failed to send log for task ${options.taskId}`);
return false;
}
return true;
} catch (error) {
logger.error(`Error sending log for task ${options.taskId}:`);
logger.error(error);
return false;
}
}
public static async sendTaskStartedLog(taskId: string): Promise<boolean> {
return this.sendLog({
taskId,
severity: LogSeverity.Information,
message: "Task execution started",
});
}
public static async sendTaskCompletedLog(taskId: string): Promise<boolean> {
return this.sendLog({
taskId,
severity: LogSeverity.Information,
message: "Task execution completed successfully",
});
}
public static async sendTaskErrorLog(
taskId: string,
errorMessage: string,
): Promise<boolean> {
return this.sendLog({
taskId,
severity: LogSeverity.Error,
message: `Task execution failed: ${errorMessage}`,
});
}
}

394
AIAgent/Utils/BackendAPI.ts Normal file
View File

@@ -0,0 +1,394 @@
import { ONEUPTIME_URL } from "../Config";
import AIAgentAPIRequest from "./AIAgentAPIRequest";
import URL from "Common/Types/API/URL";
import API from "Common/Utils/API";
import HTTPResponse from "Common/Types/API/HTTPResponse";
import { JSONObject } from "Common/Types/JSON";
import LlmType from "Common/Types/LLM/LlmType";
import AIAgentTaskStatus from "Common/Types/AI/AIAgentTaskStatus";
import logger from "Common/Server/Utils/Logger";
// API Response types
interface LLMConfigResponse {
llmType: LlmType;
apiKey?: string;
baseUrl?: string;
modelName?: string;
message?: string;
}
interface ExceptionResponse {
id: string;
message: string;
stackTrace: string;
exceptionType: string;
fingerprint: string;
}
interface ServiceResponse {
id: string;
name: string;
description: string;
}
interface ExceptionDetailsResponse {
exception: ExceptionResponse;
service: ServiceResponse | null;
message?: string;
}
interface CodeRepositoryResponse {
id: string;
name: string;
repositoryHostedAt: string;
organizationName: string;
repositoryName: string;
mainBranchName: string;
servicePathInRepository: string | null;
gitHubAppInstallationId: string | null;
}
interface CodeRepositoriesResponse {
repositories: Array<CodeRepositoryResponse>;
message?: string;
}
interface RepositoryTokenResponse {
token: string;
expiresAt: string;
repositoryUrl: string;
organizationName: string;
repositoryName: string;
message?: string;
}
interface RecordPullRequestResponse {
success: boolean;
pullRequestId: string;
message?: string;
}
interface UpdateTaskStatusResponse {
success?: boolean;
message?: string;
}
// Exported types
export interface LLMConfig {
llmType: LlmType;
apiKey?: string;
baseUrl?: string;
modelName?: string;
}
export interface ExceptionDetails {
exception: {
id: string;
message: string;
stackTrace: string;
exceptionType: string;
fingerprint: string;
};
service: {
id: string;
name: string;
description: string;
} | null;
}
export interface CodeRepositoryInfo {
id: string;
name: string;
repositoryHostedAt: string;
organizationName: string;
repositoryName: string;
mainBranchName: string;
servicePathInRepository: string | null;
gitHubAppInstallationId: string | null;
}
export interface RepositoryToken {
token: string;
expiresAt: Date;
repositoryUrl: string;
organizationName: string;
repositoryName: string;
}
export interface RecordPullRequestOptions {
taskId: string;
codeRepositoryId: string;
pullRequestUrl: string;
pullRequestNumber?: number;
pullRequestId?: number;
title: string;
description?: string;
headRefName?: string;
baseRefName?: string;
}
export interface RecordPullRequestResult {
success: boolean;
pullRequestId: string;
}
export default class BackendAPI {
private baseUrl: URL;
public constructor() {
this.baseUrl = URL.fromString(ONEUPTIME_URL.toString());
}
// Get LLM configuration for a project
public async getLLMConfig(projectId: string): Promise<LLMConfig> {
const url: URL = URL.fromURL(this.baseUrl).addRoute(
"/api/ai-agent-data/get-llm-config",
);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
projectId: projectId,
},
});
if (!response.isSuccess()) {
const data: LLMConfigResponse =
response.data as unknown as LLMConfigResponse;
const errorMessage: string = data?.message || "Failed to get LLM config";
throw new Error(errorMessage);
}
const data: LLMConfigResponse =
response.data as unknown as LLMConfigResponse;
logger.debug(`Got LLM config for project ${projectId}: ${data.llmType}`);
const llmConfig: LLMConfig = {
llmType: data.llmType,
};
if (data.apiKey) {
llmConfig.apiKey = data.apiKey;
}
if (data.baseUrl) {
llmConfig.baseUrl = data.baseUrl;
}
if (data.modelName) {
llmConfig.modelName = data.modelName;
}
return llmConfig;
}
// Get exception details with telemetry service info
public async getExceptionDetails(
exceptionId: string,
): Promise<ExceptionDetails> {
const url: URL = URL.fromURL(this.baseUrl).addRoute(
"/api/ai-agent-data/get-exception-details",
);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
exceptionId: exceptionId,
},
});
if (!response.isSuccess()) {
const data: ExceptionDetailsResponse =
response.data as unknown as ExceptionDetailsResponse;
const errorMessage: string =
data?.message || "Failed to get exception details";
throw new Error(errorMessage);
}
const data: ExceptionDetailsResponse =
response.data as unknown as ExceptionDetailsResponse;
logger.debug(
`Got exception details for ${exceptionId}: ${data.exception.message.substring(0, 100)}`,
);
return {
exception: {
id: data.exception.id,
message: data.exception.message,
stackTrace: data.exception.stackTrace,
exceptionType: data.exception.exceptionType,
fingerprint: data.exception.fingerprint,
},
service: data.service
? {
id: data.service.id,
name: data.service.name,
description: data.service.description,
}
: null,
};
}
// Get code repositories linked to a service
public async getCodeRepositories(
serviceId: string,
): Promise<Array<CodeRepositoryInfo>> {
const url: URL = URL.fromURL(this.baseUrl).addRoute(
"/api/ai-agent-data/get-code-repositories",
);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
serviceId: serviceId,
},
});
if (!response.isSuccess()) {
const data: CodeRepositoriesResponse =
response.data as unknown as CodeRepositoriesResponse;
const errorMessage: string =
data?.message || "Failed to get code repositories";
throw new Error(errorMessage);
}
const data: CodeRepositoriesResponse =
response.data as unknown as CodeRepositoriesResponse;
logger.debug(
`Got ${data.repositories.length} code repositories for service ${serviceId}`,
);
return data.repositories.map((repo: CodeRepositoryResponse) => {
return {
id: repo.id,
name: repo.name,
repositoryHostedAt: repo.repositoryHostedAt,
organizationName: repo.organizationName,
repositoryName: repo.repositoryName,
mainBranchName: repo.mainBranchName,
servicePathInRepository: repo.servicePathInRepository,
gitHubAppInstallationId: repo.gitHubAppInstallationId,
};
});
}
// Get access token for a code repository
public async getRepositoryToken(
codeRepositoryId: string,
): Promise<RepositoryToken> {
const url: URL = URL.fromURL(this.baseUrl).addRoute(
"/api/ai-agent-data/get-repository-token",
);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
codeRepositoryId: codeRepositoryId,
},
});
if (!response.isSuccess()) {
const data: RepositoryTokenResponse =
response.data as unknown as RepositoryTokenResponse;
const errorMessage: string =
data?.message || "Failed to get repository token";
throw new Error(errorMessage);
}
const data: RepositoryTokenResponse =
response.data as unknown as RepositoryTokenResponse;
logger.debug(
`Got access token for repository ${data.organizationName}/${data.repositoryName}`,
);
return {
token: data.token,
expiresAt: new Date(data.expiresAt),
repositoryUrl: data.repositoryUrl,
organizationName: data.organizationName,
repositoryName: data.repositoryName,
};
}
// Record a pull request created by the AI Agent
public async recordPullRequest(
options: RecordPullRequestOptions,
): Promise<RecordPullRequestResult> {
const url: URL = URL.fromURL(this.baseUrl).addRoute(
"/api/ai-agent-data/record-pull-request",
);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
taskId: options.taskId,
codeRepositoryId: options.codeRepositoryId,
pullRequestUrl: options.pullRequestUrl,
pullRequestNumber: options.pullRequestNumber,
pullRequestId: options.pullRequestId,
title: options.title,
description: options.description,
headRefName: options.headRefName,
baseRefName: options.baseRefName,
},
});
if (!response.isSuccess()) {
const data: RecordPullRequestResponse =
response.data as unknown as RecordPullRequestResponse;
const errorMessage: string =
data?.message || "Failed to record pull request";
throw new Error(errorMessage);
}
const data: RecordPullRequestResponse =
response.data as unknown as RecordPullRequestResponse;
logger.debug(`Recorded pull request: ${options.pullRequestUrl}`);
return {
success: data.success,
pullRequestId: data.pullRequestId,
};
}
// Update task status (wrapper around existing endpoint)
public async updateTaskStatus(
taskId: string,
status: AIAgentTaskStatus,
statusMessage?: string,
): Promise<void> {
const url: URL = URL.fromURL(this.baseUrl).addRoute(
"/api/ai-agent-task/update-task-status",
);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
taskId: taskId,
status: status,
statusMessage: statusMessage,
},
});
if (!response.isSuccess()) {
const data: UpdateTaskStatusResponse =
response.data as unknown as UpdateTaskStatusResponse;
const errorMessage: string =
data?.message || "Failed to update task status";
throw new Error(errorMessage);
}
logger.debug(`Updated task ${taskId} status to ${status}`);
}
}

View File

@@ -0,0 +1,369 @@
import API from "Common/Utils/API";
import HTTPResponse from "Common/Types/API/HTTPResponse";
import HTTPErrorResponse from "Common/Types/API/HTTPErrorResponse";
import URL from "Common/Types/API/URL";
import { JSONObject, JSONArray } from "Common/Types/JSON";
import logger from "Common/Server/Utils/Logger";
import Headers from "Common/Types/API/Headers";
import TaskLogger from "./TaskLogger";
export interface PullRequestOptions {
token: string;
organizationName: string;
repositoryName: string;
baseBranch: string;
headBranch: string;
title: string;
body: string;
draft?: boolean;
}
export interface PullRequestResult {
id: number;
number: number;
url: string;
htmlUrl: string;
state: string;
title: string;
}
export default class PullRequestCreator {
private static readonly GITHUB_API_BASE: string = "https://api.github.com";
private static readonly GITHUB_API_VERSION: string = "2022-11-28";
private logger: TaskLogger | null = null;
public constructor(taskLogger?: TaskLogger) {
if (taskLogger) {
this.logger = taskLogger;
}
}
// Create a pull request on GitHub
public async createPullRequest(
options: PullRequestOptions,
): Promise<PullRequestResult> {
await this.log(
`Creating pull request: ${options.title} (${options.headBranch} -> ${options.baseBranch})`,
);
const url: URL = URL.fromString(
`${PullRequestCreator.GITHUB_API_BASE}/repos/${options.organizationName}/${options.repositoryName}/pulls`,
);
const headers: Headers = this.getHeaders(options.token);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: {
title: options.title,
body: options.body,
head: options.headBranch,
base: options.baseBranch,
draft: options.draft || false,
},
headers,
});
if (!response.isSuccess()) {
const errorData: JSONObject = response.data as JSONObject;
const errorMessage: string =
(errorData["message"] as string) || "Failed to create pull request";
logger.error(`GitHub API error: ${errorMessage}`);
throw new Error(`Failed to create pull request: ${errorMessage}`);
}
const data: JSONObject = response.data as JSONObject;
const result: PullRequestResult = {
id: data["id"] as number,
number: data["number"] as number,
url: data["url"] as string,
htmlUrl: data["html_url"] as string,
state: data["state"] as string,
title: data["title"] as string,
};
await this.log(`Pull request created: ${result.htmlUrl}`);
return result;
}
// Get an existing pull request by number
public async getPullRequest(
token: string,
organizationName: string,
repositoryName: string,
pullNumber: number,
): Promise<PullRequestResult | null> {
const url: URL = URL.fromString(
`${PullRequestCreator.GITHUB_API_BASE}/repos/${organizationName}/${repositoryName}/pulls/${pullNumber}`,
);
const headers: Headers = this.getHeaders(token);
const response: HTTPResponse<JSONObject> = await API.get({
url,
headers,
});
if (!response.isSuccess()) {
return null;
}
const data: JSONObject = response.data as JSONObject;
return {
id: data["id"] as number,
number: data["number"] as number,
url: data["url"] as string,
htmlUrl: data["html_url"] as string,
state: data["state"] as string,
title: data["title"] as string,
};
}
// Check if a pull request already exists for a branch
public async findExistingPullRequest(
token: string,
organizationName: string,
repositoryName: string,
headBranch: string,
baseBranch: string,
): Promise<PullRequestResult | null> {
const url: URL = URL.fromString(
`${PullRequestCreator.GITHUB_API_BASE}/repos/${organizationName}/${repositoryName}/pulls`,
);
const headers: Headers = this.getHeaders(token);
const response: HTTPResponse<JSONArray> | HTTPErrorResponse = await API.get(
{
url,
headers,
params: {
head: `${organizationName}:${headBranch}`,
base: baseBranch,
state: "open",
},
},
);
if (!response.isSuccess()) {
return null;
}
const pulls: JSONArray = response.data as JSONArray;
if (pulls.length > 0) {
const data: JSONObject = pulls[0] as JSONObject;
return {
id: data["id"] as number,
number: data["number"] as number,
url: data["url"] as string,
htmlUrl: data["html_url"] as string,
state: data["state"] as string,
title: data["title"] as string,
};
}
return null;
}
// Update an existing pull request
public async updatePullRequest(
token: string,
organizationName: string,
repositoryName: string,
pullNumber: number,
updates: { title?: string; body?: string; state?: "open" | "closed" },
): Promise<PullRequestResult> {
const url: URL = URL.fromString(
`${PullRequestCreator.GITHUB_API_BASE}/repos/${organizationName}/${repositoryName}/pulls/${pullNumber}`,
);
const headers: Headers = this.getHeaders(token);
const response: HTTPResponse<JSONObject> = await API.patch({
url,
data: updates,
headers,
});
if (!response.isSuccess()) {
const errorData: JSONObject = response.data as JSONObject;
const errorMessage: string =
(errorData["message"] as string) || "Failed to update pull request";
throw new Error(`Failed to update pull request: ${errorMessage}`);
}
const data: JSONObject = response.data as JSONObject;
return {
id: data["id"] as number,
number: data["number"] as number,
url: data["url"] as string,
htmlUrl: data["html_url"] as string,
state: data["state"] as string,
title: data["title"] as string,
};
}
// Add labels to a pull request
public async addLabels(
token: string,
organizationName: string,
repositoryName: string,
issueNumber: number,
labels: Array<string>,
): Promise<void> {
await this.log(`Adding labels to PR #${issueNumber}: ${labels.join(", ")}`);
const url: URL = URL.fromString(
`${PullRequestCreator.GITHUB_API_BASE}/repos/${organizationName}/${repositoryName}/issues/${issueNumber}/labels`,
);
const headers: Headers = this.getHeaders(token);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: { labels },
headers,
});
if (!response.isSuccess()) {
logger.warn(`Failed to add labels to PR #${issueNumber}`);
}
}
// Add reviewers to a pull request
public async requestReviewers(
token: string,
organizationName: string,
repositoryName: string,
pullNumber: number,
reviewers: Array<string>,
teamReviewers?: Array<string>,
): Promise<void> {
await this.log(`Requesting reviewers for PR #${pullNumber}`);
const url: URL = URL.fromString(
`${PullRequestCreator.GITHUB_API_BASE}/repos/${organizationName}/${repositoryName}/pulls/${pullNumber}/requested_reviewers`,
);
const headers: Headers = this.getHeaders(token);
const data: JSONObject = {
reviewers,
};
if (teamReviewers && teamReviewers.length > 0) {
data["team_reviewers"] = teamReviewers;
}
const response: HTTPResponse<JSONObject> = await API.post({
url,
data,
headers,
});
if (!response.isSuccess()) {
logger.warn(`Failed to request reviewers for PR #${pullNumber}`);
}
}
// Add a comment to a pull request
public async addComment(
token: string,
organizationName: string,
repositoryName: string,
issueNumber: number,
comment: string,
): Promise<void> {
await this.log(`Adding comment to PR #${issueNumber}`);
const url: URL = URL.fromString(
`${PullRequestCreator.GITHUB_API_BASE}/repos/${organizationName}/${repositoryName}/issues/${issueNumber}/comments`,
);
const headers: Headers = this.getHeaders(token);
const response: HTTPResponse<JSONObject> = await API.post({
url,
data: { body: comment },
headers,
});
if (!response.isSuccess()) {
logger.warn(`Failed to add comment to PR #${issueNumber}`);
}
}
// Generate PR body from exception details
public static generatePRBody(data: {
exceptionMessage: string;
exceptionType: string;
stackTrace: string;
serviceName: string;
summary: string;
}): string {
return `## Exception Fix
This pull request was automatically generated by OneUptime AI Agent to fix an exception.
### Exception Details
**Service:** ${data.serviceName}
**Type:** ${data.exceptionType}
**Message:** ${data.exceptionMessage}
### Stack Trace
\`\`\`
${data.stackTrace.substring(0, 2000)}${data.stackTrace.length > 2000 ? "\n...(truncated)" : ""}
\`\`\`
### Summary of Changes
${data.summary}
---
*This PR was automatically generated by [OneUptime AI Agent](https://oneuptime.com)*`;
}
// Generate PR title from exception
public static generatePRTitle(exceptionMessage: string): string {
// Truncate and clean the message for use as a title
const cleanMessage: string = exceptionMessage
.replace(/\n/g, " ")
.replace(/\s+/g, " ")
.trim();
const maxLength: number = 70;
if (cleanMessage.length <= maxLength) {
return `fix: ${cleanMessage}`;
}
return `fix: ${cleanMessage.substring(0, maxLength - 3)}...`;
}
// Helper method to get GitHub API headers
private getHeaders(token: string): Headers {
return {
Authorization: `Bearer ${token}`,
Accept: "application/vnd.github+json",
"X-GitHub-Api-Version": PullRequestCreator.GITHUB_API_VERSION,
"Content-Type": "application/json",
};
}
// Helper method for logging
private async log(message: string): Promise<void> {
if (this.logger) {
await this.logger.info(message);
} else {
logger.debug(message);
}
}
}

View File

@@ -0,0 +1,313 @@
import Execute from "Common/Server/Utils/Execute";
import LocalFile from "Common/Server/Utils/LocalFile";
import logger from "Common/Server/Utils/Logger";
import path from "path";
import TaskLogger from "./TaskLogger";
export interface CloneResult {
workingDirectory: string;
repositoryPath: string;
}
export interface RepositoryConfig {
organizationName: string;
repositoryName: string;
token: string;
repositoryUrl?: string;
}
export default class RepositoryManager {
private logger: TaskLogger | null = null;
public constructor(taskLogger?: TaskLogger) {
if (taskLogger) {
this.logger = taskLogger;
}
}
// Clone a repository with token-based authentication
public async cloneRepository(
config: RepositoryConfig,
workDir: string,
): Promise<CloneResult> {
await this.log(
`Cloning repository ${config.organizationName}/${config.repositoryName}...`,
);
// Build the authenticated URL
const authUrl: string = this.buildAuthenticatedUrl(config);
// Ensure the working directory exists
await LocalFile.makeDirectory(workDir);
// Clone the repository
await this.runGitCommand(workDir, ["clone", authUrl]);
const repositoryPath: string = path.join(workDir, config.repositoryName);
await this.log(`Repository cloned to ${repositoryPath}`);
// Set git config for the repository
await this.setGitConfig(repositoryPath);
return {
workingDirectory: workDir,
repositoryPath: repositoryPath,
};
}
// Build URL with embedded token for authentication
private buildAuthenticatedUrl(config: RepositoryConfig): string {
if (config.repositoryUrl) {
// If URL is provided, inject token
const url: URL = new URL(config.repositoryUrl);
url.username = "x-access-token";
url.password = config.token;
return url.toString();
}
// Default to GitHub
return `https://x-access-token:${config.token}@github.com/${config.organizationName}/${config.repositoryName}.git`;
}
// Set git user config for commits
private async setGitConfig(repoPath: string): Promise<void> {
await this.runGitCommand(repoPath, [
"config",
"user.name",
"OneUptime AI Agent",
]);
await this.runGitCommand(repoPath, [
"config",
"user.email",
"ai-agent@oneuptime.com",
]);
}
// Create a new branch
public async createBranch(
repoPath: string,
branchName: string,
): Promise<void> {
await this.log(`Creating branch: ${branchName}`);
await this.runGitCommand(repoPath, ["checkout", "-b", branchName]);
await this.log(`Branch ${branchName} created and checked out`);
}
// Checkout existing branch
public async checkoutBranch(
repoPath: string,
branchName: string,
): Promise<void> {
await this.log(`Checking out branch: ${branchName}`);
await this.runGitCommand(repoPath, ["checkout", branchName]);
}
// Create branch if doesn't exist, or checkout if it does
public async createOrCheckoutBranch(
repoPath: string,
branchName: string,
): Promise<void> {
try {
// Check if branch exists locally
await this.runGitCommand(repoPath, ["rev-parse", "--verify", branchName]);
await this.checkoutBranch(repoPath, branchName);
} catch {
// Branch doesn't exist, create it
await this.createBranch(repoPath, branchName);
}
}
// Add all changes to staging
public async addAllChanges(repoPath: string): Promise<void> {
await this.log("Adding all changes to git staging...");
await this.runGitCommand(repoPath, ["add", "-A"]);
}
// Check if there are any changes to commit
public async hasChanges(repoPath: string): Promise<boolean> {
try {
const status: string = await this.runGitCommand(repoPath, [
"status",
"--porcelain",
]);
return status.trim().length > 0;
} catch (error) {
logger.error("Error checking for changes:");
logger.error(error);
return false;
}
}
// Get list of changed files
public async getChangedFiles(repoPath: string): Promise<Array<string>> {
const status: string = await this.runGitCommand(repoPath, [
"status",
"--porcelain",
]);
if (!status.trim()) {
return [];
}
return status
.split("\n")
.filter((line: string) => {
return line.trim().length > 0;
})
.map((line: string) => {
// Status output format is "XY filename" where XY is the status
return line.substring(3).trim();
});
}
// Commit changes
public async commitChanges(repoPath: string, message: string): Promise<void> {
await this.log(`Committing changes: ${message.substring(0, 50)}...`);
await Execute.executeCommandFile({
command: "git",
args: ["commit", "-m", message],
cwd: repoPath,
});
await this.log("Changes committed successfully");
}
// Push branch to remote
public async pushBranch(
repoPath: string,
branchName: string,
config: RepositoryConfig,
): Promise<void> {
await this.log(`Pushing branch ${branchName} to remote...`);
// Set the remote URL with authentication
const authUrl: string = this.buildAuthenticatedUrl(config);
// Update the remote URL
await this.runGitCommand(repoPath, [
"remote",
"set-url",
"origin",
authUrl,
]);
// Push with tracking
await this.runGitCommand(repoPath, ["push", "-u", "origin", branchName]);
await this.log(`Branch ${branchName} pushed to remote`);
}
// Get the current branch name
public async getCurrentBranch(repoPath: string): Promise<string> {
const branch: string = await this.runGitCommand(repoPath, [
"rev-parse",
"--abbrev-ref",
"HEAD",
]);
return branch.trim();
}
// Get the current commit hash
public async getCurrentCommitHash(repoPath: string): Promise<string> {
const hash: string = await this.runGitCommand(repoPath, [
"rev-parse",
"HEAD",
]);
return hash.trim();
}
// Pull latest changes from remote
public async pullChanges(repoPath: string): Promise<void> {
await this.log("Pulling latest changes from remote...");
await this.runGitCommand(repoPath, ["pull"]);
}
// Discard all local changes
public async discardChanges(repoPath: string): Promise<void> {
await this.log("Discarding all local changes...");
await this.runGitCommand(repoPath, ["checkout", "."]);
await this.runGitCommand(repoPath, ["clean", "-fd"]);
}
// Clean up the repository directory
public async cleanup(workDir: string): Promise<void> {
await this.log(`Cleaning up workspace: ${workDir}`);
try {
await LocalFile.deleteDirectory(workDir);
await this.log("Workspace cleaned up successfully");
} catch (error) {
logger.error(`Error cleaning up workspace ${workDir}:`);
logger.error(error);
}
}
// Get diff of current changes
public async getDiff(repoPath: string): Promise<string> {
try {
const diff: string = await this.runGitCommand(repoPath, ["diff"]);
return diff;
} catch (error) {
logger.error("Error getting diff:");
logger.error(error);
return "";
}
}
// Get staged diff
public async getStagedDiff(repoPath: string): Promise<string> {
try {
const diff: string = await this.runGitCommand(repoPath, [
"diff",
"--staged",
]);
return diff;
} catch (error) {
logger.error("Error getting staged diff:");
logger.error(error);
return "";
}
}
// Helper method to run git commands
private async runGitCommand(
repoPath: string,
args: Array<string>,
): Promise<string> {
const cwd: string = path.resolve(repoPath);
const logArgs: Array<string> = args.map((arg: string) => {
// Mask tokens in URLs
if (arg.includes("x-access-token:")) {
return arg.replace(/x-access-token:[^@]+@/, "x-access-token:***@");
}
return arg.includes(" ") ? `"${arg}"` : arg;
});
logger.debug(`Executing git command in ${cwd}: git ${logArgs.join(" ")}`);
return Execute.executeCommandFile({
command: "git",
args,
cwd,
});
}
// Helper method for logging
private async log(message: string): Promise<void> {
if (this.logger) {
await this.logger.info(message);
} else {
logger.debug(message);
}
}
}

229
AIAgent/Utils/TaskLogger.ts Normal file
View File

@@ -0,0 +1,229 @@
import { ONEUPTIME_URL } from "../Config";
import AIAgentAPIRequest from "./AIAgentAPIRequest";
import URL from "Common/Types/API/URL";
import API from "Common/Utils/API";
import HTTPResponse from "Common/Types/API/HTTPResponse";
import { JSONObject } from "Common/Types/JSON";
import LogSeverity from "Common/Types/Log/LogSeverity";
import logger from "Common/Server/Utils/Logger";
import OneUptimeDate from "Common/Types/Date";
export interface TaskLoggerOptions {
taskId: string;
context?: string;
batchSize?: number;
flushIntervalMs?: number;
}
interface LogEntry {
severity: LogSeverity;
message: string;
timestamp: Date;
}
export default class TaskLogger {
private taskId: string;
private context: string | undefined;
private logBuffer: Array<LogEntry> = [];
private batchSize: number;
private flushIntervalMs: number;
private flushTimer: ReturnType<typeof setInterval> | null = null;
private createLogUrl: URL | null = null;
public constructor(options: TaskLoggerOptions) {
this.taskId = options.taskId;
this.context = options.context;
this.batchSize = options.batchSize || 10;
this.flushIntervalMs = options.flushIntervalMs || 5000; // 5 seconds default
// Start periodic flush timer
this.startFlushTimer();
}
private getCreateLogUrl(): URL {
if (!this.createLogUrl) {
this.createLogUrl = URL.fromString(ONEUPTIME_URL.toString()).addRoute(
"/api/ai-agent-task-log/create-log",
);
}
return this.createLogUrl;
}
private startFlushTimer(): void {
this.flushTimer = setInterval(() => {
this.flush().catch((err: Error) => {
logger.error(`Error flushing logs: ${err.message}`);
});
}, this.flushIntervalMs);
}
private stopFlushTimer(): void {
if (this.flushTimer) {
clearInterval(this.flushTimer);
this.flushTimer = null;
}
}
private formatMessage(
severity: LogSeverity,
message: string,
timestamp: Date,
): string {
const timestampStr: string = OneUptimeDate.toDateTimeLocalString(timestamp);
const severityStr: string = severity.toUpperCase().padEnd(7);
const contextStr: string = this.context ? `[${this.context}] ` : "";
return `[${timestampStr}] [${severityStr}] ${contextStr}${message}`;
}
private addToBuffer(severity: LogSeverity, message: string): void {
const entry: LogEntry = {
severity,
message,
timestamp: OneUptimeDate.getCurrentDate(),
};
this.logBuffer.push(entry);
// Also log locally for debugging
logger.debug(
`[Task ${this.taskId}] ${this.formatMessage(entry.severity, entry.message, entry.timestamp)}`,
);
// Auto-flush if buffer is full
if (this.logBuffer.length >= this.batchSize) {
this.flush().catch((err: Error) => {
logger.error(`Error auto-flushing logs: ${err.message}`);
});
}
}
private async sendLogToServer(
severity: LogSeverity,
message: string,
): Promise<boolean> {
try {
const result: HTTPResponse<JSONObject> = await API.post({
url: this.getCreateLogUrl(),
data: {
...AIAgentAPIRequest.getDefaultRequestBody(),
taskId: this.taskId,
severity: severity,
message: message,
},
});
if (!result.isSuccess()) {
logger.error(`Failed to send log for task ${this.taskId}`);
return false;
}
return true;
} catch (error) {
logger.error(`Error sending log for task ${this.taskId}:`);
logger.error(error);
return false;
}
}
// Public logging methods
public async debug(message: string): Promise<void> {
this.addToBuffer(LogSeverity.Debug, message);
}
public async info(message: string): Promise<void> {
this.addToBuffer(LogSeverity.Information, message);
}
public async warning(message: string): Promise<void> {
this.addToBuffer(LogSeverity.Warning, message);
}
public async error(message: string): Promise<void> {
this.addToBuffer(LogSeverity.Error, message);
// Immediately flush on errors
await this.flush();
}
public async trace(message: string): Promise<void> {
this.addToBuffer(LogSeverity.Trace, message);
}
// Log output from external processes like OpenCode
public async logProcessOutput(
processName: string,
output: string,
): Promise<void> {
const lines: Array<string> = output.split("\n").filter((line: string) => {
return line.trim().length > 0;
});
for (const line of lines) {
this.addToBuffer(LogSeverity.Information, `[${processName}] ${line}`);
}
}
// Log a code block (useful for stack traces, code snippets, etc.)
public async logCodeBlock(
title: string,
code: string,
severity: LogSeverity = LogSeverity.Information,
): Promise<void> {
const formattedCode: string = `${title}:\n\`\`\`\n${code}\n\`\`\``;
this.addToBuffer(severity, formattedCode);
}
// Flush all buffered logs to the server
public async flush(): Promise<void> {
if (this.logBuffer.length === 0) {
return;
}
// Get all entries and clear buffer
const entries: Array<LogEntry> = [...this.logBuffer];
this.logBuffer = [];
// Send each log entry separately to preserve individual log lines
for (const entry of entries) {
const formattedMessage: string = this.formatMessage(
entry.severity,
entry.message,
entry.timestamp,
);
await this.sendLogToServer(entry.severity, formattedMessage);
}
}
// Cleanup method - call when task is done
public async dispose(): Promise<void> {
this.stopFlushTimer();
await this.flush();
}
// Helper methods for common log patterns
public async logStepStart(stepName: string): Promise<void> {
await this.info(`Starting: ${stepName}`);
}
public async logStepComplete(stepName: string): Promise<void> {
await this.info(`Completed: ${stepName}`);
}
public async logStepFailed(stepName: string, error: string): Promise<void> {
await this.error(`Failed: ${stepName} - ${error}`);
}
// Create a child logger with additional context
public createChildLogger(childContext: string): TaskLogger {
const fullContext: string = this.context
? `${this.context}:${childContext}`
: childContext;
return new TaskLogger({
taskId: this.taskId,
context: fullContext,
batchSize: this.batchSize,
flushIntervalMs: this.flushIntervalMs,
});
}
}

View File

@@ -0,0 +1,221 @@
import LocalFile from "Common/Server/Utils/LocalFile";
import logger from "Common/Server/Utils/Logger";
import ObjectID from "Common/Types/ObjectID";
import path from "path";
import os from "os";
export interface WorkspaceInfo {
workspacePath: string;
taskId: string;
createdAt: Date;
}
export default class WorkspaceManager {
private static readonly BASE_TEMP_DIR: string = path.join(
os.tmpdir(),
"oneuptime-ai-agent",
);
// Create a new workspace for a task
public static async createWorkspace(taskId: string): Promise<WorkspaceInfo> {
const timestamp: number = Date.now();
const uniqueId: string = ObjectID.generate().toString().substring(0, 8);
const workspaceName: string = `task-${taskId}-${timestamp}-${uniqueId}`;
const workspacePath: string = path.join(this.BASE_TEMP_DIR, workspaceName);
logger.debug(`Creating workspace: ${workspacePath}`);
// Create the workspace directory
await LocalFile.makeDirectory(workspacePath);
return {
workspacePath,
taskId,
createdAt: new Date(),
};
}
// Create a subdirectory within a workspace
public static async createSubdirectory(
workspacePath: string,
subdirectoryName: string,
): Promise<string> {
const subdirectoryPath: string = path.join(workspacePath, subdirectoryName);
await LocalFile.makeDirectory(subdirectoryPath);
return subdirectoryPath;
}
// Check if workspace exists
public static async workspaceExists(workspacePath: string): Promise<boolean> {
try {
await LocalFile.readDirectory(workspacePath);
return true;
} catch {
return false;
}
}
// Delete a workspace and all its contents
public static async deleteWorkspace(workspacePath: string): Promise<void> {
logger.debug(`Deleting workspace: ${workspacePath}`);
try {
// Verify the path is within our temp directory to prevent accidental deletion
const normalizedPath: string = path.normalize(workspacePath);
const normalizedBase: string = path.normalize(this.BASE_TEMP_DIR);
if (!normalizedPath.startsWith(normalizedBase)) {
throw new Error(
`Security error: Cannot delete path outside workspace base: ${workspacePath}`,
);
}
await LocalFile.deleteDirectory(workspacePath);
logger.debug(`Workspace deleted: ${workspacePath}`);
} catch (error) {
logger.error(`Error deleting workspace ${workspacePath}:`);
logger.error(error);
}
}
// Write a file to workspace
public static async writeFile(
workspacePath: string,
relativePath: string,
content: string,
): Promise<string> {
const filePath: string = path.join(workspacePath, relativePath);
// Ensure parent directory exists
const parentDir: string = path.dirname(filePath);
await LocalFile.makeDirectory(parentDir);
await LocalFile.write(filePath, content);
return filePath;
}
// Read a file from workspace
public static async readFile(
workspacePath: string,
relativePath: string,
): Promise<string> {
const filePath: string = path.join(workspacePath, relativePath);
return LocalFile.read(filePath);
}
// Check if a file exists in workspace
public static async fileExists(
workspacePath: string,
relativePath: string,
): Promise<boolean> {
try {
const filePath: string = path.join(workspacePath, relativePath);
await LocalFile.read(filePath);
return true;
} catch {
return false;
}
}
// Delete a file from workspace
public static async deleteFile(
workspacePath: string,
relativePath: string,
): Promise<void> {
const filePath: string = path.join(workspacePath, relativePath);
await LocalFile.deleteFile(filePath);
}
// List files in workspace directory
public static async listFiles(workspacePath: string): Promise<Array<string>> {
const entries: Array<{ name: string; isDirectory(): boolean }> =
await LocalFile.readDirectory(workspacePath);
return entries.map((entry: { name: string }) => {
return entry.name;
});
}
// Get the full path for a relative path in workspace
public static getFullPath(
workspacePath: string,
relativePath: string,
): string {
return path.join(workspacePath, relativePath);
}
// Clean up old workspaces (older than specified hours)
public static async cleanupOldWorkspaces(
maxAgeHours: number = 24,
): Promise<number> {
logger.debug(`Cleaning up workspaces older than ${maxAgeHours} hours`);
let cleanedCount: number = 0;
try {
// Ensure base directory exists
try {
await LocalFile.readDirectory(this.BASE_TEMP_DIR);
} catch {
// Base directory doesn't exist, nothing to clean
return 0;
}
const entries: Array<{ name: string; isDirectory(): boolean }> =
await LocalFile.readDirectory(this.BASE_TEMP_DIR);
const maxAge: number = maxAgeHours * 60 * 60 * 1000; // Convert to milliseconds
const now: number = Date.now();
for (const entry of entries) {
if (!entry.isDirectory()) {
continue;
}
const workspacePath: string = path.join(this.BASE_TEMP_DIR, entry.name);
/*
* Try to extract timestamp from directory name
* Format: task-{taskId}-{timestamp}-{uniqueId}
*/
const match: RegExpMatchArray | null = entry.name.match(
/task-[^-]+-(\d+)-[^-]+/,
);
if (match) {
const timestamp: number = parseInt(match[1] || "0", 10);
if (now - timestamp > maxAge) {
await this.deleteWorkspace(workspacePath);
cleanedCount++;
}
}
}
} catch (error) {
logger.error("Error during workspace cleanup:");
logger.error(error);
}
logger.debug(`Cleaned up ${cleanedCount} old workspaces`);
return cleanedCount;
}
// Initialize workspace manager (create base directory if needed)
public static async initialize(): Promise<void> {
try {
await LocalFile.makeDirectory(this.BASE_TEMP_DIR);
logger.debug(
`Workspace base directory initialized: ${this.BASE_TEMP_DIR}`,
);
} catch (error) {
logger.error("Error initializing workspace manager:");
logger.error(error);
}
}
// Get the base temp directory path
public static getBaseTempDir(): string {
return this.BASE_TEMP_DIR;
}
}

View File

@@ -8,4 +8,4 @@
"watchOptions": {"useFsEvents": false, "interval": 500},
"env": {"TS_NODE_TRANSPILE_ONLY": "1", "TS_NODE_FILES": "false"},
"exec": "node -r ts-node/register/transpile-only Index.ts"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,12 @@
{
"name": "@oneuptime/api-reference",
"name": "@oneuptime/ai-agent",
"version": "1.0.0",
"description": "",
"main": "Index.ts",
"description": "OneUptime AI Agent",
"repository": {
"type": "git",
"url": "https://github.com/OneUptime/oneuptime"
},
"main": "index.js",
"scripts": {
"start": "export NODE_OPTIONS='--max-old-space-size=8096' && node --require ts-node/register Index.ts",
"compile": "tsc",
@@ -10,18 +14,19 @@
"dev": "npx nodemon",
"audit": "npm audit --audit-level=low",
"dep-check": "npm install -g depcheck && depcheck ./ --skip-missing=true",
"test": "rm -rf build && jest --detectOpenHandles --passWithNoTests",
"coverage": "jest --detectOpenHandles --coverage"
"test": "jest --detectOpenHandles --passWithNoTests",
"coverage": "jest --detectOpenHandles --coverage",
"debug:test": "node --inspect node_modules/.bin/jest --runInBand ./Tests --detectOpenHandles"
},
"author": "OneUptime <hello@oneuptime.com> (https://oneuptime.com/)",
"license": "Apache-2.0",
"dependencies": {
"Common": "file:../Common",
"ejs": "^3.1.9",
"ejs": "^3.1.10",
"ts-node": "^10.9.1"
},
"devDependencies": {
"@types/jest": "^29.5.11",
"@types/jest": "^27.5.2",
"@types/node": "^17.0.31",
"jest": "^28.1.0",
"nodemon": "^2.0.20"

45
AIAgent/tsconfig.json Normal file
View File

@@ -0,0 +1,45 @@
{
"ts-node": {
"compilerOptions": {
"module": "commonjs",
"resolveJsonModule": true
}
},
"compilerOptions": {
"target": "es2017",
"jsx": "react",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"rootDir": "",
"moduleResolution": "node",
"typeRoots": [
"./node_modules/@types"
],
"types": ["node", "jest"],
"sourceMap": true,
"outDir": "build/dist",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictBindCallApply": true,
"strictPropertyInitialization": true,
"noImplicitThis": true,
"useUnknownInCatchVariables": true,
"alwaysStrict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"exactOptionalPropertyTypes": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"skipLibCheck": true,
"resolveJsonModule": true
},
"include": ["/**/*.ts"],
"exclude": ["node_modules"]
}

View File

@@ -1,30 +0,0 @@
# See https://help.github.com/ignore-files/ for more about ignoring files.
# dependencies
#/backend/node_modules
/kubernetes
/node_modules
.idea
# misc
.DS_Store
npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn.lock
**/*/paymentService.test.js
apiTest.rest
application_security_dir
container_security_dir
# coverage
/coverage
/.nyc_output
/greenlock.d/config.json
/greenlock.d/config.json.bak
/.greenlockrc

View File

@@ -1,52 +0,0 @@
import APIReferenceRoutes from "./Routes";
import { PromiseVoidFunction } from "Common/Types/FunctionTypes";
import InfrastructureStatus from "Common/Server/Infrastructure/Status";
import logger from "Common/Server/Utils/Logger";
import App from "Common/Server/Utils/StartServer";
import Telemetry from "Common/Server/Utils/Telemetry";
import "ejs";
const APP_NAME: string = "reference";
const init: PromiseVoidFunction = async (): Promise<void> => {
try {
// Initialize telemetry
Telemetry.init({
serviceName: APP_NAME,
});
const statusCheck: PromiseVoidFunction = async (): Promise<void> => {
// Check the status of infrastructure components
return await InfrastructureStatus.checkStatusWithRetry({
checkClickhouseStatus: false,
checkPostgresStatus: false,
checkRedisStatus: false,
retryCount: 3,
});
};
// Initialize the app with service name and status checks
await App.init({
appName: APP_NAME,
statusOptions: {
liveCheck: statusCheck,
readyCheck: statusCheck,
},
});
await APIReferenceRoutes.init();
// Add default routes to the app
await App.addDefaultRoutes();
} catch (err) {
logger.error("App Init Failed:");
logger.error(err);
throw err;
}
};
init().catch((err: Error) => {
logger.error(err);
logger.error("Exiting node process");
process.exit(1);
});

View File

@@ -1,29 +0,0 @@
# README
This README would normally document whatever steps are necessary to get your application up and running.
### What is this repository for?
- Quick summary
- Version
- [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
### How do I get set up?
- Summary of set up
- Configuration
- Dependencies
- Database configuration
- How to run tests
- Deployment instructions
### Contribution guidelines
- Writing tests
- Code review
- Other guidelines
### Who do I talk to?
- Repo owner or admin
- Other community or team contact

View File

@@ -1,284 +0,0 @@
import { CodeExamplesPath, ViewsPath } from "../Utils/Config";
import ResourceUtil, { ModelDocumentation } from "../Utils/Resources";
import PageNotFoundServiceHandler from "./PageNotFound";
import { AppApiRoute } from "Common/ServiceRoute";
import { ColumnAccessControl } from "Common/Types/BaseDatabase/AccessControl";
import {
getTableColumns,
TableColumnMetadata,
} from "Common/Types/Database/TableColumn";
import Dictionary from "Common/Types/Dictionary";
import ObjectID from "Common/Types/ObjectID";
import Permission, {
PermissionHelper,
PermissionProps,
} from "Common/Types/Permission";
import LocalCache from "Common/Server/Infrastructure/LocalCache";
import { ExpressRequest, ExpressResponse } from "Common/Server/Utils/Express";
import LocalFile from "Common/Server/Utils/LocalFile";
import { IsBillingEnabled } from "Common/Server/EnvironmentConfig";
// Get all resources and resource dictionary
const Resources: Array<ModelDocumentation> = ResourceUtil.getResources();
const ResourceDictionary: Dictionary<ModelDocumentation> =
ResourceUtil.getResourceDictionaryByPath();
// Get all permission props
const PermissionDictionary: Dictionary<PermissionProps> =
PermissionHelper.getAllPermissionPropsAsDictionary();
export default class ServiceHandler {
// Execute response for a given page
public static async executeResponse(
req: ExpressRequest,
res: ExpressResponse,
): Promise<void> {
let pageTitle: string = "";
let pageDescription: string = "";
let page: string | undefined = req.params["page"];
const pageData: Dictionary<unknown> = {};
// Check if page is provided
if (!page) {
return PageNotFoundServiceHandler.executeResponse(req, res);
}
// Get current resource
const currentResource: ModelDocumentation | undefined =
ResourceDictionary[page];
// Check if current resource exists
if (!currentResource) {
return PageNotFoundServiceHandler.executeResponse(req, res);
}
// Set page title and description
pageTitle = currentResource.name;
pageDescription = currentResource.description;
page = "model";
// Get table columns for current resource
const tableColumns: Dictionary<TableColumnMetadata> = getTableColumns(
currentResource.model,
);
// Filter out columns with no access
for (const key in tableColumns) {
const accessControl: ColumnAccessControl | null =
currentResource.model.getColumnAccessControlFor(key);
if (!accessControl) {
delete tableColumns[key];
continue;
}
if (
accessControl?.create.length === 0 &&
accessControl?.read.length === 0 &&
accessControl?.update.length === 0
) {
delete tableColumns[key];
continue;
}
if (tableColumns[key] && tableColumns[key]!.hideColumnInDocumentation) {
delete tableColumns[key];
continue;
}
if (tableColumns[key]) {
(tableColumns[key] as any).permissions = accessControl;
}
}
// Remove unnecessary columns
delete tableColumns["deletedAt"];
delete tableColumns["deletedByUserId"];
delete tableColumns["deletedByUser"];
delete tableColumns["version"];
// Set page data
pageData["title"] = currentResource.model.singularName;
pageData["description"] = currentResource.model.tableDescription;
pageData["columns"] = tableColumns;
pageData["tablePermissions"] = {
read: currentResource.model.readRecordPermissions.map(
(permission: Permission) => {
return PermissionDictionary[permission];
},
),
update: currentResource.model.updateRecordPermissions.map(
(permission: Permission) => {
return PermissionDictionary[permission];
},
),
delete: currentResource.model.deleteRecordPermissions.map(
(permission: Permission) => {
return PermissionDictionary[permission];
},
),
create: currentResource.model.createRecordPermissions.map(
(permission: Permission) => {
return PermissionDictionary[permission];
},
),
};
// Cache the list request data
pageData["listRequest"] = await LocalCache.getOrSetString(
"model",
"list-request",
async () => {
// Read the list request data from a file
return await LocalFile.read(`${CodeExamplesPath}/Model/ListRequest.md`);
},
);
// Cache the item request data
pageData["itemRequest"] = await LocalCache.getOrSetString(
"model",
"item-request",
async () => {
// Read the item request data from a file
return await LocalFile.read(`${CodeExamplesPath}/Model/ItemRequest.md`);
},
);
// Cache the item response data
pageData["itemResponse"] = await LocalCache.getOrSetString(
"model",
"item-response",
async () => {
// Read the item response data from a file
return await LocalFile.read(
`${CodeExamplesPath}/Model/ItemResponse.md`,
);
},
);
// Cache the count request data
pageData["countRequest"] = await LocalCache.getOrSetString(
"model",
"count-request",
async () => {
// Read the count request data from a file
return await LocalFile.read(
`${CodeExamplesPath}/Model/CountRequest.md`,
);
},
);
// Cache the count response data
pageData["countResponse"] = await LocalCache.getOrSetString(
"model",
"count-response",
async () => {
// Read the CountResponse.md file
return await LocalFile.read(
`${CodeExamplesPath}/Model/CountResponse.md`,
);
},
);
pageData["updateRequest"] = await LocalCache.getOrSetString(
"model",
"update-request",
async () => {
// Read the UpdateRequest.md file
return await LocalFile.read(
`${CodeExamplesPath}/Model/UpdateRequest.md`,
);
},
);
pageData["updateResponse"] = await LocalCache.getOrSetString(
"model",
"update-response",
async () => {
// Read the UpdateResponse.md file
return await LocalFile.read(
`${CodeExamplesPath}/Model/UpdateResponse.md`,
);
},
);
pageData["createRequest"] = await LocalCache.getOrSetString(
"model",
"create-request",
async () => {
// Read the CreateRequest.md file
return await LocalFile.read(
`${CodeExamplesPath}/Model/CreateRequest.md`,
);
},
);
pageData["createResponse"] = await LocalCache.getOrSetString(
"model",
"create-response",
async () => {
// Read the CreateResponse.md file
return await LocalFile.read(
`${CodeExamplesPath}/Model/CreateResponse.md`,
);
},
);
pageData["deleteRequest"] = await LocalCache.getOrSetString(
"model",
"delete-request",
async () => {
// Read the DeleteRequest.md file
return await LocalFile.read(
`${CodeExamplesPath}/Model/DeleteRequest.md`,
);
},
);
pageData["deleteResponse"] = await LocalCache.getOrSetString(
"model",
"delete-response",
async () => {
// Read the DeleteResponse.md file
return await LocalFile.read(
`${CodeExamplesPath}/Model/DeleteResponse.md`,
);
},
);
// Get list response from cache or set it if it's not available
pageData["listResponse"] = await LocalCache.getOrSetString(
"model",
"list-response",
async () => {
// Read the list response from a file
return await LocalFile.read(
`${CodeExamplesPath}/Model/ListResponse.md`,
);
},
);
// Generate a unique ID for the example object
pageData["exampleObjectID"] = ObjectID.generate();
// Construct the API path for the current resource
pageData["apiPath"] =
AppApiRoute.toString() + currentResource.model.crudApiPath?.toString();
// Check if the current resource is a master admin API
pageData["isMasterAdminApiDocs"] =
currentResource.model.isMasterAdminApiDocs;
// Render the index page with the required data
return res.render(`${ViewsPath}/pages/index`, {
page: page,
resources: Resources,
pageTitle: pageTitle,
enableGoogleTagManager: IsBillingEnabled,
pageDescription: pageDescription,
pageData: pageData,
});
}
}

View File

@@ -1,3 +0,0 @@
export const ViewsPath: string = "/usr/src/app/views";
export const StaticPath: string = "/usr/src/app/Static";
export const CodeExamplesPath: string = "/usr/src/app/CodeExamples";

View File

@@ -1,14 +0,0 @@
{
"watch": ["./","../Common/Server", "../Common/Types", "../Common/Utils", "../Common/Models"],
"ext": "ts,tsx",
"ignore": [
"./node_modules/**",
"./public/**",
"./bin/**",
"./build/**",
"greenlock.d/*"
],
"watchOptions": {"useFsEvents": false, "interval": 500},
"env": {"TS_NODE_TRANSPILE_ONLY": "1", "TS_NODE_FILES": "false"},
"exec": "node -r ts-node/register/transpile-only Index.ts"
}

View File

@@ -1,112 +0,0 @@
{
"ts-node": {
// these options are overrides used only by ts-node
// same as the --compilerOptions flag and the TS_NODE_COMPILER_OPTIONS environment variable
"compilerOptions": {
"module": "commonjs",
"resolveJsonModule": true,
}
},
"compilerOptions": {
/* Visit https://aka.ms/tsconfig.json to read more about this file */
/* Projects */
// "incremental": true, /* Enable incremental compilation */
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
// "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
/* Language and Environment */
"target": "es2017" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
"jsx": "react" /* Specify what JSX code is generated. */,
"experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
"emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
// "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. */
"moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
"typeRoots": [
"./node_modules/@types"
], /* Specify multiple folders that act like `./node_modules/@types`. */
"types": ["node", "jest"], /* Specify type package names to be included without being referenced in a source file. */
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
// "resolveJsonModule": true, /* Enable importing .json files */
// "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
/* JavaScript Support */
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
// "checkJs": true, /* Enable error reporting in type-checked JavaScript 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. */
"sourceMap": true, /* Create source map files for emitted 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. */
"outDir": "./build/dist", /* Specify an output folder for all emitted files. */
// "removeComments": true, /* Disable emitting comments. */
// "noEmit": true, /* Disable emitting files from a compilation. */
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
// "newLine": "crlf", /* Set the newline character for emitting files. */
// "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
// "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
// "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
/* Interop Constraints */
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
"esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
"forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
/* Type Checking */
"strict": true /* Enable all strict type-checking options. */,
"noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
"strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
"strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
"strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
"strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
"noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
"useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
"alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
"noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
"noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
"exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
"noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
"noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
"noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
"noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
"noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
/* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true, /* Skip type checking all .d.ts files. */
"resolveJsonModule": true
}
}

View File

@@ -1,15 +0,0 @@
<main class="py-16">
<article class="prose">
<div>
<div>
<h1 class="next-error-h1" style="display:inline-block;margin:0;margin-right:20px;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1>
<div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle">
<h2 style="font-size:14px;font-weight:normal;line-height:49px;margin:0;padding:0">
This page could not be found<!-- -->.
</h2>
</div>
</div>
</div>
</article>
</main>

View File

@@ -1,39 +0,0 @@
<main class="py-16">
<article class="prose">
<h1>Authentication</h1>
<p class="lead">You'll need to authenticate your requests to access any of the endpoints in the OneUptime API. In
this guide, we'll look at how authentication works. OneUptime offers one way to authenticate your API requests
- by using an API Key.</p>
<h2 id="basic-authentication" class="mb-5 scroll-mt-24 mt-24 font-bold text-lg">
Generate an API Key
</h2>
<p> Please head over to <b>Project Settings</b> > <b>API Keys</b>. Create a new API Key. Please note: New API Keys
have no permissions assigned to them, so you will have to assign a permission before you can use it.</p>
<a class="mt-5 inline-flex gap-0.5 justify-center overflow-hidden font-medium transition text-emerald-500 hover:text-emerald-600 "
href="/reference/permissions">
Read more about permissions
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true" class="mt-0.5 h-5 w-5 relative top-px -mr-1">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
d="m11.5 6.5 3 3.5m0 0-3 3.5m3-3.5h-9"></path>
</svg>
</a>
<h2 id="basic-authentication" class="mb-5 scroll-mt-24 mt-24 font-bold text-lg">
Project ID
</h2>
<p> Please head over to <b>Project Settings</b> > <b>Project</b>. You should see your Project ID there.</p>
<h2 id="basic-authentication">
Authentication with API Key
</h2>
<p>You can use OneUptime API Key on Request Header when you're making a request. You can use <code
class="rounded p-0.5 px-1 text-sm text-gray-500 bg-gray-100 border-2 border-gray-200">Authorization</code>
header with your API Key when you make a request.</p>
<%- include('../partials/code', {title: "Example request with API Key" , requestUrl: "" , requestType: "" , code: "curl --header \"ApiKey: {secret-api-key}\" https://oneuptime.com/api/\<path\>" }) -%>
<p class="text-sm">Please don't commit your OneUptime API Key to GitHub, or on any other source control
project. Please regenerate a new API Key, if your API Key is committed by mistake.</p>
</article>
</main>

View File

@@ -1,90 +0,0 @@
<main class="py-16">
<article class="prose ">
<h1 class="font-bold text-xl mb-5">Errors</h1>
<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>
<div class="my-6 flex gap-2.5 rounded-2xl border border-emerald-500/20 bg-emerald-50/50 p-4 leading-6 text-emerald-900 ">
<svg viewBox="0 0 16 16" aria-hidden="true" class="mt-1 h-4 w-4 flex-none fill-emerald-500 stroke-white ">
<circle cx="8" cy="8" r="8" stroke-width="0"></circle>
<path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M6.75 7.75h1.5v3.5"></path>
<circle cx="8" cy="4" r=".5" fill="none"></circle>
</svg>
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Before reaching out to support with an error, please be aware that 99% of all
reported errors are, in fact, user errors. Therefore, please carefully check
your code before contacting OneUptime support.
</p>
</div>
</div>
<hr>
<h2 id="status-codes" class="mb-5 scroll-mt-24 mt-24 font-bold text-lg">
Status codes
</h2>
<p>Here is a list of the different categories of status codes returned by the OneUptime API. Use these to understand if a request was successful.</p>
<div class="my-6">
<ul role="list" class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">2xx</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 "></dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>A 2xx status code indicates a successful response.</p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">4xx</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 "></dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>A 4xx status code indicates a client error — this means it's a <em>you</em>
problem.
</p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">429</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 "></dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p> Request limit exceeded. Request limits are 100 operations per second per project (this includes all the API keys in the project).
</p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">5xx</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 "></dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>A 5xx status code indicates a server error — you won't be seeing a lot of these.</p>
</dd>
</dl>
</li>
</ul>
</div>
<hr>
<h2 id="error-types" class="mb-5 scroll-mt-24 mt-24 font-bold text-lg">Error Messages</h2>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<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>Here is an example of an error message: </p>
</div>
<%- include('../partials/code', {title: "Example error response", requestUrl: "", requestType: "", code: "{ \"message\": \"Name is required\" }" }) -%>
</div>
</article>
</main>

View File

@@ -1,198 +0,0 @@
<main class="py-16">
<article class="prose ">
<div class="absolute inset-0 -z-10 mx-0 max-w-none overflow-hidden">
<div
class="absolute left-1/2 top-0 ml-[-38rem] h-[25rem] w-[81.25rem]">
<div
class="absolute inset-0 bg-gradient-to-r from-[#36b49f] to-[#DBFF75] opacity-40 [mask-image:radial-gradient(farthest-side_at_top,white,transparent)]">
<svg aria-hidden="true"
class="absolute inset-x-0 inset-y-[-50%] h-[200%] w-full skew-y-[-18deg] fill-black/40 stroke-black/50 mix-blend-overlay /5">
<defs>
<pattern id=":r6s:" width="72" height="56" patternUnits="userSpaceOnUse" x="-12"
y="4">
<path d="M.5 56V.5H72" fill="none"></path>
</pattern>
</defs>
<rect width="100%" height="100%" stroke-width="0" fill="url(#:r6s:)"></rect>
<svg x="-12" y="4" class="overflow-visible">
<rect stroke-width="0" width="73" height="57" x="288" y="168"></rect>
<rect stroke-width="0" width="73" height="57" x="144" y="56"></rect>
<rect stroke-width="0" width="73" height="57" x="504" y="168"></rect>
<rect stroke-width="0" width="73" height="57" x="720" y="336"></rect>
</svg>
</svg>
</div>
<svg viewBox="0 0 1113 440" aria-hidden="true"
class="absolute top-0 left-1/2 ml-[-19rem] w-[69.5625rem] fill-white blur-[26px] ">
<path d="M.016 439.5s-9.5-300 434-300S882.516 20 882.516 20V0h230.004v439.5H.016Z">
</path>
</svg>
</div>
</div>
<h1 class="font-bold text-xl">API Reference</h1>
<p class="lead">Use the OneUptime API to access any resource in your projects, create automated
workflows, and more
and
seamlessly integrate your project into the other tools and services you use in your
organization.</p>
<div class="my-16 xl:max-w-none">
<h2 id="guides" class="scroll-mt-24 font-bold">
<span class="group text-inherit no-underline hover:text-inherit">
<div
class="absolute mt-1 ml-[calc(-1*var(--width))] hidden w-[var(--width)] opacity-0 transition [--width:calc(2.625rem+0.5px+50%-min(50%,calc(theme(maxWidth.lg)+theme(spacing.8))))] group-hover:opacity-100 group-focus:opacity-100 md:block lg:z-50 2xl:[--width:theme(spacing.10)]">
<div
class="group/anchor block h-5 w-5 rounded-lg bg-zinc-50 ring-1 ring-inset ring-zinc-300 transition hover:ring-zinc-500 ">
<svg viewBox="0 0 20 20" fill="none" stroke-linecap="round" aria-hidden="true"
class="h-5 w-5 stroke-zinc-500 transition ">
<path
d="m6.5 11.5-.964-.964a3.535 3.535 0 1 1 5-5l.964.964m2 2 .964.964a3.536 3.536 0 0 1-5 5L8.5 13.5m0-5 3 3">
</path>
</svg>
</div>
</div>
Guides
</span>
</h2>
<div
class="not-prose mt-4 grid grid-cols-1 gap-8 border-t border-zinc-900/5 pt-10 sm:grid-cols-2 xl:grid-cols-4">
<div>
<h3 class="text-sm font-semibold text-zinc-900 ">Authentication</h3>
<p class="mt-1 text-sm text-zinc-600 ">Learn how to authenticate your
API
requests.</p>
<p class="mt-4">
<a class="inline-flex gap-0.5 justify-center overflow-hidden font-medium transition text-emerald-500 hover:text-emerald-600 "
href="/reference/authentication">
Read more
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"
class="mt-0.5 h-5 w-5 relative top-px -mr-1">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
d="m11.5 6.5 3 3.5m0 0-3 3.5m3-3.5h-9"></path>
</svg>
</a>
</p>
</div>
<div>
<h3 class="text-sm font-semibold text-zinc-900 ">Pagination</h3>
<p class="mt-1 text-sm text-zinc-600 ">Understand how to work with
paginated responses.</p>
<p class="mt-4">
<a class="inline-flex gap-0.5 justify-center overflow-hidden font-medium transition text-emerald-500 hover:text-emerald-600 "
href="/reference/pagination">
Read more
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"
class="mt-0.5 h-5 w-5 relative top-px -mr-1">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
d="m11.5 6.5 3 3.5m0 0-3 3.5m3-3.5h-9"></path>
</svg>
</a>
</p>
</div>
<div>
<h3 class="text-sm font-semibold text-zinc-900 ">Errors</h3>
<p class="mt-1 text-sm text-zinc-600 ">Read about the different types
of
errors returned by the API.</p>
<p class="mt-4">
<a class="inline-flex gap-0.5 justify-center overflow-hidden font-medium transition text-emerald-500 hover:text-emerald-600 "
href="/reference/errors">
Read more
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"
class="mt-0.5 h-5 w-5 relative top-px -mr-1">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
d="m11.5 6.5 3 3.5m0 0-3 3.5m3-3.5h-9"></path>
</svg>
</a>
</p>
</div>
<div>
<h3 class="text-sm font-semibold text-zinc-900 ">Permissions</h3>
<p class="mt-1 text-sm text-zinc-600 ">Learn how API Key Permissions
work.</p>
<p class="mt-4">
<a class="inline-flex gap-0.5 justify-center overflow-hidden font-medium transition text-emerald-500 hover:text-emerald-600 "
href="/reference/permissions">
Read more
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"
class="mt-0.5 h-5 w-5 relative top-px -mr-1">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
d="m11.5 6.5 3 3.5m0 0-3 3.5m3-3.5h-9"></path>
</svg>
</a>
</p>
</div>
</div>
</div>
<div class="my-16 xl:max-w-none">
<h2 id="resources" class="scroll-mt-24 font-bold"><span
class="group text-inherit no-underline hover:text-inherit">Featured Resources</span>
</h2>
<div
class="not-prose mt-4 grid grid-cols-1 gap-8 border-t border-zinc-900/5 pt-10 sm:grid-cols-2 xl:grid-cols-4">
<% for(var i=0; i<pageData.featuredResources.length; i++) {%>
<div
class="cursor-pointer group relative flex rounded-2xl bg-zinc-50 transition-shadow hover:shadow-md hover:shadow-zinc-900/5 ">
<div class="pointer-events-none">
<div
class="absolute inset-0 rounded-2xl transition duration-300 [mask-image:linear-gradient(white,transparent)] group-hover:opacity-50">
<svg aria-hidden="true"
class="absolute inset-x-0 inset-y-[-30%] h-[160%] w-full skew-y-[-18deg] fill-black/[0.02] stroke-black/5 /2.5">
<defs>
<pattern id=":r6t:" width="72" height="56" patternUnits="userSpaceOnUse"
x="50%" y="16">
<path d="M.5 56V.5H72" fill="none"></path>
</pattern>
</defs>
<rect width="100%" height="100%" stroke-width="0" fill="url(#:r6t:)"></rect>
<svg x="50%" y="16" class="overflow-visible">
<rect stroke-width="0" width="73" height="57" x="0" y="56"></rect>
<rect stroke-width="0" width="73" height="57" x="72" y="168"></rect>
</svg>
</svg>
</div>
<div
class="absolute inset-0 rounded-2xl bg-gradient-to-r from-[#D7EDEA] to-[#F4FBDF] opacity-0 transition duration-300 group-hover:opacity-100"
data-projection-id="35"
style="-webkit-mask-image: radial-gradient(180px at 0px 0px, white, transparent);">
</div>
<div
class="absolute inset-0 rounded-2xl opacity-0 mix-blend-overlay transition duration-300 group-hover:opacity-100"
data-projection-id="36"
style="-webkit-mask-image: radial-gradient(180px at 0px 0px, white, transparent);">
<svg aria-hidden="true"
class="absolute inset-x-0 inset-y-[-30%] h-[160%] w-full skew-y-[-18deg] fill-black/50 stroke-black/70 /10">
<defs>
<pattern id=":r6u:" width="72" height="56" patternUnits="userSpaceOnUse"
x="50%" y="16">
<path d="M.5 56V.5H72" fill="none"></path>
</pattern>
</defs>
<rect width="100%" height="100%" stroke-width="0" fill="url(#:r6u:)"></rect>
<svg x="50%" y="16" class="overflow-visible">
<rect stroke-width="0" width="73" height="57" x="0" y="56"></rect>
<rect stroke-width="0" width="73" height="57" x="72" y="168"></rect>
</svg>
</svg>
</div>
</div>
<div
class="absolute inset-0 rounded-2xl ring-1 ring-inset ring-zinc-900/7.5 group-hover:ring-zinc-900/10 ">
</div>
<div class="relative rounded-2xl px-4 pt-16 pb-4">
<h3 class="mt-4 text-sm font-semibold leading-7 text-zinc-900 "><a
href="/reference/<%= pageData.featuredResources[i].path -%>"><span
class="absolute inset-0 rounded-2xl"></span> <%= pageData.featuredResources[i].name -%></a>
</h3>
<p class="mt-1 text-sm text-zinc-600 "><%= pageData.featuredResources[i].description -%></p>
</div>
</div>
<% } %>
</div>
</div>
</article>
</main>

View File

@@ -1,749 +0,0 @@
<main class="py-16">
<article class="prose ">
<h1>
<%= pageData.title -%>
</h1>
<p class="lead">
<%= pageData.description -%>
</p>
<h2 id="the-contact-model" class="scroll-mt-24">
The <%= pageData.title -%> Model
</h2>
<script>
function showPermissions(id) {
var permissionsblock = document.getElementById(id + "-permissions");
var viewPermissionsBtn = document.getElementById(id + "-view-permissions");
if (permissionsblock.style.display === "none") {
permissionsblock.style.display = "block";
viewPermissionsBtn.innerHTML = "Hide Permissions";
} else {
permissionsblock.style.display = "none";
viewPermissionsBtn.innerHTML = "View Permissions";
}
}
</script>
<h3>Properties</h3>
<div class="my-6">
<ul role="list" class="m-0 w-full list-none divide-y divide-zinc-900/5 p-0 ">
<% for(var i=0; i<Object.keys(pageData.columns).length; i++) {%>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0 mt-5">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="model-inline-code"><%= Object.keys(pageData.columns)[i] -%></code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">
<%= pageData.columns[Object.keys(pageData.columns)[i]].type -%>
<% if(pageData.columns[Object.keys(pageData.columns)[i]].required){ %>
(Required)
<% } %>
</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none text-sm [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>
<%= pageData.columns[Object.keys(pageData.columns)[i]].description -%> <a
class="text-gray-500 hover:underline cursor-pointer text-xs"
id="<%= Object.keys(pageData.columns)[i] -%>-view-permissions"
onclick="showPermissions('<%= Object.keys(pageData.columns)[i] -%>')">View
Permissions</a>
</p>
</dd>
<dd class="font-mono text-xs" style="display: none;"
id="<%= Object.keys(pageData.columns)[i] -%>-permissions">
<div class="mb-3 mt-3">
<span class="text-gray-700 text-xs">Permissions to Create:&nbsp;</span>
<% for(var j=0; j <
pageData.columns[Object.keys(pageData.columns)[i]].permissions.create.length; j++) {%>
<span
class="rounded-xl p-0.5 px-1 text-xs text-slate-500 bg-slate-100 border-2 border-slate-200">
<%= pageData.columns[Object.keys(pageData.columns)[i]].permissions.create[j] -%>
</span>
<% if(j
!==pageData.columns[Object.keys(pageData.columns)[i]].permissions.create.length-1){ %>
<span class="text-gray-400 text-xs ml-1 mr-1">or</span>
<% } %>
<% } %>
<% if(pageData.columns[Object.keys(pageData.columns)[i]].permissions.create.length===0){
%>
<span class="p-0.5 px-1 text-xs text-rose-400"> This property is
autogenerated. </span>
<% } %>
</div>
<div class="mb-3 mt-3">
<span class="text-gray-700 text-xs">Permissions to Read:&nbsp;</span>
<% for(var j=0; j <
pageData.columns[Object.keys(pageData.columns)[i]].permissions.read.length; j++) {%>
<span
class="rounded-xl p-0.5 px-1 text-xs text-slate-500 bg-slate-100 border-2 border-slate-200">
<%= pageData.columns[Object.keys(pageData.columns)[i]].permissions.read[j] -%>
</span>
<% if(j !==pageData.columns[Object.keys(pageData.columns)[i]].permissions.read.length-1){
%>
<span class="text-gray-400 text-xs ml-1 mr-1">or</span>
<% } %>
<% } %>
<% if(pageData.columns[Object.keys(pageData.columns)[i]].permissions.read.length===0){
%>
<span class="p-0.5 px-1 text-xs text-rose-400"> This property cannot be read.
</span>
<% } %>
</div>
<div class="mb-3 mt-3">
<span class="text-gray-700 text-xs">Permissions to Update:&nbsp;</span>
<% for(var j=0; j <
pageData.columns[Object.keys(pageData.columns)[i]].permissions.update.length; j++) {%>
<span
class="rounded-xl p-0.5 px-1 text-xs text-slate-500 bg-slate-100 border-2 border-slate-200">
<%= pageData.columns[Object.keys(pageData.columns)[i]].permissions.update[j] -%>
</span>
<% if(j
!==pageData.columns[Object.keys(pageData.columns)[i]].permissions.update.length-1){ %>
<span class="text-gray-400 text-xs ml-1 mr-1">or</span>
<% } %>
<% } %>
<% if(pageData.columns[Object.keys(pageData.columns)[i]].permissions.update.length===0){
%>
<span class="p-0.5 px-1 text-xs text-rose-400"> This property cannot be
updated. </span>
<% } %>
</div>
</dd>
</dl>
</li>
<% } %>
</ul>
</div>
<div class="mt-10">
<hr>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-emerald-300 bg-emerald-400/10 text-emerald-500 ">GET</span>
<span class="font-mono text-xs text-zinc-400">or</span> <span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-sky-300 bg-sky-400/10 text-sky-500 ">POST</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/get-list
</span>
</div>
<div class="-mt-20">
<h2 id="list-all-contacts" class="mt-2 scroll-mt-32"><span
class="group text-inherit no-underline hover:text-inherit">List</span></h2>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>This endpoint allows you to retrieve a paginated list of all your <%= pageData.title -%>. By
default, a maximum of ten
<%= pageData.title -%> are shown per page.</p>
<h3>Optional Query Params</h3>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Limit</dt>
<dd><code class="inline-code">limit</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">number</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Number of objects to fetch. By default 10, you can increase this count up to 100</p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Skip</dt>
<dd><code class="inline-code">skip</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">number</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Number of objects to skip. This can be useful in pagination</p>
</dd>
</dl>
</li>
</ul>
</div>
<h3>Optional Request Body</h3>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Query</dt>
<dd><code class="inline-code">query</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">query</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>If you would like to filter on <%= pageData.title -%>. You can specify include a
query here. For more information, <a class="link" target="_blank"
href="/reference/data-types#queries">please check out writing queries
here.</a></p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Select</dt>
<dd><code class="inline-code">select</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">select</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p> By default you will only retrieve ID of objects, to retrieve more fields you need
to select them. For more information, <a class="link" target="_blank"
href="/reference/data-types#select">please check how to select here.</a></p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Sort</dt>
<dd><code class="inline-code">sort</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">sort</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p> Objects will be sorted based on created date by default. You can change the sort
order by passing <a class="link" target="_blank"
href="/reference/data-types#select">please check how to select here.</a></p>
</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0 xl:sticky xl:top-24">
<%- include('../partials/code', {title: "Example List Request" , requestUrl:
pageData.apiPath+"/get-list?skip=0&limit=10", code: pageData.listRequest, requestType: "POST" })
-%>
<%- include('../partials/code', {title: "Example List Response" , code: pageData.listResponse,
requestType: "" }) -%>
</div>
</div>
</div>
</div>
<div class="mt-10">
<hr>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-emerald-300 bg-emerald-400/10 text-emerald-500 ">GET</span>
<span class="font-mono text-xs text-zinc-400">or</span> <span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-sky-300 bg-sky-400/10 text-sky-500 ">POST</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/:id/get-item
</span>
</div>
<div class="-mt-20">
<h2 id="list-all-contacts" class="mt-2 scroll-mt-32"><span
class="group text-inherit no-underline hover:text-inherit">Get item by ID</span></h2>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>This endpoint allows you to retrieve <%= pageData.title -%> by ID.
<h3>Required Query Params</h3>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">ID</dt>
<dd><code class="inline-code">id</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">text</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>ID of the Object</p>
</dd>
</dl>
</li>
</ul>
</div>
<h3>Optional Request Body</h3>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Select</dt>
<dd><code class="inline-code">select</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">select</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p> By default you will only retrieve ID of objects, to retrieve more fields you
need to select them. For more information, <a class="link" target="_blank"
href="/reference/data-types#select">please check how to select here.</a>
</p>
</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0 xl:sticky xl:top-24">
<%- include('../partials/code', {title: "Example Item Request" , requestUrl:
pageData.apiPath+"/:id/get-item", code: pageData.itemRequest, requestType: "POST" }) -%>
<%- include('../partials/code', {title: "Example Item Response" , code: pageData.itemResponse,
requestType: "" }) -%>
</div>
</div>
</div>
</div>
<div class="mt-10">
<hr>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-sky-300 bg-sky-400/10 text-sky-500 ">POST</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/count
</span></div>
<div class="-mt-20">
<h2 id="list-all-contacts" class="mt-2 scroll-mt-32"><span
class="group text-inherit no-underline hover:text-inherit">Count</span></h2>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>This endpoint allows you to retrieve the count of all your <%= pageData.title -%>. </p>
<h3>Optional Request Body</h3>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Query</dt>
<dd><code class="inline-code">query</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">query</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>If you would like to filter on <%= pageData.title -%>. You can specify include a
query here. For more information, <a class="link" target="_blank"
href="/reference/data-types#queries">please check out writing queries
here.</a></p>
</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0 xl:sticky xl:top-24">
<%- include('../partials/code', {title: "Example Count Request" , requestUrl:
pageData.apiPath+"/count", code: pageData.countRequest, requestType: "POST" }) -%>
<%- include('../partials/code', {title: "Example Count Response" , code: pageData.countResponse,
requestType: "" }) -%>
</div>
</div>
</div>
</div>
<div class="mt-10">
<hr>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-sky-300 bg-sky-400/10 text-sky-500 ">POST</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>
</span></div>
<div class="-mt-20">
<h2 id="list-all-contacts" class="mt-2 scroll-mt-32"><span
class="group text-inherit no-underline hover:text-inherit">Create <%= pageData.title -%> </span></h2>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>This endpoint allows you to create a new object. </p>
<h3>Request Body</h3>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Data</dt>
<dd><code class="inline-code">data</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">JSON</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Object to update as JSON</p>
</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0 xl:sticky xl:top-24">
<%- include('../partials/code', {title: "Example Create Request" , requestUrl: pageData.apiPath, code:
pageData.createRequest, requestType: "POST" }) -%>
<%- include('../partials/code', {title: "Example Create Response" , code: pageData.createResponse,
requestType: "" }) -%>
</div>
</div>
</div>
</div>
<div class="mt-10">
<hr>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-amber-300 bg-amber-400/10 text-amber-500 ">PUT</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/:id
</span></div>
<div class="-mt-20">
<h2 id="list-all-contacts" class="mt-2 scroll-mt-32"><span
class="group text-inherit no-underline hover:text-inherit">Update by ID</span></h2>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>This endpoint allows you to update object by its ID. </p>
<h3>Request Body</h3>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Data</dt>
<dd><code class="inline-code">data</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">JSON</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Object to update as JSON</p>
</dd>
</dl>
</li>
</ul>
</div>
<div class="border border-gray-100 bg-gray-50 rounded-md p-4 text-sm mt-10">
<h4 class="font-semibold text-gray-700 ">For clients that do not support PUT requests<h4>
<p class="text-gray-500 text-xs mt-4">
You can also update an object by sending a POST or GET request to these endpoints with the
same
request headers and body.
</p>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-sky-300 bg-sky-400/10 text-sky-500 ">POST</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span
class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/:id/update-item
</span></div>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-emerald-300 bg-emerald-400/10 text-emerald-500 ">GET</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span
class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/:id/update-item
</span></div>
</div>
</div>
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0 xl:sticky xl:top-24">
<%- include('../partials/code', {title: "Example Update Request" , requestUrl:
pageData.apiPath+"/:id", code: pageData.updateRequest, requestType: "PUT" }) -%>
<%- include('../partials/code', {title: "Example Update Response" , code: pageData.updateResponse,
requestType: "" }) -%>
</div>
</div>
</div>
</div>
<div class="mt-10">
<hr>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-red-300 bg-red-400/10 text-red-500 ">DELETE</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/:id
</span></div>
<div class="-mt-20">
<h2 id="list-all-contacts" class="mt-2 scroll-mt-32"><span
class="group text-inherit no-underline hover:text-inherit">Delete by ID</span></h2>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>This endpoint allows you to delete object by its ID. </p>
<div class="border border-gray-100 bg-gray-50 rounded-md p-4 text-sm mt-10">
<h4 class="font-semibold text-gray-700 ">For clients that do not support DELETE requests<h4>
<p class="text-gray-500 text-xs mt-4">
You can also delete an object by sending a POST or GET request to these endpoints with the
same
request headers and body.
</p>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-sky-300 bg-sky-400/10 text-sky-500 ">POST</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span
class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/:id/delete-item
</span></div>
<div class="flex items-center gap-x-3 mt-10"><span
class="font-mono text-[0.625rem] font-semibold leading-6 rounded-lg px-1.5 ring-1 ring-inset ring-emerald-300 bg-emerald-400/10 text-emerald-500 ">GET</span><span
class="h-0.5 w-0.5 rounded-full bg-zinc-300 "></span><span
class="font-mono text-xs text-zinc-400">
<%= pageData.apiPath -%>/:id/delete-item
</span></div>
</div>
</div>
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0 xl:sticky xl:top-24">
<%- include('../partials/code', {title: "Example Delete Request" , requestUrl:
pageData.apiPath+"/:id", code: pageData.deleteRequest, requestType: "DELETE" }) -%>
<%- include('../partials/code', {title: "Example Delete Response" , code: pageData.deleteResponse,
requestType: "" }) -%>
</div>
</div>
</div>
</div>
<h2>Permissions</h2>
<% if(!pageData.isMasterAdminApiDocs){ %>
<p class="lead"> Your API Token needs permissions to create, update, read or delete this resource. If you do
not have permissions to make a request a <code class="inline-code">4xx</code> status will be sent as
response. </p>
<h3 id="consuming-webhooks">
Read Permissions
</h3>
<p>You need one of these permissions to read <%= pageData.title -%>:</p>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<div class="my-6">
<ul role="list" class="m-0 w-full">
<% for(var i=0; i<pageData.tablePermissions.read.length; i++) {%>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code"> <%= pageData.tablePermissions.read[i].permission -%></code>
</dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">
<%= pageData.tablePermissions.read[i].title -%>
</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full text-sm flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>
<%= pageData.tablePermissions.read[i].description -%>
</p>
</dd>
</dl>
</li>
<% } %>
</ul>
</div>
</div>
</div>
<h3 id="consuming-webhooks">
Create Permissions
</h3>
<p>You need one of these permissions to create <%= pageData.title -%>:</p>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<div class="my-6">
<ul role="list" class="m-0 w-full">
<% for(var i=0; i<pageData.tablePermissions.create.length; i++) {%>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code
class="inline-code"> <%= pageData.tablePermissions.create[i].permission -%></code>
</dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">
<%= pageData.tablePermissions.create[i].title -%>
</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full text-sm flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>
<%= pageData.tablePermissions.create[i].description -%>
</p>
</dd>
</dl>
</li>
<% } %>
</ul>
</div>
</div>
</div>
<h3 id="consuming-webhooks">
Update Permissions
</h3>
<p>You need one of these permissions to update <%= pageData.title -%>:</p>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<div class="my-6">
<ul role="list" class="m-0 w-full">
<% for(var i=0; i<pageData.tablePermissions.update.length; i++) {%>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code
class="inline-code"> <%= pageData.tablePermissions.update[i].permission -%></code>
</dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">
<%= pageData.tablePermissions.update[i].title -%>
</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none text-sm [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>
<%= pageData.tablePermissions.update[i].description -%>
</p>
</dd>
</dl>
</li>
<% } %>
</ul>
</div>
</div>
</div>
<h3 id="consuming-webhooks">
Delete Permissions
</h3>
<p>You need one of these permissions to delete <%= pageData.title -%>:</p>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<div class="my-6">
<ul role="list" class="m-0 w-full">
<% for(var i=0; i<pageData.tablePermissions.delete.length; i++) {%>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code
class="inline-code"> <%= pageData.tablePermissions.delete[i].permission -%></code>
</dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">
<%= pageData.tablePermissions.delete[i].title -%>
</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full text-sm flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>
<%= pageData.tablePermissions.delete[i].description -%>
</p>
</dd>
</dl>
</li>
<% } %>
</ul>
</div>
</div>
</div>
<% } %>
<% if(pageData.isMasterAdminApiDocs){ %>
<div class="border-l-4 border-yellow-400 bg-yellow-50 p-4">
<div class="flex">
<div class="flex-shrink-0">
<svg class="h-5 w-5 text-yellow-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z"
clip-rule="evenodd" />
</svg>
</div>
<div class="ml-3">
<div class="text-sm font-medium text-yellow-700 mb-0">
This API can only be accessed through a Master API Token. You can create one on the Admin
Dashboard. Please add the token to the <code class="inline-code">ApiKey</code> header to make
the request.
</div>
</div>
</div>
</div>
<% } %>
</article>
</main>

View File

@@ -1,116 +0,0 @@
<main class="py-16">
<article class="prose ">
<h1>Pagination</h1>
<p class="lead">In this guide, we will look at how to work with paginated responses when querying the OneUptime
API. By default, all responses limit results to ten. </p>
<p>When an API response returns a list of objects, no matter the amount, pagination is supported. In paginated
responses, objects are nested in a <code class="inline-code">data</code> attribute. The API response also has
<code class="inline-code">count</code> attribute that indicates total count in the list with that query. You
can use the <code class="inline-code">limit</code> and <code class="inline-code">skip</code> query parameters
to query pages.</p>
<h2 id="example-using-cursors" class="scroll-mt-24">
Pagination Example
</h2>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>In this example, we request the list of monitors. As a result, we get a list of three monitors and can
tell by the <code class="inline-code">count</code> attribute that we have reached the end of the
result set</p>
<h2 id="example-using-cursors" class="scroll-mt-24">
Query Parameters
</h2>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">limit</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">Number</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Number of items you need to fetch. More items will lead to slower responses. Max limit is
100.</p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">skip</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">Number</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Number of items to skip. This can be useful when you are paginating items.</p>
</dd>
</dl>
</li>
</ul>
</div>
<h2 id="example-using-cursors" class="scroll-mt-24">
Response Body
</h2>
<div class="my-6">
<ul role="list"
class="m-0 max-w-[calc(theme(maxWidth.lg)-theme(spacing.8))] list-none divide-y divide-zinc-900/5 p-0 ">
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">data</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">JSON Array</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>List of items fetched.</p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">count</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">Number</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Total number of items in the database</p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">limit</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">Number</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Number of items you need to fetch. More items will lead to slower responses. Max limit is
100.</p>
</dd>
</dl>
</li>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code">skip</code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 ">Number</dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p>Number of items to skip. This can be useful when you are paginating items.</p>
</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<%- include('../partials/code', {title: "Example Pagination Request", requestUrl: "/api/monitors/get-list?skip=0&limit=3", requestType: "POST", code: pageData.requestCode }) -%>
<%- include('../partials/code', {title: "Example Pagination Response" , requestUrl: "", requestType: "", code: pageData.responseCode }) -%>
</div>
</div>
</article>
</main>

View File

@@ -1,38 +0,0 @@
<main class="py-16">
<article class="prose ">
<h1>Permissions</h1>
<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>
<h2 id="consuming-webhooks" >
Permissions List
</h2>
<p>Here is a list of all the permissions:</p>
<div class="grid grid-cols-1 items-start gap-x-16 gap-y-10 xl:max-w-none xl:grid-cols-2">
<div class="[&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<div class="my-6">
<ul role="list" class="m-0 w-full">
<% for(var i=0; i<pageData.permissions.length; i++) {%>
<li class="m-0 px-0 py-4 first:pt-0 last:pb-0">
<dl class="m-0 flex flex-wrap items-center gap-x-3 gap-y-2">
<dt class="sr-only">Name</dt>
<dd><code class="inline-code"> <%= pageData.permissions[i].permission -%></code></dd>
<dt class="sr-only">Type</dt>
<dd class="font-mono text-xs text-zinc-400 "><%= pageData.permissions[i].title -%></dd>
<dt class="sr-only">Description</dt>
<dd class="w-full flex-none [&amp;>:first-child]:mt-0 [&amp;>:last-child]:mb-0">
<p><%= pageData.permissions[i].description -%></p>
</dd>
</dl>
</li>
<% } %>
</ul>
</div>
</div>
</div>
</article>
</main>

View File

@@ -1,33 +0,0 @@
<div class="not-prose my-6 overflow-hidden rounded-2xl bg-zinc-900 shadow-md ">
<div class="flex min-h-[calc(theme(spacing.12)+1px)] flex-wrap items-start gap-x-4 border-b border-zinc-700 bg-zinc-800 px-4 ">
<h4 class="mr-auto text-xs font-semibold text-white mt-5"><%= title -%></h4>
</div>
<div class="group ">
<% if(requestType && requestUrl){ %>
<div class="flex h-9 items-center gap-2 border-b-white/7.5 bg-zinc-900 bg-white/2.5 px-4 ">
<% if( requestType === "GET"){ %>
<div class="dark flex"><span class="font-mono text-sm font-semibold leading-6 text-emerald-500 ">GET</span></div>
<% } %>
<% if( requestType === "POST"){ %>
<div class="dark flex"><span class="font-mono text-sm font-semibold leading-6 text-sky-500 ">POST</span></div>
<% } %>
<% if( requestType === "DELETE"){ %>
<div class="dark flex"><span class="font-mono text-sm font-semibold leading-6 text-red-500 ">DELETE</span></div>
<% } %>
<% if( requestType === "PUT"){ %>
<div class="dark flex"><span class="font-mono text-sm font-semibold leading-6 text-amber-500 ">PUT</span></div>
<% } %>
<span class="h-0.5 w-0.5 rounded-full bg-zinc-500"></span><span class="font-mono text-sm text-zinc-300"><%= requestUrl -%></span>
</div>
<% } %>
<% if(code){ %>
<div class="relative">
<pre class="overflow-x-auto p-4 text-xs text-white"><code class="text-sm"><%= code -%></code></pre>
</div>
<% } %>
</div>
</div>

View File

@@ -1,31 +0,0 @@
<footer class="mx-auto max-w-2xl space-y-10 pb-16 lg:max-w-5xl">
<div
class="flex flex-col items-center justify-between gap-5 border-t border-zinc-900/5 pt-8 sm:flex-row">
<p class="text-xs text-zinc-600 ">
OneUptime documentation is under MIT license. Please feel free to contribute and improve it on GitHub.
</p>
<div class="flex gap-4">
<a class="group" href="https://twitter.com/OneUptimeHQ" target="_blank">
<span class="sr-only">Follow us on Twitter</span>
<svg viewBox="0 0 20 20" aria-hidden="true"
class="h-5 w-5 fill-zinc-700 transition group-hover:fill-zinc-900 :fill-zinc-500">
<path
d="M16.712 6.652c.01.146.01.29.01.436 0 4.449-3.267 9.579-9.242 9.579v-.003a8.963 8.963 0 0 1-4.98-1.509 6.379 6.379 0 0 0 4.807-1.396c-1.39-.027-2.608-.966-3.035-2.337.487.097.99.077 1.467-.059-1.514-.316-2.606-1.696-2.606-3.3v-.041c.45.26.956.404 1.475.42C3.18 7.454 2.74 5.486 3.602 3.947c1.65 2.104 4.083 3.382 6.695 3.517a3.446 3.446 0 0 1 .94-3.217 3.172 3.172 0 0 1 4.596.148 6.38 6.38 0 0 0 2.063-.817 3.357 3.357 0 0 1-1.428 1.861 6.283 6.283 0 0 0 1.865-.53 6.735 6.735 0 0 1-1.62 1.744Z">
</path>
</svg>
</a>
<a class="group" href="https://github.com/oneuptime/oneuptime" target="_blank">
<span class="sr-only">Follow us on GitHub</span>
<svg viewBox="0 0 20 20" aria-hidden="true"
class="h-5 w-5 fill-zinc-700 transition group-hover:fill-zinc-900 :fill-zinc-500">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M10 1.667c-4.605 0-8.334 3.823-8.334 8.544 0 3.78 2.385 6.974 5.698 8.106.417.075.573-.182.573-.406 0-.203-.011-.875-.011-1.592-2.093.397-2.635-.522-2.802-1.002-.094-.246-.5-1.005-.854-1.207-.291-.16-.708-.556-.01-.567.656-.01 1.124.62 1.281.876.75 1.292 1.948.93 2.427.705.073-.555.291-.93.531-1.143-1.854-.213-3.791-.95-3.791-4.218 0-.929.322-1.698.854-2.296-.083-.214-.375-1.09.083-2.265 0 0 .698-.224 2.292.876a7.576 7.576 0 0 1 2.083-.288c.709 0 1.417.096 2.084.288 1.593-1.11 2.291-.875 2.291-.875.459 1.174.167 2.05.084 2.263.53.599.854 1.357.854 2.297 0 3.278-1.948 4.005-3.802 4.219.302.266.563.78.563 1.58 0 1.143-.011 2.061-.011 2.35 0 .224.156.491.573.405a8.365 8.365 0 0 0 4.11-3.116 8.707 8.707 0 0 0 1.567-4.99c0-4.721-3.73-8.545-8.334-8.545Z">
</path>
</svg>
</a>
</div>
</div>
</footer>

View File

@@ -1,211 +0,0 @@
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
rel="stylesheet">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/default.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
<script>
function applyStyles() {
applyStylesTo("h1", "font-bold text-2xl mb-5")
applyStylesTo("h2", "mb-5 scroll-mt-24 mt-24 font-bold text-xl")
applyStylesTo("h3", "mb-5 scroll-mt-24 mt-10 font-bold text-base")
applyStylesTo("p", "mb-5")
applyStylesTo("link", "text-emerald-500 hover:text-emerald-600")
applyStylesTo("model-inline-code", "rounded p-0.5 px-1 text-sm text-gray-50 bg-gray-600 border-2 border-gray-600 shadow")
applyStylesTo("inline-code", "rounded p-0.5 px-1 text-sm text-gray-500 bg-gray-100 border-2 border-gray-200")
}
function applyStylesTo(tagOrClassName, classList) {
let elements = document.getElementsByClassName(tagOrClassName);
if(elements.length === 0){
elements = document.getElementsByTagName(tagOrClassName);
}
for (var i = 0, all = elements.length; i < all; i++) {
classList.split(" ").map((classItem)=> {
elements[i].classList.add(classItem);
})
}
}
</script>
<style>
.hljs {
color: unset;
background-color: unset;
}
.hljs-string {
color: #6ee7b7
}
.hljs-number {
color: #7dd3fc
}
.hljs-punctuation {
color: #e5e7eb
}
.hljs-comment {
color: #9ca3af
}
.hljs-keyword{
color: #7dd3fc;
font-weight: unset;
}
.hljs-attr{
color: #fda4af;
}
* {
font-family: Inter;
}
input[type="datetime-local"]::-webkit-calendar-picker-indicator {
background: transparent;
bottom: 0;
color: transparent;
cursor: pointer;
height: auto;
left: 0;
position: absolute;
right: 0;
top: 0;
width: auto;
}
input[type="date"]::-webkit-calendar-picker-indicator {
background: transparent;
bottom: 0;
color: transparent;
cursor: pointer;
height: auto;
left: 0;
position: absolute;
right: 0;
top: 0;
width: auto;
}
</style>
<script src="https://cdn.tailwindcss.com"></script>
<% if(typeof enableGoogleTagManager !== 'undefined' ? enableGoogleTagManager : false){ %>
<!-- Google Tag Manager -->
<script>(function (w, d, s, l, i) {
w[l] = w[l] || []; w[l].push({
'gtm.start':
new Date().getTime(), event: 'gtm.js'
}); var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-PKQD5WH');</script>
<!-- End Google Tag Manager -->
<% } %>
<style>
.async-hide {
opacity: 0 !important
}
</style>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="shortcut icon" href="/img/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/img/favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/img/favicons/favicon-16x16.png">
<link rel="mask-icon" href="/img/favicons/safari-pinned-tab.svg" color="#32335b">
<meta name="msapplication-TileColor" content="#32335b">
<link rel="apple-touch-icon-precomposed" href="/img/ou-wb.svg">
<link rel="icon" href="/img/ou-wb.svg">
<link rel="image_src" type="image/png" href="/img/hou-wb.svg">
<link rel="manifest" href="/manifest.json">
<meta property="og:title" content="OneUptime - One Complete Observability platform.">
<meta property="og:url" content="https://oneuptime.com">
<meta property="og:type" content="website" />
<meta property="og: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. ">
<meta property="og:image" content="https://oneuptime.com/img/hou-wb.svg">
<meta name="twitter:card" content="summary">
<meta name="theme-color" content="#000000">
<meta name="twitter:image" content="/img/ou-wb.svg">
<meta name="twitter:site" content="@oneuptimeinc">
<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."
}
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>OneUptime API Reference - <%= pageTitle -%>
</title>
<meta name="description" content="<%= pageDescription -%>">
<meta name="next-head-count" content="4">
<script>
let darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
updateMode()
darkModeMediaQuery.addEventListener('change', updateModeWithoutTransitions)
window.addEventListener('storage', updateModeWithoutTransitions)
function updateMode() {
let isSystemDarkMode = darkModeMediaQuery.matches
let isDarkMode = window.localStorage.isDarkMode === 'true' || (!('isDarkMode' in window.localStorage) && isSystemDarkMode)
if (isDarkMode) {
document.documentElement.classList.add('dark')
} else {
document.documentElement.classList.remove('dark')
}
if (isDarkMode === isSystemDarkMode) {
delete window.localStorage.isDarkMode
}
}
function disableTransitionsTemporarily() {
document.documentElement.classList.add('[&_*]:!transition-none')
window.setTimeout(() => {
document.documentElement.classList.remove('[&_*]:!transition-none')
}, 0)
}
function updateModeWithoutTransitions() {
disableTransitionsTemporarily()
updateMode()
}
</script>
</head>

View File

@@ -1,270 +0,0 @@
<header class="contents lg:pointer-events-none lg:fixed lg:inset-0 lg:z-40 lg:flex">
<div
class="contents lg:pointer-events-auto lg:block lg:w-72 lg:overflow-y-auto lg:border-r lg:border-zinc-900/10 lg:px-6 lg:pt-4 lg:pb-8 xl:w-80">
<div class="hidden lg:flex">
<a aria-label="Home" href="/">
<svg class="h-6 -ml-48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="500" zoomAndPan="magnify" viewBox="0 0 375 74.999997" height="100"
preserveAspectRatio="xMidYMid meet" version="1.0">
<defs>
<g />
<clipPath id="1d83d73318">
<path
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 " />
</g>
</g>
</g>
</svg>
</a>
</div>
<div class="fixed inset-x-0 top-0 z-50 flex h-14 border-b-2 items-center justify-between gap-12 px-4 transition sm:px-6 lg:left-72 lg:z-30 lg:px-8 xl:left-80 backdrop-blur-sm lg:left-72 xl:left-80 bg-white/[var(--bg-opacity-light)] /[var(--bg-opacity-dark)]"
style="--bg-opacity-light:0.5; ">
<div class="absolute inset-x-0 top-full h-px transition bg-zinc-900/7.5 "></div>
<div class="hidden lg:block lg:max-w-md lg:flex-auto">
<!-- <button type="button"
class="hidden h-8 w-full items-center gap-2 rounded-full bg-white pl-2 pr-3 text-sm text-zinc-500 ring-1 ring-zinc-900/10 transition hover:ring-zinc-900/20 lg:flex focus:[&amp;:not(:focus-visible)]:outline-none">
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true" class="h-5 w-5 stroke-current">
<path stroke-linecap="round" stroke-linejoin="round"
d="M12.01 12a4.25 4.25 0 1 0-6.02-6 4.25 4.25 0 0 0 6.02 6Zm0 0 3.24 3.25"></path>
</svg>
Find something...<kbd class="ml-auto text-2xs text-zinc-400 "><kbd
class="font-sans">⌘</kbd><kbd class="font-sans">K</kbd></kbd>
</button> -->
</div>
<div class="flex items-center gap-5 lg:hidden">
<button type="button"
class="flex h-6 w-6 items-center justify-center rounded-md transition hover:bg-zinc-900/5 "
aria-label="Toggle navigation">
<svg viewBox="0 0 10 9" fill="none" stroke-linecap="round" aria-hidden="true"
class="w-2.5 stroke-zinc-900 ">
<path d="M.5 1h9M.5 8h9M.5 4.5h9"></path>
</svg>
</button>
<a aria-label="Home" href="/">
<svg viewBox="0 0 99 24" aria-hidden="true" class="h-6">
<path class="fill-emerald-400"
d="M16 8a5 5 0 0 0-5-5H5a5 5 0 0 0-5 5v13.927a1 1 0 0 0 1.623.782l3.684-2.93a4 4 0 0 1 2.49-.87H11a5 5 0 0 0 5-5V8Z">
</path>
<path class="fill-zinc-900 "
d="M26.538 18h2.654v-3.999h2.576c2.672 0 4.456-1.723 4.456-4.333V9.65c0-2.61-1.784-4.333-4.456-4.333h-5.23V18Zm4.58-10.582c1.52 0 2.416.8 2.416 2.241v.018c0 1.441-.896 2.25-2.417 2.25h-1.925V7.418h1.925ZM38.051 18h2.566v-5.414c0-1.371.923-2.206 2.382-2.206.396 0 .791.061 1.178.15V8.287a3.843 3.843 0 0 0-.958-.123c-1.257 0-2.136.615-2.443 1.661h-.159V8.323h-2.566V18Zm11.55.202c2.979 0 4.772-1.88 4.772-5.036v-.018c0-3.128-1.82-5.036-4.773-5.036-2.953 0-4.772 1.916-4.772 5.036v.018c0 3.146 1.793 5.036 4.772 5.036Zm0-2.013c-1.372 0-2.145-1.116-2.145-3.023v-.018c0-1.89.782-3.023 2.144-3.023 1.354 0 2.145 1.134 2.145 3.023v.018c0 1.907-.782 3.023-2.145 3.023Zm10.52 1.846c.492 0 .967-.053 1.283-.114v-1.907a6.057 6.057 0 0 1-.755.044c-.87 0-1.24-.387-1.24-1.257v-4.544h1.995V8.323H59.41V6.012h-2.592v2.311h-1.495v1.934h1.495v5.133c0 1.88.949 2.645 3.304 2.645Zm7.287.167c2.98 0 4.772-1.88 4.772-5.036v-.018c0-3.128-1.82-5.036-4.772-5.036-2.954 0-4.773 1.916-4.773 5.036v.018c0 3.146 1.793 5.036 4.773 5.036Zm0-2.013c-1.372 0-2.145-1.116-2.145-3.023v-.018c0-1.89.782-3.023 2.145-3.023 1.353 0 2.144 1.134 2.144 3.023v.018c0 1.907-.782 3.023-2.144 3.023Zm10.767 2.013c2.522 0 4.034-1.353 4.297-3.463l.01-.053h-2.374l-.017.036c-.229.966-.853 1.467-1.908 1.467-1.37 0-2.135-1.08-2.135-3.04v-.018c0-1.934.755-3.006 2.135-3.006 1.099 0 1.74.615 1.908 1.556l.008.017h2.391v-.026c-.228-2.162-1.749-3.56-4.315-3.56-3.033 0-4.738 1.837-4.738 5.019v.017c0 3.217 1.714 5.054 4.738 5.054Zm10.257 0c2.98 0 4.772-1.88 4.772-5.036v-.018c0-3.128-1.82-5.036-4.772-5.036-2.953 0-4.773 1.916-4.773 5.036v.018c0 3.146 1.793 5.036 4.773 5.036Zm0-2.013c-1.371 0-2.145-1.116-2.145-3.023v-.018c0-1.89.782-3.023 2.145-3.023 1.353 0 2.144 1.134 2.144 3.023v.018c0 1.907-.782 3.023-2.144 3.023ZM95.025 18h2.566V4.623h-2.566V18Z">
</path>
</svg>
</a>
</div>
<div class="flex items-center gap-5">
<nav class="hidden md:block">
<ul role="list" class="flex items-center gap-8">
<li><a class="text-sm leading-5 text-zinc-600 transition hover:text-zinc-900 "
href="/">Home</a></li>
<li><a class="text-sm leading-5 text-zinc-600 transition hover:text-zinc-900 "
target="_blank"
href="https://join.slack.com/t/oneuptimesupport/shared_invite/zt-2pz5p1uhe-Fpmc7bv5ZE5xRMe7qJnwmA">Chat
with us on Slack</a></li>
<li><a class="text-sm leading-5 text-zinc-600 transition hover:text-zinc-900 "
href="/support">Support</a></li>
<li><a class="text-sm leading-5 text-zinc-600 transition hover:text-zinc-900 "
href="/reference/openapi" type="_blank">OpenAPI Spec</a></li>
<li><a class="text-sm leading-5 text-zinc-600 transition hover:text-zinc-900 "
href="https://github.com/oneuptime/oneuptime">GitHub</a></li>
</ul>
</nav>
<div class="hidden md:block md:h-5 md:w-px md:bg-zinc-900/10 md:"></div>
<div class="flex gap-4">
<div class="contents lg:hidden">
<button type="button"
class="flex h-6 w-6 items-center justify-center rounded-md transition hover:bg-zinc-900/5 lg:hidden focus:[&amp;:not(:focus-visible)]:outline-none"
aria-label="Find something...">
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"
class="h-5 w-5 stroke-zinc-900 ">
<path stroke-linecap="round" stroke-linejoin="round"
d="M12.01 12a4.25 4.25 0 1 0-6.02-6 4.25 4.25 0 0 0 6.02 6Zm0 0 3.24 3.25">
</path>
</svg>
</button>
</div>
<!-- <button type="button"
class="flex h-6 w-6 items-center justify-center rounded-md transition hover:bg-zinc-900/5 "
aria-label="Toggle dark mode">
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"
class="h-5 w-5 stroke-zinc-900 ">
<path d="M12.5 10a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0Z"></path>
<path stroke-linecap="round"
d="M10 5.5v-1M13.182 6.818l.707-.707M14.5 10h1M13.182 13.182l.707.707M10 15.5v-1M6.11 13.889l.708-.707M4.5 10h1M6.11 6.111l.708.707">
</path>
</svg>
<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"
class="hidden h-5 w-5 stroke-white ">
<path d="M15.224 11.724a5.5 5.5 0 0 1-6.949-6.949 5.5 5.5 0 1 0 6.949 6.949Z"></path>
</svg>
</button> -->
</div>
<div class="hidden min-[416px]:contents"><a
class="inline-flex gap-0.5 justify-center overflow-hidden text-sm font-medium transition rounded-full bg-zinc-900 py-1 px-3 text-white hover:bg-zinc-700 "
href="/dashboard">Sign in</a></div>
</div>
</div>
<nav class="hidden lg:mt-10 lg:block">
<ul role="list">
<li class="md:hidden"><a
class="block py-1 text-sm text-zinc-600 transition hover:text-zinc-900 "
href="/">API</a></li>
<li class="md:hidden"><a
class="block py-1 text-sm text-zinc-600 transition hover:text-zinc-900 "
href="/#">Documentation</a></li>
<li class="md:hidden"><a
class="block py-1 text-sm text-zinc-600 transition hover:text-zinc-900 "
href="/#">Support</a></li>
<li class="relative mt-6 md:mt-0">
<h6 class="text-sm font-semibold text-zinc-900 ">Guides</h6>
<div class="relative mt-3 pl-2">
<div class="absolute inset-x-0 top-0 bg-zinc-800/2.5 will-change-transform "
data-projection-id="32"
style="height: 64px; top: 0px; border-radius: 8px; opacity: 1; transform: none; transform-origin: 50% 50% 0px;">
</div>
<div class="absolute inset-y-0 left-2 w-px bg-zinc-900/10 "
style="transform: none; transform-origin: 50% 50% 0px;"></div>
<div class="absolute left-2 h-6 w-px bg-emerald-500" data-projection-id="33"
style="top: 4px; opacity: 1;"></div>
<ul role="list" class="border-l border-transparent">
<li class="relative">
<a class="flex justify-between gap-2 py-1 pr-3 text-sm transition pl-4 text-zinc-900 "
href="/reference/introduction" aria-current="page"><span
class="truncate">Introduction</span></a>
</li>
<li class="relative" style="transform: none; transform-origin: 50% 50% 0px;"><a
class="flex justify-between gap-2 py-1 pr-3 text-sm transition pl-4 text-zinc-600 hover:text-zinc-900 "
href="/reference/authentication"><span class="truncate">Authentication</span></a></li>
<li class="relative" style="transform: none; transform-origin: 50% 50% 0px;"><a
class="flex justify-between gap-2 py-1 pr-3 text-sm transition pl-4 text-zinc-600 hover:text-zinc-900 "
href="/reference/pagination"><span class="truncate">Pagination</span></a></li>
<li class="relative" style="transform: none; transform-origin: 50% 50% 0px;"><a
class="flex justify-between gap-2 py-1 pr-3 text-sm transition pl-4 text-zinc-600 hover:text-zinc-900 "
href="/reference/permissions"><span class="truncate">Permissions</span></a></li>
<li class="relative" style="transform: none; transform-origin: 50% 50% 0px;"><a
class="flex justify-between gap-2 py-1 pr-3 text-sm transition pl-4 text-zinc-600 hover:text-zinc-900 "
href="/reference/data-types"><span class="truncate">Data Types</span></a></li>
<li class="relative" style="transform: none; transform-origin: 50% 50% 0px;"><a
class="flex justify-between gap-2 py-1 pr-3 text-sm transition pl-4 text-zinc-600 hover:text-zinc-900 "
href="/reference/errors"><span class="truncate">Errors</span></a></li>
<li class="relative" style="transform: none; transform-origin: 50% 50% 0px;"><a
class="flex justify-between gap-2 py-1 pr-3 text-sm transition pl-4 text-zinc-600 hover:text-zinc-900 "
href="/reference/openapi"><span class="truncate">OpenAPI Spec</span></a></li>
</ul>
</div>
</li>
<li class="relative mt-6">
<h6 class="text-sm font-semibold text-zinc-900 "
style="transform: none; transform-origin: 50% 50% 0px;">Resources</h6>
<div class="relative mt-3 pl-2">
<div class="absolute inset-y-0 left-2 w-px bg-zinc-900/10 "
style="transform: none; transform-origin: 50% 50% 0px;"></div>
<ul role="list" class="border-l border-transparent">
<% for(var i=0; i<resources.length; i++) {%>
<li class="relative" style="transform: none; transform-origin: 50% 50% 0px;"><a
class="flex justify-between gap-2 py-1 pr-3 text-sm transition pl-4 text-zinc-600 hover:text-zinc-900 "
href="/reference/<%= resources[i].path -%>"><span class="truncate">
<%= resources[i].name -%>
</span></a></li>
<% } %>
</ul>
</div>
</li>
<li class="sticky bottom-0 z-10 mt-6 min-[416px]:hidden"><a
class="inline-flex gap-0.5 justify-center overflow-hidden text-sm font-medium transition rounded-full bg-zinc-900 py-1 px-3 text-white hover:bg-zinc-700 :bg-emerald-400 w-full"
href="/#">Sign in</a></li>
</ul>
</nav>
</div>
</header>

View File

@@ -1,93 +0,0 @@
#
# Accounts Dockerfile
#
# Pull base image nodejs image.
FROM public.ecr.aws/docker/library/node:24.9-alpine3.21
RUN mkdir /tmp/npm && chmod 2777 /tmp/npm && chown 1000:1000 /tmp/npm && npm config set cache /tmp/npm --global
RUN npm config set fetch-retries 5
RUN npm config set fetch-retry-mintimeout 100000
RUN npm config set fetch-retry-maxtimeout 600000
ARG GIT_SHA
ARG APP_VERSION
ARG IS_ENTERPRISE_EDITION=false
ENV GIT_SHA=${GIT_SHA}
ENV APP_VERSION=${APP_VERSION}
ENV IS_ENTERPRISE_EDITION=${IS_ENTERPRISE_EDITION}
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
# IF APP_VERSION is not set, set it to 1.0.0
RUN if [ -z "$APP_VERSION" ]; then export APP_VERSION=1.0.0; fi
# Install bash.
RUN apk add bash && apk add curl
#Use bash shell by default
SHELL ["/bin/bash", "-c"]
RUN mkdir /usr/src
WORKDIR /usr/src/Common
COPY ./Common/package*.json /usr/src/Common/
# Set version in ./Common/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Common/package.json
RUN npm install
COPY ./Common /usr/src/Common
ENV PRODUCTION=true
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
WORKDIR /usr/src/app
# Install app dependencies
COPY ./Accounts/package*.json /usr/src/app/
RUN npm install
# Expose ports.
# - 3003: accounts
EXPOSE 3003
{{ if eq .Env.ENVIRONMENT "development" }}
#Run the app
CMD [ "npm", "run", "dev" ]
{{ else }}
# Copy app source
COPY ./Accounts /usr/src/app
# Bundle app source
RUN npm run build
# Set permission to write logs and cache in case container run as non root
RUN chown -R 1000:1000 "/tmp/npm" && chmod -R 2777 "/tmp/npm"
#Run the app
CMD [ "npm", "start" ]
{{ end }}

4
Accounts/index.d.ts vendored
View File

@@ -1,4 +0,0 @@
declare module "*.png";
declare module "*.svg";
declare module "*.jpg";
declare module "*.gif";

View File

@@ -1,18 +0,0 @@
import React from "react";
const ForbiddenPage: () => JSX.Element = () => {
return (
<div className="flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8">
<div className="sm:mx-auto sm:w-full sm:max-w-md">
<h2 className="mt-6 text-center text-2xl tracking-tight text-gray-900">
Forbidden
</h2>
<p className="mt-2 text-center text-sm text-gray-600">
You do not have permission to access this page.
</p>
</div>
</div>
);
};
export default ForbiddenPage;

View File

@@ -1,18 +0,0 @@
import React from "react";
const LoginPage: () => JSX.Element = () => {
return (
<div className="flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8">
<div className="sm:mx-auto sm:w-full sm:max-w-md">
<h2 className="mt-6 text-center text-2xl tracking-tight text-gray-900">
Page not found
</h2>
<p className="mt-2 text-center text-sm text-gray-600">
Page you are looking for does not exist.
</p>
</div>
</div>
);
};
export default LoginPage;

View File

@@ -1,121 +0,0 @@
import { VERIFY_EMAIL_API_URL } from "../Utils/ApiPaths";
import Route from "Common/Types/API/Route";
import URL from "Common/Types/API/URL";
import { PromiseVoidFunction } from "Common/Types/FunctionTypes";
import ObjectID from "Common/Types/ObjectID";
import { FormType } from "Common/UI/Components/Forms/ModelForm";
import Link from "Common/UI/Components/Link/Link";
import PageLoader from "Common/UI/Components/Loader/PageLoader";
import OneUptimeLogo from "Common/UI/Images/logos/OneUptimeSVG/3-transparent.svg";
import API from "Common/UI/Utils/API/API";
import ModelAPI from "Common/UI/Utils/ModelAPI/ModelAPI";
import Navigation from "Common/UI/Utils/Navigation";
import EmailVerificationToken from "Common/Models/DatabaseModels/EmailVerificationToken";
import React, { useEffect, useState } from "react";
const VerifyEmail: () => JSX.Element = () => {
const apiUrl: URL = VERIFY_EMAIL_API_URL;
const [error, setError] = useState<string>("");
const [isLoading, setIsLoading] = useState<boolean>(true);
const init: PromiseVoidFunction = async (): Promise<void> => {
// Ping an API here.
setError("");
setIsLoading(true);
try {
// strip data.
const emailverificationToken: EmailVerificationToken =
new EmailVerificationToken();
emailverificationToken.token = new ObjectID(
Navigation.getLastParam()?.toString().replace("/", "") || "",
);
await ModelAPI.createOrUpdate<EmailVerificationToken>({
model: emailverificationToken,
modelType: EmailVerificationToken,
formType: FormType.Create,
miscDataProps: {},
requestOptions: {
overrideRequestUrl: apiUrl,
},
});
} catch (err) {
setError(API.getFriendlyMessage(err));
}
setIsLoading(false);
};
useEffect(() => {
init().catch((err: Error) => {
setError(err.toString());
});
}, []);
if (isLoading) {
return <PageLoader isVisible={true} />;
}
return (
<div className="auth-page">
<div className="container-fluid p-0">
<div className="row g-0">
<div className="col-xxl-4 col-lg-4 col-md-3"></div>
<div className="col-xxl-4 col-lg-4 col-md-6">
<div className="auth-full-page-content d-flex p-sm-5 p-4">
<div className="w-100">
<div className="d-flex flex-column h-100">
<div className="auth-content my-auto">
<div
className="mt-4 text-center flex justify-center"
style={{ marginBottom: "40px" }}
>
<img
style={{ height: "50px" }}
src={`${OneUptimeLogo}`}
/>
</div>
{!error && (
<div className="text-center">
<h5 className="mb-0">Your email is verified.</h5>
<p className="text-muted mt-2 mb-0">
Thank you for verifying your email. You can now log in
to OneUptime.{" "}
</p>
</div>
)}
{error && (
<div className="text-center">
<h5 className="mb-0">Sorry, something went wrong!</h5>
<p className="text-muted mt-2 mb-0">{error}</p>
</div>
)}
<div className="mt-5 text-center">
<p className="text-muted mb-0">
Return to sign in?{" "}
<Link
to={new Route("/accounts/login")}
className="hover:underline text-primary fw-semibold"
>
Login.
</Link>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div className="col-xxl-4 col-lg-4 col-md-3"></div>
</div>
</div>
</div>
);
};
export default VerifyEmail;

View File

@@ -1,89 +0,0 @@
#
# AdminDashboard Dockerfile
#
# Pull base image nodejs image.
FROM public.ecr.aws/docker/library/node:24.9-alpine3.21
RUN mkdir /tmp/npm && chmod 2777 /tmp/npm && chown 1000:1000 /tmp/npm && npm config set cache /tmp/npm --global
RUN npm config set fetch-retries 5
RUN npm config set fetch-retry-mintimeout 100000
RUN npm config set fetch-retry-maxtimeout 600000
ARG GIT_SHA
ARG APP_VERSION
ARG IS_ENTERPRISE_EDITION=false
ENV GIT_SHA=${GIT_SHA}
ENV APP_VERSION=${APP_VERSION}
ENV IS_ENTERPRISE_EDITION=${IS_ENTERPRISE_EDITION}
ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
# IF APP_VERSION is not set, set it to 1.0.0
RUN if [ -z "$APP_VERSION" ]; then export APP_VERSION=1.0.0; fi
# Install bash.
RUN apk add bash && apk add curl
#Use bash shell by default
SHELL ["/bin/bash", "-c"]
RUN mkdir /usr/src
WORKDIR /usr/src/Common
COPY ./Common/package*.json /usr/src/Common/
# Set version in ./Common/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Common/package.json
RUN npm install
COPY ./Common /usr/src/Common
ENV PRODUCTION=true
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
WORKDIR /usr/src/app
# Install app dependencies
COPY ./AdminDashboard/package*.json /usr/src/app/
RUN npm install
# Expose ports.
# - 3158: AdminDashboard
EXPOSE 3158
{{ if eq .Env.ENVIRONMENT "development" }}
#Run the app
CMD [ "npm", "run", "dev" ]
{{ else }}
# Copy app source
COPY ./AdminDashboard /usr/src/app
# Bundle app source
RUN npm run build
# Set permission to write logs and cache in case container run as non root
RUN chown -R 1000:1000 "/tmp/npm" && chmod -R 2777 "/tmp/npm"
#Run the app
CMD [ "npm", "start" ]
{{ end }}

View File

@@ -1,4 +0,0 @@
declare module "*.png";
declare module "*.svg";
declare module "*.jpg";
declare module "*.gif";

View File

@@ -7,8 +7,8 @@ FROM public.ecr.aws/docker/library/node:24.9-alpine3.21
RUN mkdir /tmp/npm && chmod 2777 /tmp/npm && chown 1000:1000 /tmp/npm && npm config set cache /tmp/npm --global
RUN npm config set fetch-retries 5
RUN npm config set fetch-retry-mintimeout 100000
RUN npm config set fetch-retry-maxtimeout 600000
RUN npm config set fetch-retry-mintimeout 20000
RUN npm config set fetch-retry-maxtimeout 60000
@@ -56,6 +56,24 @@ COPY ./App/package*.json /usr/src/app/
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/app/package.json
RUN npm install
WORKDIR /usr/src/app/FeatureSet/Accounts
COPY ./App/FeatureSet/Accounts/package*.json /usr/src/app/FeatureSet/Accounts/
RUN npm install
WORKDIR /usr/src/app/FeatureSet/Dashboard
COPY ./App/FeatureSet/Dashboard/package*.json /usr/src/app/FeatureSet/Dashboard/
RUN npm install
WORKDIR /usr/src/app/FeatureSet/AdminDashboard
COPY ./App/FeatureSet/AdminDashboard/package*.json /usr/src/app/FeatureSet/AdminDashboard/
RUN npm install
WORKDIR /usr/src/app/FeatureSet/StatusPage
COPY ./App/FeatureSet/StatusPage/package*.json /usr/src/app/FeatureSet/StatusPage/
RUN npm install
WORKDIR /usr/src/app
# Expose ports.
# - 3002: OneUptime-backend
EXPOSE 3002
@@ -66,6 +84,13 @@ CMD [ "npm", "run", "dev" ]
{{ else }}
# Copy app source
COPY ./App /usr/src/app
# Copy frontend sources
COPY ./App/FeatureSet/Accounts /usr/src/app/FeatureSet/Accounts
COPY ./App/FeatureSet/Dashboard /usr/src/app/FeatureSet/Dashboard
COPY ./App/FeatureSet/AdminDashboard /usr/src/app/FeatureSet/AdminDashboard
COPY ./App/FeatureSet/StatusPage /usr/src/app/FeatureSet/StatusPage
# Bundle frontend source
RUN npm run build-frontends:prod
# Bundle app source
RUN npm run compile
# Set permission to write logs and cache in case container run as non root

Some files were not shown because too many files have changed in this diff Show More