Skip to content

Commit 0d0f3cb

Browse files
committed
Merge remote-tracking branch 'upstream/main' into test
2 parents fac0c8d + 9e0c4f3 commit 0d0f3cb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1525
-596
lines changed

.github/workflows/pytest.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on: [ push, pull_request ]
55
jobs:
66
pytest:
77
name: Run tests
8-
runs-on: ubuntu-22.04
8+
runs-on: ubuntu-24.04
99

1010
steps:
1111
- name: Checkout repo
@@ -20,11 +20,12 @@ jobs:
2020
- name: Install system dependencies
2121
run: |
2222
# dont run update, it is slow
23-
# sudo apt-get update
23+
sudo apt-get update
2424
sudo apt-get install -y --no-install-recommends \
2525
libxkbcommon-x11-0 \
2626
x11-utils \
2727
libyaml-dev \
28+
libgl1 \
2829
libegl1 \
2930
libxcb-icccm4 \
3031
libxcb-image0 \

CONTRIBUTING.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Contributing to TagStudio
22

3-
_Last Updated: November 19th, 2024_
3+
_Last Updated: December 12th, 2024_
44

55
Thank you so much for showing interest in contributing to TagStudio! Here are a set of instructions and guidelines for contributing code or documentation to the project. This document will change over time, so make sure that your contributions still line up with the requirements here before submitting a pull request.
66

@@ -14,6 +14,7 @@ Thank you so much for showing interest in contributing to TagStudio! Here are a
1414
- Check the [Feature Roadmap](/docs/updates/roadmap.md) page to see what priority features there are, the [FAQ](/README.md/#faq), as well as the open [Issues](https://github.com/TagStudioDev/TagStudio/issues) and [Pull Requests](https://github.com/TagStudioDev/TagStudio/pulls).
1515
- If you'd like to add a feature that isn't on the feature roadmap or doesn't have an open issue, **PLEASE create a feature request** issue for it discussing your intentions so any feedback or important information can be given by the team first.
1616
- We don't want you wasting time developing a feature or making a change that can't/won't be added for any reason ranging from pre-existing refactors to design philosophy differences.
17+
- **Please don't** create pull requests that consist of large refactors, *especially* without discussing them with us first. These end up doing more harm than good for the project by continuously delaying progress and disrupting everyone else's work.
1718
- If you wish to discuss TagStudio further, feel free to join the [Discord Server](https://discord.com/invite/hRNnVKhF2G)
1819

1920
### Contribution Checklist
@@ -150,9 +151,6 @@ Most of the style guidelines can be checked, fixed, and enforced via Ruff. Older
150151

151152
### Commit and Pull Request Style
152153

153-
> [!CAUTION]
154-
> Please do not close and re-open pull requests. This makes it **much** more difficult to re-pull during reviews. If you would like to signal that your pull request is not ready, please mark is as a draft instead.
155-
156154
- Use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0) as a guideline for commit messages. This allows us to easily generate changelogs for releases.
157155
- See some [examples](https://www.conventionalcommits.org/en/v1.0.0/#examples) of what this looks like in practice.
158156
- Use clear and concise commit messages. If your commit does too much, either consider breaking it up into smaller commits or providing extra detail in the commit description.

README.md

Lines changed: 67 additions & 88 deletions
Large diffs are not rendered by default.

docs/assets/db_schema.png

-138 KB
Binary file not shown.
54 KB
Loading

docs/assets/screenshot.jpg

319 KB
Loading

docs/help/ffmpeg.md

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,51 @@
33
FFmpeg is required for thumbnail previews and playback features on audio and video files. FFmpeg is a free Open Source project dedicated to the handling of multimedia (video, audio, etc) files. For more information, see their official website at [ffmpeg.org](https://www.ffmpeg.org/).
44

55
## Installation on Windows
6+
67
### Prebuilt Binaries
7-
Pre-built binaries from trusted sources are available on the [FFmpeg website](https://www.ffmpeg.org/download.html#build-windows). To install:
8+
9+
Pre-built binaries from trusted sources are available on the [FFmpeg website](https://www.ffmpeg.org/download.html). Under "More downloading options" click on the Windows section, then under "Windows EXE Files" select a source to download a build from. Follow any further download instructions from whichever build website you choose.
10+
11+
![Windows Download Location](../assets/ffmpeg_windows_download.png)
12+
13+
!!! note
14+
Do NOT download the source code by mistake!
15+
16+
To Install:
817

918
1. Download 7z or zip file and extract it (right click > Extract All)
1019
2. Move extracted contents to a unique folder (i.e; `c:\ffmpeg` or `c:\Program Files\ffmpeg`)
11-
3. Add FFmpeg to your PATH
20+
3. Add FFmpeg to your system PATH
1221

13-
1. Go to "Edit the system environment variables"
14-
2. Under "User Variables", select "Path" then edit
15-
3. Click new and add `<Your folder>\bin` (e.g; `c:\ffmpeg\bin` or `c:\Program Files\ffmpeg\bin`)
16-
4. Click okay
22+
1. In Windows, search for or go to "Edit the system environment variables" under the Control Panel
23+
2. Under "User Variables", select "Path" then edit
24+
3. Click new and add `<Your folder>\bin` (e.g; `c:\ffmpeg\bin` or `c:\Program Files\ffmpeg\bin`)
25+
4. Click "Okay"
1726

1827
### Package Managers
28+
1929
FFmpeg is also available from:
2030

2131
1. WinGet (`winget install ffmpeg`)
2232
2. Scoop (`scoop install main/ffmpeg`)
2333
3. Chocolatey (`choco install ffmpeg-full`)
2434

2535
## Installation on Mac
36+
2637
### Homebrew
27-
FFmpeg is available via [Homebrew](https://brew.sh/) and can be installed via:
2838

29-
`brew install ffmpeg`
39+
FFmpeg is available under the macOS section of the [FFmpeg website](https://www.ffmpeg.org/download.html) or can be installed via [Homebrew](https://brew.sh/) using `brew install ffmpeg`.
3040

3141
## Installation on Linux
42+
3243
### Package Managers
44+
3345
FFmpeg may be installed by default on some Linux distributions, but if not, it is available via your distro's package manager of choice:
3446

3547
1. Debian/Ubuntu (`sudo apt install ffmpeg`)
3648
2. Fedora (`sudo dnf install ffmpeg-free`)
3749
3. Arch (`sudo pacman -S ffmpeg`)
3850

3951
# Help
52+
4053
For additional help, please join the [Discord](https://discord.gg/hRNnVKhF2G) or create an Issue on the [GitHub repository](https://github.com/TagStudioDev/TagStudio)

docs/index.md

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,61 @@ title: Home
99

1010
![TagStudio Alpha](assets/github_header.png)
1111

12-
TagStudio is a photo & file organization application with an underlying system that focuses on giving freedom and flexibility to the user. No proprietary programs or formats, no sea of sidecar files, and no complete upheaval of your filesystem structure.
12+
TagStudio is a photo & file organization application with an underlying tag-based system that focuses on giving freedom and flexibility to the user. No proprietary programs or formats, no sea of sidecar files, and no complete upheaval of your filesystem structure.
1313

14-
<figure markdown="span">
14+
<figure width="60%" markdown="span">
1515
![TagStudio screenshot](assets/screenshot.jpg)
16-
<figcaption>TagStudio Alpha v9.1.0 running on Windows 10</figcaption>
16+
<figcaption>TagStudio Alpha v9.4.2 running on Windows 10</figcaption>
1717
</figure>
1818

1919
## Goals
2020

21-
- To achieve a portable, privacy-oriented, open, extensible, and feature-rich system of organizing and rediscovering files.
22-
- To provide powerful methods for organization, notably the concept of tag composition, or “taggable tags”.
23-
- To create an implementation of such a system that is resilient against a user’s actions outside the program (modifying, moving, or renaming files) while also not burdening the user with mandatory sidecar files or otherwise requiring them to change their existing file structures and workflows.
24-
- To support a wide range of users spanning across different platforms, multi-user setups, and those with large (several terabyte) libraries.
25-
- To make the darn thing look like nice, too. It’s 2024, not 1994.
21+
- To achieve a portable, private, extensible, open-format, and feature-rich system of organizing and rediscovering files.
22+
- To provide powerful methods for organization, notably the concept of tag inheritance, or “taggable tags” _(and in the near future, the combination of composition-based tags)._
23+
- To create an implementation of such a system that is resilient against a user’s actions outside the program (modifying, moving, or renaming files) while also not burdening the user with mandatory sidecar files or requiring them to change their existing file structures and workflows.
24+
- To support a wide range of users spanning across different platforms, multi-user setups, and those with large (several terabyte) libraries.
25+
- To make the darn thing look like nice, too. It’s 2024, not 1994.
2626

2727
## Priorities
2828

29-
1. **The concept.** Even if TagStudio as a project or application fails, I’d hope that the idea lives on in a superior project. The [goals](#goals) outlined above don’t reference TagStudio once - _TagStudio_ is what references the _goals._
29+
1. **The concept.** Even if TagStudio as an application fails, I’d hope that the idea lives on in a superior project. The [goals](#goals) outlined above don’t reference TagStudio once - _TagStudio_ is what references the _goals._
3030
2. **The system.** Frontends and implementations can vary, as they should. The core underlying metadata management system is what should be interoperable between different frontends, programs, and operating systems. A standard implementation for this should settle as development continues. This opens up the doors for improved and varied clients, integration with third-party applications, and more.
3131
3. **The application.** If nothing else, TagStudio the application serves as the first (and so far only) implementation for this system of metadata management. This has the responsibility of doing the idea justice and showing just what’s possible when it comes to user file management.
32-
4. (The name.) I think it’s fine for an app or client, but it doesn’t really make sense for a system or standard. I suppose this will evolve with time.
32+
4. (The name.) I think it’s fine for an app or client, but it doesn’t really make sense for a system or standard. I suppose this will evolve with time...
3333

3434
## Feature Roadmap
3535

3636
The [Feature Roadmap](updates/roadmap.md) lists all of the planned core features for TagStudio to be considered "feature complete" along with estimated release milestones. The development and testing of these features takes priority over all other requested or submitted features unless they are later added to this roadmap. This helps ensure that TagStudio eventually sees a full release and becomes more usable by more people more quickly.
3737

3838
## Current Features
3939

40-
- Create libraries/vaults centered around a system directory. Libraries contain a series of entries: the representations of your files combined with metadata fields. Each entry represents a file in your library’s directory, and is linked to its location.
41-
- Add metadata to your library entries, including:
42-
- Name, Author, Artist (Single-Line Text Fields)
43-
- Description, Notes (Multiline Text Fields)
44-
- Tags, Meta Tags, Content Tags (Tag Boxes)
45-
- Create rich tags composed of a name, a list of aliases, and a list of “subtags” - being tags in which these tags inherit values from.
46-
- Search for entries based on tags, ~~metadata~~ (TBA), or filenames/filetypes (using `filename: <query>`)
47-
- Special search conditions for entries that are: `untagged`/`no tags` and `empty`/`no fields`.
40+
### Libraries
41+
42+
- Create libraries/vaults centered around a system directory. Libraries contain a series of entries: the representations of your files combined with metadata fields. Each entry represents a file in your library’s directory, and is linked to its location.
43+
- Address moved, deleted, or otherwise "unlinked" files by using the "Fix Unlinked Entries" option in the Tools menu.
44+
45+
### Metadata + Tagging
46+
47+
- Add metadata to your library entries, including:
48+
- Name, Author, Artist (Single-Line Text Fields)
49+
- Description, Notes (Multiline Text Fields)
50+
- Tags, Meta Tags, Content Tags (Tag Boxes)
51+
- Create rich tags composed of a name, a list of aliases, and a list of “parent tags” - being tags in which these tags inherit values from.
52+
- Copy and paste tags and fields across file entries
53+
- Generate tags from your existing folder structure with the "Folders to Tags" macro (NOTE: these tags do NOT sync with folders after they are created)
54+
55+
### Search
56+
57+
- Search for entries based on tags, ~~metadata~~ (TBA), or filenames/filetypes (using `filename: <query>`).
58+
- Special search conditions for entries that are: `untagged` and `empty`.
59+
60+
### File Entries
61+
62+
- All\* file types are supported in TagStudio libraries - just not all have dedicated thumbnail support.
63+
- Preview most image file types, animated GIFs, videos, plain text documents, audio files\*\*, Blender projects, and more!
64+
- Open files or file locations by right-clicking on thumbnails and previews and selecting the respective context menu options. You can also click on the preview panel image to open the file, and click the file path label to open its location.
65+
- Delete files from both your library and drive by right-clicking the thumbnail(s) and selecting the "Move to Trash"/"Move to Recycle Bin" option.
66+
67+
> _\* Weird files with no extension or files such as ".\_DS_Store" currently have limited support._
68+
>
69+
> _\*\* Audio playback coming in v9.5_

docs/updates/roadmap.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ These version milestones are rough estimations for when the previous core featur
156156

157157
### 9.5 (Alpha)
158158

159-
- [ ] SQL backend [HIGH]
159+
- [x] SQL backend [HIGH]
160160
- [ ] Translations _(Any applicable)_ [MEDIUM]
161161
- [ ] Multiple Root Directories per Library [HIGH]
162162
- [ ] Tags [HIGH]
@@ -169,11 +169,16 @@ These version milestones are rough estimations for when the previous core featur
169169
- [ ] Existing colors are now a set of base colors [HIGH]
170170
- [ ] Editable [MEDIUM]
171171
- [ ] Non-removable [HIGH]
172+
- [ ] [Tag Categories](../library/tag_categories.md) [HIGH]
173+
- [ ] Property available for tags that allow the tag and any inheriting from it to be displayed separately in the preview panel under a title [HIGH]
172174
- [ ] Search engine [HIGH]
173175
- [ ] Boolean operators [HIGH]
174176
- [ ] Tag objects + autocomplete [HIGH]
175-
- [ ] Filename search [HIGH]
176-
- [ ] Filetype search [HIGH]
177+
- [x] Filename search [HIGH]
178+
- [x] Filetype search [HIGH]
179+
- [x] Search by extension (e.g. ".jpg", ".png") [HIGH]
180+
- [ ] Optional consolidation of extension synonyms (i.e. ".jpg" can equal ".jpeg") [LOW]
181+
- [x] Search by media type (e.g. "image", "video", "document") [MEDIUM]
177182
- [ ] Field content search [HIGH]
178183
- [ ] Sortable results [HIGH]
179184
- [ ] Sort by relevance [HIGH]
@@ -200,8 +205,6 @@ These version milestones are rough estimations for when the previous core featur
200205
- [ ] Built-in Icon Packs (i.e. Boxicons) [HIGH]
201206
- [ ] User Defined Icons [HIGH]
202207
- [ ] Multiple Languages for Tag Strings [MEDIUM]
203-
- [ ] [Tag Categories](../library/tag_categories.md) [HIGH]
204-
- [ ] Property available for tags that allow the tag and any inheriting from it to be displayed separately in the preview panel under a title [HIGH]
205208
- [ ] Title is tag name [HIGH]
206209
- [ ] Title has tag color [MEDIUM]
207210
- [ ] Tag marked as category does not display as a tag itself [HIGH]

requirements-dev.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ruff==0.6.4
1+
ruff==0.8.1
22
pre-commit==3.7.0
33
pytest==8.2.0
44
Pyinstaller==6.6.0

0 commit comments

Comments
 (0)