Projects and Documents

A ThinkForge project is a folder on disk initialized with a hidden .fire/ directory. Your content remains ordinary files arranged in whatever folder structure you choose.

ThinkForge-managed captures and untargeted new documents normally use the visible _captured/ folder.

Project Structure

A typical initialized project contains:

Project Name/
  .fire/
    project.json
    project.settings.json
    daily-notes.json
    memory/
    cache/
    open-tabs.json
    trash/
  _captured/
  your files and folders

project.json stores the project identity, group, timestamps, tags, and AI settings.

project.settings.json stores resolved project settings.

daily-notes.json stores the project-relative folder chosen for Today's Note. It contains no note text and no absolute path.

memory/ holds the project-local search index.

open-tabs.json stores restorable project tab state.

trash/ stores recent files and folders removed through ThinkForge.

The .fire/ directory and other dot-prefixed directories are excluded from normal browsing and indexing. bin, obj, and node_modules are also skipped. Project discovery stops after five directory levels.

Projects Root

Release builds default to:

Documents\Think Forge\Projects

A custom default directory can be chosen at first launch or later in Settings under General.

Change Default Location repoints ThinkForge without moving existing projects. Move All Local Projects copies the current projects root to the new location and keeps the old root as a backup. Verify copied projects before deleting or archiving that backup.

Creating Projects

Open the Projects page and choose Create New Project.

The current bundle contains 21 workspace-template definitions covering software development, content production, research, business, and related workflows. The wizard can also create a generic project without template documents.

Depending on the selected template, creation can:

  • Create template documents
  • Apply system tags
  • Create a workspace containing the selected components
  • Collect development or project-specific choices
  • Import or deploy template-associated tools where supported

Opening and Switching Projects

The Projects page lists initialized projects, ordered by group and name. Projects can also be selected from the project control in the main interface.

A project opens by double-clicking its row or by selecting it and choosing Open. Both routes perform the same project load.

Each row shows the project name, marks the active project as Current, external projects as External, and unavailable external links as Broken External. A secondary line carries the group label and full folder location. A filter box above the list narrows it by name, group, or path.

Right-clicking a row selects it and offers Open, reveal in the file manager, Set Group, Save as Template, and Remove. The same actions are available from the buttons below the list, where Remove is placed away from Open.

Switching projects changes the active:

  • Project folder
  • Search index
  • Workspace data
  • Restored tab state
  • Project-scoped tools, automations, and capture destinations

ThinkForge attempts to restore the last active project at startup. If it is unavailable, the app can select another discovered project.

Project Groups

A project can have an optional group label, set from the Projects page row menu or from the Project Navigator folder tree. Groups organize the project picker but do not merge files, search indexes, workspaces, settings, or agents.

A grouped display name can appear as Group > Project.

External Projects

Choose Add Existing Project Folder… on the Projects page to register a folder outside the default projects location. The confirmation states that the folder becomes a separate project and that the current project and its documents will not move.

The confirmation offers Add and Open, Add Only, and Cancel. Selecting a folder that is already registered offers to open the existing project. A folder whose name is confusingly similar to another project produces a warning with both project paths before anything is added.

Registration writes a small pointer file inside the configured projects root. If the external folder is not initialized, ThinkForge adds its .fire/ project state without reorganizing your existing files. Registration reconciles the selected folder before reporting success; a hard scan or database failure leaves no new link. A missing external path or missing project state stays visible on the Projects page as Broken External so its pointer can be removed.

Moving a Project

Select an inactive project and choose Move Project.... The destination folder must already exist and be empty. Its folder name becomes the relocated project's name, so moving can also rename the project. The destination cannot be inside the source or conflict with another registered project.

ThinkForge pauses the project's watcher and database use, copies the complete project, and verifies every copied file by size and SHA-256 hash. It rejects linked files or directories rather than following them outside the project. The original is then kept as a verified backup in a sibling .fire-relocation-backups/ folder while registration is changed to the new location.

The relocated project remains selected. Open it and verify its files before manually archiving or deleting the backup.

Removing a Project

The active project cannot be removed. Remove is disabled while the active project is selected, and its tooltip states that another project must be opened first.

Removal is verified against the reloaded project list. If a project is still registered after the operation reports completion, the page reports the failure instead of showing success.

Removal differs for local and external projects.

Remove From ThinkForge

For an external project, the default Remove action only deletes the pointer. The external folder, its documents, and its .fire/ metadata remain unchanged. This also removes a broken external pointer whose target folder is unavailable.

For a local project, leaving Also delete all project files permanently unchecked removes the project's .fire/ directory and _captured/ folder. Other files you created remain.

This still permanently deletes captured documents. Move anything important out of _captured/ or back up the project before proceeding.

Delete Everything

With the permanent-delete checkbox selected, ThinkForge permanently deletes the entire project directory after an additional warning. For external projects the checkbox reads Also delete the external folder and all its files permanently.

This operation does not use the internal document trash.

Browsable and Indexable Files

Browsing and indexing use different extension sets.

Indexable Text

The general index covers:

  • Markdown
  • Plain text
  • RTF
  • JSON
  • HTML
  • CSS
  • JavaScript
  • C#
  • Python
  • XML

Files deeper than the discovery limit or inside excluded directories are not included by that scan.

Browsable Content

Project browsing additionally recognizes selected YAML, log, image, PDF, and video formats. CSV is browsable and uses the table surface, but it is not part of the general indexable-text set.

A file type can open in an editor without appearing in the filtered project browser. Opening a file directly and discovering it through Project Navigator are separate behaviors.

Editors and Viewers

Supported extensions route as follows:

  • Rich text: Markdown, HTML, and RTF
  • Code: JSON, text, programming languages, markup, configuration, scripts, and unknown extensions in plain-text fallback
  • Table: CSV and TSV
  • Media: images and PDF
  • Video: supported video formats in a separate window

The project browser intentionally shows a narrower set than the code editor can open.

Creating Documents

A folder context menu can create:

  • Markdown
  • HTML
  • JSON
  • CSV
  • Plain text

The new file uses an Untitled name with a numeric suffix when needed and opens in its editor.

Capture flows use _captured/ unless the initiating command or slot has a specific destination.

Today's Note is available from the main command bar and File menu. Each project chooses its own folder on first use or through a folder-tree Use for Today's Notes action. The command targets yyyy-MM-dd.md, opens an existing file with the cursor at the end, or opens an empty editor bound to that date. Closing an empty editor creates no file. After the date changes, the document remains an ordinary Markdown file.

The Android widget uses the same file and can queue append-only entries while Desktop is offline. Reconnection appends against the latest Desktop content instead of replacing it with an older phone copy.

Document Save and Indexing

Saving writes the file and updates the search index for supported content. Project-content writes use a same-folder temporary file and replace the destination only after the new content is complete. If another application keeps the file locked or permissions block replacement, ThinkForge reports that the save is blocked instead of truncating the existing file. External file changes are also monitored where that workflow is active.

A physical file and its indexed entry are related but distinct. Unsupported files can exist and be browsed without receiving searchable text chunks.

File and Folder Trash

Normal file and folder deletion through ThinkForge does the following:

  1. The item moves to .fire/trash/.
  2. A sidecar file records the original path and deletion time.
  3. The trash retains at most 50 primary entries; the oldest entries are permanently evicted.

The folder tree's Trash section lists the active project's deleted items, newest first. Rows do not open on click because they represent stored deleted copies. Right-click offers Restore, Reveal in Explorer, Delete Permanently, and Empty Trash.

Restore recreates a missing original folder and chooses a unique name when the old name is already in use; it never overwrites an existing item. An entry whose sidecar is missing or unreadable can still be permanently removed, but it cannot be restored because its original location is unknown. Permanent deletion and Empty Trash both require confirmation.

If no project can be resolved or a trash move fails, the delete becomes permanent.

Backup Guidance

Back up the whole project folder when possible:

  • Your documents contain the actual work.
  • _captured/ contains imported and quick-capture material.
  • .fire/ contains indexes, workspaces, internal bindings, tab state, and project configuration.

The search index is derived from project content but also holds metadata ThinkForge uses. Keeping the complete folder preserves the most state.