Commit Graph
111 Commits
Author SHA1 Message Date
gorkem-bwl 4ca24c794e feat: add per-monitor Globalping toggle
Add a globalpingEnabled boolean to the Monitor model so users can
opt-in to global location checks per monitor during creation/edit.

## Changes
- Add globalpingEnabled field to server types, Mongoose model,
  Joi validation, and repository mappers
- Add globalpingEnabled to client Monitor type, Zod schemas for
  HTTP and ping monitors, and form defaults
- Add "Global monitoring" ConfigBox with Switch toggle to the
  monitor creation/edit form, visible for HTTP and ping types
- Queue helper and monitorService now check globalpingEnabled
  before running Globalping checks or fetching location data
- Add translation keys for the new form section

## Benefits
- Users can selectively enable Globalping on monitors that need it
  rather than running location checks on every HTTP/ping monitor
- Reduces unnecessary API usage and keeps the UI clean for monitors
  that only need local checks
2026-02-19 12:11:56 -05:00
gorkem-bwl 1966134647 refactor: switch Globalping to dynamic tier-based location lookup
## Changes
- Remove per-monitor location selection — locations are now determined
  globally by the tier setting in admin settings (3, 6, or 15 locations)
- GlobalpingService reads tier from settings on each check run, so
  changing the tier in settings immediately affects all HTTP/ping monitors
- Add resolveLocationId() to map Globalping probe results back to
  configured location IDs for proper grouping
- Export LOCATION_LABELS for human-readable location names on the client
- Remove unused locations field from Zod schemas and form defaults
- Remove per-monitor location ConfigBox from CreateMonitor page
- Fix settingsController.updateAppSettings missing try/catch
- Fix MongoSettingsRepository duplicate findOneAndUpdate call
- Use typed LocationCheckData instead of Record<string, any>
- Remove unused REVERSE_LOCATION_MAP from globalpingService

## Benefits
- Changing the location tier in settings takes effect immediately for
  all monitors without needing to edit each one individually
- Cleaner separation of concerns — location configuration lives in
  settings, not scattered across monitors
- Human-readable location labels shown in uptime details tabs
2026-02-19 10:58:18 -05:00
gorkem-bwl 27c3a9e12b feat: add location tier presets (3, 6, 15) to Globalping settings
## Changes

### Server
- Expand LOCATION_MAP to support city/country-level locations for the
  15-location tier (US East/West, Toronto, London, Frankfurt, Amsterdam,
  Warsaw, Tokyo, Singapore, Mumbai, Sydney, Brazil, Santiago, Johannesburg,
  Dubai)
- Add globalpingLocationsTier field to Settings type, Mongoose model,
  repository mapper, and Joi validation (valid: 3, 6, 15, default: 6)
- Update getGlobalpingLocations endpoint to return locations based on
  the configured tier from settings
- Pass settingsService to MonitorController for tier lookup

### Client
- Add tier selector (radio buttons) to SettingsGlobalping component
  with descriptions for each option:
  - 3 locations: North America, Europe, Asia
  - 6 locations: all continents
  - 15 locations: city-level global coverage
- Add rate limits info box explaining credit usage per tier:
  - Without token: 250 tests/hour
  - With free token: 500 tests/hour
  - GitHub sponsors: higher limits
- Add all translation keys for tier labels, descriptions, and rate info

## Benefits
- Admins can choose the right balance of coverage vs API usage
- Rate limit info helps users decide whether they need authentication
2026-02-19 10:31:15 -05:00
gorkem-bwl e39b44db6c feat: add multi-location uptime monitoring via Globalping
## Changes

### Server
- Add `locations` field to Monitor model and types (up to 5 locations per monitor)
- Add `location` field to Check metadata for per-location tracking
- Add `globalpingApiKey` to AppSettings for API key management
- Create GlobalpingService that wraps the Globalping SDK to run distributed
  HTTP/ping checks from multiple global locations (NA, EU, AS, SA, OC, AF)
- Extend SuperSimpleQueueHelper with fire-and-forget Globalping checks that
  run alongside the existing local check without affecting the main pipeline
- Add location-aware check queries with aggregation pipeline grouping by
  location in MongoChecksRepository
- Filter location checks from main uptime aggregation to preserve local check
  as source of truth for status/incidents
- Extend monitor details endpoint to return per-location check data
- Add GET /globalping/locations endpoint for available location options
- Add globalpingKeySet to settings response
- Add Joi validation for locations and globalpingApiKey fields

### Client
- Add locations multi-select (Autocomplete with chips) to monitor creation
  form, shown only for HTTP and ping monitor types
- Add SettingsGlobalping component for API key management (matching existing
  PageSpeed pattern with set/reset flow)
- Add per-location breakdown section to uptime details page with tabs,
  avg response time, uptime percentage, and response time charts
- Add globe icon with tooltip to monitor table for monitors with locations
- Add Zod validation for locations field in HTTP and ping schemas
- Add all translation keys for globalping settings, locations form, and
  location details sections

