[PR #2340] [MERGED] feat(desktop): add Quick Entry overlay with global shortcut #9913

Closed
opened 2026-04-23 09:17:06 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/go-vikunja/vikunja/pull/2340
Author: @tink-bot
Created: 3/3/2026
Status: ✅ Merged
Merged: 4/1/2026
Merged by: @kolaente

Base: main ← Head: feat-quick-entry


📝 Commits (10+)

  • 285b803 feat(desktop): add preload script for quick entry window
  • b08055d feat(frontend): add useQuickAddMode composable for quick-add detection
  • 82d37db feat(frontend): add QuickAddOverlay component for quick-entry window
  • 853d654 feat(frontend): route quick-add mode to QuickAddOverlay in App.vue
  • 85b54b3 feat(frontend): adapt QuickActions for quick-add mode behavior
  • 529a45e feat(frontend): listen for cross-window task creation via BroadcastChannel
  • 56cea01 feat(desktop): add quick entry window, global shortcut, and system tray
  • 8b17be5 feat(desktop): open task in main window with Ctrl/Cmd+Enter
  • 91ff82f feat(frontend): add configurable quick entry shortcut setting
  • 4b43762 feat(desktop): configurable shortcut, --quick-entry CLI arg, show-main-window IPC

📊 Changes

18 files changed (+989 additions, -214 deletions)

View changed files

📝 desktop/main.js (+350 -78)
📝 desktop/package.json (+4 -0)
➕ desktop/preload-quick-entry.js (+8 -0)
📝 desktop/preload.js (+1 -0)
📝 frontend/src/App.vue (+36 -16)
📝 frontend/src/components/home/ContentAuth.vue (+15 -2)
➕ frontend/src/components/misc/ShortcutRecorder.vue (+208 -0)
📝 frontend/src/components/quick-actions/QuickActions.vue (+134 -23)
➕ frontend/src/components/quick-actions/QuickAddOverlay.vue (+57 -0)
📝 frontend/src/components/tasks/partials/QuickAddMagic.vue (+119 -93)
➕ frontend/src/composables/useQuickAddMode.ts (+4 -0)
📝 frontend/src/i18n/lang/en.json (+9 -1)
📝 frontend/src/modelTypes/IUserSettings.ts (+1 -0)
📝 frontend/src/models/userSettings.ts (+1 -0)
📝 frontend/src/stores/auth.ts (+6 -1)
📝 frontend/src/types/desktop.d.ts (+1 -0)
➕ frontend/src/types/quick-entry.d.ts (+7 -0)
📝 frontend/src/views/user/settings/General.vue (+28 -0)

📄 Description

Summary

  • Adds a global-hotkey-activated Quick Entry overlay window (CmdOrCtrl+Shift+A) to the Electron desktop app for fast task creation without switching to the main window
  • Reuses the existing QuickActions.vue component, auto-selecting "New Task" mode in the overlay
  • Adds system tray with Show/Quick Add/Quit menu and hide-to-tray on window close
  • Uses BroadcastChannel API to notify the main window to refresh after task creation from the overlay

New files

File Purpose
desktop/preload-quick-entry.js Context bridge exposing window.quickEntry.close() IPC
frontend/src/composables/useQuickAddMode.ts Detects ?mode=quick-add URL param
frontend/src/components/quick-actions/QuickAddOverlay.vue Wrapper component for the overlay window
frontend/src/types/quick-entry.d.ts TypeScript declaration for window.quickEntry

Modified files

File Changes
desktop/main.js Full rewrite: quick-entry BrowserWindow, globalShortcut, system tray, IPC, security fixes
desktop/package.json Added files array to electron-builder config
frontend/src/App.vue Routes ?mode=quick-add to QuickAddOverlay, transparent background
frontend/src/components/quick-actions/QuickActions.vue Auto-selects "New Task" in quick-add mode, BroadcastChannel notify, skip navigation
frontend/src/components/home/ContentAuth.vue BroadcastChannel listener to refresh on task creation
frontend/src/i18n/lang/en.json Added quickActions.notLoggedIn translation key

Test plan

  • App launches normally with main window and tray icon
  • CmdOrCtrl+Shift+A opens quick entry overlay centered in upper third
  • Overlay pre-selects "New Task" command
  • Typing a task title and pressing Enter creates the task and dismisses the overlay
  • Main window task list refreshes after quick-entry task creation
  • Clicking outside the overlay dismisses it (blur-to-hide)
  • Pressing Escape dismisses the overlay
  • Closing main window hides to tray (app keeps running)
  • Global shortcut works even with main window hidden
  • Tray menu: Show Vikunja, Quick Add Task, Quit all work
  • Not-logged-in state shows appropriate message in overlay

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/go-vikunja/vikunja/pull/2340 **Author:** [@tink-bot](https://github.com/tink-bot) **Created:** 3/3/2026 **Status:** ✅ Merged **Merged:** 4/1/2026 **Merged by:** [@kolaente](https://github.com/kolaente) **Base:** `main` ← **Head:** `feat-quick-entry` --- ### 📝 Commits (10+) - [`285b803`](https://github.com/go-vikunja/vikunja/commit/285b803451ed4d0141c9df02885618a0ed82716c) feat(desktop): add preload script for quick entry window - [`b08055d`](https://github.com/go-vikunja/vikunja/commit/b08055db924851a09f4a3a0867bfa105c6cb8cff) feat(frontend): add useQuickAddMode composable for quick-add detection - [`82d37db`](https://github.com/go-vikunja/vikunja/commit/82d37db3bb9e910b4d94939f5bb6b14e5802481b) feat(frontend): add QuickAddOverlay component for quick-entry window - [`853d654`](https://github.com/go-vikunja/vikunja/commit/853d65414ed3df5b5c5e41558eb4c019e353ac96) feat(frontend): route quick-add mode to QuickAddOverlay in App.vue - [`85b54b3`](https://github.com/go-vikunja/vikunja/commit/85b54b3a8da5ed4a81edd99ef11cca7353eba840) feat(frontend): adapt QuickActions for quick-add mode behavior - [`529a45e`](https://github.com/go-vikunja/vikunja/commit/529a45ed27b1a9ebda9812a18c57abac3188d43e) feat(frontend): listen for cross-window task creation via BroadcastChannel - [`56cea01`](https://github.com/go-vikunja/vikunja/commit/56cea010c3f6aabdf90e81a6c30720cd726860f5) feat(desktop): add quick entry window, global shortcut, and system tray - [`8b17be5`](https://github.com/go-vikunja/vikunja/commit/8b17be531382fd02de793f5d069c3ebf2b739ae0) feat(desktop): open task in main window with Ctrl/Cmd+Enter - [`91ff82f`](https://github.com/go-vikunja/vikunja/commit/91ff82fe681cf657d7b0b81ef9bec5043f607db5) feat(frontend): add configurable quick entry shortcut setting - [`4b43762`](https://github.com/go-vikunja/vikunja/commit/4b4376299969b9464a8defe94c88c8d797adddd5) feat(desktop): configurable shortcut, --quick-entry CLI arg, show-main-window IPC ### 📊 Changes **18 files changed** (+989 additions, -214 deletions) <details> <summary>View changed files</summary> 📝 `desktop/main.js` (+350 -78) 📝 `desktop/package.json` (+4 -0) ➕ `desktop/preload-quick-entry.js` (+8 -0) 📝 `desktop/preload.js` (+1 -0) 📝 `frontend/src/App.vue` (+36 -16) 📝 `frontend/src/components/home/ContentAuth.vue` (+15 -2) ➕ `frontend/src/components/misc/ShortcutRecorder.vue` (+208 -0) 📝 `frontend/src/components/quick-actions/QuickActions.vue` (+134 -23) ➕ `frontend/src/components/quick-actions/QuickAddOverlay.vue` (+57 -0) 📝 `frontend/src/components/tasks/partials/QuickAddMagic.vue` (+119 -93) ➕ `frontend/src/composables/useQuickAddMode.ts` (+4 -0) 📝 `frontend/src/i18n/lang/en.json` (+9 -1) 📝 `frontend/src/modelTypes/IUserSettings.ts` (+1 -0) 📝 `frontend/src/models/userSettings.ts` (+1 -0) 📝 `frontend/src/stores/auth.ts` (+6 -1) 📝 `frontend/src/types/desktop.d.ts` (+1 -0) ➕ `frontend/src/types/quick-entry.d.ts` (+7 -0) 📝 `frontend/src/views/user/settings/General.vue` (+28 -0) </details> ### 📄 Description ## Summary - Adds a global-hotkey-activated Quick Entry overlay window (`CmdOrCtrl+Shift+A`) to the Electron desktop app for fast task creation without switching to the main window - Reuses the existing `QuickActions.vue` component, auto-selecting "New Task" mode in the overlay - Adds system tray with Show/Quick Add/Quit menu and hide-to-tray on window close - Uses `BroadcastChannel` API to notify the main window to refresh after task creation from the overlay ### New files | File | Purpose | |------|---------| | `desktop/preload-quick-entry.js` | Context bridge exposing `window.quickEntry.close()` IPC | | `frontend/src/composables/useQuickAddMode.ts` | Detects `?mode=quick-add` URL param | | `frontend/src/components/quick-actions/QuickAddOverlay.vue` | Wrapper component for the overlay window | | `frontend/src/types/quick-entry.d.ts` | TypeScript declaration for `window.quickEntry` | ### Modified files | File | Changes | |------|---------| | `desktop/main.js` | Full rewrite: quick-entry BrowserWindow, globalShortcut, system tray, IPC, security fixes | | `desktop/package.json` | Added `files` array to electron-builder config | | `frontend/src/App.vue` | Routes `?mode=quick-add` to QuickAddOverlay, transparent background | | `frontend/src/components/quick-actions/QuickActions.vue` | Auto-selects "New Task" in quick-add mode, BroadcastChannel notify, skip navigation | | `frontend/src/components/home/ContentAuth.vue` | BroadcastChannel listener to refresh on task creation | | `frontend/src/i18n/lang/en.json` | Added `quickActions.notLoggedIn` translation key | ## Test plan - [ ] App launches normally with main window and tray icon - [ ] `CmdOrCtrl+Shift+A` opens quick entry overlay centered in upper third - [ ] Overlay pre-selects "New Task" command - [ ] Typing a task title and pressing Enter creates the task and dismisses the overlay - [ ] Main window task list refreshes after quick-entry task creation - [ ] Clicking outside the overlay dismisses it (blur-to-hide) - [ ] Pressing Escape dismisses the overlay - [ ] Closing main window hides to tray (app keeps running) - [ ] Global shortcut works even with main window hidden - [ ] Tray menu: Show Vikunja, Quick Add Task, Quit all work - [ ] Not-logged-in state shows appropriate message in overlay --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-23 09:17:06 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/vikunja#9913