github GilbN/geometrikks v0.23.0

3 hours ago

Upgrade notes

  • Everyone is logged out once after the update. Sessions now live in the database, so later restarts and updates keep you logged in.
  • GeoMetrikks now checks api.github.com for a newer release every 12 hours. Set APP_UPDATE_CHECK=false to turn it off.
  • API_HOST, API_PORT, API_LOG_LEVEL, GEOIP_VALIDATE_DB_PATH, GEOIP_VALIDATE_LOCALES, APP_VERSION, APP_NAME, APP_DESCRIPTION, VITE_ENABLE_REACT_HELPERS and VITE_EXECUTOR are gone. GeoMetrikks ignores them if they are still set, so delete them from your .env or compose file whenever it suits you. If you set API_LOG_LEVEL, move the value to LOG_LEVEL.

Added

  • Active decisions on the Security page has a search field. An IP or a range such as 45.148.0.0/16 searches every origin, crowd bans included, and a single match opens to list its decisions. Other text narrows the current tab to targets that start with it or scenarios that contain it. A line under the field says which search ran and how many targets match.
  • APP_SESSION_MAX_AGE_DAYS sets how long a login lasts, 7 days by default. Raise it for a wall screen that nobody logs in to by hand.
  • An open page says when the server has been updated. On desktop the sidebar version turns into a card with a Reload button. On phones a toast offers Reload or Later and leaves a dot on the menu button. The page reloads by itself only after 5 minutes with no input, or when you come back to a tab that was in the background during the update, so a wall screen still moves to the new version on its own. A page you were using used to reload without warning.
  • GeoMetrikks checks GitHub every 12 hours for a newer release. Set APP_UPDATE_CHECK=false to turn the check off. The top card on Settings > About leads with the running version and shows a newer release as the next step on a short track, with a link to its release notes. More than one release behind, the track says how many you would skip and links to the full release list. The card shows the container image tag only when it differs from the version, and no longer breaks the version across lines on phones. Until you open About, the sidebar version and the About entry in Settings carry a dot, and on a phone Settings opens with a card that names the release.

