v2.0.0
Shine 2.0.0
Shine 2.0.0 is the stable lifecycle security and recovery release.
This release makes App, Shell, and managed Sys changes reviewable before they start, scopes trust
to the exact external Preset code being executed, and adds explicit recovery for interrupted
managed-resource mutations.
Before promotion to stable, the 2.0 release line was exercised against representative Shine 1.8
state on macOS, Ubuntu, and Windows, including upgrade, lifecycle, uninstall, and recovery
workflows.
Before upgrading from 1.x
Shine 2.0 intentionally tightens several mutation and external-code contracts. Existing compatible
1.8 manifests and receipts remain readable, but external Presets may require metadata migration,
explicit permission declarations, and renewed target-scoped trust.
Read the complete upgrade guide before changing an existing installation:
Highlights
Review every protected mutation
App, Shell, managed Sys, generator refresh, artifact, bootstrap, and profile mutations now use
snapshot-bound security Plans.
A Plan shows the semantic steps and required permissions before execution. Interactive approval
defaults to No, and the approved Plan is regenerated from fresh state immediately before the
first mutation.
For attended automation, add --yes:
shine app upgrade <CATEGORY> --yes--yes skips only the confirmation prompt. It does not skip Plan rendering, validation, permission
checks, or fresh-state revalidation.
Target-scoped trust for external code
The broad 1.x allow_app_hooks and allow_sys_code settings are retired and are never converted
into implicit authority.
External executable Presets now require declarations for their actual filesystem, command,
environment, network, and administrator access. Trust grants are bound to the target, source layer,
code digest, capability, and exact permission set:
shine trust inspect <TARGET>
shine trust grant <TARGET>
shine trust listChanging the code or requested permissions invalidates the previous grant and requires another
review.
Explicit interrupted-operation recovery
Shine now journals managed App, Shell, and Sys resource mutations and blocks later writes when an
interrupted operation requires attention.
Recovery is an explicit, separately reviewed operation:
shine app recover
shine shell recover
shine sys recoverRecovery only restores or removes resources while their fingerprints, receipts, backups, and
rollback state still match. User-modified or ambiguous state is preserved and reported instead of
overwritten.
Complete Preset authoring workflow
Shine 2.0 adds a reviewable authoring toolchain for App, Shell, and Sys Presets:
shine preset schema
shine preset validate <PATH>
shine preset lint <PATH> --deny-warnings
shine preset plan <CATEGORY> --platform <macos|linux|windows>
shine preset test <CATEGORY>
shine preset pack <CATEGORY> --output <FILE>The workflow includes generated schemas, static validation, structured diagnostics, synthetic
host-state fixtures, deterministic planning, and reproducible bundles.
Legacy external Preset metadata can be reviewed and migrated with backup-first semantics:
shine preset migrate --dry-run
shine preset migrateMigration changes only eligible metadata. It does not execute Preset code, migrate runtime state,
create trust grants, or infer broad permissions.
Planned lifecycle scripts
App lifecycle hooks can now run native or Bun scripts as part of the parent install or upgrade
Plan. Their source, runtime, declared inputs, permissions, and known effects are reviewed together
with the lifecycle operation.
Clash Verge uses this path to refresh current rule providers automatically after managed rule files
change, while retaining the explicit reselect-and-apply flow when subscription bindings change.
Additional improvements
- Read-oriented App status and update commands no longer execute generators by default; use
--run-generatorswhen intentional evaluation is needed. shine upgradeno longer changes Sys profile activation implicitly. Use
shine sys profile enableorshine sys profile disable.- Generator, artifact, and hook environments are narrowed to declared inputs; secret plaintext
never enters a Plan or trust record. - Preset validation, lint, test, plan, and migration diagnostics now preserve actionable blockers
and remediation in text and JSON workflows. - Overlay-only App and Shell targets resolve consistently across upgrade and inspection commands.
- Legacy App relocation receipts converge on the latest source record without claiming obsolete
user files. - Windows can optionally initialize a phone-backed age identity through
age-plugin-phone.