Skip to content

feat: add configuration persistence for model selections - #4

Merged
adamdotdevin merged 1 commit into
anomalyco:devfrom
rekram1-node:feat-persist-model-selection
May 14, 2025
Merged

feat: add configuration persistence for model selections#4
adamdotdevin merged 1 commit into
anomalyco:devfrom
rekram1-node:feat-persist-model-selection

Conversation

@rekram1-node

Copy link
Copy Markdown
Collaborator

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.

@adamdotdevin
adamdotdevin merged commit 797045e into anomalyco:devMay 14, 2025
@adamdotdevin

Copy link
Copy Markdown
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.
adolago referenced this pull request in adolago/zee Jan 10, 2026
Merged Snyk PRs:
- PR #9: node 25.2.1-bullseye-slim → 25.2.1-trixie-slim
- PR #4: node 20-slim → 20.19.6-trixie-slim
- PR #3: node 20 → 20.19.6-trixie-slim
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>
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
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>
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>
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.
@adeek135adeek135 mentioned this pull request Aug 12, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: model config persistence

2 participants

@rekram1-node@adamdotdevin