diegosouzapw
fb54bcd994
feat(audit): add timeline helpers (groupByDay + relativeTime) (B/F4)
2026-05-27 22:00:51 -03:00
diegosouzapw
b9e5d940a4
merge: F6 QuotaStore core (sqlite + redis drivers + fairShare + planResolver + burnRate + saturation)
2026-05-27 21:14:01 -03:00
diegosouzapw
22123013be
test(quota): cover fairShare 10 scenarios + burnRate + planResolver + saturationSignals + storeFactory (B/F6)
2026-05-27 20:39:09 -03:00
diegosouzapw
d5d9b5c839
test(quota): cover redisQuotaStore mock (gated by RUN_QUOTA_REDIS_INT) (B/F6)
2026-05-27 20:38:57 -03:00
diegosouzapw
c647f854e8
test(quota): cover sqlite store concurrency + sliding window rotation (B/F6)
2026-05-27 20:38:49 -03:00
diegosouzapw
4d825ad482
feat(quota): add saturationSignals reader with 30s cache and fail-open (B/F6)
2026-05-27 20:38:41 -03:00
diegosouzapw
23f5b6f8b8
feat(quota): add planResolver (DB override > known catalog > empty) (B/F6)
2026-05-27 20:38:33 -03:00
diegosouzapw
c3c0817c3b
feat(quota): add burnRate EMA estimator and time-to-exhaustion (B/F6)
2026-05-27 20:38:25 -03:00
diegosouzapw
9905d92244
feat(quota): add fairShare work-conserving algorithm (multi-dimension, generous/strict modes, cap-absolute) (B/F6)
2026-05-27 20:38:18 -03:00
diegosouzapw
67548034be
feat(quota): add storeFactory with setting/env-driven driver selection (B/F6)
2026-05-27 20:38:11 -03:00
diegosouzapw
4bb44b10d3
feat(quota): add redisQuotaStore (optional driver, gated by ioredis availability) (B/F6)
2026-05-27 20:38:02 -03:00
diegosouzapw
ca85652bab
feat(quota): add sqliteQuotaStore with sliding window counter and per-key mutex (B/F6)
2026-05-27 20:37:51 -03:00
diegosouzapw
8a10b3ecd8
feat(quota): add QuotaStore facade and types re-export (B/F6)
2026-05-27 20:37:44 -03:00
diegosouzapw
c06d1e16b5
merge: F3 sidebar Monitoring 3-groups + Costs section + i18n PT-BR/EN
2026-05-27 20:28:07 -03:00
diegosouzapw
88899971d1
test(sidebar): cover Monitoring reorg, Costs section, back-compat (B/F3)
...
Three new test files:
- sidebar-monitoring-reorg.test.ts: asserts monitoring has 4 children (activity item + logs/audit/system groups), no costs-parameters group, no logs-activity in items
- sidebar-costs-section.test.ts: asserts costs section exists with 4 items in correct order, costs removed from analytics, costs positioned between analytics and monitoring
- sidebar-back-compat.test.ts: asserts activity added + logs-activity preserved in HIDEABLE_SIDEBAR_ITEM_IDS, admin preset shows activity and hides logs-activity (B30)
2026-05-27 19:51:49 -03:00
diegosouzapw
c0db545811
chore(i18n): pt-BR + en keys for activity, costsSection, logsGroup, systemGroup, costsOverview (B/F3)
...
Add new sidebar i18n keys without removing existing ones (back-compat B11/B12):
- sidebar.activity / sidebar.activitySubtitle
- sidebar.logsGroup
- sidebar.systemGroup
- sidebar.costsOverview / sidebar.costsOverviewSubtitle
Existing sidebar.costs, sidebar.costsSection, sidebar.costsSubtitle preserved.
2026-05-27 19:51:40 -03:00
diegosouzapw
e98ba91928
refactor(sidebar): split Monitoring into Logs/Audit/System groups + Activity at top (B/F3)
...
- MONITORING_ITEMS reduced to single `activity` item at `/dashboard/activity`
- New LOGS_GROUP (logs/logs-proxy/logs-console) extracted from flat monitoring items
- New SYSTEM_GROUP (health/runtime) extracted from flat monitoring items
- AUDIT_GROUP preserved unchanged
- Monitoring section children: [...MONITORING_ITEMS, LOGS_GROUP, AUDIT_GROUP, SYSTEM_GROUP]
- COSTS_PARAMS_GROUP removed from monitoring section (items migrate to COSTS_ITEMS)
- `activity` added to HIDEABLE_SIDEBAR_ITEM_IDS; `logs-activity` preserved for back-compat (B11)
- Updated existing sidebar-visibility.test.ts to match new monitoring item structure
2026-05-27 19:51:30 -03:00
diegosouzapw
3c50ebce8f
merge: F2 DB migrations + modules (pools, consumption, plans)
2026-05-27 19:25:12 -03:00
diegosouzapw
282bffcea7
merge: F1 shared foundation (types, schemas, audit allowlist, plan registry)
2026-05-27 19:25:12 -03:00
diegosouzapw
75b02f6419
test(db): cover pools, consumption, plans, and migrations idempotency (B/F2)
...
Adds 44 tests across 4 files:
- db-quota-pools.test.ts (16 tests): CRUD lifecycle, upsertAllocations
replace strategy, FK CASCADE, listAllocationsForApiKey cross-pool.
- db-quota-consumption.test.ts (12 tests): getBucket, incrementBucket
atomic (100 concurrent), getPair, gcOlderThan boundary semantics.
- db-provider-plans.test.ts (10 tests): upsertPlan idempotence,
getPlan JSON parsing, listPlans, deletePlan.
- db-quota-migrations-idempotency.test.ts (6 tests): schema assertions
and double-run idempotency for migrations 073-075.
2026-05-27 19:14:51 -03:00
diegosouzapw
adb7f2dbe4
chore(env): document quota store env vars in .env.example (B/F2)
...
Adds QUOTA_STORE_DRIVER, QUOTA_STORE_REDIS_URL,
QUOTA_SATURATION_THRESHOLD, QUOTA_SOFT_DEPRIORITIZE_FACTOR, and
QUOTA_CONSUMPTION_RETENTION_DAYS as per §3.8 of master-plan-group-B.
2026-05-27 19:14:43 -03:00
diegosouzapw
44e49f635b
chore(db): re-export quota modules in localDb (B/F2)
...
Adds re-export blocks for quotaPools (7 functions), quotaConsumption
(4 functions with gcQuotaConsumption alias), and providerPlans (4
functions with getProviderPlan/listProviderPlans/etc. aliases).
Zero logic added to localDb.ts — Hard Rule #2 maintained.
2026-05-27 19:14:38 -03:00
diegosouzapw
1721cf7b32
feat(db): add providerPlans module with CRUD for per-connection quota plans (B/F2)
...
Implements getPlan, listPlans, upsertPlan (idempotent ON CONFLICT DO
UPDATE), and deletePlan. Serializes QuotaDimension[] as JSON into
dimensions_json column and parses back on read. Malformed JSON returns
empty dimensions rather than throwing.
2026-05-27 19:14:32 -03:00
diegosouzapw
83790b6c6a
feat(db): add quotaConsumption sliding-window counter storage (B/F2)
...
Implements getBucket, incrementBucket (atomic UPSERT), getPair (curr+prev
for sliding window formula), and gcOlderThan (stale bucket cleanup).
Atomic increment uses INSERT ... ON CONFLICT DO UPDATE — no separate
read-modify-write cycle needed.
2026-05-27 19:14:27 -03:00
diegosouzapw
07d6a17643
feat(db): add quotaPools module with CRUD and allocation management (B/F2)
...
Implements listPools, getPool, createPool, updatePool, deletePool,
upsertAllocations (replace strategy via transaction), and
listAllocationsForApiKey. All SQL uses prepared statements. Local type
shapes aligned with src/lib/quota/dimensions.ts contract (B13).
2026-05-27 19:14:21 -03:00
diegosouzapw
4f149fb5a3
feat(db): add quota_pools and quota_consumption migrations (B/F2)
...
Creates migrations 073 (quota_pools + quota_allocations) and 074
(quota_consumption sliding-window counter). Both are idempotent via
CREATE TABLE IF NOT EXISTS and CREATE INDEX IF NOT EXISTS. FK ON DELETE
CASCADE from quota_allocations to quota_pools. Fixes B2 IDs.
2026-05-27 19:14:15 -03:00
diegosouzapw
1b0282ed32
test(audit): cover high-level actions and activity icons
2026-05-27 19:05:10 -03:00
diegosouzapw
258c676df4
test(quota): cover dimensions, schemas, plan registry
2026-05-27 19:05:06 -03:00
diegosouzapw
7a5166621d
feat(quota): add provider plan registry with known plans
2026-05-27 19:05:02 -03:00
diegosouzapw
93091fbb0a
feat(audit): add high-level actions allowlist and activity icons map
2026-05-27 19:04:59 -03:00
diegosouzapw
70b9cc7831
feat(quota): add canonical dimensions, types and Zod schemas
2026-05-27 19:04:55 -03:00
diegosouzapw
722e9f41cd
chore: apply unit test fixes, polyfills, and environment precedence fixes
2026-05-27 18:02:17 -03:00
JeferssonLemes
52a43d65d3
feat(modelSpecs): align opencode-go family with upstream provider limits ( #2802 )
...
Integrated into release/v3.8.6
2026-05-27 17:06:32 -03:00
Hernan Javier Ardila Sanchez
0e9aed4d03
fix(gemini): emit signaturelessToolCallMode:text for GEMINI format models ( #2801 )
...
Integrated into release/v3.8.6
2026-05-27 17:05:36 -03:00
Apostol Apostolov
87fad5d171
[codex] home: restore settings-driven home layout and quota auto-refresh ( #2800 )
...
Integrated into release/v3.8.6
2026-05-27 17:05:18 -03:00
Apostol Apostolov
f1e4c001a9
feat(logs): add clean history button ( #2799 )
...
Integrated into release/v3.8.6
2026-05-27 17:04:49 -03:00
akarray
83445a96b8
fix(oauth): repair Google loopback callback flow ( #2796 )
...
Integrated into release/v3.8.6
2026-05-27 17:04:31 -03:00
Markus Hartung
0c6c5e212e
fix: Error: Unable to inspect existing database #2771 ( #2795 )
...
Integrated into release/v3.8.6
2026-05-27 17:04:13 -03:00
Paijo
aac17c01c3
fix: register missing web-cookie validators (claude-web, gemini-web, copilot-web, t3-web) ( #2793 )
...
Integrated into release/v3.8.6
2026-05-27 17:03:55 -03:00
Paijo
619463c573
fix: resolve npm install warnings — remove dead deps, relax engine constraint ( #2792 )
...
Integrated into release/v3.8.6
2026-05-27 17:03:38 -03:00
JeferssonLemes
72a46581b6
fix(opencode-go): route qwen3.x via claude messages + repair fixMissingToolResponses for Claude-shape upstreams ( #2791 )
...
Integrated into release/v3.8.6
2026-05-27 17:02:38 -03:00
diegosouzapw
722aa32939
chore: ignore .claude/settings.local.json (per-user Claude Code permissions)
2026-05-27 16:29:27 -03:00
diegosouzapw
80f8dd7863
chore: merge release/v3.8.5 into main (post-v3.8.5 hotfixes + community PRs)
2026-05-27 16:23:02 -03:00
Diego Rodrigues de Sa e Souza
3c016ce4dc
Merge pull request #2790 from jeferssonlemes/feat/opencode-go-missing-models
...
feat(opencode-go): register 4 missing models from upstream catalog
2026-05-27 10:42:14 -03:00
diegosouzapw
7042460292
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:41:52 -03:00
Diego Rodrigues de Sa e Souza
10ecf693a9
Merge pull request #2789 from InkshadeWoods/main
...
fix(i18n): translate 162 missing zh-CN UI strings
2026-05-27 10:41:29 -03:00
diegosouzapw
d718a6cbfb
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:41:07 -03:00
Diego Rodrigues de Sa e Souza
f32f6b841c
Merge pull request #2782 from kjhq/docs/fix-readme-broken-links
...
docs: fix broken documentation links in README after Fumadocs migration
2026-05-27 10:31:54 -03:00
diegosouzapw
7117cea835
chore: merge release/v3.8.5 to resolve conflicts
2026-05-27 10:31:40 -03:00
Diego Rodrigues de Sa e Souza
c765a987e6
Merge pull request #2783 from JxnLexn/fix-codex
...
fix(codex): apply global service tiers to combo request bodies
2026-05-27 10:31:22 -03:00