You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+71-62Lines changed: 71 additions & 62 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# TagStudio (Preview/Alpha): A User-Focused Document Management System
1
+
# TagStudio (Alpha): A User-Focused Document Management System
2
2
3
3
<palign="center">
4
4
<imgwidth="60%"src="github_header.png">
@@ -15,6 +15,7 @@ TagStudio is a photo & file organization application with an underlying system t
15
15
</p>
16
16
17
17
## Contents
18
+
18
19
-[Goals](#goals)
19
20
-[Priorities](#priorities)
20
21
-[Current Features](#current-features)
@@ -45,67 +46,27 @@ TagStudio is a photo & file organization application with an underlying system t
45
46
- Description, Notes (Multiline Text Fields)
46
47
- Tags, Meta Tags, Content Tags (Tag Boxes)
47
48
- 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.
48
-
- Search for entries based on tags, metadata, or filename (using `filename: <query>`)
49
+
- Search for entries based on tags, ~~metadata~~ (TBA), or filenames/filetypes (using `filename: <query>`)
49
50
- Special search conditions for entries that are: `untagged`/`no tags` and `empty`/`no fields`.
50
51
51
52
> [!NOTE]
52
53
> For more information on the project itself, please see the [FAQ](#faq) section and other docs.
53
54
54
55
## Installation
55
-
> [!CAUTION]
56
-
> TagStudio is only currently verified to work on Windows. I've run into issues with the Qt code running on Linux, but I don't know how severe these issues are. There's also likely bugs regarding filenames and portability of the databases across different OSes.
57
-
58
-
### Prerequisites
59
-
60
-
- Python 3.12
61
-
62
-
### Creating the Virtual Environment
63
-
64
-
*Skip this step if launching from the .sh script on Linux.*
65
-
66
-
1. In the root repository directory, create a python virtual environment:
67
-
`python3 -m venv .venv`
68
-
2. Activate your environment:
69
-
70
-
- Windows w/Powershell: `.venv\Scripts\Activate.ps1`
71
-
- Windows w/Command Prompt: `.venv\Scripts\activate.bat`
72
-
- Linux/macOS: `source .venv/bin/activate`
73
-
74
-
3. Install the required packages:
75
-
`pip install -r requirements.txt`
76
56
77
-
_Learn more about setting up a virtual environment [here](https://docs.python.org/3/tutorial/venv.html)._
57
+
To download TagStudio, visit the [Releases](https://github.com/TagStudioDev/TagStudio/releases) section of the GitHub repository and download the latest release for your system. TagStudio is available for **Windows**, **macOS**_(Apple Silicon & Intel)_, and **Linux**. Windows and Linux builds are also available in portable versions if you want a more self-contained executable to move around.
78
58
79
-
### Launching
80
-
81
-
> [!NOTE]
82
-
> Depending on your system, Python may be called `python`, `py`, `python3`, or `py3`. These instructions use the alias `python3`.
59
+
Once downloaded, launch the corresponding TagStudio executable to start the program. Once open, go to **"File -> Create/Open Library"** to create your first library from a directory!
83
60
84
61
#### Optional Arguments
85
62
63
+
Optional arguments to pass to the program.
64
+
86
65
> `--open <path>` / `-o <path>`
87
66
> Path to a TagStudio Library folder to open on start.
88
67
89
-
#### Windows
90
-
91
-
To launch TagStudio, launch the `start_win.bat` file. You can modify this .bat file or create a shortcut and add one or more additional arguments if desired.
92
-
93
-
Alternatively, with the virtual environment loaded, run the python file at `tagstudio\tag_studio.py` from your terminal. If you're in the project's root directory, simply run `python3 tagstudio/tag_studio.py`.
94
-
95
-
> [!CAUTION]
96
-
> TagStudio on Linux & macOS likely won't function correctly at this time. If you're trying to run this in order to help test, debug, and improve compatibility, then charge on ahead!
97
-
98
-
#### macOS
99
-
100
-
With the virtual environment loaded, run the python file at "tagstudio/tag_studio.py" from your terminal. If you're in the project's root directory, simply run `python3 tagstudio/tag_studio.py`. When launching the program in the future, remember to activate the virtual environment each time before launching *(an easier method is currently being worked on).*
101
-
102
-
#### Linux
103
-
104
-
Run the "TagStudio.sh" script, and the program should launch! (Make sure that the script is marked as executable). Note that launching from the script from outside of a terminal will not launch a terminal window with any debug or crash information. If you wish to see this information, just launch the shell script directly from your terminal with `sh TagStudio.sh`.
105
-
106
-
##### NixOS
107
-
108
-
Use the provided `flake.nix` file to create and enter a working environment by running `nix develop`. Then, run the above `TagStudio.sh` script.
68
+
> `--config-file <path>` / `-c <path>`
69
+
> Path to a TagStudio Library folder to open on start.
109
70
110
71
## Usage
111
72
@@ -197,11 +158,56 @@ Import JSON sidecar data generated by [gallery-dl](https://github.com/mikf/galle
197
158
> [!CAUTION]
198
159
> This feature is not supported or documented in any official capacity whatsoever. It will likely be rolled-in to a larger and more generalized sidecar importing feature in the future.
199
160
161
+
## Creating a Development Environment
162
+
163
+
If you're interested in contributing to TagStudio or just wish to poke around the live codebase, here are instructions for setting up the Python project.
164
+
165
+
### Prerequisites
166
+
167
+
- Python 3.12
168
+
169
+
### Creating a Python Virtual Environment
170
+
171
+
> [!NOTE]
172
+
> Depending on your system, Python may be called `python`, `py`, `python3`, or `py3`. These instructions use the alias `python3`. You can check to see which alias you system uses and if it's for the correct Python version by typing `python3 --version` (or whichever alias) into your terminal.
173
+
174
+
_Skip these steps if launching from the .sh script on Linux/macOS._
175
+
176
+
1. In the root repository directory, create a python virtual environment:
177
+
`python3 -m venv .venv`
178
+
2. Activate your environment:
179
+
180
+
- Windows w/Powershell: `.venv\Scripts\Activate.ps1`
181
+
- Windows w/Command Prompt: `.venv\Scripts\activate.bat`
182
+
- Linux/macOS: `source .venv/bin/activate`
183
+
184
+
3. Install the required packages:
185
+
`pip install -r requirements.txt`
186
+
187
+
_Learn more about setting up a virtual environment [here](https://docs.python.org/3/tutorial/venv.html)._
188
+
189
+
### Launching Development Environment
190
+
191
+
-**Windows** (start_win.bat)
192
+
193
+
- To launch TagStudio, launch the `start_win.bat` file. You can modify this .bat file or create a shortcut and add one or more additional arguments if desired.
194
+
195
+
-**Linux/macOS** (TagStudio.sh)
196
+
197
+
- Run the "TagStudio.sh" script, and the program should launch! (Make sure that the script is marked as executable if on Linux). Note that launching from the script from outside of a terminal will not launch a terminal window with any debug or crash information. If you wish to see this information, just launch the shell script directly from your terminal with `./TagStudio.sh`.
198
+
199
+
-**NixOS** (TagStudio.sh)
200
+
- Use the provided `flake.nix` file to create and enter a working environment by running `nix develop`. Then, run the `TagStudio.sh` script.
201
+
202
+
-**Any** (No Scripts)
203
+
204
+
- Alternatively, with the virtual environment loaded, run the python file at `tagstudio\tag_studio.py` from your terminal. If you're in the project's root directory, simply run `python3 tagstudio/tag_studio.py`.
205
+
200
206
## FAQ
201
207
202
208
### What State Is the Project Currently In?
203
209
204
-
As of writing (Alpha v9.1.0) the project is in a “useable” state, however it lacks proper testing and quality of life features. Currently the program has only been verified to work properly on Windows, and is unlikely to properly run on Linux or macOS in its current state, however this functionality is a priority going forward with testers.
210
+
As of writing (Alpha v9.2.0) the project is in a useable state, however it lacks proper testing and quality of life features.
205
211
206
212
### What Features Are You Planning on Adding?
207
213
@@ -214,18 +220,16 @@ Of the several features I have planned for the project, these are broken up into
214
220
- Boolean Search
215
221
- Coexisting Text + Tag Search
216
222
- Searchable File Metadata
217
-
- Tag management view
218
-
- Applying metadata via multi-selection
223
+
- Comprehensive Tag management tab
219
224
- Easier ways to apply tags in bulk
220
225
- Tag Search Panel
221
226
- Recent Tags Panel
222
227
- Top Tags Panel
223
228
- Pinned Tags Panel
224
-
- Apply tags based on system folders
225
229
- Better (stable, performant) library grid view
226
230
- Improved entry relinking
227
231
- Cached thumbnails
228
-
-Collations
232
+
-Tag-like Groups
229
233
- Resizable thumbnail grid
230
234
- User-defined metadata fields
231
235
- Multiple directory support
@@ -235,49 +239,54 @@ Of the several features I have planned for the project, these are broken up into
235
239
- Better internal API for accessing Entries, Tags, Fields, etc. from the library.
236
240
- Proper testing workflow
237
241
- Continued code cleanup and modularization
238
-
-Reassessment of save file structure in order to prioritize portability (leading to exportable tags, presets, etc)
242
+
-Exportable/importable library data including "Tag Packs"
239
243
240
244
#### Future Features
241
245
242
246
- Support for multiple simultaneous users/clients
243
247
- Draggable files outside the program
244
-
-Ability to ignore specific files
248
+
-Comprehensive filetype whitelist
245
249
- A finished “macro system” for automatic tagging based on predetermined criteria.
246
250
- Different library views
247
251
- Date and time fields
248
252
- Entry linking/referencing
249
253
- Audio waveform previews
250
254
- 3D object previews
251
255
- Additional previews for miscellaneous file types
252
-
- Exportable/sharable tags and settings
253
256
- Optional global tags and settings, spanning across libraries
254
257
- Importing & exporting libraries to/from other programs
255
258
- Port to a more performant language and modern frontend (Rust?, Tauri?, etc.)
256
259
- Plugin system
257
260
- Local OCR search
258
261
- Support for local machine learning-based tag suggestions for images
259
-
- Mobile version
262
+
- Mobile version_(FAR future)_
260
263
261
264
#### Features I Likely Won’t Add/Pull
262
-
- Native Cloud Integration
265
+
266
+
- Native Cloud Integration
263
267
- There are plenty of services already (native or third-party) that allow you to mount your cloud drives as virtual drives on your system. Pointing TagStudio to one of these mounts should function similarly to what native integration would look like.
264
268
- Native ChatGPT/Non-Local LLM Integration
265
-
- This could mean different things depending on what you're intending. Whether it's trying to use an LLM to replace the native search, or to trying to use a model for image recognition, I'm not interested in hooking people's TagStudio libraries into non-local LLMs such as ChatGPT and/or turn the program into a "chatbot" interface (see: [Goals/Privacy](#goals)). I wouldn't, however, mind using **locally** hosted models to provide the *optional* ability for additional searching and tagging methods (especially when it comes to facial recognition).
269
+
- This could mean different things depending on what you're intending. Whether it's trying to use an LLM to replace the native search, or to trying to use a model for image recognition, I'm not interested in hooking people's TagStudio libraries into non-local LLMs such as ChatGPT and/or turn the program into a "chatbot" interface (see: [Goals/Privacy](#goals)). I wouldn't, however, mind using **locally** hosted models to provide the _optional_ ability for additional searching and tagging methods (especially when it comes to facial recognition).
266
270
267
271
### Why Is the Version Already v9?
268
272
269
273
I’ve been developing this project over several years in private, and have gone through several major iterations and rewrites in that time. This “major version” is just a number at the end of the day, and if I wanted to I couldn’t released this as “Version 0” or “Version 1.0”, but I’ve decided to stick to my original version numbers to avoid needing to go in and change existing documentation and code comments. Version 10 is intended to include all of the “Priority Features” I’ve outlined in the [previous](#what-features-are-you-planning-on-adding) section. I’ve also labeled this version as an Alpha, and will likely reset the numbers when a feature-complete beta is reached.
270
274
271
275
### Wait, Is There a CLI Version?
272
276
273
-
As of right now, no. However, I _did_ have a CLI version in the recent past before dedicating my efforts to the Qt GUI version. I’ve left in the currently-inoperable CLI code just in case anyone was curious about it. Also yes, it’s just a bunch of glorified print statements (_the outlook for some form of curses on Windows didn’t look great at the time, and I just needed a driver for the newly refactored code...)._
277
+
As of right now, **no**. However, I _did_ have a CLI version in the recent past before dedicating my efforts to the Qt GUI version. I’ve left in the currently-inoperable CLI code just in case anyone was curious about it. Also yes, it’s just a bunch of glorified print statements (_the outlook for some form of curses on Windows didn’t look great at the time, and I just needed a driver for the newly refactored code...)._
274
278
275
279
### Can I Contribute?
276
280
277
281
**Yes!!** I recommend taking a look at the [Priority Features](#priority-features), [Future Features](#future-features), and [Features I Won't Pull](#features-i-likely-wont-addpull) lists, as well as the project issues to see what’s currently being worked on. Please do not submit pull requests with new feature additions without opening up an issue with a feature request first.
278
282
279
-
Code formatting is automatically checked via [ruff](https://docs.astral.sh/ruff/).
283
+
Code formatting is automatically checked via [Ruff](https://docs.astral.sh/ruff/).
280
284
281
-
To format the code manually, install ruff via `pip install -r requirements-dev.txt` and then run `ruff format`
285
+
To format the code manually, install ruff via `pip install -r requirements-dev.txt` and then run `ruff format`
282
286
283
287
To format the code automatically before each commit, there's a configured action available for `pre-commit` hook. Install it by running `pre-commit install`. The hook will be executed each time on running `git commit`.
288
+
289
+
More structured documentation on contribution requirements is on its way, but for now:
290
+
291
+
- Use `pathlib` in favor of `os.path`
292
+
- Try to make new UI additions match the existing style of the application
0 commit comments