Repository navigation
Releases: karnarokEpoch/margot
Releases · karnarokEpoch/margot
Release list
0.9.0
[0.9.0] - 2026-09-21
🚀 Features
- (skills) Add agent-workspace worktree orchestration skill
- (make) Add self-documenting help target
- (domain) Add PackageType.BUNDLE enum value
- (services) Implement package service for offline bundle creation
- (commands) Add margot package CLI command
- (push) Reject PackageType.BUNDLE from OCI push operations
- (describe) Resolve remote margo descriptors
- (package) Add container image discovery and OCI layout foundation for Item 3
- (package) Pull images into offline bundles
- (package) Add --runtime local daemon lookup with registry fallback
- (package) Add repeatable --platform filter for multi-arch bundled images
- (package) Expose --platform flag in CLI for multi-arch platform filtering
- (package) Resolve multi-arch platforms from local daemon and manifest-list before registry fallback
🐛 Bug Fixes
- (skill) Sprint content tuning for sprint-workflow
- (describe) Use rendered flag instead of path heuristic, fix temp file leak
- (agent) Tune kiro agent permissions
- (package) Resolve each component's own build version instead of assuming a shared version directory
- (package) Use margo.yaml id instead of name for the bundle archive filename
- (agent) Tune kiro agent permissions of docs-writer
- (agents) Auto deny python cmds
- (describe) Wire remote resolver service
- (remote) Reuse prepared OCI retrieval to deduplicate manifest lookups
- (package) Only bundle configured replacement images
- (package) Treat --output as a directory and always enforce the bundle filename
- (package) Forward runtime and platforms to image discovery after merge
- (package) Scan all component images regardless of image: block
- (package) Normalize Docker tarballs to OCI layout and fix daemon probe/socket bugs
- (package) Handle ENOSPC and TMPDIR correctly during image export
- (tests) Correct subprocess noqa directives and import placement in manifest-list test
- (infra) Normalize docker.io to registry-1.docker.io for OCI registry API
- (infra) Add library/ prefix for Docker Hub official images
- (package) Skip Docker Hub attestation manifests when building platform slots
- (oci) Normalize docker.io to registry-1.docker.io for registry requests
- Remove unused variable in hostname normalization test
🚜 Refactor
- (kiro) Externalize agent prompts to files via file:// references
- (skills) Convert sprint-workflow steering to an on-demand skill with template
- (imports) Use selective imports in src per code conventions
- (console) Route stdin through console so it owns the sole import sys exception
📚 Documentation
- (roadmap) Mark sprint 8 as done, archive sprint file
- (roadmap) Postpone sprint 9 to 10
- (roadmap) Plan remote descriptor inspection
- (kiro) Switch to project context framework
- Retire FEATURES.md authority; docs are the standing source of truth
- (sprint) Design of margot package
- Add command reference and migrate config/concepts/margo-yaml content
- (roadmap) Backlog margot init project scaffolding command
- Add getting-started, authentication, and CI/CD guides
- (nav) Reorganise pages
- (examples) Fix to_yaml jinja bug, add describe output section
- Add status badges to README and docs landing page
- Add coverage, GitHub social, and tooling badges
- Add uv and pytest tooling badges
- (package) Document the margot package command
- Cover Sprint 9 remote commands and image bundles
- (package) Document --runtime flag and optional daemon precondition
- (package) Document --platform flag for multi-arch image filtering
- (package) Clarify --output directory behavior and image-inclusion prerequisite
- (sprint) Document open registry-fallback bug found in Item 6 testing
- (sprint) Revise item 3 image scope; add item 6
- (sprint) Mark manifest-list local lookup issue resolved in sprint-9
- (sprint) Mark registry-fallback issue resolved in sprint-9
🧪 Testing
- (remote) Satisfy lint conventions
- (pull) Mock legacy tag CLI regression
- (oci) Remove trailing blank line
- (package) Cover package command and image-bundle paths; add codecov.yml
- (package) Cover --runtime daemon lookup and docker->oci normalization
- (package) Cover platform filtering and validation for multi-arch images
- (package) Cover --output directory override and no-image-config info path
⚙️ Miscellaneous
- Delete FEATURES.md and rewire references to docs/roadmap/sprints
- Forward extra pytest args through make test to avoid CI drift
- Upload coverage to Codecov from the 3.12 matrix leg
- (sprint) Mark item 2 complete
- (package) Update credential check comments
- (sprint) Mark items 1 and 3 complete
- (deps) Add pinned podman and docker SDKs for local daemon lookup
- (sprint) Mark items 4 and 5 complete
- (sprint) Close out sprint-9 — remote describe/verify and offline package with image bundling
Style
- Wrap long import line in test_domain_uri.py
0.8.0
[0.8.0] - 2026-09-09
🚀 Features
- (pull) Add --recursive flag for margo-only component pulling
- (describe) Show margo artifact OCI URI in identity panel
- (push) Add --dry-run flag to validate artifacts and registry write access
- (describe) Rename config section to config-first, add component-first view
- (describe) Add orphan/dead-end detection section
🐛 Bug Fixes
- (lint) Resolve ruff findings in pull service and tests
- (lint) Resolve ruff violations in push --dry-run implementation
- (console) Disable rich auto-highlighting of numbers in plain output
- (describe) Add [Component]/[Parameter] hints and fix component-first colors
- (describe) Move orphan panel test imports to top-level
- (describe) Move orphan report test imports to top-level
📚 Documentation
- (sprint-8) Mark item 4 (remote describe) as done
- (push) Define in features and roadmap --dry-run
- Document shell completion setup
- (plan) Update state of sprint 8
🧪 Testing
- Add test on parameter description
Style
- (kiro) Minor change in planner config
0.7.1
[0.7.1] - 2026-08-31
🚀 Features
- (cli) Add --project-dir option to build and push commands
🐛 Bug Fixes
- (tags) Convert + to _ before OCI tag validation for margo and flat components
- (push) Print full OCI ref instead of bare tag in push summary
- (uri) Tolerate oci:// scheme prefix in pull/fetch URIs
- (push) Fall back to global repository when component repository is unset
- (version) Query correct distribution name (margo-tooling) for -V output
- (push) Pass registry hostname to OrasClient so stored credentials load
- (oci) Restore base-class-compatible get_manifest signature
- (oci) Restore base-class-compatible download_blob signature
- (verify) Color-code findings by severity and fix section separator color
- (verify) Color verdict lines by outcome and highlight schema labels
📚 Documentation
- (contrib) Update version convention
- (contrib) Update version of python tested
- Document PyPI and container install methods
- Add README with install and usage instructions
- Add Contributor Covenant code of conduct
- (kiro) Document to not violate Liskov Substitution Principle
- Prepend oci:// scheme to templated repository values in examples
- (sprint-8) Plan describe component-first view and orphan detection
- (sprint-8) Clarify install-completion has no custom path option
- (sprint-9) Plan --json output and stable error codes
- (sprint-8) Add describe remote artefact
🧪 Testing
- Fix ci issues on lint and pytest 3.14
- Force color system of 256 colors
⚙️ Miscellaneous
- Add PyPI classifiers, license expression, and project URLs
- Sync uv.lock package name
- Add GitHub issue templates for bugs and feature requests
- Remove completed sprint 7 planning files
Style
- (uri) Remove trailing whitespace in strip_scheme call sites
0.7.0
[0.7.0] - 2026-08-27
🚀 Features
- (describe) Descriptor resolution and load gate
- (describe) Identity, catalog and profile display model
- (describe) Configuration-first join and component index
- (describe) Rich panel and tree rendering
- (describe) Wire margot describe command
🐛 Bug Fixes
- (kiro) Tipo in agent definition
- (describe) Nest pointers under parameter, not setting
- (describe) Resolve all ruff lint violations
- (config) Remove redundant noqa markers after S108 per-file-ignore
📚 Documentation
- (describe) Close out sprint 7 roadmap and definition of done
🧪 Testing
- (describe) Add e2e coverage against real sensor-dashboard descriptor
0.6.0
[0.6.0] - 2026-08-27
🚀 Features
- (verify) LinkML validation against vendored Margo spec schema
- (verify) Recommended schema and --recommend wiring
- (verify) Add strict and only-recommend flag
- (verify) Tune schema B to verify required fields
- (verify) Add checks on values
🐛 Bug Fixes
- (verify) Summarize and enhance oneOf/anyOf validation errors
📚 Documentation
- Cleanup for sprint 6
- (planning) Drop --deep, verify becomes CI-only in three phases
- (kiro) Add rich instruction in steering
- (planning) Define and sample describe output
- (verify) --strict polish, edge cases, docs and roadmap closure
🧪 Testing
- (verify) Add files for schema B tuning
⚙️ Miscellaneous
- (kiro) Python-dev use haiku model
- (sprints) Remove sprint 6 plan, work merged
0.5.2
[0.5.2] - 2026-08-27
🐛 Bug Fixes
- (ci) Trigger pypi publish via workflow_run, not release event
0.5.1
[0.5.1] - 2026-08-27
⚙️ Miscellaneous
- Add workflow to publish on pypi
0.5.0
[0.5.0] - 2026-08-24
🚀 Features
- (planner) Rename code-planner agent
- (skill) Create fix-todo skill
- (skill) Create code quality skill
- (auth) Authenticate fetch and pull via stored OCI credentials
- (auth) Add margot auth status command
- (sprint-5) Jinja2 app.yaml rendering, id field, image search/replace, unresolved placeholder warning
- (build) Show artifact path in build output
- (metadata) Remove margo: block, optional variant version, Jinja2 image.replace
- (kiro) Add find to allow tools for python-dev
🐛 Bug Fixes
- (auth) Raise credential expiry warning threshold to 1 hour
- (metadata) Directory defaults to component name; improve error messages
- (metadata) Parse top-level repository field; pass it to Jinja2 context as global_repository
- (build) Wrap compose/quadlet tarball contents in a top-level / directory
- (logout) Remove auth entry from dockerconfig file
📚 Documentation
- (spec) Enhance snr base on documentation example
- (sprint-5) Mark item 2 authenticated fetch/pull as done
- (roadmap) Track auth logout credential-store removal gap
- (sprint-5) Mark item 1 (auth status) done, fix stale 5min threshold refs
- (features) Document Jinja2 rendering and image replacement
- (sprint-5) Mark sprint 5 complete, document shipped design vs original plan
- Mark item 1-2 complet on sprint
Dcos
- (examples) Add basic search-n-replace
0.4.0
[0.4.0] - 2026-07-31
🚀 Features
- (auth) Add margot auth login/logout commands and credentials expiry tracking
- (auth) Auto-detect expiry from ECR token password on login
- (auth) Display time before expiry on successful login
- (console) Add print_json method for structured JSON output
- (push) Implement margot push command
- (oci) Map oras-py logger quiet/debug flags to margot verbosity level
- (push) Add per-layer and manifest debug logging in _push_artifact
- (console) Standardize log level prefixes and add timestamp+location in debug mode
🐛 Bug Fixes
- (auth) Registry as required positional argument on login/logout
- (auth) Replace --save-expiry with --expiry-hours, no implicit default
- (commands) Replace rprint with console.print_json in fetch
- (lint) Resolve all ruff violations
- (push) Correct OCI media types in push_margo and push_quadlet
- (push) Pass files as path:content-type strings to oras-py push
- (push) Pass manifest_config as path:media-type string to oras-py
- (push) Use low-level oras-py API to set artifactType on pushed manifests
- (push) Set artifactType after mediaType and add created annotation
- (lint) Resolve all ruff errors in push commands, service, and infra
🚜 Refactor
- (spec) Replace maintainers with authors and organizations
- (spec) Decouple version and appVersion in margo.yaml
- (oci) OrasClient inherits OrasClientLib instead of wrapping it
📚 Documentation
- (pages) Create margo.yaml page
- (pages) Create example pages
- (pages) Define templating and rewrite examples
- (spec) Use manifest.* as template context root namespace
- Restructure template context as nested list
- Add Default column to field tables in margo-yaml reference
- (style) Minor refactors
🧪 Testing
- (infra) Add coverage for oci pull, download_blob, login, logout
- (commands) Add unit tests for global_options --debug/--verbose branches
- (commands) Add coverage for auth _format_expiry already-expired and logout error
- (commands) Cover _invoke_build re-raise path for non-skip ValueError
- (services) Add unit tests for pull._available_layer_types helper
- (services) Clarify and cover _build_placeholder_map version_override intent
- (infra) Cover remove_expiry when removing the only credentials entry
- (infra) Cover remove_expiry when removing the only credentials entry
- Reach 100% coverage on infra/oci.py, services/build.py, services/push.py
⚙️ Miscellaneous
- Start of 0.4.0
- (git) Ignore worktree starting by .wk-*
- (lint) Suppress SLF001 for unit tests globally
- (plan) Prepare sprint 5-6 and clean backlog
Style
- Use yaml+jinja lexer for app.yaml.jinja code blocks
- Prevent field name wrapping in tables
- (imports) Remove all global import for selective ones
0.3.0-rc1
[0.3.0-rc1] - 2026-07-28
🚀 Features
- Reassign -V to --version, free -v for --verbose
- Add console module with success/warning/info/debug/fatal
- Add --verbose/-v and --debug/-d global flags
- Add console.info() step logging to pull and fetch services
- Add console.debug() infra logging to oci adapter
- (domain) Add OCI tag and SemVer validation (domain/tags.py)
- (domain) Add margo.yaml dataclasses and parser (domain/metadata.py)
- (domain) Add PackageType.ALL and BuildTarget dataclass (domain/models.py)
- (config) Add dynaconf Settings with layered config (config.py)
- (infra) Add pure-Python filesystem helpers (infra/filesystem.py)
- (services) Add build orchestration service (services/build.py)
- (cli) Add margot build command (commands/build.py)
- (kiro) Tuning of agent tooling
- Add appVersion field to margo.yaml and MargoYaml
- (kiro) Create agent docs-writer with steering
- (mkdocs) Create mkdocs content skeleton
🐛 Bug Fixes
- (tests) Resolve all ruff lint errors
- Add -h shortcut for --help
- Skip undefined components when --type all
- Support multiple -t flags for build command
- Remove and recreate output dir on rebuild (idempotent)
- Use appVersion for <app_tag>, remove <margo_version> placeholder
🚜 Refactor
- Migrate commands output to console module
📚 Documentation
- (plan) Add spec for output and error output
- (kiro) Add output directives
- (spec) Update sprint 3 spec and margot build file
- (kiro) Remove implemented spec
- (spec) Add appVersion to margo.yaml
🧪 Testing
- Add E2E verbose/debug flag tests
⚙️ Miscellaneous
- Add run of pytest with 3.14
- Add mkdocs deps to docs group
- Add make receipes for documentation
- (docs) Add GitHub Pages deployment workflow
Style
- Fix ruff issues
- Resolve ruff violations (UP045, F401, C901, PLR0912)