Folder watch and external changes

Every tracked folder is watched, so a change made outside the app shows up without a reload.

Live reload

When another program writes a file — another editor, a script, an AI agent, git pull — and you have no unsaved changes in that file, the app reloads it in place and keeps your scroll position. If you do have unsaved changes, the app asks instead of silently overwriting your edits.

Build output, .git internals and other noise are filtered out before they reach the sidebar or trigger a reload.

Excluded Paths

Open a folder's ⋯ menu → Exclude settings… to open Exclude Settings. Under Excluded Paths, add a root-relative file (manifest.json, notes/draft.md), a subfolder (docs/archived), or a pattern. *.json excludes JSON names at any depth; docs/*.json matches one level; docs/**/x.json matches both docs/x.json and deeper copies. * matches characters except /, ? matches one character except /, and ** crosses subfolders only as a whole path segment; inside a name it behaves like *. Matching ignores case and equivalent Unicode spellings. Paths without wildcards keep their exact root-relative meaning. If a pattern matches a subfolder, everything beneath it is excluded too.

On a file row that already has an actions menu inside a watched folder, choose Exclude from watching and confirm to add that file's relative path. Standalone files and files already covered by a rule omit it. A file with * or ? in its path, or a space at the start or end of it, can be excluded through Exclude Settings by a pattern; those characters in a name are read as a pattern. Excluded files are not scanned, watched, indexed or listed. Adding a rule that newly covers an open file closes its tab, saving first; if saving fails, the file stays open with its unsaved text until you leave it, while its row is hidden. Other covered tabs close too. With one tab, the next recent Markdown file opens, or the empty editor if none remains. Nothing is deleted, including file history; removing a rule brings files back. After you leave a file, any pending exclusion close is dropped. Opening an excluded file on purpose still works: it stays open while its sidebar row remains hidden. Each rule must contain a literal character besides /, * and ?; wildcard-only rules are refused inline, while *.* and *.json are allowed.

Pull a repository

If a tracked folder is inside a git repository, its ⋯ menu (and the menu of any subfolder in it) offers Pull repository. It brings in the changes other people, other computers or AI agents pushed to the branch you are on, and it only ever fast-forwards: it never merges or rebases, and it refuses to overwrite your commits or the local changes it finds. The changed files appear in the sidebar and in any open file through the ordinary live reload. When it succeeds, nothing is shown.

The pull applies to the whole repository, not only to the folder whose menu you used, because git cannot update part of a tree. Before it starts, the app saves the file you have open if that file is inside the repository.

Pull stops, changes nothing and tells you why when:

  • the branch has commits the remote does not have, or you have local changes the pull would overwrite, including in a file git ignores — sort it out in a terminal or your git tool;
  • the branch has no upstream, or the repository is on a detached HEAD;
  • the remote cannot be reached, or asks for credentials. The app cannot type a password, so a private repository works only if your stored SSH key or credential helper supplies it.

If a repository hook refuses the update, files may already have been written, so check the repository. Updating the files is never stopped halfway: if a hook or a large checkout makes it slow, Pull repository shows as running until it is done.

You can keep typing while the pull fetches. The app saves your open file again just before it updates the files, so if the pull would change that file, it stops and tells you instead of replacing what you typed. While the files are being updated, automatic saving is paused and your typing is kept; saving by hand still works. If you type in the open file in that instant and the pull changes that file, your text is kept, the app tells you that saving it replaces the pulled version, and the pulled version stays in the repository's history. A manual save made while a slow update is still writing files can be overwritten by it.

Reconciliation

The app re-checks tracked folders against disk at launch and whenever the window regains focus, so any changes made while the app was closed or in the background are picked up automatically.

Stale records

If a file tracked inside a folder has been missing for 30 days, the app removes its record automatically. A standalone file you opened on its own (not inside a tracked folder) stays in Recent even if it goes missing.

One record per file

The same physical file is only ever tracked once, even if you reach it through a symlink or with different letter casing in the path.

Limits

  • Renaming or moving a file inside the untracked remainder of a very large, incompletely scanned folder can go unnoticed — see Large folders.
  • The watcher does not recreate a file or discard your unsaved buffer under any circumstance.

Having trouble loading?

The app seems stuck. This can happen after an update. Clearing the cache should fix it.