Commit Graph

228 Commits

Author SHA1 Message Date
liuwuyu118
860c0d6c2d fix: add image response support
Convert Google's inlineData format to Anthropic's image format:
- response-converter.js: Handle inlineData in non-streaming responses
- sse-parser.js: Parse inlineData for thinking models
- sse-streamer.js: Stream inlineData as image content blocks

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-13 11:17:17 +08:00
simon-ami
e24dff279c feat(webui): add configuration presets for Claude CLI
- Add backend storage logic in `src/utils/claude-config.js` to save/load/delete presets
- Add API endpoints (`GET`, `POST`, `DELETE`) for presets in `src/webui/index.js`
- Update `public/views/settings.html` with new Presets UI card and modals
- Update `public/js/components/claude-config.js` with auto-load logic and unsaved changes protection
- Add translations (EN/ZH) for new UI elements in `public/js/store.js`
- Add integration tests in `tests/frontend/test-frontend-settings.cjs`
- Update compiled CSS

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 11:59:32 +01:00
Badri Narayanan S
08b332b694 Merge pull request #101 from jgor20/overall-enhancements-to-web-ui
feat(webui): Comprehensive UI enhancements, responsive design, and routing improvements
2026-01-12 12:12:57 +05:30
jgor20
9231cbc60a docs: document usage stats module and UI enhancements in README and CLAUDE.md 2026-01-11 17:31:16 +00:00
jgor20
29acb34ee3 refactor(ui): consolidate filter control button styles and remove overflow from dropdowns 2026-01-11 17:19:20 +00:00
Badri Narayanan S
1045ebe097 Merge pull request #99 from simon-ami/main
Add "Restore Default Claude CLI" button to web console settings
2026-01-11 22:03:38 +05:30
simon-ami
097accd64f Merge branch 'pr-1' 2026-01-11 16:45:23 +01:00
simon-ami
f3b494ebe8 Add confirmation dialog for restoring default config
- Add Restore Default confirmation modal to settings.html
- Add translation strings to store.js
- Update claude-config.js to trigger modal instead of immediate restore

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-11 16:43:25 +01:00
jgor20
dde2910a1d perf(ui): optimize dashboard chart updates and rendering
Add debouncing to chart updates to prevent rapid flickering, implement checks to avoid redundant history processing and double renders, and disable quota chart animations to fix visual glitches.
2026-01-11 15:34:51 +00:00
Simon Benedict
e041afae6e Merge branch 'badrisnarayanan:main' into main 2026-01-11 16:15:22 +01:00
jgor20
a76c364921 refactor(ui): enhance chart destruction and instance management
Improve robustness of chart updates in dashboard components by adding
force destroy checks across canvas properties, component state, and
Chart.js registry to prevent memory leaks and instance conflicts.
Save new chart instances to both canvas and component for better tracking.
2026-01-11 15:12:41 +00:00
jgor20
fc35b71c2b feat(ui): add filter control styles for time range dropdown
Introduce new CSS classes for filter controls and apply them to the time range dropdown in the dashboard view, improving consistency and hover effects.
2026-01-11 15:06:20 +00:00
jgor20
5993456620 refactor(ui): simplify quota info handling in data store
Remove conditional check for empty quotaInfo and always include the row,
treating missing quota info as 0% or unknown for chart display consistency.
2026-01-11 15:01:10 +00:00
jgor20
85381f60a0 fix(ui): add TTL check for cache expiration
Add a 24-hour time-to-live check to the data cache restoration logic to prevent using stale cached data. This ensures data freshness by expiring and removing outdated cache entries before restoration. Also corrected a minor typo in the validity check comment.
2026-01-11 15:01:00 +00:00
jgor20
aa1a72dc62 refactor(ui): make sidebar width conditional on open state
Update class bindings in sidebar to apply width only when sidebar is open,
improving responsive behavior and preventing layout issues.
2026-01-11 14:58:37 +00:00
jgor20
ba24568bff refactor(components): structure model priority tiers in array
Extract hardcoded priority logic into a DEAD_THRESHOLD constant and MODEL_TIERS array for better maintainability and readability. This refactoring improves code organization without altering functionality.
2026-01-11 14:58:09 +00:00
jgor20
10cbe2125a perf(ui): debounce window resize event for sidebar responsiveness
Debounce the window resize event listener with a 150ms timeout to prevent excessive executions, improving performance during window resizing.
2026-01-11 14:51:07 +00:00
jgor20
dd7bfe724e refactor(ui): update sidebar collapsed selector for better specificity 2026-01-11 14:50:47 +00:00
jgor20
15e812c1fb fix(ui): add null check for remainingFraction in dashboard stats 2026-01-11 14:47:25 +00:00
jgor20
eb4cbc0ce5 refactor(components): enhance model identification precision
Switch from substring includes to regex word boundary tests for model names like opus, sonnet, and gemini variants, improving accuracy in the account manager's prioritization logic.
2026-01-11 14:46:41 +00:00
jgor20
de283a9ac8 merge: sync with upstream/main and resolve conflicts 2026-01-11 14:32:56 +00:00
jgor20
c17daf3948 feat(ui): enhance dashboard responsiveness for large screens
Improve layout and styling of dashboard filters and charts to better adapt to larger viewports, including updated flex directions, button sizes, and hover effects for lg breakpoints.
2026-01-11 14:21:26 +00:00
Badri Narayanan S
1142f3e452 Merge pull request #94 from jgor20/feat/webui-refresh-improvements
feat(webui): Improve connection health checks and monitoring
2026-01-11 19:46:29 +05:30
jgor20
f53195bd34 feat(ui): enhance header subtitles with badge styling
Refactor subtitle elements in accounts, dashboard, and models views to use styled badge containers with rounded backgrounds, borders, and improved typography for better visual consistency.
2026-01-11 13:56:11 +00:00
jgor20
0a0e3e2851 feat(ui): add data caching and hash-based routing
- Implement localStorage-based caching in data-store to restore accounts, models, and usage data on load, improving initial render performance
- Add hash-based routing in global store to sync active tab with URL, enabling browser back/forward navigation and direct linking to tabs
2026-01-11 13:47:15 +00:00
jgor20
11e256ac70 feat(ui): add sortable columns to models table
Add sorting functionality to the models table with clickable headers for columns like Stat, Model Identity, Global Quota, Next Reset, and Account Distribution. Includes dynamic sort icons and logic to handle ascending/descending order with appropriate defaults.
2026-01-11 13:40:31 +00:00
jgor20
58f32ebef9 fix(ui): improve subscription labels in dashboard
Change abbreviated subscription plan names (U, P, F) to full words (Ultra, Pro, Free) for better readability.
2026-01-11 13:14:51 +00:00
jgor20
52c3fa5669 refactor(ui): improve model quota selection logic
Introduce a priority-based system for selecting the main model quota, considering model tiers (e.g., opus, sonnet, pro) and availability status. This enhances accuracy by treating models with less than 1% remaining quota as "dead" for prioritization, ensuring users see the most relevant and active model in the dashboard.
2026-01-11 13:12:14 +00:00
jgor20
ab77db5a90 fix(ui): enhance dashboard quota chart responsiveness and layout 2026-01-11 12:43:45 +00:00
jgor20
aafa636ee5 fix(ui): improve dashboard responsiveness and layout
Adjust grid gaps, padding, and font sizes for better mobile and desktop display; add responsive classes and truncate text for improved usability.
2026-01-11 12:02:31 +00:00
Simon Benedict
e9c6b3c10c Merge pull request #1 from simon-ami/copilot/add-restore-default-clause-button
Add "Restore Default Claude CLI" button to web console settings
2026-01-11 13:01:52 +01:00
copilot-swe-agent[bot]
cd594f6e82 Address code review: use constant array for proxy env vars and clean empty env
Co-authored-by: simon-ami <102378134+simon-ami@users.noreply.github.com>
2026-01-11 11:56:01 +00:00
copilot-swe-agent[bot]
8eba68e47a Add Restore Default Claude CLI button to settings page
Co-authored-by: simon-ami <102378134+simon-ami@users.noreply.github.com>
2026-01-11 11:54:13 +00:00
copilot-swe-agent[bot]
66c80452e3 Initial plan 2026-01-11 11:46:26 +00:00
jgor20
f9dd71f411 feat(ui): add responsive sidebar with mobile toggle and overlay
Implement responsive sidebar functionality that auto-opens on desktop (≥1024px) and auto-closes on mobile, with a toggle button for mobile users. Added overlay for mobile sidebar dismissal and CSS for collapsed state on desktop. Minor adjustments to dashboard chart borders and grid layouts.
2026-01-11 11:26:37 +00:00
jgor20
ed4231310b Refactor dashboard layout, quota logic, and connection status pill 2026-01-11 10:53:58 +00:00
jgor20
5879022dc3 fix: use lightweight /api/config for health checks and simplify UI status logic 2026-01-11 09:46:41 +00:00
Badri Narayanan S
325acdba8c fix: preserve tool_use stop reason from being overwritten by finishReason
When a tool call is made, stopReason is set to 'tool_use'. However, when
finishReason: STOP arrives later, it was overwriting stopReason back to
'end_turn', breaking multi-turn tool conversations in clients like OpenCode.

