diff --git a/packages/bruno-app/src/pages/Bruno/index.js b/packages/bruno-app/src/pages/Bruno/index.js index 199fdf895..776433420 100644 --- a/packages/bruno-app/src/pages/Bruno/index.js +++ b/packages/bruno-app/src/pages/Bruno/index.js @@ -13,6 +13,7 @@ import 'codemirror/theme/material.css'; import 'codemirror/theme/monokai.css'; import 'codemirror/addon/scroll/simplescrollbars.css'; import Devtools from 'components/Devtools'; +import Portal from 'components/Portal'; require('codemirror/mode/javascript/javascript'); require('codemirror/mode/xml/xml'); @@ -52,6 +53,7 @@ export default function Main() { const showHomePage = useSelector((state) => state.app.showHomePage); const isConsoleOpen = useSelector((state) => state.logs.isConsoleOpen); const mainSectionRef = useRef(null); + const [showRosettaBanner, setShowRosettaBanner] = useState(false); const className = classnames({ 'is-dragging': isDragging @@ -64,10 +66,11 @@ export default function Main() { const { ipcRenderer } = window; - const removeAppLoadedListener = ipcRenderer.on('main:app-loaded', () => { + const removeAppLoadedListener = ipcRenderer.on('main:app-loaded', (init) => { if (mainSectionRef.current) { mainSectionRef.current.setAttribute('data-app-state', 'loaded'); } + setShowRosettaBanner(init.isRunningInRosetta); }); return () => { @@ -77,10 +80,23 @@ export default function Main() { return ( // -
-
+ {showRosettaBanner ? ( + +
+ WARNING: +
+ It looks like Bruno was launched as the Intel (x64) build under Rosetta on your Apple Silicon Mac. This can cause reduced performance and unexpected behavior. +
+ +
+
+ ) : null} +
{ console.error('Failed to load cookies for renderer', err); } - mainWindow.webContents.send('main:app-loaded'); + mainWindow.webContents.send('main:app-loaded', { + isRunningInRosetta: getIsRunningInRosetta() + }); // Start system monitoring for FileSync systemMonitor.start(mainWindow); diff --git a/packages/bruno-electron/src/utils/arch.js b/packages/bruno-electron/src/utils/arch.js new file mode 100644 index 000000000..f5f3bf129 --- /dev/null +++ b/packages/bruno-electron/src/utils/arch.js @@ -0,0 +1,18 @@ +const getIsRunningInRosetta = () => { + const isMac = process.platform === 'darwin'; + const isArm64 = process.arch === 'arm64'; + + if (!isMac) return false; + if (isArm64) return false; + + const os = require('os'); + const isRunningOnSilicon = os.cpus().find((d) => d.model.includes('Apple')); + if (!isRunningOnSilicon) { + return false; + } + return true; +}; + +module.exports = { + getIsRunningInRosetta +};