Skip to content

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 12:31
· 17 commits to release since this release

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 list

Changing 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 recover

Recovery 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 migrate

Migration 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-generators when intentional evaluation is needed.
  • shine upgrade no longer changes Sys profile activation implicitly. Use
    shine sys profile enable or shine 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.