Changelog#
Unreleased#
Use Rich for human-readable output, following conda-workspaces’ blue, cyan, and yellow status colors. JSON output is unchanged. Provider text is rendered literally and terminal control characters are escaped.
Add reproducible VHS recordings of feature management and configuration, with isolated demo setup and matching conda-workspaces terminal styling.
0.2.0 - 2026-11-13#
Breaking: remove
conda feature export,conda feature apply, the custom intent JSON format, andFeature.portable_settings/export_intent. There is no deprecation period or replacement manifest. Use conda configuration and explicit feature commands. Existing local deployment receipts,--jsonoutput, and the provider’sFeature.applymethod are unchanged. Release 0.1.0 artifacts retain the old commands.Add
conda feature config FEATURE --set KEY VALUE, followingconda configargument syntax. Repeat--setfor multiple settings. The releasedconfigure FEATURE KEY=VALUEcommand remains supported.Add feature-scoped
--get,--show,--show-sources,--describe,--validate, and confirmed--remove-key. Queries expose only declared settings. Removing an override preserves inherited configuration and checks feature requirements.Rewrite the README and documentation in plainer language while retaining setup and recovery guidance.
0.1.0 - 2026-11-13#
Initial public release of conda-features, available on PyPI and Anaconda.org.
Feature management#
Discover installed providers through the
conda_featuresPluggy hook.List and explain saved choices, effective configuration, readiness, and lifecycle metadata without claiming to observe provider execution.
Enable, configure, and disable features with previews, explicit confirmation, and JSON output.
Select user, installation, environment, or standalone-file configuration destinations using conda’s typed settings and precedence.
Plan explicit prerequisite opt-ins and protect dependents in checked environments. Shared changes inspect the current user’s registry and explicit targets, not every environment on the machine.
Deployment and recovery#
Declare reusable package, scalar-setting, channel, and managed-file-block steps.
Execute approved package transactions while protecting the running conda and Python installation from replacement.
Record resource ownership in versioned receipts for retry and reverse-order cleanup. Preserve pre-existing resources and later user edits.
Diagnose local drift, missing providers, overrides, and incomplete checkpoints through
feature diagnoseandconda doctor features.Repair saved setup through the existing preview and confirmation flow. Interrupted disable must be resumed with disable, not repair.
Lifecycle and portability#
Preview explicit migration between boolean-backed features using provider-declared setting mappings.
Distinguish optional graduation from unconditional functionality and clean up obsolete boolean opt-ins.
Export versioned feature intent with explicitly portable settings. Apply validates provider identity, configuration, compatibility, dependencies, and conflicts before mutation.
Reject recognizable credential-bearing URLs, absolute machine paths, and non-finite values in portable settings. Generic deployment migration and deployment-setting round-tripping remain limited.
Documentation and distribution#
Provide Sphinx documentation organized into tutorials, how-to guides, reference, and explanation, published through GitHub Pages.
Add native core CI for Linux, Windows, and ARM macOS, with separate real-provider integration tests.
Publish the core package under BSD-3-Clause. The repository-only
conda-features-examplespackage supplies real PyPI-support and shell-completion deployments but is not published to either registry.Attach Python build provenance, conda build provenance, and CEP 27 publication evidence to the GitHub release.
Publication history#
The Python artifacts were published from commit 3098f8ae2cbb0bc15bf28c1ec5ab2573d6c2e408. An Anaconda workflow-secret fix required moving the then-mutable 0.1.0 tag to d853260e26a9543aaee769f92731f0ac5c1d7fc2. The recovery reused the published Python files byte-for-byte and built the conda package from the same published sdist.
The GitHub release was subsequently recreated with release immutability enabled. Its five assets retained their SHA-256 digests, and the recovery tag was preserved. The release is now immutable. This change did not replace packages on PyPI or Anaconda.org. The documentation’s release-verification guide explains the distinct original Python and recovery conda source commits.