Commit Graph
59 Commits
Author SHA1 Message Date
Tam Nhu Tran c3401f0a91 feat(ui): complete dashboard i18n coverage across 162 files
Replace all remaining hardcoded English strings with t() calls across
the CCS dashboard UI. Add zh-CN, vi, ja translations for all new keys.

- 162 files updated (components, hooks, pages, lib utilities)
- 7 domains covered: layout/shared, accounts/auth, CLIProxy,
  compatible CLI (Codex/Cursor/Droid/Copilot), logs/monitoring,
  analytics, and lib utilities
- 4 locales: en, zh-CN, vi, ja with natural (not literal) translations
- Fix duplicate customPresetDialog key shadowing in en/zh-CN
- Fix missing ja nav.logs and providerModelSelector keys
- Fix openrouter-banner count type (string → number)
- Fix add-account-dialog double setLocalError call
- Fix codex-model-providers-card missing useTranslation

Closes #983
2026-04-13 20:52:30 -04:00
Tam Nhu Tran 83255f4771 feat(api): add Hugging Face provider preset
- add the huggingface preset and hf alias to the shared preset catalog

- default the preset to Factory Droid because the documented path is generic chat completions

- cover the CLI and dialog behavior with preset metadata and UI tests
2026-04-10 17:29:25 -04:00
Tam Nhu Tran 5f9bafe9cd fix(ui): address provider lane review notes 2026-04-10 06:31:58 -04:00
Tam Nhu Tran ad70f93b1b feat(ui): reposition providers around quality and local lanes 2026-04-10 05:50:26 -04:00
Tam Nhu Tran f61cc87aa2 feat(dashboard): show all provider presets by default in Create API Profile modal
Remove collapsible "More Presets" toggle. All alternative providers are
now always visible in a labeled section below Featured Providers,
improving discoverability for users like Minimax, GLM, DeepSeek.

Closes #892
2026-04-02 12:52:17 -04:00
Tam Nhu Tran 982ffc5895 feat(image): add native-read controls and autosave settings
- add per-profile native image preferences and native-capability detection
- redesign Settings -> Image around compact sections with Web-style autosave
- expose richer backend/profile status and update Gemini Flash defaults
2026-04-01 15:32:37 -04:00
Tam Nhu Tran 9d1d281e34 feat(image-analysis): add dedicated dashboard settings 2026-04-01 15:32:37 -04:00
Tam Nhu Tran 0246e327fe feat(ui): clarify image-analysis target status 2026-04-01 15:32:37 -04:00
Tam Nhu Tran 1a01c6fc68 fix(image-analysis): surface runtime readiness 2026-04-01 15:32:37 -04:00
Tam Nhu Tran d394772f7c fix(image-analysis): preview backend status safely 2026-04-01 15:32:37 -04:00
Tam Nhu Tran ae459fc3d7 feat(image-analysis): resolve backend status per profile 2026-04-01 15:32:37 -04:00
Tam Nhu Tran aeab2840de fix(ui): constrain bounded code editor scroll viewports 2026-03-26 15:31:24 -04:00
Tam Nhu Tran 44d4df1254 fix(ui): restore scrolling in bounded code editors 2026-03-26 15:10:41 -04:00
Tam Nhu Tran 1f667b5953 fix: harden droid runtime alias resolution 2026-03-23 14:15:30 -04:00
Tam Nhu Tran 160be319d0 feat: add explicit droid runtime alias surface 2026-03-23 13:44:32 -04:00
Tam Nhu Tran aef58d66ce fix(dashboard): refine api profile quick start state
- prevent the providers page from introducing nested overflow

- show a select-profile state when profiles already exist

- localize the new quick-start and AI Providers copy
2026-03-23 11:43:06 -04:00
Tam Nhu Tran 50c55bb108 feat(cliproxy): add dedicated ai providers workspace 2026-03-19 11:55:02 -04:00
Tam Nhu Tran 287691fa04 feat(profiles): add cliproxy api profile bridge
- add backend and CLI flows for creating routed API profiles from CLIProxy providers

- add dashboard bridge CTAs, metadata, and guided create dialog mode

- cover bridge routes and dialog behavior with focused tests

