Changelog
All notable changes to TimeTiles are documented here. Format based on Keep a Changelog .
See the release process for how new versions are cut.
[Unreleased]
Changes landed on main since the last tagged release.
Added
- Environment banner on non-prod deployments
- Auto-activation of data packages on boot per environment
- Bundled data-package manifests delivered via
git pullon deploy - Demonstrations.org data packages with POST pagination
- UCDP HDX data package and catalog metadata
- NSU Offener Prozess scraper example
- Transactional emails queued via Payload tasks
- Storybook stories for UI primitives, charts, layout/editorial blocks, overlays, navigation, map controls, and form/feedback components
LOGIN_SUCCESS,LOGIN_FAILED, andREGISTEREDaudit events- Points cluster display mode
- Smart groupBy filtering with shared settings panel
- URL-sync for fullscreen state and groupBy UX
- Contextual category filters with cross-filtering
- Multi-column grid layout (renamed from List view)
- Collapsible chart section with unified header
CardToolbarprimitive and “Analyze” chart button- Info popover on catalog group headers
- Split-to-array transform for multi-value CSV fields
E2E_MODEsignal andisE2E()helper- ESLint rule preventing
sql.raw()with dynamic strings - SonarCloud scripts: coverage-per-file, security-hotspot review, quality-gate fetch
Changed
- Wizard store actions renamed to intent-based names
- Trivy scan and
wait_for_healthextracted into reusable CI helpers - Explore view-toggle terminology unified on “List”
editDatasetIdreplaced witheditScheduleDatastate- Documentation
<img>tags converted tonext/image
Fixed
- Scheduled-ingest retries, quotas, and URL-fetch hardening regressions
- CSV identity values preserved through import
- Map and import flows hardened (replacing fake tests with real assertions)
- Maintenance job task enum values aligned with code
- Numeric strings no longer accepted as inferred dates; trusted HTTP date guard simplified
- Deployment: nginx healthcheck timing, postgres race on first boot, SMTP cert mismatch, container UID for
logs//uploads/,DEPLOYMENT_ENVIRONMENTpropagated to the web container, post-pull re-exec schemaModepropagation in wizard first-run and scraper paths- “Create new catalog/dataset” placed at top of dropdown
Security
- Scheduled ingest validation hardened
- HTTP security headers baseline and SSRF/path-traversal hardening on import
- Critical and high-priority findings from the 2026-04-16 audit closed
[0.1.0-alpha.4] - 2026-03-31
End-of-funding-period iteration. Final state of the platform on the last day of the Prototype Fund Software Sprint funding period (FKZ 16IS25S03).
Added
- H3 hexagonal grid clustering with expert mode
- Cluster focus mode, H3-based cluster filtering, mini dashboard
- Unique-locations model — separate locations from clusters
- Dataset-centric filter sidebar with multi-catalog support
- Dataset info popover, colored checkboxes, dataset bounds API
- Auto-zoom to data on dataset selection change
- Beeswarm chart type with d3-force layout and server-side temporal clustering
- Grouped charts: groupBy for beeswarm and stacked histogram
- Chart type synced to URL parameter
- Tag field support for multi-value array filtering
- HTML-in-JSON import format with detail-page enrichment
- JSON pre-processing with group-by and date merge
- Embeddable views via
/embedroute - Photon and LocationIQ geocoding providers (weighted distribution)
- Funding logos (Prototype Fund, BMFTR) in docs, web app, and README
Changed
- Tag chips in event detail show field labels
- Filter rows left-aligned; redundant catalog labels removed
- Catalog chart hidden for single-catalog selections
Fixed
cluster_events()location_name cast to text
[0.1.0-alpha.3] - 2026-03-22
Second Second-Stage iteration. Feature work in direct response to feedback from the partner-organisation cooperation: internationalization, scraper sandboxing, JSON API ingestion, full wizard redesign.
Added
- Internationalization with next-intl (English and German locales)
- Translation of all user-facing components and email templates (EN/DE)
- Payload CMS content localization for EN/DE
- Custom scraper system with isolated Podman runner, scraper management UI, and CLI
- Scraper quota enforcement
- Block registry, UI customization, and layout templates
- Branding global wired into emails (siteName and logo)
- API key authentication
- Configurable legal notices on the registration form
- Timezone support for scheduled imports
- JSON API import with pagination and wizard UX
- JSON file upload in the import wizard
- Edit scheduled import via the import wizard
- Multi-stage progress timeline and column-centric mapping in the import wizard
- Multi-worker support with concurrency control for jobs
- Error boundaries on explore and import pages
- React Compiler enabled
Changed
- Renamed service factories to
create*Serviceconvention - Replaced custom fade animations with native View Transitions API
- Migrated all frontend routes to locale-aware
[locale]/(frontend)/structure - Renamed
import→ingestacross the codebase - Schema-detection package consolidated into the app
[0.1.0-alpha.2] - 2026-03-12
First Second-Stage iteration. Code quality, infrastructure hardening, and platform consolidation in preparation for the partner-cooperation work.
Added
- Restic-based backup system with S3 offsite support
- All-in-one Docker image for single-server deployments
- Pre-built GHCR images in docker-compose, pull-based deployment workflow
- Integration tests for nginx routing, backup/restore, and Docker container lifecycle
- Forgot-password and reset-password pages
- Generic audit log with broad codebase coverage (extends the original audit-logging service)
apiRoute()framework with auto-wrapping; all API routes migrated- Zod validation schemas across all API routes
- Encryption of credentials at rest
- Sites collection wired into layouts with data-scope filtering
- Worktree-management script with env-file setup
- 80 additional oxlint native rules
- Shared
ContentStatecomponent for empty/error/no-match states
Changed
- Decomposed large files into focused modules
- Logo and asset reorganisation with new naming and folder structure
Fixed
- Access control hardening (5 audit findings, including a security bug)
- Dataset-schemas access control denormalised for performance
- Constant-time email change, quota caching, env naming
[0.1.0-alpha.1] - 2025-12-02
First feature-complete public alpha at the close of the regular Prototype Fund Software Sprint Phase 1 (June–November 2025, FKZ 16IS25S03). Implements the milestones from the original proposal: design system, geocoding/data ingest, layout components, filters, visualisation, documentation.
Added
- Initial public alpha of TimeTiles
- Interactive geospatial timeline visualization with MapLibre GL JS
- Data import system supporting CSV, Excel, and ODS formats
- Automatic schema detection and field mapping
- Multi-provider geocoding (Nominatim, Google) with database-driven provider configuration and persistent location cache
- Real-time map clustering and timeline scrubbing
- Timeline histogram for event distribution over time
- Dynamic filters by category, date, and location with URL-based state
- Categorical field filters with schema-based enum support
- Map theme toggle and zoom controls
- Adaptive tooltip formatting for histogram chart
- Responsive web interface with light/dark themes
- Mobile navigation drawer and filter sheet
- Import wizard with field-mapping detection and user usage tracking
- Transforms UI and flow editor
- Scheduled URL-based imports with automatic execution and webhook triggers
- Background job runner
- Account management, feature flags, and branding globals (logos, favicons, site name)
- Newsletter signup integrated with Payload CMS in the footer
- Pages collection and MainMenu global for CMS-driven navigation; flexible page builder with block-based content
- Multi-user permission and quota system with trust levels (0–5)
- Owner-based access control for private data
- Comprehensive audit logging service
- Views collection for saved display configurations
- Comprehensive E2E testing with Playwright
- PostgreSQL 17 + PostGIS 3.5 backend
- Next.js 16 frontend with Payload CMS 3 (integrated mode)
- Documentation site (Nextra)
- AGPL-3.0 license
For development changes, see the Git commit history .