Changed

  • Bans and unbans from a table row, an IP's actions menu, the IP inspector or a map popup wait 5 seconds before they reach CrowdSec. A toast says what is about to happen, for an unban how many decisions it removes and how many came from the crowd, and offers Undo. The menu or button you used offers Undo too. A row being unbanned says so until CrowdSec answers, and a toast confirms it. Leaving or closing the page, logging out, or switching away from the browser on a phone sends a waiting action at once. The Ban IP form has no undo window. It sends any waiting ban or unban first, then bans.
  • IP columns in the log, analytics and security tables have a copy button and one actions menu in place of the inspect, fly-to and ban buttons. The menu inspects the IP, flies to it, bans or unbans it, and adds the row's IP, host, server, country or ASN to the page's filters or takes it out again. Its header shows the IP's decision with the scenario and time left, plus the IP's location and network. On phones the menu opens as a bottom drawer. An IP with an active CrowdSec decision takes the decision's colour instead of carrying a Banned badge.
  • The details of a request, location, debug line or CrowdSec alert open with the IP at the top, with its decision, place and network below it and a copy button beside it. Inspect IP, Show on map and the IP actions menu sit along the bottom of the sheet, within thumb reach on a phone, in place of the small icons next to the IP. The menu has the same filters as the table rows. The IP inspector's footer matches, with Analytics, Access logs and Debug logs as full-size labelled buttons and Abuse report as a square icon button at the end. On a phone, Debug logs and Abuse report take a second row when the IP has debug logs.
  • Selecting text in a table row no longer opens the row's details, so you can highlight an IP or URL and copy it straight from the table.
  • On a phone or in a narrow window, Access Logs, Geo Logs and Debug Logs show each row on two lines instead of a table you scroll sideways. On Access Logs the status, method and full URL sit on top, with the time, country and IP below. The list scrolls with the page, its header with the row count and a Sort button stays under the top bar on phones, and Sort opens a drawer to pick the field and the order. Live tail says it is waiting for requests until the first one arrives, instead of showing an empty table.
  • When a top list on Analytics or Geo Logs is too narrow for its columns, as on a phone, the top IPs, URLs, user agents and networks show each entry on two lines: the name and its count on top, the supporting numbers below. URLs and user agents wrap onto two lines instead of being cut off at one.
  • On a phone or in a narrow window, Active decisions and Alert history on the Security page show each row on two lines. Both put the IP on top, with the decision type or the alert's outcome at the right, and the scenario and time below. Alert times leave out the seconds. On a phone, Ban IP shares a row with the origin tabs, and the Alert history range tabs share a row with Filters.
  • Scenario names in the Security tables, the Top scenario card, the IP actions menu, the IP inspector and the banned-IP map popup leave out the crowdsecurity/ prefix. Any other author stays next to the name, and a manual decision shows its reason only when you gave one. The alert details still show the full name.
  • Active decisions, the alert details, the IP actions menu, the IP inspector and the banned-IP map popup show the time left as "3h 49m" or "6d 21h", and a decision that runs for years as "Forever", instead of CrowdSec's raw duration such as 86471h2m44s.
  • On a phone, the map opens on your traffic instead of the server locations, or on the stretch with the most events when the traffic is spread wider than the screen. MAP_DEFAULT_VIEW still decides the view when it is set. A card floats over the bottom of the map with labelled Layers, All traffic, Server and Live buttons, and Layers opens the map controls that used to sit behind an icon in the top bar. The map runs to the bottom of the screen behind the card, with the OpenStreetMap and CARTO credits in one line under it. You pinch to zoom instead of using zoom buttons.
  • On a phone, the top bar shows the time range as a teal button next to a refresh button whose ring fills once per auto refresh interval. The range button opens one drawer with Recent, Calendar and Custom tabs, auto refresh and, on Analytics and Geo Logs, chart buckets. Pages the range doesn't affect, such as Security and Settings, show neither button, and the color scheme switch lives on Settings > Appearance. A chart's view and scale options sit behind a larger bordered button next to its title and open in a drawer with full-width rows.
  • On a phone, Analytics and Geo Logs have a row of section buttons pinned under the top bar. Tap one to jump to that chart or list. The button for the section on screen lights up. Chart legends show two entries per line.
  • Stat card titles and values line up across a row when one card's title wraps. On a phone the stat cards on the Overview, Security, Geo Logs and Debug Logs pages sit two to a row and take less height, so the Overview is about half as long. The top bar already names the page, so phones hide the page title and description and the descriptions on table and chart cards. Access Logs puts its Filters button next to the History and Live tail tabs, and the Overview's date range leaves out the times when it spans more than a day. The Overview heading says Overview, matching the menu, instead of Summary.
  • On a phone, the Filters sheet on Analytics, Geo Logs and Access Logs shows each IP, host, server or ASN you add right below its field, instead of at the bottom of the sheet under the country and city lists.
  • On touch screens, buttons, tabs, menu and list rows, dropdowns and the map zoom and compass buttons are at least 40px, and table sort headers fill their header cell. Icon buttons inside table rows stay at 32px so the rows don't grow. Small links on Settings > Status and Settings > About get a larger tap area. With a mouse, sizes stay as they were.
  • The info button next to the ASN categories on Analytics and Geo Logs opens its explanation on click or tap. It used to need a hover, which a phone can't do.
  • On a phone, Settings opens on a list of its sections, each with a live line such as "4 things need attention" or "7 jobs, next in 12s". Changelog and About get a dot while there are changes or a newer release you haven't opened, and the desktop Settings menu dots About as well as Changelog. A section's top bar has a Settings link back to the list, in place of the section dropdown.
  • On a phone, Settings > Status opens on one card that says how many things need attention and lists them, worst first. An agent's problem says when the agent was last seen. Tap a problem for its detail and fix. Each component follows as a small tile with its state, and tapping a tile shows the full card.
  • On a phone, Settings > About shows Runtime, Database and GeoIP databases as one row each with a summary line, such as "Connected, migration at head" or "City 7 days old, ASN 6 days old". Tap a row for its values. Database and GeoIP databases have a status light, and a row with an amber or red light starts open. Long values show a short form, such as 18.6 for PostgreSQL or a GeoLite2 file name, with the full version or the folder on a muted line below. The version card has Copy details, Report an issue and Changelog buttons. Copy details puts the version, commit, runtime, database, migration and GeoLite2 dates on the clipboard as plain text for a bug report.
  • On a phone or in a narrow window, Settings > Agents lists each instance on two lines: its name and when it was last seen on top, and below it what is wrong or, for a healthy agent, how many lines it read in the last 5 minutes. A version shows only when it differs from the head's. Tapping an agent opens a drawer with its problems, then one line per section, such as Ingestion, Scheduled jobs or GeoIP, that opens to the full details. An agent that stopped checking in has a Remove from the list button in its problem, and the link from Settings > Status opens that agent's drawer. The fix under each problem has a copy button, in the desktop table too. The Name row in an agent's details shows only when APP_INSTANCE_NAME isn't set.
  • Settings > Agents and Settings > Status flag an agent whose database writes failed in the last 5 minutes. It turns red when two or more batches failed and nothing was written, and amber while some writes still land or only one batch failed. Its problem quotes the last database error with the record's values hidden. On a phone or in a narrow window its row says "Writes failing" or "Some writes failing". The head's own failed-writes notice on Settings > Status turns red by the same rule.
  • On a phone, Settings > Environment opens on the settings you changed from their defaults, with every other group folded up to one line that says how many settings it holds and how many you changed. Searching opens the groups that match. Each setting is one line with its value, and tapping it shows the description, the environment variable and, for a changed setting, its default.
  • Settings > Logs draws only the lines on screen, so a full 2,000-line buffer scrolls smoothly. On a phone or in a narrow window each line takes two rows, with the level, component and time on top and up to two lines of the message below, and the list scrolls with the page. While you're scrolled down, new lines wait until you're back at the top, and a button over the list says how many and takes you there. Closing a line's details puts keyboard focus back on that line.
  • On phones and narrow windows, Settings > Scheduler lists each task with its schedule in plain words ("Every 15 seconds"), when it last ran, how long that took, when it runs next and a run button. A failed last run shows its error under the task, and tapping it shows the full text. On desktop the error stays in a tooltip.
  • While the database is down, the login page says so, and a failed sign-in explains why instead of saying "Invalid username or password". A logout that fails says so and keeps you on the page.
  • Logins survive restarts and updates. Updating to this release logs you out once, because sessions used to live only in memory. Changing the admin user or password, or who may sign in with OIDC, still logs everyone out on the next start.
  • Dev images and source checkouts report the version they were built from, such as v0.22.0-dev.4, instead of the last stable release. A build without a version, such as a plain docker build, shows "local build". Settings > Agents no longer warns about version differences when either side is a local build.
  • The OpenAPI schema at /schema reports the API version, 1, instead of the app version.
  • docs/configuration.md lists the settings for working on GeoMetrikks itself in a Developer settings section at the end: APP_DEBUG, APP_ENVIRONMENT, the SQL echo and pool switches, DB_DROP_ON_STARTUP, LOGPARSER_SKIP_VALIDATION, SCHEDULER_LOCATION_REFRESH_INTERVAL_MINUTES and the Vite settings.

