Commit graph

224 commits

Author SHA1 Message Date
98642bf7e7 checkers: add NoOverride field support for checker options
Prevent more specific scopes from overriding option values locked at a
higher scope (e.g. admin). Includes defense-in-depth stripping on
Set/Add operations, merge-time preservation, and frontend filtering.
2026-04-16 15:18:43 +07:00
33ef6b60e7 web: add checks status summary badge to zone viewer PageHeader
Add a ChecksSummaryBadge component that fetches domain-level checker statuses
and displays the worst status as a colored badge linking to the checks page.
2026-04-16 15:18:43 +07:00
439fe2a2e9 checkers: show worst check status badge on domain list
Add DomainWithCheckStatus model and GetWorstDomainStatuses usecase to
compute the most critical checker status per domain. The GET /domains
endpoint now returns status alongside each domain. The frontend domain
store, list components, and table row display dynamic status badges
with color and icon instead of a hardcoded "OK".

ZoneList is made generic (T extends HappydnsDomain) so the badges
snippet preserves the caller's concrete type without unsafe casts.
2026-04-16 15:18:43 +07:00
fb02331f41 checkers: show children checkers on domain page and hide scheduling for non-domain checkers
Add a separate section on the domain checks page to display zone and
service-level checkers that can be configured but won't produce results
at the domain scope. Hide the scheduling and rules cards when configuring
a non-domain checker from the domain context.
2026-04-16 15:18:43 +07:00
4e034b0135 checkers: integrate rules as a view tab in execution detail page
Remove separate /rules pages and display rules as a tab alongside
metrics, HTML, and JSON views. Rules become the default view when
no metrics or HTML report is available. Status is now shown as a
colored badge in the rules table.
2026-04-16 15:18:43 +07:00
322ade2881 checkers: add frontend metrics chart on execution pages
Add Chart.js-based line chart for checker metrics. The chart appears
on the executions list page (aggregated) and on individual execution
detail pages. Metrics view mode is selectable via the sidebar alongside
HTML report and raw JSON views.
2026-04-16 15:18:43 +07:00
b37ed1d349 checkers: add HTML report rendering for observation providers
Introduce CheckerHTMLReporter interface that observation providers can
implement to render rich HTML documents from their data. The Zonemaster
provider implements it with collapsible accordions and severity badges.

Adds API endpoint GET .../observations/:obsKey/report, frontend stores
for view mode switching (HTML/JSON), and wires the sidebar toggle buttons.
2026-04-16 15:18:43 +07:00
7a4de13ac6 checkers: add frontend UI components and routes
Add all checker UI pages and components:
- Checker list, config, schedule, and rules pages
- Execution list, detail, results, and rules pages
- Sidebar components for domain/service checker status
- Run check modal with option overrides and rule selection
- Domain-scoped and service-scoped check routes
- Admin pages for checker configuration and scheduler management
- Header navigation link for checkers section
2026-04-16 15:18:43 +07:00
ee560a699d checkers: add frontend API client, stores, and utilities
Add the frontend infrastructure for the checker UI:
- API client with scoped helpers for domain/service-level operations
- Svelte stores for checker state (currentExecution, currentCheckInfo)
- Utility functions for status colors, icons, i18n keys, date formatting
- Shared helpers: withInheritedPlaceholders, downloadBlob, collectAllOptionDocs
- English translations for all checker UI strings
- Zone model and form types extended for checker support
2026-04-16 15:18:43 +07:00
exyone
9a3f834129 Improve Chinese translation and fix English translation errors (manually translated)
Add Esperanto, Manchu, and Tibetan translations (AI-assisted with manual review)
2026-04-16 02:14:18 +07:00
90e4d30ae4 web: Make images occupy the background
All checks were successful
continuous-integration/drone/push Build is passing
2026-04-14 09:08:47 +07:00
3163a10c45 web: add collapsible domain groups with persistent state
All checks were successful
continuous-integration/drone/push Build is passing
Add click-to-collapse and double-click-to-solo behavior on group
headers in ZoneList, with a chevron indicator. Collapsed state is
persisted in localStorage and cleared on login/logout.
2026-04-14 05:08:01 +07:00
197fd9c796 Redesign UI: modernize layout, login, resolver, and some components
Refresh the overall visual design across the frontend: floating labels
and centered card layout for auth pages, animated sidebar+results view
for the resolver, polished dropdown menus, toasts, and feedback widget,
and cleaner global styles (navbar shadow, border, transitions).
2026-04-14 05:08:01 +07:00
52e176c73a chore(deps): lock file maintenance
All checks were successful
continuous-integration/drone/push Build is passing
2026-04-13 00:12:13 +00:00
effb588d3c fix: use one-way binding for record line rr prop
All checks were successful
continuous-integration/drone/push Build is passing
2026-04-11 12:25:10 +07:00
de6eb2b3b4 fix: add missing fields to zone mock in thiszone test
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is failing
The mock zone object was missing `services` and `last_modified` fields
required by the response transformer, causing Object.keys to fail on
undefined.
2026-04-05 22:23:52 +07:00
8e2e38757f fix: guard against undefined entry in domainLink helper
Some checks failed
continuous-integration/drone/push Build is failing
Add null checks to prevent runtime errors when the domain index entry
does not exist for the given identifier.
2026-04-05 22:08:46 +07:00
397e19b745 fix(deps): update module @hey-api/openapi-ts to v0.95.0
Some checks failed
continuous-integration/drone/push Build is failing
2026-04-04 22:22:06 +07:00
cae8658f61 web: Tighten TypeScript types and fix toast API across frontend
Replace `any` with precise types (unknown, Record<string, any>, specific
interfaces) in props, function signatures, and index signatures. Introduce
ServiceWithValue to bridge SDK's HappydnsService.Service from unknown to
its runtime shape. Simplify updateDomain to take explicit id + body params.
2026-04-04 22:22:06 +07:00
f92cab2abf web: Prefer pointer as grab in ZoneList 2026-04-04 22:16:27 +07:00
30506e9731 web: Fix state_referenced_locally warning in ZoneList
Replace $state + $effect pattern with $derived for localDomains to properly react to prop changes. Also reformat genGroups signature and sort callback indentation.
2026-04-04 22:16:27 +07:00
15f014cf5a web: Replace null defaults with undefined for optional props
Aligns optional prop types and defaults with TypeScript/Svelte 5 idioms
by dropping explicit null in favor of undefined throughout components.
2026-04-04 22:16:27 +07:00
b2e85cb9f2 web: Fix variable not declared as $state 2026-04-04 22:16:27 +07:00
2679d0476e web: Fix a11y role 2026-04-04 22:16:27 +07:00
fa47e9b4b1 web: Replace ServiceCombined with HappydnsService SDK type across frontend 2026-04-04 22:16:27 +07:00
17c9e88903 web: Derive local model types from SDK-generated types to strengthen type checking
Replace hand-written interfaces with types derived from SDK-generated types
(alias, Required<>, Omit<> & extend) so the two type systems stay in sync.
This eliminates all `as any` casts and reduces `as unknown as` casts from 13
to 9 in the API wrapper layer.
2026-04-04 22:16:27 +07:00
e09044388b web: Move delete_in_progress UI state from Session model to component
Replace the delete_in_progress field on the Session interface with a
local Set<string> in SessionsManager, keeping model types pure.
2026-04-04 22:05:28 +07:00
3e3b23a0c4 Replace any types with proper TypeScript types in web API and model files 2026-04-04 22:05:28 +07:00
e30d1a5f50 Add is_auth_user endpoint in swagger doc and remove custom client call in frontend 2026-04-04 22:05:28 +07:00
4f3a1d7f7b Add format:"date-time" struct tags to time.Time model fields 2026-04-04 22:05:28 +07:00
d600bbcbd9 web: Refactor domain Table component to improve single responsibility
Extract DomainTableRow and ProviderLink components from the monolithic
Table.svelte, which was mixing table structure, provider name resolution,
row navigation, and action button logic into a single component.
2026-03-30 11:58:02 +07:00
e103d2262a Add DNS propagation time tracking per service
After publishing zone corrections, compute and store a PropagatedAt
timestamp on each affected service indicating when old cached records
will have expired. For updated/deleted services, this is publish_time +
old service TTL. For new services, it uses the SOA minimum TTL
(negative cache duration), falling back to the zone's DefaultTTL.

