| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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"
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
| |
hide/round options
|
| | |
|
| | |
|
| | |
|
| |
|