diff --git a/.changeset/terminal-toolbar-display-toggles.md b/.changeset/terminal-toolbar-display-toggles.md
new file mode 100644
index 0000000000..766d0465bd
--- /dev/null
+++ b/.changeset/terminal-toolbar-display-toggles.md
@@ -0,0 +1,7 @@
+---
+"@runfusion/fusion": patch
+---
+
+summary: Terminal pin and pop-out toggles now sit in the top toolbar left of the close button.
+category: fix
+dev: Moves terminal-pin-toggle/terminal-popout-toggle out of terminalActionControls into a shared header fragment in TerminalModal.tsx.
diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md
index c5120bb841..ed950c7e9e 100644
--- a/docs/dashboard-guide.md
+++ b/docs/dashboard-guide.md
@@ -851,18 +851,18 @@ Task Detail has two terminal-adjacent tabs when both are applicable: **Session**
On Windows, the embedded terminal starts a supported shell inside Fusion, such as Command Prompt (`cmd.exe`) or Windows PowerShell. Windows Terminal (`wt.exe`) is an external terminal host and is not required or launched for the embedded panel, so Fusion should not show native Windows Terminal help/version popups while starting a terminal. If embedded terminal startup fails, Fusion shows an inline error with **Retry** instead of a blocking native dialog; install or repair Windows Terminal separately with `winget install Microsoft.WindowsTerminal` only if you want to use Windows Terminal outside Fusion.
-
+
Use the terminal on desktop/tablet:
1. Select the **Terminal** button in the footer executor status bar.
- Expected outcome: the terminal opens as a bottom-docked overlay panel with the active shell session and a draggable top resize handle. The font size / clear / shortcuts / preferences controls, connection status, pin, and pop-out controls render in the terminal's bottom action-control footer at every desktop/tablet width, so the header only has to carry the tab affordance, title/status, workspace picker, and close button.
-2. Select **Pin terminal (push content)** from the bottom action-control footer.
- Expected outcome: the terminal moves into a persisted below-application panel that reserves space instead of covering the board, chat, or right sidebar. The pinned panel also reserves space above the fixed status footer (the executor status bar), so the terminal's own bottom action-control footer (font size, Clear, Shortcuts, Preferences, connection status, pin/pop-out) stays fully visible instead of being covered by it. Select **Unpin terminal (overlay content)** to return to the overlay docked panel.
+ Expected outcome: the terminal opens as a bottom-docked overlay panel with the active shell session and a draggable top resize handle. Font size / clear / shortcuts / preferences controls and connection status render in the bottom action-control footer, while pin and pop-out toggles render in the top toolbar immediately left of the close button at every desktop/tablet width.
+2. Select **Pin terminal (push content)** from the top toolbar immediately left of Close.
+ Expected outcome: the terminal moves into a persisted below-application panel that reserves space instead of covering the board, chat, or right sidebar. The pinned panel also reserves space above the fixed status footer (the executor status bar), so its bottom action-control footer (font size, Clear, Shortcuts, Preferences, connection status, and exit code) stays fully visible instead of being covered by it. Select **Unpin terminal (overlay content)** in the top toolbar to return to the overlay docked panel.
3. Drag the top edge of the docked or pinned panel.
Expected outcome: the panel height changes within its viewport-safe bounds and persists per project, with pinned mode clamped shorter so the application remains usable.
-4. Select **Pop out** from the bottom action-control footer.
+4. Select **Pop out** from the top toolbar immediately left of Close.
Expected outcome: the terminal switches to a floating window that can be dragged and freely resized; size, position, and display mode are saved per project. On touch tablets, drag the reserved header grip rather than the horizontally scrollable tab strip.
-5. Select **Dock** in the floating terminal.
+5. Select **Dock** from the same top-toolbar control in the floating terminal.
Expected outcome: the terminal returns to the bottom docked overlay panel using the saved docked height.
6. Select the scripts chevron beside the footer **Terminal** button.
Expected outcome: the quick scripts menu opens without toggling the terminal; choosing a script runs it in the terminal, and the menu footer opens script management.
diff --git a/packages/dashboard/app/components/TerminalModal.css b/packages/dashboard/app/components/TerminalModal.css
index ff81dd2618..c77b5abc52 100644
--- a/packages/dashboard/app/components/TerminalModal.css
+++ b/packages/dashboard/app/components/TerminalModal.css
@@ -302,8 +302,8 @@ stopPropagation in renderTerminalTabStrip.
/*
FNXC:TerminalModalControls 2026-07-31-22:19:
-Tablets start docked, so the footer pop-out control needs the same touch-sized reach without
-changing its established 14px icon or footer layout. Its pseudo-element only enlarges the button
+Tablets start docked, so the header pop-out control needs the same touch-sized reach without
+changing its established 14px icon or toolbar layout. Its pseudo-element only enlarges the button
hit area; it is not a second terminal control.
*/
.modal.terminal-modal.terminal-modal--tablet .terminal-clear-btn.terminal-clear-btn--icon[data-testid="terminal-popout-toggle"] {
diff --git a/packages/dashboard/app/components/TerminalModal.tsx b/packages/dashboard/app/components/TerminalModal.tsx
index 15a5986ba1..4cdd4a5f98 100644
--- a/packages/dashboard/app/components/TerminalModal.tsx
+++ b/packages/dashboard/app/components/TerminalModal.tsx
@@ -2341,7 +2341,7 @@ export function TerminalModal({ isOpen, onClose, initialCommand, initialCommandG
/*
FNXC:TerminalFooter 2026-07-11-20:20:
- FN-7829 moves the single terminal action-control cluster (reconnect/restart, font-size, Clear, Shortcuts toggle, Preferences toggle, connection status, exit code, help text, and the non-mobile pin/pop-out toggles) into the bottom `.terminal-status-bar` footer at every breakpoint. The header never renders `.terminal-actions`; keeping this as one shared fragment rendered in exactly one footer location prevents handler drift across desktop, tablet, mobile, floating, docked, pinned-below, and embedded modes.
+ FN-7829 keeps the single terminal action-control cluster (reconnect/restart, font-size, Clear, Shortcuts toggle, Preferences toggle, connection status, exit code, and help text) in the bottom `.terminal-status-bar` footer at every breakpoint. Pin/pop-out use their own single header fragment beside close; the header still never renders `.terminal-actions`, preventing handler drift across all presentation modes.
*/
const terminalActionControls = (
<>
@@ -2399,30 +2399,36 @@ export function TerminalModal({ isOpen, onClose, initialCommand, initialCommandG
{connectionStatus === "disconnected" && t("terminal.statusDisconnected", "Disconnected")}
{exitCode !== null && {t("terminal.exitLabel", "Exit: {{code}}", { code: exitCode })}}
- {!embedded && !isMobileTerminal && (
-
- )}
- {!embedded && !isMobileTerminal && (
-
- )}
+ >
+ );
+
+ /*
+ FNXC:TerminalModalControls 2026-08-13-08:13:
+ The operator requires pin and pop-out toggles in the top toolbar immediately left of close.
+ Keep this shared fragment at one header render site; mobile and embedded terminals render neither.
+ */
+ const terminalDisplayModeControls = (
+ <>
+
+
>
);
@@ -2711,12 +2717,15 @@ export function TerminalModal({ isOpen, onClose, initialCommand, initialCommandG
{/*
FNXC:TerminalModalControls 2026-08-03-00:21:
Every non-embedded terminal has exactly one modal-close control, rendered after the
- tab region (including its new-terminal affordance), optional workspace picker, and
- status title. Keeping one shared final render site makes the close-after-plus,
- far-right contract structural for desktop, tablet, ResizeObserver overflow, and mobile.
+ tab region (including its new-terminal affordance), optional workspace picker, status
+ title, and non-mobile pin/pop-out controls. Keeping one shared final render site makes
+ the close-after-plus, far-right contract structural for desktop, tablet,
+ ResizeObserver overflow, and mobile.
Mobile keeps the corner class so its explicit flex order remains last; embedded terminals
intentionally render no modal-close control because their parent owns dismissal.
*/}
+ {!embedded && !isMobileTerminal && terminalDisplayModeControls}
+
{!embedded && (