Skip to content

Releases: pyvnoaim/kova-companion

2.1.6

Choose a tag to compare

@pyvnoaim pyvnoaim released this 03 Nov 12:32

PB clips and pop-ups no longer overstate how much you beat your best by.

PB gain fixed after a Windows reinstall

If you reinstalled Windows, a new PB could show a gain measured against your
best since the reinstall instead of your real best (for example "PB +294" when
you beat it by 156). The autoclipper and the New PB pop-up now go by your best
on KovaaK's. When the app can't tell what you beat, the clip just says "PB".

2.1.5

Choose a tag to compare

@pyvnoaim pyvnoaim released this 31 Oct 20:33

Start with Windows now stays on.

Start with Windows switch fixed

In 2.1.3 and 2.1.4 the Start with Windows switch in Settings jumped back to
off every time you clicked it. Clicking it did register the app to start with
Windows, the switch just couldn't see that, so you may already have it on. It
now shows the real setting, including when you turn it off in Task Manager.

2.1.4

Choose a tag to compare

@pyvnoaim pyvnoaim released this 29 Oct 21:23

Snipe alerts now only fire when someone passes you.

Fewer pointless snipes

Before, a snipe fired whenever someone you follow set a PB above yours, even if
they were already ahead of you and only beat their own score. Now you only get
one when someone goes from below your best to above it. If kova doesn't know
their earlier score, the alert fires as before.

2.1.3

Choose a tag to compare

@pyvnoaim pyvnoaim released this 28 Oct 15:20

Snipes get their own page, and the app finally knows your real best.

Your real best, not just what's on this PC

Until now the app only knew your best from the stats files on this PC. After a
Windows reinstall, or on a new PC, those files are gone, so:

  • Snipe alerts said a friend beat your best when they hadn't. A friend's 229
    showed as beating "your 185" even though your real PB was higher.
  • Runs that beat only what was left on this PC popped a New PB and, with PB
    clipping on, saved a clip.

The app now also checks your best on KovaaK's leaderboard and uses whichever is
higher. This needs your KovaaK's account linked on your kova profile. Without
it, the app keeps going by the files on this PC as before.

Snipes page

Snipe alerts only showed up as a pop-up, so one you missed was gone. The new
Snipes page, under Compete, lists every snipe: the scenario, who beat you
and when, their score against yours, and a Play button to go straight into
it.

Once a run on this PC beats their score, the snipe shows Sniped back with
your new best, so the ones left to answer stand out. The list starts with this
update, and snipes from before it aren't on it.

Start with Windows is back

This was meant for 2.1.2, which never went out. Settings has a Start with
Windows
switch again. When it's on, the app starts in the tray when you log
in, so hotkeys and alerts are ready without opening a window. It reads the
actual Windows startup entry, so turning it off in Task Manager shows as off
here too.

2.1.1

Choose a tag to compare

@pyvnoaim pyvnoaim released this 27 Oct 20:47

A small release. If 2.1.0 is working for you, nothing changes about how presets
behave.

Fixed: how to load a theme mid-session

