Release v0.13.1 - Voice mode, Super speedy streaming, and a lot more (#255)
## Thanks for contributions - PR [#249](https://github.com/NeuralNomadsAI/CodeNomad/pull/249) "feat(speech): add prompt voice input" by [@shantur](https://github.com/shantur) - PR [#243](https://github.com/NeuralNomadsAI/CodeNomad/pull/243) "feat(i18n): Hebrew locale + full RTL support" by [@MusiCode1](https://github.com/MusiCode1) - PR [#241](https://github.com/NeuralNomadsAI/CodeNomad/pull/241) "feat(lazy loading): Implement virtual list with virtua" by [@pixellos](https://github.com/pixellos) - PR [#240](https://github.com/NeuralNomadsAI/CodeNomad/pull/240) "fix(tauri): force Windows process tree shutdown" by [@pascalandr](https://github.com/pascalandr) - PR [#239](https://github.com/NeuralNomadsAI/CodeNomad/pull/239) "perf(ui): split right panel and secondary viewer chunks" by [@pascalandr](https://github.com/pascalandr) - PR [#238](https://github.com/NeuralNomadsAI/CodeNomad/pull/238) "perf(ui): defer locale and overlay bundles" by [@pascalandr](https://github.com/pascalandr) - PR [#236](https://github.com/NeuralNomadsAI/CodeNomad/pull/236) "Suppress OS notifications for subagent (child) sessions" by `@app/codenomadbot` - PR [#235](https://github.com/NeuralNomadsAI/CodeNomad/pull/235) "fix(ui): unwrap pasted placeholders in slash commands" by `@app/codenomadbot` - PR [#232](https://github.com/NeuralNomadsAI/CodeNomad/pull/232) "fix(tauri): stop CLI process group on exit" by `@app/codenomadbot` - PR [#229](https://github.com/NeuralNomadsAI/CodeNomad/pull/229) "feat(ui): add RTL support for Hebrew/Arabic text" by [@MusiCode1](https://github.com/MusiCode1) - PR [#227](https://github.com/NeuralNomadsAI/CodeNomad/pull/227) "fix(tauri): improve Windows desktop runtime behavior" by [@pascalandr](https://github.com/pascalandr) - PR [#226](https://github.com/NeuralNomadsAI/CodeNomad/pull/226) "fix(tauri): restore desktop menu controls and fullscreen shortcut" by [@pascalandr](https://github.com/pascalandr) - PR [#225](https://github.com/NeuralNomadsAI/CodeNomad/pull/225) "fix(tauri): restore external links in the folder picker" by [@pascalandr](https://github.com/pascalandr) - PR [#224](https://github.com/NeuralNomadsAI/CodeNomad/pull/224) "fix(tauri): sync server UI bundle during prebuild" by [@pascalandr](https://github.com/pascalandr) - PR [#215](https://github.com/NeuralNomadsAI/CodeNomad/pull/215) "perf(ui): lazy-load markdown and defer diff rendering" by [@pascalandr](https://github.com/pascalandr) ## Highlights - **Voice-first conversations**: Start prompts with voice input, configure speech behavior from settings, and listen back to assistant responses with message playback and conversation playback controls. - **A complete Hebrew + RTL experience**: CodeNomad now ships with a full Hebrew locale and much broader right-to-left support, making the app feel natural for Hebrew users while improving Arabic text rendering too. - **A much faster experience in long chats**: The new virtualized message list, deferred markdown and diff rendering, and more selective loading for heavy UI surfaces make large sessions feel noticeably smoother. ## What's Improved - **More flexible speech controls**: Speech settings and playback modes now adapt better to different browsers and platform capabilities. - **Cleaner prompt workflow**: The prompt includes a quick clear action, a simpler recording indicator, and a more polished mic control layout. - **Faster startup and lighter heavy views**: Locale bundles, overlays, right-panel viewers, picker flows, markdown, and diff surfaces all load more lazily to reduce upfront UI work. - **Less notification spam**: Subagent sessions no longer fire OS notifications, so important interruptions are easier to notice. - **Better RTL behavior across the whole interface**: Session names, tool outputs, markdown blocks, file views, selectors, and layout controls behave more consistently in right-to-left contexts. ## Fixes - **More reliable Windows desktop behavior**: Process cleanup is stronger during app shutdown, background CLI process trees are terminated more reliably, desktop identity/metadata is aligned more cleanly, and stray console windows are hidden during startup and exit. - **Cleaner shutdown on macOS and Linux**: Desktop quit/close now stops the spawned CLI process group more reliably, reducing leftover background processes after exit. - **Restored desktop actions**: External links in the folder picker work again, and the desktop View/Window controls plus the fullscreen shortcut are back. - **More stable streaming and scrolling**: Reasoning streams stay pinned more consistently, follow behavior is less jumpy, spacing is cleaner in virtualized conversations, and session switching retains position more smoothly. - **Safer slash command pasting**: Pasted placeholders are resolved correctly before slash commands run, so long pasted inputs behave like normal prompts. - **More dependable desktop packaging**: Tauri prebuild now refreshes the server UI bundle correctly, which avoids packaged desktop builds picking up stale UI assets. - **Clearer speech compatibility handling**: Streaming playback limitations are surfaced more cleanly instead of failing in a confusing way. ### Contributors - [@pascalandr](https://github.com/pascalandr) - [@MusiCode1](https://github.com/MusiCode1) - [@pixellos](https://github.com/pixellos)
This commit is contained in:
@@ -23,6 +23,7 @@ import { AuthManager, BOOTSTRAP_TOKEN_STDOUT_PREFIX, DEFAULT_AUTH_COOKIE_NAME, D
|
||||
import { resolveHttpsOptions } from "./server/tls"
|
||||
import { resolveNetworkAddresses } from "./server/network-addresses"
|
||||
import { startDevReleaseMonitor } from "./releases/dev-release-monitor"
|
||||
import { SpeechService } from "./speech/service"
|
||||
|
||||
const require = createRequire(import.meta.url)
|
||||
|
||||
@@ -313,6 +314,7 @@ async function main() {
|
||||
})
|
||||
const fileSystemBrowser = new FileSystemBrowser({ rootDir: options.rootDir, unrestricted: options.unrestrictedRoot })
|
||||
const instanceStore = new InstanceStore(configLocation.instancesDir)
|
||||
const speechService = new SpeechService(settings, logger.child({ component: "speech" }))
|
||||
const instanceEventBridge = new InstanceEventBridge({
|
||||
workspaceManager,
|
||||
eventBus,
|
||||
@@ -397,6 +399,7 @@ async function main() {
|
||||
eventBus,
|
||||
serverMeta,
|
||||
instanceStore,
|
||||
speechService,
|
||||
authManager,
|
||||
uiStaticDir: uiResolution.uiStaticDir ?? DEFAULT_UI_STATIC_DIR,
|
||||
uiDevServerUrl: uiResolution.uiDevServerUrl,
|
||||
@@ -417,6 +420,7 @@ async function main() {
|
||||
eventBus,
|
||||
serverMeta,
|
||||
instanceStore,
|
||||
speechService,
|
||||
authManager,
|
||||
uiStaticDir: uiResolution.uiStaticDir ?? DEFAULT_UI_STATIC_DIR,
|
||||
uiDevServerUrl: undefined,
|
||||
|
||||
Reference in New Issue
Block a user