Repository navigation
v0.3.0
Borea v0.3.0
Borea is the community content manager for Kitten Space Agency: find mods, install them with their dependencies into separate instances of the game, and launch through StarMap.
Website | Discord | Content index | Source and issues
Coming from v0.2.x
Click "Update now" on the Home banner, or run borea update-self.
Your instances, mods and settings stay as they are.
Highlights
- Borea keeps one copy of each mod release and links it into every instance that uses it, so a mod you already have does not need to be downloaded twice.
- When the game crashes after it started, Borea tells you, names the mod if one caused it, and opens the crash log for you.
- Discover scrolls smoothly now, even when you scroll fast through a long list.
- Mark your favorite mods and packs, and find the mods you already use in your other instances.
- Save the game settings of an instance as a preset and start new instances from it.
- Borea remembers your GitHub sign-in, so you stay signed in after a restart.
- Mod authors can now write and publish mod packs right from the App.
- Stewards of the content index can review, merge and moderate the index without leaving Borea.
- Experimental: on a Mac, Borea can play the Windows build of KSA through a Wine wrapper such as Sikarugir.
For players
Shared mod files
- Borea now unpacks each mod release only once, into
Static Mod Filesin your library folder, and links every instance to that copy. A second install of the same release does not need to download or unpack anything again. - When you remove a mod from one instance, only its link goes away. Borea deletes the stored copy once no instance uses it anymore.
- Some mods write into their own folder. When Borea notices that, it gives every instance its own copy of that mod and tells you which mod it was, so one instance cannot change the files of another.
- If you prefer a separate copy of every mod in every instance, turn off "Share mod files between instances" in Settings, General.
- The instance page counts linked mods in its size, so the total still tells you how much room the instance takes.
- Moving your library folder moves
Static Mod Filesalong with it. On Windows, moving the library to another disk now also works when an instance holds a linked mod.
Discover and mod pages
- Mark mods and packs as favorites from their "..." menu. Favorites get a small star, and "Only favorites" in the Show filters lists just them.
- "Installed in other instances" in the Show filters shows the mods you already use elsewhere. Combine it with "Hide already installed" to see what you have in another instance but not in this one yet.
- The search field says what it searches, such as "Search 20 mods".
- In a long list, "Back to top" at the bottom takes you straight back to the search and the filters.
- Hold the middle mouse button in any list or page and move the mouse to scroll, as in a web browser. The back and forward buttons of your mouse move between pages.
- Free-form tags now read like the curated ones, for example "Space Station". When a row has more tags than fit, a chip such as "+2" names the rest.
- Some mods need a step from you, before you play or when you remove them. Their mod page now shows those steps, and the install asks you to confirm them.
- When a release can no longer be downloaded from its host, Borea stops offering it for new installs and updates. The Versions tab still lists it, with the date it went away.
- Clicking "+" or Install without an active instance now tells you what to do, with a button that opens the Library.
- Fast scrolling no longer stutters. Borea reuses the rows that scroll out of view instead of building them again, so a list stays smooth also when you scroll quickly from the end back to the top.
- A scrollbar grows as soon as your pointer is over it, and shrinks again as soon as the pointer leaves.
- Long lists use less memory, and a list keeps its scroll position when you come back from a mod page.
- Buttons and links behave the same everywhere: the hand cursor on everything you can click, links that turn purple under the pointer, text in the center of the purple buttons and of the search fields, and tooltips that explain a number or a date that stands on its own.
Instances
- The Mods, Manual installs, Log and Game data tabs are now tables. The less common actions of a mod moved into its "..." menu, and the menu explains when an action is not available.
- Every instance has the same "..." menu, on the Library, on its Home card and on its own page, including "Back up all saves". Deleting an instance now asks first.
- "Save settings as preset" in the instance menu keeps the game settings of that instance. When you create a new instance, you can start it from a preset, and Settings, Game lists your presets so you can delete old ones.
- "Let Borea manage" now checks what the mod needs before it takes it over, and can install a missing required dependency in the same step.
- The Manual installs tab explains which mods the game loads and why Borea leaves them alone.
- Home shows two full rows of recently updated mods.
Saves and vehicles
- Rename a save or a vehicle from its row menu. Borea changes both the name the game shows and the folder on disk.
Mod packs
- A pack pins exact versions on purpose. Borea now tells you when its mods have newer releases, such as "1 of 3 mods has a newer release", but it never changes what the pack installs.
- "Copy forum list" on the pack page copies one line per mod, in the format the forum rules ask a pack thread to use.
- When a pack install stops, Borea tells you which mod stopped it and why.
- When a pack pins a release that can no longer be downloaded, Borea warns you before the install.
Launching and when something goes wrong
- When the game closes unexpectedly after it started, Borea tells you, names the mod if one caused it, and "Open log" takes you to the crash log. If the game crashed while Borea was closed, you see the message once at the next start.
- When StarMap restarts itself to load new mods, Borea now follows the restarted game. Play and a backup restore of that instance wait until you close it.
- When StarMap stops right after the start and names a mod file by its path, Borea now tells you why instead of showing "Something went wrong".
- The error bar at the bottom of the window has a solid background now, so its text stays readable.
- On Linux, Borea adds itself to your application menu at the first start, and from then on starts from there without a terminal. On Windows, Borea no longer opens a console window when it restarts after an update.
KSA on a Mac in a Wine wrapper (experimental)
KSA has no macOS build, so some players run the Windows build on their Mac inside a Wine wrapper app such as Sikarugir. Borea now supports this, but it is new and has only been tested by a few people, so please tell us how it works for you.
- Game detection finds the game and StarMap inside wrapper apps in
/Applicationsand~/Applications, and one folder below them, such as~/Applications/Sikarugir, where Sikarugir saves its wrappers. - Play starts StarMap through the wrapper, with the instance you chose, and "Play without mod loader" starts KSA through it too.
- Borea tells StarMap where the game is in the form that Windows programs inside the wrapper understand, such as
C:\Program Files\Kitten Space Agency, also when an older Borea had written a macOS path. - StarMap needs the .NET runtime for Windows inside the wrapper. When it is missing, Borea tells you which version you need and how to install it in three steps: download Microsoft's installer, install it through "Install Software" in the Configure window of the wrapper, and click "Check again". Borea never downloads or installs anything into the wrapper itself.
- Launch arguments cannot be passed through a wrapper, so an instance with launch arguments is refused with a message, and only one game at a time can run through the same wrapper.
- When the game crashes inside a wrapper, Borea does not show the crash message yet.
- On Linux, Borea does not try to start a Windows build of KSA and tells you why.
Updating Borea
- "Update now" runs as a task in the Tasks drawer, where you can follow the download. If an update fails, the task says why, and the build you have keeps working.
- When you change the update channel in Settings, or turn "Check for updates at start" on, Borea checks for a new release at once, without a restart.
GitHub sign-in
- When you sign in to GitHub in Settings, Borea keeps the sign-in in the secure credential store of your system and signs you in again at the next start. Turn off "Stay signed in on this computer" if you do not want that, and signing out always deletes it.
For mod authors
- Mod packs in the listing editor: start a new pack, pick its mods from the index, make the next version of a pack you already listed, or turn one of your instances into a pack. Borea opens the pull request for you, and the first version of a new pack also records you as its owner.
- Version bounds with one or two numbers, such as
min = "0.5", now work in a listing (RFC 0072), and the editor finds releases tagged0.5orv1. - "Stamp older releases from version" in the listing editor sets
sinceunder[releases](RFC 0079), so the index also stamps releases older than the newest one. - The free tag field accepts capitals and spaces, and stores the tag in lowercase with
-between the words. - The listing editor reads the prefix of your forum thread by its id, so it still picks the right tag when the forum renames a prefix.
- The steps your listing asks for, before play and when the mod is removed, are now shown to players on the mod page and in the install confirmation.
- Borea shares mod files between instances. If your mod changes files in its own folder, Borea gives every instance its own copy of it from then on. Keep the files your mod writes outside its own folder, so all instances can share it.
- When the game crashes in your mod, Borea names your mod in the message, so players know whom to tell.
- On a phone, the share page of your mod shows "Copy link" instead of the Borea buttons, which only work on a computer.
- The share page of your mod shows the images of its description at once when they are on GitHub, and asks the reader first only for images on other hosts.
For stewards of the content index
- After you sign in, Borea checks whether your GitHub account is a steward of content-index or content-index-releases, and Settings shows it under your login.
- The Steward page lists the pull requests that wait for a steward. You can review one in Borea, with its diff, a preview of each document and the ownership proof, and approve, request changes, comment, merge or close it. Every action asks for a confirmation first.
- From the page of a listing or pack you can mark it as disputed, delist it or retract a pack version, and the Status tab lifts such a state again. Each change opens its own pull request, which mentions the owner.
- The Reports tab lists open takedown requests and disputes, and the Watcher tab lists open watcher issues.
- "Amend releases" on the content page of a listing yanks releases or changes their bounds, and shows a preview before anything is sent.
For translators
- Put a
Resources.<language>.resxfile into the Languages folder of the Borea data folder, and Borea shows your texts at the next start, without a build. Turn on "Mark untranslated texts" in Settings to see which texts still need a translation.
Command line
borea settings set shared-store offturns shared mod files off, andborea settings showtells you whether they are on.borea instance rename-saveandborea instance rename-vehiclerename a save or a vehicle.borea instance backupsshows the size of each backup, andborea instance restore-backuprefuses while KSA or StarMap runs.borea instance take-ownershipnow stops when a required dependency is missing and names it. Add--with-dependenciesto install it first, or--without-dependenciesto go on without it. A script that took over such a mod before now needs one of the two.borea showprints the install and uninstall steps of a listing and the date a download went away.borea install,borea remove,borea loader installandborea loader uninstallprint the steps after their result, and--jsonincludes them as arrays.borea pack installnames the mod that stopped a pack install and says why.borea launchthrough a Wine wrapper on a Mac says which .NET runtime is missing and where to get it. Run it again once the runtime is installed.
Good to know
- This version is tested with KSA 2026.9.22.5482.
- The game's own Restart button in its settings still only closes the game when you started it from Borea. StarMap cannot find its configuration after that kind of restart. Just start the game again from Borea.
- On Windows 10 and on Windows 11 before version 24H2, you may see a console window flash up for a moment when you start Borea. Borea is a single program file that is both the App and the command line, and these Windows versions show a console for such a file before the App window opens. Windows 11 24H2 and later do not. On macOS, Borea still opens from Terminal for now.
- Every request Borea sends names Borea, its version and a link to the Borea repository, as the Ahwoo forums ask of tools that read them.
- Borea is a community project by the KSA Modding team. It is not made by RocketWerkz.
Downloads
| File | SHA-256 |
|---|---|
| Borea-0.3.0-linux-x64.tar.gz | e5f72b8d2b172de5dc1893851c7a90db254531e87136cd24a0670a83b6b6184b |
| Borea-0.3.0-macos-arm64.tar.gz | aa1d170ce308b2a83c5775ddfdef99e156586fe7ccf6d9eee14282cb1d33b9ca |
| Borea-0.3.0-win-x64.zip | f65bf778d63a91338cc9922f1090dec9018053be521dd2b68091bb2757f57d91 |
| Borea-0.3.0.cdx.json | 82bfc352d9c2a12549a983785e5cc305967d0383dd6aaa88462f1c9e04071684 |
| Borea-Cli-0.3.0-linux-x64.tar.gz | e8a05c0f1a32cabcfb208756138376e2fd13004f75487a19598c62ecda937ae8 |
| Borea-Cli-0.3.0-macos-arm64.tar.gz | 88de2ea2ef7bbbb91d4bbd686d3c364b9975c129c52eba4482df6dab87fae345 |
| Borea-Cli-0.3.0-win-x64.zip | 631d38cd88aaf8546b13d8f09c523468cd27c112168fae5e4df8d7b177059758 |
| Borea-Cli-0.3.0.cdx.json | 61f245508dc11a46ddccd8ce9225e81d442fc7435d27a2eab033916715952c14 |
Each platform has two archives.
The App archive, for example Borea-<version>-win-x64.zip, contains the program borea.
Without arguments, borea opens the desktop App, and with arguments, it runs a command.
Most users want this archive.
Archives whose names start with Borea-Cli- are a smaller download that contains only the command line.
The builds include the .NET runtime and are self-contained, so there is nothing to install first.
Each archive contains borea (borea.exe on Windows), LICENSE and THIRD-PARTY-NOTICES.txt, in a folder named Borea, or Borea-Cli for the CLI archive.
The App archive also contains BRANDING.md, because the Borea logo in the App is not covered by the MIT License.
Put that folder where it can stay, for example %LocalAppData%\Programs\Borea on Windows or ~/.local/share/Borea on Linux, because Borea updates itself into the folder it runs from.
First start
These builds are not code signed, so the first start might take an extra step on Windows and macOS. The README has the long explanation.
Windows. Right-click the zip, open Properties and select Unblock.
Then unpack the App archive and start borea.exe, or run .\borea.exe --help in PowerShell in the unpacked folder of either archive.
Without that step, Windows shows "Windows protected your PC". This is because the file might not be downloaded often and is not signed. Select "More info", then "Run anyway".
Linux. Unpack the App archive and run ./borea for the App, or run ./borea --help in the unpacked folder of either archive.
After the App has started once, Borea is in the application menu and starts from there without a terminal.
Both need the ICU and OpenSSL libraries of your distribution, and only the App also needs the X11, ICE, SM and fontconfig libraries. Most desktop installs already have them. See Readme.
macOS. Unpack and start Borea from Terminal, not from Finder: tar -xzf <file>, then run ./borea inside the new folder of the App archive for the App, or ./borea --help inside the new folder of either archive.
The macOS builds are for Apple silicon. Intel Macs are not supported.
Provenance
To check that a file came from this workflow:
gh attestation verify <file> --repo KSAModding/Borea \
--signer-workflow KSAModding/Borea/.github/workflows/release.yml
Borea-0.3.0.cdx.json is the software bill of materials for the App archives, in CycloneDX JSON.
The App contains the command line, so this list includes the NuGet packages of the App and of the CLI.
Borea-Cli-0.3.0.cdx.json is the software bill of materials for the CLI archives and includes only the packages of the CLI.
Each list includes the version, license and hash of every package.
Each list is attested only to the archives that it describes, and you can use this command to prove that it belongs to one.
With --format json, the output includes the attested list.
gh attestation verify <archive> --repo KSAModding/Borea \
--signer-workflow KSAModding/Borea/.github/workflows/release.yml \
--predicate-type https://cyclonedx.org/bom
Signing will come in the future and is tracked in #76.
What's Changed
- Change saves and vehicles without asking whether a file is open by @Maximilian-Nesslauer in #515
- Show backup sizes and refuse a restore while the game runs in the CLI by @Maximilian-Nesslauer in #514
- Check the dependencies before Borea takes over a mod by @Maximilian-Nesslauer in #516
- Tell mod authors that an instance moves the game profile by @Maximilian-Nesslauer in #513
- Make the App react the same way wherever a player clicks by @Maximilian-Nesslauer in #532
- Show the lists of an instance as tables and move row actions into a menu by @Maximilian-Nesslauer in #533
- Show full rows on Home and one instance menu everywhere by @Maximilian-Nesslauer in #534
- Keep the cost of Discover with the window, not the list by @Maximilian-Nesslauer in #537
- Wait for the task history save before the self-update close test by @Maximilian-Nesslauer in #540
- Start the listing branch at a commit the fork already has by @Maximilian-Nesslauer in #538
- Merge the v0.2.1 release branch into main by @Maximilian-Nesslauer in #542
- Say when the mods of a pack have newer releases, and copy its forum list by @Maximilian-Nesslauer in #545
- Show the update of Borea itself as a task in the Tasks drawer by @Maximilian-Nesslauer in #546
- Store each mod release once and link instances to it by @Maximilian-Nesslauer in #548
- Turn the shared mod store on, and give a mod that writes into its folder its own copy by @Maximilian-Nesslauer in #549
- Name the member that stops a pack install by @Maximilian-Nesslauer in #547
- Navigate with the back and forward buttons of a mouse by @Maximilian-Nesslauer in #551
- Mark mods and packs as favorites by @Maximilian-Nesslauer in #552
- Show mods installed in other instances on Discover by @Maximilian-Nesslauer in #553
- Show a phone Copy link in place of the Borea buttons on share pages by @Maximilian-Nesslauer in #557
- Add KSA 2026.9.22.5482 to the verified builds by @Maximilian-Nesslauer in #562
- Publish a release only from main or a release branch by @Maximilian-Nesslauer in #586
- Read short version bounds (RFC 0072) by @Maximilian-Nesslauer in #588
- Game settings presets, continued by @averageksp in #598
- Brand usage clarification by @renancamm in #592
- Ship BRANDING.md in the App archive by @Maximilian-Nesslauer in #601
- Show a toast when content is added without an active instance by @Maximilian-Nesslauer in #603
- Explain manual installs on the instance page by @Maximilian-Nesslauer in #604
- Show the install and uninstall steps of a listing by @Maximilian-Nesslauer in #606
- Rename a save or a vehicle by @Maximilian-Nesslauer in #608
- Preview a translation in Borea without a build by @Maximilian-Nesslauer in #609
- Read since under [releases] of a listing by @Maximilian-Nesslauer in #610
- Follow RFC 0078 for releases whose download is gone by @Maximilian-Nesslauer in #611
- Keep each game settings preset once when loads overlap by @Maximilian-Nesslauer in #612
- Start the App without a terminal window by @Maximilian-Nesslauer in #613
- Write a pack version in the listing editor by @Maximilian-Nesslauer in #614
- Make the next version of a listed pack in the listing editor by @Maximilian-Nesslauer in #615
- Make a pack from an instance by @Maximilian-Nesslauer in #616
- Open the pull request of a pack version from the App by @Maximilian-Nesslauer in #618
- Share the GitHub REST plumbing of the listing publisher by @Maximilian-Nesslauer in #619
- Check the listing ownership proof for any GitHub account by @Maximilian-Nesslauer in #620
- Know whether the signed-in account is a steward by @Maximilian-Nesslauer in #621
- Dispute, delist, retract and lift from Borea by @Maximilian-Nesslauer in #622
- Add the queue of pull requests that wait for a steward by @Maximilian-Nesslauer in #623
- Show the watcher and watchdog issues on the Steward page by @Maximilian-Nesslauer in #624
- Review one index pull request on the Steward page by @Maximilian-Nesslauer in #626
- Approve, request changes, comment, merge and close index pull requests by @Maximilian-Nesslauer in #627
- Takedown and dispute reports on the Steward page by @Maximilian-Nesslauer in #628
- Stay signed in to GitHub after a restart by @Maximilian-Nesslauer in #631
- Read an assembly named by its path in the launch watch by @Maximilian-Nesslauer in #632
- Release amendments in Core by @Maximilian-Nesslauer in #633
- Make the error bar opaque by @Maximilian-Nesslauer in #634
- Amend releases from the content page by @Maximilian-Nesslauer in #635
- Give back the icon files that no view shows by @Maximilian-Nesslauer in #637
- Scroll a view while the middle mouse button is held by @Maximilian-Nesslauer in #639
- Add a back to top button to Discover by @Maximilian-Nesslauer in #641
- Show free-form tags like curated ones, and normalize typed tags by @Maximilian-Nesslauer in #642
- Keep a launch running while StarMap restarts itself by @Maximilian-Nesslauer in #646
- Name Borea and a contact link in the User-Agent by @Maximilian-Nesslauer in #648
- Tell the player when the game crashes after its start by @Maximilian-Nesslauer in #647
- Refresh the reports tab in order in the reporter sign-out test by @Maximilian-Nesslauer in #651
- Wait for every view model of the test harness before its folder goes by @Maximilian-Nesslauer in #649
- Recognize Wine prefixes and macOS Wine wrappers by @Maximilian-Nesslauer in #654
- Start the game through a macOS Wine wrapper by @Maximilian-Nesslauer in #655
- Check for the .NET runtime of the loader in a Wine wrapper by @Maximilian-Nesslauer in #656
- Expand a scrollbar as soon as the pointer is over it by @Maximilian-Nesslauer in #657
- Stop fast scrolling on Discover from stuttering by @Maximilian-Nesslauer in #658
- Add the release notes of v0.3.0-dev.1 by @Maximilian-Nesslauer in #652
- Match forum prefixes by their id by @Maximilian-Nesslauer in #660
- Refresh in order in the steward status sign-out test by @Maximilian-Nesslauer in #663
- Center the text of a purple button that holds only text by @Maximilian-Nesslauer in #665
- Explain the .NET runtime install in three steps by @Maximilian-Nesslauer in #666
- Check for a Borea update when the update channel changes by @Maximilian-Nesslauer in #668
- Center the text of the search fields by @Maximilian-Nesslauer in #672
- Find wrapper apps one folder below the application folders by @Maximilian-Nesslauer in #669
- Name the count of the tab in the Discover search field by @Maximilian-Nesslauer in #674
- Add the release notes of v0.3.0-dev.2 by @Maximilian-Nesslauer in #670
- Show images on GitHub on a share page without asking by @Maximilian-Nesslauer in #675
- Add the release notes of v0.3.0 by @Maximilian-Nesslauer in #653
New Contributors
- @renancamm made their first contribution in #592
Full Changelog: v0.2.1...v0.3.0