## Benefits
- Users gain visibility into geographic availability and latency data
- Local check remains the source of truth, Globalping runs alongside
- Supports up to 5 locations per monitor with 6 continent-level options
- Graceful degradation when API key is not configured or rate limited
2026-02-19 00:45:14 -05:00
Alex Holliday 8cbde4a705 initial commit 2026-02-18 18:47:58 +00:00
karenvicent e921b20fe3 fix zod patterns 2026-02-17 22:21:56 -05:00
karenvicent cd501e46cd Merge branch 'develop' into settings-zod-schema 2026-02-16 00:12:08 -05:00
karenvicent 93c15588a4 implement schema zod and validation on settings 2026-02-16 00:09:08 -05:00
Alex Holliday fd2c54d3d3 remove unused 2026-02-13 20:42:26 +00:00
Alex Holliday cafea2bf5d remove unused utils, convert utils to TS 2026-02-12 19:13:53 +00:00
karenvicent 0941f3ce1a zod schema and hook 2026-02-12 12:13:36 -05:00
Alex Holliday 28affa1cd1 submit 2026-02-09 21:56:28 +00:00
Alex Holliday ece6970fa7 hook up role 2026-02-09 20:38:04 +00:00
Alex Holliday 264e6f7d1f form submission 2026-02-09 18:29:36 +00:00
Alex Holliday d69cec9730 dialog 2026-02-09 17:52:14 +00:00
Alex Holliday b6004241e7 validation 2026-02-07 20:54:17 +00:00
Alex Holliday 1808db5cd7 form 2026-02-07 01:04:20 +00:00
Alex Holliday 5152336591 fix validation, derrive teamID and Roles from tokens 2026-02-06 23:31:07 +00:00
Alex Holliday 78b920aaf6 missing fields 2026-02-06 23:07:17 +00:00
Alex Holliday 2d84fae470 form 2026-02-06 22:53:41 +00:00
Alex Holliday 6a0f3426b3 recovery form, fix email service 2026-02-06 22:14:42 +00:00
Alex Holliday ea68e660fc login UI 2026-02-06 20:53:48 +00:00
Alex Holliday f0b152fc8f duration 2026-02-04 22:55:54 +00:00
Alex Holliday f0b2292f0a general 2026-02-04 21:45:39 +00:00
Alex Holliday ae7524f507 monitors details 2026-02-02 23:57:14 +00:00
Alex Holliday 54d71bef61 monitors 2026-02-02 23:46:15 +00:00
Alex Holliday f685c9cd5d useAdvncedMatching 2026-01-30 20:21:31 +00:00
Alex Holliday 67da6c61cf put/create 2026-01-30 19:41:41 +00:00
Alex Holliday 084eed85bf add incidents config box 2026-01-29 23:39:14 +00:00
Alex Holliday 841d25ce3e general 2026-01-29 22:47:29 +00:00
Alex Holliday 4b92dbd19b initial commit 2026-01-29 22:17:56 +00:00
Alex Holliday 2dca5ccb67 format 2026-01-29 21:09:00 +00:00
Alex Holliday 0b5e28c296 form 2026-01-29 19:29:36 +00:00
Alexander Holliday d82877b28d Merge pull request #3121 from web-engineer/fix/3120-data-leak
3120 remove URL's from data when they are supposed to be disabled
2026-01-15 14:24:47 -08:00
Alex Holliday 6b5fd8d17f update, pause 2026-01-15 18:21:36 +00:00
Craig Lawson 526fa24eab validation bug 2026-01-10 22:23:31 +00:00
karenvicent b12bdfcc22 fix traslator error and add format 2025-12-22 12:36:29 -05:00
Alexander Holliday 03d1dcaefb Merge branch 'develop' into feat/choose-disks-monitor 2025-12-18 10:53:01 -08:00
ppmar ff2f84d46b resolve disk selection persistence and validation issues 2025-12-17 23:50:40 +01:00
Sajanpreet Singh 72bcc0d020 Remove business V2 logic 2025-12-04 10:31:45 -06:00
Tudor Gradinaru 1fad85d48d feat: Add Matrix notification support Fixes #3034 2025-10-25 18:35:15 +03:00
Alex Holliday 938d9b6642 feat/v2/uptime/create 2025-10-03 12:45:21 -07:00
Owaise 386db5029a Addition of incident tab in creation and config page which is same. 2025-09-19 00:03:18 +05:30
gorkem-bwl ba757b9aa4 style: fix prettier formatting in validation.js 2025-08-29 00:58:03 -04:00
gorkem-bwlandClaude c445463c0c refactor: improve Docker container matching with deterministic priority-based logic
Address code review feedback to eliminate ambiguity issues and improve reliability:

**Backend Improvements:**
- Implement priority-based matching: exact ID → exact name → partial ID
- Add input normalization (strip leading slashes, case-insensitive)
- Add ambiguity detection with warning logs for debugging
- Maintain full backwards compatibility with existing monitors

**Frontend Improvements:**
- Update validation regex to support leading slashes (/container-name)
- Improve error message clarity for user guidance

**Resolves Ambiguity Issues:**
- Container name "abc" vs Container ID "abc123..." now deterministic
- Multiple containers with similar names handled predictably
- Case-insensitive matching for better user experience

**Priority Order:**
1. Exact full ID match (64-char) - highest priority
2. Exact container name match - case-insensitive
3. Partial ID match - backwards compatibility fallback

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 00:53:40 -04:00
Alex Holliday ced2417c98 add incident config 2025-08-18 15:34:30 -07:00
Br0wnHammer 613fbf8c39 Fix: Minor Changes 2025-08-19 01:11:56 +05:30
Alex Holliday 993339d0d1 update pager_duty validation 2025-08-17 20:21:18 -07:00
Burak Arslan 4c2c452b91 Improve validation and error handling on form field 2025-08-06 00:53:35 +03:00
Burak Arslan b53650a50f Run npm run format 2025-08-02 02:25:58 +03:00