Skip to content

Conversation

@arnavv-guptaa
Copy link
Contributor

Filesystem View

New filesystem browser with visual directory/file navigation
Monaco Editor integration for viewing most file types
Drag-and-drop support for file uploads and internal file movement
Copy-paste functionality for files
Git-aware file tracking integration

Data Viewer (Glide)

Interactive data viewer for tabular data formats:

Parquet files (via DuckDB integration)
CSV/TSV
Additional file types

Built-in SQL runner for querying data files directly
Dynamic handling when switching between data files

Screenshot 2026-01-22 at 12 14 21 AM

arnavv-guptaa and others added 7 commits January 21, 2026 23:59
Fix for

In `@src/renderer/features/agents/ui/file-tree/FileTreeContextMenu.tsx` around
lines 189 - 196, The ContextMenuShortcut display for ⌘N and ⇧⌘N is misleading
because FileTreeSidebar's keyboard handler does not handle those keys; update
the keyboard handling to invoke the same actions as the context menu or remove
the shortcuts from the UI. Specifically, either add handling for Cmd+N and
Shift+Cmd+N in the FileTreeSidebar keyboard handler to call the same callbacks
that the context menu uses (onNewFile and onNewFolder), or remove the
ContextMenuShortcut usages in FileTreeContextMenu around the ContextMenuItem
entries tied to onNewFile and onNewFolder so the hints are not shown.
fix for

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain
Nested symlinks are not validated during recursive copy.

The copyFiles procedure validates the top-level sourcePath at line 1216, but when copyDir recursively processes directories, it does not check nested symlinks. Inside copyDir, entries from readdir with withFileTypes: true return symlinks as regular file entries (not directories). These symlinks are then passed to copyFile, which follows symlinks to copy their targets. If a nested symlink points outside the project directory, the initial validation is bypassed.

Add symlink validation inside copyDir before calling copyFile, or check each nested path before following it.

🤖 Prompt for AI Agents
In `@src/main/lib/trpc/routers/files.ts` around lines 64 - 79, The recursive
copyDir function currently follows nested symlinks without validating them;
update copyDir to detect symlinks (use Dirent.isSymbolicLink() or fs.lstat on
srcPath), and before calling copyFile or recursing, resolve the symlink target
(fs.realpath) and validate the resolved path is inside the allowed project root
(compare path.resolve/realpath of target against the project root prefix) or
reject it; ensure you call the same validation logic used for the top-level
sourcePath (the one in copyFiles) for each nested symlink so copyFile never
follows an out-of-project symlink.
Fix for

coderabbitai bot
2 hours ago
⚠️ Potential issue | 🟠 Major

Path separator issue on Windows.

The containment check uses a hardcoded forward slash ("/"), but on Windows, path.resolve() returns paths with backslashes. This could allow path traversal on Windows systems.

Proposed fix using path.sep
🤖 Prompt for AI Agents
In `@src/main/lib/trpc/routers/files.ts` around lines 27 - 37, The containment
check in validatePathWithinDirectory uses a hardcoded "/" which fails on
Windows; update the check to use path.sep (or normalized separators) so you
compare consistent separators—compute a normalizedResolvedBase (e.g., ensure it
ends with path.sep) and test resolvedPath.startsWith(normalizedResolvedBase) or
equality to resolvedBase; adjust resolvedBase and resolvedPath handling to use
path.normalize()/path.sep before the startsWith check and keep throwing the same
error when the check fails.
Fix for

coderabbitai bot
1 minute ago
⚠️ Potential issue | 🟠 Major

Stale closure in auto-expand timer can lose folder expansion state.

The timer callback captures expandedFolders at creation time. If the user manually expands/collapses folders during the 500ms delay, those changes are overwritten when the timer fires.

Suggested fix using functional update
🤖 Prompt for AI Agents
In `@src/renderer/features/agents/ui/file-tree/FileTreeSidebar.tsx` around lines
416 - 423, The auto-expand timer callback captures the stale expandedFolders set
and can overwrite user actions; update the timer to use a functional state
update when calling setExpandedFolders so it computes the new Set from the
latest state (referencing expandedFolders only to check before scheduling), e.g.
inside the timeout use setExpandedFolders(prev => { const next = new Set(prev);
next.add(folderPath); return next; }) and keep using autoExpandTimerRef.current
to store/clear the timer.
Merged latest changes from upstream while preserving local features:
- File Tree Sidebar (local)
- Data Viewer Sidebar (local)
- File Viewer Sidebar (local)

New features from upstream:
- Viewed files state for diff review (GitHub-style checkboxes)
- Various UI/UX improvements and bug fixes
- New queue processing system
- Network status and offline handling
Removed aggressive abort in claude.ts to fix issue on follow up when in plan mode.
@bunasQ
Copy link
Member

bunasQ commented Jan 22, 2026

wow

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants