Skip to content

[0.1.49-Sumomo]

Pre-release
Pre-release

Choose a tag to compare

@Mjoyufull Mjoyufull released this 30 May 19:29
33d8172

Breaking Changes

  • First public Sumomo baseline
    • 0.1.49 is the first tagged public release for the Rust Elda line.
    • Development roots, caches, journals, and SQLite databases from older unreleased builds should be backed up or recreated before testing this tag.
    • Elda is pre-1.0. The package-manager paths below are good, but final live-host takeover is not done.
  • System mode scope
    • Elda has a first /usr backend slice, but the final host-state materialization model is still not implemented.
    • Prefer disposable roots and prefix roots for this release. Treat live /usr use as experimental.
  • pkgit compatibility
    • Elda keeps the useful pkgit-style direct git workflow, but it does not use pkgit internals as runtime state.
    • pkgdeps, bldit, flat repo lists, cloned repositories as state, and raw copy/symlink installs are import or reference material only.
  • First-time config
    • Copy the root config.toml for first-time setup.
    • examples/config/config.toml is an annotated reference with non-default choices. Review it before using it as a live host config.

Added

  • Workspace and binary
    • Added the Rust workspace and the elda CLI binary.
    • Added crate boundaries for CLI, core runtime, recipes, repos, builds, install transactions, SQLite state, git inspection, AppImage handling, cache population, Linux helpers, Unix helpers, extension hooks, shared types, and maintainer tasks.
    • Added elda -V and elda version with workspace version, schema, git commit, target, profile, and build date details.
  • Package definitions
    • Added pkg.lua parsing and validation for local recipes, maintained recipes, profile packages, meta packages, source lanes, binary lanes, dependencies, weak dependencies, conflicts, provides, replaces, conffiles, hooks, sysusers, tmpfiles, alternatives, provider assets, flags, subpackages, and profile policy.
    • Added build.lua support for explicit build logic.
    • Added rc add, rc check, rc show, rc diff, rc publish-ready, and editor-backed local recipe flows.
    • Added pkgit-style import for pkgdeps and bldit inputs into Elda-native metadata.
  • Source and binary lanes
    • Added source builds for git and local recipes with Cargo, CMake, Meson, Make, Go, Python, Zig, and Nimble support.
    • Added binary lane staging for URL archives, GitHub release assets, provider-neutral release assets, GPKG payloads, AppImages, and vendor-generated recipes.
    • Added arch-specific release asset tables for maintained github_release recipes.
    • Added direct git installs with commit-derived installed versions.
    • Added explicit branch, tag, and revision selectors for git add, install, upgrade, and downgrade flows.
  • AppImage lane
    • Added source.kind = "appimage" validation and staging.
    • Added stable launcher symlinks under usr/bin/ and payload storage under usr/lib/elda/appimages/.
    • Added read-only AppImage inspection and desktop/icon/metainfo integration from the embedded SquashFS payload.
  • Solver and policy
    • Added a Rust-native PubGrub-style solver for exact dependencies, versioned constraints, alternatives, virtual providers, conflicts, replaces, multi-target closure checks, and reverse-dependency safety.
    • Added provider preferences through [resolver.provider_preferences].
    • Added global, profile, package, version-scoped package, and one-shot CLI flag layers.
    • Added flag descriptions, implied flags, conflicting flags, required-one-of, required-at-most-one, required-any-of groups, and conditional dependencies.
    • Added variant_id recording, source fallback for customized builds, and binary-lane blocking when a customized variant has no matching source lane.
    • Added pin, hold, weak dependency refresh, and variant-drift rebuild behavior.
  • State and transactions
    • Added SQLite installed-state storage with world anchors, dependency records, manifests, file ownership, policy state, provenance, journals, current state, and archived state metadata.
    • Added manifest-backed install, remove, verify, reverify, recover, files, owner lookup, diff, rollback, and downgrade flows.
    • Added conffile handling with .eldanew and .eldasave files.
    • Added unmanaged-path collision checks before activation.
    • Added archive-backed prefix rollback from cached payloads and manifests.
  • Remotes, trust, and cache
    • Added remote and cache documents under /etc/elda/remotes.d/ and /etc/elda/caches.d/.
    • Added signed remote index verification with pinned trust, TOFU trust, persisted key state, verified snapshots, stale snapshot fallback, offline sync, channel filtering, and explicit rotated-key acceptance.
    • Added remote priority, channel selection, metadata URLs, package-definition URLs, and cache priority.
    • Added secure payload signature verification for synced binary installs.
    • Added cache-first binary installs, local content-addressed payload cache reuse, offline reinstall after a successful fetch, and cache cleanup that keeps installed and rollback payloads.
    • Added rmt ls, rmt add, rmt rm, rmt info, rmt trust, rmt preview, rmt enable, rmt disable, rmt set-priority, and targeted sync <remote...>.
  • Interemotes and interbuilds
    • Added dynamic Gentoo overlay and XBPS srcpkgs interemotes with preview, excludes, parser diagnostics, sync deltas, and targeted sync.
    • Added bounded parser-backed source-lane installs for Nix flakes, Gentoo overlays, AUR PKGBUILDs, and XBPS templates.
    • Added metadata-only raw-link handling through elda a and elda add, with strategy priority, list-options mode, explicit source option selection, field confidence, and review gates.
    • Added bounded report extraction for Gentoo, AUR, and XBPS phase commands, dependencies, licenses, checksums, arch-specific sources, VCS sources, and parser issues.
  • Git and releases
    • Added elda git tags, elda versions, and elda git releases for tag inspection, normalized version confidence, optional release joins, and release asset compatibility scoring.
    • Added GitHub, GitLab, Gitea, Forgejo, SourceHut, Codeberg, and direct manifest release asset classification.
    • Added checksum sidecar matching for release assets, including uppercase SHA256SUMS and per-asset sums files.
    • Added release signature sidecar parsing, metadata materialization, field validation, and install-time trust gating.
  • Profiles and machine shape
    • Added pf show, pf apply, pf add, pf rm, pf set-init, pf clear-init, pf set-arch, pf add-foreign-arch, and pf remove-foreign-arch.
    • Added profile recipes with machine-shape defaults for native arch, foreign arches, and init provider.
    • Added profile conflict checks and state export/import round trips for active profiles, init policy, native arch, and foreign arch policy.
    • Added pending system-change reports for init-provider changes, foreign-arch policy, and unapplied profile selections.
  • Linux system backend
    • Added the first /usr backend slice with staged state roots, per-path file-switch activation, system-* state IDs, archived system metadata, internal trigger state, boot status, and linux-copy activation reporting.
    • Added sysusers, tmpfiles, alternatives, hooks, provider assets, and active init-provider materialization for disposable system roots.
    • Added fix-triggers, provider-asset visibility in info, and system rollback coverage for disposable roots.
    • Added snapshot request recording for install and remove transactions, with current support for snapper and direct btrfs subvolume snapshot -r.
  • Migration and adoption
    • Added elda adopt --from <pm> <pkg> and elda mg from <pm>.
    • Added bounded installed-state readers for pacman, apt/dpkg, apk, xbps, and portage.
    • Added adopted package records with provenance, identity, version, architecture, file list, dependency text, source hints, and path-conflict checks.
    • Added human and JSON reports for migration and adoption.
  • CI, forge, QA, and cache population
    • Added local filesystem-backed ci sub, ci run, ci status, ci pr, ci retry, ci logs, and ci batch new/add/push.
    • Added signed local index publishing, lock-v1.json.zst, copied artifacts, minisign sidecars, SPDX sidecars, attestation sidecars, and indexed metadata URLs.
    • Added hosted review creation for GitHub, GitLab, and Gitea-style APIs with token, bearer, SSH, and no-auth modes where applicable.
    • Added forge search, forge browse, qa lint, qa build, qa smoke, qa stack, qa repro, qa diff, and daemon run current-slice behavior.
    • Added elda-populate cache seeding with local installed payload push and synced remote mirror support.
  • Human output and review gates
    • Added framed human output for install, failure, search, info, list, recipe catalog, state, profiles, remotes, cache, config, triggers, migrations, review, and CI reports.
    • Added live progress for install flows with TTY tree output, plain stream output, JSON event streams, and --no-stream final-document behavior.
    • Added build output passthrough for source-lane builds when streaming.
    • Added generated metadata and interbuild review gates with content-addressed stamps, pager support, edit recheck loops, and review ls, review info, review diff, and review forget.
    • Added doctor, install dry-run preflight, release-readiness checks, conffile surfaces, privilege posture reporting, and post-transaction advisories.

Changed

  • Elda is now a Rust package manager with explicit state, transactions, manifests, verification, rollback, signed remotes, and staged activation.
  • Human output now uses command-specific reports instead of dumping generic machine reports.
  • Root help now uses the Elda branded screen, grouped command sections, examples, and terminal styling.
  • Installed provenance now uses canonical source kinds such as local_recipe, git, repo_binary, interbuild, and adopted.
  • Privilege defaults now use provider = "auto" with doas, sudo, run0, and su detection.
  • Live system mode now requires defaults.allow_system_mode = true or one-shot elda -S.
  • JSON and unattended sync no longer enroll TOFU trust implicitly.
  • Offline sync now uses only cached verified snapshots.
  • --offline now applies to git and archive fetch paths.

Fixed

  • Fixed dependency closure planning, weak dependency policy, provider ambiguity, conflicts, replaces, reverse-dependency checks, and versioned provider requests.
  • Fixed duplicate install rendering when live progress already emitted the progress block.
  • Fixed unmanaged terminfo handling for the current system backend.
  • Fixed stale package records after remote removal.
  • Fixed local metadata import so existing pkg.lua, build.lua, patches, and source metadata are preserved unless --replace is explicit.
  • Fixed synced source installs so companion files come from pinned packages_url trees instead of only indexed pkg_lua text.
  • Fixed adoption path checks so already-owned package identities and managed-path collisions fail before state is written.
  • Fixed first-time config docs so users copy root config.toml, not the annotated example config.
  • Fixed the man page entry for [trust].release_keys so it is described as a TOML key, not a fake path.
  • Fixed test-only tree-style scoping so panic paths restore thread-local state.
  • Fixed remove confirmation cleanup so stale remove-confirm.json cannot bypass a later interactive remove gate.
  • Fixed current build warnings from unused code paths.

