Repository navigation
Folder Watching Bugs We Fixed
github-actions[bot] edited this page Oct 18, 2026
·
2 revisions
The bugs found in folder watching and in the views that follow it, what caused each, and why we fixed it the way we did.
Adding a second folder stopped watching the first.
- The issue: only the newest folder refreshed on its own.
-
Why it happened:
watch_workspacestill calledwatchers.clear(). - The fix and why we chose it: watchers are keyed by folder root, so each folder stays independent.
A new repository only showed up after Scan for Repositories.
-
The issue: after
git initor a clone in an open folder from outside the app, the repository did not appear. -
Why it happened: a new
.gitonly reloaded the Files panel, and changes inside an unknown.gitwere dropped. -
The fix and why we chose it:
attributesetsreposChangedin the cases above, and the store rescans only then, once the burst settles, doing nothing more if the list is the same.
An open log file never updated.
- The issue: a log file open in a tab, while another app kept writing to it, showed only what it had when it opened, in a preview tab or a normal one.
-
Why it happened: log files are usually ignored, and
attributedropped every ignored path, so no event reached the tab. -
The fix and why we chose it: the page tells the watcher which files are open, and an ignored open file is reported with
open-files-changed. Watching only open files keeps builds quiet. The reload now replaces only the new lines, so the view does not jump, and it follows the end liketail -fwhen scrolled there.
A tracked file that matched an ignore rule never refreshed.
-
The issue: a file committed before a
.gitignorerule matched it (a tracked log, say) did not update its status, diff or tab when it changed. - Why it happened: the watcher asked only whether a rule matched the path, not whether git tracks it.
-
The fix and why we chose it:
IgnoreChecktreats a tracked path as visible, like git status does. It reads the index only when a rule matched, so most batches never read it.
A diff on screen did not follow a file that changed again.
- The issue: in the Changes tab, Show Diff with Working Tree and Compare with Revision, the diff of a file that was already modified stayed as it was while another app kept changing the file.
- Why it happened: these views reloaded only when the repository's status object changed, and an unchanged status keeps its object, so a second edit of a modified file did nothing.
-
The fix and why we chose it: they also follow
repoStore.fileVersions[repoRoot], which the watcher bumps on every work tree change, like the Changes sidebar diff already did.
These pages are generated from docs/wiki. To correct something, open a pull request against the source file; edits made here are overwritten.
Using Nibtree
- Getting Started
- Welcome Screen
- Workspaces
- Files Panel
- File Operations
- File Icons
- Rounded Panels
- Editor and Tabs
- Pin Reorder and Wrap Tabs
- Single Tab Title
- Split Editor
- New File and Unsaved Changes
- Unload Hidden Tabs
- Editing Code
- Code Appearance
- Markdown Editor
- Image and PDF Preview
- Search Everywhere
- Recent Files
- Navigation Bar
- Find and Replace
- Changes and Commits
- Sign In Prompts
- Commit Box Layout
- Repository Actions
- Commit Options
- Ignoring Files
- Diffs
- Inline Diffs
- Staging View
- Revert a Change
- Resolving Conflicts
- Merge Tool
- Blame
- History and Log
- Merge Commits
- Branches and Tags
- Branches Popup
- Remotes
- Stashes
- Shelf
- Git Menu
- Git Dialogs
- Interactive Rebase
- Worktrees
- AI Agents
- AI Tasks
- AI Usage
- Keep Computer Awake
- Submodules
- Git LFS
- GitHub
- Git Console
- Terminal
- Terminal Features
- Scripts
- Navigation
- Menus
- Settings
- Settings Search
- Color Themes
- Settings Terminal and Automation
- Settings Files
- Updates
- Status Bar and Help
- Notifications
- Memory Use
- Clear Cache
- MCP and CLI
- Git Mergetool
- Keyboard Shortcuts
- Keyboard Shortcuts Editor
- Troubleshooting
- Troubleshooting Git
Developers
- Developer Guide
- Architecture
- Project Layout
- Backend
- How Folder Watching Works
- Folder Watching Bugs We Fixed
- How Workspace Files Work
- How the Preview Scheme Works
- Backend Services
- How Terminal Features Work
- Terminal Bugs We Fixed
- Frontend
- How the Rich Markdown Editor Works
- Rich Markdown Bugs We Fixed
- Git Menu Links
- Menu Keys and Routing
- Frontend Modules
- Blame Bugs We Fixed
- Project Color And Title Bar
- One Diff View
- Diff Bugs We Fixed
- Merge Tool Layouts
- Merge Tool Bugs We Fixed
- Color Theme Bugs We Fixed
- How the Connected Diff Works
- Rounded Panels Bugs We Fixed
- Update Bugs We Fixed
- Status Bar Bugs We Fixed
- MCP and CLI Bugs We Fixed
- Repository Actions Bugs We Fixed
- How the Changes Tab Works
- CodeMirror Patterns
- How the Cursor Works
- How Editor Features Work
- How the Path Bar Works
- Commands and Events
- Settings Reference
- Commands Workspace and Changes
- Commands Branches and Remotes
- Commands History and Extras
- Commands App and Tools
- Testing
- Test Suites
- Debugging
- Debugging with MCP
- Measuring Setting Memory
- How Terminal Memory Is Measured
- How Markdown Diagrams Work
- Releases and CI
- Publishing the Wiki
- Versioning and Changelog
- Browser Version Packages
- Browser Release Checks
- Docker Image
- Platforms and Signing
- Windows Support
- Windows Bugs We Fixed
- Windows MCP and CLI
- Docs and Screenshots
- UI Library
- UI Library MCP
- UI Library Bugs
- UI Library Migration
- Contributing
How features work
- Welcome screen
- Workspaces and folders
- Files panel
- File operations
- File icons
- Editor and tabs
- Pin, reorder and wrap tabs
- Single tab title
- Split editor
- New File and unsaved changes
- Unload hidden tabs
- Editing code
- Code appearance
- Markdown editor
- Image and PDF preview
- Search Everywhere
- Recent Files
- Navigation Bar
- Find and replace
- Changes and commits
- Sign-in prompts
- Commit box layout
- Repository actions
- Commit options
- Ignoring files
- Diffs
- Inline diffs
- Staging view
- Revert a change
- Resolving conflicts
- Merge tool
- Blame
- History and log
- Merge commits
- Commit tabs
- Branches and tags
- Branches popup
- Remotes
- Stashes
- Shelf
- Git menu
- Git dialogs
- Interactive rebase
- Worktrees
- AI agents
- AI usage
- Keep computer awake
- AI tasks
- Submodules
- Git LFS
- GitHub account
- Git Console
- Back and Forward
- Integrated terminal
- Scripts tool window
- Menu bar
- Settings
- Search in Settings
- Color themes
- Rounded panels
- Updates and release channels
- Status bar and help links
- Notifications
- Memory readout and memory log
- Clear Cache
- MCP server and command line tool
- git mergetool mode