Extract resolveProfile (sync + resolve, no side effects) and
realizeProfile (store admission + generation + activation) from the
monolithic installPackagesToProfile. All install/uninstall entry points
now use this two-phase approach.
Uninstall improvements:
- Detect when a package is still required as a transitive dependency
and refuse with a message naming the dependents - Add --cascade flag to remove dependent requested roots
- Add --dry-run flag to preview changes without applying
- Skip remote repo sync during uninstall (resolve against local cache)
- Use .uninstall UI phase so output says 'uninstall' not 'install'
Output improvements:
- Diff-based summary showing named installed/uninstalled/upgraded
packages and unchanged count - Skip generation creation when profile is already up to date
- Suppress 'verified in store' and false 'installed to store' noise
- Remove misleading success messages from CLI handlers
- Fix redundant PackageNotFound error formatting
Resolver: expose dependency_names on ResolvedPackage for reverse
dependency lookups.
Fixes #49
Extract resolveProfile (sync + resolve, no side effects) and
realizeProfile (store admission + generation + activation) from the
monolithic installPackagesToProfile. All install/uninstall entry points
now use this two-phase approach.
Uninstall improvements:
- Detect when a package is still required as a transitive dependency
and refuse with a message naming the dependents
- Add --cascade flag to remove dependent requested roots
- Add --dry-run flag to preview changes without applying
- Skip remote repo sync during uninstall (resolve against local cache)
- Use .uninstall UI phase so output says 'uninstall' not 'install'
Output improvements:
- Diff-based summary showing named installed/uninstalled/upgraded
packages and unchanged count
- Skip generation creation when profile is already up to date
- Suppress 'verified in store' and false 'installed to store' noise
- Remove misleading success messages from CLI handlers
- Fix redundant PackageNotFound error formatting
Resolver: expose dependency_names on ResolvedPackage for reverse
dependency lookups.
Fixes #49