Repository navigation
feat: lease sizing, Telegram sign-in and four small fixes (2026-11-11 issues) - #848
Merged
Merged
Conversation
…an unhandled rejection (fclairamb/solidping-business#65) Saving a status page with a slug the server rejects (400 VALIDATION_ERROR, e.g. a UUID-shaped slug) gave no feedback: StatusPageForm.handleSubmit (web/dash0/src/components/shared/status-page-form.tsx) awaited onSubmit with no catch, so the ApiError became an unhandled rejection. The form now catches it, shows the `slug` field message under the field and toasts the error (silent on a refused demo write, which client.ts already toasts). Covers both the create and edit routes. status-page-form.test.tsx fails before the fix. Closes fclairamb/solidping-business#65 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ow (fclairamb/solidping-business#64) Switching the dashboard header to 7 days or 30 days changed the availability tile and banner but the "Checks at a glance" strips kept showing the last 24 hourly cells: dashboard-page.tsx hard-coded UPTIME_HOURS = 24 and a 3600 s bucket. The strips now use glanceStripWindow() (24h: 24 x 1 h, 7d: 28 x 6 h, 30d: 30 x 1 day, aligned like the server's cells), and the cell tooltips show the date for wider cells. glance-strip-window.test.ts guards the geometry. Closes fclairamb/solidping-business#64 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ping-business#68) The Recent Results card on a check page could only be filtered by region, so finding the one failed run among dozens of successes meant scrolling. A "Failures" toggle next to the region chips now lists only failed runs, via the results endpoint's existing `status=down` filter (down, timeout, error). The choice lives in the URL (`resultStatus=down`) like the region, and an empty filtered table says no run failed. useResults gained the `status` option; hooks.results-status.test.tsx fails before the change. Closes fclairamb/solidping-business#68 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…never carry (fclairamb/solidping-business#63) An operator with a WhatsApp contact next to a working route got a WARN "cannot be delivered over this contact type; skipping route" on every watchdog alert, right next to its "delivered" line (opsnotify/deliver.go dispatchRoute default branch). The skip is a fixed fact of the configuration, so it now logs at DEBUG; a recipient whose routes are ALL of that kind still gets the "undeliverable" WARN, which now names the skipped contact types. TestDeliverSkippedRouteNextToADeliveredOneIsNotAWarning and the tightened TestDeliverSkipsWhatsApp fail before the change. Refs fclairamb/solidping-business#63 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sign-in Specs for fclairamb/solidping-business#63 (lease expiry under slow database round-trips stalling a remote region), #66 (demo sessions end after one hour) and #67 (Telegram as a sign-in provider). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…urable margin A remote region with slow database round-trips could outlive its check-job lease (period + 30s): a peer re-claimed the job, the check ran twice and the first worker's release failed with 'job may have been claimed by another worker' (fclairamb/solidping-business#63). - The lease is now max(scheduled_at, now) + max(period, check timeout) + margin, the clock read per row so a slow claim transaction does not eat it. The margin defaults to 30s and is set per deployment with SP_CHECKERS_LEASE_MARGIN. - New metrics by region: solidping_check_lease_held_seconds (claim to release) and solidping_check_lease_lost_total. A lost lease logs a WARN 'Check lease lost' with lease_expires_at, missed_by, period and timeout. - A claim that times out (driver i/o timeout, context deadline) is a WARN 'Claim timed out: retrying after back-off' counted under solidping_claim_jobs_result_total{outcome="timeout"}, no longer an ERROR. - Runbook and configuration docs describe the knob. Closes fclairamb/solidping-business#63 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he fetcher Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #848 +/- ##
========================================
Coverage 89.35% 89.36%
========================================
Files 1353 1358 +5
Lines 139110 139568 +458
========================================
+ Hits 124299 124722 +423
- Misses 14802 14837 +35
Partials 9 9
🚀 New features to boost your workflow:
|
A rejected refresh on a demo session (server cap of one hour) now signs in again with the public demo credential and shows a toast, instead of redirecting to login?session_expired=true. Falls back to the redirect if the re-login fails. Closes fclairamb/solidping-business#66 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
GET /api/v1/auth/telegram/login redirects to oauth.telegram.org; the callback moves the fragment result into the query (hash-pinned bridge page), verifies the HMAC with the bot token, refuses an auth_date older than 5 minutes and signs in only the user who linked that Telegram account as a verified notification contact. No account is created. Off unless SP_TELEGRAM_LOGIN_ENABLED=true (the bot's domain must be set with @Botfather /setdomain first). Login audit method: telegram. Closes fclairamb/solidping-business#67 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Telegram brand icon for the provider grid (data-testid login-oauth-telegram), a Telegram label for the sessions page, and /register leaves Telegram out: it signs in linked accounts only and never creates one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…LED) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A demo session should not be renewed more often than any other session, so the client-side re-login on a rejected demo refresh is removed. This reverts commit c305ba1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fclairamb
enabled auto-merge (squash)
November 12, 2026 08:06
…ls) (#849) Stacked on #848: merge it first. Races IPv6 and IPv4 in the enforcing egress dialer (second family starts after 300 ms or on first failure), so dual-stack targets with a lossy IPv6 path no longer time out. Not done (needs a spec): degraded status when only one family fails, reporting the answering family, v4/v6 sub-probes. Closes fclairamb/solidping-business#69 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ack family (#852) Stacked on #848: merge it first. ## What changed - HTTP and Prometheus checks now return `warning` (rolled up as degraded) when a dual-stack target only answered on its fallback family, e.g. IPv6 unreachable but IPv4 up (answers the "which family failed" part of the issue, the IPv4 fallback itself shipped in #849). The result carries `output.ip_fallback` and the dashboard shows it. Pinned-family checks never warn. ## Decided by autopilot - Spec fclairamb/solidping-business#69 follow-up, Q1: warn only when the first family failed or was still pending 1 s after its start (recommended answer). - Q2: no separate v4/v6 sub-probes (recommended answer). ## Notes - With the 1 s threshold and the 300 ms race, a silently dropped v6 SYN with instant v4 will not warn; tune `FamilyFallbackThreshold` if wanted. - An HTTP check on `localhost` can now warn when `::1` is refused but `127.0.0.1` answers. - Batch gate: build, lint, Go tests, e2e typecheck/lint green; Playwright not run locally (left to CI). Closes fclairamb/solidping-business#69 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…eat/todos-2026-11-11
Merged
fclairamb
added a commit
that referenced
this pull request
Nov 12, 2026
🤖 I have created a release *beep* *boop* --- ## [0.48.0](v0.47.0...v0.48.0) (2026-11-12) ### Features * lease sizing, Telegram sign-in and four small fixes (2026-11-11 issues) ([#848](#848)) ([9972dde](9972dde)) * **notifications:** SMS Factor integration ([#846](#846)) ([1b68d2a](1b68d2a)) ### Bug Fixes * **deps:** update github.com/dop251/goja digest to f493a2b ([#842](#842)) ([dba208b](dba208b)) * **deps:** update go dependencies (non-major) ([#844](#844)) ([621d492](621d492)) * **deps:** update go dependencies (non-major) ([#847](#847)) ([4bb06f7](4bb06f7)) * **security:** bind JS env and plugin configs, strict re-wrap keys, replay masking of remaining secret inputs, rewrap list cap, secret headers on redirects ([#851](#851)) ([32fd560](32fd560)) * **security:** bind sealed secrets to their target, verify peer re-wraps, drop deleted regions' keys, TLS-only agent server URL ([#840](#840)) ([4b70e46](4b70e46)) * **security:** keep shown-once secrets out of dash0 session replay ([#839](#839)) ([9bb8e8b](9bb8e8b)) * **security:** require a verified email for GitLab sign-in and stop linking existing accounts by email ([#850](#850)) ([1a0cea9](1a0cea9)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes fclairamb/solidping-business#63
Closes fclairamb/solidping-business#64
Closes fclairamb/solidping-business#65
Closes fclairamb/solidping-business#67
Closes fclairamb/solidping-business#68
What changed
specs/cancelled/.SP_CHECKERS_LEASE_MARGIN, default 30s). Lost leases and claim timeouts are measured (new Prometheus metrics, WARN logs), on the in-process and HTTP worker paths.SP_TELEGRAM_LOGIN_ENABLED; the bot's domain must be set with @Botfather/setdomain).SP_TELEGRAM_LOGIN_ENABLED.Decided by autopilot