Skip to content

Releases: KitchenSinkhole/aperture

v1.1.1

Choose a tag to compare

@MonoliYoda MonoliYoda released this 22 Sep 12:18

A D-Scan pasted into the overlay reads the friendlies in it as friendlies, and shows you which ones are in range.

Fixes

  • A friendly is no longer pinned as an unknown pilot - a hull whose ESI name carries a trailing space, pasted from a tabbed clipboard, missed the exact-name comparison and pinned red. Both sides of the match are compared on a form that ignores outer and repeated whitespace and case. (Caillou)

Improvements

  • A D-Scan shows the pilots it resolves - the friendlies a scan accounts for lift to just below the enemy rows on a green row, ordered by the column sort, so the panel reads who is in range as well as who is unaccounted for. A row stays green only while that pilot flies the hull the scan listed, each scan line consumes one pilot, and Clear D-SCAN beside the search box drops the whole result. (Caillou)

Upgrading

  • No migrations. Deploy as usual.

Contributors

  • Caillou - the D-Scan name match and the resolved-pilot rows

v1.1.0

Choose a tag to compare

@MonoliYoda MonoliYoda released this 21 Sep 20:59

Since v1.0.0: the overlay's pilot list gains a search box, a pasted D-Scan pins everything in range that nobody on the map is flying, and an SSO outage no longer untracks every character until people log out and back in.

New features

  • Search the overlay's pilot list - a search box above the pilot table matches per keystroke over pilot name, ship name and hull type. The pilots it hits rise to the top with the matched text marked, the rest stay below, and the column sort still orders within each half. (Caillou)
  • Paste a D-Scan against the pilot list - a D-Scan pasted into the search box is narrowed to ships and resolved against the roster. Anything nobody on the map is flying pins atop the table as a red "Unknown pilot" row with its hull icon, held until you clear it, paste again, or jump. (Caillou)

Fixes

  • A D-Scan no longer hides a hull the SDE has not heard of - classification moved to the server, so a hull too new for the ingested build, or one the SDE leaves unpublished, pins as an enemy row instead of vanishing from the panel. A failed lookup says so in the panel rather than behind the game client. (MonoliYoda)
  • D-Scan rows survive a clipboard that strips tabs - a ship name holding a run of spaces split into the wrong columns, pinning a friendly's hull as a red Unknown pilot. (MonoliYoda)
  • An SSO outage no longer untracks your characters - a failed token refresh is classified by why it failed, so only an affirmative rejection counts as dead and an outage backs off instead. Previously it deleted the opt-in itself, leaving every pilot to log out and back in. (Agate West) Closes #246
  • The overlay comes back where you left it - position as well as size is restored between sessions. (Agate West)
  • A numeric tag no longer reads as a class on a 0121 map - the Signatures panel's "Leads to" dropdown and the Signature Search system column concatenated the class band onto the tag, so a C3 tagged 2 and a class 32 both showed as "C32". On a 0121 map the tag stands alone. (MonoliYoda) Closes #254
  • A benign browser notification stopped filling the error log - ResizeObserver loop completed with undelivered notifications was recorded as an application error, enough on its own to hold the public deployment at degraded. (MonoliYoda)

Misc

  • Three demo seed pilots fly the hulls they are labelled with. (Caillou)

Upgrading

  • No migrations. Deploy as usual.

Contributors

  • Agate West - the SSO outage classification, and the overlay size and position restore
  • Caillou - the overlay pilot search, and the D-Scan paste
  • MonoliYoda - the D-Scan classification and parsing fixes, the 0121 tag label, and the error-log fix

v1.0.0

Choose a tag to compare

@MonoliYoda MonoliYoda released this 20 Aug 22:16

The first stable release, closing out eighteen release candidates.

Since rc.18: routes come with written directions you can paste into fleet chat, structure intel stays inside the corp or alliance that wrote it, and a second map open in another tab no longer picks up the first one's updates.

New features

  • Written route directions - the route planner turns a route into step by step instructions naming the sig to warp to at each hole, ready to copy into fleet chat. (Ionis)
  • Abyssal filament runs fold onto the map - the abyssal tracking toggle in Map Settings now does something. Off by default. (MonoliYoda)
  • Privacy and cookie notice at /privacy - lists every cookie Aperture sets and how account data is handled, worded so self-hosters can ship it unchanged. (MonoliYoda)

Security

  • Structure intel is confined to the corp or alliance that wrote it - each structure carries the audience of the map it was written on, shown as a chip on the row and named in the add/edit dialog before you submit. Nobody outside that audience can see or touch it. (MonoliYoda)
  • Maps no longer bleed into each other - two maps open in two tabs each keep to themselves, and a signature or connection can only ever be attached to the map you are working on. (MonoliYoda)

Improvements

  • The create-map dialog says why Corporation and Alliance are unavailable instead of refusing after you submit. (MonoliYoda)
  • Insurgency Site is accepted as a Combat Site, and site names containing "Wormhole" survive a paste. (Ionis)

Fixes

  • Map settings only offer what you can actually do - the General and Roles tabs and the delete button on /maps appear based on your rights, and saved settings survive reopening the dialog. (MonoliYoda)
  • A deleted map's share links and webhooks are properly closed off during the 30-day grace period. (MonoliYoda)
  • Losing your pod in the abyss no longer draws a connection on the map. (MonoliYoda)
  • SDE ingest no longer risks running the instance out of memory. (MonoliYoda)
  • Docker builds install again. (MonoliYoda)

Misc

  • Two map columns nothing read (icon, log_activity) are gone. (MonoliYoda)

Upgrading

  • Run pnpm db:migrate (migrations 0067 to 0070). Existing structure intel is backfilled, so nothing changes visibility.
  • Abyssal jump tracking is off by default. Enable it per map in Map Settings.

Contributors

  • Ionis - written route directions, and Insurgency Site classification
  • MonoliYoda - structure intel scoping, cross-map isolation, the map settings fixes, abyssal tracking, the create-map gate, and the privacy notice

v1.0.0-rc.18

v1.0.0-rc.18 Pre-release
Pre-release

Choose a tag to compare

@MonoliYoda MonoliYoda released this 06 Aug 13:03

Wormhole ends can now be marked as bubbled so a camped hole reads at a glance, and static data keeps itself current instead of quietly drifting behind FC's builds.

New features

  • Bubbled connection ends - either mouth of a connection can be flagged as bubbled, drawn as a ring straddling the line at the mouth with a wash fading away along it. The two ends are independent, so a hole bubbled on one side only says exactly that. Right-clicking an endpoint opens its own menu with the toggle; the endpoint marks stay the same size on screen at any zoom, and their hit targets are sized off the fan so adjacent holes on one face never fight over the pointer. Bubble changes are named in the audit trail and webhook lines, including which end they happened at. (MonoliYoda)
  • Static data keeps itself current - a daily job checks FC's published SDE build and ingests a newer one on its own. The ingest runs in an isolated child process behind acceptance gates that reject a bad build whole rather than half-writing it, so a broken publish can't leave the universe tables in pieces. (MonoliYoda)
  • A banner when static data is stale or failing - an SDE that has fallen behind or whose refresh keeps failing now raises a banner naming the consequence (recently added systems or gates may be missing), instead of sitting silent in the logs. /setup shows which build the database actually holds, how the last check went, and offers cards to re-ingest or refresh on demand. (MonoliYoda)

Improvements

  • Bubbles on public share links - a share link can opt in to publishing the bubbled flags, so spectators see the same camps the map does. It is off by default, per link, alongside the existing signature toggles. (MonoliYoda)

Fixes

  • Phantom wormholes between Kassigainen and Pakhshi - the pinned SDE predated Cradle of War and was missing the gate that expansion added, so the two systems looked like they were joined by a hole. The refreshed build carries the gate. (MonoliYoda)
  • Test wormhole types no longer report as uncatalogued - two unpublished QA types in the wormhole group produced codes "A" and "B" on every ingest, permanent noise on /setup that drowned out the one thing that list is for: a genuinely new hole type. They are skipped now. (MonoliYoda)
  • The map settings dialog fits its nine tabs - the tab strip no longer scrolls sideways, and tall tabs (Roles & Permissions, Webhooks, Share links) scroll inside the panel rather than stretching the dialog past the viewport. (MonoliYoda)

Misc

  • EVE SSO setup is documented - the README covers registering the application and the scopes Aperture needs. (MonoliYoda)

Upgrading

  • Run the SDE ingest once after deploying, from the /setup console. The README's deployment section explains which card to use.

Contributors

  • MonoliYoda - bubbled connection ends, SDE self-refresh and staleness reporting, the Kassigainen-Pakhshi and settings-dialog fixes

v1.0.0-rc.17

v1.0.0-rc.17 Pre-release
Pre-release

Choose a tag to compare

@MonoliYoda MonoliYoda released this 03 Aug 22:24

You can now share a live, read-only view of your chain with anyone via a link, systems with several holes on one side draw them properly fanned out, and tabs left open across a deploy tell you to reload.

New features

  • Share your chain with a public link - managers can mint an unguessable link that shows the map live to anyone, no login. Spectators get the chain plus a "directions in" board listing every k-space way in, with the sig to scan and the jumps to the nearest hub. (MonoliYoda)
  • Multiple holes on one side of a system fan out - connections leaving the same face of a node now each get their own attachment point and are ordered so they never stack or cross. A busy system finally reads at a glance. (MonoliYoda)
  • A banner when the app has been updated - after a deploy, an open tab is running an old version. Tabs now notice and offer a Reload button. A tab you left in the background reloads itself; a tab you are looking at never reloads from under you, so a half-typed intel note is safe. (MonoliYoda)

Fixes

  • Fractional seconds in the integrations presence payload - online.seconds could come back as a fraction, which strict consumers rejected. It is now always a whole number. (MonoliYoda)

Misc

  • Spectator load is visible in metrics - /api/metrics reports live spectator connections and upgrade outcomes, so a busy event can be told apart from spectators being turned away. (MonoliYoda)

Contributors

  • MonoliYoda - public map sharing, per-face connection fanning, the app-update banner, and the integrations presence fix

v1.0.0-rc.16

v1.0.0-rc.16 Pre-release
Pre-release

Choose a tag to compare

@MonoliYoda MonoliYoda released this 01 Aug 22:05

Tracked pilots now show what they are flying, external tooling can read Aperture onlineness alongside activity, and untracking a character finally clears them off everyone else's map.

New features

  • Ship-class icons for tracked pilots - the pilot roster, the system presence popup and the Picture-in-Picture overlay all show an icon for the hull each tracked pilot is in, so a fleet's composition reads at a glance. Mining and industrial hulls whose SDE group is misleading (the Outrider is a command destroyer, but flies as a mining destroyer) are corrected to the class the game shows. (Ionis)
  • Presence for the integrations API - POST /api/integrations/activity-stats buckets are now emitted on activity-or-presence and carry an online block (seconds/sessions/last-seen), clipped to the requested window. A new POST /api/integrations/presence-sessions exposes token-scoped bounded-window intervals for consumers building character_session-style history. (MonoliYoda)

Improvements

  • Shattered filter in signature search - a single Shattered toggle covers C13 and the five Drifter classes C14 to C18, rather than needing a class picked one at a time. (MonoliYoda)
  • "Jump mass" is now "Ship size" in the connection context menu, the mass log and the inspector, matching how the sizes are actually talked about. (MonoliYoda)

Fixes

  • Untracking a pilot removes them from other viewers' maps - switching tracking off deleted the tracking row without telling anyone, so every other viewer kept the pilot on the map until they refreshed. Untracking now broadcasts the same eviction that a revoked-access prune does, and the location poll re-reads its map list immediately before fanning out so an in-flight tick can't resurrect a pilot who just left. (MonoliYoda)
  • The Picture-in-Picture overlay reopens at the size you left it - resized width and height persist across sessions instead of snapping back to the default on every open. (MonoliYoda)

Misc

  • db:generate produces correct diffs again - the drizzle-kit snapshot chain stopped at migration 0010 while 0011 to 0058 were hand-written, so generation diffed against a stale baseline. A fresh 0058 snapshot restores incremental generation. (MonoliYoda)

Contributors

  • Ionis - ship-class icons across the pilot roster, presence popup and PiP overlay
  • MonoliYoda - presence for the integrations API, the Shattered signature filter, the untracking and PiP-size fixes, and the drizzle snapshot rebaseline

v1.0.0-rc.15

v1.0.0-rc.15 Pre-release
Pre-release

Choose a tag to compare

@MonoliYoda MonoliYoda released this 22 Jul 11:25

This release lets directors delegate individual director-gated map features to specific EVE corporation titles, adds a derived combat/exploration classifier for signature sites, and opens a machine-to-machine activity-stats endpoint for external tooling.

New features

  • Per-title map feature delegation (R4) - a director can hand a single director-gated map feature (audit, webhooks, settings, delete, import, export) to a specific EVE corporation title, from a new manager-only Roles & Permissions tab. Delegation is corp-scoped in v1 (private and alliance maps show it as unavailable); grants and revokes land as audit-visible access.granted / access.revoked events. (MonoliYoda)
  • Signature site-safety classifier - signature rows now carry a derived combat-vs-exploration read (red swords / green shield-check), seeded from the whtype.info safe-explo dataset, with a manual right-click override back to Combat, Exploration, or Auto. The signature search panel gains a matching Any/Combat/Exploration filter. Wormhole signatures are exempt - they never show the glyph or the override menu. (MonoliYoda)
  • Activity-stats integration endpoint - POST /api/integrations/activity-stats gives external tools token-authenticated, read-only access to per-character map activity, scoped to the token's corporation. Off by default behind INTEGRATIONS_ENABLED; tokens are minted, listed, and revoked with pnpm integrations:mint-token. (MonoliYoda)

Misc

  • Docker build now copies the full scripts/ directory rather than just scripts/data, so pnpm integrations:mint-token and other operational scripts run inside the built image. (MonoliYoda)

Contributors

  • MonoliYoda - per-title map feature delegation, signature site-safety classifier, activity-stats integration endpoint, and the Docker scripts fix

v1.0.0-rc.14

v1.0.0-rc.14 Pre-release
Pre-release

Choose a tag to compare

@MonoliYoda MonoliYoda released this 11 Jul 16:29

Aperture now understands fixed-destination wormholes and can resolve one onto the map in a single click. Plus a batch of wormhole-picker polish, a terminal EOL stage, and three fixes.

New features

  • Fixed-destination wormholes - holes that always exit to the same system now resolve onto the map in one click from the signature, no far-side scout needed. Seeded: J377 to Turnur, J492 to Tabbetzur, the C12 holes to Thera, and the Drifter holes to their complexes. Resolution is one-directional (a K162 never resolves). (MonoliYoda)
  • "Expired" EOL stage - a fourth terminal stage (none to eol to critical to expired) set manually by scouts. Shows an elapsed readout ("Expired 3h ago"), renders red, and is reaped by the EOL-expiry job. (MonoliYoda)

Improvements

  • Wormhole picker back-filter - when a leads-to connection is set, the type picker narrows to types that fit its far-end class, with fixed-destination holes matched to their exact pinned system and shown by destination name. K162 and "Show all types" keep every type reachable. (MonoliYoda)
  • Wormhole picker grouped ordering - the type picker now orders wandering and frigate holes by destination class, with a setting to switch back to alphabetical. (MonoliYoda)
  • Paste highlight - rows a paste creates or updates briefly ping (green created, blue updated), visible only to the pilot who pasted. (MonoliYoda)

Fixes

  • Transit-signature prompt race - the new-hole prompt no longer misses when the jump breadcrumb beats the map fold; jumps are buffered until the fold lands. (MonoliYoda)
  • DB-down logins now surface as a server error with a try-again message instead of a misleading "access denied". Still fails closed. (MonoliYoda)
  • zKillboard phantom flashes - fixed both causes (cursor-null seed bug and a stale-feed freshness gap). (MonoliYoda)

Contributors

  • MonoliYoda - fixed-destination wormholes, expired EOL stage, wormhole-picker filtering and ordering, paste highlight, and the transit-prompt, login-gate and zKillboard fixes

v1.0.0-rc.13

v1.0.0-rc.13 Pre-release
Pre-release

Choose a tag to compare

@MonoliYoda MonoliYoda released this 05 Jul 19:48

A small maintenance release on top of rc.12: renamed characters now pick up their new name without a re-login, and the zKillboard feed gained operational logging to make spurious system-kill flashes traceable.

Fixes

  • Renamed characters refresh their name automatically - a character's name was only ever copied from the login-time SSO token, which CCP does not refresh after a support-performed rename, so a renamed character kept showing the old name even across re-login. The name is now re-read from ESI's public profile on each authz resync, self-healing within the hour without a fresh login. (MonoliYoda)

Scaling & reliability

  • zKillboard feed logging - the kill feed now logs its fan-out and its operational failures (tick, fetch, decode), so spurious system-kill "underglow" flashes can be traced to their source. (MonoliYoda)

Contributors

  • MonoliYoda - character name refresh, zKillboard feed logging

v1.0.0-rc.12

v1.0.0-rc.12 Pre-release
Pre-release

Choose a tag to compare

@MonoliYoda MonoliYoda released this 04 Jul 22:20

This release introduces tabbed panels - drag any panel onto another to stack them as tabs, reorder them, or tear one back out into its own cell. Wormhole details now show in hover-open popovers on both live connections and system statics, and the signature panel gains an EOL-stage control, a signature count and zebra striping. Under the hood, a batch of scaling work removes three growth ceilings - unbounded job-run history, accumulating zombie location-polls, and the shared-bucket killmail rate limit - that quietly degraded every deployment as it accrued characters and viewers.

New features

  • Tabbed panels - drag a panel's tab or title onto another panel's header to stack them as tabs in one cell, reorder tabs within a header, or drag a tab out into open grid space to split it back into its own cell. The layout model is group-aware per breakpoint and legacy layouts migrate transparently. (MonoliYoda)
  • Connection detail popover - hovering a connection's badge opens a card with the source wormhole's type, size class, leads-to class, total stable mass, mass logged so far (as a share of the total), max jump mass, max lifetime, and a live EOL countdown for EOL-flagged holes. This also fixes the old on-edge label that doubled up with the badge and read the wrong time left. (MonoliYoda)
  • Static wormhole detail on hover - hovering a system node's static label opens the same detail card, carrying the static's data (code, size, leads-to class, total mass, max jump, max lifetime). (MonoliYoda)
  • EOL stage control on signatures - a wormhole signature can now carry a pre-jump EOL stage set from a three-stage picker in the signatures panel; the stage carries onto the connection when it populates, and once bound the connection's EOL is authoritative and editable from both places. (MonoliYoda)

Improvements

  • Periodic refresh of on-map intel and stats - system data for the whole on-map set is re-pulled every ~5 min so incursion/sov/FW decorators and the intel and stats modules catch mid-session drift without a reload; polling pauses while the tab is hidden. (MonoliYoda)
  • Signature count shown in the signature panel. (Ionis en Gravonere)
  • Zebra-striped rows on the signatures and signature-search panels for easier scanning. (MonoliYoda)
  • "Leads to" and "EOL" columns left empty for non-wormhole signatures, rather than showing placeholder values. (MonoliYoda)
  • Route-path systems coloured by security status rather than system type, so a plotted route reads by sec at a glance. (Ionis en Gravonere)
  • Who locked a system is now shown next to the locked checkbox in the inspector, so an abandoned locked system's owner is visible without director-only audit access. (MonoliYoda)
  • DOTLAN pop-out links to the region map view instead of the single-system view. (MonoliYoda)
  • Long ship names truncate in the pilot roster table instead of stretching the column. (MonoliYoda)
  • Softened text contrast and toned-down missing-signature borders. (MonoliYoda)
  • Manual-move gap decoupled from the auto-placement gap, so nudging a system by hand no longer inherits the wider auto-placement spacing. (MonoliYoda)
  • Signature TTL column removed from the signatures panel (it showed the same value for every row), and the signature purge shortened from 72h to 48h - the maximum a wormhole can stay open. (MonoliYoda)

Fixes

  • Month and year activity stats no longer read zero early in a new month - the rollup grouped by ISO week and filed a month-straddling week entirely under the earlier month, so a new month showed nothing for every pilot until its first Monday. The rollup is now daily-grain, making month and year boundaries calendar-exact; the first refresh back-corrects all history. (MonoliYoda)
  • HTML entities in ESI ship names are decoded, so names render correctly instead of showing raw entity codes. (MonoliYoda)

Scaling & reliability

  • Bounded ap_job_run growth - the job-run log had grown to 91% of the database, driven almost entirely by one location-poll row per character every 5s. Successful high-frequency rows are now weight-sampled (~1-in-N, every failure still recorded, aggregate rates preserved), and the table is repartitioned daily with a 14-day rolloff. (MonoliYoda)
  • Fixed zombie location-poll accumulation - expected ESI-outage ticks (breaker-open, downtime, post-refresh 401) now re-enqueue cleanly instead of minting permanently-failed NULL-key jobs the boot re-arm never reaped; legacy zombies are reaped on boot and excluded from the backlog gauge. (MonoliYoda)
  • Persistent killmail cache - immutable ESI killmail bodies (~28k/day on prod, all against the shared unauthenticated rate-limit bucket) are now cached once in universe_killmail, so repeat killboard opens issue zero ESI calls; a daily reaper trims by kill time. (MonoliYoda)
  • Per-table row-count metric (db_table_rows) exposed on /api/metrics from planner estimates, so table growth is graphable and alertable. (MonoliYoda)

Contributors

  • MonoliYoda - tabbed panels, connection and static detail popovers, signature EOL-stage control, periodic on-map refresh, lock-holder display, scaling-ceiling removals (job-run, zombie polls, killmail cache), and assorted polish
  • Ionis en Gravonere - signature count, route-path security colouring