From a2d52313eaf536ed21fe4999b56abd09349a1d2a Mon Sep 17 00:00:00 2001 From: AJ Markow Date: Tue, 15 Sep 2026 12:19:21 -0500 Subject: [PATCH 1/3] chore(release): 0.6.0 Minor rather than patch because this narrows supported Ruby to 3.2 and newer. Semver exempts 0.x from its rules, but the 0.x convention puts compatibility changes in MINOR, and anyone pinned at `~> 0.5.3` should opt in rather than receive it silently. RubyGems enforces required_ruby_version when resolving, so Ruby 3.1 users are held on 0.5.3 with a working install rather than broken. Adds CHANGELOG.md, covering 0.6.0 back to 0.5.0. The gemspec already advertised a changelog_uri pointing at a file that did not exist. nix/gemset.nix and nix/Gemfile.lock stay on 0.5.3 deliberately. They pin the published gem; update-gemset repins them after publish. The nix/Gemfile constraint `~> 0.5` still covers 0.6.0, so it needs no change. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 61 ++++++++++++++++++++++++++++++++++++++ lib/snippet_cli/version.rb | 2 +- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..96e96ce --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,61 @@ +# Changelog + +All notable changes to this project are documented in this file. + +The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.6.0] - 2026-09-15 + +### Added + +- Installable Nix flake. `nix run github:ajmarkow/snippet_cli` runs the CLI without + installing the gem, and `overlays.default` lets Nix users refer to `snippet_cli` + by bare name in `environment.systemPackages` or `home.packages`. +- This changelog. The gemspec advertised a `changelog_uri` that pointed at a file + which did not exist. + +### Changed + +- **Require Ruby 3.2 or newer.** The runtime dependencies already needed it, so the + previous `>= 3.1.0` constraint let the gem install on a Ruby it could not run on. + Narrowing supported Ruby is why this is a minor release rather than a patch. + RubyGems resolves Ruby 3.1 users to 0.5.3, so they keep a working install. + +## [0.5.3] - 2026-04-13 + +### Added + +- Nix packaging: a `bundlerApp` derivation with a `gemConfig` patch that links the + `gum` binary into the path the `gum` gem expects. + +### Fixed + +- Replaced an implicit `it` block parameter with an explicit one, which Ruby 3.4 + otherwise reinterprets. + +## [0.5.2] - 2026-04-13 + +### Fixed + +- Embedded the Espanso schema JSON under `lib/` so `check` resolves it from an + installed gem rather than only from a source checkout. + +## [0.5.1] - 2026-04-13 + +### Fixed + +- Gemspec packaging correction for files missing from the published gem. + +## [0.5.0] - 2026-04-13 + +### Changed + +- Restricted `spec.files` to an explicit allowlist, so the gem ships only `lib/`, + `exe/`, and the top-level README, CHANGELOG, and LICENSE. + +[0.6.0]: https://github.com/ajmarkow/snippet_cli/compare/v0.5.3...v0.6.0 +[0.5.3]: https://github.com/ajmarkow/snippet_cli/compare/v0.5.2...v0.5.3 +[0.5.2]: https://github.com/ajmarkow/snippet_cli/compare/v0.5.1...v0.5.2 +[0.5.1]: https://github.com/ajmarkow/snippet_cli/compare/v0.5.0...v0.5.1 +[0.5.0]: https://github.com/ajmarkow/snippet_cli/releases/tag/v0.5.0 diff --git a/lib/snippet_cli/version.rb b/lib/snippet_cli/version.rb index 8935fb2..2ebe888 100644 --- a/lib/snippet_cli/version.rb +++ b/lib/snippet_cli/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module SnippetCli - VERSION = '0.5.3' + VERSION = '0.6.0' end From 8cc42954b46a6dc715983529104a8aa606e95d58 Mon Sep 17 00:00:00 2001 From: AJ Markow Date: Tue, 15 Sep 2026 13:04:29 -0500 Subject: [PATCH 2/3] docs: correct the semver guidance in the release runbook The runbook claimed that raising required_ruby_version stops users on the dropped Ruby from installing at all. That overstates it. RubyGems enforces required_ruby_version while resolving, so those users stay on the last version that supported them and keep a working install. What they lose is future updates, silently. Also notes that semver exempts 0.x, so the minor-bump rule is convention here rather than a requirement, and explains what the bump actually buys: visibility, and a clean opt-in for anyone pinned at a patch-level constraint. Co-Authored-By: Claude Opus 5 (1M context) --- docs/updating-version.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/updating-version.md b/docs/updating-version.md index bdf084b..6c06327 100644 --- a/docs/updating-version.md +++ b/docs/updating-version.md @@ -30,11 +30,18 @@ bump them by hand, the build breaks. ## Choose the number -Follow [semantic versioning](https://semver.org). One case is easy to get wrong: - -**Raising `required_ruby_version` is a minor bump, not a patch.** It stops users on -the dropped Ruby from installing at all. Treat any narrowing of supported Ruby, -Espanso schema, or platform the same way. +Follow [semantic versioning](https://semver.org), with one caveat: the spec exempts +`0.x` releases, where "anything MAY change at any time". While this gem is pre-1.0, +the rule below is convention rather than a requirement β€” but follow it anyway. + +**Raising `required_ruby_version` is a minor bump, not a patch.** Treat any narrowing +of supported Ruby, Espanso schema, or platform the same way. + +Nobody breaks when you do this. RubyGems enforces `required_ruby_version` while +resolving, so users on the dropped Ruby stay on the last version that supported them +and keep a working install. What they lose is future updates, silently. The minor +bump is what makes that visible, and it is what lets someone pinned at `~> 0.5.3` opt +in deliberately instead of being held back without knowing why. ## Steps From 4332247427930291549a075f6734d0603aca3c8a Mon Sep 17 00:00:00 2001 From: AJ Markow Date: Tue, 15 Sep 2026 13:10:17 -0500 Subject: [PATCH 3/3] docs(readme): show the overlay as the simplest system-config install The overlay landed in flake.nix (#2) but the README's system-config section never mentioned it, so it still only showed inputs.snippet_cli.packages.${pkgs.system}.default -- the exact thing the overlay exists to replace. Verified pkgs.snippet_cli resolves once the overlay is applied. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ad5656f..fa84b88 100644 --- a/README.md +++ b/README.md @@ -89,16 +89,22 @@ Add the flake as an input: } ``` -Then add the package where you need it β€” Home Manager: +Simplest: apply the overlay, then refer to the package by name everywhere `pkgs` +is in scope β€” no need to thread `system` through: ```nix -home.packages = [ inputs.snippet_cli.packages.${pkgs.system}.default ]; +nixpkgs.overlays = [ inputs.snippet_cli.overlays.default ]; ``` -…or NixOS: +```nix +home.packages = [ pkgs.snippet_cli ]; # Home Manager +environment.systemPackages = [ pkgs.snippet_cli ]; # NixOS +``` + +Without the overlay, reach the package directly instead: ```nix -environment.systemPackages = [ inputs.snippet_cli.packages.${pkgs.system}.default ]; +home.packages = [ inputs.snippet_cli.packages.${pkgs.system}.default ]; ```