Refactor Gemini model display: filter old versions, group low/high pкo, and improve naming (#114)

* Refactor Gemini model display: filter old versions, group low/high pro, and improve naming

* Fix potential negative minutes and refine Gemini 3 Pro grouping logic based on PR feedback

* The account change process has been sped up

* Address PR review: enhance error message and parameterize polling interval in process handler

* Address PR review: fix potential race condition in database backup logic

* fix: prevent renderer white screen and harden sentry gating

* feat:  localize model labels

* chore: enable hoisted node-linker

* chore: ignore .agent/.claude/.codex in prettier

---------

Co-authored-by: Draculabo <[email protected]>
This commit is contained in:
AngeloooooandDraculabo authored and GitHub committed 2026-02-19 19:37:30 +08:00
1 parent b9497648c6
commit 8ed4593f73
162 files changed
+2981 -2541

No files matched your search

+12 -5
View File
@@ -1,4 +1,14 @@
import { Body, Controller, Get, HttpStatus, Inject, Param, Post, Res, UseGuards } from '@nestjs/common';
import {
Body,
Controller,
Get,
HttpStatus,
Inject,
Param,
Post,
Res,
UseGuards,
} from '@nestjs/common';
import { FastifyReply } from 'fastify';
import { isEmpty } from 'lodash-es';
import { Observable } from 'rxjs';
@@ -131,9 +141,7 @@ export class GeminiController {
}
}
private parseCombinedModelAction(
modelAction: string,
): {
private parseCombinedModelAction(modelAction: string): {
model: string;
action: string;
} | null {
@@ -288,5 +296,4 @@ export class GeminiController {
private hasHijack(reply: FastifyReply): reply is FastifyReply & { hijack: () => void } {
return typeof (reply as { hijack?: unknown }).hijack === 'function';
}
}
+12 -10
View File
@@ -30,14 +30,12 @@ import {
} from '../../../lib/antigravity/ModelMapping';
import { getServerConfig } from '../../server-config';
@Controller('v1')
@UseGuards(ProxyGuard)
export class ProxyController {
private readonly logger = new Logger(ProxyController.name);
constructor(@Inject(ProxyService) private readonly proxyService: ProxyService) { }
constructor(@Inject(ProxyService) private readonly proxyService: ProxyService) {}
@Get('models')
listModels(@Res() res: FastifyReply) {
@@ -223,12 +221,13 @@ export class ProxyController {
content:
imageParts.length > 0
? [
{
type: 'text',
text: body.prompt ?? 'Please edit this image based on the provided instruction.',
},
...imageParts,
]
{
type: 'text',
text:
body.prompt ?? 'Please edit this image based on the provided instruction.',
},
...imageParts,
]
: (body.prompt ?? 'Please edit this image based on the provided instruction.'),
},
],
@@ -951,7 +950,10 @@ export class ProxyController {
parts.push({ text: fallbackPrompt || 'Please generate an image based on this request.' });
} else if (typeof userMessage.content === 'string') {
parts.push({
text: userMessage.content || fallbackPrompt || 'Please generate an image based on this request.',
text:
userMessage.content ||
fallbackPrompt ||
'Please generate an image based on this request.',
});
} else {
for (const block of userMessage.content) {
+5 -1
View File
@@ -6,7 +6,11 @@ import {
UnauthorizedException,
} from '@nestjs/common';
import { getServerConfig } from '../../server-config';
import { extractApiKeyToken, hasConfiguredApiKey, RequestHeaders } from '../../guards/api-key-auth.util';
import {
extractApiKeyToken,
hasConfiguredApiKey,
RequestHeaders,
} from '../../guards/api-key-auth.util';
@Injectable()
export class ProxyGuard implements CanActivate {