Skip to content

feat(desktop): allow renaming projects in sidebar#994

Merged
Kitenite merged 1 commit intomainfrom
kiet-ho/allow-rename-project-in-settings
Jan 27, 2026
Merged

feat(desktop): allow renaming projects in sidebar#994
Kitenite merged 1 commit intomainfrom
kiet-ho/allow-rename-project-in-settings

Conversation

@Kitenite
Copy link
Copy Markdown
Collaborator

@Kitenite Kitenite commented Jan 27, 2026

Summary

  • Add ability to rename projects via right-click context menu in the sidebar
  • Support double-click to rename in the expanded sidebar view
  • Create reusable RenameInput component with auto-focus and text selection

Test plan

  • Right-click on a project in the sidebar and select "Rename"
  • Verify the input field appears with the project name selected
  • Enter a new name and press Enter or click away to save
  • Press Escape to cancel renaming
  • Double-click on a project name in the expanded sidebar to rename

Summary by CodeRabbit

  • New Features
    • Added inline project renaming capability: double-click project name or select "Rename" from context menu
    • Supports keyboard shortcuts: Enter to confirm, Escape to cancel
    • Auto-focuses input field with text pre-selected for quick editing
    • Input validation ensures non-empty, changed names are saved

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jan 27, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

This pull request introduces a complete project rename feature for the desktop application. It adds a new useProjectRename hook to manage rename state, a RenameInput component for inline editing, and integrates both into the ProjectHeader component to enable in-place project name editing via double-click or context menu.

Changes

Cohort / File(s) Summary
Rename Hook Implementation
apps/desktop/src/renderer/screens/main/hooks/useProjectRename/useProjectRename.ts, apps/desktop/src/renderer/screens/main/hooks/useProjectRename/index.ts
Introduces useProjectRename hook managing rename state (isRenaming, renameValue), with actions: startRename, submitRename (validates and calls useUpdateProject), cancelRename, and handleKeyDown (Enter/Escape).
Rename Input Component
apps/desktop/src/renderer/screens/main/components/WorkspaceSidebar/RenameInput/RenameInput.tsx, apps/desktop/src/renderer/screens/main/components/WorkspaceSidebar/RenameInput/index.ts
New functional component with auto-focus and select on mount (delayed 100ms). Handles Enter (submit) and Escape (cancel) keys, blur (submit), and prevents event propagation on keydown/click/mousedown.
Project Header Integration
apps/desktop/src/renderer/screens/main/components/WorkspaceSidebar/ProjectSection/ProjectHeader.tsx
Integrates useProjectRename hook and RenameInput component; adds Rename option to expanded and collapsed context menus; enables in-place editing on double-click; conditionally renders rename input or clickable header area; extends button behavior with onDoubleClick to start rename.

Sequence Diagram

sequenceDiagram
    actor User
    participant ProjectHeader
    participant RenameInput
    participant useProjectRename
    participant UpdateProject

    User->>ProjectHeader: Double-click or click Rename menu
    ProjectHeader->>useProjectRename: startRename()
    activate ProjectHeader
    ProjectHeader->>RenameInput: Render with initial value
    activate RenameInput
    RenameInput->>RenameInput: Auto-focus & select text
    
    User->>RenameInput: Type new name
    RenameInput->>useProjectRename: onChange(newValue)
    
    alt User presses Enter or loses focus
        RenameInput->>useProjectRename: submitRename()
        activate useProjectRename
        useProjectRename->>useProjectRename: Validate & trim
        alt Value changed and non-empty
            useProjectRename->>UpdateProject: mutate(newName)
            activate UpdateProject
            UpdateProject->>UpdateProject: Update project
            deactivate UpdateProject
        else Value unchanged or empty
            useProjectRename->>useProjectRename: Revert to original
        end
        useProjectRename->>ProjectHeader: Update isRenaming state
        deactivate useProjectRename
    else User presses Escape
        RenameInput->>useProjectRename: cancelRename()
        useProjectRename->>ProjectHeader: Revert state
    end
    
    deactivate RenameInput
    deactivate ProjectHeader
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 A hop, skip, and rename away,
Double-click makes projects play,
Escape to quit, or Enter to say,
The project's got a brand new name today! ✨

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Kitenite Kitenite merged commit f63d3c6 into main Jan 27, 2026
4 of 5 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

  • ⚠️ Neon database branch
  • ⚠️ Electric Fly.io app

Thank you for your contribution! 🎉

@Kitenite Kitenite deleted the kiet-ho/allow-rename-project-in-settings branch January 28, 2026 00:49
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.

1 participant