[Bug]: Images and other binary file types are missing from Files sidebar in non-Git projects
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Create a folder outside any existing Git repository.
- Add a PNG or JPEG image and a text file before opening the folder in T3 Code.
- Open the folder as a project and inspect the Files sidebar.
Expected behavior
The Files sidebar lists both the image and the text file.
Actual behavior
The text file appears, but the image is missing.
Impact
Minor bug or occasional failure
Version or commit
0.0.40-nightly.20260907.1359
Environment
Linux x64
Screenshots, recordings, or supporting files
ImagesNoGitRepo.png
ImagesGitRepo.png
Astra Description and Research
The underlying behavior was reproduced independently using FFF 0.9.4 with T3's path-index configuration:
{
basePath: cwd,
disableMmapCache: true,
disableContentIndexing: true,
aiMode: false,
enableFsRootScanning: true,
enableHomeDirScanning: true,
}
After awaiting waitForIndexReady(), both mixedSearch("", { pageSize: 100 }) and fileSearch("", { pageSize: 100 }) omitted the images.
| State when FFF scans the folder | Result with FFF 0.9.4 |
|---|---|
| No Git repository | PNG, JPEG and .bin files missing |
| Git initialized before creating the files | Files included |
| Files created before Git initialization, then scanned | Files included |
| Files staged or committed | Files included |
For an index already opened without Git, running git init left the files absent in the immediate query. Calling scanFiles() and awaiting waitForIndexReady() restored them. The live-watcher behavior for files created after indexing wasn't independently tested.
The cause appears to be this explicit check in FFF 0.9.4's filesystem scanner:
if !is_git_repo && is_known_binary_extension(path) {
return ignore::WalkState::Continue;
}
This drops files before they enter the index. T3's WorkspaceSearchIndex.list() uses mixedSearch, but switching to file-only search wouldn't resolve the issue because both search the same incomplete index.
The filtering is based on extensions. Plain text saved as text.png was also excluded, while .txt and .svg files were included. The extension list covers other formats such as PDFs, archives, fonts and databases, though those weren't individually tested.
Possible fix: upgrading FFF looks promising. Running the same standalone reproduction against published version 0.10.6 included all the test files, with and without Git.
That upgrade hasn't been verified inside T3. It would need regression coverage for listing images in non-Git projects and a check of the existing Electron .asar.unpacked loading patch, since FFF's package layout changed between these versions.
A temporary workaround is to initialize Git and rebuild the server-side index. Existing images don't need to be recreated.
The dependency reproduction and source investigation were performed with Codex assistance. No production fix or integrated browser/mobile test has been completed.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in apps/server by tracing WorkspaceSearchIndex.list() and the FFF indexing calls, including scanFiles() and waitForIndexReady(). Reproduce the missing-image case in a non-Git project, then evaluate the FFF 0.10.6 upgrade while checking the existing Electron .asar.unpacked loading patch. Done means images appear in the Files sidebar without Git and regression coverage verifies the behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, typescript
- Domain
- backend, search
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100