What's new in Starsky v0.8.0?
ยท 4 min read
Version 0.8.0 is a significant release centered on upgrading to .NET 10, bringing new virtual folder mapping capabilities, and a series of quality and reliability improvements. Here's what's changed since v0.7.22:
๐จ Breaking Changesโ
- Upgrade to .NET 10
- Starsky's backend now runs on .NET 10 (Runtime 10.0.11, SDK 10.0.400). .NET 10 is the current major version and brings performance improvements across the board.
๐ New Featuresโ
-
Virtual Storage Folder Mappings (Symlink)
- You can now define custom storage folder mappings in the application settings. This lets you map a virtual sub-path inside Starsky's library to a physical folder located anywhere on disk โ without requiring OS-level symlinks.
- This is useful for attaching an external drive, a network share, or a dedicated archive folder to your Starsky library without moving files or changing how the OS sees them.
- The mapping is fully managed from the Preferences UI under a new Storage Folder Mappings panel.
- Safety guardrails prevent mapping to sensitive system directories (e.g.
/etc,/System,C:\Windows) to avoid accidental exposure of OS files. - The disk watcher picks up changes inside mapped folders automatically, so new files appear in the index just like any other library file.
-
HTML Publish:
<figure>andLargeImageDefaultSrctemplate (PR #3217)- The static HTML publish feature gains a new embedded view
LargeImageDefaultSrc.cshtmland aLegacy.cshtmlfallback template. - Images in published pages are now wrapped in a semantic
<figure>element, improving accessibility and allowing finer CSS control over captions and layout. - The published index page now uses a 1000 px max-width container (up from 500 px) for a better reading experience on modern displays.
- The static HTML publish feature gains a new embedded view
๐ ๏ธ Bug Fixes & Improvementsโ
-
ExifTool guard: prevent accidental auto-download (PR #3223)
- Added a guard in
ExifToolServicethat validates the ExifTool binary before attempting to use it. If the binary is absent or fails a basic sanity check, Starsky logs a warning instead of silently falling back to an auto-download, which could be unexpected in restricted environments.
- Added a guard in
-
IOException AppSettings robustness (PR #3222)
- The
AppSettingsmodel now handlesIOExceptionwhen reading configuration, rather than propagating a raw exception on startup. This improves reliability on systems where the config file is temporarily locked (e.g. during a deploy or config rotation).
- The
-
Cypress E2E test reliability on Windows (PR #3210)
- Fixed a flaky end-to-end test in the detail-view upload flow. On Windows,
blur()triggers an asynchronousFetchPostto/starsky/api/update, but the test didn't wait for that network round-trip before reloading. The test now explicitly waits for the network call, making it reliable on both Linux and Windows CI runners.
- Fixed a flaky end-to-end test in the detail-view upload flow. On Windows,
๐๏ธ Infrastructure & Toolingโ
-
RabbitMQ.Client updated to 7.2.2 (PR #3215)
- Keeps the message queue client up to date with the latest upstream patches.
-
Code quality pass for .NET 10 (PR #3205, #3207, #3208, #3209)
- A series of SonarQube-driven code quality improvements were applied alongside the .NET 10 migration, reducing technical debt and bringing the codebase in line with .NET 10 analyzer rules.
-
Swagger .NET updated (PR #3202)
- The API documentation tooling has been updated to match the new .NET 10 stack.
โ ๏ธ Upgrade Notesโ
- Install the .NET 10 runtime on your server or update your Docker image before upgrading. This is only required for development, by default all binaries are self-contained
- If you run ExifTool in an air-gapped or restricted environment, verify the binary is in place before starting the service โ the new guard will log a warning on startup if it cannot be found, rather than silently auto-downloading.
- If you use the HTML publish feature (
starskyWebHtmlCli), re-publish any existing profiles to pick up the correctedwidth/heightvalues and the new<figure>markup.
For the full list of changes, see history.md.
