main
tag: alloy_tui-v0.1.0
tag: v0.1.1
tag: v1.0.0
tag: v11.0.0
tag: v11.1.0
tag: v12.0.0
tag: v13.0.0
tag: v14.0.0
tag: v15.0.0
tag: v2.0.0
tag: v3.0.0
tag: v4.1.0
tag: v4.1.1
tag: v5.0.0
tag: v5.0.1
tag: v5.1.0
tag: v6.0.0
tag: v7.0.0
tag: v7.1.0
tag: v7.2.0
tag: v8.0.0
tag: v9.0.0
Files
Commits
Tags
Notes
Issues
Stand alone: split out of the alloy repo
Extracted with git subtree so the crate's history came with it rather
than starting from a copy. It was a workspace member inheriting edition,
authors, and its dependency versions from alloy; those are now declared
here.
Bento releases one crate per repo, so a workspace member could not be
published through it -- alloy_tui was the last crate still hand-published
without a preflight gate.
Version 0.1.1: 0.1.0 shipped with repository pointing at the alloy
workspace, which is now the wrong repo for this crate and immutable on
crates.io. This corrects it going forward.
5 files changed,
+56 insertions,
-9 deletions
1
1
[package]
2
2
name = "alloy_tui"
3
-
version = "0.1.0"
3
+
version = "0.1.1"
4
4
description = "Alloy design system: makeover intents rendered as ratatui Color/Style, plus themed widgets for the alloy console and siblings."
5
-
edition.workspace = true
6
-
rust-version.workspace = true
5
+
edition = "2024"
6
+
rust-version = "1.86"
7
7
license = "MIT"
8
-
repository.workspace = true
9
-
authors.workspace = true
8
+
repository = "https://git.sr.ht/~maxmj/alloy_tui"
9
+
authors = ["Max Johnson <me@maxj.phd>"]
10
10
11
11
[dependencies]
12
-
ratatui.workspace = true
13
-
makeover.workspace = true
12
+
ratatui = "0.30"
13
+
makeover = "0.10.0"
46
46
47
47
MIT.
48
48
49
-
The rest of the [Alloy](https://git.sr.ht/~maxmj/alloy) repository is
49
+
Split out of the [Alloy](https://git.sr.ht/~maxmj/alloy) repository, which is
50
50
GPLv3-or-later. This crate is permissive on purpose: it is the reusable design
51
-
system, not the application.
51
+
system, not the application, and other terminal UIs should be able to adopt the
52
+
look without inheriting copyleft.
1
+
/target
2
+
/Cargo.lock
3
+
4
+
# Claude Code instructions (project-local; not for the public repo)
5
+
CLAUDE.md
1
+
# How Bento releases alloy_tui. Lives here rather than in the daemon's config so
2
+
# it is versioned with the code it describes.
3
+
4
+
# A crate, not an app: one publish.rhai rather than a recipe per platform, and
5
+
# the target below names the host that uploads rather than a build matrix.
6
+
kind = "library"
7
+
8
+
targets = ["linux/x86_64"]
1
+
// Publish this crate to crates.io.
2
+
//
3
+
// A library has no per-platform artifact, so this is the whole release: one
4
+
// recipe, run on whichever host the manifest names.
5
+
//
6
+
// The preflight step is the point of routing this through Bento. crates.io
7
+
// versions can be yanked but never edited, so a wrong repository URL, a
8
+
// missing license, or a duplicate version is permanent the moment it uploads.
9
+
// pter 0.1.0 went out with a dead repository link and could only be corrected
10
+
// by releasing again.
11
+
12
+
let h = build_host();
13
+
let r = repo();
14
+
let v = version();
15
+
16
+
step("checkout");
17
+
sh_ok(h, "cd " + r + " && git pull --ff-only");
18
+
19
+
step("build");
20
+
sh_ok(h, "cd " + r + " && cargo test " + feature_flags());
21
+
22
+
step("verify");
23
+
// Credentials are checked here too, and deliberately not passed through Bento:
24
+
// the token stays in cargo's own 0600 store on the publishing host, where cargo
25
+
// finds it. Handing it to a shell command would put it in the process list for
26
+
// the length of the upload, and ops-exec renders env pairs into the shell line.
27
+
// Aborts the run with the specific problems if anything is wrong.
28
+
log(crate_preflight());
29
+
sh_ok(h, "cd " + r + " && cargo publish --dry-run " + feature_flags());
30
+
31
+
step("publish");
32
+
sh_ok(h, "cd " + r + " && cargo publish " + feature_flags());
33
+
log("published " + v + " to crates.io");