Commit graph

14 commits

Author SHA1 Message Date
lil reentrant
6f1a028e1c
fix(kanban): move runtime store out of server-dist and migrate legacy data (#135) 2026-03-22 19:29:34 +03:00
lil reentrant
b7f4055d70
fix: misc reliability - updater await, env quotes, image compress, drag guard, duplicate execution (#90) 2026-03-03 23:37:15 +03:00
lil reentrant
67ba340105
feat: Task board with agent execution, drag-and-drop, and proposals (#61)
feat: Task board with agent execution, drag-and-drop, and proposals

- Full kanban board with 5 columns (Backlog, Todo, In Progress, Review, Done)
- Task CRUD with CAS versioning and optimistic conflict recovery
- Drag-and-drop reordering with dnd-kit (optimistic rollback on failure)
- Agent execution: spawn sessions via gateway, poll for completion, auto-move to review
- Workflow actions: execute, approve, reject, abort with notes
- Agent marker proposals: agents create/update tasks via output markers
- Proposal inbox with approve/reject popover
- Workspace quick view tab with click-to-open-board
- Board config: columns, default model, proposal policy
- Search, priority filters, stats chips
- Comprehensive docs: API, architecture, config, agent markers
- 221 tests (store, routes, parser)
2026-03-01 16:15:09 +03:00
lil reentrant
ecd4464fba
chore: remove wave-reviews artifacts (#43) 2026-02-27 15:41:08 +03:00
daggerhashimoto
d9b56f7964 feat: UX improvements for cron management
- Rewrite delivery section: 'When done' framing, 'Run silently' default,
  auto-detected channels from /api/channels, context-aware placeholders
- Distinguish task vs delivery failures in cron list (green+warning vs red)
- Replace emoji icons with Lucide (Timer, CornerDownRight) in session panel
- New GET /api/channels endpoint (reads configured channels from openclaw.json)
- Fix server tsconfig: exclude test files to prevent rootDir expansion on clean builds
2026-02-26 22:04:37 +01:00
daggerhashimoto
742218786a chore: gitignore coverage/ and bin-dist/ 2026-02-26 21:37:00 +01:00
daggerhashimoto
42515d145e Merge feat/updater-phase1: git-based updater (Phase 1) 2026-02-26 20:14:08 +01:00
lil reentrant
78537087d2
fix(memories): support non-date filenames in memory directory (#29)
Relaxes strict YYYY-MM-DD filename validation to accept any safe filename
(alphanumeric, hyphens, underscores, dots). Files like 2026-02-26-HEAL.md
in the memory directory now display and edit correctly instead of throwing
'Invalid date format' errors.

Path traversal prevention maintained via SAFE_FILENAME regex.

Fixes #27
2026-02-26 20:44:16 +03:00
daggerhashimoto
441402262f feat: add nerve update command — git-based updater with rollback (Phase 1) 2026-02-26 09:14:21 +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
e1de2933be gitignore: add .nerve/ and tts-config.json 2026-02-23 17:34:16 +01:00
lil reentrant
6dcdfed846
Update .gitignore
Remove docs and media from gitignore
2026-02-23 19:23:55 +03:00
daggerhashimoto
fd5bd50038 add Discord badge and community link to README 2026-02-22 01:58:49 +01:00
daggerhashimoto
99ced5c080 Nerve v1.0 — Web UI for OpenClaw 2026-02-19 22:28:07 +01:00