mirror of
https://github.com/lone-cloud/gerbil
synced 2026-06-03 19:54:44 -07:00
display current kcpp version under software, new image gen preset for the new qwen 3 image, improve kcpp ui patching accuracy
This commit is contained in:
parent
206351c284
commit
537bd4d710
7 changed files with 67 additions and 25 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -19,3 +19,9 @@ flux1-kontext-dev-Q3_K_S.gguf
|
|||
gemma-3-4b-it.Q8_0.gguf
|
||||
.webui_secret_key
|
||||
chroma-unlocked-v29-Q3_K_L.gguf
|
||||
Qwen-Image-Edit-2509-Q4_K_S.gguf
|
||||
Qwen2.5-VL-7B-Instruct.mmproj-Q8_0.gguf
|
||||
Qwen2.5-VL-7B-Instruct.Q4_K_S.gguf
|
||||
qwen_image_vae.safetensors
|
||||
flux1-kontext-dev-Q4_K_S.gguf
|
||||
chroma-unlocked-v45-Q4_0.gguf
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "gerbil",
|
||||
"productName": "Gerbil",
|
||||
"version": "1.8.2",
|
||||
"version": "1.8.3",
|
||||
"description": "Run Large Language Models locally",
|
||||
"main": "out/main/index.js",
|
||||
"homepage": "./",
|
||||
|
|
@ -39,7 +39,7 @@
|
|||
"license": "AGPL-3.0-or-later",
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.39.0",
|
||||
"@types/node": "^24.9.2",
|
||||
"@types/node": "^24.10.0",
|
||||
"@types/react": "^19.2.2",
|
||||
"@types/react-dom": "^19.2.2",
|
||||
"@types/yauzl": "^2.10.3",
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ export const SystemTab = () => {
|
|||
null
|
||||
);
|
||||
const [hardwareInfo, setHardwareInfo] = useState<HardwareInfo | null>(null);
|
||||
const [koboldVersion, setKoboldVersion] = useState<string | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
const loadVersionInfo = async () => {
|
||||
|
|
@ -23,6 +24,14 @@ export const SystemTab = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const loadKoboldVersion = async () => {
|
||||
const currentVersion =
|
||||
await window.electronAPI.kobold.getCurrentVersion();
|
||||
if (currentVersion) {
|
||||
setKoboldVersion(currentVersion.version);
|
||||
}
|
||||
};
|
||||
|
||||
const loadHardwareInfo = async () => {
|
||||
try {
|
||||
const [cpu, gpu, gpuCapabilities, gpuMemory, systemMemory] =
|
||||
|
|
@ -50,6 +59,7 @@ export const SystemTab = () => {
|
|||
};
|
||||
|
||||
loadVersionInfo();
|
||||
loadKoboldVersion();
|
||||
loadHardwareInfo();
|
||||
}, []);
|
||||
|
||||
|
|
@ -61,7 +71,7 @@ export const SystemTab = () => {
|
|||
);
|
||||
}
|
||||
|
||||
const softwareItems = createSoftwareItems(versionInfo);
|
||||
const softwareItems = createSoftwareItems(versionInfo, koboldVersion);
|
||||
const driverItems = hardwareInfo ? createDriverItems(hardwareInfo) : [];
|
||||
const hardwareItems = hardwareInfo ? createHardwareItems(hardwareInfo) : [];
|
||||
|
||||
|
|
|
|||
|
|
@ -14,28 +14,42 @@ export const IMAGE_MODEL_PRESETS = [
|
|||
name: 'FLUX.1',
|
||||
description: 'FLUX.1 development model with default encoders',
|
||||
sdmodel:
|
||||
'https://huggingface.co/bullerwins/FLUX.1-Kontext-dev-GGUF/resolve/main/flux1-kontext-dev-Q3_K_S.gguf?download=true',
|
||||
'https://huggingface.co/bullerwins/FLUX.1-Kontext-dev-GGUF/resolve/main/flux1-kontext-dev-Q4_K_S.gguf',
|
||||
sdt5xxl:
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/t5xxl_fp8_e4m3fn.safetensors?download=true',
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/t5xxl_fp8_e4m3fn.safetensors',
|
||||
sdclipl:
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/clip_l.safetensors?download=true',
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/clip_l.safetensors',
|
||||
sdclipg: '',
|
||||
sdphotomaker: '',
|
||||
sdvae:
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/ae.safetensors?download=true',
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/ae.safetensors',
|
||||
},
|
||||
{
|
||||
name: 'Chroma',
|
||||
description: 'Chroma with optimized VAE and shared encoders',
|
||||
sdmodel:
|
||||
'https://huggingface.co/silveroxides/Chroma-GGUF/resolve/main/chroma-unlocked-v29/chroma-unlocked-v29-Q3_K_L.gguf?download=true',
|
||||
'https://huggingface.co/silveroxides/Chroma-GGUF/resolve/main/chroma-unlocked-v45/chroma-unlocked-v45-Q4_0.gguf',
|
||||
sdt5xxl:
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/t5xxl_fp8_e4m3fn.safetensors?download=true',
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/t5xxl_fp8_e4m3fn.safetensors',
|
||||
sdclipl:
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/clip_l.safetensors?download=true',
|
||||
'https://huggingface.co/camenduru/FLUX.1-dev/resolve/main/clip_l.safetensors',
|
||||
sdclipg: '',
|
||||
sdphotomaker: '',
|
||||
sdvae:
|
||||
'https://huggingface.co/lodestones/Chroma/resolve/main/ae.safetensors?download=true',
|
||||
'https://huggingface.co/lodestones/Chroma/resolve/main/ae.safetensors',
|
||||
},
|
||||
{
|
||||
name: 'Qwen Image Edit 2509',
|
||||
description: 'Qwen Image Edit model with vision encoder and VAE',
|
||||
sdmodel:
|
||||
'https://huggingface.co/QuantStack/Qwen-Image-Edit-2509-GGUF/resolve/main/Qwen-Image-Edit-2509-Q4_K_S.gguf',
|
||||
sdt5xxl: '',
|
||||
sdclipl:
|
||||
'https://huggingface.co/mradermacher/Qwen2.5-VL-7B-Instruct-GGUF/resolve/main/Qwen2.5-VL-7B-Instruct.Q4_K_S.gguf',
|
||||
sdclipg:
|
||||
'https://huggingface.co/mradermacher/Qwen2.5-VL-7B-Instruct-GGUF/resolve/main/Qwen2.5-VL-7B-Instruct.mmproj-Q8_0.gguf',
|
||||
sdphotomaker: '',
|
||||
sdvae:
|
||||
'https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors',
|
||||
},
|
||||
] as const;
|
||||
|
|
|
|||
|
|
@ -88,7 +88,8 @@ const patchKcppSduiEmbd = (unpackedDir: string) =>
|
|||
|
||||
export async function launchKoboldCpp(
|
||||
args: string[] = [],
|
||||
frontendPreference: FrontendPreference = 'koboldcpp'
|
||||
frontendPreference: FrontendPreference = 'koboldcpp',
|
||||
imageGenerationFrontendPreference?: ImageGenerationFrontendPreference
|
||||
) {
|
||||
try {
|
||||
if (koboldProcess) {
|
||||
|
|
@ -114,14 +115,17 @@ export async function launchKoboldCpp(
|
|||
|
||||
const binaryDir = currentVersion.path.split(/[/\\]/).slice(0, -1).join('/');
|
||||
|
||||
const { isImageMode } = parseKoboldConfig(args);
|
||||
const { isImageMode, isTextMode } = parseKoboldConfig(args);
|
||||
|
||||
if (frontendPreference === 'koboldcpp') {
|
||||
if (isImageMode) {
|
||||
await patchKcppSduiEmbd(binaryDir);
|
||||
} else {
|
||||
}
|
||||
if (isTextMode) {
|
||||
await patchKliteEmbd(binaryDir);
|
||||
}
|
||||
} else if (isImageMode && imageGenerationFrontendPreference === 'builtin') {
|
||||
await patchKcppSduiEmbd(binaryDir);
|
||||
}
|
||||
|
||||
const finalArgs = [...args];
|
||||
|
|
@ -223,7 +227,11 @@ export const launchKoboldCppWithCustomFrontends = async (args: string[] = []) =>
|
|||
'imageGenerationFrontendPreference'
|
||||
)) as ImageGenerationFrontendPreference | undefined;
|
||||
|
||||
const result = await launchKoboldCpp(args, frontendPreference);
|
||||
const result = await launchKoboldCpp(
|
||||
args,
|
||||
frontendPreference,
|
||||
imageGenerationFrontendPreference
|
||||
);
|
||||
|
||||
const { isImageMode, isTextMode } = parseKoboldConfig(args);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,10 @@ import { PRODUCT_NAME } from '@/constants';
|
|||
import type { InfoItem } from '@/components/InfoCard';
|
||||
import type { HardwareInfo } from '@/types/hardware';
|
||||
|
||||
export const createSoftwareItems = (versionInfo: SystemVersionInfo) => [
|
||||
export const createSoftwareItems = (
|
||||
versionInfo: SystemVersionInfo,
|
||||
koboldVersion?: string | null
|
||||
) => [
|
||||
{
|
||||
label: PRODUCT_NAME,
|
||||
value: versionInfo.aurPackageVersion
|
||||
|
|
@ -15,6 +18,11 @@ export const createSoftwareItems = (versionInfo: SystemVersionInfo) => [
|
|||
})()
|
||||
: versionInfo.appVersion,
|
||||
},
|
||||
...(koboldVersion ? [{ label: 'KoboldCpp', value: koboldVersion }] : []),
|
||||
{
|
||||
label: 'OS',
|
||||
value: `${versionInfo.platform} ${versionInfo.arch} (${versionInfo.osVersion})`,
|
||||
},
|
||||
{ label: 'Electron', value: versionInfo.electronVersion },
|
||||
{
|
||||
label: 'Node.js',
|
||||
|
|
@ -26,10 +34,6 @@ export const createSoftwareItems = (versionInfo: SystemVersionInfo) => [
|
|||
},
|
||||
{ label: 'Chromium', value: versionInfo.chromeVersion },
|
||||
{ label: 'V8', value: versionInfo.v8Version },
|
||||
{
|
||||
label: 'OS',
|
||||
value: `${versionInfo.platform} ${versionInfo.arch} (${versionInfo.osVersion})`,
|
||||
},
|
||||
...(versionInfo.uvVersion
|
||||
? [{ label: 'uv', value: versionInfo.uvVersion }]
|
||||
: []),
|
||||
|
|
|
|||
10
yarn.lock
10
yarn.lock
|
|
@ -1394,12 +1394,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:*, @types/node@npm:^24.9.2":
|
||||
version: 24.9.2
|
||||
resolution: "@types/node@npm:24.9.2"
|
||||
"@types/node@npm:*, @types/node@npm:^24.10.0":
|
||||
version: 24.10.0
|
||||
resolution: "@types/node@npm:24.10.0"
|
||||
dependencies:
|
||||
undici-types: "npm:~7.16.0"
|
||||
checksum: 10c0/7905d43f65cee72ef475fe76316e10bbf6ac5d08a7f0f6c38f2b6285d7ca3009e8fcafc8f8a1d2bf3f55889c9c278dbb203a9081fd0cf2d6d62161703924c6fa
|
||||
checksum: 10c0/f82ed7194e16f5590ef7afdc20c6d09068c76d50278b485ede8f0c5749683536e3064ffa8def8db76915196afb3724b854aa5723c64d6571b890b14492943b46
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
@ -3771,7 +3771,7 @@ __metadata:
|
|||
"@huggingface/gguf": "npm:^0.3.2"
|
||||
"@mantine/core": "npm:^8.3.6"
|
||||
"@mantine/hooks": "npm:^8.3.6"
|
||||
"@types/node": "npm:^24.9.2"
|
||||
"@types/node": "npm:^24.10.0"
|
||||
"@types/react": "npm:^19.2.2"
|
||||
"@types/react-dom": "npm:^19.2.2"
|
||||
"@types/yauzl": "npm:^2.10.3"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue