Jann Stute
cc78c1abb9
refactor: rewrite migration procedure as loop
2026-07-06 16:29:46 +02:00
Jann Stute
e383cab402
refactor: update version after every successfull migration
...
Since every migration migrates the library to a certain DB_VERSION, we can simply update the library version after such a successfull migration.
This way if a migration fails, the previous migrations won't be rerun the next time the library is opened.
2026-07-06 16:14:39 +02:00
Jann Stute
eb41ed0eb9
refactor: move assurance 1 to a proper migration method
...
Moving the assurance after the migrations 7, 8, 9, and 100 is fine because it doesn't affect those.
2026-07-06 15:46:13 +02:00
Jann Stute
f4f33b0e01
refactor: add assurance 3 to DB 200 migration
2026-07-06 15:35:34 +02:00
Jann Stute
6679bb92fb
refactor: add version check for assurance 3
...
Assurance 3 was introduced in commit 47c3d5338f
shortly (24h 20min) after the DB version had been bumped to 200.
Since it was also included in the first release with DB version 200,
all libraries created on DB version 200 and above
can be presumed to have already had this applied on creation.
2026-07-06 15:30:56 +02:00
Jann Stute
67fe77a67c
refactor: move engine creation to static method
2026-07-06 15:21:20 +02:00
Jann Stute
4a8d404905
refactor: massively simplify open_library
2026-07-06 15:13:48 +02:00
Jann Stute
804bb89b91
refactor: move folder assurance after migrations
...
The folder assurance has been present since the very first SQL commit e5e7b8afc6 ,
and thus only has an effect when the library is moved, meaning that is semantically not part of the migrations.
2026-07-06 14:49:00 +02:00
Jann Stute
a7985b971a
refactor: remove unnecessary check in new_lib
2026-07-06 14:32:41 +02:00
Jann Stute
fda10ec67c
refactor: remove various unnecessary try-except statements in new_lib
...
All of these were introduced to account for the differences between new libraries and existing ones,
which makes them unnecessary after this split.
2026-07-06 14:28:52 +02:00
Jann Stute
db520890a2
refactor: add assurance 1 version check
...
Assurance 1 was introduced with library version 101, specifically commmit 12e074b71d .
Thus all libraries created on version 101 and above already fullfill it and don't need it.
Furthermore, it only fails if the library didn't need the assurance, meaning the try-except and warning catching can be removed
2026-07-06 14:17:31 +02:00
Jann Stute
6266ba7a06
doc: add todos and remove trivially true assert
2026-07-06 13:57:05 +02:00
Jann Stute
bdc8e4b59d
refactor: remove dead code
2026-07-06 01:16:41 +02:00
Jann Stute
02a9295743
refactor: split open_library into new and not new case
...
Functionality is entirely unchanged, but entire method is duplicated.
Removing dead code from either copy is next.
2026-07-06 01:07:50 +02:00
Jann Stute
194b2b82cc
refactor: minor simplification
2026-07-06 01:01:14 +02:00
purpletennisball
85a51f8e2b
feat(ui): organize settings into panels ( #1425 )
...
* feat(ui): organize settings into new panels
* fix: typo
* fix(ui): add localization for setting panels
* fix(ui): move language to localization panel
2026-07-04 17:39:13 -07:00
Travis Abendshien
34814e8723
fix: fix "search for tag" function in tag manager ( #1411 )
...
* fix: set driver for tag manager
* refactor(ui): require titles for TagSearch widgets
2026-07-04 13:35:51 -07:00
Travis Abendshien
95e2fe7b44
fix: remove invalid child_id relationships from tag_parents ( #1423 )
...
* fix: remove invalid child_id relationships from tag_parents
* fix: use single statements in DB 102 & 202 migrations
* fix: remove unnecessary session.scalars() from migrations
2026-07-04 13:35:40 -07:00
purpletennisball
83473379db
feat: on click edit tag while in tag manager ( #1416 )
2026-07-04 13:13:53 -07:00
Travis Abendshien
5af3cc4faf
docs: update library-changes
2026-07-03 10:15:35 -07:00
Andreas Heglingegård
4a543396ae
fix: use optimized SQL when selecting non-hidden entries ( #1240 )
2026-07-02 16:38:29 -07:00
Jann Stute
3ffa012857
fix: make tagstudio python package executable ( #1414 )
...
* fix: make tagstudio python package executable by adding stub __main__.py
* fix: add license note + set exec bit
* Update src/tagstudio/__main__.py
Co-authored-by: Xarvex <60973030+xarvex@users.noreply.github.com >
---------
Co-authored-by: Xarvex <60973030+xarvex@users.noreply.github.com >
2026-07-02 21:44:03 +02:00
Jann Stute
00b6f918f3
fix(nix): add pyright to devshell ( #1415 )
...
---------
Co-authored-by: Xarvex <dev.ellz6@xarvex.simplelogin.com >
2026-07-02 14:15:32 -05:00
Travis Abendshien
7c1c1dd6ae
fix: fix issues with tag alias updating ( #1412 )
2026-07-02 20:16:35 +02:00
Travis Abendshien
d7918fd82c
tests: filter irrelevant SQLAlchemy or_() warning
2026-07-01 23:20:45 -07:00
Travis Abendshien
c062f6b6bd
build: relax Send2Trash version
2026-07-01 23:20:03 -07:00
Travis Abendshien
26e04e829c
docs: update roadmap
2026-07-01 21:37:50 -07:00
Travis Abendshien
4d49e9c270
translations: translate language names
2026-07-01 21:37:16 -07:00
Travis Abendshien
daaae17113
tests: filter irrelevant SQLAlchemy DISTINCT ON warning spam
2026-06-30 14:17:05 -07:00
Xarvex
c38fbb034d
chore(nix): relax more dependencies
...
fixes : #1403
2026-06-30 12:51:39 -05:00
Travis Abendshien
0433908ae8
refactor: remove QPushButtonWrapper
2026-06-30 02:22:48 -07:00
Travis Abendshien
9e04922e7b
fix(docs): fix header levels in changelog
2026-06-29 14:36:10 -07:00
Travis Abendshien
c6f2e3c7d1
docs: update changelog
2026-06-29 14:33:56 -07:00
Travis Abendshien
4e93e953d9
chore: fix missing ext in REUSE.toml
v9.6.0
2026-06-29 13:30:43 -07:00
Travis Abendshien
008cef363d
chore: remove REUSE comments from PULL_REQUEST_TEMPLATE.md and FUNDING.yml
2026-06-29 13:29:12 -07:00
Travis Abendshien
727f441c55
fix(ci): bump pyinstaller version to 6.21
2026-06-29 13:25:07 -07:00
Travis Abendshien
e327dc7ee1
chore: bump version to v9.6.0
2026-06-29 11:56:39 -07:00
Weblate (bot)
8eded29f45
translations: update from Hosted Weblate ( #1401 )
...
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Translated using Weblate (Russian)
Currently translated at 97.0% (362 of 373 strings)
Co-authored-by: Dott-rus <antonamelin8@gmail.com >
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/ru/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Translated using Weblate (Portuguese)
Currently translated at 87.1% (325 of 373 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Co-authored-by: ssantos <ssantos@web.de >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/pt/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Translated using Weblate (Hungarian)
Currently translated at 100.0% (373 of 373 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Co-authored-by: Szíjártó Levente Pál <szijartoleventepal@gmail.com >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/hu/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
* Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/
Translation: TagStudio/Strings
---------
Co-authored-by: Dott-rus <antonamelin8@gmail.com >
Co-authored-by: ssantos <ssantos@web.de >
Co-authored-by: Szíjártó Levente Pál <szijartoleventepal@gmail.com >
2026-06-29 11:55:44 -07:00
Travis Abendshien
a01b5c423b
chore: format with ruff
2026-06-29 11:55:01 -07:00
Ludvig Sandh
a865573c4b
fix: fix off-by-one issues in progress bars ( #1293 )
...
* fix: faulty progress bar
The progress bar UI element always showed 1 step ahead of what it supposed to, also causing the last step to display a visual glitch (empty window)
* fix: corrected drop import progress bar text
* fix: corrected relink progress bar
Update progress bar at the beginning of the relink iteration instead of the end, which previously showed incorrect progress text and an empty window during the first iteration.
* fix: corrected 'refresh ignore entries' progress bar
Update progress bar at the beginning of the refresh loop iteration instead of the end, which previously showed incorrect progress text and an empty window during the first iteration.
* fix: corrected 'refresh unlinked' progress bar
Update progress bar at the beginning of the refresh loop iteration instead of the end, which previously showed incorrect progress text and an empty window during the first iteration.
* fix: corrected 'mirror entries' progress bar
Same as last commit
* fix: Unknown key in 'mirror entries' progress bar text (translation formatting)
* fix: corrected 'merge duplicates' progress bar
Note: Seems like this bar is never used in the UI. But if it is in the future, this fixes it just like the other progress bars.
2026-06-29 11:53:14 -07:00
Sola-ris
6005129003
feat: allow all raster images to be used as archive thumbnails ( #1373 )
2026-06-29 11:31:01 -07:00
Travis Abendshien
f44662296f
fix(ui): fix thumb res setting not updating during runtime
2026-06-29 10:33:44 -07:00
Travis Abendshien
0fa15ce18e
fix(ui): fix settings not saving, expose cached thumb size setting
2026-06-29 10:20:00 -07:00
Travis Abendshien
41024260de
fix(ui): fix incorrect size hints in about modal
2026-06-29 02:36:16 -07:00
Travis Abendshien
fca21bf5fa
fix(ui): use is_version_outdated() method in about modal
2026-06-29 02:27:53 -07:00
Travis Abendshien
6b15beefbd
feat: dismiss update notification, change missing ffmpeg popup to banner ( #1400 )
...
* feat: dismiss update notification, change ffmpeg to banner
* chore: sort resources.pyi list
* fix: remove unused asset
* refactor: rename dismiss_update()
* fix: remove *other* unused asset
2026-06-29 02:18:45 -07:00
Weblate (bot)
4919c972da
translations: update using Weblate (Hungarian) ( #1395 )
...
Currently translated at 100.0% (373 of 373 strings)
Translate-URL: https://hosted.weblate.org/projects/tagstudio/strings/hu/
Translation: TagStudio/Strings
Co-authored-by: Szíjártó Levente Pál <szijartoleventepal@gmail.com >
2026-06-28 23:07:24 -07:00
Travis Abendshien
e509e247d5
fix: fix tag aliases ( #1399 )
...
* fix: fix tag aliases
* chore: remove logger statements from tag panel test
* chore: very important fix
* chore: remove commented-out code
2026-06-28 23:06:40 -07:00
Travis Abendshien
4da6037cbd
docs: update misc docs
2026-06-28 22:48:36 -07:00
Travis Abendshien
0d87307f38
fix(docs): don't use symlinked image for README
2026-06-28 01:55:50 -07:00