- Override performDragOperation to route file drops to attachment handler
- Wire onDropFileURLs through NSViewRepresentable
- Draggable resize handle between message list and composer
- GeometryReader with explicit height calculation for proper resizing
- Uncap textMaxHeight on macOS (was 64pt) so text area fills composer
- highPriorityGesture to prevent scroll view stealing the drag
Add NSToolbar with a gear dropdown to the chat window, replacing the
broken right-click menu bar interaction.
Gear menu: Talk Mode toggle, Settings (Cmd+,), Quit (Cmd+Q).
Also adds Talk Mode toggle to Settings > General.
Replace the menu bar NSPopover with a proper resizable NSWindow for the
chat interface. Left-click the menu bar icon to toggle the window.
- Chat opens as a standard macOS window (titled, closable, resizable,
miniaturizable) instead of a borderless popover anchored to the menu bar
- Window stays open when clicking desktop, enabling drag-and-drop workflows
- Add WebChatManager.toggleWindow() and closeWindow() for menu bar toggle
- Fix Talk Mode crash on launch (#36983): defer TalkModeController.setEnabled()
to next run loop to prevent Swift exclusivity violation in AppState.init()
Add GLIBC_TUNABLES, MAVEN_OPTS, SBT_OPTS, GRADLE_OPTS, ANT_OPTS,
DOTNET_ADDITIONAL_DEPS to blockedKeys and GRADLE_USER_HOME to
blockedOverrideKeys in the host exec security policy.
Closes#22681
* fix(macos): show sessions after controls in tray menu
When many sessions are active, the injected session rows push the
toggles, action buttons, and settings items off-screen, requiring
a scroll to reach them.
Change findInsertIndex and findNodesInsertIndex to anchor just before
the separator above 'Settings…' instead of before 'Send Heartbeats'.
This ensures the controls section is always immediately visible on
menu open, with sessions appearing below.
* refactor: extract findAnchoredInsertIndex to eliminate duplication
findInsertIndex and findNodesInsertIndex shared identical logic.
Extract into a single private helper so any future anchor change
(e.g. Settings item title) only needs one edit.
* macOS: use structural tray menu anchor
---------
Co-authored-by: Brian Ernesto <bernesto@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
Add JAVA_TOOL_OPTIONS, _JAVA_OPTIONS, JDK_JAVA_OPTIONS, PYTHONBREAKPOINT, and
DOTNET_STARTUP_HOOKS to blockedKeys in the host exec security policy.
Closes#22681
feat(cron): support persistent session targets for cron jobs (#9765)
Add support for `sessionTarget: "current"` and `session:<id>` so cron jobs can
bind to the creating session or a persistent named session instead of only
`main` or ephemeral `isolated` sessions.
Also:
- preserve custom session targets across reloads and restarts
- update gateway validation and normalization for the new target forms
- add cron coverage for current/custom session targets and fallback behavior
- fix merged CI regressions in Discord and diffs tests
- add a changelog entry for the new cron session behavior
Co-authored-by: kkhomej33-netizen <kkhomej33-netizen@users.noreply.github.com>
Co-authored-by: ImLukeF <92253590+ImLukeF@users.noreply.github.com>
* macOS: align minimum Node.js version with runtime guard
* macOS: add boundary and failure-message coverage for RuntimeLocator
* docs: add changelog note for the macOS runtime locator fix
* credit: original fix direction from @sumleo, cleaned up and rebased in #45640 by @ImLukeF