feat(admin): add domain visit charts #19

Merged
eleith merged 2 commits from feat/domain-visits-chart into main 2026-11-11 01:34:53 +00:00

Summary

Add the existing visits chart and retained UTC timeframes to domain dashboards, sharing the chart, control and count helpers with the overview.

  • Domain cards, chart, base / counts and current-link Visits values follow one selected window. Inventory, destinations, live state and retention policy remain unfiltered.
  • Invalid clicks exclude only root invalid traffic in that same window; valid root traffic remains in the domain headline.
  • Overview/domain navigation preserves the selected period through the existing GOTO header link, without a duplicate Overview breadcrumb.
  • Disabled analytics keeps inventory usable; unavailable counts remain distinct from real zeroes.

One scoped SQLite SELECT reads the domain and current-link prepared details, always including root, with scope/common-period validation and a read-only web boundary. The server sends only the domain series and compact counts—not per-link series, family arrays or raw visits. No new jobs, report format, schema, worker API, ingestion or analytics-policy changes.

Second commit: shared responsive UI refinements

  • Consistent Overview / Domain / Link headings, identity context below, entity-specific browser-tab titles, and full/compact UTC update dates in the shared header. The link's parent-domain navigation is part of its context rather than a separate breadcrumb row.
  • Stable timeframe font weight and a clear selected accent fill distinct from hover. Desktop keeps buttons; mobile uses a compact, top/right-aligned Bits UI Select in the same header when it fits, wrapping right when needed. One URL-backed selection and handler, with a value-inclusive button name and named listbox.
  • Smaller shared mobile card typography.
  • When-style responsive native inventory lists: desktop columns become compact mobile grid rows without horizontal panning. A shared component renders base/current links; the domain inventory uses the same styles. Every row is one native statistics link with plain-text details, no nested/outbound inventory links or JavaScript click emulation.

The owner installed Bits UI 2.18.1, matching the When/Directory reference pins. Its native child-prop/Portal composition handles keyboard, focus and selection; the app adds no separate selection store, generic UI kit or custom keyboard engine. Existing Phosphor icons and semantic theme/focus tokens are reused.

Dedicated-link analytics remain their existing full-retention summaries, without a new chart or filter. Their ordinary parent-domain destination has no period and returns to the domain's default 30-day window. The shared link-page header/layout is refined; its analytics contract is not changed.

Verification

All four independent reviews and affected cleanup re-reviews are clean: readability, correctness/security, test quality and explicit reference parity.

Final pnpm verify passed:

  • Schema drift, workspace builds, TypeScript, Prettier and ESLint.
  • Svelte: 0 errors, 0 warnings.
  • 537 workspace unit tests, 6 script tests, 8 existing Chromium production-build E2E stories, 5 worker service process cases.

The existing auth story covers generic headers/context/tab titles, whole-row statistics links/plain-text destinations, desktop history, mobile Bits selection and resulting card/row/chart counts, default return behavior, and one bounded 390px inventory-overflow probe. No new test journey, theme E2E, viewport matrix, screenshot framework or library-internal test API. The existing UTC formatter case also checks the compact output. Changeset status and whitespace checks passed; all 15 follow-up blobs match the final reviewed/passing hashes.

Checks use isolated fixtures, not the owner's manually seeded database. Docker was not agent-run. These checks are not universal pixel, screen-reader, breakpoint or scaling proof; current-link-count × retained-day read cost remains unmeasured. No additional production-packaging/CI gates are introduced.

Commits / follow-up

  1. a114c26 — domain charts and shared prepared-window projection baseline.
  2. 6f7237b — shared responsive dashboard refinements.

Leave this PR unmerged until owner review and remote CI are complete. Additional refinements, if needed, will be separate follow-up commits. No merge or release is requested.

## Summary Add the existing visits chart and retained UTC timeframes to domain dashboards, sharing the chart, control and count helpers with the overview. - Domain cards, chart, base `/` counts and current-link Visits values follow one selected window. Inventory, destinations, live state and retention policy remain unfiltered. - Invalid clicks exclude only root **invalid** traffic in that same window; valid root traffic remains in the domain headline. - Overview/domain navigation preserves the selected period through the existing GOTO header link, without a duplicate Overview breadcrumb. - Disabled analytics keeps inventory usable; unavailable counts remain distinct from real zeroes. One scoped SQLite SELECT reads the domain and current-link prepared details, always including root, with scope/common-period validation and a read-only web boundary. The server sends only the domain series and compact counts—not per-link series, family arrays or raw visits. No new jobs, report format, schema, worker API, ingestion or analytics-policy changes. ## Second commit: shared responsive UI refinements - Consistent **Overview / Domain / Link** headings, identity context below, entity-specific browser-tab titles, and full/compact UTC update dates in the shared header. The link's parent-domain navigation is part of its context rather than a separate breadcrumb row. - Stable timeframe font weight and a clear selected accent fill distinct from hover. Desktop keeps buttons; mobile uses a compact, top/right-aligned **Bits UI Select** in the same header when it fits, wrapping right when needed. One URL-backed selection and handler, with a value-inclusive button name and named listbox. - Smaller shared mobile card typography. - When-style responsive native inventory lists: desktop columns become compact mobile grid rows without horizontal panning. A shared component renders base/current links; the domain inventory uses the same styles. Every row is one native statistics link with plain-text details, no nested/outbound inventory links or JavaScript click emulation. The owner installed **Bits UI 2.18.1**, matching the When/Directory reference pins. Its native child-prop/Portal composition handles keyboard, focus and selection; the app adds no separate selection store, generic UI kit or custom keyboard engine. Existing Phosphor icons and semantic theme/focus tokens are reused. Dedicated-link **analytics** remain their existing full-retention summaries, without a new chart or filter. Their ordinary parent-domain destination has no period and returns to the domain's default 30-day window. The shared link-page header/layout is refined; its analytics contract is not changed. ## Verification All four independent reviews and affected cleanup re-reviews are clean: readability, correctness/security, test quality and explicit reference parity. Final `pnpm verify` passed: - Schema drift, workspace builds, TypeScript, Prettier and ESLint. - Svelte: **0 errors, 0 warnings**. - **537 workspace unit tests**, **6 script tests**, **8 existing Chromium production-build E2E stories**, **5 worker service process cases**. The existing auth story covers generic headers/context/tab titles, whole-row statistics links/plain-text destinations, desktop history, mobile Bits selection and resulting card/row/chart counts, default return behavior, and one bounded 390px inventory-overflow probe. No new test journey, theme E2E, viewport matrix, screenshot framework or library-internal test API. The existing UTC formatter case also checks the compact output. Changeset status and whitespace checks passed; all 15 follow-up blobs match the final reviewed/passing hashes. Checks use isolated fixtures, not the owner's manually seeded database. Docker was not agent-run. These checks are not universal pixel, screen-reader, breakpoint or scaling proof; current-link-count × retained-day read cost remains unmeasured. No additional production-packaging/CI gates are introduced. ## Commits / follow-up 1. `a114c26` — domain charts and shared prepared-window projection baseline. 2. `6f7237b` — shared responsive dashboard refinements. Leave this PR unmerged until owner review and remote CI are complete. Additional refinements, if needed, will be separate follow-up commits. No merge or release is requested.
eleith-gitea-agent Bot added 1 commit 2026-11-10 22:58:03 +00:00
feat(admin): add domain visit charts
ci/woodpecker/pr/cli Pipeline was successful
ci/woodpecker/pr/config Pipeline was successful
ci/woodpecker/pr/db Pipeline was successful
ci/woodpecker/pr/web Pipeline was successful
ci/woodpecker/pr/worker Pipeline was successful
a114c26a68
eleith added 1 commit 2026-11-11 01:25:08 +00:00
fix(admin): refine responsive dashboards
ci/woodpecker/pr/cli Pipeline was successful
ci/woodpecker/pr/config Pipeline was successful
ci/woodpecker/pr/db Pipeline was successful
ci/woodpecker/pr/web Pipeline was successful
ci/woodpecker/pr/worker Pipeline was successful
ci/woodpecker/push/cli Pipeline was successful
ci/woodpecker/push/config Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/worker Pipeline was successful
6f7237bb48
eleith merged commit 6f7237bb48 into main 2026-11-11 01:34:53 +00:00
eleith deleted branch feat/domain-visits-chart 2026-11-11 01:34:53 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eleith/goto#19