diff --git a/packages/core/guide-viewer-manifest.ts b/packages/core/guide-viewer-manifest.ts index a3446bd79..4e99790be 100644 --- a/packages/core/guide-viewer-manifest.ts +++ b/packages/core/guide-viewer-manifest.ts @@ -6,9 +6,9 @@ import type { GuideViewerAssets } from "./guide-format"; export const GUIDE_VIEWER_MANIFEST: Omit = { js: "viewer.CTfggrYt.js", - css: "viewer.BdruF6Mj.css", + css: "viewer.bodgv3Hj.css", jsIntegrity: "sha384-It85Hkx0/d1Xme4SJjt3shHybLPGucRF/OODzE84mbOmGH8fK66eFNzgFRXe2W4Z", - cssIntegrity: "sha384-9i0z0HV8a5Hr0SAQt0+pUfQE96MTbGaCWtZlSzhk+HKIHXsqrGi16HQA4mlEWRvx", + cssIntegrity: "sha384-QdcBsIL0BoPsyZoTpe07CMpF0oKoBI3udITgij6RMlwBTW3Qp9SVR2na165Fit+H", langs: { "astro": "chunks/astro.BykyiR6i.js", "c": "chunks/c.BIGW1oBm.js", diff --git a/packages/editor/components/AppHeader.tsx b/packages/editor/components/AppHeader.tsx index 7c3f95ef2..c18586e58 100644 --- a/packages/editor/components/AppHeader.tsx +++ b/packages/editor/components/AppHeader.tsx @@ -194,6 +194,8 @@ export const AppHeader = React.memo(({ bearConfigured, octarineConfigured, }) => { + const settingsReturnFocusRef = React.useRef(null); + return (
(({ onExternalClose={onCloseSettings} gitUser={gitUser} agentTerminalAvailable={agentTerminalAvailable} + isCompactTouchLayout={compactTouchLayout} + returnFocusRef={settingsReturnFocusRef} /> { const [showExportModal, setShowExportModal] = useState(false); const [showWorktreeDialog, setShowWorktreeDialog] = useState(false); const [openSettingsMenu, setOpenSettingsMenu] = useState(false); + const settingsReturnFocusRef = useRef(null); const [showNoAnnotationsDialog, setShowNoAnnotationsDialog] = useState(false); const [isLoading, setIsLoading] = useState(true); const diffStyle = useConfigValue('diffStyle'); @@ -4034,6 +4035,7 @@ const ReviewApp: React.FC = () => {
setOpenSettingsMenu(true)} onOpenReviewSetup={sectionsCapable ? () => { reviewSetupIsFirstRun.current = false; setShowReviewSetup(true); } : undefined} onOpenExport={() => setShowExportModal(true)} @@ -4534,6 +4536,7 @@ const ReviewApp: React.FC = () => { // Display tab hides the Split/Unified control rather than writing // the desktop preference from a phone. isCompactTouchLayout={isCompactTouchLayout} + returnFocusRef={settingsReturnFocusRef} />
diff --git a/packages/review-editor/components/ReviewHeaderMenu.tsx b/packages/review-editor/components/ReviewHeaderMenu.tsx index 64899ab0a..5a3a9c19e 100644 --- a/packages/review-editor/components/ReviewHeaderMenu.tsx +++ b/packages/review-editor/components/ReviewHeaderMenu.tsx @@ -33,6 +33,7 @@ export interface CompactReviewAction { } interface ReviewHeaderMenuProps { + triggerRef?: React.Ref; onOpenSettings: () => void; onOpenReviewSetup?: () => void; onOpenExport: () => void; @@ -56,6 +57,7 @@ interface ReviewHeaderMenuProps { } export const ReviewHeaderMenu: React.FC = ({ + triggerRef, onOpenSettings, onOpenReviewSetup, onOpenExport, @@ -90,6 +92,7 @@ export const ReviewHeaderMenu: React.FC = ({ } renderTrigger={({ isOpen, toggleMenu }) => ( - - -
- {/* Mobile: horizontal tab bar */} - + ) : ( +
+ ) : ( +
+

Settings

+ +
+ )} + +
+ {isCompactTouchLayout && compactScreen === 'sections' && ( + + + + )} {/* Content — scrollable */} - -
+ {(!isCompactTouchLayout || compactScreen === 'detail') && ( + +
{/* === GENERAL TAB === */} {activeTab === 'general' && ( @@ -2135,7 +2406,7 @@ export const Settings: React.FC = ({ taterMode, onTaterModeChange
-
+
{vaultsLoading ? ( @@ -2472,6 +2743,7 @@ tags: [plan, ...]
+ )}
, @@ -2479,7 +2751,10 @@ tags: [plan, ...] )} {themePreview && createPortal( -
+
Theme Preview