Fixed

  • On a phone, the IP inspector's Analytics, Access logs and Debug logs buttons and its fly-to-map button close the inspector. It used to stay open over the page they opened, so the tap looked like it did nothing. Back reopens the inspector.
  • Auto refresh waits while an IP's actions menu or its ban dialog is open. On a busy server a refresh pushed the row off the first page of Access Logs and closed the menu you were using.
  • Fit to data bounds frames the traffic on a phone instead of the open ocean between the locations, and on desktop it keeps the locations clear of the map controls panel.
  • Pages on a phone no longer show the desktop filter bar for a moment while they load.
  • The top bar on Settings > Appearance and Settings > Changelog shows the page name instead of "Page".
  • Settings > Environment wraps long list and map values, such as a full APP_TRUSTED_PROXIES or MAP_SERVER_LOCATIONS, between their items. A long value used to run off the side of the page and squeeze its description to one word per line. The page also shows one Application group. It listed two, and the second one's shortcut jumped to the first.
  • Settings > Status says "Attention" when advisories or agents need attention, like the sidebar does. It used to say "Healthy, All components operational" right above the list of problems.
  • The malformed share on Debug Logs reads "100.0% of total" instead of "+100.0% of total".
  • The Columns menu on Access Logs, Geo Logs and Debug Logs uses the height left on screen instead of stopping at 320px, so it lists more columns before you have to scroll it.
  • A grouped decision on the Security page counts its scenarios, not its decisions. An IP with 28 decisions from 6 scenarios said "28 scenarios". When every decision comes from one scenario, the row shows that scenario.
  • The Security page shows a country for more IPs. Banned IPs with no traffic in GeoMetrikks, such as bans from mail or SSH scenarios or IPs last seen in the proxy logs more than 30 days ago, take their country and city from the GeoLite2 database instead of showing "-". Alert details and alert history show the full country name where CrowdSec sends only a code, such as "Netherlands" for "NL".
  • The close button on a row's details and on the IP inspector sits in the middle of the header. On phones it sat about 10px below the title.
  • The sidebar version leaves out the local build suffix, such as +g05b43030f, as Settings > About and the Settings list already did. On Settings > About, the version card has less empty space above the logo and below the badges and still says when the release check ran while a newer release is out, and the Hosting ASN list wraps long organization names instead of cutting them off.
  • Settings > Agents no longer cuts off an agent's details at the right edge of the table. A failed job's error, why a version is marked, "needs 5 minutes of heartbeats" and a source's full path show as text instead of only in a tooltip, which a touch screen can't open. An agent that stopped checking in shows the lights from its last heartbeat in grey with "when last seen", not green or red as if they were current. On desktop, a link from Settings > Status to an agent keeps the Instances title and column headers in view, and on touch screens agents with a remove button are no longer taller than the other rows.