Applying a theme preset while KovaaK's is running rewrites the !KovaPreset
theme, and the app used to tell you to open the game's settings to see it. That
was wrong: KovaaK's only reloads a theme when you select it in the theme menu.
The app now gives the step that actually works: in KovaaK's, switch to any other
theme and back to !KovaPreset. No restart needed. Thanks to c1ayupmax for
reporting it (#1).

Installer

The installer is now always called kova-companion-setup.exe, without a version
number, so there's one fixed download link. Because the name changed, this one
update downloads the full installer instead of only the changed parts. Later
updates are small again.

2.1.0

Choose a tag to compare

@pyvnoaim pyvnoaim released this 27 Oct 20:13

KovaPresets is now kova companion

Same app, new name, and a lot more in it. Presets, the HUD editor and the stream
overlay are still here and behave exactly as before. They now sit in a sidebar
next to the new tools, and Kovi, the mascot, lives in the title bar, the tray
and the empty states. The app icon is new too: Kovi's face, drawn sharp at every
size Windows uses, so it no longer blurs in the taskbar.

This update installs over your current copy. Presets and settings carry over
untouched, and the KovaPresets shortcuts on your desktop and in the Start menu
are replaced by kova companion ones. The app and its data move to folders
named kova-companion; nothing to do on your side.

Sign in with kova

Sign-in happens in your browser on kova.page, so the app never sees your Discord
login. Once you're signed in, the sidebar shows your avatar and benchmark rank,
and:

  • Rank progress: your verified bests, how far each scenario is from your next
    rank with the rank's own icon, the odds of getting there, and a score graph for
    every scenario. Cross a rank line and Kovi pops up in the new rank's colour.
  • Tournaments: your upcoming matches, a reminder when check-in opens, and
    one-click launch of the match scenario. Check-in is always your click; the app
    never checks in for you.
  • Weekly challenge: your team's scenario of the week, its standings and past
    weeks.
  • Snipe alerts: when someone you follow beats your best on a scenario you
    play, with Play to go get it back.
  • Live setup on stream: while KovaaK's runs, the kova overlay shows your
    sens, FOV and crosshair as you change them.

Local runs never write PBs or ranks into kova. They only drive what you see in
the app.

Without signing in

  • Sessions: a calendar of every day you've played, and a recap of runs, PBs
    and time played when you close KovaaK's.
  • Autoclipper: connect OBS once in Settings, and the replay buffer saves a
    clip on every PB, on rank-ups or on every run, trimmed to the run. Clips play
    right in the app. The trimming uses a small ffmpeg bundled with the app (only
    LGPL code, details in its SOURCE.md).
  • PB pop-ups for every new best, switchable in Settings > Alerts.

Updating

Updates still download quietly. From this version on, restarting to install no
longer flashes an installer window, and the first start on a new version says
so, with a link to what changed.

Fixed

  • KovaaK's writes stats files for scenarios with non-ASCII names in a different
    text encoding (UTF-16), and those files were never read: no PB, clip or rank-up
    for those scenarios. They are now.
  • Three theme fields presets didn't carry (enemy body colour on attacks, team
    glow on head and body) are now carried. Themes like Azabun white and
    snopal-clarity look right after an apply.
  • Restart game now closes the game itself rather than its launcher, which
    ignored the request.
  • A preset captured while a theme switch was waiting for the game to quit could
    rename the theme to garbage when the game quit, and empty the theme dropdown.
  • A restore while the game was running could later be taken as your "original"
    setup.
  • Imported presets are checked before they're used: only the settings a preset
    manages, with the right types.

ffmpeg-7.1.1-1 (autoclipper ffmpeg, not an app release)

Choose a tag to compare

@github-actions github-actions released this 27 Oct 19:12

Cut-only LGPL ffmpeg bundled with kova companion. See SOURCE.md.

2.0.1

Choose a tag to compare

@pyvnoaim pyvnoaim released this 19 Aug 16:37

A maintenance release. Nothing changes about how presets behave — if 2.0.0 is
working for you, this is a quiet upgrade.

Fixed: settings that reset themselves

settings.json was the one store still written non-atomically. If a write was
interrupted — a crash, a power cut, a hard shutdown mid-save — it read back as
invalid JSON on the next start, and invalid JSON falls through to defaults:
first-run wizard again, after-apply mode back to "Do nothing". It's written to
a temp file and renamed into place now, the same way presets and every game
file already were.

Also fixed: on macOS and Linux the tray icon fails to decode, and that threw
out of startup — taking auto-update, the queued-apply flush and hotkey
registration with it, with nothing on screen to say why. Windows was never
affected; dev runs on other platforms no longer come up half-booted.

Under the hood

The theme mapping used to be two hand-written lists of the same 30 fields in
opposite directions, so adding a field to one and forgetting the other would
silently drop it from every applied preset. Both directions now read from one
table, and the self-test round-trips a preset through the proxy theme file and
back — a row that maps only one way fails the test.

Verified against a real install across 55 themes: the theme files this version
writes are field-for-field identical to 2.0.0's.

Plus CI on Windows and Linux, ESLint, and a CONTRIBUTING.md for anyone who
wants to poke at it.

2.0.0

Choose a tag to compare

@pyvnoaim pyvnoaim released this 02 Aug 16:52

Scenario auto-apply is gone

1.1.0 shipped presets that switch themselves per scenario. In real use the
mechanism was wrong: the only moment the game tells anyone anything is when a
run ends (the stats file write), so the switch always landed after the run it
was meant for. A preset that applies itself once your score is already on the
board isn't automation, it's noise — so rather than ship another approximation,
the feature is removed. Hotkeys, the after-apply re-enter/restart options, and
the tray menu remain the ways to switch.

If you had scenarios assigned to presets, those assignments are simply dropped.
The presets themselves are untouched.

Presets no longer carry HUD colors or HUD layout

Verified in-game: KovaaK's reads its HUD color file (Palette.ini) exactly
once, at launch, and never again — no settings visit, no scenario load, nothing
makes an external change visible mid-session. So per-preset HUD colors could
only ever land "on next game quit", which read as the feature silently not
working. Same story for per-preset HUD layouts. Both are out of presets now;
what a preset holds — crosshair, theme, sounds, sens, DPI — is exactly what
provably applies.

The HUD editor stays. Layouts you save there still apply immediately while
the game is closed, or queue for its next quit — and "Restore original setup"
now covers layouts saved before your first preset apply, too.

Existing presets migrate automatically; there's nothing to redo.

Under the hood

A codebase-wide cleanup rode along: deduplicated apply paths, cheaper
change-detection and idle polling, and a few hundred lines of dead code
removed. No behavior changes beyond the above.

1.1.0

Choose a tag to compare

@pyvnoaim pyvnoaim released this 01 Aug 17:26

Presets that switch themselves, per scenario

Every preset row has a new target icon: assign scenarios to it, and the preset
applies itself. The moment a run ends, KovaPresets works out which scenario is
up next — and if a preset is assigned to it, it's applied before the next
scenario loads, so the crosshair and sounds are already right when it does.
No hotkey, no alt-tab, no hands.

It's playlist-aware. Grinding a benchmark playlist, "up next" follows the
playlist: finish your Pasu runs and the preset assigned to Popcorn is applied
while you're still on the score screen. Outside a playlist it re-asserts the
preset assigned to the scenario you're grinding. Scenario suggestions in the
assignment dialog come from your loaded playlist and recent history — or type
any name. One scenario drives one preset; assigning it elsewhere moves it,
same as hotkeys.

Two honest limits. It triggers when a run ends (that's when the game writes
anything to disk), so the very first scenario of a session uses whatever's
active — from the first score screen on, it's automatic. And it deliberately
never re-enters or restarts anything for you, even if that's your after-apply
setting: mid-playlist, hijacking the game's own navigation would be worse than
waiting one scenario load.

Fixed: switching back to the preset you launched with

Applying preset A mid-session and then returning to the one the game started
with read as "nothing changed" — so the live theme never switched back, and A's
theme stayed on screen. The change detection now compares theme fields against
what the game is actually rendering (the proxy theme file) instead of the
settings file it only reads at launch. Going back works like going forward.

Under the hood

  • Every settings write is now atomic — written to a temp file and renamed
    into place. The game re-reads these files at moments KovaPresets doesn't
    control (the proxy theme on menu-open, weaponsettings on scenario entry), and
    a write caught halfway could be read as a truncated file. That can't happen
    anymore, and the same protection now covers the preset store itself.
  • There's a log file. Applies, queued flushes, restarts, auto-switch
    decisions and errors land in kovapresets.log — tray → "Open log file". If
    something ever silently doesn't apply, there's finally something to look at.