fix local env exec checks not being flagged as failed, minor UI adjustments

This commit is contained in:
lone-cloud 2026-03-22 09:27:07 -07:00
parent 940dcb9912
commit 8b859e0ffb
9 changed files with 77 additions and 71 deletions

View file

@ -1,6 +1,6 @@
{ {
"name": "gerbil", "name": "gerbil",
"version": "1.20.4", "version": "1.20.5",
"description": "Run Large Language Models locally", "description": "Run Large Language Models locally",
"keywords": [ "keywords": [
"ai", "ai",
@ -69,7 +69,7 @@
"jiti": "^2.6.1", "jiti": "^2.6.1",
"oxfmt": "^0.41.0", "oxfmt": "^0.41.0",
"oxlint": "^1.56.0", "oxlint": "^1.56.0",
"oxlint-tsgolint": "^0.17.0", "oxlint-tsgolint": "^0.17.1",
"rollup-plugin-visualizer": "^7.0.1", "rollup-plugin-visualizer": "^7.0.1",
"typescript": "^5.9.3", "typescript": "^5.9.3",
"vite": "^8.0.1" "vite": "^8.0.1"

102
pnpm-lock.yaml generated
View file

@ -122,10 +122,10 @@ importers:
version: 0.41.0 version: 0.41.0
oxlint: oxlint:
specifier: ^1.56.0 specifier: ^1.56.0
version: 1.56.0(oxlint-tsgolint@0.17.0) version: 1.56.0(oxlint-tsgolint@0.17.1)
oxlint-tsgolint: oxlint-tsgolint:
specifier: ^0.17.0 specifier: ^0.17.1
version: 0.17.0 version: 0.17.1
rollup-plugin-visualizer: rollup-plugin-visualizer:
specifier: ^7.0.1 specifier: ^7.0.1
version: 7.0.1(rolldown@1.0.0-rc.10) version: 7.0.1(rolldown@1.0.0-rc.10)
@ -494,8 +494,8 @@ packages:
engines: {node: '>=20'} engines: {node: '>=20'}
hasBin: true hasBin: true
'@huggingface/tasks@0.20.4': '@huggingface/tasks@0.20.6':
resolution: {integrity: sha512-e1y8xWI9cFOcpfT6ST/UXrcgJK33CMVPcub49CN/ebshi+Gr7fP5iTK4etKWAFc625gYKEslMw7BXSzCnVOFWQ==} resolution: {integrity: sha512-CmYR01zmL6yXtCww2qRPPtdwzJnXd6V3XERi+E4YjJaDQOp9DaSGJXHphFpzxpNnKtQViRednqsAEPF436YKZg==}
'@isaacs/cliui@8.0.2': '@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
@ -689,33 +689,33 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@oxlint-tsgolint/darwin-arm64@0.17.0': '@oxlint-tsgolint/darwin-arm64@0.17.1':
resolution: {integrity: sha512-z3XwCDuOAKgk7bO4y5tyH8Zogwr51G56R0XGKC3tlAbrAq8DecoxAd3qhRZqWBMG2Gzl5bWU3Ghu7lrxuLPzYw==} resolution: {integrity: sha512-JNWNwyvSDcUQSBlQRl10XrCeNcN66TMvDw3gIDQeop5SNa1F7wFhsEx4zitYb7fGHwGh9095tsNttmuCaNXCbw==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@oxlint-tsgolint/darwin-x64@0.17.0': '@oxlint-tsgolint/darwin-x64@0.17.1':
resolution: {integrity: sha512-TZgVXy0MtI8nt0MYiceuZhHPwHcwlIZ/YwzFTAKrgdHiTvVzFbqHVdXi5wbZfT/o1nHGw9fbGWPlb6qKZ4uZ9Q==} resolution: {integrity: sha512-SluNf6CW88pgGPqQUGC5GoK5qESWo2ct1PRDbza3vbf9SK2npx3igvylGQIgE9qYYOcjgnVdLOJ0+q0gItgUmQ==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@oxlint-tsgolint/linux-arm64@0.17.0': '@oxlint-tsgolint/linux-arm64@0.17.1':
resolution: {integrity: sha512-IDfhFl/Y8bjidCvAP6QAxVyBsl78TmfCHlfjtEv2XtJXgYmIwzv6muO18XMp74SZ2qAyD4y2n2dUedrmghGHeA==} resolution: {integrity: sha512-BJxQ7/cdo2dNdGIBs2PIR6BaPA7cPfe+r1HE/uY+K7g2ygip+0LHB3GUO9GaNDZuWpsnDyjLYYowEGrVK8dokA==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@oxlint-tsgolint/linux-x64@0.17.0': '@oxlint-tsgolint/linux-x64@0.17.1':
resolution: {integrity: sha512-Bgdgqx/m8EnfjmmlRLEeYy9Yhdt1GdFrMr5mTu/NyLRGkB1C9VLAikdxB7U9QambAGTAmjMbHNFDFk8Vx69Huw==} resolution: {integrity: sha512-s6UjmuaJbZ4zz/wJKdEw/s5mc0t41rgwxQJCSHPuzMumMK6ylrB7nydhDf8ObTtzhTIZdAS/2S/uayJmDcGbxw==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@oxlint-tsgolint/win32-arm64@0.17.0': '@oxlint-tsgolint/win32-arm64@0.17.1':
resolution: {integrity: sha512-dO6wyKMDqFWh1vwr+zNZS7/ovlfGgl4S3P1LDy4CKjP6V6NGtdmEwWkWax8j/I8RzGZdfXKnoUfb/qhVg5bx0w==} resolution: {integrity: sha512-EO/Oj0ixHX+UQdu9hM7YUzibZI888MvPUo/DF8lSxFBt4JNEt8qGkwJEbCYjB/1LhUNmPHzSw2Tr9dCFVfW9nw==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@oxlint-tsgolint/win32-x64@0.17.0': '@oxlint-tsgolint/win32-x64@0.17.1':
resolution: {integrity: sha512-lPGYFp3yX2nh6hLTpIuMnJbZnt3Df42VkoA/fSkMYi2a/LXdDytQGpgZOrb5j47TICARd34RauKm0P3OA4Oxbw==} resolution: {integrity: sha512-jhv7XktAJ1sMRSb//yDYTauFSZ06H81i2SLEBPaSUKxSKoPMK8p1ACUJlnmwZX2MgapRLEj1Ml22B6+HiM2YIA==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -1157,8 +1157,8 @@ packages:
base64-js@1.5.1: base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
baseline-browser-mapping@2.10.9: baseline-browser-mapping@2.10.10:
resolution: {integrity: sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==} resolution: {integrity: sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
hasBin: true hasBin: true
@ -2377,8 +2377,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true hasBin: true
oxlint-tsgolint@0.17.0: oxlint-tsgolint@0.17.1:
resolution: {integrity: sha512-TdrKhDZCgEYqONFo/j+KvGan7/k3tP5Ouz88wCqpOvJtI2QmcLfGsm1fcMvDnTik48Jj6z83IJBqlkmK9DnY1A==} resolution: {integrity: sha512-gJc7hb1ZQFbWjRDYpu1XG+5IRdr1S/Jz/W2ohcpaqIXuDmHU0ujGiM0x05J0nIfwMF3HOEcANi/+j6T0Uecdpg==}
hasBin: true hasBin: true
oxlint@1.56.0: oxlint@1.56.0:
@ -2647,8 +2647,8 @@ packages:
safer-buffer@2.1.2: safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
sanitize-filename@1.6.3: sanitize-filename@1.6.4:
resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} resolution: {integrity: sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==}
sax@1.6.0: sax@1.6.0:
resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==}
@ -2800,8 +2800,8 @@ packages:
tabbable@6.4.0: tabbable@6.4.0:
resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==}
tar@7.5.11: tar@7.5.12:
resolution: {integrity: sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==} resolution: {integrity: sha512-9TsuLcdhOn4XztcQqhNyq1KOwOOED/3k58JAvtULiYqbO8B/0IBAAIE1hj0Svmm58k27TmcigyDI0deMlgG3uw==}
engines: {node: '>=18'} engines: {node: '>=18'}
temp-file@3.4.0: temp-file@3.4.0:
@ -3399,7 +3399,7 @@ snapshots:
ora: 5.4.1 ora: 5.4.1
read-binary-file-arch: 1.0.6 read-binary-file-arch: 1.0.6
semver: 7.7.4 semver: 7.7.4
tar: 7.5.11 tar: 7.5.12
yargs: 17.7.2 yargs: 17.7.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -3552,9 +3552,9 @@ snapshots:
'@huggingface/gguf@0.4.1': '@huggingface/gguf@0.4.1':
dependencies: dependencies:
'@huggingface/tasks': 0.20.4 '@huggingface/tasks': 0.20.6
'@huggingface/tasks@0.20.4': {} '@huggingface/tasks@0.20.6': {}
'@isaacs/cliui@8.0.2': '@isaacs/cliui@8.0.2':
dependencies: dependencies:
@ -3711,22 +3711,22 @@ snapshots:
'@oxfmt/binding-win32-x64-msvc@0.41.0': '@oxfmt/binding-win32-x64-msvc@0.41.0':
optional: true optional: true
'@oxlint-tsgolint/darwin-arm64@0.17.0': '@oxlint-tsgolint/darwin-arm64@0.17.1':
optional: true optional: true
'@oxlint-tsgolint/darwin-x64@0.17.0': '@oxlint-tsgolint/darwin-x64@0.17.1':
optional: true optional: true
'@oxlint-tsgolint/linux-arm64@0.17.0': '@oxlint-tsgolint/linux-arm64@0.17.1':
optional: true optional: true
'@oxlint-tsgolint/linux-x64@0.17.0': '@oxlint-tsgolint/linux-x64@0.17.1':
optional: true optional: true
'@oxlint-tsgolint/win32-arm64@0.17.0': '@oxlint-tsgolint/win32-arm64@0.17.1':
optional: true optional: true
'@oxlint-tsgolint/win32-x64@0.17.0': '@oxlint-tsgolint/win32-x64@0.17.1':
optional: true optional: true
'@oxlint/binding-android-arm-eabi@1.56.0': '@oxlint/binding-android-arm-eabi@1.56.0':
@ -4037,7 +4037,7 @@ snapshots:
proper-lockfile: 4.1.2 proper-lockfile: 4.1.2
resedit: 1.7.2 resedit: 1.7.2
semver: 7.7.4 semver: 7.7.4
tar: 7.5.11 tar: 7.5.12
temp-file: 3.4.0 temp-file: 3.4.0
tiny-async-pool: 1.3.0 tiny-async-pool: 1.3.0
which: 5.0.0 which: 5.0.0
@ -4068,7 +4068,7 @@ snapshots:
base64-js@1.5.1: {} base64-js@1.5.1: {}
baseline-browser-mapping@2.10.9: {} baseline-browser-mapping@2.10.10: {}
bl@4.1.0: bl@4.1.0:
dependencies: dependencies:
@ -4094,7 +4094,7 @@ snapshots:
browserslist@4.28.1: browserslist@4.28.1:
dependencies: dependencies:
baseline-browser-mapping: 2.10.9 baseline-browser-mapping: 2.10.10
caniuse-lite: 1.0.30001780 caniuse-lite: 1.0.30001780
electron-to-chromium: 1.5.321 electron-to-chromium: 1.5.321
node-releases: 2.0.36 node-releases: 2.0.36
@ -4129,7 +4129,7 @@ snapshots:
http-proxy-agent: 7.0.2 http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6 https-proxy-agent: 7.0.6
js-yaml: 4.1.1 js-yaml: 4.1.1
sanitize-filename: 1.6.3 sanitize-filename: 1.6.4
source-map-support: 0.5.21 source-map-support: 0.5.21
stat-mode: 1.0.0 stat-mode: 1.0.0
temp-file: 3.4.0 temp-file: 3.4.0
@ -4155,7 +4155,7 @@ snapshots:
minipass-pipeline: 1.2.4 minipass-pipeline: 1.2.4
p-map: 7.0.4 p-map: 7.0.4
ssri: 12.0.0 ssri: 12.0.0
tar: 7.5.11 tar: 7.5.12
unique-filename: 4.0.0 unique-filename: 4.0.0
cacheable-lookup@5.0.4: {} cacheable-lookup@5.0.4: {}
@ -5586,7 +5586,7 @@ snapshots:
nopt: 8.1.0 nopt: 8.1.0
proc-log: 5.0.0 proc-log: 5.0.0
semver: 7.7.4 semver: 7.7.4
tar: 7.5.11 tar: 7.5.12
tinyglobby: 0.2.15 tinyglobby: 0.2.15
which: 5.0.0 which: 5.0.0
transitivePeerDependencies: transitivePeerDependencies:
@ -5667,16 +5667,16 @@ snapshots:
'@oxfmt/binding-win32-ia32-msvc': 0.41.0 '@oxfmt/binding-win32-ia32-msvc': 0.41.0
'@oxfmt/binding-win32-x64-msvc': 0.41.0 '@oxfmt/binding-win32-x64-msvc': 0.41.0
oxlint-tsgolint@0.17.0: oxlint-tsgolint@0.17.1:
optionalDependencies: optionalDependencies:
'@oxlint-tsgolint/darwin-arm64': 0.17.0 '@oxlint-tsgolint/darwin-arm64': 0.17.1
'@oxlint-tsgolint/darwin-x64': 0.17.0 '@oxlint-tsgolint/darwin-x64': 0.17.1
'@oxlint-tsgolint/linux-arm64': 0.17.0 '@oxlint-tsgolint/linux-arm64': 0.17.1
'@oxlint-tsgolint/linux-x64': 0.17.0 '@oxlint-tsgolint/linux-x64': 0.17.1
'@oxlint-tsgolint/win32-arm64': 0.17.0 '@oxlint-tsgolint/win32-arm64': 0.17.1
'@oxlint-tsgolint/win32-x64': 0.17.0 '@oxlint-tsgolint/win32-x64': 0.17.1
oxlint@1.56.0(oxlint-tsgolint@0.17.0): oxlint@1.56.0(oxlint-tsgolint@0.17.1):
optionalDependencies: optionalDependencies:
'@oxlint/binding-android-arm-eabi': 1.56.0 '@oxlint/binding-android-arm-eabi': 1.56.0
'@oxlint/binding-android-arm64': 1.56.0 '@oxlint/binding-android-arm64': 1.56.0
@ -5697,7 +5697,7 @@ snapshots:
'@oxlint/binding-win32-arm64-msvc': 1.56.0 '@oxlint/binding-win32-arm64-msvc': 1.56.0
'@oxlint/binding-win32-ia32-msvc': 1.56.0 '@oxlint/binding-win32-ia32-msvc': 1.56.0
'@oxlint/binding-win32-x64-msvc': 1.56.0 '@oxlint/binding-win32-x64-msvc': 1.56.0
oxlint-tsgolint: 0.17.0 oxlint-tsgolint: 0.17.1
p-cancelable@2.1.1: {} p-cancelable@2.1.1: {}
@ -5991,7 +5991,7 @@ snapshots:
safer-buffer@2.1.2: {} safer-buffer@2.1.2: {}
sanitize-filename@1.6.3: sanitize-filename@1.6.4:
dependencies: dependencies:
truncate-utf8-bytes: 1.0.2 truncate-utf8-bytes: 1.0.2
@ -6134,7 +6134,7 @@ snapshots:
tabbable@6.4.0: {} tabbable@6.4.0: {}
tar@7.5.11: tar@7.5.12:
dependencies: dependencies:
'@isaacs/fs-minipass': 4.0.1 '@isaacs/fs-minipass': 4.0.1
chownr: 3.0.0 chownr: 3.0.0

View file

@ -92,7 +92,7 @@ export const StatusBar = () => {
return ( return (
<AppShell.Footer <AppShell.Footer
style={{ style={{
border: '1px solid var(--mantine-color-default-border)', borderTop: '1px solid var(--mantine-color-default-border)',
}} }}
> >
<Group <Group

View file

@ -76,7 +76,7 @@ export const TitleBar = ({ currentScreen, currentTab, onEject, onTabChange }: Ti
alignItems: 'center', alignItems: 'center',
backgroundColor: backgroundColor:
colorScheme === 'dark' ? 'var(--mantine-color-dark-6)' : 'var(--mantine-color-gray-1)', colorScheme === 'dark' ? 'var(--mantine-color-dark-6)' : 'var(--mantine-color-gray-1)',
border: '1px solid var(--mantine-color-default-border)', borderBottom: '1px solid var(--mantine-color-default-border)',
display: 'flex', display: 'flex',
height: TITLEBAR_HEIGHT, height: TITLEBAR_HEIGHT,
justifyContent: 'space-between', justifyContent: 'space-between',

View file

@ -81,14 +81,14 @@ export const ModelAnalysisModal = ({
)} )}
{analysis.architecture.layers && ( {analysis.architecture.layers && (
<InfoRow <InfoRow
label="Full VRAM" label="Model Size (VRAM)"
value={`${analysis.architecture.layers} x ${analysis.estimates.vramPerLayer ?? 'N/A'} per layer = ${analysis.estimates.fullGpuVram}`} value={`${analysis.architecture.layers} x ${analysis.estimates.vramPerLayer ?? 'N/A'} per layer = ${analysis.estimates.fullGpuVram}`}
/> />
)} )}
{!analysis.architecture.layers && ( {!analysis.architecture.layers && (
<InfoRow label="Full VRAM" value={analysis.estimates.fullGpuVram} /> <InfoRow label="Model Size (VRAM)" value={analysis.estimates.fullGpuVram} />
)} )}
<InfoRow label="Full RAM" value={analysis.estimates.systemRam} /> <InfoRow label="Model Size (RAM)" value={analysis.estimates.systemRam} />
</Stack> </Stack>
)} )}
</Modal> </Modal>

View file

@ -11,6 +11,7 @@ import {
quitAndInstall, quitAndInstall,
} from '@/main/modules/auto-updater'; } from '@/main/modules/auto-updater';
import { import {
getBackgroundColor,
getColorScheme, getColorScheme,
get as getConfig, get as getConfig,
getEnableSystemTray, getEnableSystemTray,
@ -209,9 +210,10 @@ export function setupIPCHandlers() {
ipcMain.handle('app:getColorScheme', () => getColorScheme()); ipcMain.handle('app:getColorScheme', () => getColorScheme());
ipcMain.handle('app:setColorScheme', async (_, colorScheme) => ipcMain.handle('app:setColorScheme', async (_, colorScheme) => {
setConfig('colorScheme', colorScheme), await setConfig('colorScheme', colorScheme);
); mainWindow.setBackgroundColor(getBackgroundColor());
});
ipcMain.handle('app:getEnableSystemTray', () => getEnableSystemTray()); ipcMain.handle('app:getEnableSystemTray', () => getEnableSystemTray());

View file

@ -36,12 +36,15 @@ async function executeCommand(
timeout = 5000, timeout = 5000,
) { ) {
try { try {
const { stdout } = await execa(command, args, { const result = await execa(command, args, {
env, env,
reject: false, reject: false,
timeout, timeout,
}); });
return { output: stdout.trim(), success: true }; if (result.failed) {
return { success: false };
}
return { output: result.stdout.trim(), success: true };
} catch { } catch {
return { success: false }; return { success: false };
} }

View file

@ -2,7 +2,7 @@ import { join } from 'node:path';
import { stripVTControlCharacters } from 'node:util'; import { stripVTControlCharacters } from 'node:util';
import type { BrowserWindowConstructorOptions } from 'electron'; import type { BrowserWindowConstructorOptions } from 'electron';
import { app, BrowserWindow, clipboard, Menu, screen, shell } from 'electron'; import { app, BrowserWindow, clipboard, Menu, nativeTheme, screen, shell } from 'electron';
import { PRODUCT_NAME } from '@/constants'; import { PRODUCT_NAME } from '@/constants';
import type { IPCChannel, IPCChannelPayloads } from '@/types/ipc'; import type { IPCChannel, IPCChannelPayloads } from '@/types/ipc';
@ -95,6 +95,12 @@ export async function createMainWindow(options?: { startHidden?: boolean }) {
} }
}; };
nativeTheme.on('updated', () => {
if (mainWindow && !mainWindow.isDestroyed()) {
mainWindow.setBackgroundColor(getBackgroundColor());
}
});
mainWindow.on('maximize', () => { mainWindow.on('maximize', () => {
sendToRenderer('window-maximized'); sendToRenderer('window-maximized');
}); });

View file

@ -6,16 +6,11 @@
#root { #root {
height: 100vh; height: 100vh;
width: 100vw; width: 100vw;
border-left: 1px solid rgba(0, 0, 0, 0.15); border-left: 1px solid light-dark(rgba(0, 0, 0, 0.15), rgba(255, 255, 255, 0.08));
border-right: 1px solid rgba(0, 0, 0, 0.15); border-right: 1px solid light-dark(rgba(0, 0, 0, 0.15), rgba(255, 255, 255, 0.08));
box-sizing: border-box; box-sizing: border-box;
} }
[data-mantine-color-scheme='dark'] #root {
border-left: 1px solid rgba(255, 255, 255, 0.15);
border-right: 1px solid rgba(255, 255, 255, 0.15);
}
[data-mantine-color-scheme='light'] .mantine-Select-option:hover { [data-mantine-color-scheme='light'] .mantine-Select-option:hover {
background-color: #e9ecef; background-color: #e9ecef;
} }