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

Open
opened 2026-03-22 15:01:05 -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: 🔄 Open

Base: main ← Head: feat-quick-entry


📝 Commits (10+)

  • ec6ce1b feat(desktop): add preload script for quick entry window
  • 82fa162 build(desktop): include preload script in electron-builder files
  • c6751b4 feat(frontend): add useQuickAddMode composable for quick-add detection
  • 1060d59 feat(frontend): add QuickAddOverlay component for quick-entry window
  • baac3fa feat(frontend): route quick-add mode to QuickAddOverlay in App.vue
  • d96ea82 feat(frontend): adapt QuickActions for quick-add mode behavior
  • d41622d feat(frontend): listen for cross-window task creation via BroadcastChannel
  • 7860abd feat(desktop): add quick entry window, global shortcut, and system tray
  • 3addb01 fix(desktop): validate URL protocols before opening externally, add window open handler to quick-entry, log shortcut registration failure
  • eae0eae fix(frontend): add open/close events to QuickAddMagic component

📊 Changes

11 files changed (+450 additions, -80 deletions)

View changed files

📝 desktop/main.js (+247 -40)
📝 desktop/package.json (+4 -0)
➕ desktop/preload-quick-entry.js (+7 -0)
📝 frontend/src/App.vue (+36 -16)
📝 frontend/src/components/home/ContentAuth.vue (+13 -1)
📝 frontend/src/components/quick-actions/QuickActions.vue (+77 -20)
➕ frontend/src/components/quick-actions/QuickAddOverlay.vue (+37 -0)
📝 frontend/src/components/tasks/partials/QuickAddMagic.vue (+18 -3)
➕ frontend/src/composables/useQuickAddMode.ts (+4 -0)
📝 frontend/src/i18n/lang/en.json (+1 -0)
➕ frontend/src/types/quick-entry.d.ts (+6 -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:** 🔄 Open **Base:** `main` ← **Head:** `feat-quick-entry` --- ### 📝 Commits (10+) - [`ec6ce1b`](https://github.com/go-vikunja/vikunja/commit/ec6ce1b169d955ebb3b16206b25acb6cf4a28899) feat(desktop): add preload script for quick entry window - [`82fa162`](https://github.com/go-vikunja/vikunja/commit/82fa162962892ef161c4640b71e299f9c1decb73) build(desktop): include preload script in electron-builder files - [`c6751b4`](https://github.com/go-vikunja/vikunja/commit/c6751b4a666bb9972d86a7e5ce291e823e427e4d) feat(frontend): add useQuickAddMode composable for quick-add detection - [`1060d59`](https://github.com/go-vikunja/vikunja/commit/1060d592da77eb3ce4ee78a11cbfbe9819cf3b81) feat(frontend): add QuickAddOverlay component for quick-entry window - [`baac3fa`](https://github.com/go-vikunja/vikunja/commit/baac3fa3929fea8e0ee4746e31a30a11396fa379) feat(frontend): route quick-add mode to QuickAddOverlay in App.vue - [`d96ea82`](https://github.com/go-vikunja/vikunja/commit/d96ea821b93fc785056b792320bb07c019c2c90f) feat(frontend): adapt QuickActions for quick-add mode behavior - [`d41622d`](https://github.com/go-vikunja/vikunja/commit/d41622df0e74cadac7ee63135a8e88ed4d723c2b) feat(frontend): listen for cross-window task creation via BroadcastChannel - [`7860abd`](https://github.com/go-vikunja/vikunja/commit/7860abddff4976c3c8d43bc50c5ccfeed3cd1b0e) feat(desktop): add quick entry window, global shortcut, and system tray - [`3addb01`](https://github.com/go-vikunja/vikunja/commit/3addb0115e4e1d4115f7c836d8deb3c14d3be8ea) fix(desktop): validate URL protocols before opening externally, add window open handler to quick-entry, log shortcut registration failure - [`eae0eae`](https://github.com/go-vikunja/vikunja/commit/eae0eaed23ba746dba9f91873a0c97c794c369bb) fix(frontend): add open/close events to QuickAddMagic component ### 📊 Changes **11 files changed** (+450 additions, -80 deletions) <details> <summary>View changed files</summary> 📝 `desktop/main.js` (+247 -40) 📝 `desktop/package.json` (+4 -0) ➕ `desktop/preload-quick-entry.js` (+7 -0) 📝 `frontend/src/App.vue` (+36 -16) 📝 `frontend/src/components/home/ContentAuth.vue` (+13 -1) 📝 `frontend/src/components/quick-actions/QuickActions.vue` (+77 -20) ➕ `frontend/src/components/quick-actions/QuickAddOverlay.vue` (+37 -0) 📝 `frontend/src/components/tasks/partials/QuickAddMagic.vue` (+18 -3) ➕ `frontend/src/composables/useQuickAddMode.ts` (+4 -0) 📝 `frontend/src/i18n/lang/en.json` (+1 -0) ➕ `frontend/src/types/quick-entry.d.ts` (+6 -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-03-22 15:01:05 -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#4072