Releases: Aarav2709/Needlelight
v6.1.0.3
Needlelight v6.1.0.3 Release Notes!
Overview
v6.1.0.3 continues the Silksong stability story with better cross-platform detection and installer resiliency. This build lets the launcher and auto-updater treat Silksong as a first-class install, hardens vanilla assembly discovery against broken endpoints, and keeps the API toggle usable even when custom or debug builds obscure metadata.
Major Items
- Silksong path discovery
Settings/PathUtilnow include Linux Steam roots, Flatpak data paths, and macOS app bundle variants when auto-detecting or validating a managed folder so Silksong-only installs no longer fail when Hollow Knight is absent.- The same utilities now accept whichever known profile actually matches a directory, meaning manually pointing Needlelight at
Hollow Knight Silksong.appno longer requires restarting from the Hollow Knight profile.
- Launcher & executable detection
GameProfilecarries Linux (.x86_64) executables for both Hollow Knight and Silksong, so the game launcher can resolve the right binary on Linux/macOS without relying on Windows.exenames.InfoViewModelbenefits from these metadata fixes and reuses the resolved profile to launch the Steam or native binary, giving Silksong binaries the right lookups on every platform.
- Assembly/API resilience
ModDatabase.FetchVanillaAssemblyLinknow enumerates every assembly link candidate, validates the URL before returning it, and skips manifest entries that return 404 or 405, preventing the installer from downloading invalid URLs.Installer.CheckAPIcan still toggle the API when the version is missing by inspecting the on-diskAssembly-CSharp.dllbackups and keeping the toggle button responsive for both Hollow Knight and Silksong states.
Fixes & Improvements
- Needlelight/Settings.cs
- Added per-OS suffix candidates (Linux Steam, Flatpak, macOS bundles) plus Silksong-aware path heuristics so auto-detect and manual selection treat Silksong as a first-class citizen.
- Needlelight/Util/PathUtil.cs
- Path validation now resolves against whichever profile a given folder actually contains, letting Silksong installs be accepted even when the user initially selected Hollow Knight.
- Needlelight/Models/GameProfile.cs
- Extended the exe/data metadata with Linux
.x86_64names and Silksong-specific data-folder alternatives, ensuring the launcher and undo logic find the right files on every OS.
- Extended the exe/data metadata with Linux
- Needlelight/Services/ModDatabase.cs
- Assembly link lookups now deduplicate candidate keys, emit warnings for invalid URLs, and probe links with HEAD/GET before returning them so InstallVanilla has a working source.
- Needlelight/Services/Installer.cs
- When metadata is missing,
CheckAPInow detects manual/BepInEx installs via the presence of.v,.m, or current assemblies and records a sane InstalledState instead of leaving the toggle broken.
- When metadata is missing,
Developer Notes
- Version:
6.1.0.3 - Build & Tests:
dotnet buildsucceeds on .NET 10.0 with the default solution configuration; unit tests stay green when the Installer/ModDatabase services are exercised. - Cross-platform notes: Silksong detection now covers Windows, Linux (Steam/Flatpak), and macOS .app bundles without any extra config; API toggles behave whether you target HK, Silksong, or a manual BepInEx install.
Upgrade Notes
- Profiles: Choose the Silksong profile (or re-run
Switch Game) so Needlelight can auto-detect the right managed folder for Silksong-only installs. - macOS/Linux users: Point Needlelight at the
.appbundle or native.x86_64binary once; the new metadata will keep future launches stable. - API toggle: If the button still reports an error, rerun "Install Vanilla" to force Module resources to download from a validated manifest link.
v6.1.0.2
Needlelight v6.1.0.2 Release Notes!
Overview
v6.1.0.2 focuses on Silksong reliability, especially on macOS. It aligns every network endpoint and installer touchpoint with the new Silksong catalog, hardens fallback behaviour, and fixes the launcher so the Silksong app bundle starts correctly on macOS systems.
Major Items
- Silksong content routing
ModDatabasenow selects Silksong-specific ModLinks, API manifests, and vanilla Assembly JSON feeds with tiered fallbacks so API installs no longer hit 404 errors.- JSON parsing accepts per-game payloads and OS-specific keys, allowing the client to resolve the correct Assembly-CSharp package on macOS, Linux, and Windows.
- macOS launch stability
InfoViewModelresolves the managed folder back to the.app/Contents/MacOSdirectory, matching the actual Silksong bundle layout and eliminating "executable not found" failures when launching on macOS.
- API toggle resilience
- API fetches degrade gracefully with stub manifests when upstream sources are unavailable, keeping the Toggle API button responsive for both Hollow Knight and Silksong profiles.
Fixes & Improvements
- Needlelight/Services/ModDatabase.cs
- Added per-profile endpoint definitions, sequential fetch fallbacks, and resilient JSON traversal for assembly link discovery.
- Shared helper routines now emit warnings instead of crashing when endpoints time out and supply empty manifests as a safe fallback.
- Needlelight/ViewModels/InfoViewModel.cs
- Updated macOS path handling to anchor launches from the
.appbundle'sContents/MacOSfolder while preserving existing Steam detection logic. - Nullability adjustments keep compiler warnings at bay and highlight the resolved executable path explicitly.
- Updated macOS path handling to anchor launches from the
(If you prefer a single-line git-friendly changelist, I can provide git diff --name-only or a compact changelog.)
Developer Notes
- Version:
6.1.0.2 - Build & Tests:
dotnet buildsucceeds on .NET 9.0 without warnings; unit tests pass via the solution build. - Cross-platform notes: Silksong logic now respects per-OS manifests; Windows and Linux behaviour remains backward compatible.
Upgrade Notes
- Profiles: Switch to the Silksong profile and re-run the API toggle; Needlelight now downloads from the Silksong feeds automatically.
- macOS users: No manual bundle edits required; the launcher now targets the correct
Contents/MacOSexecutable. Re-launch Needlelight after updating to confirm. - Offline scenarios: Cached modlinks may be stale. Clear
%AppData%/HKModInstaller/Modlinks.xml(or the equivalent platform cache) to pick up the refreshed Silksong endpoints.
v6.1.0.1
Needlelight v6.1.0.1 Release Notes!
Overview
v6.1.0.1 is a focused regression fix that resolves bug #16 (Needlelight would not launch on macOS) by tightening the macOS app packaging script. PR #20 introduces sanity checks and corrected bundle assembly so native Mach-O binaries are preserved and executed correctly on macOS builds.
Major Items
- macOS bundle validation
make_mac_app.pynow inspects the published binary to ensure it is a Mach-O executable and warns if a Windows PE file is accidentally supplied. This prevents shipping “damaged or incomplete” app bundles on macOS.- Updated the ZIP assembly flow so the generated
Needlelight.appbundle embeds the native executable with the expectedrunshim and retains executable permissions, ensuring the launcher works out-of-the-box on macOS.
Fixes & Improvements
- Scripts/make_mac_app.py
- Added Mach-O magic number checks, PE detection safeguards, and corrected the logic for placing the published binary inside
Contents/MacOS. - Ensures both the launcher shim (
run) and the mainNeedlelightbinary are packaged with proper UNIX executable bits so macOS Gatekeeper recognizes the bundle.
- Added Mach-O magic number checks, PE detection safeguards, and corrected the logic for placing the published binary inside
(If you prefer a single-line git-friendly changelist, I can provide git diff --name-only or a compact changelog.)
Developer Notes
- Version:
6.1.0.1 - Build & Tests: local
dotnet buildsucceeds; unit tests pass. One pre-existing nullable conversion warning remains inInfoViewModel.cs. - Cross-platform notes: The packaging script change affects macOS release artifacts only; desktop runtimes for Windows/Linux remain unchanged.
Upgrade Notes
- macOS packaging: Regenerate the macOS release zip using
Scripts/make_mac_app.pyto pick up the new validation. The script now fails fast if the publish output is a Windows executable, avoiding broken macOS bundles. - Manual builds: When publishing for macOS, continue to use
dotnet publish -r osx-x64orosx-arm64to produce the native binary namedNeedlelightbefore invoking the script.
v6.1.0.0
Needlelight v6.1.0.0 Release Notes!
Overview
v6.1.0.0 continues the Needlelight rebrand and focuses on a UI polish and UX improvements by replacing the OS title bar with a custom, integrated application topbar. The update makes the app feel more cohesive, fixes startup/size issues found after v6.0.0.0, and tightens visual feedback for window controls.
Major Items
-
Frameless window configuration
MainWindow.axamlnow setsSystemDecorations="None"and usesExtendClientAreaToDecorationsHint/ExtendClientAreaChromeHintsto host chrome inside the client area.TransparencyLevelHintis set toAcrylicBlur,Blur,Transparentto allow native-looking blur where the OS/compositor supports it.
-
Custom window controls & behavior
- Click handlers for minimize / maximize/restore / close implemented in
MainWindow.axaml.cs. BeginMoveDragis used to implement dragging from the topbar while guarding interactive elements to avoid accidental drags.- Double-tap (double-click) on the topbar toggles maximize/restore.
- Window state changes update the maximize icon dynamically.
- Click handlers for minimize / maximize/restore / close implemented in
-
Short name mapping
GameNameShortenerConverterconverts long game names to compact labels for display in the topbar combo box.
-
Hover/transition polish
- Button transitions and hover/pressed styles are tuned in
Window.Stylesso the window control buttons feel snappy and consistent with the app theme.
- Button transitions and hover/pressed styles are tuned in
Fixes & Improvements
-
Needlelight/Views/Windows/MainWindow.axaml
- Replaced system chrome with frameless configuration, added the custom topbar layout, resources and styles for window control buttons, and reduced the game selector width.
-
Needlelight/Views/Windows/MainWindow.axaml.cs
- Implemented button click handlers (Minimize/Maximize/Close), topbar dragging/double-click behavior, maximize icon updates, and
OnOpenedmaximize fix.
- Implemented button click handlers (Minimize/Maximize/Close), topbar dragging/double-click behavior, maximize icon updates, and
-
Needlelight/Util/GameNameShortenerConverter.cs
- New lightweight converter that shortens "Hollow Knight Silksong" to
HK : Silksongin the topbar ComboBox display.
- New lightweight converter that shortens "Hollow Knight Silksong" to
(If you prefer a single-line git-friendly changelist, I can provide git diff --name-only or a compact changelog.)
Developer Notes
- Version:
6.1.0.0 - Build & Tests: local
dotnet buildsucceeded; unit tests ran during validation and passed. There remains one nullable conversion warning inInfoViewModel.csthat predates these changes. - Cross-platform notes: the implementation uses Avalonia APIs and should work on Windows, macOS and Linux. Visual effects (Acrylic/Blur) depend on the platform compositor. Behavior like
BeginMoveDragis supported cross-platform with minor differences in edge cases.
Upgrade Notes
-
Frameless chrome is a UI change only. If you need native OS chrome for a target distribution (e.g., packaged for a platform where native title bar is required), you can revert to native decorations by setting
SystemDecorations="Full"and removing theExtendClientArea*hints fromMainWindow.axaml. -
Transparency/Acrylic: to disable blur/alpha on specific targets, remove or change
TransparencyLevelHintinMainWindow.axaml. The app providesTransparencyBackgroundFallbackso colors remain correct if blur/alpha isn't available. -
Game name mapping: the short-name mapping lives in
GameNameShortenerConverter; edit it if you prefer a different label (for exampleHK - Silksonginstead ofHK : Silksong).
v6.0.0.0
Needlelight v6.0.0.0 Release Notes!
Overview
This release (v6.0.0.0) is primarily a rebrand and a cleanup/quality-of-life release: Needlelight replaces the previous Lumafly identity, in-app auto-update was removed, update UI was simplified, and several packaging/CI and asset changes were made so releases are easier to manage and safer for users.
The most notable user-facing changes are:
- Rebrand from Lumafly → Needlelight (name, icon, and banner).
- In-app auto-update removed and the update appcast disabled (see notes).
- UI: update-related controls removed from the Mod list and the launcher banner/buttons were visually refined.
Major Items
-
Rebrand: Project and UI strings updated to
Needlelight. App icon (Assets/Needlelight.ico) and launcher banner (Assets/banner.png) were replaced; originals moved torebrand/backup. -
Remove Auto-Update: The NetSparkle-based auto-update implementation and UI affordances were removed. The concrete
AppUpdaterwas replaced with a no-op stub implementing the existingIAppUpdaterinterface to keep dependency injection and callers intact while disabling auto-update behavior. -
Appcast / CI: The appcast (
appcast.xml) was simplified/disabled and the CI job that generated/published the appcast was removed.Scripts/make_appcast.pywas updated to reflect the new default and to document that auto-updates are not active. -
UI tweaks: launcher buttons (Launch Vanilla / Launch Modded) were made primary (rounded, accent color), the banner spacing was increased to avoid overlap with buttons, and the per-mod toggle was moved closer to the install/uninstall button in the Mods list for easier access.
Fixes & Improvements
- Removed NetSparkle/Avalonia update packages and references from the main project to avoid shipping unused update frameworks.
- Replaced
Services/AppUpdater.cswith a minimal no-op implementation that preserves theIAppUpdatercontract. - Updated
ModListView.axamlandInfoView.axamlto remove update UI controls and to adjust layout and spacing. - Reworked
Scripts/make_appcast.pyandappcast.xmlto reflect that in-app auto-update is disabled; the generated feed now points to the Releases page and is marked as disabled. - CI: removed the
create-appcastjob from the GitHub Actions workflow to stop publishing appcast artifacts. - Assets: replaced
Needlelight/Assets/Needlelight.icoandNeedlelight/Assets/banner.pngwith rebrand assets; originals moved torebrand/backupand the new sources were added underrebrand/newduring the rebrand flow.
Developer Notes
-
Version:
6.0.0.0 -
Build & Tests: solution builds successfully (one nullable warning remains) and unit tests pass (project reports all tests green during the change validation performed locally).
-
Key files changed (high level):
Needlelight/Needlelight.csproj— bumped<Version>to6.0.0.0and removed NetSparkle package references.Needlelight/Services/AppUpdater.cs— replaced NetSparkle implementation with no-op stub.Needlelight/Views/Pages/ModListView.axaml— removed update controls; adjusted toggle/install layout.Needlelight/Views/Pages/InfoView.axaml— replaced banner/launcher layout and styled launcher buttons.Scripts/make_appcast.py— updated defaults and noted disabled auto-update.appcast.xml— simplified/disabled feed entry for v6.0.0.0..github/workflows/build.yml— removed the appcast generation/publish job.
Upgrade Notes
-
Auto-update removal: Users must update manually from the project's Releases page going forward. The app will no longer check for updates or download them in-app.
-
Rebrand assets: If you distribute a rebranded installer or packages, ensure the new
Needlelight.icoand banner are included. Original assets were preserved inrebrand/backup/in case you need to restore them. -
CI and appcast: If you want to re-enable automatic appcast generation/publishing, restore the
create-appcastjob in the workflow and re-introduce a safe appcast generation flow; by default the project now expects manual release publishing via GitHub Releases.
v5.1.0.4
LumaflyV2 v5.1.0.4 Release Notes!
Overview
Hotfix addressing two high-priority platform issues reported by users: macOS app bundles being rejected as "damaged or incomplete" and the Linux launcher failing to start native or Proton-installed Hollow Knight / Silksong.
Major Items
-
macOS: Hardened packaging and added diagnostics to help identify incorrectly-packaged Windows binaries and explain how to publish a proper macOS Mach-O build. The packager now refuses to create a mac .app from a Windows PE and warns when the publish artifact does not look like a Mach-O binary.
-
Linux: Improved executable resolution so Lumafly prefers native (no-extension) game executables on Unix-like systems and falls back to configured
.exenames for Proton/Steam installs. This resolves cases where Lumafly previously attempted to launch*.exefilenames on Linux when a native binary was present.
Fixes & Improvements
- Fixed: Issue #4 — macOS: avoid packaging Windows executables into
.appbundles and provide clear, actionable error messages when the publish artifact is not a macOS binary. - Fixed: Issue #6 — Linux: resolve and prefer native game executables (no
.exe) for Hollow Knight and Silksong;.exevariants are still tried as fallbacks for Proton/Wine installations. - Improved packaging script
Scripts/make_mac_app.pyto detect Windows PE headers and detect common Mach-O/fat binary headers; added user-facing guidance when mismatches are found. - Improved launch error messages to list the candidate paths tried when a game executable cannot be found.
Developer Notes
- Version:
5.1.0.4(hotfix) - Key files changed:
Lumafly/ViewModels/InfoViewModel.cs— executable resolution and error diagnostics (prefer native binaries on Unix-like OSes).Scripts/make_mac_app.py— mac packaging sanity checks to prevent creating broken.appbundles from non-mac publish artifacts.
Upgrade Notes
- macOS: Replace the
.appbundle with the updated one produced by the new packaging script if you experienced the "damaged or incomplete" error. Ensure you publish a macOS build (RIDosx-x64orosx-arm64) and place the nativeLumaflyV2binary in the publish folder before runningmake_mac_app.py. - Linux: No user action required; the launcher now finds native binaries. If you still encounter failures, collect the tried paths from the error dialog and open a new issue with those paths and
ls -laoutput of your game folder.
v5.1.0.3
LumaflyV2 v5.1.0.3 Release Notes!
Overview
Follow-up hotfix addressing macOS launch diagnostics and clarifying Windows runtime requirements.
Major Items
-
macOS: Added further diagnostics and packaging tweaks to improve
.applaunch reliability. If users still see "can't be opened" or silent exits, collect the logs described in the README and open an issue. -
Windows: Reiterated that Lumafly expects a Hollow Knight install path; Silksong-only users should follow README simulation steps to test.
Fixes & Improvements
- Adjusted
Info.plistto match packaged executable name and documented verification steps for macOS. - Documentation updates clarifying recommended troubleshooting steps for macOS and Windows.
Developer Notes
- Version:
5.1.0.3(packaging/diagnostics only). - No runtime logic changes affecting mod installation behavior.
Upgrade Notes
- macOS: replace the
.appbundle with the updated one if you experienced problems. - Windows: no action required unless you rely on Silksong-only detection.
v5.1.0.2
LumaflyV2 v5.1.0.2 Release Notes!
Overview
Maintenance release shipping two targeted items: the macOS .app launch fix (issue #2) and clarification about Windows-only behavior when Hollow Knight is not installed (issue #4).
Major Items
-
macOS launch fix (#2)
- Fixed
.apppackaging so the executable is correctly placed underContents/MacOSand has executable permissions. This resolves the error "The application 'Lumafly' can't be opened" on macOS.
- Fixed
-
Windows requirement clarification (#4)
- Note: On Windows, Lumafly requires a Hollow Knight installation path to run its game-aware features. If Hollow Knight is not installed, Lumafly may refuse to run or show an error; users with Silksong-only installs should follow the Silksong simulation instructions in the README to allow auto-detection and testing.
Fixes & Improvements
- Ensure macOS
.appbundles include the executable atContents/MacOSwith executable bit set. - Clarified in-app messaging and settings detection so users see accurate instructions when the expected game folders are missing.
Developer Notes
- Version:
5.1.0.2(packaging & UX fixes). - Changes are packaging and detection behavior only — no gameplay-affecting runtime logic was changed.
Upgrade Notes
- macOS: replace old
.appwith the updated one if you experienced the "can't be opened" error. - Windows: if you have only Silksong installed, either point Lumafly to the Silksong managed folder in settings or use the Silksong simulation steps in the README to test; this release clarifies behavior but does not add Silksong-only automatic startup.
v5.1.0.1
LumaflyV2 v5.1.0.1 Release Notes!
Overview
Hotfix release that adds published SHA‑256 checksums to releases. No app runtime code changes.
Major Features
- Published SHA‑256 Checksums
Releases now includeSHA256SUMS.txtcovering all uploaded files (LumaflyV2.exe,LumaflyV2.AU.exe,LumaflyV2-Windows.zip,LumaflyV2-MacOS.zip,LumaflyV2-Linux.zip).
Fixes & Improvements
- Release packaging updated to generate and attach
SHA256SUMS.txtso users can verify downloads.
Developer Notes
- Version:
5.1.0.1(packaging/docs only). - No code changes; artifacts unchanged except for the additional checksum file.
Upgrade Notes
- No action required. Safe to update from v5.1.0.0.
v5.1.0.0
LumaflyV2 v5.1.0.0 Release Notes!
Overview
This release upgrades the app to .NET 9.0, finalizes the rename to LumaflyV2 across the executable and window title, ensures the Windows app icon is applied correctly, and updates CI/build scripts accordingly. Functionality remains the same as v5.0.0.0 with performance and longevity improvements from the runtime update.
Major Features
- Runtime Upgrade to .NET 9.0
Faster startup and improved platform support with the latest .NET runtime. - Branding & Executable Name
App binary and metadata are now consistently named:LumaflyV2(LumaflyV2.exeon Windows). Window title and product metadata updated. - Windows Icon Restored
Valid application icon wired viaAssets/Lumafly.ico. - CI/Build Updates
Workflows and scripts now targetnet9.0for Windows, Linux, and macOS.- Linux: publish uses
net9.0/linux-x64and the binary isLumaflyV2; packaging chmod/zip paths updated. - macOS: publish uses
net9.0/osx-x64;make_mac_app.pynow expectsLumaflyV2and injects it asContents/MacOS/run.
- Linux: publish uses
Fixes & Improvements
- Auto‑Updater build resilience: embedding of
LumaflyV2.exeis now conditioned, preventing local build failures; CI supplies the binary during release. - Removed legacy
net7.0targeting; projects now targetnet9.0only. - Polished docs and metadata to reflect the new name and runtime.
- Linux/macOS pipeline fixes: switched setup-dotnet to
9.0.x, corrected artifact paths and names toLumaflyV2.
Developer Notes
- Version:
5.1.0.0(set inLumafly/Lumafly.csproj). - Target Framework:
net9.0for app, tests, and AU. Requires .NET SDK 9.0.x. - Executable:
LumaflyV2(.exeon Windows). - Icon:
Assets/Lumafly.icovia<ApplicationIcon>in the csproj. - CI: GitHub Actions workflow now triggers on version tags (e.g.
v5.1.0.0) and publishes single‑file, self‑contained artifacts per OS.
Upgrade Notes
- No data migration required from v5.0.0.0; settings are preserved.
- If you have shortcuts/scripts pointing to
Lumafly.exe, update them toLumaflyV2.exe. - Download the platform zip from the release page or use the standalone
LumaflyV2.exeon Windows.