Fix: Initialize stopReason to null and only set it from finishReason if
not already set. This ensures tool_use is preserved once detected.

Fixes #96

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-11 11:52:35 +05:30
Badri Narayanan S
7b921abb1d fix(webui): remove space before [1m] suffix in Gemini model names
The WebUI was generating model names like "gemini-3-flash [1m]" with a
space before the suffix, causing 404 errors when Claude Code used
sub-agents. Changed to "gemini-3-flash[1m]" (no space).

Fixes #97

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-11 11:16:37 +05:30
Badri Narayanan S
a06cd30f61 Merge pull request #93 from Wha1eChai/feature/webui
fix: address issue #92 and refactor frontend architecture for production readiness
2026-01-11 10:58:40 +05:30
jgor20
c3629d660c fix(webui): prevent duplicate visibility change listeners in health check
Ensure the visibility change event listener for health checks is set up only once
and properly removed on destroy to avoid memory leaks and duplicate handlers.
2026-01-10 22:58:11 +00:00
jgor20
69440584fd feat(webui): add health check monitoring for connection status
Implement periodic health checks every 15 seconds to monitor connection status,
pausing when the tab is hidden and resuming on visibility. Update UI bindings
to use data store for connection status instead of global store. Add destroy
method to clean up timers on component teardown.
2026-01-10 22:41:15 +00:00
Wha1eChai
14ef814c1a merge: sync with upstream/main (5xx error fallback feature) 2026-01-11 02:57:59 +08:00
Wha1eChai
bda9623f3a feat(webui): optimize CSS build system and enhance UI quality 2026-01-11 02:57:42 +08:00
Wha1eChai
a56bc06cc1 feat(webui): add Tailwind build system and refactor frontend architecture
- Replace Tailwind CDN with local build (PostCSS + autoprefixer + daisyui)

- Add CSS build scripts with automatic prepare hook on npm install

- Create account-actions.js service layer with unified response format

- Extend ErrorHandler.withLoading() for automatic loading state management

- Add skeleton screens for initial load, silent refresh for subsequent updates

- Implement loading animations for async operations (buttons, modals)

- Improve empty states and add ARIA labels for accessibility

- Abstract component styles using @apply (buttons, badges, inputs)

- Add JSDoc documentation for Dashboard modules

- Update README and CLAUDE.md with development guidelines
2026-01-11 02:11:35 +08:00
Badri Narayanan S
6868bf217c Merge pull request #47 from Wha1eChai/feature/webui
feat: Add Web UI for account and quota management
2026-01-10 22:21:57 +05:30
Badri Narayanan S
c6edb1e507 Merge pull request #90 from tiagonrodrigues/fix/fallback-on-5xx-errors
feat: fallback to alternate model when max retries exceeded with 5xx errors
2026-01-10 20:23:42 +05:30
Tiago Rodrigues
0b477c2552 feat: fallback to alternate model when max retries exceeded with 5xx errors
When all accounts fail with HTTP 500/503 errors (e.g., Google API returning
'Unknown Error' for Claude models on large conversations), the proxy now
attempts to use a fallback model if --fallback is enabled.

This enables graceful degradation when:
- All accounts are exhausted due to 5xx errors (not just rate limits)
- Claude models fail on very large conversations
- The API has temporary issues with specific models

The fallback uses the existing MODEL_FALLBACK_MAP configuration:
- claude-opus-4-5-thinking -> gemini-3-pro-high
- claude-sonnet-4-5-thinking -> gemini-3-flash

Relates to #88
2026-01-10 12:08:53 +00:00
Wha1eChai
ee6d222e4d feat(webui): add subscription tier and quota visualization
Backend:
2026-01-10 06:05:17 +08:00
Wha1eChai
369a66e8cf Merge branch 'main' into feature/webui 2026-01-10 04:46:30 +08:00