Skip to content

Releases: GilbN/geometrikks

v0.8.0-dev.2

v0.8.0-dev.2 Pre-release
Pre-release

Choose a tag to compare

@GilbN GilbN released this 12 Aug 19:44

fix(cli) 51bf8f1: decompress hypertable chunks before backfill-hostname updates
The full-table UPDATEs tripped TimescaleDB's tuple decompression limit
(max_tuples_decompressed_per_dml_transaction, 100k) on compressed
history; Decompress affected chunks first,
same pattern as the url/referrer swap migration, and probe with cheap
EXISTS queries so a rerun with nothing left to change exits before the
expensive decompression.

Full Changelog: v0.8.0-dev.1...v0.8.0-dev.2

v0.8.0-dev.1

v0.8.0-dev.1 Pre-release
Pre-release

Choose a tag to compare

@GilbN GilbN released this 11 Aug 21:22
f3e36e2

What's Changed

  • feat: Traefik access log support, multi-source separation, and url/referrer swap fix by @GilbN in #129

Full Changelog: v0.7.1-dev.3...v0.8.0-dev.1

v0.7.1

Choose a tag to compare

@GilbN GilbN released this 11 Aug 21:05
fbb0030

What's Changed

  • build(deps): bump aiohttp from 3.14.1 to 3.14.3 in the uv group across 1 directory by @dependabot[bot] in #118
  • build(deps): bump the github-actions group across 1 directory with 5 updates by @dependabot[bot] in #98
  • Feat/auth disabled mode by @GilbN in #119
  • build(deps): bump the github-actions group with 5 updates by @dependabot[bot] in #120
  • chore(deps): bump lucide-react from 0.562.0 to 1.27.0 by @dependabot[bot] in #99
  • build(deps-dev): bump vite from 7.3.6 to 8.2.0 by @dependabot[bot] in #100
  • build(deps-dev): bump @vitejs/plugin-react from 5.2.0 to 6.0.5 by @dependabot[bot] in #101
  • build(deps): bump the python-minor-patch group across 1 directory with 3 updates by @dependabot[bot] in #122
  • build(deps): bump the frontend-minor-patch group across 1 directory with 9 updates by @dependabot[bot] in #123
  • fix: show chart tooltips and summary range in local time by @GilbN in #126
  • fix(frontend): keep analytics charts readable on dense and spike-dominated data by @GilbN in #127
  • fix(analytics): bucket daily chart data into browser-local days by @GilbN in #128
  • Release v0.7.1 by @GilbN in #130

Highlights

Added

  • Time-series charts auto-clamp the y-axis when a single traffic burst dwarfs the rest of the range, with a "y-axis clipped" note and true values kept in tooltips.
  • Settings > Status Authentication card reporting whether built-in auth is active.
  • /logout as a route of its own.

Changed

  • GET /api/v1/auth/me now reports an auth mode (session / disabled); the auth endpoints answer as mode-appropriate no-ops when APP_AUTH_DISABLED=true.
  • 404/401 responses log a single client_error warning instead of an error-level traceback.

Fixed

  • Daily chart buckets are computed as browser-local days, so "Today" no longer renders an extra day.
  • Status-classes chart switches to a stacked area past 48 buckets instead of rendering invisible sub-pixel bars.
  • Chart tooltips and the Summary date-range badge show browser-local time instead of raw UTC.
  • With APP_AUTH_DISABLED=true the auth endpoints stay registered, so /api/v1/auth/me no longer 404s on every page load.

Full Changelog: v0.7.0...v0.7.1

v0.7.1-dev.3

v0.7.1-dev.3 Pre-release
Pre-release

Choose a tag to compare

@GilbN GilbN released this 09 Aug 19:46
150527b

What's Changed

  • fix: show chart tooltips and summary range in local time by @GilbN in #126
  • fix(frontend): keep analytics charts readable on dense and spike-dominated data by @GilbN in #127
  • fix(analytics): bucket daily chart data into browser-local days by @GilbN in #128

Full Changelog: v0.7.1-dev.2...v0.7.1-dev.3

v0.7.1-dev.2

v0.7.1-dev.2 Pre-release
Pre-release

Choose a tag to compare

@GilbN GilbN released this 08 Aug 12:44
7a1fa72

What's Changed

  • build(deps): bump the github-actions group with 5 updates by @dependabot[bot] in #120
  • chore(deps): bump lucide-react from 0.562.0 to 1.27.0 by @dependabot[bot] in #99
  • build(deps-dev): bump vite from 7.3.6 to 8.2.0 by @dependabot[bot] in #100
  • build(deps-dev): bump @vitejs/plugin-react from 5.2.0 to 6.0.5 by @dependabot[bot] in #101
  • build(deps): bump the python-minor-patch group across 1 directory with 3 updates by @dependabot[bot] in #122
  • build(deps): bump the frontend-minor-patch group across 1 directory with 9 updates by @dependabot[bot] in #123

Full Changelog: v0.7.1-dev.1...v0.7.1-dev.2

v0.7.1-dev.1

v0.7.1-dev.1 Pre-release
Pre-release

Choose a tag to compare

@GilbN GilbN released this 07 Aug 11:00
ea8214d

What's Changed

  • build(deps): bump aiohttp from 3.14.1 to 3.14.3 in the uv group across 1 directory by @dependabot[bot] in #118
  • build(deps): bump the github-actions group across 1 directory with 5 updates by @dependabot[bot] in #98
  • Feat/auth disabled mode by @GilbN in #119

Full Changelog: v0.7.0...v0.7.1-dev.1

v0.7.0

Choose a tag to compare

@GilbN GilbN released this 02 Aug 12:25
3488069

What's Changed

  • GeoMetrikks 0.7 phase 1: warning-free Litestar compatibility by @GilbN in #104
  • GeoMetrikks 0.7 phase 2: hermetic composition and testing by @GilbN in #105
  • GeoMetrikks 0.7 phase 3: API and service consistency by @GilbN in #106
  • GeoMetrikks 0.7: dissolve api/v1 into domain packages by @GilbN in #107
  • GeoMetrikks 0.7 phase 4 - versioned /api/v1 router, camelCase wire format, pinned error contract by @GilbN in #108
  • GeoMetrikks 0.7 phase 5 - lifespan resource ownership, migration gate, realtime consolidation by @GilbN in #109
  • GeoMetrikks 0.7 phase 6 - frontend and deployment hardening by @GilbN in #110
  • GeoMetrikks 0.7 phase 7 - pre-checks: Litestar 3 gate status and structlog test isolation by @GilbN in #111
  • Fix mobile Settings navigation overflow by @GilbN in #112
  • Fix: end the tailer's waits as soon as a stop is requested by @GilbN in #114

Added

  • GEOMETRIKKS_ENV_FILE environment variable to override the .env file
    path; an empty value disables dotenv loading entirely (the test suite uses
    this so results never depend on a local .env).
  • DB_MIGRATE_ON_STARTUP setting (default true). Set to false to run
    schema migrations as a separate deployment step with
    litestar database upgrade instead of at every app startup; the app then
    fails startup deliberately if the schema was left unusable.
  • docs/deployment.md documenting the container runtime model, the
    single-worker constraint, migration ownership, shutdown behavior, and
    health endpoints.

Fixed

  • Fixed horizontal page scrolling on mobile Settings routes and replaced the
    overflowing tab row with a compact section selector.
  • docker stop now shuts the server down gracefully: ingestion drains its
    current batch and the scheduler stops before the process exits. The
    container previously killed the server without running any teardown
    because the CLI wrapper did not forward SIGTERM to Granian; the server
    now runs in Granian's direct process mode under a tini init.
  • Shutdown is no longer delayed when a log file is missing or has not yet
    received a parseable line. The tailer's waits now end as soon as a stop is
    requested, instead of occupying a worker thread for up to 60 seconds and
    leaving the container to be force-killed part-way through teardown. This
    was reachable on a fresh install, where nginx has created the access log
    but not yet written to it.

Changed

  • Breaking: all REST API JSON fields and query parameters are now
    camelCase (totalRequests, startedAt, fromTimestamp, startDate,
    comparePrevious, ...); previously the dataclass-backed endpoints
    (analytics, system, settings, stats, health, CrowdSec, geo top-IPs/GeoJSON,
    log files) used snake_case. Digit-adjacent fields are status2xx-style and
    requestCount24h. Path segments ({location_id}, {job_id}), WebSocket
    frame payloads, orderBy column values, and the error envelope are
    unchanged. External API consumers must rename fields; the bundled frontend
    is already migrated. The full policy is documented in
    docs/api-conventions.md.

  • Errors on API paths that previously returned an empty 404 body (unknown
    routes, CrowdSec-disabled lookups) now return the standard
    {status_code, detail} JSON envelope; non-API 404s are unchanged.

  • All REST endpoints are mounted through a single versioned /api/v1 router;
    URLs, operation IDs, and generated client method names are unchanged.

  • Application startup and shutdown are now composed of focused lifespan
    phases (core state, GeoIP, CrowdSec, database, scheduler, ingestion), each
    owning its own cleanup. A failure during startup now stops the services
    that had already started instead of leaking them; teardown order and the
    DB-degraded and geo-degraded behaviors are unchanged.

  • create_app() accepts an explicit settings object and app-level dependency
    overrides, and request handlers now receive settings through dependency
    injection instead of resolving the process-cached factory inline. The
    SQLAlchemy engine, startup migrations, scheduled aggregate jobs, and
    trusted-proxy client-IP resolution all bind to the composed settings; the
    settings dependency name is reserved (overriding it would split
    configuration between request handlers and the rest of the app).

  • The backend test suite runs async tests on AnyIO (pytest-asyncio removed),
    is fully isolated from .env and ambient environment values, and gained
    WebSocket feed coverage for degraded-mode 1013 closures, overflow/drop
    counting, heartbeats, unsubscribe cleanup, cancellation, the session-auth
    handshake boundary, and the inbound-frame policy.

  • Development now runs on a single origin: litestar run serves the app,
    all Vite assets, and hot-module reload through http://localhost:8000
    (the Vite sidecar uses an internal ephemeral port). The standalone Vite
    dev server on :5173, its /api and /ws proxies, and the published 5173
    port in the dev compose are gone.

  • The production image installs the application as a built wheel instead of
    copying the source tree, runs a single explicit Granian worker, and uses
    tini as PID 1. litestar-vite upgraded to 0.29 on both the Python and npm
    sides.

  • The /health, /health/ready, /api/v1/stats, and /api/v1/logs/tail
    responses now have typed OpenAPI schemas (readiness documents its 503
    response); payload shapes on the wire are unchanged.

  • The geo-locations API is served through a dedicated service layer with
    Advanced Alchemy pagination; the currentPage/pageSize parameters and
    default page size are unchanged.

  • Invalid filter, sort, and ban-duration values are now translated to 400
    responses centrally from domain exceptions instead of per-controller HTTP
    raises; the {status_code, detail} error envelope is unchanged.

  • All API query and path parameters now use Litestar's explicit
    QueryParameter/FromPath declarations (Litestar 3.0 readiness). Wire
    names and validation are unchanged; the OpenAPI schema gains descriptions
    for the two /logs/tail query parameters.

  • The DB_POOL_PRE_PING setting is now honored; it was previously declared
    but hardcoded to enabled.

  • The VITE_USE_SERVER_LIFESPAN and VITE_ENABLE_REACT_HELPERS settings are
    now passed through to the Vite integration; they previously had no effect.

  • Litestar is now constrained to the 2.x series (<3) so the upcoming
    Litestar 3.0 release cannot be picked up accidentally before the planned
    migration.

  • The test suite now fails on new Litestar deprecation warnings and runtime
    warnings, with the seven known upstream advanced-alchemy filter-provider
    warnings pinned as the only deprecation exemption.

Removed

  • The VITE_HOT_RELOAD setting, which mapped to nothing in the Vite
    integration (HMR is always on in dev mode).
  • Dead internal dependency providers (transaction, access-log repository)
    and the unused litestar-mcp dev dependency.

Full Changelog: v0.6.0...v0.7.0

v0.7.0-dev.3

v0.7.0-dev.3 Pre-release
Pre-release

Choose a tag to compare

@GilbN GilbN released this 02 Aug 12:12
e5a4c72

What's Changed

  • Fix: end the tailer's waits as soon as a stop is requested by @GilbN in #114

Full Changelog: v0.7.0-dev.2...v0.7.0-dev.3

v0.7.0-dev.2

v0.7.0-dev.2 Pre-release
Pre-release

Choose a tag to compare

@GilbN GilbN released this 02 Aug 11:10

Full Changelog: v0.7.0-dev.2...v0.7.0-dev.3

What's Changed

Full Changelog: v0.7.0-dev.1...v0.7.0-dev.2

v0.7.0-dev.1

v0.7.0-dev.1 Pre-release
Pre-release

Choose a tag to compare

@GilbN GilbN released this 02 Aug 08:41
2298600

What's Changed

  • chore(deps): bump oven/bun from 621f249 to d56a253 by @dependabot[bot] in #71
  • chore(deps): bump the python-minor-patch group with 5 updates by @dependabot[bot] in #74
  • chore(deps-dev): bump @types/node from 25.0.3 to 26.1.1 by @dependabot[bot] in #79
  • chore(deps): bump shadcn from 3.6.2 to 4.16.0 by @dependabot[bot] in #77
  • GeoMetrikks 0.7 phase 1: warning-free Litestar compatibility by @GilbN in #104
  • GeoMetrikks 0.7 phase 2: hermetic composition and testing by @GilbN in #105
  • GeoMetrikks 0.7 phase 3: API and service consistency by @GilbN in #106
  • GeoMetrikks 0.7: dissolve api/v1 into domain packages by @GilbN in #107
  • feat!: 0.7 phase 4 - versioned /api/v1 router, camelCase wire format, pinned error contract by @GilbN in #108
  • feat: 0.7 phase 5 - lifespan resource ownership, migration gate, realtime consolidation by @GilbN in #109
  • Phase 6: frontend and deployment hardening by @GilbN in #110

Full Changelog: v0.6.0-dev.6...v0.7.0-dev.1