Technical Details

  • The workspace currently builds version 0.1.49-Sumomo with Rust 1.94 or newer.
  • Installed state is SQLite-backed.
  • Payloads are staged before activation and recorded with payload and manifest digests.
  • Prefix roots and disposable system roots are the expected test targets for this release.
  • Remote indexes support pinned and TOFU trust. Verified snapshots are persisted per remote.
  • Release-asset signature sidecars use [trust].release_keys.
  • Mutations use journals and block recovery-required states.
  • Unsupported paths fail clearly instead of falling back to pkgit-style behavior.
  • Interepo translation is architectural and partial. End-to-end foreign-index installation is not complete.
  • Migration and adoption import metadata and ownership records. Live takeover and coexistence lock modes are not complete.
  • Host-state materialization and atomic /usr exchange are not implemented yet.

Documentation

  • Updated README.md for project identity, features, current status, build requirements, configuration, examples, and links.
  • Updated USAGE.md for install, remotes, sync, review gates, trust, profiles, migration, CI, forge, cache, config, triggers, and first-time bootstrap.
  • Updated SPEC.md for package identity, recipe schemas, flags, dependencies, state, transactions, remotes, trust, cache, interbuild, interepo, NixOS host refusal, release signatures, system activation, and CLI behavior.
  • Updated config.toml, su/config.toml, examples/, and fixtures/ for current config shape and test inputs.
  • Added man/elda.1 as the local man page source.
  • Added eldaforgehosting/ guides for native forge hosting, remotes, indexes, caches, publishing, platforms, and hosting patterns.
  • Updated PROJECT_STANDARDS.md, CODE_STANDARDS.md, CONTRIBUTING.md, checklist.md, and phase.md for current release and contribution workflows.

Notes

  • SemVer: this is a 0.1.x pre-1.0 release. By version number it is a patch release, but it is also the first public Sumomo baseline.
  • Tag: 0.1.49
  • GitHub release title: [0.1.49-Sumomo]
  • Repository: https://github.com/Mjoyufull/Elda

Contributors

  • @Mjoyufull

Compatibility

  • Rust: 1.94 or newer.
  • Platform target: Linux-first and Unix-first. macOS and Windows are not implementation or delivery targets for this line.
  • Config: root config.toml is the conservative first-time setup sample.
  • Database and cache: no stable migration promise is made for unreleased development roots before this tag.
  • System roots: prefix roots and disposable roots are recommended. Live /usr remains experimental.
  • pkgit: Elda can import and replace parts of pkgit-style workflow, but pkgit is not a runtime dependency.