Removed

  • API_HOST and API_PORT. The server never read them. It listens on the host and port given to litestar run, which is 0.0.0.0:8000 in the image.
  • API_LOG_LEVEL, deprecated since 0.5.0. Set LOG_LEVEL instead.
  • GEOIP_VALIDATE_DB_PATH and GEOIP_VALIDATE_LOCALES. A missing GeoLite2 file still starts the app in geo-degraded mode, and an unsupported GEOIP_LOCALES value always fails startup.
  • APP_VERSION. The version shown in the UI and the API schema always comes from the installed package.
  • APP_NAME and APP_DESCRIPTION. They only set the API schema's title and description.
  • VITE_ENABLE_REACT_HELPERS and VITE_EXECUTOR. Dev mode always runs Vite through bun with React refresh on.

What's Changed

  • fix(ui): show the agents Name row only when APP_INSTANCE_NAME is unset by @GilbN in #344
  • chore(config): remove unused settings and list developer settings separately by @GilbN in #345
  • Let IT_DB_NAME pick the integration scratch database by @GilbN in #346
  • Derive the version from git tags by @GilbN in #341
  • Keep login sessions in Postgres so restarts don't log anyone out by @GilbN in #347
  • Tell an open page when the server was updated and reload it quietly by @GilbN in #348
  • Check GitHub for a newer release and mention it on About by @GilbN in #349
  • Require a version on a pending reload notice by @GilbN in #351
  • Replace IP cell buttons with a copy button and an actions menu by @GilbN in #354
  • Count a release 15 minutes after it is published by @GilbN in #355
  • Centre the detail sheet close button in the header by @GilbN in #357
  • Move the GeoIP locale constants out of the log parser by @GilbN in #356
  • List scheduler tasks on narrow screens instead of a table by @GilbN in #358
  • Look up GeoLite2 for banned IPs with no stored traffic by @GilbN in #359
  • Show the running and newer version as a track on About by @GilbN in #360
  • Wrap long list and map values on Settings > Environment by @GilbN in #361
  • Fix six small display bugs on Settings, Debug Logs, the log tables and Security by @GilbN in #362
  • Give buttons, tabs, menus and links a thumb-sized floor on touch screens by @GilbN in #363
  • Show the log tables as two-line rows that scroll with the page on narrow screens by @GilbN in #364
  • Show the Security tables as two-line rows on narrow screens, with short scenario names and readable time left by @GilbN in #365
  • Show the Analytics and Geo Logs top lists as two-line entries when the table doesn't fit by @GilbN in #366
  • Virtualize Settings > Logs and give it two-line rows on phones by @GilbN in #367
  • Put two stat cards per row on phones and trim the page chrome by @GilbN in #368
  • Add a section jump bar to Analytics and Geo Logs on phones by @GilbN in #369
  • One range button and drawer in the phone header, drawers for radio menus by @GilbN in #370
  • A Settings home and a one-screen Status page on phones by @GilbN in #371
  • Fold Settings > Environment into an accordion on phones by @GilbN in #374
  • Fit the Alert history range tabs on a 320px phone by @GilbN in #375
  • Open the phone map on the traffic, and fit to it by @GilbN in #376
  • A floating action card over the phone map by @GilbN in #377
  • Put the IP at the top of record sheets and its actions in the footer by @GilbN in #372
  • Give bans and unbans a 5 second undo window by @GilbN in #379
  • Search active decisions by IP, range or scenario by @GilbN in #373
  • Hold auto refresh while an IP's actions menu is open by @GilbN in #378
  • Merge the two Fixed sections in the Unreleased changelog by @GilbN in #382
  • Close the IP inspector when its links open a page on a phone, and match the record sheet footer by @GilbN in #383
  • Show phone filter chips under their own field by @GilbN in #384
  • Fold Settings > About into summary rows on phones, with a release card on Settings home by @GilbN in #385
  • List agents on two lines with a details drawer on narrow screens by @GilbN in #386
  • Flag agents whose database writes are failing by @GilbN in #387
  • chore(deps): bump oven/bun from 1.4.3-slim to 1.4.4-slim by @dependabot[bot] in #389
  • chore(deps): bump the python-minor-patch group with 3 updates by @dependabot[bot] in #390
  • chore(deps): bump the frontend-minor-patch group with 9 updates by @dependabot[bot] in #391
  • chore(release): 0.23.0 by @GilbN in #392

Full Changelog: v0.22.1...v0.23.0

Don't miss a new geometrikks release

NewReleases is sending notifications on new releases.