Add an overview-only visits chart with page-wide timeframes, using the existing prepared daily analytics.
Default to 30 days; offer 7 days, 30 days and full configured retention, plus 90 days for 9/12-month retention.
Update the valid-visits headline, chart and domain visit counts together; keep YAML inventory counts independent of the selection.
Select daily, UTC Monday-week or calendar-month chart grouping automatically. Anchor calendar windows to the prepared report cutoff and preserve partial retention boundaries.
Preserve selection through bookmarks, reload and Back/Forward using native SvelteKit 3 shallow navigation.
Keep only inventory when collection is disabled; distinguish unavailable reports from real zero counts.
Place the updated timestamp beneath the title and timeframe controls at the right of the header.
The native Chart.js 4.6.1 component loads only in the browser, follows semantic theme colors and cleans up its chart/observer on unmount. The browser-safe analytics subpath contains pure calendar/grouping helpers. One scoped SQLite SELECT reads overview/current-domain prepared details; the server sends compact per-domain preset totals rather than domain series or family arrays. No raw-visit aggregation, new tables, worker jobs, reporting API, domain/link charts or retention-policy changes.
Development fixes
Two separate commits address issues encountered during manual testing:
Keep populated build caches separate from the fresh writable development runtime home in both Dockerfiles. Preserve non-root runtime, narrow output ownership, exact versions, frozen/offline installs and HMR.
Allow GOTO_DEV_PORT to select the loopback host port, defaulting to 5173; leave Vite/container port 5173 and private worker port 9000 unchanged. Local configured URLs/domain authorities must match the chosen external port.
Local configuration, credentials, planning/review files and reference checkouts are not included.
Reference alignment
Native Kit 3 goto(..., { shallow: true }) and page.shallow?.url ?? page.url follow actual When/Luzzle implementations. Semantic styling and targeted generated-file ownership retain the applicable When/Directory conventions. The chart and timeframe design are Goto-specific owner selections, not claimed reference-app analytics behavior. No broad permission or CSP exceptions were added.
Verification
All four independent reviews are clean: readability, correctness/security, test quality and explicit reference parity.
pnpm verify passed:
Schema drift, workspace production builds, TypeScript, Prettier and ESLint.
Svelte: 0 errors, 0 warnings.
526 workspace unit tests, 6 seeder script tests.
8 Chromium production-build E2E tests, including distinct timeframe counts, real shallow selection, Back/Forward/reload, no new document/data requests during selection, disabled analytics, auth, host isolation, ingestion, reload and HMR.
5 worker service process cases.
Changeset status and whitespace checks passed. All 26 committed file blobs match the final reviewed/passing source hashes.
Docker/Compose was not agent-run; owner-reported development startup is separate evidence, not a production-container or build-speed guarantee. The additional pruned-package smoke/CI expansion was intentionally excluded from this unshipped-app scope; it was not run or claimed passed. No new packaging gate is introduced. Remote CI must pass before merge.
## Summary
Add an overview-only visits chart with page-wide timeframes, using the existing prepared daily analytics.
- Default to 30 days; offer 7 days, 30 days and full configured retention, plus 90 days for 9/12-month retention.
- Update the valid-visits headline, chart and domain visit counts together; keep YAML inventory counts independent of the selection.
- Select daily, UTC Monday-week or calendar-month chart grouping automatically. Anchor calendar windows to the prepared report cutoff and preserve partial retention boundaries.
- Preserve selection through bookmarks, reload and Back/Forward using native SvelteKit 3 shallow navigation.
- Keep only inventory when collection is disabled; distinguish unavailable reports from real zero counts.
- Place the updated timestamp beneath the title and timeframe controls at the right of the header.
The native Chart.js 4.6.1 component loads only in the browser, follows semantic theme colors and cleans up its chart/observer on unmount. The browser-safe analytics subpath contains pure calendar/grouping helpers. One scoped SQLite SELECT reads overview/current-domain prepared details; the server sends compact per-domain preset totals rather than domain series or family arrays. No raw-visit aggregation, new tables, worker jobs, reporting API, domain/link charts or retention-policy changes.
## Development fixes
Two separate commits address issues encountered during manual testing:
1. Keep populated build caches separate from the fresh writable development runtime home in both Dockerfiles. Preserve non-root runtime, narrow output ownership, exact versions, frozen/offline installs and HMR.
2. Allow `GOTO_DEV_PORT` to select the loopback host port, defaulting to 5173; leave Vite/container port 5173 and private worker port 9000 unchanged. Local configured URLs/domain authorities must match the chosen external port.
Local configuration, credentials, planning/review files and reference checkouts are not included.
## Reference alignment
Native Kit 3 `goto(..., { shallow: true })` and `page.shallow?.url ?? page.url` follow actual When/Luzzle implementations. Semantic styling and targeted generated-file ownership retain the applicable When/Directory conventions. The chart and timeframe design are Goto-specific owner selections, not claimed reference-app analytics behavior. No broad permission or CSP exceptions were added.
## Verification
All four independent reviews are clean: readability, correctness/security, test quality and explicit reference parity.
`pnpm verify` passed:
- Schema drift, workspace production builds, TypeScript, Prettier and ESLint.
- Svelte: **0 errors, 0 warnings**.
- **526 workspace unit tests**, **6 seeder script tests**.
- **8 Chromium production-build E2E tests**, including distinct timeframe counts, real shallow selection, Back/Forward/reload, no new document/data requests during selection, disabled analytics, auth, host isolation, ingestion, reload and HMR.
- **5 worker service process cases**.
Changeset status and whitespace checks passed. All 26 committed file blobs match the final reviewed/passing source hashes.
Docker/Compose was not agent-run; owner-reported development startup is separate evidence, not a production-container or build-speed guarantee. The additional pruned-package smoke/CI expansion was intentionally excluded from this unshipped-app scope; it was not run or claimed passed. No new packaging gate is introduced. Remote CI must pass before merge.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Add an overview-only visits chart with page-wide timeframes, using the existing prepared daily analytics.
The native Chart.js 4.6.1 component loads only in the browser, follows semantic theme colors and cleans up its chart/observer on unmount. The browser-safe analytics subpath contains pure calendar/grouping helpers. One scoped SQLite SELECT reads overview/current-domain prepared details; the server sends compact per-domain preset totals rather than domain series or family arrays. No raw-visit aggregation, new tables, worker jobs, reporting API, domain/link charts or retention-policy changes.
Development fixes
Two separate commits address issues encountered during manual testing:
GOTO_DEV_PORTto select the loopback host port, defaulting to 5173; leave Vite/container port 5173 and private worker port 9000 unchanged. Local configured URLs/domain authorities must match the chosen external port.Local configuration, credentials, planning/review files and reference checkouts are not included.
Reference alignment
Native Kit 3
goto(..., { shallow: true })andpage.shallow?.url ?? page.urlfollow actual When/Luzzle implementations. Semantic styling and targeted generated-file ownership retain the applicable When/Directory conventions. The chart and timeframe design are Goto-specific owner selections, not claimed reference-app analytics behavior. No broad permission or CSP exceptions were added.Verification
All four independent reviews are clean: readability, correctness/security, test quality and explicit reference parity.
pnpm verifypassed:Changeset status and whitespace checks passed. All 26 committed file blobs match the final reviewed/passing source hashes.
Docker/Compose was not agent-run; owner-reported development startup is separate evidence, not a production-container or build-speed guarantee. The additional pruned-package smoke/CI expansion was intentionally excluded from this unshipped-app scope; it was not run or claimed passed. No new packaging gate is introduced. Remote CI must pass before merge.