Skip to content

[Task]: Introduce Independent TagStudio Data Folder Option #1375

@CyanVoxel

Description

@CyanVoxel

Checklist

  • I am using an up-to-date version.
  • I have read the documentation.
  • I have searched existing issues.

Description

This issue aims to coordinate efforts to introduce a new TagStudio data folder structure in addition to the current .TagStudio data folder method with the following additional benefits:

  • Independent data location from library contents
  • Multi-root folder support (technically can be brought to existing libraries, but it would be weird)
  • Custom library name (likely brought to existing library type as well)

Solution

When creating a new TagStudio library, the user could be presented with two options:

Current/Simple/"Vault-Style"/Embedded

"Your TagStudio library data lives inside an existing folder with your content. Only content in this folder is included in your TagStudio library, and moving the content folder keeps your TagStudio data with it.

You can choose to convert to an "Independent" library style at any time."

  • The .TagStudio folder is treated as the library folder.
  • Library contents are read from the outer folder.
  • A folder and its contents are effectively "opened" as a complete TagStudio Library, similar to an Obsidian vault.
Content Folder/
├─ .TagStudio/
│ ├─ ts_library.sqlite (references outer folder only)
│ ├─ .ts_ignore
│ ├─ backups/
│ ├─ macros/
│ ├─ thumbs/

New/Advanced/Independent

"Your TagStudio library data is stored independently from your content folder(s). This option lets you specify multiple content folders as sources for your library, but moving or renaming these content folders will require you to re-link them inside the app. Moving the data folder itself will not require a re-link."

  • A custom location is specified for the library folder.
  • Folders for library contents need to be manually specified.
  • An independent save folder is used to store all TagStudio save data that references a particular set of content folder(s). Can be thought as similar to a Minecraft save folder, if you want.
Content Folder 1/
Content Folder 2/
TagStudio Data Folder/
├─ ts_library.sqlite (references specified content folders)
├─ .ts_ignore
├─ backups/
├─ macros/
├─ thumbs/

As you can see, a lot of the terminology I have in mind is up in the air. There should be a clear distinction between a "TagStudio library data" folder and "library contents" folders going forward, while also not stirring up confusion for the existing structure. Specific terms can be decided upon in time.

Alternatives

  • If the .TagStudio folder was retained for root libraries outside of the immediate outer folder, it would lose portability with the illusion of keeping it and only raise confusion as to what content is explicitly added and what is implicitly added.

  • If all libraries are forced to use the independent folder system, then the benefits of keeping a .TagStudio folder inside the contents folder is universally lost for nothing but the sake of consistency.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority: MediumAn issue that shouldn't be be saved for lastTagStudio: LibraryRelating to the TagStudio library systemType: EnhancementNew feature or requestType: File SystemFile system interactionsType: QoLA quality of life (QoL) enhancement or suggestionType: RefactorCode that needs to be restructured or cleaned up

    Type

    No fields configured for Task.

    Projects

    Status

    🍀 Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions