Skip to content

v1.5.2

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Jul 12:50

Bowow — BETA Stable Version

bowow

Bug Fixes

  • Fixed the settings window
  • Fixed persistent auto-scroll to bottom
  • Fixed an API error
  • Fixed the HTML browser
  • Fixed Markdown rendering
  • Fixed the OpenRouter API
  • Fixed MCP Tools
  • Fixed the chat appearing centered on screen
  • Fixed the Scroll indicators
  • Fixed the electron-updater

New Additions

  • Added an agent
  • Added localEffort

All additions made so far (since the beginning)

Critical Fixes

  • handleRevert data loss — read the original file from disk when no timeline entry exists
  • Permission checksassert() before create_file (overwrite) and edit_file
  • System prompt — added "ask before modifying" to buildSystemPrompt
  • Permission modal styling — removed the 🔐 icon, single line, centered #888 buttons, no overlay/border, shimmer effect similar to "Thinking"
  • Permission scope — every BuildAgent now filters events by detail.sessionID !== String(buildId)
  • Multi-build persistencescheduleBuildSave saves all builds under build-agent-conv-all; loadAllSavedConversations() restores all of them
  • Per-pane model pickerlocalModel state (instead of the global setApiModel)
  • Diff preview — increased slice limits from 2000/4000 to 100,000 characters; ColoredDiff maxLines raised from 16 to 50
  • Azure streaming — changed streamAzure() from res.json() (single blob) to an SSE line-by-line reader
  • Electron-only fallbacksLSP.start() and MCP.connectStdio() now use console.warn + return instead of throwing
  • Google maxTokens — increased default from 4096 to 8192
  • Loop detection thresholdrepeatSigCount raised from 3 to 5
  • selectElements stub — added selectedElements: string[] and made () => {} a real function
  • useCommandPermission stubrequestPermission now actually waits for the user (real Promise)

Tool System Unification

  • Registry tools renamedreadread_file, editedit_file, writecreate_file, bashrun_command, globglob_search, grepgrep_search
  • Dynamic getToolDefs() — replaced the 480-line static TOOL_DEFS with generation from toolRegistry.toToolDefs() + a fallback map
  • registerBuiltins() — moved to module level
  • Removed broken AbsFile import — the file didn't actually exist
  • Bridge at the top of execTool — passes buildId + apiSettings in context; removed duplicated inline handlers (task, glob_search, grep_search, create_file, read_file, run_command, edit_file)
  • Removed dead codevalidatePath, ALLOWED_NO_EXT, processInline, withFileMutationQueue, applyEditsToNormalizedContent, stripBom, detectLineEnding, normalizeToLF, restoreLineEndings

UI & Markdown

  • Full Markdown support — replaced the custom processInline with react-markdown (headers, lists, code blocks, bold, italic)
  • Collapse arrows — all elements collapsed by default; user messages expanded by default (the one exception)
  • Arrow hidden for run_command onlyread_file now has arrows (needed for HTML iframes)
  • HTML iframe displayfullContent now includes read_file in addition to create_file and edit_file
  • Auto-scroll fixsetUserScrolledUp(false) when a user message is added; setTimeout(0) in handleClear
  • (+n)/(-n) stat indicators — enlarged from var(--font-xxs) to var(--font-sm)
  • Unified background — all backgrounds now #121212
  • Custom fontsAR.otf and EN.otf added under public/font/, loaded via @font-face in index.css
  • Inline code colorsbackground: '#121212', color: '#00adb5'
  • Removed whiteSpace: 'pre-wrap' from the wrapper to fix vertically-broken text

Testing

  • Vitest setupvitest.config.ts + scripts added to package.json
  • 16 tests across 3 files (permission, tools, registry)

Current Session

  • Long text handlingwordBreak: 'break-word', overflowWrap: 'anywhere', inline code set to display: 'inline' + whiteSpace: 'nowrap'
  • Silent editing — stopped explaining each step out loud
  • Per-split-screen effortlocalEffort state (independent per pane)
  • Babel fix — added parentheses around (globalApiSettings.thinkingEffort || 'default')