Skip to content

v5.0.0 — Profile-aware naming + Rust CSV pilot + OS tri-level parity

Latest

Choose a tag to compare

@BragatteMAS BragatteMAS released this 04 May 04:40
· 96 commits to main since this release

⚠ Breaking change for forks

This release rewrites main history (the previous git filter-repo
sanitization done in 2026-04-18 was never pushed; v5.0.0 ships both
that rewrite and the curation cycle below). If you have a fork:

git fetch origin
git reset --hard origin/main

Profile.txt files reference new package file names — see naming convention.


Naming convention (new)

Suffix Included in Purpose
<source>.txt minimal + developer + full Base — universal essentials
<source>-developer.txt developer + full Dev defaults (not in minimal)
<source>-full.txt full only Bragatte's personal pick

Renames (history preserved via git mv):

Old New
apt-post.txt apt-developer.txt
brew-cask.txt brew-cask-developer.txt
cargo.txt / cargo-developer.txt (deleted; migrated to data/packages.csv)
npm.txt npm-developer.txt
ai-tools.txt ai-tools-full.txt
flatpak.txt / flatpak-post.txt flatpak-developer.txt / flatpak-full.txt
snap.txt / snap-post.txt snap-developer.txt / snap-full.txt

✨ New: data/packages.csv — Rust tool catalog

53 Rust tools in 5 categories with cross-source resolution:

category,name,brew,cargo,binary,prefer,description
rust-cli,bat,bat,bat,,brew,Cat with syntax highlighting
rust-cli,fd,fd,fd-find,fd,brew,Modern find (intuitive syntax)
rust-dev,ast-grep,ast-grep,ast-grep,sg,brew,Structural code search/refactor
...

prefer column chooses brew or cargo per row, with cross-source fallback.
Idempotent via binary-in-PATH check. Editorial principle: prefer Rust where mature alternative exists.

Category Tools Profiles
rust-cli 19 minimal, developer, full
rust-dev 15 developer, full
rust-data 5 developer, full
rust-tui 8 full only
rust-shell 5 full only

Profile entries use csv:<category> syntax. Installer in src/core/csv.sh.


✨ New: OS tri-level parity (mac / Linux / Windows)

OS base developer full
macOS brew 5 36 19
macOS cask — 24 23
Linux apt 9 19 1
Windows winget 3 13 14

Profile entries totals: minimal=4, developer=13, full=23.


✨ New: shell helpers (functions.sh)

h rust-cli          # Modern Unix replacements
h rust-dev          # Dev tools (cargo extensions, ast-grep, ruff, ...)
h rust-data         # Data wrangling (qsv, jaq, jql, ...)
h rust-tui          # TUI applications (helix, yazi, zellij, ...)
h rust-shell        # Shell integrations (starship, atuin, nu, ...)
h ai                # AI clients + MCPs via mcpl
h <toolname>        # Direct CSV lookup (e.g. h ast-grep, h ouch, h atuin)

dotfiles-install.sh symlinks ~/.config/os-postinstall/packages.csv to power
the helpers.


✨ New: mise as preferred tool version orchestrator

dev-env.sh now offers mise install as the first step (replaces direnv +
fnm + pyenv + asdf with a single Rust tool). fnm and direct uv
installs kept as fallback.


Curation highlights

  • AI tools migrated pipx → uv (markitdown, fastapi-mcp). pipx documented
    as fallback only if uv ever fails.
  • 5 macOS casks dropped: windsurf, antigravity, t3-code-alpha, ghostty,
    iterm2 (replaced by warp + curated AI editors).
  • 5 Windows packages dropped: Steam, Epic Games, GeForce Experience,
    Anaconda, Weka (gaming + redundant with conda removal).
  • Linux apt deduplicated; gaming + wine removed.

Removed

  • src/install/rust-cli.sh — replaced by csv:rust-* dispatch
  • src/install/cargo.sh — replaced by src/core/csv.sh
  • src/platforms/windows/install/cargo.ps1
  • data/packages/cargo-developer.txt

Installer flag changes

  • apt.sh, flatpak.sh, snap.sh, brew-cask.sh, winget.ps1 accept
    --developer / --full (with --post kept as backwards-compat alias).
  • ai-tools.sh extended with bun:, uv:, pipx: prefix cases (was
    npm/curl only).

Validator + tests

  • tools/validate-profiles.sh rewritten to enforce the tri-level naming
    convention and validate csv:<category> rows against data/packages.csv.
  • tests/test-data-validation.bats updated to recognize CSV syntax.
  • 36/36 bats tests pass; dry-run on all 3 profiles 0 failures.

Files changed

  • 59 files in the main refactor commit
  • 6 in the release commit
  • 8 in the post-merge cleanup
  • Net: 16 new package files + 1 CSV + 1 helper module; 4 deleted

Full diff: v4.2.2...v5.0.0