Commit Graph
225 Commits
Author SHA1 Message Date
Gemini Nexus Bot 080bf30e38 fix(ci): remove explicit pnpm version from workflows
pnpm/action-setup@v4 reads the version from package.json packageManager
field automatically. Having both causes ERR_PNPM_BAD_PM_VERSION.
2026-05-02 00:50:12 -03:00
Gemini Nexus Bot c134a072df Merge branch 'main' of https://github.com/evandrodevbr/GeminiNexus 2026-05-02 00:37:01 -03:00
Gemini Nexus Bot a905877c76 feat: bump version to 0.14.0
Includes all changes from this release cycle:
- Top header navigation (sidebar removed)
- Accounts screen decomposition and visual redesign
- Dev/prod environment isolation
- Usage Analytics with accurate averages, cost reporting, OpenRouter pricing
- Monitor moved to Usage with per-request token/cost tracking
- Clickable traffic logs with expandable JSON body viewer
- OpenCode IDE config in Quick Setup
- API Proxy reorganization (flattened tabs)
- CI/CD pipeline fixes (release config, Node version, pnpm alignment)
- Repository cleanup (~80MB of binaries removed)
2026-05-02 00:32:21 -03:00
Gemini Nexus Bot 3752dfda91 chore: remove ~80MB of obsolete files and binaries from tracking
- Remove WiX Toolset binaries (tools/wix314/, wix314-binaries.zip) - CI installs via choco
- Remove one-shot scripts (fix-ts.js, patch-proxy.js, patch-settings.js, rename-deep.js)
- Remove AI session data (thoughts/, .impeccable.md, CLAUDE.md)
- Remove legacy launchers (agm.bat, run_cli.bat)
- Remove unused Nix config (flake.nix, flake.lock)
- Remove test-process.ts from root
- Update .gitignore to prevent re-tracking
2026-05-02 00:31:10 -03:00
Gemini Nexus Bot 71bf8122d1 fix(ci): resolve release pipeline conflicts and clean repo structure
- Delete conflicting .releaserc.json (keep release.config.cjs as single source)
- Fix repo URL from Draculabo/AntigravityManager to evandrodevbr/GeminiNexus
- Fix @semantic-release/git to commit pnpm-lock.yaml (not package-lock.json)
- Normalize Node.js version to 20 across all workflows
- Add packageManager field to package.json for pnpm consistency
- Update AGENTS.md: npm -> pnpm (18 references)
- Update .gitignore: add tools/, thoughts/, binaries, one-shot scripts
2026-05-02 00:30:44 -03:00
Gemini Nexus Bot 713c4497c6 feat(proxy): add OpenCode IDE config and fix service availability
- Add opencode to SupportedIde with JSON providers.json output
- Add defaultModel parameter for IDE config generation
- Add model selector dropdown in ToolsTab for IDE configurations
- Use getServiceOptional for graceful degradation when proxy is stopped
- Add fallback IDE config generation using ConfigManager when NestJS is offline
- Update IPC router schema to accept defaultModel parameter
2026-05-02 00:30:18 -03:00
Gemini Nexus Bot 641c739b64 feat(proxy): enrich traffic logs with model and token metadata
- Add model to logInbound metadata
- Add model, tokensPrompt, tokensCompletion, tokensTotal to logOutbound metadata
- Enrich SSE streaming with token metadata from final usage chunk
- Add metadata parameter to logOutbound method signature
- Data persisted in traffic_logs.metadata_json for per-request cost calculation
2026-05-02 00:29:55 -03:00
Gemini Nexus Bot 99e458f69b feat(usage): move Monitor to Usage tab with per-request token tracking
- Move MonitorTab and TrafficLogTable from proxy/advanced to usage/
- Add Analytics and Monitor tabs to Usage page
- Remove Monitor tab from API Proxy (flatten to 4 tabs)
- Add Model, Input/Output tokens, and Cost columns to traffic log table
- Make log rows clickable with expandable detail panel (JSON body viewer)
- Fix req/min calculation using actual request time span (MIN/MAX timestamps)
- Add word-wrap for large message bodies in expanded view
2026-05-02 00:29:32 -03:00
Gemini Nexus Bot bc69a2e8b5 feat(usage): add cost reporting with custom model pricing and OpenRouter
- Create CostReportCard with per-model input/output cost breakdown table
- Create ModelPricingDialog for custom pricing configuration
- Add 'Fetch from OpenRouter' button to auto-populate pricing from API
- Add custom_model_pricing to AppConfig (persisted in gui_config.json)
- Refactor calculateCost to accept optional custom pricing overrides
- Support Manual, OpenRouter, and Default pricing sources
2026-05-02 00:29:08 -03:00
Gemini Nexus Bot 20785a8414 feat(usage): redesign Usage Analytics with accurate token averages
- Fix token averaging: calculate over active hours/days only (not full period)
- Enable hourlyData query for all time ranges (not just 24h)
- Rename 'Usage Forecast' to 'Usage Averages' (real data, not projections)
- Add avg/request metric and active hours/days context
- Update terminology: Input/Output Tokens with info tooltips
- Add Estimated Cost stat card with per-model calculation
- Add quota warning alert banner when models exceed 80%
- Add ModelQuotaBar component with color thresholds
2026-05-02 00:28:45 -03:00
Gemini Nexus Bot 5c44a622a8 feat(core): isolate dev and production environments
- Add IS_DEV_ENVIRONMENT flag to paths.ts for automatic detection
- Dev uses 'Gemini Nexus Dev' app data dir and '.geminiNexus-agent-dev' agent dir
- Dev proxy defaults to port 8046, production stays on 8045
- Move app.setName() before packetLogPath to ensure correct userData path
- Config, DB, logs, and ORPC packets fully isolated between dev and prod
2026-05-02 00:28:22 -03:00
Gemini Nexus Bot bf5a42c03e refactor(accounts): decompose CloudAccountList into focused components
- Extract AccountsHeader, AccountsToolbar, AddAccountDialog, ExportImportDialogs, BatchActionBar, AccountsGrid
- Slim CloudAccountList from 1159 to 164 lines (orchestrator pattern)
- Improve visual hierarchy: stat cards with color-tinted borders, toolbar separators, better empty state
- All existing functionality preserved
2026-05-02 00:27:59 -03:00
Gemini Nexus Bot 7d2977b665 feat(ui): replace sidebar with compact top header navigation
- Rewrite MainLayout from vertical sidebar to horizontal header bar
- Brand left, nav tabs center, status indicator right
- Simplify StatusBar to single inline layout (remove collapsed variant)
- Widen content area from max-w-4xl to max-w-6xl
- Remove sidebar-collapsed localStorage persistence
2026-05-02 00:27:36 -03:00
Gemini Nexus Bot 0753bbdce6 fix: install notice showing in Chinese and not recognizing MSI install path
- Use app.getPreferredSystemLanguages() for reliable OS language detection
  instead of relying solely on app.getLocale() which returns Chromium's
  internal locale (was returning zh-CN on pt-BR systems)
