Repository navigation
v0.4.0
What's Changed
- Modularize DotAi into purpose-specific application modules while retaining the executable
dotai.pyentry point and Python 3.10+ standard-library runtime (#18). - Expand behavior coverage for command execution, platform selection, package reconciliation, OMP marketplaces/plugins/extensions,
status, anddoctor. Add Python 3.10/3.14 CI across Ubuntu, Windows, and macOS, with separate Linux branch-coverage reports (#19, #20, #21). - Keep Windows PATH refresh bounded across repeated commands, and honor
FORCE_COLOR=0even on a terminal (#19, #20). - Reject malformed or unreadable MCP targets without tracebacks, writes, or backups. Isolate invalid provider files and protect alias selection, stdio working directories, and required header/environment references (#22).
- Preserve configuration and reconciliation history on failed writes/replacements, clean incomplete owned artifacts, and cover recovery after partially applied OMP routing. Managed routing values now require the correct JSON type as well as value (#23).
- Correct skill retirement and wildcard narrowing when original frontmatter names differ from installed directory names. Retire only source-proven configured-agent copies, preserve independent Pi/universal copies, and refuse shared or ambiguous installations rather than deleting another agent's files (#24).
- Add focused default web-interface skills (
emil-design-engandweb-design-guidelines) and a vetted project-local skills guide without automatically installing project-specific bundles (#25).
Upgrading and adoption
- Pull the repository to update DotAi. Existing user-owned
stack.jsonfiles remain untouched. - Preview new recommended skills with
./dotai.py sync --recommended-skills --dry-run, then review and apply with./dotai.py sync --recommended-skills. Use--enforceonly when you intend to adopt matching repository recommendations and retire their removed skills. Restart OMP after skill changes. - Skill retirement matches installed directory identities; nonempty explicit
--check-skillvalues stay exact. Shared links or unproven canonical associations require manual resolution. DotAi retains the shared Skills CLI lock so other agents' provenance is not deleted. A failed retirement restores manifest/ownership, not directories already removed. See the retirement contract. - OMP routing remains optional and post-authentication. If a setting command fails, rerun
./dotai.py configure omp-routingto apply the missing settings while preserving unmanaged configuration. See configuration safety. - Project-local skills remain opt-in; follow the vetted project skills guide from the target project.
Verification
- All 220 behavioral tests passed on Python 3.10.21 and 3.14.4 under WSL, with two explicitly native-Windows-only skips.
- The tracked baseline manifest validated on both versions. The executable
./dotai.py versionand Python entry point report 0.4.0. - The safe-retirement changes were exercised through the real DotAi entry point and real Skills CLI 1.7.0, including original-name/directory identity differences, independent Pi/universal preservation, wildcard narrowing, repeated syncs, and shared-link refusal.
- The exact release commit 597438f passed Python 3.10 and 3.14 suites and baseline validation on Ubuntu, Windows, and macOS, plus the Linux branch-coverage job. Release commit CI.
Full Changelog: v0.3.6...v0.4.0