Repository navigation
v3.18.0
·
88 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Fixed
install.shWindows split-brain (#269): on MINGW/MSYS/CYGWIN the installer now targets%APPDATA%/devin(where the CLI actually reads) instead of~/.config/devin;audit.pyprefers%APPDATA%on Windows and warns when both dirs exist. Previous bash installs had written a shadow config that drift checks validated as "live".- Exporter secret masking and pre-push gate (#268):
export.sh/export.ps1now mask by key-name (token|secret|api[_-]?key|password|auth|credential|private|pat, e.g.GITHUB_PAT,Authorization,client_secret) and embedded URL userinfo; TOML masking tracks multiline openers ([,""",''') so continuation lines no longer leak; the pre-pushaudit.py/pytestgate now runs inside the bundle root (it previously validated the caller's cwd, whereaudit.pywalks., silently broken);git add -Areplaced with export-owned paths; paths passed viasys.argvinstead of shell interpolation; bundle-only/stale export entries now reported. - Installer/skill robustness (#264): unreadable-file guards,
ppispsubprocess timeout, empty extension directory skip ininstall.sh(parity added toinstall.ps1in #269). comfyui-operatorhardening (#263): loopback-only server URL and download path sanitization.- Typed-error hardening (#262, #255, #254):
plan_check, ASR bootstrap,sc_bench, custom presets, laya-compactor pairing/reduction accounting. asrWindows discovery (#256): whisper binary/model discovery fixed on Windows.- Unexpanded placeholders (#272):
{{VALIDATED_CLI_VERSION}}inask-bundle(never substituted by any pipeline) now referencesvalidated_cli_version;data/bundle-identity.jsonfilled with real values (Leostruka/devin-bundle, 2026);blender-operatorPOSIXpscall gainedtimeout=15parity. - Unbounded subprocess calls (#274):
timeout=15added to the PowerShell CIM query inextensions/computer-use/probes/probe_spawnpty.py;timeout=60added to CLI subprocess calls inextensions/media-tools/tests/{test_cli,test_export}.py. - Phantom recipe tool (#275):
data/recipes.jsonexplorelistedglob(premise corrected in #284:globis a real tool, but recipes should not demand mode-absent tools); it capped the recipe tool score at 0.75 incontext-pressure.py. Removed; regression test validates every recipe tool against the canonical CLI tool set. - False architecture boundary + missing enforcement (#278):
.devin/ARCHITECTURE_MANIFEST.mdclaimed hook scripts never import fromextensions/, butlaya-guard.pyintentionally does (dynamic, fail-open); manifest corrected to "no third-party pip deps" with the laya exception documented; newtest_scripts_import_boundarytest enforces stdlib/sibling/exception imports acrossscripts/*.py. - POSIX reap verification flake (#280):
_reap_posix_groupgroup-absence deadline widened 5s -> 15s; SIGKILL-to-launchd-reap latency on loaded macOS CI runners exceeded 5s, producing transient falsetree_cleanupresults (test_spawn_timeout_cleans_treefailed 3x). - Phantom tool in skill frontmatter (#282):
observability-qualityallowed-toolslistedglob(premise corrected in #284) corrected tofind_file_by_name; newtest_skill_allowed_tools_existenforces canonical tool names across all SKILL.md frontmatter. globtool misclassified as phantom (#284):globis a real CLI tool (validate-tool-argschecker + TOOLS-MAP); the session toolset is mode-dependent and not canonical. #282's premise corrected:observability-qualityrestored toglob+find_file_by_name;VALID_TOOLSexpanded to the canonical 28-tool set; allowed-tools test now covers YAML-list form andagents/+.devin/agents/profiles.- Orphaned extension requirements (#287):
playwright(craft-bridge),opencv-python-headlessandpiexif(image-forensics) were declared but never imported;ppisp-prepgained the missingrequirements.txt(numpy, pillow) for its hard deps; newtest_extension_declared_deps_usedenforces declared->used per extension. agent-reachwrapper desync from upstream CLI: wrapper forwarded channels as subcommands (agent-reach youtube ...), a grammar agent-reach 0.1.0 never shipped; every documented call exited 2 anddoctorreporteddegradedprobing a nonexistent--version. Wrapper now translates<channel>[.<command>]toget <target> --json,doctorproxiesdoctor --jsonper-channel status, whitelist narrowed to the real upstream index (youtube,rss;auth:none), and SKILL.md/manifest purpose synced (previous docs claimed phantom github/bilibili/v2ex/web channels).
Added
test_extension_used_deps_declared(#288): the reverse direction of the R20 check is now enforced — module-scope third-party imports inextensions/must be covered by that extension'srequirements*.txt; AST-based (function-scope lazy imports exempt), extensions-internal module roots exempt, documentedbpy/mathutilshost-provided allowlist for Blender's embedded interpreter; the R20 orphan check was upgraded from regex to AST.agentic-ragvectorless/tree-index retrieval (#266): architecture selector gainedlong structured docs -> PageIndex-stylewith honest costs (LLM call per hop, index build time, stale-tree versioning); gate/escalation unchanged.bragportfolio-site beat order (#267): storyboard template for portfolio/personal-site inputs (hero -> work -> recognition -> process -> values -> CTA) from real-site reel re-analysis.stuck-detectdeterministic advisory (#260): token-economizer subset hook.- Ponytail minimal-diff checklist (#258): Goldfish zoom-out review step.
- EGM runtime rollout (#253): JEV routing, OpenUI runtime, camera blocking, BitNet/offloading adapters, TPU held-out scaffolding + 12-issue audit hardening.
Changed
- MODEL-GUIDE: Avalon AMD MoE fork evaluated-not-adopted with 4-question benchmark-reading checklist (#265); LFM3 local-audio family entry (#259).
dispatching-parallel-agents(#277): DeepSeek super-agent eval evidence added; task-queue interruption inverts the sub-delegation bias (neutral prompt 0/5, delegate-first 4/5, median 20.4->13.8 min) plus Cooper Bench co-edit cost (~30% lower success).audit.pycheck 32 (#281):[Unreleased]merge coverage now enforced; merge PRs since the released tag without#NNNrefs in[Unreleased]fail the audit (docs(changelog)PRs exempt).audit.pypycache check robustness (#285): check 11git ls-filespathspec replaced by Python-side'__pycache__' in pathfilter, matching tracked caches at any depth.
Documentation
- Source analyses: NCM coarse-to-fine (#261), FreeMyTv Claude-Code-on-TV (#257), batch sources incl. DeltaDB/TradingAgents/Kimi K3/Openjutsu (#265), TSF Lesson 1 (#271), GG Coder demo (#276), all notes-only, no portable implementation; Nx-style lib boundaries applied internally as a real enforcement fix (#278); R8 issue answers (#270); review-pattern capture and drift reconciliation (#252).