Releases: a1ex4/ownfoil
2.3.0
Clients support
This release adds Ownfoil compatibility with all homebrew apps that support remote backup installation, and are actively supported and maintained. Up to now Ownfoil has always been Tinfoil centric as it is the client that supports most features and implements the best security, but now multi-client support has been added and it will easier to add specific client features in the future (like backuping saves, dumps...).
Each client has specific settings and can be enabled / disabled, and the Setup page in the UI will now display instructions on how to configure the enabled clients, as well as the features supported.
Warning
If you host a public shop with Tinfoil's encryption enabled, and you do not want people to be able do download your entire shop outside of a Switch device, you should disable all other clients. Enabling an other client will render the encryption feature useless, as they do not support encryption themselves.
Path based filtering
For clients that supports it, you can now add /base, /update, /dlc, /multi to the URL to filter what content is served by the shop.
What's Changed
New Features
- Add support for clients other than Tinfoil by @a1ex4 in #290
- Add Sphaira support by @a1ex4 in #291
- Add Setup page with homebrew setup instructions by @a1ex4 in #292
- Add CyberFoil support by @a1ex4 in #304
- feat: keep track of download count by @a1ex4 in #305
Fixes and Improvements
Dependencies
- build(deps): bump werkzeug from 3.1.5 to 3.1.6 by @dependabot[bot] in #294
- build(deps): bump flask from 3.1.2 to 3.1.3 by @dependabot[bot] in #295
- build(deps): bump unzip-http from 0.6 to 0.7 by @dependabot[bot] in #296
- build(deps): bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #298
- build(deps): bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #299
- build(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #300
- build(deps): bump docker/metadata-action from 5 to 6 by @dependabot[bot] in #301
- build(deps): bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #302
Issues fixed
- Reset hauth when domain is changed #204
Full Changelog: 2.2.1...2.3.0
2.2.1
This version is a bug fix release, that also improves the Organizer for people accessing their library with Windows.
What's Changed
Fixes and Improvements
- improv(organizer): add option to enforce Windows filename sanitizing by @a1ex4 in #285
- fix(organizer): Fix organizer not working in scheduled jobs by @a1ex4 in #286
- fix(library): title with no owned app not deleted if files are removed when app is not running by @a1ex4 in #287
Dependencies
Issues fixed
- Forbidden characters with organizer. #251
- Organizer: add option to force Windows compatible filenames #284
Full Changelog: 2.2.0...2.2.1
2.2.0
This release continues to focus on library management improvements and features, robustifying the backend code and making needed changes for future implementations. There are also bug fixes in the UI, library management code and in Tinfoil displaying the titles incorrectly.
Library Organizer
You can now configure Ownfoil to automatically organize your library: all identified files will be renamed and organized according to the settings. The templates can be configured from the Settings page in the Web UI:

Some additional features of the organizer to tidy up your library:
- automatically delete older updates
- delete empty folders after library organization
Console keys management
As requested by users, the console keys revisions are now individually verified by Ownfoil and available to review in the Settings page. You can now see if you are missing newer revisions, or if one key happens to be invalid:

When the specific key required to open a file is missing, Ownfoil now tracks the key in the file's identification status.
Scheduler improvements
The scheduler has been improved to allow the configuration of periodic jobs in the UI, as well as enabling/disabling them:

This now makes it very easy to add periodic tasks in the backend, configure them using the UI.
Performance improvements
By only opening the sections containing metadatas, the file identification is now 2x to 10x times faster.
In this release the docker image has been updated to use Python 3.14, which greatly improves the speed of execution of Ownfoil.
What's Changed
New Features
- Add automated library management by @a1ex4 in #229
- Console keys management: add invalid/missing revisions in UI by @a1ex4 in #280
- Improve scheduler to support configurable period and enabling/disabling jobs from settings by @a1ex4 in #281
- Add Ownfoil logo by @a1ex4 in #283
Fixes and Improvements
- Speed up file identification by only reading metadata sections by @a1ex4 in #232
- fix: special characters in password validation by @Kratemis in #236
- Fix filter and searching by @Sab44 in #241
- Fix tinfoil games by @a1ex4 in #247
- Organizer: Prevent forbidden characters in filenames by @garlik82 in #256
- Fix: Add "owned" flag to DLCs and fix false-positive "Up to date" pills by @HarleyBartles in #254
- Fix encoding when reading TitleDB files by @a1ex4 in #282
Dependencies
- build(deps): bump actions/setup-python from 5 to 6 by @dependabot[bot] in #227
- build(deps): bump actions/stale from 9 to 10 by @dependabot[bot] in #228
- Migrate from NSTools to nsz by @a1ex4 in #231
- build(deps): bump zstandard from 0.24.0 to 0.25.0 by @dependabot[bot] in #238
- build(deps): bump python from 3.11-alpine to 3.13-alpine by @dependabot[bot] in #130
- build(deps): bump pyyaml from 6.0.2 to 6.0.3 by @dependabot[bot] in #245
- build(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #267
- build(deps): bump actions/upload-artifact from 4 to 6 by @dependabot[bot] in #269
- build(deps): bump werkzeug from 3.1.3 to 3.1.5 by @dependabot[bot] in #273
- build(deps): bump python from 3.13-alpine to 3.14-alpine by @dependabot[bot] in #249
Issues fixed:
- Special Characters in Password - Auth Failure #105
- Display the console keys revision in the UI and detect when new revision is needed for file indentification #205
- In tinfoil no game title is present #239
- Error preventing the rest of the folder scanning #246
- Forbidden characters with organizer. #251
- Feature suggestion: Add option to set interval/disablement for automatic library scan #270
- Error when launching - UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 58879 #277
New Contributors
- @Kratemis made their first contribution in #236
- @Sab44 made their first contribution in #241
- @garlik82 made their first contribution in #256
Full Changelog: 2.1.3...2.2.0
2.1.3
What's Changed
This releases fixes the only remaining issue from the v2.1 changes on Web library view caching. It prevents the cached library file from being corrupted, with atomic and thread safe write of the json file. Library disappearing from the Web UI should no longer happen.
The loading of TitlesDB into memory has also been optimized.
Fixes and Improvements
Dependencies
- build(deps): bump flask from 3.1.1 to 3.1.2 by @dependabot[bot] in #225
Fixed issues
- ownfoil latest ver. crashes on unraid #210
Full Changelog: 2.1.2...2.1.3
2.1.2
What's Changed
This release fixes several issues with library scans, database migration and file content identification. It should be much more reliable and robust when multiple files are added rapidly in your libraries.
Fixes and Improvements
- Fix library scan concurrency between scheduler and manually scanning from the UI by @a1ex4 in #217
- Fix TitleDB was not loaded if multiple identification tasks are called within 30s by @a1ex4 in #218
- improv(ui): allow upload of new keys file in the UI even if console keys are valid (#205) by @a1ex4 in #219
- fix(db): fix database migration from previous schema missing the Files table (#209) by @a1ex4 in #220
Dependencies
- build(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #213
- build(deps): bump requests from 2.32.4 to 2.32.5 by @dependabot[bot] in #214
- build(deps): bump zstandard from 0.23.0 to 0.24.0 by @dependabot[bot] in #215
Issues fixed
- Unloads TitleDB before update #206
- Error in database hash computation #207
- Migration failure (drop table files). #209
- Unable to complete scan of games directory #221
Full Changelog: 2.1.1...2.1.2
2.1.1
2.1.0
What's Changed
New Features
- feat: Major database schema refactor (#195)
- Migrated from single table to normalized database schema with Libraries, Files, Apps, and Titles tables
- support database migration system with automatic backups
- Better separation of file management and title identification
- File identification status, errors, number of attempts and last attempt date now tracked (to support #158 and #168)
- Multi-content file support (#19, #121, #153)
- Improved ownership tracking with separate Apps table for missing/owned status (to support #22, #178)
- Show missing BASE / DLC in the UI with a yellow badge
- #109 - Persist library view settings using local storage by @HarleyBartles in #192
- feat: add Scheduler to execute periodic tasks in the background by @a1ex4 in #196
Fixes and Improvements
- Persist Data Directory to Disk by @HarleyBartles in #194
- Fix Slow Library Generation on Startup by @HarleyBartles in #193
- fix: prevent multiple library scans running at the same time by @a1ex4 in #198
Other Changes
- ci: improve development and release workflow to support semantic versioning by @a1ex4 in #197
- refactor: change cache dir from /config to /data by @a1ex4 in #199
Dependencies
- build(deps): bump flask from 3.1.0 to 3.1.1 by @dependabot[bot] in #187
- build(deps): bump requests from 2.32.3 to 2.32.4 by @dependabot[bot] in #188
- build: update NSTools to version 1.2.3 by @a1ex4 in #200
Issues fixed
- split nsp files #19
- Persist library view settings #109
- Support multi content XCI file #121
- Hangs at Updating titledb... #185
- Can you add release numbers? #189
- Library disappears #190
New Contributors
- @HarleyBartles made their first contribution in #192
Full Changelog: 2.0.0...2.1.0
2.0.0
1.2.3: saves manager fixes
Fix to Saves manager when files need to be retrieved from subfolder, see PR #42
Thanks @CortezSMz for the fix!
What's Changed
- build(deps): bump actions/checkout from 3 to 4 by @dependabot in #34
- build(deps): bump docker/build-push-action from 4 to 5 by @dependabot in #37
- build(deps): bump docker/setup-qemu-action from 2 to 3 by @dependabot in #38
- build(deps): bump docker/login-action from 2 to 3 by @dependabot in #39
- build(deps): bump docker/setup-buildx-action from 2 to 3 by @dependabot in #40
- build(deps): bump docker/metadata-action from 4 to 5 by @dependabot in #45
- fix(save_manager): traverse remote folders with recursion by @CortezSMz in #42
New Contributors
- @CortezSMz made their first contribution in #42
Full Changelog: 1.2.2...1.2.3
Release 1.2.2: permission fix
Quick release to fix permission problems with user already existing in the base docker image