chore(release): finalize v3.7.5 LTS release with schema and db initialization fixes

This commit is contained in:
Antigravity Assistant
2026-04-29 21:56:33 -03:00
parent f051a1e0e0
commit 76ea8dbe6c
3 changed files with 25 additions and 1 deletions

View File

@@ -4,7 +4,7 @@
### ✨ New Features
- **feat(api-keys):** add rename support in the permissions modal — editable key name field with validation
- **feat:** ongoing development
---
@@ -13,6 +13,7 @@
### ✨ New Features
- **feat(tunnels):** integrate native ngrok tunnel support with dashboard UI parity (#1753)
- **feat(api-keys):** add rename support in the permissions modal — editable key name field with validation (#1796)
### 🐛 Bug Fixes
@@ -21,6 +22,8 @@
- **fix(chatgpt-web):** restore validator + expand model catalog to ChatGPT Plus tier (#1792)
- **fix(codex):** stabilize Copilot responses replay state (#1791)
- **fix(antigravity):** cap Claude bridge output tokens (#1785)
- **fix(schema):** strip `default` properties from tool-call JSON schemas during egress to prevent injection errors (#1782)
- **fix(db):** add `quota_snapshots` table to core DB schema initialization to prevent startup failures on fresh installs
- **fix(models):** apply blocked providers filter to non-chat catalog models (image, embedding, audio, etc.) (#1752)
- **fix(antigravity):** stabilize streaming payload parsing and deduplicate usage/model metadata refreshes (#1748)
- **fix(antigravity):** normalize Gemini bridge payloads — sanitize tool names, cap output tokens, and fix thinking budget (#1769)

View File

@@ -52,6 +52,11 @@ export function coerceSchemaNumericFields(schema: unknown): unknown {
const result: JsonRecord = { ...schema };
// Fix #1782: Strip 'default' property to prevent upstream models from eagerly injecting optional fields
if ("default" in result) {
delete result.default;
}
for (const field of NUMERIC_SCHEMA_FIELDS) {
if (field in result) {
result[field] = coerceNumericString(result[field]);

View File

@@ -345,6 +345,22 @@ const SCHEMA_SQL = `
);
CREATE INDEX IF NOT EXISTS idx_sc_sig ON semantic_cache(signature);
CREATE INDEX IF NOT EXISTS idx_sc_model ON semantic_cache(model);
CREATE TABLE IF NOT EXISTS quota_snapshots (
id INTEGER PRIMARY KEY AUTOINCREMENT,
provider TEXT NOT NULL,
connection_id TEXT NOT NULL,
window_key TEXT NOT NULL,
remaining_percentage REAL,
is_exhausted INTEGER DEFAULT 0,
next_reset_at TEXT,
window_duration_ms INTEGER,
raw_data TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE INDEX IF NOT EXISTS idx_quota_snapshots_provider_time ON quota_snapshots(provider, created_at);
CREATE INDEX IF NOT EXISTS idx_quota_snapshots_connection_time ON quota_snapshots(connection_id, created_at);
CREATE INDEX IF NOT EXISTS idx_quota_snapshots_created_at ON quota_snapshots(created_at);
`;
// ──────────────── Column Mapping ────────────────