文件历史

8 次代码提交

作者 SHA1 备注 提交日期
Yang XiuYuan 257916db67 fix(web): support persisted resolution modes (#285) 2026-06-04 09:30:31 +08:00
tjb-tech d2489758f0 fix(config): add NVIDIA NIM provider profile
Add a built-in NVIDIA NIM OpenAI-compatible workflow that reads NVIDIA_API_KEY, document the backend, and cover auth/profile materialization. Also make Windows shell resolution skip discovered bash executables that cannot run commands, and update the macOS Terminal backspace troubleshooting note to reflect the current fix.
2026-05-06 11:06:35 +00:00
tjb-tech 75c0481dba fix(channels): restore shared helper utilities 2026-04-23 10:57:30 +00:00
Flo 4dd7b76114 fix(shell): default stdin to DEVNULL for shell subprocesses (#179)
- default create_shell_subprocess stdin to DEVNULL so shell children do not inherit the parent TTY by accident
- add a direct regression test covering the helper default, alongside the existing BashTool coverage

Local verification:
- PYTHONPATH=src pytest -q tests/test_utils/test_shell.py tests/test_tools/test_bash_tool.py
- PYTHONPATH=src python - <<'PY' ... create_shell_subprocess smoke ... PY
2026-04-21 20:11:17 +08:00
tjb-tech d4eae153d3 fix(shell): address Windows backspace and TUI shell regressions 2026-04-19 14:22:37 +00:00
tjb-tech 9f97283320 fix(bash): surface partial output for interactive timeouts 2026-04-13 05:34:05 +00:00
José Maia 4857439e50 fix(persistence): atomic writes and locks for shared state (#128)
Files under ~/.openharness/ — credentials, settings, session snapshots,
cron registry, memory index — were written with `Path.write_text()` in
truncating mode. A crash, SIGKILL, power loss, or out-of-disk error
during the write leaves a truncated file on disk; concurrent writers
clobber each other's updates; and the credentials file spent a brief
window at the default umask mode (commonly 0o644) before chmod-to-0600
ran.

Introduce `openharness.utils.fs.atomic_write_text` / `atomic_write_bytes`
which write to a same-directory temp file, fsync, apply the target mode
while the file is still private, and `os.replace` into place. Thread
them through all persistence writers. For read-modify-write on shared
files (credentials, settings, cron, memory index), pair atomic writes
with the existing `exclusive_file_lock` primitive so two `oh` processes
no longer race.

The generic lock helper moves from `openharness.swarm.lockfile` to
`openharness.utils.file_lock`. `swarm.lockfile` is retained as a thin
re-export so existing callers keep working.

Co-authored-by: José Maia <glitch-ux@users.noreply.github.com>
2026-04-13 12:40:24 +08:00
tjb-tech d26c626111 refactor: move maintainer skills (harness-eval, pr-merge) to .claude/skills/
These are developer/maintainer workflow skills, not user-facing bundled
skills. They belong in .claude/skills/ (project-local, not packaged).
2026-04-05 06:51:24 +00:00