Commit graph

8 commits

Author SHA1 Message Date
Kim AI
5f70f840d7
feat(workspace): enable recursive watch by default (#227) 2026-04-03 15:27:41 +03:00
Kim AI
c9ad1bd745
chore(release): prepare 1.5.2 (#201)
* chore(release): prepare 1.5.2

* docs(changelog): include kanban assignee picker in 1.5.2

* fix(sessions): preserve status timers across resubscribe

* fix(sessions): use latest gateway for delayed refreshes

* fix(sessions): refresh unknown sessions via latest gateway
2026-03-31 03:27:03 +03:00
lil reentrant
f3686f44c4
docs: prep 1.5.0 changelog and release docs (#137)
* docs(changelog): prepare 1.5.0 release notes
* docs: close 1.5.0 release prep gaps
2026-03-23 15:57:29 +03:00
James Martin
362bbdcb99
feat(gateway): server-side token injection for trusted clients (#109)
* feat(gateway): server-side token injection for trusted clients

Injects the gateway token in the server-side proxy for authenticated
sessions and loopback, removing the need for frontend exposure.

Fixes #94

* feat(gateway): server-side token injection for trusted clients

- Implement server-side gateway token injection in ws-proxy for trusted clients.
- Add proxy-aware IP resolution in server/lib/trust-utils.ts to handle X-Forwarded-For correctly.
- Update /api/connect-defaults to expose serverSideAuth flag based on trust and token presence.
- Refine frontend auto-connect logic to gate blank tokens to the official managed URL.
- Force empty token in ConnectDialog when server-side auth is active to prevent stale local overrides.
- Add comprehensive unit tests for trust utilities and regression tests for proxy scenarios.
- Update documentation in README.md, CONFIGURATION.md, and SECURITY.md.

* feat(gateway): server-side token injection for trusted clients

- Implement server-side gateway token injection in ws-proxy for trusted clients.
- Add proxy-aware IP resolution in server/lib/trust-utils.ts to handle X-Forwarded-For correctly.
- Update /api/connect-defaults to expose serverSideAuth flag based on trust and token presence.
- Refine frontend auto-connect logic in useConnectionManager to handle upgraded sessions.
- Force empty token during reconnects in useConnectionManager and on submission in ConnectDialog.
- Add comprehensive unit tests for trust utilities, API routes, and connection hooks.
- Update documentation in README.md, CONFIGURATION.md, and SECURITY.md with terminology fixes.
- Clarify trust utility documentation regarding session verification assumptions.

---------
2026-03-13 11:51:05 +03:00
daggerhashimoto
95083b7798 fix: address review — remove unused imports, fix installer safety, reorder env keys
- Remove unused PONG_TIMEOUT constant (ws-proxy.ts)
- Remove unused randomUUID import (ws-proxy.test.ts)
- Reorder GATEWAY_TOKEN before GATEWAY_URL (.env.example)
- Check PID liveness before kill in cleanup()
- Capture wait exit status explicitly to avoid set -e trap
2026-02-27 08:13:09 +01:00
daggerhashimoto
45108aaa71 docs: normalize config references and fix documentation drift
- Fix .env.example PORT from 3081 (dev value) to 3080 (production default)
- Add missing env vars to .env.example: NERVE_AUTH, NERVE_PASSWORD_HASH,
  NERVE_SESSION_SECRET, NERVE_SESSION_TTL, NERVE_ALLOW_INSECURE,
  EDGE_VOICE_GENDER, WHISPER_MODEL_DIR, CODEX_DIR, TRUSTED_PROXIES
- Add actual default values as comments in .env.example path vars
- Reorganize .env.example with section headers matching CONFIGURATION.md
- Add EDGE_VOICE_GENDER to CONFIGURATION.md STT table
- Add NERVE_ALLOW_INSECURE to CONFIGURATION.md Authentication section
- Add API Base URLs section (OPENAI_BASE_URL, REPLICATE_BASE_URL)
- Add CODEX_DIR to CONFIGURATION.md
- Fix trailing slash inconsistency on WHISPER_MODEL_DIR default
- Update full .env example with auth vars, speech settings, path fixes
2026-02-27 00:06:47 +01:00
lil reentrant
11c3ec252a
feat: refine multilingual voice controls and settings UX (#21)
* feat: multilingual voice support (STT + TTS) for 11 languages

Add language preference system that drives both speech-to-text and
text-to-speech across all providers with graceful fallback to English.

Supported languages: English, Chinese, Hindi, Spanish, French, Arabic,
Bengali, Portuguese, Russian, Japanese, German.

Phase 1 - Constants & Language Registry:
- Add multilingual whisper models (tiny, base, small) alongside .en models
- New SUPPORTED_LANGUAGES registry with Edge TTS voices, Qwen3 mappings
- Default model changed to 'tiny' (multilingual) for new installs

Phase 2 - Server Provider Wiring:
- New server/lib/language.ts with resolution helpers
- whisper-local: accepts language param, warns on .en model + non-English
- openai-whisper: passes language hint to API for better accuracy
- edge-tts: language-aware voice selection via resolveEdgeTTSVoice()
- replicate-tts: Qwen3 language resolution with English fallback + warning
- tts-config: language-aware voice resolution chain
- config: new language and edgeVoiceGender fields (hot-reloadable)

Phase 3 - Settings API:
- GET/PUT /api/language — read/write language preference
- GET /api/language/support — full provider × language compatibility matrix
- PUT /api/transcribe/config accepts language field
- All changes hot-reload (no server restart needed)

Phase 4 - UI:
- Language dropdown in Audio settings (name + native name display)
- Auto-detect option for whisper to decide
- Compatibility warnings (Qwen3 unsupported, .en model + non-English)
- Edge TTS voice gender toggle (female/male per language)
- STT model selector now shows both .en and multilingual models

Phase 5 - Migration:
- No breaking changes — .en models still work, English stays default
- Language features are opt-in via settings UI
- All new env vars (LANGUAGE, EDGE_VOICE_GENDER) are optional

* feat: per-language voice phrases with configuration modal

Add per-language stop/cancel phrase support for multilingual voice input.
When switching to a non-English language, a modal prompts the user to
configure send/cancel phrases in that language, pre-populated with
translated defaults for all 11 supported languages.

Changes:
- Extend voice-phrases.json to per-language format (auto-migrates v1 flat)
- Add DEFAULT_VOICE_PHRASES with translations for all 11 languages
- New VoicePhrasesModal component with add/remove phrase editing
- Voice phrases API: per-language GET/PUT + status endpoint
- useVoiceInput: refetch phrases on language change, invalidate cache
- InputBar: listen for language-changed events to update phrase matching
- English phrases always included as fallback (people code-switch)
- Merged phrase matching: language-specific + English (deduplicated)

* feat: persistent voice phrases config button + wake word support

- Add 'Voice Phrases' button in settings (always visible for non-English)
- Opens modal anytime, not just on first language switch
- Add wake phrase configuration to modal (wake + send + cancel)
- Wake phrases merge with English defaults (both work)
- Add Turkish language support (Edge TTS: Emel/Ahmet)
- Server: wakePhrases field in LanguageVoicePhrases type
- Server: PUT endpoint accepts wakePhrases
- Client: useVoiceInput merges server wake phrases with defaults

* feat: refine multilingual voice flow and settings UX

* feat(voice): finalize multilingual integration and runtime phrase storage

* fix(review): address CodeRabbit follow-ups for multilingual voice

* fix(review): resolve remaining CodeRabbit findings

* fix(voice): reload wake phrases after modal save without refresh

* chore(ui): rename Advanced settings category to Connection

* chore: fix stale language-count comment in support API
2026-02-26 03:41:19 +03:00
daggerhashimoto
99ced5c080 Nerve v1.0 — Web UI for OpenClaw 2026-02-19 22:28:07 +01:00