HERMES-GIELIE/api
nesquena-hermes da160d675f
feat: custom endpoint fields in new profile form (fixes #170, closes #214)
* feat: add custom endpoint fields to new profile form

* fix: skip config write tests when PyYAML not installed

The 4 unit tests for _write_endpoint_to_config imported yaml directly
without handling ImportError. Added pytest.importorskip('yaml') at
module level so the entire test class skips cleanly in environments
without PyYAML. Removed redundant per-method yaml imports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: wire frontend for custom endpoint fields in new profile form

- Add Base URL and API key inputs to the profile create form (index.html)
- Wire panels.js submitProfileCreate() to send base_url and api_key
- Clear new fields on form toggle/cancel
- Add client-side URL format validation (must start with http:// or https://)
- Add server-side URL format validation in routes.py (400 for invalid scheme)
- Add test_api_route_rejects_invalid_base_url() covering the new validation
- Base URL input has placeholder 'http://localhost:11434' per review suggestion

---------

Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:43:49 -07:00
..
__init__.py Hermes Web UI — Sprints 11-14: multi-provider models, settings, session QoL, alerts, polish 2026-03-31 07:02:47 +00:00
auth.py fix(auth): prune expired sessions on every verify to prevent memory leak (#196) 2026-04-09 18:05:23 -07:00
config.py fix: do not build phantom Custom group when active provider is set (#206) 2026-04-09 18:33:24 -07:00
helpers.py fix(security): add unsafe-inline and CDN allowlist to CSP script-src (#209) 2026-04-09 19:07:51 -07:00
models.py fix: broaden session ID validator to support new hermes-agent format (#212) 2026-04-10 00:00:02 -07:00
profiles.py feat: custom endpoint fields in new profile form (fixes #170, closes #214) 2026-04-10 11:43:49 -07:00
routes.py feat: custom endpoint fields in new profile form (fixes #170, closes #214) 2026-04-10 11:43:49 -07:00
startup.py feat: auto-install missing agent deps on startup (#215) 2026-04-10 00:42:02 -07:00
state_sync.py fix: sync message_count to state.db for /insights (#163) (#164) 2026-04-06 22:56:27 -07:00
streaming.py fix: surface approval prompt in UI instead of getting stuck in Thinking (#187) 2026-04-08 20:16:22 -07:00
updates.py v0.44.0: approval fix, login CSP, update diagnostics, Lucide icons 2026-04-10 10:02:28 -07:00
upload.py chore: add missing type hints across 10 files 2026-04-05 13:30:20 +07:00
workspace.py chore: add missing type hints across 10 files 2026-04-05 13:30:20 +07:00