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,46 +12,46 @@ Use Next.js's `after()` to schedule work that should execute after a response is
**Incorrect (blocks response):**
```tsx
import { logUserAction } from '@/app/utils'
import { logUserAction } from '@/app/utils';
export async function POST(request: Request) {
// Perform mutation
await updateDatabase(request)
await updateDatabase(request);
// Logging blocks the response
const userAgent = request.headers.get('user-agent') || 'unknown'
await logUserAction({ userAgent })
const userAgent = request.headers.get('user-agent') || 'unknown';
await logUserAction({ userAgent });
return new Response(JSON.stringify({ status: 'success' }), {
status: 200,
headers: { 'Content-Type': 'application/json' }
})
headers: { 'Content-Type': 'application/json' },
});
}
```
**Correct (non-blocking):**
```tsx
import { after } from 'next/server'
import { headers, cookies } from 'next/headers'
import { logUserAction } from '@/app/utils'
import { after } from 'next/server';
import { headers, cookies } from 'next/headers';
import { logUserAction } from '@/app/utils';
export async function POST(request: Request) {
// Perform mutation
await updateDatabase(request)
await updateDatabase(request);
// Log after response is sent
after(async () => {
const userAgent = (await headers()).get('user-agent') || 'unknown'
const sessionCookie = (await cookies()).get('session-id')?.value || 'anonymous'
logUserAction({ sessionCookie, userAgent })
})
const userAgent = (await headers()).get('user-agent') || 'unknown';
const sessionCookie = (await cookies()).get('session-id')?.value || 'anonymous';
logUserAction({ sessionCookie, userAgent });
});
return new Response(JSON.stringify({ status: 'success' }), {
status: 200,
headers: { 'Content-Type': 'application/json' }
})
headers: { 'Content-Type': 'application/json' },
});
}
```