Skip to content

Release 1.2.0#286

Merged
Polliog merged 109 commits into
mainfrom
develop
Jul 24, 2026
Merged

Release 1.2.0#286
Polliog merged 109 commits into
mainfrom
develop

Conversation

@Polliog

@Polliog Polliog commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Release 1.2.0. Rolls up everything merged to develop since 1.1.0 (103 commits) plus the version bump and two Dependabot security fixes.

Highlights

Added / Changed (UX & QOL audit sweep)

  • Custom time-range picker now uses an in-app calendar with explicit time inputs (drops native datetime-local)
  • Time window and selected project are remembered across Logs/Traces/Metrics/Monitoring (shared persisted stores)
  • Command palette searches logs, errors and traces (not just navigation); shareable log-search URLs; recent searches
  • Custom dashboard auto-refresh; log-search row-density toggle; search-term highlighting and relative-time tooltips
  • Theme "System" option that tracks the OS color scheme live
  • Duplicate action for monitors and alert rules; "Create alert" prefilled from an error group; merge/auto-merge duplicate error groups
  • Metrics empty state now shows copy-ready OTLP setup snippets

Fixed

  • Bad telemetry key no longer logs the user out on every page view (401 interceptor excludes ingest/OTLP/receiver endpoints)
  • "Total Logs Today" / "Error Rate" no longer collapse to the last hour on cold continuous aggregates
  • Same error no longer fans out into several groups (node: frames treated as library code)
  • Error-group service attribution fixed on ClickHouse and MongoDB (carried on the exceptions row, migration 054)
  • Sidebar org-name flash on hard reload; stat-card trend units/labels; unstyled native selects in monitoring; duplicate selectors in Metrics Explorer; various title/date consistency nits

Digests (#154)

  • Scheduled email digest reports completed and enabled: five report sections, real HTML emails, one-click unsubscribe, hourly dispatch cron with dedup (migration 053)

Ingestion clock skew (#279 + follow-up)

  • Clock-skew detection for logs, spans and metrics (never rejected, surfaced on project overview + admin ingestion health); ingestion.* counters bypass the metering toggle

Auth (#266 + follow-ups)

  • Local login routed through the auth provider registry; login failures classified by typed AuthError code, not message strings; user-enumeration hardening

Security

  • echarts -> 6.1.0 (GHSA-fgmj-fm8m-jvvx / CVE-2026-45249)
  • protobufjs -> 7.6.5 (GHSA-j3f2-48v5-ccww, DoS via infinite loop in .proto option parsing)
  • brace-expansion -> 5.0.7 (GHSA-3jxr-9vmj-r5cp / CVE-2026-13149, exponential-time expansion DoS)

Full detail in CHANGELOG.md under [1.2.0].

Giustino Gragnaniello and others added 30 commits June 26, 2026 16:18
Documents the AuthProvider interface, ProviderRegistry, database schema,
session model, and a worked end-to-end example of a minimal custom provider.
Closes #215.
Resolves conflicts in projects restore flow: incorporates upstream
name/slug conflict pre-check in restoreProject() and corresponding
409 error handlers in the restore route.
Copilot AI review requested due to automatic review settings July 22, 2026 11:39
Comment thread packages/backend/src/tests/queue/jobs/digest-dispatch.test.ts Fixed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release 1.2.0 roll-up that bumps versions and ships several cross-cutting UX, ingestion health, digest-email, auth hardening, and error-grouping improvements across the frontend and backend.

Changes:

  • Add scheduled email digests with unsubscribe flow, dispatch cron, templates, and capability limits.
  • Add clock-skew detection for logs/spans/metrics and surface health in admin + per-project UI.
  • Improve UX consistency (time range controls, persisted selections, command palette search, theme “System”, dashboard auto-refresh) and error-group handling (auto-merge + merge UI, regression reopen).

Reviewed changes

Copilot reviewed 123 out of 124 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
README.md Update version badge/text to 1.2.0
packages/shared/package.json Bump package version to 1.2.0
packages/reservoir/package.json Bump package version to 1.2.0
packages/frontend/tests/journeys/search.spec.ts Update journey assertion for new custom range UI
packages/frontend/src/routes/unsubscribe/+page.svelte Add unsubscribe confirmation page (public token)
packages/frontend/src/routes/register/+page.svelte Handle successful registration without session (fallback to login)
packages/frontend/src/routes/dashboard/traces/+page.svelte Persist project/time-range; add traceId URL param handling
packages/frontend/src/routes/dashboard/settings/usage/+page.svelte Replace ad-hoc range buttons with shared component
packages/frontend/src/routes/dashboard/settings/pii-masking/+page.svelte Add success toasts for rule enable/action changes
packages/frontend/src/routes/dashboard/settings/members/+page.svelte Use shared date formatting helpers; tooltip time-ago
packages/frontend/src/routes/dashboard/settings/+layout.svelte Add Settings nav item for Email Digests
packages/frontend/src/routes/dashboard/security/+page.svelte Replace ad-hoc time-range buttons with shared component
packages/frontend/src/routes/dashboard/projects/+page.svelte Fix page title to “Projects”
packages/frontend/src/routes/dashboard/projects/[id]/overview/+page.svelte Surface ingestion skew banners; improve stats trend labels/units
packages/frontend/src/routes/dashboard/metrics/+page.svelte Persist selected project; simplify filters (project/time moved to header)
packages/frontend/src/routes/dashboard/errors/[id]/+page.svelte Create-alert shortcut; duplicate-group discovery + merge action
packages/frontend/src/routes/dashboard/alerts/+page.svelte Support alert builder prefill (create-from-error, duplicate)
packages/frontend/src/routes/dashboard/admin/+page.svelte Display timestamp skew counters in ingestion health stats
packages/frontend/src/routes/dashboard/+page.svelte Add dashboard auto-refresh control + persistence
packages/frontend/src/lib/utils/datetime.ts Add formatDateShort helper
packages/frontend/src/lib/stores/time-range.ts New persisted time-range store
packages/frontend/src/lib/stores/theme.ts Add “system” theme preference that tracks OS changes
packages/frontend/src/lib/stores/organization.ts Cache selected organization (avoid org-name flash)
packages/frontend/src/lib/stores/current-project.ts New persisted “current project” store
packages/frontend/src/lib/components/ui/range-calendar/range-calendar.svelte Add range calendar wrapper component
packages/frontend/src/lib/components/ui/range-calendar/index.ts Export range calendar root
packages/frontend/src/lib/components/TimeRangePicker.svelte Replace datetime-local with calendar + time inputs for custom range
packages/frontend/src/lib/components/TimeRangeButtons.svelte New shared segmented button control
packages/frontend/src/lib/components/ThemeToggle.svelte Switch to dropdown theme picker (light/dark/system)
packages/frontend/src/lib/components/projects/IngestionSkewBanner.test.ts Add unit tests for ingestion skew banner copy/formatting
packages/frontend/src/lib/components/projects/IngestionSkewBanner.svelte New skew warning banner component
packages/frontend/src/lib/components/metrics/ServiceSelector.svelte Use shared TimeRangeButtons for consistency
packages/frontend/src/lib/components/metrics/OverviewPanel.svelte Use shared EmptyMetrics empty-state component
packages/frontend/src/lib/components/Footer.svelte Bump displayed version to 1.2.0
packages/frontend/src/lib/components/EmptyTraces.svelte Update OTLP Go snippet (context/background + insecure hint)
packages/frontend/src/lib/components/dashboard/StatsCard.svelte Support trend label/unit formatting
packages/frontend/src/lib/components/CreateAlertDialog.svelte Apply initial builder values when opened (prefill/duplicate)
packages/frontend/src/lib/components/CommandPalette.svelte Add query-driven search actions (logs/errors/traceId)
packages/frontend/src/lib/api/projects.ts Add ingestion health API + export singleton instance
packages/frontend/src/lib/api/fetch-interceptor.ts Don’t log out user on 401s from telemetry/ingest endpoints
packages/frontend/src/lib/api/exceptions.ts Add duplicates + merge endpoints client helpers
packages/frontend/src/lib/api/digests.ts Add digest settings + public unsubscribe API client
packages/frontend/src/lib/api/auth.ts Allow register response without session
packages/frontend/src/lib/api/alerts.ts Add AlertBuilderPrefill type
packages/frontend/src/lib/api/admin.ts Extend ingestion health stats type with skew counters
packages/frontend/src/hooks.server.ts Bump release tag fallback to 1.2.0
packages/frontend/src/hooks.client.ts Bump client release tag fallback to 1.2.0
packages/frontend/package.json Bump to 1.2.0; add @internationalized/date; bump echarts
packages/backend/src/worker.ts Enable digest dispatch + generation workers and cron registration
packages/backend/src/utils/internal-logger.ts Bump release tag fallback to 1.2.0
packages/backend/src/tests/setup.ts Re-seed local auth provider in test DB setup
packages/backend/src/tests/queue/jobs/exception-parsing.test.ts Add regression + auto-merge ingestion tests
packages/backend/src/tests/queue/jobs/digest-dispatch.test.ts Add digest dispatch processor tests
packages/backend/src/tests/modules/users/users-service.test.ts Remove redundant login tests; use provider/auth service paths
packages/backend/src/tests/modules/traces/service.test.ts Add span clock-skew metering tests (post-masking)
packages/backend/src/tests/modules/metrics/service.test.ts Add metric clock-skew metering tests
packages/backend/src/tests/modules/metering/recorder.test.ts Ensure ingestion.* counters bypass metering gate
packages/backend/src/tests/modules/ingestion/skew.test.ts Add skew tracker unit tests
packages/backend/src/tests/modules/ingestion/ingestion-service.test.ts Add log skew metering tests
packages/backend/src/tests/modules/exceptions/service.test.ts Add service attribution + mergeErrorGroups tests
packages/backend/src/tests/modules/exceptions/routes.test.ts Add duplicates/merge route tests
packages/backend/src/tests/modules/exceptions/detection.test.ts Treat node: frames as library; prevent error group splitting
packages/backend/src/tests/modules/digests/scheduler.test.ts Update scheduler tests for single dispatch cron
packages/backend/src/tests/modules/digests/generator-integration.test.ts Digest now includes multiple sections + HTML/unsubscribe
packages/backend/src/tests/modules/dashboard/dashboard-service.test.ts Ensure “today” stats include earlier-today logs
packages/backend/src/tests/modules/capabilities/digest-recipients-limit.test.ts Enforce digests.max_recipients capability
packages/backend/src/tests/modules/auth/local-provider.test.ts Add SSO_REQUIRED code; enumeration hardening; emailVerified
packages/backend/src/tests/modules/auth/external-routes.test.ts Preserve migration-seeded local provider in cleanup
packages/backend/src/tests/modules/auth/authentication-service.test.ts Use typed AuthError codes; preserve local provider row
packages/backend/src/tests/modules/audit-log/record-integration.test.ts Audit typed login-failure reasons + provider unavailable
packages/backend/src/tests/modules/admin/routes.test.ts Add admin skew counter reporting tests
packages/backend/src/tests/lib/email-templates.test.ts Add digest email template coverage + escaping assertions
packages/backend/src/tests/helpers/factories.ts Support SSO-only + disabled users in test factory
packages/backend/src/server.ts Register digests routes + public unsubscribe routes
packages/backend/src/queue/jobs/exception-parsing.ts Add auto-merge (merge_key), reopen regressions, pass service/topFrame
packages/backend/src/queue/jobs/error-notification.ts Add regression-aware notification titles/severity/flags
packages/backend/src/queue/jobs/digest-dispatch.ts Add hourly dispatch job that enqueues due digest generations
packages/backend/src/modules/users/service.ts Remove redundant UsersService.login implementation
packages/backend/src/modules/users/routes.ts Route login/register through provider registry; typed AuthError handling
packages/backend/src/modules/traces/service.ts Add span end-time skew metering
packages/backend/src/modules/projects/service.ts Add per-project ingestion health read model (skew aggregation)
packages/backend/src/modules/projects/routes.ts Add /projects/:id/ingestion-health endpoint
packages/backend/src/modules/metrics/service.ts Add metric skew metering
packages/backend/src/modules/metering/types.ts Add ingestion timestamp skew metering event types
packages/backend/src/modules/metering/recorder.ts Let ingestion.* bypass METERING_ENABLED gate
packages/backend/src/modules/ingestion/skew.ts New skew tracker utility + thresholds
packages/backend/src/modules/ingestion/service.ts Record log skew metrics during ingest (never reject)
packages/backend/src/modules/exceptions/types.ts Extend CreateExceptionParams with service/topFrame
packages/backend/src/modules/exceptions/service.ts Add duplicate discovery + merge logic
packages/backend/src/modules/exceptions/routes.ts Add duplicates + merge endpoints
packages/backend/src/modules/exceptions/fingerprint-service.ts Add topAppFrame helper for coarse merge key
packages/backend/src/modules/exceptions/detection.ts Classify node: runtime frames as library code
packages/backend/src/modules/digests/service.ts Digest config/recipient CRUD + token unsubscribe service
packages/backend/src/modules/digests/scheduler.ts Switch to static hourly dispatch cron registration
packages/backend/src/modules/digests/public-routes.ts Add public unsubscribe endpoint (token-based)
packages/backend/src/modules/digests/index.ts Export digests module surface
packages/backend/src/modules/dashboard/service.ts Fix low-volume “today” stats to use raw logs when aggregate stale
packages/backend/src/modules/auth/providers/types.ts Add AuthError + SSO_REQUIRED error code
packages/backend/src/modules/auth/providers/local-provider.ts Enumeration hardening; SSO_REQUIRED; emailVerified
packages/backend/src/modules/auth/providers/index.ts Export AuthError
packages/backend/src/modules/auth/authentication-service.ts Throw typed AuthError codes end-to-end
packages/backend/src/modules/audit-log/actions.ts Add digest config/recipient audit actions
packages/backend/src/modules/admin/service.ts Include skew counters in admin ingestion health stats
packages/backend/src/database/types.ts Add new DB fields for exceptions/error_groups/digests tables
packages/backend/src/capabilities/registry.ts Add digests.max_recipients capability
packages/backend/package.json Bump backend package version to 1.2.0
packages/backend/migrations/055_error_group_auto_merge.sql Add merge_key + trigger updates + backfill
packages/backend/migrations/054_exception_service_attribution.sql Carry exception.service for engine-independent attribution
packages/backend/migrations/053_digest_last_sent.sql Add digest_configs.last_sent_at
package.json Bump repo version and security override ranges
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/backend/migrations/055_error_group_auto_merge.sql
Comment thread packages/backend/src/modules/exceptions/service.ts
Comment thread packages/backend/src/modules/exceptions/service.ts
Comment thread packages/backend/src/modules/exceptions/service.ts Outdated
Copilot AI review requested due to automatic review settings July 22, 2026 12:16

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 123 out of 124 changed files in this pull request and generated 3 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

Comment thread packages/backend/src/queue/jobs/digest-dispatch.ts
Comment thread packages/frontend/src/lib/stores/time-range.ts
Comment thread packages/frontend/src/lib/stores/current-project.ts
Copilot AI review requested due to automatic review settings July 24, 2026 08:01

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@codecov

codecov Bot commented Jul 24, 2026

Copy link
Copy Markdown

@Polliog
Polliog merged commit 7c3ab51 into main Jul 24, 2026
12 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants