Repository navigation
Releases: Theragus/Keystar
Release list
Keystar v0.15.0
Upgrade notes
Sharing skills now includes the implants of the active clone, so the remap optimiser knows the base attributes.
- Add
esi-clones.read_implants.v1to the scopes of your EVE application at
https://developers.eveonline.com/applications. Without it, "Share skills" on the Skills access page fails at the
EVE login withinvalid_scope. - Update as usual; the database migrations run on start. Characters that already share their skills keep sharing;
they are asked to re-authorise once to include their implants.
Market orders need one more optional character scope: add esi-markets.read_character_orders.v1 to the scopes of
your EVE application (and esi-universe.read_structures.v1, if it isn't there yet). Nobody is asked for it unless
they enable market access on the Market access page, but without it on the application that EVE login fails with
invalid_scope.
Added
-
Market orders. A new Market Orders page under Trade lists the buy and sell orders of your own characters: the
item, its price per unit and the total, how much is left of the quantity, the station or structure with its system
and region, when the order was issued and when it expires. Filter by open or closed orders, buy or sell, character
and location; tiles add up what you are selling and buying, the ISK held in escrow and the orders that expire
within three days, and a panel shows where your orders are. Closed orders (filled, cancelled or expired) are listed
too, from the 90 days ESI reports back. Access is opt-in per character on the new Market access page, like
industry jobs, so nobody is asked for the new scope (esi-markets.read_character_orders.v1) at sign-up. It
shares the structure scope with industry access: switching one of them off keeps that scope while the other is
on. Only you see your characters' orders. (PR #187) -
Gate check (Combat, for every role): plan a stargate route and see what waits at each gate before you jump.
- Routes like EVE's autopilot: shortest, safer (stays in high-sec as long as there is a way) or less secure, around
any systems you want to avoid; never through Zarzakh, whose gate lock would trap you. - Kills of the last two hours at the gate you arrive by and the gate you leave by in every system, with the victim,
attackers, their ships and groups and the distance to the gate, kept apart from kills at the system's other gates.
Tags show smartbombs, interdictors and HICs (bubbles), gankers (CONCORD on the mail), hot drops and pod kills; a
system is marked as a camp after a kill at your gate in the last 30 minutes or three within the hour. - A camp estimate for the time you reach each gate, leaving now at about a minute a jump: how often those gates saw
kills around that time of day over the last weeks, a camp there right now, and the regular campers of those gates
who were seen killing nearby in the last two hours, each explained, with the busiest hours and the groups behind
the kills. - No extra load on zKillboard: the worker's live feed, which already reads every killmail for the killboard, keeps
the kills near stargates (60 days at gates, 7 days elsewhere). It now runs without a home corporation too, and on
a fresh start reads the last few hours back. The map's travel check reads the same data instead of asking
zKillboard for every system on the route.
(PR #188)
- Routes like EVE's autopilot: shortest, safer (stays in high-sec as long as there is a way) or less secure, around
-
Remap optimiser. A new page under Pilots recommends the neural remap that trains each character's current skill
queue the fastest.- Tries every legal remap (17–27 per attribute, 99 points) against the SP still to train and shows the attributes
to remap to, the queue time now and after the remap, and the time saved. - Warns when the queue runs less than 180 days with the recommended attributes: the yearly remap only comes back
after 365 days and bonus remaps are gone once used. - Shows whether the yearly remap or a bonus remap is available, and when the next one is.
- Skill sharing now also reads the active clone's implants (
esi-clones.read_implants.v1), so their bonuses are
told apart from the base attributes; the remap only redistributes base points. Characters that shared before
are taken as implant-free until they re-authorise, and the page says so. When the attributes don't add up to 99
(implants or a booster Keystar doesn't know about), no remap is recommended. - Own characters, plus the corporation view for directors; linked from each character on Skill queues.
(PR #117)
- Tries every legal remap (17–27 per attribute, 99 points) against the SP still to train and shows the attributes
-
Help, welcome tour and What's new. A new Help button next to Alerts in the top bar (or the
?key on any
page) explains Keystar in five topics:- This page: what the page you are on shows, where its data comes from, which role can open it, and whether
only you can see it. Every page in the sidebar has its own text. - How Keystar works: EVE login, read-only access, background sync and what pages show.
- Scopes and EVE access: every ESI scope Keystar can ask for, grouped into the ones everyone grants, the
optional ones per character (with a link to switch them) and corporation access with its in-game roles. - Your data and security: what is stored and how it is protected, what only you can see, who else sees what
with which role, how to remove data and how long Keystar keeps it. - Who sees what: your Keystar role, the role ladder, and every page with the role it needs, including the
permission changes made in Settings.
Every account sees the help once as a short welcome tour, new accounts on their first sign-in. After each update
with highlights, a What's new dialog shows the release's most important additions once, with a link to the
release notes on GitHub; admins also see what the update needs on the server. Pages that are new in the release
get a dot in the sidebar until you open them, and the version in the sidebar footer opens What's new again.
Release PRs add the highlights in English and German (docs/releasing.md).
(PR #182) - This page: what the page you are on shows, where its data comes from, which role can open it, and whether
Changed
- The mining ledger is opt-in per character, so every ESI scope is now optional. Registering, signing in and
"Link a character" no longer ask EVE for any scope; they only prove who you are. Each pilot turns on the personal
mining ledger per character on the new Mining access page (the Access button on the Mining Overview and Ledger,
or via My Characters), can switch it off in Keystar without an EVE login, and can delete a character's stored mining
history once it is off. Moon-drill records of corporation refineries are kept either way. Characters that already
share their mining ledger keep sharing; nothing to do on the server or the EVE application.
(PR #186)- Characters without any ESI access are no longer flagged on My Characters, the dashboard, Users & Roles or Member
Audit; only revoked tokens are. - Re-authorising a character with no access left removes its token and revokes it with CCP, and "Link a character"
with a character that is already on your account no longer changes its access. - "Link with corporation access" no longer includes the mining ledger. A director whose character shares it is
asked once to turn it back on, like wallet import or skill sharing.
- Characters without any ESI access are no longer flagged on My Characters, the dashboard, Users & Roles or Member
- The sign-in, registration and "Link a character" buttons on the login and join pages are now CCP's official
"LOG IN with EVE Online" button (black on the dark theme, white on the light one), as CCP asks of third-party
applications. The CCP notice now carries the wording of the Developer License Agreement and also appears on the
join page and under "How Keystar works" in Help. (PR #189) - The Map moved to the bottom of the Combat section of the sidebar, below Gate check.
(PR #190)
Fixed
- The login page and the Privacy panel on My Characters now link to Authorized Apps on the EVE developers site for
revoking Keystar's access. The Third-Party Applications page on community.eveonline.com they pointed to now only
redirects to the developers homepage. (PR #183) - Saving the settings page or the setup walkthrough's access step with a price source or price date Keystar doesn't
know (a page left open across an update, or an edited form) now explains which field to fix in a toast and changes
nothing, instead of failing with "Something went wrong".
(#145) - A pasted d-scan with made-up type ids can no longer pause ESI for the whole web app. Unknown types are looked up on
ESI at most 50 per paste and for at most 20 pastes per user in 10 minutes, lookups stop while the shared ESI error
budget is low, and ids ESI doesn't know are not asked again for 6 hours. Ships that couldn't be looked up yet are
left out of the d-scan, as before. (#143) - Changes on the Mining P&L pages now confirm in a toast: the income basis (mined ore or wallet sales), the share of
the valuation, the per-character "count automatically" switches, ore prices, manual costs and "include all".
Rejected input (a rate of 0 %, a price rule that ends before it starts, an amount Keystar can't read) is explained in
a toast and keeps what you typed, instead of replacing the page with an error. Single include/exclude and category
changes only show a toast when they fail. Deleting a Threat Intel scan, writing a briefing, dossier or d-scan read,
profiling more pilots and rewriting the killboard situation report also confirm or explain in a...
Keystar v0.14.0
Upgrade notes
Industry jobs need two optional character scopes.
- Add
esi-industry.read_character_jobs.v1andesi-universe.read_structures.v1to the scopes of your EVE
application at https://developers.eveonline.com/applications. Nobody is asked for them unless they enable
industry access on the Industry access page, but without them on the application that EVE login fails with
invalid_scope. - Update as usual; the database migrations run on start.
Added
- Ore types in the daily mining chart. Click a resource in the "Daily ISK by resource" chart (or its legend) to
stack the days by its ore types instead, such as Spodumain, Kernite and Scordite, with the smaller ones combined
into "Other". When only one resource was mined, the chart and the resource mix show its ore types straight away.
(PR #173) - 3D universe map. Add a searchable star map under Combat with system names, security status and real positions;
Threat Intel system links focus the map and show jump range and light-year distances.
(PR #87) - Travel and jump planning. Calculate shortest stargate routes with two-hour gate-kill evidence and linked
killmails, plus carrier, jump freighter and Black Ops range highlighting with Jump Drive Calibration selection.
(PR #87) - Industry jobs. A new Industry Jobs page under Industry lists the industry jobs of your own characters:
manufacturing, material and time efficiency research, copying, invention and reactions, each with a progress bar,
the time left (counting down live) and the end time, and the station or structure it runs in with its system.
Filter by running or finished jobs, character, activity, system and station; tiles count running jobs, jobs ready
to deliver and jobs ending within a day. Access is opt-in per character on the new Industry access page, like
skills and mail, so nobody is asked for the two new scopes (esi-industry.read_character_jobs.v1,
esi-universe.read_structures.v1) at sign-up; add them to the EVE application (seedocs/deployment.md). Only you
see your characters' jobs. (#105) - Skill queue timeline. Each character's card shows the queue as one strip, like the training-time bar in
game: every skill takes a slice proportional to the time it still needs, with day, week or month marks below.
Pointing at a slice highlights its row in the queue table and the other way round. - Load on System Info. The page now shows the CPU share, memory and JS heap of the web app and the worker, the
container's memory against its limit, free host memory and the host's load average.
Changed
- Map interaction. Use compact glass panels, batched rendering and cached geometry; support mouse rotation and
panning, looping route illumination, system focus with fading rotation, reduced motion and wheel zoom without page
scrolling. (PR #87) - Mining P&L: when income comes from wallet sales, it is now net of sales tax instead of counting the tax as an
expense: each sale on the Income tab shows the tax paid on it and its net, and the tax counts whenever the sale
does, without a review of its own. Broker fees stay expenses and are easier to review: each shows the journal's
description and time, and "Include all" counts every suggested broker fee at once. - Null-sec security status (0.0 and below) is shown in red instead of purple in every security pill, so the
security colours run from blue at 1.0 to red.
Fixed
- Map and Intel review fixes. Cache map route lookups; let scan viewers read saved briefings without regenerating
them, keep rewriting permission-gated, restore a pilot profile shortcut and align briefing severity with the
three-tier danger model. (PR #87) - An appraisal with an absurdly long quantity (hundreds of digits) no longer stores and shows an infinite total; such
a quantity is no longer read as one. A member can start at most 30 appraisals per ten minutes (failed and deleted
ones included), and appraisals are deleted after a year, so the appraisal table no longer grows without bound.
(#155) - A token refresh keeps the new refresh token EVE SSO hands out even if checking the new access token then fails
(for example when CCP's key endpoint is unreachable), so pilots are no longer asked to re-authorise for nothing.
Refreshes no longer hold the token row locked while waiting on CCP, so switching scopes or logging in doesn't stall
behind them, and a malformed SSO response no longer leaves a token that can't be refreshed.
(#141) - Disabling an account now pauses its characters' background syncs (wallet, mail, industry, skills) and token
refreshes until it is enabled again, and corporation syncs no longer use its characters. Unlinking a character also deletes its imported wallet and mail data in the
same step as the link, so an interrupted unlink can't leave it behind to reappear when the character is linked
again. (#151) - The corporation roster and industry jobs are stored again after a failed sync, or after a character was
unlinked and linked again, instead of waiting until ESI's data changes. Unlinking or transferring a character, and
deleting its industry data, also removes the ESI responses Keystar had cached for it, and cached responses
without an expiry are cleaned up after a week. (#139) - A mining ledger from ESI that lists the same pilot, ore and day twice (for example after the pilot changed
corporation that day) no longer makes the moon-mining import fail on every run until that day drops out of ESI's
30-day ledger. Repeats are merged before saving, and ore mined under two corporations on one day is added up.
(#149) - In English, the killboard's permissions in Users & Roles, its background jobs and its browser tab title now
say "Combat Report" like the sidebar, instead of "Killboard". - Wallet imports read ESI's available history again after deleting wallet data or relinking a character, instead
of skipping it because of a stale sync cursor. (#138) - Linking a character back to your own account after moving it to another of your EVE accounts no longer deletes
its wallet history, mail and industry jobs; they are only removed when a character changes hands.
(#140) - Mail sync no longer removes older stored messages if ESI ignores a paging cursor or returns an empty page while
listing a mailbox. (#137) - Right-aligned column headers in tables (the Load and Database tables on System Info, the actions column on
Users) now line up with their values instead of sitting on the left.
(PR #133) - Role and access changes, settings changes and scope switches now write their audit log entry in the same
transaction as the change, so a database error can no longer leave a change without an audit trail. Other audit
entries that can't be written are counted, and System Info warns about them in a new "Audit log written" check.
(#156)
Docker image: ghcr.io/theragus/keystar:0.14.0
# in .env: KEYSTAR_VERSION=0.14.0
docker compose pull && docker compose up -dKeystar v0.13.0
Added
-
Delete appraisals. A small trash button next to each of your recent appraisals, and on the appraisal itself,
deletes it after a confirmation; its share link stops working. Only the person who created an appraisal can delete it. -
System Info for admins. A new last page under Administration shows the technical state of the instance:
- Health checks for the database, migrations and schema, the worker and its version, failing or stuck jobs,
paused syncing, EVE SSO,APP_URL, clock skew and ESI rate limits. - Network: whether this server can reach ESI, EVE SSO and zKillboard right now, with the HTTP status and
response time of each, or why not (DNS, refused, timeout); proxy settings show whether they are set. - Instance details: the running version and build, the database with its largest tables, the worker and
background jobs, and the configuration without secret values. - Report an issue walks through a bug report and opens it on GitHub with the version and a system summary
filled in. Privacy warnings point out where logs or the public issue could expose pilot or corporation names,
IDs or the server's address.
(#102)
- Health checks for the database, migrations and schema, the worker and its version, failing or stuck jobs,
-
Support package for bug reports:
- A JSON download with what's needed to debug an instance: build, runtime and container limits, health checks,
configuration, migrations and schema drift, table sizes, connections, per-job statistics with scrubbed error
patterns, ESI and zKillboard request counters, and token and scope counts. - Never contains pilot, corporation or alliance names or IDs, secrets, the instance's address or who did what.
Admins see its exact contents before downloading, and every download is recorded in the audit log. - When the web app doesn't start:
pnpm support:package, ornode dist/support.mjsin the image.
(#102)
- A JSON download with what's needed to debug an instance: build, runtime and container limits, health checks,
-
Published images record their git commit, tag and build date, shown in System Info (#102).
-
The sidebar footer of an unreleased image (
:main) shows its tag and commit next to the version, e.g.
Keystar v0.12.0 · main @ c7bfb85, on an amber warning badge whose tooltip notes that the build may be unstable,
and links to that commit instead of the releases page. -
Only members can sign up. A new switch under Settings → Access stops Keystar from creating accounts for
characters outside the home corporation (or its alliance, when alliance members are auto-approved). They see a
message on the login page instead of waiting as guests, and each refused attempt is in the audit log. Existing
accounts and linked alts are unaffected; guests who registered from outside before can be disabled in one go on
the Users page. -
Mining P&L: income can come from what you actually sold instead of the value of the ore you mined. A new
Income tab lists your wallet sales; sales of ore, moon ore, ice and gas (raw or compressed), minerals, moon
materials and ice products are suggested as mining income and reviewed like purchases (include, exclude,
re-categorise, or count them automatically per character). Choose the basis under Settings → Income; it stays
on the mined value until you switch. -
Mining P&L: a "Mined vs sold" table on the Income tab compares, per ore, what you mined with what you sold
of it, raw or compressed (compressed ore counts 1:1 in units), with what you got per unit against the valuation
and the value of the ore still unsold. -
Mining P&L: sales tax and broker fees from your characters' wallet journals count as a "Taxes & fees" expense
when income comes from wallet sales (same wallet access, no new login). Sales tax follows the sale it was paid on,
even in a multi-sell, so tax on counted mining sales counts on the character that sold; broker fees are suggested
until you include them.
Changed
- Sidebar. The pilot portrait and name at the bottom of the sidebar link to My Characters, in the expanded sidebar, the collapsed rail and its hover card alike.
- Ore field estimator
- The ore table can be sorted by any column, including volume, ISK/m³, scanner and Keystar value and share;
grades stay under their ore and follow the same order. - The unit price column is replaced by ISK/m³, the value that matters when choosing which rocks to mine.
- Fleet yield is entered in m³/s, as mining lasers show it, instead of m³/h.
- The ore table can be sorted by any column, including volume, ISK/m³, scanner and Keystar value and share;
- Mining P&L: industrial cores, Mining Foreman Burst modules and drone mining augmentor rigs are auto-tagged as
"Ships & fittings" expenses, including purchases already imported. - Live fleet: the fleet structure is drawn as a tree, stepping in from fleet command to wings, squads and
pilots, with a pilot count on every wing and squad.
Removed
- Ore field estimator: the max distance filter and the closest-distance note on each grade.
Fixed
- The P&L overview's per-character table and the manual expenses list show character portraits, like the rest of
the mining pages. docker compose pullfetches a newer Keystar image again when the tag (e.g.mainorlatest) is already
present on the server; it used to report "Image is already present locally" and keep the old image.
Docker image: ghcr.io/theragus/keystar:0.13.0
# in .env: KEYSTAR_VERSION=0.13.0
docker compose pull && docker compose up -dKeystar v0.12.0
Added
- Threat Intel, rebuilt. Threat Intel has been reworked from the ground up around the evidence that matters
before a fight: who is in local, how dangerous they are right now, who they fly with and how they last fought us.- Local Situation
- Organised around wrapping pilot affiliation tags, last combat evidence, recently observed co-attacks and the
latest engagement with us. - Selecting a pilot or a legend entry highlights the members of the same alliance, or of the same corporation
when there is no alliance. - The engagement column is wider than the observed-group column.
- Organised around wrapping pilot affiliation tags, last combat evidence, recently observed co-attacks and the
- Engagement report
- Shows both sides of the latest engagement with the observed ships, loss counts and ISK lost, and marks
incomplete evidence. - Wide layout with compact ship rows: ship and pilot names inline, destroyed hulls on a red background; hull
counts and loss labels are gone. - Page indicators slide between recorded fights, newest first. Legends, paging and notes stay at the bottom of
the card. - Alliance/corporation highlighting with a legend per side, starting with the affiliation that has the most
recorded pilots on each side.
- Shows both sides of the latest engagement with the observed ships, loss counts and ISK lost, and marks
- Pilot cards
- Compact cards of equal height with direct zKillboard links for the character, corporation and alliance.
- The three latest kills and losses as ship tags, with details in their tooltips.
- Each pending tag and card shows its own evidence overlay and loading indicator instead of loading text.
- Danger score
- Calculated from combat capability and local relevance; confidence and escalation evidence are shown
separately. - Explained 0–10 badges: green below 5, orange from 5 to below 8, red from 8. Pilots without a recent sample
are shown as unknown.
- Calculated from combat capability and local relevance; confidence and escalation evidence are shown
- D-scan and briefings
- D-scan input and matching results live in a dropdown in the report header.
- Written briefings are optional and open in a dialog from the blue Briefing button.
- Statistics collection
- The scan creator's browser fetches pending zKillboard statistics (100 ms apart, at most four at once, backing
off on rate limits) for a private, temporary preview. - Browsers no longer upload to the shared pilot cache: only statistics verified by the worker reach shared
profiles and danger scores. - Server-side statistics requests skip a redirect.
- The scan creator's browser fetches pending zKillboard statistics (100 ms apart, at most four at once, backing
- Local Situation
Changed
- More sections have their own colour. Pilots is violet and Social pink, checked for contrast and colour-vision
separation in both themes like the existing ones.- Finances shares Trade's teal.
- Overview, Account and Administration keep the cyan accent.
- Income is green and expenses red in the mining P&L and corp wallet charts.
- The P&L shows income as one bar instead of stacking it by resource; the tooltip and the By activity panel still
break it down.
- The P&L shows income as one bar instead of stacking it by resource; the tooltip and the By activity panel still
Removed
- Threat Intel rescan. The rescan action and button, their translations and the scan-parent metadata are gone;
start a new Local snapshot with New scan instead.
Fixed
-
Notifications no longer run out unseen. The countdown of kill, loss and mail notifications only runs while the
Keystar tab is visible and its window has focus, so a kill that came in while you were in game is still there when
you switch back. -
Scrolling stays inside lists. Scrolling the sidebar navigation or the system and multi-select picker lists past
their top or bottom no longer scrolls the page behind them. -
Desktop notifications switch that did nothing. When the browser or an extension turns the request down without
asking (Safari with websites not allowed to ask, or AdGuard's "Block Push API"), the switch now shows it as
blocked instead of silently staying off.- The blocked hint also names system settings and extensions, which can block notifications for every site.
(#90)
Docker image: ghcr.io/theragus/keystar:0.12.0
# in .env: KEYSTAR_VERSION=0.12.0
docker compose pull && docker compose up -dKeystar v0.11.0
When updating: skill queues need two optional character scopes.
- Add
esi-skills.read_skillqueue.v1andesi-skills.read_skills.v1to the scopes of your EVE application at
https://developers.eveonline.com/applications. Nobody is asked for them unless they share their skills on the
Skills access page, but without them on the application that EVE login fails withinvalid_scope. - Update as usual; the database migrations run on start.
Added
- Sortable ore breakdown. Click any column header of the mining dashboard's ore breakdown to sort by it; click
again to reverse the order. - Grouped ore types. The ore breakdown combines the grades and variants of each ore (Scordite, Scordite
II-Grade, Scordite III-Grade; Blue Ice and Thick Blue Ice; Zeolites and Glistening Zeolites) into one row, with
the unit price averaged by units. Clicking a grouped row filters the dashboard to all of its types. "Group ore
types" in the panel header switches back to one row per type. - Survey scanner groups ice and anomaly ore variants. The field estimator now counts Thick Blue Ice, Pristine
White Glaze, Hadal Talassonite and similar variants under their base ore. - Skill queues. A new Pilots section shows, for each character, the skill in training with its progress, when
every queued skill and the whole queue finish, paused, empty and ending-soon queues, and the character's attributes
and remap availability. Sharing is opt-in per character on the new Skills access page. Directors also get a
corporation view of every home-corporation member who shares. Addesi-skills.read_skillqueue.v1and
esi-skills.read_skills.v1to your EVE application (see docs/deployment.md). - Mail alerts. New EVE mail for your characters now shows a notification in Keystar, like kills and
losses. It shows the subject, sender and receiving character (with the corporation, alliance or mailing list it
went to), and clicking it opens the mail. It needs mail access for the character and checks every 30 seconds.
Mail usually reaches Keystar within five minutes of arriving in game. - Desktop notifications. Kill, loss and mail alerts can also appear as system notifications (Windows notification
center, macOS Notification Center) while Keystar is open but not in focus, for example in a background tab or
behind the EVE client. Clicking one opens the killmail on zKillboard or the mail in Keystar. While a Keystar tab is
in focus, alerts stay in-page toasts. This needs the browser's permission and an HTTPS address.
Changed
- Revoking optional access stays in Keystar. "Revoke access" on the Live fleet page, "Stop wallet import" and
"Stop" for EVE mail now switch the access off right away instead of opening the EVE login. Turning it back on works
the same way while the character's EVE token still includes it. My Characters notes which access is only switched
off in Keystar; re-authorising the character there removes it from the token for good. - Feedback for account and access actions. A toast now confirms or explains the outcome when you link a
character, re-authorise one, grant corporation access, enable or switch off optional access, make a character your
main, queue its syncs or remove it, start or stop sharing a fleet, delete imported mail or wallet history, approve,
disable or re-enable a user, and run or pause syncs. If linking a character fails while you're signed in, you now
return to the page you came from with the reason instead of landing on the dashboard without one. - Re-authorising checks the character. Re-authorise buttons, and enabling fleet access, wallet import or mail,
now only accept the character they are for. Picking another character on the EVE login used to give that
character the wrong set of permissions, which could drop its corporation access and stop the corporation sync
jobs. Now nothing is changed, and a message says which character to pick. - Alerts menu. The kill alert button in the top bar is now an "Alerts" menu with switches for kills and losses,
EVE mail and desktop notifications. Each choice is saved per browser; an earlier "kill alerts off" choice is kept. - Steadier collapsible sidebar. Icons and section headings stay in place while the sidebar expands, collapsed
section headings show three characters, the width animates over 300 ms without flicker, the collapsed navigation
no longer scrolls, and the Keystar branding moves to the top bar with the collapse toggle in the sidebar. - "Combat Report" instead of "Killboard". In English, the sidebar entry, the killboard page heading and the
dashboard's killboard button now read "Combat Report". - "Corp wallet journal" instead of "Wallet journal". The sidebar entry, the journal page heading and the button
on the corporation wallet page now make clear that the journal covers the corporation's wallets, not your own. - "Moon drills" instead of "Moon Observers" and "Refineries". The mining menu entry and the ledger source option
now use the same name, so it is clear they show the same corporation moon-mining data. The mining overview and
ledger only show the Combined / Member ledgers / Moon drills choice when the corporation has moon drills on record,
since without them all three show the same entries.
Fixed
- Page content no longer shifts a few pixels sideways between pages that scroll and pages that don't (with
scrollbars that take up space, such as macOS "Show scroll bars: Always" or Windows).
Docker image: ghcr.io/theragus/keystar:0.11.0
# in .env: KEYSTAR_VERSION=0.11.0
docker compose pull && docker compose up -dKeystar v0.10.0
Added
- "Today" and "Yesterday" date ranges. The date-range picker on the mining, P&L, finances and killboard pages
offers single-day presets for the current and the previous EVE day, above "7 days".
Changed
- Main character listed first. The Characters page, the dashboard's character panel, fleet tracking, the mail
character list and the P&L wallet status show your main character at the top, followed by the others
alphabetically. - Dates in your language's format. Dates read "02 Oct 2026" in English and "02.10.2026" in German instead of
2026-10-02: in the mining ledger's day headers, the daily mining and kill tables, timestamps (journal, audit log,
mail, fleets, reports), and the killboard, wallet archive, mail and pilot history notes. Times are still EVE time
(ET).
Docker image: ghcr.io/theragus/keystar:0.10.0
# in .env: KEYSTAR_VERSION=0.10.0
docker compose pull && docker compose up -dKeystar v0.9.0
Added
- Mining ledger grouped by day. Ledger entries sit under a header for each day showing its date, weekday,
entry and character counts, and the day's units, volume and value. The totals cover the whole day even when its
entries run onto the next page; the header then says how many of them the current page shows. Days start
expanded; click one to collapse it, or use "Collapse all" for a day-by-day summary of the page. - Live kill notifications. When a corporation member gets a kill or loses a ship, a notification appears in the
top-right corner, usually 10–30 seconds after zKillboard posts it, for everyone who can view the killboard. It
shows the destroyed ship (the one you lost, or the one you killed) with your pilot's portrait, the victim, who
landed the final blow (on kills your pilot, or your top-damage pilot when someone else landed it), the system with
its security and region, and the ISK value. It stays for 30 seconds with a countdown bar (paused while you hover
it) and opens the killmail on zKillboard when clicked; with several tabs open, only one of them shows it. A bell in
the top bar mutes them for your browser. The worker reads zKillboard's R2Z2 live feed every 10 seconds (not in demo
mode), so these killmails also reach the killboard right away instead of with the hourly sync. - Light mode. Switch between light and dark beside the language selector in the sidebar or on sign-in, join,
and setup pages. The preference is remembered for a year and applied before rendering, with matching glass
surfaces, readable status colours, controls, tables, chart chrome, and keyboard focus. Charts get their own
colour-vision-checked series and rarity/threat colours for the light surface, and EVE mail colours that would be too
pale on it are darkened. Dark remains the default. - Collapsible sidebar. The menu button at the left of the top bar shrinks the sidebar to a narrow icon rail
and back with a short slide and fade (instant when reduced motion is requested). On the rail, hovering or focusing
an icon opens its section as a menu beside it, and hovering the portrait shows the pilot's name, role and corp.
The choice is remembered for a year and applied before rendering. - Notifications for your own actions. Short toasts confirm actions, in the same stack and style as the live
kill notifications, closing after six seconds unless hovered or focused. Changing a user's role now
confirms the new role and offers Undo, and a refused change says why. Saving Settings confirms the save, or
says why it was refused and keeps what you entered.
Changed
- Dropdowns match the theme. In Chrome, Edge and Safari 27+, the open list of every dropdown is a glass panel
in the current theme with an accent check mark, instead of the system's list. Other browsers keep their native
list. On Users & Roles the save button only appears once a different role is picked. - Sync status is grouped by who a job syncs for. Corporation jobs, character jobs and app-wide system jobs now
sit in their own sections. Character jobs collapse to one row per character (portrait, account, job count, worst
status, next run) and open automatically when one of them fails. Long results such as a character's in-game roles
are clipped to two lines, with the full text on hover. - Releasing an older version line no longer moves
:latestback. The Release workflow now tags an image
:latest(and marks the GitHub release Latest) only when its version is newer than every earlier release, and
moves:<major.minor>only to the newest patch of that line. - Threat Intel puts evidence first. A compact Local Situation summary, early D-scan input, timestamped
local co-attacker observations, and always-visible latest kill, loss and cyno-history fields replace the dense
briefing-led layout. Historical ship profiles and optional score details are clearly separated from scanner
observations; missing data and incomplete fitting history stay explicit. Latest records retain five kills and
five losses, and loss chips now name the lost hull rather than the final-blow attacker’s hull.
Fixed
- Mining class filter lists only mined classes. Like the ore, system and member pickers, the class picker now
offers only ore classes that appear in the ledgers you can see, instead of every class. - Extend the sidebar surface to the bottom of long pages while keeping navigation and footer controls in the viewport.
- Preserve the original dark-mode table separators and scrollbar colours when adding light mode.
- Search boxes with an icon (filter pickers, page searches, mail search, field estimator inputs) draw the focus
ring around the whole rounded box instead of a square outline around the text area inside it. - After a role change on Users & Roles, the dropdown no longer jumps back to the old role. After saving
Settings, the valuation and permission dropdowns no longer show the old values.
Docker image: ghcr.io/theragus/keystar:0.9.0
# in .env: KEYSTAR_VERSION=0.9.0
docker compose pull && docker compose up -dKeystar v0.8.0
Added
- Threat Intel system picker. The current-system field suggests systems as you type, every known-space and
wormhole system with its region and its security status (wormholes show their class, C1–C6, C13, Thera or Drifter).
A new background job loads the system list from ESI once (about 20 minutes on a new install) and checks for new
systems every 30 days. - My characters view on the mining pages. Viewers with corporation-wide mining access can switch the overview,
the ledger and the CSV export between Corporation and My characters. The latter shows all of their linked
characters, so alts in another corporation show up next to their main without counting towards the home
corporation's totals.
Changed
- Fleet access is opt-in per character. Members are no longer asked for
esi-fleets.read_fleet.v1when they join
or link a character: only the fleet boss's character can read a fleet's members, so pilots who run fleets turn it on
for that character with "Enable fleet access" on the Live fleet page (and can revoke it there). Characters that already
granted the scope keep it. - Member audit lists registered characters first, and sorts names without regard to upper and lower case.
Fixed
- The optional-scope badges on My Characters all linked to the mining P&L settings; the mail badge now opens EVE Mail
and the fleet badge the Live fleet page.
Docker image: ghcr.io/theragus/keystar:0.8.0
# in .env: KEYSTAR_VERSION=0.8.0
docker compose pull && docker compose up -dKeystar v0.7.0
Changed
- Member audit handles large corporations: search by character, account (main) or character ID as you type, click a
stat tile (In-game roster, Registered, Not registered, Missing or revoked ESI) to show only those characters, and page
through 50 at a time. Searching, filtering and paging happen in the database, and the state is in the URL, so a
filtered view can be bookmarked or shared. - The unregistered-members count on Mining Overview and the token warnings on Users & Roles now open the member audit
already filtered to the characters concerned.
Fixed
- Sign-in could redirect to another site when
returnTocontained a tab, line feed or carriage return (for example
/%09/evil.example). The return path is now resolved like the browser would and rejected unless it stays on Keystar.
(#14) - The mining CSV export no longer turns negative security status (
-0.45) into text, so null-sec and wormhole rows
stay numeric in spreadsheets. Names starting with=,+,-or@are still neutralised.
(#18) - Two admins demoting or disabling each other at the same moment could both succeed and leave Keystar without an
admin, after which the next pilot to sign in became admin. Role and access changes now re-check both users at the
moment of the change, one at a time, and only the very first account ever is made admin automatically.
(#16) - When EVE's ESI is down or rate limiting, the appraisal no longer saves real items as unrecognised lines or with
missing or stale prices: it shows "ESI unavailable, try again" and saves nothing. The ore field estimator says
which ores couldn't be priced and tries them again, and both log the ESI error so admins can tell an outage from bad
input. (#17) - Name lookups no longer multiply ESI requests during an outage. Keystar splits a batch only when ESI rejects it for
an invalid id; a server error, timeout or rate limit now fails the job, so the scheduler backs off instead of
sending about two failing requests per id and reporting success. (#19) - The hourly market price job no longer throws away a whole run, including the ore values the mining dashboard uses,
when a single item can't be priced. Items that fail keep their previous values and are counted in the job summary.
The job now prices only ores in the mining ledgers and items appraised or valued in the field estimator in the last
14 days, rather than every item ever appraised. When a background job fails part-way, its remaining ESI requests
stop instead of running on into the retry. (#15) - The ESI client no longer pauses a whole rate-limit group for 15 seconds after a response that names the group but
doesn't report its remaining tokens.
Docker image: ghcr.io/theragus/keystar:0.7.0
# in .env: KEYSTAR_VERSION=0.7.0
docker compose pull && docker compose up -dKeystar v0.6.0
Changed
- Each section has its own colour: Industry amber, Combat crimson, Trade teal (Overview, Account and Administration
keep the cyan accent). It shows in the page heading label, the sidebar marker and a faint glow at the top of the page.
Docker image: ghcr.io/theragus/keystar:0.6.0
# in .env: KEYSTAR_VERSION=0.6.0
docker compose pull && docker compose up -d