Refs #649
2026-03-19 10:24:28 -04:00
Tam Nhu Tran 2d48e6a287 chore: resolve dev merge conflicts for GLMT deprecation 2026-03-17 15:55:25 -04:00
Tam Nhu Tran 5525098400 feat: deprecate GLMT user-facing surfaces 2026-03-17 15:49:29 -04:00
Tam Nhu Tran a999adc776 fix(ui): simplify provider chooser cards 2026-03-17 14:51:07 -04:00
Tam Nhu Tran 3954e445f3 fix(ui): keep provider names readable 2026-03-17 14:43:46 -04:00
Tam Nhu Tran 8c0d75a454 fix(ui): rebalance API profile provider chooser 2026-03-17 14:35:27 -04:00
Tam Nhu Tran 0337a32d99 feat(ui): improve API profile provider selector UX 2026-03-17 13:54:52 -04:00
Kai (Tam Nhu) TranandGitHub 163f40be8a Merge pull request #693 from jellydn/feat/llamacpp-support
feat(api): add llama.cpp support as local model provider
2026-03-09 05:24:46 -04:00
Tam Nhu Tran 0b9a8526a7 merge(dev): port llama.cpp preset onto current catalog 2026-03-07 16:00:03 +07:00
Tam Nhu Tran 5bcad30762 Merge remote-tracking branch 'origin/dev' into pr-689-anthropic-direct-api
# Conflicts:
#	ui/src/components/profiles/profile-dialog.tsx
2026-03-07 15:59:44 +07:00
Tam Nhu Tran 1f29fa0b6a fix(api): complete anthropic direct profile support 2026-03-07 15:58:36 +07:00
Tam Nhu Tran bea3084d5e fix(config): align claude defaults across catalogs 2026-03-07 15:41:26 +07:00
Huynh Duc Dung 6078de78f2 fix(ui): use preset apiKeyPlaceholder when creating profiles
Fixes profile creation for local providers (llamacpp, ollama) where
apiKey is not required but server validation requires a truthy value.

Changes:
- Set apiKey to preset.apiKeyPlaceholder when selecting a preset
- Use preset.apiKeyPlaceholder as fallback in onSubmit
- Ensures sentinel values (e.g., "llamacpp", "ollama") are sent

Fixes user-reported error when creating llamacpp profile via dashboard.
2026-03-05 12:36:39 +08:00
Tam Nhu Tran 8811e5320f feat(api): add Alibaba Coding Plan preset and providers promotion 2026-03-04 00:39:02 +07:00
Kai (Tam Nhu) TranandGitHub 592684063a Merge pull request #652 from D0n9/feature/i18n-chinese-support
feat(i18n): Added support for Chinese language pack
2026-03-02 13:47:15 -05:00
lidong 7ffb8a4234 feat(i18n): Added support for Chinese language pack 2026-03-02 18:39:34 +08:00
Tam Nhu Tran 6f8514b74b fix(ui): restore scrolling in API profile create dialog 2026-03-01 14:42:07 +07:00
Tam Nhu Tran d385bd19f2 fix(ui): harden target update flows in profile editors
- send strict target-only payloads when cliproxy edit only changes target

- route profile target updates through shared api client error handling

- block concurrent save/target actions in header controls
2026-02-25 17:01:53 +07:00
Tam Nhu Tran db38ccc117 feat(ui): support editing profile default target
- add target selector in profile editor header

- call profile update API to persist target changes

- update info panel usage snippets for target-aware commands
2026-02-25 15:53:22 +07:00
Tam Nhu Tran ca78e63205 feat(ui): add target support to API profile dashboard
- extend API client types with claude|droid target fields

- add default target selector in API profile create dialog

- show target badges in API profile list
2026-02-25 15:53:02 +07:00
Tam Nhu Tran 14242b5681 fix(profiles): reset form state on preset transitions
- resolve presets through canonical alias-aware lookup

- reset all tier model fields when switching presets/custom

- derive quick templates from non-recommended categories
2026-02-20 23:24:11 +07:00
Tam Nhu Tran faa610f843 fix(ui): make api profile dialog scrollable on small screens 2026-02-20 12:31:19 +07:00
kaitranntt 2cb77f2dfd feat(ui): add Ollama logo and make API key optional
- Add Ollama SVG logo to ui/public/icons/
- Add icon property to both ollama and ollama-cloud presets
- Make API key field optional for local Ollama (show input with hint)
- Update placeholder: "Optional - only if auth is enabled"
- Allows power users with Ollama auth configured to provide key
2026-01-22 14:24:37 -05:00
kaitranntt 2b7d18c4c6 feat(ui): add Ollama provider presets to dashboard
- Add ollama (local) and ollama-cloud presets to UI provider-presets.ts
- Update profile-create-dialog to handle requiresApiKey: false
- Show "No API Key Required" info box for local Ollama
- Add --api-key ignored warning to CLI for local Ollama preset
- Add ollama-cloud to CLI help text preset list

Fixes edge cases identified in PR review:
- UI dashboard now has parity with CLI Ollama support
- Conditional API key validation in profile creation form
2026-01-22 14:09:59 -05:00
Kai (Tam Nhu) TranandGitHub 388428bba9 fix: validate required config fields before save (#225)
* fix(ui): validate BASE_URL and AUTH_TOKEN before save

- Add validation in use-provider-editor to block save when required
  env vars (ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN) are missing
- Show warning banner in raw editor when required fields are absent
- Always apply default preset on account add (not just first account)

This implements defense-in-depth: validation UI prevents confusion,
save-time validation prevents broken configs, auto-preset ensures
new providers start with working configuration.

Fixes #224

* fix: add validation to remaining settings routes and UI hooks

Backend:
- settings-routes.ts: Validate ANTHROPIC_BASE_URL and AUTH_TOKEN on PUT
- profile-routes.ts: Validate baseUrl/apiKey not empty on update
- variant-routes.ts: Require model field for variant creation

Frontend:
- use-profile-editor.ts: Add required field validation + error handling
- use-copilot-config-form.ts: Add required field validation + error handling

Both hooks now expose missingRequiredFields for UI warnings.

Ref #224

* feat(ux): auto-fill missing BASE_URL/AUTH_TOKEN from defaults at runtime

Instead of blocking saves when required env vars are missing, the system now:
- Runtime fills missing values from getClaudeEnvVars() defaults
- Backend returns warning in response (not 400 error)
- UI shows informational toast instead of blocking error
- Yellow warning banner still shown for user awareness

This provides better UX for CLIProxy users - saves always work, and
missing fields automatically use sensible defaults (local proxy URL
and global API key).

* fix(api): validate settings object before write to prevent undefined file content

Add validation to PUT /api/settings/:profile to return 400 if settings
object is undefined/null. Previously JSON.stringify(undefined) would
write literal "undefined" string to settings file.

* fix: add port validation and pre-save warning UI

- Add validatePort() helper (1-65535 range) to config-generator.ts
- Add missing field warning banner to copilot/config-form UI
- Add missing field warning banner to profiles/editor UI
- Wire missingRequiredFields prop through components
2025-12-29 14:09:27 -08:00
kaitranntt db3662b479 fix(ui): respect initialMode in profile create dialog
- Fix "Create Custom API Profile" button to open Custom tab instead of OpenRouter
- Improve Custom button visibility with dashed border and better contrast
- Improve Quick Templates styling with better spacing and font weight
- Enhance CompactPresetCard with larger icons and clearer badge styling
2025-12-24 18:43:41 -05:00
kaitranntt b790005c85 fix(ui): add unsaved changes confirmation when switching profiles
- Add onHasChangesUpdate callback to ProfileEditor

- Track editor dirty state in ApiPage parent

- Show confirmation dialog before discarding unsaved changes

- Handle edge case for 'New' profile button

Closes #163
2025-12-21 01:05:23 -05:00
kaitranntt f41d361fe5 fix(openrouter): show all env vars except API key in Additional Variables
Only hide ANTHROPIC_AUTH_TOKEN (has dedicated input). Show all other
env vars (BASE_URL, MODEL, tier models, API_KEY, etc.) in the
"Additional Variables" section for full visibility.
2025-12-20 23:47:14 -05:00
kaitranntt 70bc44eb11 fix(openrouter): add ANTHROPIC_API_KEY="" default for OpenRouter profiles
Per OpenRouter requirements, explicitly blank out the Anthropic API key
to prevent conflicts when using OpenRouter's API. The key is visible in
the "Additional Variables" section of the profile editor.
2025-12-20 23:43:52 -05:00
kaitranntt ebc8ee2638 feat(openrouter): prioritize Exacto models for better agentic performance
- Add isExacto field to CategorizedModel for models with :exacto suffix
- Add sortModelsByPriority function (Free > Exacto > Regular)
- Apply priority sorting within each category in model picker
- Add visual "Exacto" badge (green outline) for exacto variants

Exacto models are OpenRouter's specialized variants optimized for
tool use and agentic behaviors, recommended for Claude Code.
2025-12-20 23:38:07 -05:00
kaitranntt 723ce28431 fix(ui): model selection now updates all tiers correctly
- Add updateEnvBulk function for atomic multi-key updates
- Pass onEnvBulkChange prop to FriendlyUISection
- Fixes race condition where only last tier (haiku) was updated
2025-12-20 23:23:50 -05:00
kaitranntt f947aeb21b feat(ui): add value input for new environment variables
- Add newEnvValue state to profile editor
- Update add variable section to include key + value inputs
- Apply to both OpenRouter and standard profile editors
- Clear both key and value after adding variable
2025-12-20 23:22:04 -05:00
kaitranntt 3f7add5c10 fix(ui): deduplicate API key and restore add variable input
- Add ANTHROPIC_AUTH_TOKEN to openRouterManagedKeys set
- Change collapsible section from "All Environment Variables" to "Additional Variables"
- Only show non-managed env vars in the collapsible section
- Restore "Add Environment Variable" input at bottom of OpenRouter view
2025-12-20 23:17:18 -05:00