v0.8.4
Released
Feature
Skeleton Loaders, Helm Auto-Release & Performance Fixes
All dashboard pages now show content-shaped skeleton loaders, automated Helm chart releases on every stable Docker image, and multiple performance and correctness fixes for API endpoints and admin pages.
- Skeleton loaders and loading overlays on all dashboard pages
- Automated Helm chart releases triggered on every stable Docker image release
- API 400 responses now include field-level validation errors
- Fixed admin pages returning 502 on direct load/reload
- POST /api/v1/logs/identifiers/batch performance: bypasses storage engine, one PostgreSQL query
- GET /api/v1/logs/hostnames 8+ second queries fixed with engine-specific indexes and a 6h window cap
Added
- Skeleton loaders and loading overlays: all dashboard pages now show content-shaped loading states instead of blank spinners
- New
Skeleton,SkeletonTable, andTableLoadingOverlaycomponents (src/lib/components/ui/skeleton/) - Directional shimmer animation via
@keyframes shimmerusing design tokens — works in light and dark mode, disabled forprefers-reduced-motion - Initial load (no data yet): animated skeleton rows mirroring the page layout — stat cards on
/dashboard, project cards on/dashboard/projects, table rows on search, traces, errors, admin tables, incidents, alerts history, and members - Re-fetch (filter change, pagination): existing content dims with a translucent overlay and centered spinner, preventing layout shift and context loss
- Pages updated:
/dashboard,/dashboard/search,/dashboard/projects,/dashboard/alerts,/dashboard/errors,/dashboard/traces,/dashboard/security,/dashboard/security/incidents,/dashboard/admin/organizations,/dashboard/admin/users,/dashboard/admin/projects,/dashboard/settings/members
- New
- Automated Helm chart releases: every stable Docker image release now triggers a
repository_dispatchtologtide-dev/logtide-helm-chart, which auto-bumpsappVersionand chart version (patch), commits, and publishes a new chart release to the Helm repo on GitHub Pages
Fixed
- API 400 responses now include a
detailsarray with field-level validation errors instead of just a generic message. Covers both Fastify/AJV schema validation and Zod validation errors (including uncaughtZodErrorthat previously returned 500) - Admin pages returned 502 Bad Gateway on direct load/reload: the admin layout (
[email protected]) breaks out of the dashboard layout chain, sossr = falsewas not inherited; added a dedicated+layout.tsto the admin section /dashboard/admin/projects/[id]crashed with “Something went wrong” due toformatDatebeing called but not defined (function was namedformatTimestamp)POST /api/v1/logs/identifiers/batchslow: the route was callingreservoir.getByIds(hitting ClickHouse/TimescaleDB/MongoDB) only to verify project access, then queryinglog_identifiers(PostgreSQL) separately. Sincelog_identifiersalready storeslog_id → project_id + identifierdata, the storage engine call is now bypassed entirely — one PostgreSQL query replaces the N×storage-engine-roundtrips loop. Added bloom filter skip index onidin ClickHouse and a standaloneidindex in TimescaleDB (migration 032) forgetByIdsused byfindCorrelatedLogsGET /api/v1/logs/hostnamestaking 8+ seconds: the 6h window cap was only applied whenfromwas absent — explicitfromparams (e.g. 24h range from the search page) bypassed it and triggered a full-range metadata scan; cap now clamps any window to 6h max. Addedlimit: 500to the distinct call. Per-engine optimizations: ClickHouse adds ahostnamematerialized column (computed at ingest, eliminatesJSONExtractStringat query time) and uses it directly in distinct queries; TimescaleDB adds a composite expression index(project_id, (metadata->>'hostname'), time)(migration 032); MongoDB adds a sparse compound index onmetadata.hostname. All three engines also now extract themetadatafield in a subquery (once per row vs 3×)