Skip to content

feat(file-tree): add performant virtualized file tree#2526

Open
bajrangCoder wants to merge 2 commits into
mainfrom
feat/file-tree-virtualization
Open

feat(file-tree): add performant virtualized file tree#2526
bajrangCoder wants to merge 2 commits into
mainfrom
feat/file-tree-virtualization

Conversation

@bajrangCoder

Copy link
Copy Markdown
Member

No description provided.

@greptile-apps

greptile-apps Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a virtualized file tree for large directory listings. The main changes are:

  • Lazy hierarchical directory loading with saved expansion state.
  • Recycled rows and dynamic overscan using TanStack Virtual.
  • Keyboard navigation and tree accessibility attributes.
  • Model-based updates for copy, move, removal, and cut state.
  • Serialized FTP operations for stateful connections.

Confidence Score: 5/5

This looks safe to merge.

  • The latest changes update every mounted virtual tree and preserve updates for legacy views.
  • Virtual rows no longer receive direct DOM mutations when their folders are unloaded.
  • No blocking issues remain in the changed synchronization paths.

Important Files Changed

Filename Overview
src/lib/openFolder.js Synchronizes file operations across mounted virtual trees and legacy folder views.
src/components/fileTree/index.js Adds the hierarchical file-tree model, lazy loading, reconciliation, navigation, and model update APIs.
src/components/virtualList/index.js Adds the TanStack Virtual adapter with row recycling and dynamic overscan.
src/plugins/ftp/src/android/com/foxdebug/ftp/Ftp.java Serializes FTP operations to protect the stateful connection and data channel.

Reviews (2): Last reviewed commit: "free" | Re-trigger Greptile

@bajrangCoder

This comment was marked as outdated.

@UnschooledGamer UnschooledGamer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, should use will change transform wherever it's not in the css style. As it would indicate the browser that this property(e.g: transform) may change later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants