- Notifications
You must be signed in to change notification settings - Fork506
chore: integrate feature branches into local_main#529
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
… '# Folder: <name>' headers); toasts and dedupe
…le) and adjust top padding for alignment
…yy), right-aligned and vertically centered
…Files sidebar; IPC handlers and preload wiring
…es sidebar for quicker access
… to Files sidebar header)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Greptile Summary
This PR integrates four feature branches into a single integration branch, combining significant enhancements to file management, UI improvements, and model updates. The changes include:
Multi-select and Batch Operations: Adds comprehensive multi-select functionality to the file sidebar with support for Ctrl/Cmd and Shift key combinations. Users can now select multiple files and perform bulk "Copy Markdown" operations, including intelligent folder content aggregation with proper header formatting and deduplication logic.
Note Timestamps Feature: Introduces a newNoteTimestamps
component that displays file creation and modification dates directly in the editor interface. The component allows users to toggle between creation and modification timestamps with keyboard accessibility support, providing temporal context for notes.
Sidebar Quality-of-Life Improvements: Relocates "New Note" and "New Directory" action buttons from the main navigation sidebar to the Files sidebar header for better contextual placement. Adds a persistent date visibility toggle (calendar icon) that allows users to show/hide file modification dates in the sidebar, with preferences stored in the electron store across sessions.
Model Upgrade: Updates the default Anthropic model fromclaude-3-5-sonnet-latest
toclaude-sonnet-4-20250514
, upgrading to the newer generation Claude Sonnet 4 model while switching from an alias to a specific version snapshot for better consistency.
Infrastructure Updates: Extends the electron store schema with new IPC handlers for file date visibility preferences, adds proper preload layer exposure for secure cross-process communication, and updates.gitignore
to exclude user-customizable agent configuration files.
The integration involved careful conflict resolution, particularly merging the multi-select logic with date display inFileItemRows.tsx
and combining action buttons with the date toggle inFileSidebar.tsx
. The changes maintain backward compatibility while adding these power-user features through the existingFileContext
architecture.
Confidence score: 4/5
- This PR introduces substantial new functionality but appears well-architected with appropriate separation of concerns and follows existing patterns
- Score reflects the complexity of integrating multiple features simultaneously, though individual changes appear solid
- Pay close attention to FileContext.tsx performance optimization and FileItemRows.tsx multi-select logic complexity
11 files reviewed, 2 comments
role="button" | ||
tabIndex={0} | ||
onKeyDown={(e)=>{ | ||
if(e.key==='Enter'||e.key===' ')setShowUpdated((prev)=>!prev) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
logic: Missing preventDefault() call for space key to prevent page scrolling
if(e.key==='Enter'||e.key===' ')setShowUpdated((prev)=>!prev) | |
if(e.key==='Enter'||e.key===' '){ | |
e.preventDefault() | |
setShowUpdated((prev)=>!prev) | |
} |
useEffect(()=>{ | ||
constinit=async()=>{ | ||
constval=awaitwindow.electronStore.getFileIndexDateVisibility() | ||
setShowDates(val) | ||
} | ||
init() | ||
consthandler=(_e:any,val:boolean)=>setShowDates(val) | ||
window.ipcRenderer.on('file-index-date-visibility-changed',handler) | ||
},[]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
logic: Missing cleanup for IPC listener - this will cause memory leaks. Add return statement to remove the listener on unmount.
useEffect(()=>{ | |
constinit=async()=>{ | |
constval=awaitwindow.electronStore.getFileIndexDateVisibility() | |
setShowDates(val) | |
} | |
init() | |
consthandler=(_e:any,val:boolean)=>setShowDates(val) | |
window.ipcRenderer.on('file-index-date-visibility-changed',handler) | |
},[]) | |
useEffect(()=>{ | |
constinit=async()=>{ | |
constval=awaitwindow.electronStore.getFileIndexDateVisibility() | |
setShowDates(val) | |
} | |
init() | |
consthandler=(_e:any,val:boolean)=>setShowDates(val) | |
window.ipcRenderer.on('file-index-date-visibility-changed',handler) | |
return()=>{ | |
window.ipcRenderer.off('file-index-date-visibility-changed',handler) | |
} | |
},[]) |
This PR aggregates the following branches from the fork into a single integration branch:
Conflict resolutions: