hkfires
3ac5f05e8c
feat(gemini): prefer official reasoning fields, add extra_body(cherry studio) fallback
2025-10-29 19:19:18 +08:00
hkfires
58d30369b4
fix(gemini-cli): correctly strip/normalize thinking config by model
2025-10-29 19:19:18 +08:00
hkfires
7dd93a4a25
fix(executor): only apply thinking config to supported models
2025-10-29 19:19:17 +08:00
hkfires
2a3ee8d0e3
fix(translators): normalize thinking budgets
2025-10-29 19:19:17 +08:00
hkfires
41577bce07
feat(claude): map Anthropic 'thinking' to Gemini thinkingBudget
2025-10-29 19:19:17 +08:00
hkfires
3d7aca22c0
feat(registry): add thinking budget support; populate Gemini models
2025-10-29 19:19:17 +08:00
hkfires
680b3f5010
fix(translator): avoid default thinkingConfig in Gemini requests
2025-10-29 19:19:17 +08:00
hkfires
c99d0dfb33
fix(aistudio): remove no-op executor unregister on WS disconnect
2025-10-28 19:51:05 +08:00
hkfires
663b9b35ab
fix(executor): pass authID to relay instead of provider
2025-10-28 19:28:26 +08:00
hkfires
5dced4c0a6
feat(registry): unify Gemini models and add AI Studio set
2025-10-28 19:00:25 +08:00
hkfires
e370f86f63
fix(gemini-executor): uppercase responseModalities
2025-10-26 21:26:15 +08:00
hkfires
7f266aa19e
fix(aistudio): ensure colon-spaced JSON in responses
2025-10-26 20:21:45 +08:00
hkfires
f3f31274e8
refactor(wsrelay): rename RoundTrip to NonStream
2025-10-26 20:01:46 +08:00
hkfires
7061cd6058
fix(gemini): map responseModalities to uppercase IMAGE/TEXT
2025-10-26 19:35:22 +08:00
hkfires
7459c2c81a
fix(aistudio): remove generationConfig and tools when action is countTokens
2025-10-26 16:28:20 +08:00
hkfires
359b8de44e
feat(ws): add WebSocket auth
2025-10-26 07:46:04 +08:00
hkfires
ea6065f1b1
fix(aistudio): strip usage metadata from non-final stream chunks
2025-10-26 07:46:04 +08:00
hkfires
8aaed4cf09
feat(aistudio): support non-streaming responses
2025-10-26 07:46:04 +08:00
hkfires
c32e013605
feat(aistudio): track Gemini usage and improve stream errors
2025-10-26 07:46:04 +08:00
hkfires
3839d93ba0
feat: add websocket routing and executor unregister API
...
- Introduce Server.AttachWebsocketRoute(path, handler) to mount websocket
upgrade handlers on the Gin engine.
- Track registered WS paths via wsRoutes with wsRouteMu to prevent
duplicate registrations; initialize in NewServer and import sync.
- Add Manager.UnregisterExecutor(provider) for clean executor lifecycle
management.
- Add github.com/gorilla/websocket v1.5.3 dependency and update go.sum.
Motivation: enable services to expose WS endpoints through the core server
and allow removing auth executors dynamically while avoiding duplicate
route setup. No breaking changes.
2025-10-26 07:46:03 +08:00
hkfires
f8dcd707a6
feat(mgmt): support YAML config retrieval and updates via /config.yaml
2025-10-19 21:56:29 +08:00
hkfires
4504ba5329
feat(iflow): add masked token logs; increase refresh lead to 24h
2025-10-19 10:56:29 +08:00
hkfires
d16599fa1d
feat: prefer util.WritablePath() for logs and local storage
2025-10-19 10:19:55 +08:00
hkfires
9f45806106
feat(logging): centralize sensitive header masking
2025-10-18 17:16:00 +08:00
hkfires
9319602812
UPDATE README
2025-10-16 22:57:44 +08:00
Chén Mù and GitHub
8e95c5e0a8
Merge pull request #134 from router-for-me/hg
...
feat(managementasset): add MANAGEMENT_STATIC_PATH override
2025-10-16 22:25:05 +08:00
hkfires
93f0e65cef
docs: document MANAGEMENT_STATIC_PATH for management.html location
2025-10-16 22:15:17 +08:00
hkfires
c75e524fe5
feat(managementasset): add MANAGEMENT_STATIC_PATH override
2025-10-16 21:52:59 +08:00
Chén Mù and GitHub
f58d0faf8c
Merge pull request #130 from router-for-me/log
...
feat(management): add log retrieval and cleanup endpoints
2025-10-16 12:39:06 +08:00
hkfires
df3b00621a
fix(logs): ignore ENOENT when truncating default log file
2025-10-16 12:35:29 +08:00
hkfires
72cb2689e8
feat(management): add log retrieval and cleanup endpoints
2025-10-16 11:55:58 +08:00
hkfires
84fa497169
fix(server): snapshot config with YAML to handle in-place mutations
...
- Add oldConfigYaml to store previous config snapshot
- Rebuild oldCfg from YAML in UpdateClients for reliable change detection
- Initialize and refresh snapshot on startup and after updates
- Prevents change detection bugs when Management API mutates cfg in place
- Import gopkg.in/yaml.v3
2025-10-15 18:26:23 +08:00
hkfires
9ef76dcc61
Add Object Storage
2025-10-15 11:47:35 +08:00
hkfires
1cd275f4c1
Merge branch 'dev'
2025-10-14 15:47:39 +08:00
hkfires
4bc1ed6031
feat(config): use block style for YAML maps/lists; keep [] for empty
2025-10-14 15:43:58 +08:00
hkfires
78989d6c0d
feat(store)!: Lock AuthDir when use gitstore/pgstore
2025-10-14 15:43:58 +08:00
hkfires
d6aa1e5ba0
fix(postgresstore): normalize config line endings for DB/disk writes
2025-10-14 15:43:58 +08:00
hkfires
50c1c50dbd
docs: document PostgreSQL-backed config/token store
2025-10-14 15:43:58 +08:00
hkfires
5123cfd47e
feat(store): add PostgreSQL-backed config store with env selection
2025-10-14 15:43:58 +08:00
Chén Mù and GitHub
9072accc43
Merge pull request #118 from router-for-me/config
...
feat(config): use block style for YAML maps/lists
2025-10-14 13:44:00 +08:00
hkfires
0d8134aabe
feat(config): use block style for YAML maps/lists; keep [] for empty
2025-10-14 13:17:04 +08:00
Chén Mù and GitHub
4fdbdf7925
Merge pull request #117 from router-for-me/pg
...
feat(store): add PostgreSQL-backed config store with env selection
2025-10-14 11:28:19 +08:00
hkfires
50c84485c3
feat(store)!: Lock AuthDir when use gitstore/pgstore
2025-10-14 10:46:45 +08:00
hkfires
f335aeeedb
fix(postgresstore): normalize config line endings for DB/disk writes
2025-10-14 08:38:15 +08:00
hkfires
61f6a612e3
docs: document PostgreSQL-backed config/token store
2025-10-13 22:31:01 +08:00
hkfires
42087d5387
feat(store): add PostgreSQL-backed config store with env selection
2025-10-13 21:05:43 +08:00
hkfires
39abde2413
refactor(watcher): remove redundant quota-exceeded change logs
2025-10-13 14:02:55 +08:00
hkfires
0aa8706ef7
feat(config): Treat empty BaseURL for Codex keys as deletion
2025-10-13 13:48:27 +08:00
hkfires
5fd4a8b974
feat(config): Remove OpenAI providers with empty BaseURL
2025-10-13 13:48:27 +08:00
hkfires
06e6f0a5f2
refactor(watcher): Extract config change logging to new function
2025-10-13 13:48:27 +08:00
hkfires
b5ad978d44
feat(managementasset): Authenticate GitHub API requests
2025-10-12 21:21:51 +08:00
hkfires
4c033b3af7
feat(config): disable logging and usage stats by default
2025-10-11 22:11:08 +08:00
hkfires
843a81f68d
fix(server): Handle empty/invalid config in cloud deploy mode
2025-10-11 22:07:08 +08:00
hkfires
fc6aa8ef77
feat(config): Gracefully handle empty or invalid optional config
2025-10-11 20:49:15 +08:00
hkfires
c3f88126e6
refactor(provider): remove Gemini Web cookie-based support
2025-10-11 12:56:07 +08:00
hkfires
b895018ff5
refactor(provider): remove Gemini Web cookie-based provider
2025-10-11 12:53:03 +08:00
hkfires
78738ca3f0
fix(config): treat directory as absent for optional config in cloud deploy mode
2025-10-10 19:40:02 +08:00
hkfires
ac01c74c02
feat(server): Add cloud deploy mode
2025-10-10 18:52:43 +08:00
hkfires
01be94a0de
feat(translator): Map OpenAI modalities to Gemini responseModalities
2025-10-09 19:38:07 +08:00
hkfires
d1933075c3
Revert "feat(translator): Pass through imageConfig"
2025-10-09 16:35:08 +08:00
hkfires
a602ae859b
feat(translator): Add support for openrouter image_config
2025-10-09 15:47:06 +08:00
hkfires
c5d7137d66
feat(translator): Pass through imageConfig
2025-10-09 13:50:43 +08:00
hkfires
514f5a8ad4
feat(cliproxy): Rebind auth executors on config change
2025-10-07 21:23:21 +08:00
hkfires
75d7763c5c
refactor(gemini-web): Rename flash image preview model ID
2025-10-07 20:35:53 +08:00
hkfires
9bb7df7af7
feat(gemini-web): Enable config hot-reload and fix Gem selection
2025-10-07 20:23:33 +08:00
hkfires
43665cb649
feat(gemini-web): Replace code-mode with flexible gem-mode
2025-10-07 19:36:22 +08:00
hkfires
31659c790d
feat(translator/gemini-cli): support inline image data in responses
2025-10-06 17:06:04 +08:00
hkfires
c62ecc2442
fix(gemini): Disable thinking config for incompatible models
2025-10-06 16:32:03 +08:00
hkfires
8ca041cfcf
feat(auth): Use user info for iFlow auth identifier
2025-10-05 20:11:30 +08:00
hkfires
eac8b1a27f
fix(auth): Correct iFlow OAuth callback port to 11451
2025-10-05 18:53:22 +08:00
hkfires
c8029b7166
feat(iflow): Add User-Agent header to API requests
2025-10-05 18:50:35 +08:00
hkfires
64f4c18fea
fix(auth): Return error if iFlow API key fetch fails
2025-10-05 16:34:27 +08:00
hkfires
9abcaf177f
feat(registry): Add display names and descriptions for iFlow models
2025-10-05 16:11:40 +08:00
hkfires
b839e351c4
feat: Add support for iFlow provider
2025-10-05 15:51:09 +08:00
hkfires
4657c98821
feat: Add option to disable management control panel
2025-10-04 19:55:07 +08:00
hkfires
dd1e0da155
fix(cliproxy): Use model name as fallback for ID if alias is empty
2025-10-04 19:42:11 +08:00
hkfires
cf9a748159
fix(watcher): Prevent infinite reload loop on rapid config changes
2025-10-04 13:58:15 +08:00
hkfires
2e328dd462
feat(management): Improve logging for management route status
2025-10-04 13:48:34 +08:00
hkfires
edd4b4d97f
refactor(api): Lazily register management routes
2025-10-04 13:41:49 +08:00
hkfires
608d745159
fix(api): Enable management routes based on secret key presence
2025-10-04 13:32:54 +08:00
hkfires
fd795caf76
refactor(api): Use middleware to control management route availability
...
Previously, management API routes were conditionally registered at server startup based on the presence of the `remote-management-key`. This static approach meant a server restart was required to enable or disable these endpoints.
This commit refactors the route handling by:
1. Introducing an `atomic.Bool` flag, `managementRoutesEnabled`, to track the state.
2. Always registering the management routes at startup.
3. Adding a new `managementAvailabilityMiddleware` to the management route group.
This middleware checks the `managementRoutesEnabled` flag for each request, rejecting it if management is disabled. This change provides the same initial behavior but creates a more flexible architecture that will allow for dynamically enabling or disabling management routes at runtime in the future.
2025-10-04 13:08:08 +08:00
hkfires
f2201dabfa
feat(gemini-web): Index and look up conversations by suffix
2025-09-30 12:21:51 +08:00
hkfires
108dcb7f70
fix(gemini-web): Correct history on conversation reuse
2025-09-30 12:21:51 +08:00
hkfires
8858e07d8b
feat(gemini-web): Add support for custom auth labels
2025-09-30 12:21:51 +08:00
hkfires
d33a89b89f
fix(gemini-web): Ignore tool messages to fix sticky selection
2025-09-30 12:21:51 +08:00
hkfires
1d70336a91
fix(gemini-web): Correct ambiguity check in conversation lookup
2025-09-30 12:21:51 +08:00
hkfires
6080527e9e
feat(gemini-web): Namespace conversation index by account label
2025-09-30 12:21:51 +08:00
hkfires
82187bffba
feat(gemini-web): Add conversation affinity selector
2025-09-30 12:21:51 +08:00
hkfires
f4977e5ef6
Ignore GEMINI.md file
2025-09-30 12:21:51 +08:00
hkfires
ad4d045101
feat: Restore API key config in config file
2025-09-28 09:11:58 +08:00
hkfires
5888e04654
refactor(cliproxy): remove unused access provider refresh logic
2025-09-28 08:59:17 +08:00
hkfires
19b10cb894
feat(sdk/auth): extend Gemini Web refresh lead to 1 hour
2025-09-28 08:40:32 +08:00
hkfires
aa25820698
chore(log): Refine debug messages for config reloads
2025-09-28 08:40:25 +08:00
hkfires
da72ac1f6d
fix(config): Inline SDKConfig for proper YAML parsing
2025-09-27 12:23:20 +08:00
hkfires
f9a170a3c4
chore(watcher): Clarify API key client reload log message
2025-09-27 11:25:40 +08:00
hkfires
88f06fc305
feat(watcher): Log detailed diff for openai-compatibility on reload
2025-09-27 11:15:30 +08:00
hkfires
562a49a194
feat(provider/gemini-web): Prioritize explicit label for account identification
2025-09-27 10:56:15 +08:00
hkfires
6136a77eb3
refactor(util): Centralize auth directory path resolution
...
Introduces a new utility function, `util.ResolveAuthDir`, to handle the normalization and resolution of the authentication directory path.
Previously, the logic for expanding the tilde (~) to the user's home directory was implemented inline in `main.go`. This refactoring extracts that logic into a reusable function within the `util` package.
The new `ResolveAuthDir` function is now used consistently across the application:
- During initial server startup in `main.go`.
- When counting authentication files in `util.CountAuthFiles`.
- When the configuration is reloaded by the watcher.
This change eliminates code duplication, improves consistency, and makes the path resolution logic more robust and maintainable.
2025-09-27 09:06:51 +08:00
hkfires
afff9216ea
perf(watcher): Avoid unnecessary auth dir scan on config reload
2025-09-27 08:43:06 +08:00
hkfires
b56edd4db0
refactor(access): Introduce ApplyAccessProviders helper function
...
The logic for reconciling access providers, updating the manager, and logging the changes was previously handled directly in the service layer.
This commit introduces a new `ApplyAccessProviders` helper function in the `internal/access` package to encapsulate this entire process. The service layer is updated to use this new helper, which simplifies its implementation and reduces code duplication.
This refactoring centralizes the provider update logic and improves overall code maintainability. Additionally, the `sdk/access` package import is now aliased to `sdkaccess` for clarity.
2025-09-27 08:23:24 +08:00