The propagation detection reuses the same service matching technique as
ReassociateMetadata (subdomain + type + ServiceRDataHash). Both the
published snapshot and the WIP zone are stamped.
2026-03-30 11:58:02 +07:00
ca9dc450c3 chore(deps): lock file maintenance
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-30 00:12:53 +00:00
e95ecd6671 Fix port/protocol not extracted from existing TLSA and SRV records 2026-03-28 21:42:17 +07:00
ea0324c3a7 Fix XMPP editor not displaying existing records 2026-03-28 21:42:17 +07:00
d06b73c3dd Fix RFC6186 editor not displaying records and failing on new service 2026-03-28 21:42:17 +07:00
8c9a38166b web: pause toast timers when page is not visible
Use the Page Visibility API to pause toast countdowns and progress bar
animations when the tab is hidden, and resume them when the user returns.
New toasts created while the page is hidden also start in a paused state.
2026-03-28 21:42:17 +07:00
e89a483725 web: add missing timeouts to toast notifications
Add timeout values to the 3 remaining toast calls that lacked them:
- Session error toast on redirect to login (10s)
- Account deleted success toast (5s)
- Database tidy error toast in web-admin (10s)
2026-03-28 21:42:17 +07:00
074e5e864e web: Add progress bar and improve pause/resume behavior
Add a visual progress bar that shrinks over the toast timeout duration,
pause/resume the timer on hover.
2026-03-28 21:42:17 +07:00
40b890a8e3 web: replace @paralleldrive/cuid2 with crypto.randomUUID()
All checks were successful
continuous-integration/drone/push Build is passing
Use the standard Web Crypto API instead of an external dependency for
generating unique IDs in Toast and ProviderForm.
2026-03-26 08:02:15 +07:00
b60dd41455 chore(deps): lock file maintenance
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-23 00:11:59 +00:00
7d89e120a9 web: Add propagation loading screen and wait.preparation/propagation locale keys
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-22 07:42:13 +07:00
a47d0d4196 web: Add service.edit locale key and use it in ServiceDetailsOffcanvas 2026-03-22 07:42:13 +07:00
94f1884ba5 web: Extract domainLink as a shared store utility
Move the domainLink helper from local component functions into the
domains store so it can be reused across layout, sidebars, and page
components.

This fixes links to non-unique domain names.
2026-03-22 07:42:13 +07:00
c020aeece7 chore(deps): lock file maintenance
All checks were successful
continuous-integration/drone/push Build is passing
2026-03-19 04:10:55 +00:00
38caea104f chore(deps): lock file maintenance
Some checks are pending
continuous-integration/drone/push Build is running
2026-03-19 10:43:27 +07:00
ae88b5d892 chore(deps): update dependency @sveltejs/vite-plugin-svelte to v7
Some checks are pending
continuous-integration/drone/push Build is pending
2026-03-19 10:41:50 +07:00
17d6ebd607 chore(deps): update dependency vite to v8
Some checks are pending
continuous-integration/drone/push Build is running
2026-03-19 03:27:25 +00:00
1b4cffec2d chore(deps): update eslint monorepo to v10
Some checks failed
continuous-integration/drone/push Build is failing
2026-03-19 03:16:57 +00:00
5e0eaa5d11 Include generated services_specs into frontend code
This permit to prerender generator pages so they can be referenced
2026-03-17 20:14:57 +07:00