Uh oh!
There was an error while loading. Please reload this page.
feat: add configuration persistence for model selections - #4
Merged
adamdotdevin merged 1 commit intoMay 14, 2025
Merged
Conversation
adamdotdevin
commented
May 14, 2025
Member
love it, thanks! |
burgercrisis added a commit
to burgercrisis/opencode
that referenced
this pull request
Jan 8, 2026
…d dank Windows Command Execution Fixes: - Add detectCommandShell() and parseCommand() functions for shell detection - Implement direct PowerShell execution bypassing cmd.exe wrapper - Add shell built-ins detection and needsShellExecution function - Fix stream draining to prevent race conditions (Promise.all) - Remove duplicate abort listeners Edit Tool Improvements: - Add newString validation guard (handles undefined/null/empty) - Add UnicodeNormalizedReplacer for smart quotes and em-dashes - Fix multi-line pattern matching with empty lines (Issue anomalyco#26) - Add unique match identification for replaceFirst functionality - Improve block anchor matching with variable gap handling Documentation: - Add verified-fixes-summary.md documenting all fixed issues - Add windows-command-execution-issues.md comprehensive analysis - Add linux-unix-mac-compatibility-analysis.md for cross-platform impact Fixes: Issues anomalyco#2, anomalyco#3, anomalyco#4, anomalyco#5, anomalyco#7, anomalyco#8, anomalyco#9, anomalyco#15, anomalyco#19, anomalyco#26
randomm referenced
this pull request
in randomm/opencode
Jan 9, 2026
… (#4) * feat: implement Remory MCP integration (#3) - Add comprehensive TDD test suite for configuration validation - Update opencode.json to use Remory via Docker exec command - Add infrastructure tests for container health and connectivity - Include placeholder tests for memory operations and semantic search Following GitHub issue #3 requirements for enhanced memory capabilities. * test: enhance Remory integration test coverage (#3) - Add comprehensive test suite for Remory MCP integration - Validate Docker container health and connectivity - Test semantic search capabilities and performance - Verify memory tool compatibility with Remory backend - 100% test coverage for configuration validation - All tests passing with 7/7 success rate * docs: add comprehensive Remory memory service documentation (#3) - Document enhanced memory capabilities with semantic search - Add Docker container setup instructions - Detail 5-15x performance improvements over basic memory server - Include technical architecture and configuration examples - Document memory operations and performance benefits - Complete documentation requirements for issue #3 * docs: verify MCP configuration for local Remory instance The MCP memory configuration in opencode.json is already correctly set up to use the local Remory instance running in Docker. No changes needed.
11 tasks
kryptobaseddev added a commit
to kryptobaseddev/opencode
that referenced
this pull request
Feb 22, 2026
… leaks Addresses the 4 remaining high-priority memory leak issues from the work plan (I-9385-A, I-7046-A, PR-14635, I-7046-C partial). I-9385-A (CRITICAL, Priority anomalyco#1) — tool/task.ts: call Session.remove() after extracting subagent task output. This fires the session.deleted event, which triggers cleanupSessionCaches() in the event-reducer — freeing all in-memory messages, parts, diffs, permissions, and status for the subagent session. The task_id in the output becomes a dead reference; if the LLM tries to resume, Session.get() fails gracefully and a fresh session is created. Validated: the cleanup infrastructure already existed but was never invoked for subagent sessions. I-7046-A (CRITICAL, Priority anomalyco#3) — session/compaction.ts: clear part.state.output and part.state.attachments when pruning compacted tool parts. Previously, prune() set time.compacted but left the full output string in both the DB row and the in-memory store. toModelMessages already substituted "[Old tool result content cleared]" for compacted parts — this change aligns stored data with that behavior, freeing the large strings from memory and disk. PR-14635 (HIGH, Priority anomalyco#4) — TUI event listener cleanup: - app.tsx: save the unsubscribe functions returned by all 6 sdk.event.on() calls; call them in a single onCleanup() handler. Previously, onCleanup was not even imported. - routes/session/index.tsx: save and clean up the message.part.updated listener. This component mounts/unmounts during session navigation, so each navigation previously added a duplicate listener. - component/prompt/index.tsx: save and clean up the PromptAppend listener. Same mount/unmount pattern as the session component. I-7046-C (partial) — the TUI event listener fixes above cover the most impactful instances of the missing-dispose pattern. A full audit of all subscribe() call sites remains as follow-up work. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6 tasks
praxstack referenced
this pull request
in praxstack/opencode
Feb 25, 2026
…r details - retry.ts: respect isRetryable:false and 4xx status in JSON error bodies (Issue #7) - provider.ts: cap Bedrock Anthropic models at 200K context (Issue #4) - batch.ts: include per-tool error details in failure output (Issue #9) - retry.test.ts: 5 new tests for catch-all retry classification
tamarazuk added a commit
to tamarazuk/opencode
that referenced
this pull request
Mar 3, 2026
…odies - Refresh VCS state before idempotency check in create() to avoid TOCTOU race (anomalyco#4, anomalyco#12) - Use refreshed branch/defaultBranch in fallback PR return (anomalyco#9) - Validate base branch exists before attempting gh pr create (anomalyco#22) - Wrap review comment bodies in fenced blocks for structural separation (anomalyco#8)
sjawhar added a commit
to sjawhar/opencode
that referenced
this pull request
Mar 8, 2026
- Finding #1: re-sync active sessions after disposal by saving fullSyncedSessions before clear and calling result.session.sync() after successful bootstrap - Finding #2: cap retries at 5 with exponential backoff (2s/4s/8s/16s/30s) and generation counter to cancel stale retries when newer disposal arrives - Finding #3: move Instance.provide() inside while loop so each event stream reconnect iteration gets fresh context - Finding anomalyco#4: remove unconditional startEventStream(process.cwd()); add events RPC method; thread calls it only when not in external transport mode - Finding anomalyco#5: replace manual new Promise+setTimeout with sleep() from node:timers/promises - Finding anomalyco#6: reload() aborts current event stream and conditionally restarts it
sjawhar added a commit
to sjawhar/opencode
that referenced
this pull request
Mar 8, 2026
- Finding #1: re-sync active sessions after disposal by saving fullSyncedSessions before clear and calling result.session.sync() after successful bootstrap - Finding #2: cap retries at 5 with exponential backoff (2s/4s/8s/16s/30s) and generation counter to cancel stale retries when newer disposal arrives - Finding #3: move Instance.provide() inside while loop so each event stream reconnect iteration gets fresh context - Finding anomalyco#4: remove unconditional startEventStream(process.cwd()); add events RPC method; thread calls it only when not in external transport mode - Finding anomalyco#5: replace manual new Promise+setTimeout with sleep() from node:timers/promises - Finding anomalyco#6: reload() aborts current event stream and conditionally restarts it
sjawhar added a commit
to sjawhar/opencode
that referenced
this pull request
Mar 8, 2026
- Finding #1: re-sync active sessions after disposal by saving fullSyncedSessions before clear and calling result.session.sync() after successful bootstrap - Finding #2: cap retries at 5 with exponential backoff (2s/4s/8s/16s/30s) and generation counter to cancel stale retries when newer disposal arrives - Finding #3: move Instance.provide() inside while loop so each event stream reconnect iteration gets fresh context - Finding anomalyco#4: remove unconditional startEventStream(process.cwd()); add events RPC method; thread calls it only when not in external transport mode - Finding anomalyco#5: replace manual new Promise+setTimeout with sleep() from node:timers/promises - Finding anomalyco#6: reload() aborts current event stream and conditionally restarts it
1 task
tamarazuk added a commit
to tamarazuk/opencode
that referenced
this pull request
Mar 21, 2026
…odies - Refresh VCS state before idempotency check in create() to avoid TOCTOU race (anomalyco#4, anomalyco#12) - Use refreshed branch/defaultBranch in fallback PR return (anomalyco#9) - Validate base branch exists before attempting gh pr create (anomalyco#22) - Wrap review comment bodies in fenced blocks for structural separation (anomalyco#8)
ESRE-dev added a commit
to ESRE-dev/opencode
that referenced
this pull request
Mar 27, 2026
* Restructure watchdogTick so idle-detection sweeps SessionActivity.list() independently of stuck-tool query results — fixes Bug anomalyco#4 (idle gated behind stuck-tool results) and Bug anomalyco#5 (leaf.length === 0 early return skipping idle detection entirely) * Add pre-cancel map cleanup in the idle sweep to prevent unbounded growth of stale entries * Define CancelRequested bus event in processor and publish from abortChildren so child sessions get in-memory cancel alongside the DB updates (Bug anomalyco#7) * Add SessionPrompt.init() subscribing to the event, called from bootstrap alongside SessionActivity * Wrap AI SDK iterator consumption in try/finally to call iter.return() on abort, preventing leaked HTTP connections (Bug anomalyco#8) * Check abort signal before retry continue to stop cancelled sessions from restarting loops (Bug anomalyco#9) * Remove shadowed abort promise in permission-check loop so pre-aborted signals reject immediately instead of hanging (Bug anomalyco#10) * Update watchdog tests for independent idle sweep and add cancel-propagation event tests
ESRE-dev added a commit
to ESRE-dev/opencode
that referenced
this pull request
Mar 27, 2026
* Restructure watchdogTick so idle-detection sweeps SessionActivity.list() independently of stuck-tool query results — fixes Bug anomalyco#4 (idle gated behind stuck-tool results) and Bug anomalyco#5 (leaf.length === 0 early return skipping idle detection entirely) * Add pre-cancel map cleanup in the idle sweep to prevent unbounded growth of stale entries * Define CancelRequested bus event in processor and publish from abortChildren so child sessions get in-memory cancel alongside the DB updates (Bug anomalyco#7) * Add SessionPrompt.init() subscribing to the event, called from bootstrap alongside SessionActivity * Wrap AI SDK iterator consumption in try/finally to call iter.return() on abort, preventing leaked HTTP connections (Bug anomalyco#8) * Check abort signal before retry continue to stop cancelled sessions from restarting loops (Bug anomalyco#9) * Remove shadowed abort promise in permission-check loop so pre-aborted signals reject immediately instead of hanging (Bug anomalyco#10) * Update watchdog tests for independent idle sweep and add cancel-propagation event tests
andreipromarketing-dev pushed a commit
to andreipromarketing-dev/opencode
that referenced
this pull request
Apr 7, 2026
…t-errors-another-one Fix markdownlint errors (MD038, MD058, MD025, MD034)
andreipromarketing-dev pushed a commit
to andreipromarketing-dev/opencode
that referenced
this pull request
Apr 7, 2026
* feat: add pending instinct TTL pruning and /prune command Pending instincts generated by the observer accumulate indefinitely with no cleanup mechanism. This adds lifecycle management: - `instinct-cli.py prune` — delete pending instincts older than 30 days (configurable via --max-age). Supports --dry-run and --quiet flags. - Enhanced `status` command — shows pending count, warns at 5+, highlights instincts expiring within 7 days. - `observer-loop.sh` — runs prune before each analysis cycle. - `/prune` slash command — user-facing command for manual pruning. Design rationale: council consensus (4/4) rejected auto-promote in favor of TTL-based garbage collection. Frequency of observation does not establish correctness. Unreviewed pending instincts auto-delete after 30 days; if the pattern is real, the observer will regenerate it. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * fix: remove duplicate functions, broaden extension filter, fix prune output - Remove duplicate _collect_pending_dirs and _parse_created_date defs - Use ALLOWED_INSTINCT_EXTENSIONS (.md/.yaml/.yml) instead of .md-only - Track actually-deleted items separately from expired for accurate output - Update README.md and AGENTS.md command counts: 59 → 60 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * fix: address Copilot and CodeRabbit review findings - Use is_dir() instead of exists() for pending path checks - Change > to >= for --max-age boundary (--max-age 0 now prunes all) - Use CLV2_PYTHON_CMD env var in observer-loop.sh prune call - Remove unused source_dupes variable - Remove extraneous f-string prefix on static string Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * fix: update AGENTS.md project structure command count 59 → 60 Co-Authored-By: Claude <noreply@anthropic.com> * fix: address cubic and coderabbit review findings - Fix status early return skipping pending instinct warnings (cubic anomalyco#1) - Exclude already-expired items from expiring-soon filter (cubic anomalyco#2) - Warn on unparseable pending instinct age instead of silent skip (cubic anomalyco#4) - Log prune failures to observer.log instead of silencing (cubic anomalyco#5) Co-Authored-By: Claude <noreply@anthropic.com> * fix: YAML single-quote unescaping, f-string cleanup, add /prune to README - Fix single-quoted YAML unescaping: use '' doubling (YAML spec) not backslash escaping which only applies to double-quoted strings (greptile P1) - Remove extraneous f-string prefix on static string (coderabbit) - Add /prune to README command catalog and file tree (cubic) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering>
thkhxm pushed a commit
to thkhxm/opencode
that referenced
this pull request
Jun 2, 2026
根因:upstream 实验性 V2 新布局(newLayoutDesigns)默认值 = VITE_OPENCODE_CHANNEL!=='prod',但 desktop renderer 构建从未注入 VITE_OPENCODE_CHANNEL → 恒 undefined → 默认恒 true → 桌面端跑进 V2 布局。 V2 在 layout.tsx 走「只渲染 main、不渲染左侧 project/session sidebar nav」 分支,且 session-header 把 search/fileTree/terminal/status 默认关掉,表现就是 「打开会话后左侧项目栏 + 右侧信息栏都没有」。 改动: - branding.ts 新增 FORCE_STABLE_LAYOUT=true(PunkcodeAI 产品决策:用稳定经典布局) - settings.tsx newLayoutDesignsDefault 在 FORCE_STABLE_LAYOUT 下钉死 false - electron.vite.config.ts renderer define 注入 VITE_OPENCODE_CHANNEL(对齐 channel, 顺带修 titlebar channel 角标) - 经典布局下新建会话走 NewSessionView,把它的小号 opencode Mark logo 一并脱敏成 PunkcodeAI 文字 logo(与 anomalyco#1 一致) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
thkhxm pushed a commit
to thkhxm/opencode
that referenced
this pull request
Jun 2, 2026
anomalyco#1-anomalyco#4 独立验收 3 条 P2: - settings: FORCE_STABLE_LAYOUT 下 newLayoutDesigns getter 钉死 false(忽略持久值) + settings-general 隐藏「新布局」实验开关——彻底封死未完成的 V2 布局,避免曾 手动开过开关、持久化 true 的用户重启后再次丢失左右栏 - layout deleteSession:导航目标改用 sortedRootSessions(可见 root 会话),避免删 当前会话后跳到侧栏看不见的子会话/已归档会话 + 补 notifySessionTabsRemoved 广播 关掉指向已删会话的死 tab - session-side-panel:右侧空文件 tab 残留的 opencode Mark 水印换成 PunkcodeAI 文字 anomalyco#5 reload 时序独立验收:P0(无限 reload/登录态)主路径安全,加固 P2-1: - auth.ts 加 localStorage reload 熔断——sessionStorage marker 持续失效时同账号会 反复 reload(白屏死循环),用 localStorage 记上次 reload 的 {账号,时刻},同账号 5s 内已 reload 过则熔断跳过(接受内存残留好过白屏)。按账号区分,不误伤正常切换 typecheck 19/19。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 4, 2026
wangzexi pushed a commit
to wangzexi/opencode
that referenced
this pull request
Jun 6, 2026
Refresh commit SHAs, consolidate 17 scattered commits into 5 logical sections, and add invariant anomalyco#4 for the 401 redirect-loop fix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
zoulukuang pushed a commit
to zoulukuang/deskfox
that referenced
this pull request
Jun 6, 2026
…helper [feat: prevent-sleep] /code-review high effort 多 agent 审查后修复正确性 + 清理: - #1 worker 改请求-回执模型,set_enabled 以真实 guard 状态(actual)更新所有 surface,请求开启却没生效返 Err → 不再谎报"已开"(altitude 修复) - anomalyco#2 persist 移最后且失败只 warn 不回退运行态,消除多方状态打架 - anomalyco#3 listen 注册失败记日志(不再静默) anomalyco#4 worker send 失败立即 Err - anomalyco#6 抽 utils/prevent-sleep.ts wrapper(组件不裸用 invoke,对齐 feishu-config) - anomalyco#7 抽 settings_store.rs(read_value/write),不再手抄 store 样板 - anomalyco#10 event API 改静态 import cargo check 0 error / typecheck 17/17 / 纯逻辑 5 单测未变 / 全套 e2e 16 passed+3 skip 无回归。未修边际项 anomalyco#5/anomalyco#8/anomalyco#9 记录在案。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
zoulukuang added a commit
to zoulukuang/deskfox
that referenced
this pull request
Jun 7, 2026
…开关 env/jsonc/失败提示 [feat: telemetry-usage-stats] 把上批未修的剩余 code-review 项清完(telemetry 16 单测 + typecheck 16/16 + app 808 全绿): - anomalyco#2 update_applied relaunch 前易丢:加 track_blocking + track_event_blocking_cmd,前端 await 后再 relaunch - anomalyco#10 启动期同步文件 IO:track 重构,opt-out 判定+文件 IO 整个丢进后台 spawn - anomalyco#4 UI 开关忽略 env:get_telemetry_enabled 返回 is_enabled() 有效值 - anomalyco#5 不读 opencode.jsonc:read_config_telemetry 按合并优先级读 config.json<opencode.json<opencode.jsonc - anomalyco#7 写失败静默:set_telemetry_enabled 返回 Result,前端失败 showToast 提示(+i18n×3) - anomalyco#9 事件名无共享常量:前端加 TELEMETRY_EVENT 常量集中事件名 - 顺带抽 home_base()/config_dir() 去重路径解析 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
zoulukuang pushed a commit
to zoulukuang/deskfox
that referenced
this pull request
Jun 7, 2026
…lizeWorkspace)[feat: feishu-account-workspace] 针对 /code-review high 的 2 个影响使用项: - #1 首字节快速失败 120s→240s:留足推理模型(deepseek-r1 等)长思考/非增量流式首字节余量,降低误杀正常慢响应;仍比 30min 快 7.5x - anomalyco#2/anomalyco#5 workspace 未 trim:抽 normalizeWorkspace 单一 helper,account-store 存盘 + pipeline workspaceDir 读取都规整(消三处重复 + 防带首尾空格路径被当目录) 测试 +3(normalizeWorkspace 2 例 + account-store T8b trim);adapter 732 pass / typecheck 17/17。 anomalyco#3(占位 part 后卡死漏网)/anomalyco#4(.gitignore 热路径 I/O)低优先,记 backlog。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Closed
6 tasks
Rwanbt referenced
this pull request
in Rwanbt/unifia
Jun 14, 2026
…LLM paths A panic while holding any of our Mutex<Option<Child>> / Mutex<Option<Engine>> locks was poisoning the state permanently — the next lock() would panic again, so TTS/STT/LLM were dead until the app restarted. Introduce MutexSafe trait in util.rs (same spirit as mobile speech.rs lock_safe) and migrate all 33 call sites in llm.rs, speech.rs and lib.rs to state.child.lock_safe(). Poisoned-mutex cases now log a warning and keep serving — the guarded state (process handles, load flags) is idempotent across calls so resuming is safe. Closes#4/21.
Rwanbt referenced
this pull request
in Rwanbt/unifia
Jun 25, 2026
Bug #1: watcher.ts ignored add/unlink/change events on directories not yet expanded (isDirLoaded guard). Fixed: change events on files now correctly refresh the parent directory. Bug #2: tree-store.ts listDir with force:true was silently dropped when an inflight request existed. Fixed: force:true now chains after the in-flight request completes. Bug #3: operations.ts refreshDir was fire-and-forget. Dialog closed before tree refresh completed. Fixed: await refreshDir in all 5 operations (createFile, createFolder, renameNode, deleteNode, moveNode). Bug #4: watcher.ts change event on a file (not directory) never refreshed the parent directory. Fixed: file change events now refresh parent dir when loaded. Also: store.ts open() accepts fallbackContent to avoid false "file deleted" when readRaw fails but content is already loaded in read mode. Double-click on file tree opens in edit mode directly (VS Code parity).
LuisAlbertoMK added a commit
to LuisAlbertoMK/opencode
that referenced
this pull request
Jun 27, 2026
…, Codebase Memory MCP, Ponytail benchmark - anomalyco#3 SkillOpt: scripts/vmk-skill-audit.ps1 (audita 71 skills en 4 dimensiones) - anomalyco#5 MCP: codebase-memory-mcp v0.8.1 install + config en opencode.jsonc (disabled: true) - anomalyco#6 Ponytail: scripts/vmk-ponytail-bench.ps1 (benchmark compresion 3 escenarios x5 niveles) - // vMK: tags verificados en AMARILLO files - Context pruning (anomalyco#1) + output constraints (anomalyco#4) pre-existentes en session/ - Build vMK verificado: opencode-vMK.exe (136MB, smoke+help OK)
uitstalie pushed a commit
to uitstalie/opencode
that referenced
this pull request
Jul 8, 2026
…docs audit - run_agent: collect all tool calls per turn instead of breaking after the first ToolCallEnd (bug anomalyco#1) - provider: replace single tool_call_id with index-based Vec to correctly route interleaved parallel tool call args in SSE stream (bug anomalyco#2) - explore agent: mode 'subagent' -> 'explore' so tools_for_mode strips write tools as intended (bug anomalyco#3) - session_input: remove orphaned dead module with no consumers (bug anomalyco#4) - ToolContext: add shutdown flag, run_agent checks it for early exit (bug anomalyco#5) - todowrite: preserve stable task IDs by title-matching existing entries instead of positional reassignment (bug anomalyco#6) - agent descriptions: remove false parallel-execution claims (bug anomalyco#7) - run_agent: last_assistant now updated on tool-call-only turns (bug anomalyco#8) - debug CLI: add task add/delete subcommands + SessionStore.delete_task (bug anomalyco#9) - worker.rs: replace production unwrap() with if-let guard (bug anomalyco#10) - AGENTS.md: fix platform (Linux-only -> cross-platform), branch names, core/ module list, provider/ trait location
AlHeloween added a commit
to AlHeloween/opencode
that referenced
this pull request
Jul 13, 2026
Tool: new codegraph tool with 5 modes (explore, search, trace, impact, path). Pre-indexed AST-parsed knowledge graph for code structure questions — anomalyco#2 in the grounding priority chain. Build: add cross-platform @colbymchenry/codegraph@1.4.1 dependency + bun install --os=* --cpu=* for all 6 platform bundles. Grounding chain §P7: anomalyco#1 where.exe/which anomalyco#2 codegraph (new) anomalyco#3 messagesearch anomalyco#4 universalsearch anomalyco#5 glob anomalyco#6 grep anomalyco#7 rg/fd anomalyco#8 nvidia-smi etc. Evidence hierarchy: Observation > CodeGraph > Ext Source > Inferred > Hypothetical > Guess
puduasado added a commit
to puduasado/textforge
that referenced
this pull request
Jul 13, 2026
…t CSP wasm anomalyco#4 run.ts: every process.exit(1) inside the Effect.promise handler has been replaced with 'throw new CliError({ message })'. CliError is recognised by FormatError at the top-level catch (index.ts:128), which prints the message and sets exitCode = 1 — same user-visible behavior, but Effect finalizers and the effectCmd try/finally (store.dispose) run first. The 'die()' helper and its 8 early-validation call sites remain unchanged (no resources allocated yet). anomalyco#5 ui.ts: add comment documenting why 'wasm-unsafe-eval' is required by the embedded web UI (CodeMirror/Lezer WASM grammars, Monaco WASM editor core).
puduasado added a commit
to puduasado/textforge
that referenced
this pull request
Jul 13, 2026
anomalyco#1 wildcard.ts: collapse consecutive * and ? into single .* and . to prevent catastrophic backtracking (ReDoS) from patterns like ****. anomalyco#2 ideas.ts: log warning when JSON.parse of Python AI subprocess stdout fails, instead of silently swallowing the error with empty catch {}. anomalyco#3 message-v2.ts: scope try/catch to ProviderError.parseStreamError only. If parseStreamError throws, the error is now visible in the fallthrough to NamedError.Unknown with proper cause tracking. anomalyco#4 session.ts: escape % and _ in search input before LIKE pattern interpolation, preventing SQL wildcard interpretation of literal chars. anomalyco#5 server/handlers/fs.ts: replace magic number slice(13) with proper prefix match, wrap decodeURIComponent in try/catch returning 400 on malformed percent-encoded path instead of crashing.
3 tasks
Closed
6 tasks
This was referenced Aug 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#3
I originally brought this up when I added model selection in the first place, I have these changes in open pr and figured I would copy it over to here since it is the new repo.