aboutsummaryrefslogtreecommitdiff
path: root/internal/config
Commit message (Collapse)AuthorAgeFilesLines
* feat: Add SSE streaming for instant page load and real-time updatesFuwn2026-01-281-4/+2
| | | | | | | | | | | New refresh_mode 'stream' eliminates blocking database queries from initial page load. Page renders instantly with skeleton UI, then hydrates via SSE. - Add SSE hub for managing client connections and broadcasting - Add /api/stream endpoint with init and update events - Add stream.html skeleton template with loading animations - Wire scheduler to broadcast on check completion - Backwards compatible: page/api modes unchanged
* feat: Switch to libsql driver for Turso compatibilityFuwn2026-01-231-0/+9
|
* feat: Add database maintenance with backup/reset modes and triggersFuwn2026-01-231-2/+18
|
* feat: Add config imports for monitor inheritanceFuwn2026-01-221-2/+84
|
* feat: Use composite group/name key for monitor identificationFuwn2026-01-201-4/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously monitors were identified by just their name, causing monitors with the same name in different groups to share data in the database. Changes: - Add ID() method to MonitorConfig returning 'group/name' format - Add Group field to MonitorConfig (set at runtime) - Update Monitor interface with ID() and Group() methods - Update all monitor implementations (http, tcp, dns, icmp, gemini, graphql, database) to use composite ID - Update Scheduler to use monitor ID instead of name - Update server handlers to use composite ID for stats lookups - Change API routes to use {group}/{name} pattern: - /api/monitor/{group}/{name} - /api/history/{group}/{name} - /api/uptime/{group}/{name} - /api/badge/{group}/{name}.svg - URL-encode group and name components to handle special characters (e.g., slashes in names become %2F) - Update config.UpdateResetFlag to accept group and name separately BREAKING: API endpoints now require group in the path. Existing database data using just monitor names won't be associated with the new composite keys.
* feat: Add API-based refresh mode for smoother updatesFuwn2026-01-201-0/+24
| | | | | | | | | | | | Add display.refresh_mode option: - 'page' (default): Full page refresh via meta refresh - 'api': Fetch /api/status and update DOM without reload Also add display.refresh_interval (default: 30s, min: 5s) API mode updates: status indicators, response times, uptimes, errors, overall status banner, and page title counts. History bars remain static until full page refresh.
* feat: Add API access control (public/private/authenticated)Fuwn2026-01-201-0/+29
| | | | | | | | | | | | | | Add configurable access control for /api/* endpoints: - public: Anyone can access (default, backwards compatible) - private: API endpoints return 403 Forbidden - authenticated: Requires API key via X-API-Key header or ?api_key= param Config example: api: access: authenticated keys: - "secret-key-1" - "secret-key-2"
* feat: Add all remaining monitor options to group defaultsFuwn2026-01-201-0/+50
| | | | | | | | | | | | Support defaulting any monitor option at group level: - expected_content, body (HTTP/HTTPS) - ping_count (ICMP) - dns_server, record_type (DNS) - graphql_query, graphql_variables (GraphQL) - db_type (Database) Only name, type, target, link, reset_on_next_check, expected_ips, and expected_cname remain monitor-specific (not defaultable).
* feat: Expand group-level defaults with more monitor optionsFuwn2026-01-201-13/+56
| | | | | | | | | Add support for setting these options at group level: - hide_ssl_days, hide_ping, round_response_time, round_uptime - method, user_agent, headers, expected_status This allows configuring common settings once per group instead of repeating them on every monitor.
* fix: Support disable_uptime_tooltip in group defaultsFuwn2026-01-201-5/+10
|
* feat: Add disable_uptime_tooltip optionFuwn2026-01-201-20/+21
|
* feat: Add custom_head option for injecting HTML into headFuwn2026-01-201-1/+2
|
* feat: Add hide_ping option to hide response timeFuwn2026-01-201-0/+1
|
* fix: Add database type to config validationFuwn2026-01-201-2/+5
|
* feat: Add database connection monitoring typeFuwn2026-01-201-0/+2
|
* feat: Add configurable UI scale optionFuwn2026-01-201-0/+11
|
* feat: Add clickable link option for monitor namesFuwn2026-01-201-0/+1
|
* refactor: Use CSS prefers-color-scheme instead of JS-based theme toggleFuwn2026-01-201-6/+0
|
* feat: Add OpenCode-compatible theme loaderFuwn2026-01-191-0/+1
| | | | | | | | | | | | | | | | | | | | Add support for loading and applying OpenCode-compatible themes via URL. Fetches theme JSON, resolves color references, generates CSS variables and Tailwind class overrides to apply the theme seamlessly. Features: - Add theme_url config field under site section - Fetch and parse OpenCode theme.json format - Generate CSS custom properties (--theme-*) for all theme colors - Generate Tailwind class overrides to apply theme colors - Support both light and dark modes - Template.CSS type for safe CSS injection Example usage: site: theme_url: "https://raw.githubusercontent.com/anomalyco/opencode/.../opencode.json" Theme schema: https://opencode.ai/theme.json
* fix: Remove duplicate monitor name validation across groupsFuwn2026-01-191-5/+0
| | | | | | | | | | Previously, monitors with the same name in different groups would fail validation. This restriction has been removed to allow duplicate names across groups, restoring the original behavior. Note: Monitors with duplicate names will share the same data in the database since MonitorName is used as the identifier. A future enhancement could use group+name as a composite key.
* feat: Add ICMP, DNS, and GraphQL monitor typesFuwn2026-01-191-2/+17
| | | | | | | | | | | | | | | | | | Add three new monitor types with full support: - ICMP: Ping monitoring with configurable packet count, tracks packet loss and average RTT. Marks degraded on partial packet loss. - DNS: DNS resolution monitoring supporting A, AAAA, CNAME, MX, and TXT records. Optional custom DNS server and validation of expected IPs/CNAME. - GraphQL: GraphQL endpoint monitoring with query execution, variable support, error detection, and content validation. All new monitors include retry support, response time tracking, and integrate with existing display options (round_response_time, etc). GraphQL monitors also support SSL certificate tracking.
* feat: Add disable_ping_tooltips option to hide ping hover detailsFuwn2026-01-191-21/+27
| | | | | | Add monitor-level option to disable hover tooltips on individual ping bars. Can be set at group defaults or per-monitor. When enabled, visual appearance remains unchanged but tooltips no longer appear on hover.
* fix: Preserve config formatting when updating reset flagFuwn2026-01-191-22/+53
| | | | | | Use line-based approach instead of YAML unmarshal/marshal to prevent config file rewriting with zero values. This ensures monitors that omit fields like interval and timeout continue to inherit from group defaults.
* feat: Add configurable user_agent to bypass bot detectionFuwn2026-01-191-0/+1
|
* feat: Add round_uptime option to round uptime percentagesFuwn2026-01-191-0/+1
|
* feat: Add group defaults, content checking, SSL tracking for Gemini, ↵Fuwn2026-01-191-18/+55
| | | | hide/round options
* feat: Add reset_on_next_check flag to wipe monitor historyFuwn2026-01-191-11/+59
|
* feat: Add Gemini protocol supportFuwn2026-01-191-2/+8
|
* feat: Add retry option for monitor checksFuwn2026-01-191-0/+5
|
* feat: Initial commitFuwn2026-01-171-0/+299