Skip to content

Commit c6d2a89

Browse files
committed
Update documentation
- Update README - Update CHNAGELOG - Update `--config-file` argument help message
1 parent 8e11e28 commit c6d2a89

3 files changed

Lines changed: 121 additions & 63 deletions

File tree

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,55 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [9.2.0-alpha] - 2024-05-14
9+
10+
### Added
11+
12+
- Full macOS and Linux support
13+
- Ability to apply tags to multiple selections at once
14+
- Right-click context menu for opening files or their locations
15+
- Support for all filetypes inside of the library
16+
- Configurable filetype blacklist
17+
- Option to automatically open last used library on startup
18+
- Tool to convert folder structure to tag tree
19+
- SIGTERM handling in console window
20+
- Keyboard shortcuts for basic functions
21+
- Basic support for plaintext thumbnails
22+
- Default icon for files with no thumbnail support
23+
- Menu action to close library
24+
- All tags now show in the "Add Tag" panel by default
25+
- Modal view to view and manage all library tags
26+
- Build scripts for Windows and macOS
27+
- Help menu option to visit the GitHub repository
28+
- Toggleable "Recent Libraries" list in the entry side panel
29+
30+
### Fixed
31+
32+
- Fixed errors when performing actions with no library open
33+
- Fixed bug where built-in tags were duplicated upon saving
34+
- QThreads are now properly terminated on application exit
35+
- Images with rotational EXIF data are now properly displayed
36+
- Fixed "truncated" images causing errors
37+
- Fixed images with large resolutions causing errors
38+
39+
### Changed
40+
41+
- Updated minimum Python version to 3.12
42+
- Various UI improvements
43+
- Improved legibility of the Light Theme (still a WIP)
44+
- Updated Dark Theme
45+
- Added hand cursor to several clickable elements
46+
- Fixed network paths not being able to load
47+
- Various code cleanup and refactoring
48+
- New application icons
49+
50+
### Known Issues
51+
- Using and editing multiple entry fields of the same type may result in incorrect field(s) being updated
52+
- Adding Favorite or Archived tags via the thumbnail badges may apply the tag(s) to incorrect fields
53+
- Searching for tag names with spaces does not currently function as intended
54+
- A temporary workaround it to omit spaces in tag names when searching
55+
- Sorting fields using the "Sort Fields" macro may result in edit icons being shown for incorrect fields
56+
857
## [9.1.0-alpha] - 2024-04-22
958

1059
### Added

README.md

Lines changed: 71 additions & 62 deletions
Original file line numberDiff line numberDiff 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
22

33
<p align="center">
44
<img width="60%" src="github_header.png">
@@ -15,6 +15,7 @@ TagStudio is a photo & file organization application with an underlying system t
1515
</p>
1616

1717
## Contents
18+
1819
- [Goals](#goals)
1920
- [Priorities](#priorities)
2021
- [Current Features](#current-features)
@@ -45,67 +46,27 @@ TagStudio is a photo & file organization application with an underlying system t
4546
- Description, Notes (Multiline Text Fields)
4647
- Tags, Meta Tags, Content Tags (Tag Boxes)
4748
- 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>`)
4950
- Special search conditions for entries that are: `untagged`/`no tags` and `empty`/`no fields`.
5051

5152
> [!NOTE]
5253
> For more information on the project itself, please see the [FAQ](#faq) section and other docs.
5354
5455
## 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`
7656

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.
7858

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!
8360

8461
#### Optional Arguments
8562

63+
Optional arguments to pass to the program.
64+
8665
> `--open <path>` / `-o <path>`
8766
> Path to a TagStudio Library folder to open on start.
8867
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.
10970
11071
## Usage
11172

@@ -197,11 +158,56 @@ Import JSON sidecar data generated by [gallery-dl](https://github.com/mikf/galle
197158
> [!CAUTION]
198159
> 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.
199160
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+
200206
## FAQ
201207

202208
### What State Is the Project Currently In?
203209

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.
205211

206212
### What Features Are You Planning on Adding?
207213

@@ -214,18 +220,16 @@ Of the several features I have planned for the project, these are broken up into
214220
- Boolean Search
215221
- Coexisting Text + Tag Search
216222
- Searchable File Metadata
217-
- Tag management view
218-
- Applying metadata via multi-selection
223+
- Comprehensive Tag management tab
219224
- Easier ways to apply tags in bulk
220225
- Tag Search Panel
221226
- Recent Tags Panel
222227
- Top Tags Panel
223228
- Pinned Tags Panel
224-
- Apply tags based on system folders
225229
- Better (stable, performant) library grid view
226230
- Improved entry relinking
227231
- Cached thumbnails
228-
- Collations
232+
- Tag-like Groups
229233
- Resizable thumbnail grid
230234
- User-defined metadata fields
231235
- Multiple directory support
@@ -235,49 +239,54 @@ Of the several features I have planned for the project, these are broken up into
235239
- Better internal API for accessing Entries, Tags, Fields, etc. from the library.
236240
- Proper testing workflow
237241
- 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"
239243

240244
#### Future Features
241245

242246
- Support for multiple simultaneous users/clients
243247
- Draggable files outside the program
244-
- Ability to ignore specific files
248+
- Comprehensive filetype whitelist
245249
- A finished “macro system” for automatic tagging based on predetermined criteria.
246250
- Different library views
247251
- Date and time fields
248252
- Entry linking/referencing
249253
- Audio waveform previews
250254
- 3D object previews
251255
- Additional previews for miscellaneous file types
252-
- Exportable/sharable tags and settings
253256
- Optional global tags and settings, spanning across libraries
254257
- Importing & exporting libraries to/from other programs
255258
- Port to a more performant language and modern frontend (Rust?, Tauri?, etc.)
256259
- Plugin system
257260
- Local OCR search
258261
- Support for local machine learning-based tag suggestions for images
259-
- Mobile version
262+
- Mobile version _(FAR future)_
260263

261264
#### Features I Likely Won’t Add/Pull
262-
- Native Cloud Integration
265+
266+
- Native Cloud Integration
263267
- 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.
264268
- 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).
266270

267271
### Why Is the Version Already v9?
268272

269273
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.
270274

271275
### Wait, Is There a CLI Version?
272276

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...)._
274278

275279
### Can I Contribute?
276280

277281
**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.
278282

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/).
280284

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`
282286

283287
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

tagstudio/tag_studio.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def main():
3434
"--config-file",
3535
dest="config_file",
3636
type=str,
37-
help="Path to a TagStudio.ini config file to use",
37+
help="Path to a TagStudio .ini or .plist config file to use.",
3838
)
3939

4040
# parser.add_argument('--browse', dest='browse', action='store_true',

0 commit comments

Comments
 (0)