- Support both Squirrel (%LOCALAPPDATA%) and WiX/MSI (Program Files)
  install directories when checking if app runs from expected location
- Extract matchLocaleTag helper for cleaner language resolution logic
- Add getAllExpectedInstallRoots to enumerate all valid install paths
2026-04-29 12:04:32 -03:00
semantic-release-bot a631887cd1 chore(release): 0.14.0 [skip ci]
## [0.14.0](https://github.com/evandrodevbr/GeminiNexus/compare/v0.13.1...v0.14.0) (2026-04-29)

### 🚀 Features

* **proxy:** add OpenAI Responses API compatibility for Open CoDesign ([68474b5](https://github.com/evandrodevbr/GeminiNexus/commit/68474b56dca9c9bcd7b06eaae04c521f475e8e2c))
v0.14.0
2026-04-29 14:34:04 +00:00
Gemini Nexus Bot 4ce8d266ab Merge branch 'main' of https://github.com/evandrodevbr/GeminiNexus 2026-04-29 11:32:58 -03:00
Gemini Nexus Bot 68474b56dc feat(proxy): add OpenAI Responses API compatibility for Open CoDesign
- Normalize Responses API tool format ({name, parameters} at top level)
  to Chat Completions format ({function: {name, parameters}})
- Handle 'developer' role as system prompt (OpenAI's newer equivalent)
- Add null/non-array guards to convertOpenAIPartsToAnthropicContent and
  extractOpenAITextContent to prevent 'content is not iterable' crashes
- Support input_text, output_text, and reasoning item types in Responses
  API input parsing
- Forward reasoning.effort to Claude adaptive thinking config
- Extend JSON schema sanitization blacklist with draft-2020 keywords
  (patternProperties, , unevaluatedProperties, etc.)
- Add fallback for untyped items with role/content in Responses API input
- Add diagnostic logging for /v1/responses input conversion
2026-04-29 04:39:15 -03:00
semantic-release-bot 48faa0d4b1 chore(release): 0.13.1 [skip ci]
## [0.13.1](https://github.com/evandrodevbr/GeminiNexus/compare/v0.13.0...v0.13.1) (2026-04-29)

### 🐛 Bug Fixes

* lazy-initialize api-logger to prevent EACCES in CI environments ([9bf7c46](https://github.com/evandrodevbr/GeminiNexus/commit/9bf7c46ff6320f49cba80923c9e11eac35a7d4f0))
v0.13.1
2026-04-29 06:40:20 +00:00
Gemini Nexus Bot 9bf7c46ff6 fix: lazy-initialize api-logger to prevent EACCES in CI environments
The DailyRotateFile transport was creating directories at module load
time, causing EACCES permission errors when tests import modules that
transitively reach api-logger.ts.

Refactored to use a Proxy that lazily initializes the winston logger
on first method call. This eliminates side effects during module
loading while maintaining the same public API.
2026-04-29 03:39:28 -03:00
Gemini Nexus Bot 195af14707 ci: chain publish workflow after release via workflow_run
- Replaced push/release triggers with workflow_run on Release completion
- Added check-release job to verify a new release exists before building
- Simplified publish job to use tag from check-release output
- This solves the GITHUB_TOKEN limitation where events don't trigger
  other workflows
2026-04-29 03:28:43 -03:00
Gemini Nexus Bot a9a492274c ci: restore changelog and git plugins in semantic-release
Branch ruleset now allows GitHub Actions bypass, so the plugins
can push changelog and version bumps back to main.
2026-04-29 03:23:50 -03:00
Gemini Nexus Bot 3cf82a7999 ci: remove @semantic-release/git and @semantic-release/changelog plugins
These plugins push commits directly to main, which conflicts with
branch protection rules (PR required, signed commits). The tag and
GitHub Release are created via API by @semantic-release/github
and don't need push access.
2026-04-29 03:22:07 -03:00
Gemini Nexus Bot fea752cc4d ci: use GITHUB_TOKEN for semantic-release and add tag trigger to publish
Publish Release / build (x64, ubuntu-latest, linux) (push) Successful in 16m25s
Publish Release / build (arm64, macos-14, darwin) (push) Canceled after 0s
Publish Release / build (arm64, ubuntu-24.04-arm, linux) (push) Canceled after 0s
Publish Release / build (arm64, windows-11-arm, win32) (push) Canceled after 0s
Publish Release / build (x64, macos-15-intel, darwin) (push) Canceled after 0s
Publish Release / build (x64, windows-latest, win32) (push) Canceled after 0s
Publish Release / Publish Release (Manual Approval) (push) Canceled after 0s
- Switched from custom GH_TOKEN PAT to built-in GITHUB_TOKEN (always valid)
- Added push tags trigger (v*) to publish.yaml since GITHUB_TOKEN
  releases don't fire the 'on: release' event
v0.13.0
2026-04-29 03:14:42 -03:00
Gemini Nexus Bot df7ecfe290 ci: auto-trigger release on main push and bump Node to 22
- Added push trigger on main branch for automatic releases
- Bumped Node.js from 20 to 22 (semantic-release requires ^22.14.0)
2026-04-29 03:12:00 -03:00
Gemini Nexus Bot cca8bdf68f fix: mock api-logger and api-logging.plugin in cloudHandler-sync test
The DailyRotateFile transport in api-logger.ts creates directories at
module load time. When the paths mock returns '/mock/agent/dir', the
real file-stream-rotator fails with EACCES on CI Linux runners.

Added vi.mock for both api-logger and api-logging.plugin to prevent
the real DailyRotateFile from initializing during tests.
2026-04-29 03:00:54 -03:00
Gemini Nexus Bot 6e568dd866 fix: resolve type-check and unit test failures for CI
- vite.renderer.config: remove deprecated babel option from @vitejs/plugin-react v6
- server/main.ts: cast fastify instance to fix version mismatch TS error
- proxy-tool-streaming.test: pass 3 args to ProxyService constructor (added TokenUsageService mock)
- input.test: update expected classes (rounded-lg, bg-muted/50)
- StatCard.test: update selectors and accent classes to match component (rounded-lg, /8 opacity, bg-white/[0.04])
- paths.test: relax executable path assertion for CI environments
- cloud-repo.test: add fs mock to prevent EACCES on /mock/db
- cloudHandler-sync.test: add traffic-logger mock to prevent EACCES on /mock/
2026-04-29 02:56:03 -03:00
Gemini Nexus Bot de866a74bf ci: migrate all workflows to pnpm, upgrade @vitejs/plugin-react to v6
- Replace npm ci with pnpm install --frozen-lockfile in all 5 workflows
- Add pnpm/action-setup@v4 step to lint, format, testing, release, publish
- Upgrade @vitejs/plugin-react 4.7.0 -> 6.0.1 (supports vite 8)
- Add @rolldown/plugin-babel as required peer dependency
- Remove package-lock.json (project uses pnpm-lock.yaml)
2026-04-29 02:48:19 -03:00
Gemini Nexus Bot 9c07fbc815 docs: rewrite CONTRIBUTING.md and upgrade Code of Conduct to v2.1
- CONTRIBUTING: update repo URLs, Node 20, add semantic-release commit mapping, project structure, import order, review process
- CODE_OF_CONDUCT: upgrade from Contributor Covenant v1.4 to v2.1, add 4-level enforcement guidelines, replace placeholder email with GitHub issues
2026-04-29 02:43:27 -03:00
Gemini Nexus Bot 3420fc86d2 ci: add semantic-release config, regenerate build icons, normalize Node 20
- Create .releaserc.json with conventional commits, changelog, npm version bump, and GitHub release
- Regenerate all build icons (PNG, ICO, ICNS) from new GN logo
- Normalize Node.js version to 20 across all CI workflows (testing, lint, format, release)
2026-04-29 02:37:29 -03:00
Gemini Nexus Bot d737f94003 docs: update repo URLs to evandrodevbr/GeminiNexus across all READMEs 2026-04-29 02:26:10 -03:00
Gemini Nexus Bot dc91cc9128 docs: rewrite READMEs with new logo, screenshots, and multi-language support 2026-04-29 02:13:05 -03:00
Gemini Nexus Bot e6f5adbae1 merge: hermes/refactor-design into main - token tracking fixes + usage dashboard redesign 2026-04-29 01:45:25 -03:00
Gemini Nexus Bot a648f2a281 fix: token tracking pipeline + premium usage dashboard redesign
Backend fixes:
- Fix totalTokens defaulting to 0 when API omits totalTokenCount (now computes prompt+completion)
- Fix streaming metadata extraction: unwrap response wrapper in Anthropic/Gemini handlers
- Fix Zod schemas: handle SQL SUM(null) with nullable().transform()
- Add is_estimated column migration to token_usage table

Frontend redesign:
- Rewrite Usage page with area charts (nivo/line), horizontal bar model ranking
- StatCard: add trend indicators (% vs previous period) and inline SVG sparklines
- Premium color palette, prompt/completion ratio bar, top models mini-list
- Live indicator with 15s auto-refresh

Design system migration:
- Standardize all components on Gemini Nexus tokens (rounded-xl, border-white/[0.06])
- Refine UI components, proxy tabs, cloud account list, provider groups
2026-04-29 01:43:48 -03:00
Gemini Nexus Bot b1c76f3b69 style(components): flatten usage cards 2026-04-28 04:01:31 -03:00
Gemini Nexus Bot 1ad7ae6515 style(components): flatten tabs component design 2026-04-28 03:59:55 -03:00
Gemini Nexus Bot fbf21c4fa9 style(components): flatten CloudAccountList header structure 2026-04-28 03:58:27 -03:00
Gemini Nexus Bot d35db9756d style(components): flatten AccountCard hover effects 2026-04-28 03:56:42 -03:00
Gemini Nexus Bot 3088c9c542 style(layout): soften sidebar border and background 2026-04-28 03:54:40 -03:00
Gemini Nexus Bot 24142115c4 style(components): refine core UI components for minimal aesthetics
- card: switched to subtle borders (border-white/5)
- input: increased height to h-10, enhanced focus transitions, removed internal shadows
- button: removed default shadows for flatter appearance
2026-04-28 03:53:45 -03:00
Gemini Nexus Bot bac7b5591e style(design): apply Minimal Dark Mode design system\n\n- Switched to complete Dark Mode (OLED-friendly)\n- Established standard color palette matching modern technical aesthetics\n- Changed font to Plus Jakarta Sans for increased legibility\n- Enforced dark mode as default in App.tsx\n- Fixed several React cascading render (setState in useEffect) warnings 2026-04-28 03:49:34 -03:00
Gemini Nexus Bot b80531f8a8 Merge branch 'feature/token-usage-counter' 2026-04-27 23:47:37 -03:00
Gemini Nexus Bot 3573009e0a fix(security): resolve 32 pnpm audit vulnerabilities
Upgrade direct dependencies to patched versions:
- electron: 37.3.1 -> 39.8.5
- vite: 5.4.21 -> 6.4.2
- @tailwindcss/vite: 4.1.17 -> 4.2.4
- fastify: 5.8.4 -> 5.8.5
- uuid: 13.0.0 -> 14.0.0
- Remove @types/uuid (uuid 14 ships its own types)

Add pnpm.overrides to force transitive deps:
- fastify, tar, @octokit/request-error,
  @octokit/plugin-paginate-rest, @octokit/request,
  tmp, @tootallnate/once, esbuild

pnpm audit: 0 vulnerabilities (was 32: 6L/15M/11H)
2026-04-27 23:05:10 -03:00
Gemini Nexus Bot 095ea6131d feat: restore Gemini Nexus rebranding logo assets (high-resolution icons and favicons) 2026-04-27 01:15:39 -03:00
Gemini Nexus Bot 69e455a565 fix(proxy): ensure OpenAI tool call streaming emits proper delta chunks and increase body limit
- Emit tool call id+name in first SSE delta and arguments in subsequent deltas
- Split large tool arguments into 1000-char chunks to prevent framing issues
- Set FastifyAdapter bodyLimit to 10MB to handle large payloads
- Add TDD tests for tool call streaming verification
2026-04-27 01:14:44 -03:00
Gemini Nexus Bot 04014b8c7d chore: commit current working state with config updates, test fixes, and continuity ledgers 2026-04-27 00:43:57 -03:00
Gemini Nexus Bot afe8859f16 test: fix broken unit tests, add missing fixtures, and stabilize CI pipeline
- Fix os module mock pattern for Vitest v4 in proxy-ide-config tests

- Fix enterprise oauth_client_key expectations in cloudHandler-sync and token-manager-parity tests

- Fix proxy-controller integration test argument expectations

- Add missing proxy-parity JSON fixtures (OpenAI tools, Anthropic tool-use, Gemini SSE)

- Add reasoning_content mapping to convertClaudeToOpenAIResponse

- Fix google-api service test env var cache leak with resetModules + dynamic imports

- Fix proxy-metrics timer tests by calling onModuleInit in beforeEach

- Fix locale-sensitive number formatting in StatCard tests

- Add missing test files to version control (components, hooks, ipc, mocks, server, utils)

- Fix CI workflows: testing.yaml (use vitest run, add type-check job, npm cache), lint.yaml and format.yaml (add npm cache, concurrency, fix job names)
2026-04-23 16:57:58 -03:00
Gemini Nexus Bot bf4bcf4f96 fix: apply code review fixes (fire-and-forget usage, theme-aware chart colors) 2026-04-23 03:00:58 -03:00
Gemini Nexus Bot fd1b2b8bc0 fix: resolve TypeScript type-check errors
- Add cacheHitRate to ProxyMetricsService, handler, and router schema
- Fix StatCard to support string values and purple accent
- Fix duplicate tabs keys in i18n translations (EN/ZH/RU)
- Add missing cacheStatus translations across all languages
2026-04-23 02:50:09 -03:00
Gemini Nexus Bot 0be7d7fea2 feat(proxy): implement metrics persistence, traffic logs DB, and advanced monitoring
- Add SQLite schema for proxy metrics and traffic logs
- Implement ProxyMetricsRepo with historical aggregates
- Add TrafficLogsRepo for DB-backed traffic log queries
- Create proxy-advanced IPC handlers (metrics, traffic logs, circuit breaker, parity)
- Add ProxyMetricsService with connection snapshots and cleanup
- Add ProxyReplayService and ProxyIdeConfigService
- Implement MonitorTab and ToolsTab for advanced proxy features
- Add TrafficLogTable with sorting and filtering
- Fix i18n keys for proxy metrics
- Fix generateIdeConfig type mapping
- Update proxy routes with advanced tab integration
2026-04-23 00:57:01 -03:00
Gemini Nexus Bot c73537d44c fix(usage): use sentinel value for All Accounts select to prevent Radix empty string crash 2026-04-22 16:26:36 -03:00