Skip to content

Commit 33e95f0

Browse files
committed
Add maintainer pack
1 parent ff21548 commit 33e95f0

5 files changed

Lines changed: 80 additions & 2 deletions

File tree

.beads/issues.jsonl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,4 @@
9595
{"id":"yazelix-vi0","title":"Fix skip_welcome_screen=false being ignored during interactive launch","description":"The core.skip_welcome_screen setting is currently being ignored for interactive Yazelix launch flows. Users with skip_welcome_screen = false still do not see the welcome UI.","design":"Trace so far: the interactive launch path still calls show_welcome from nushell/scripts/core/start_yazelix_inner.nu, so the setting is not being ignored because the UI code was removed. The likely regression is environment leakage: launch wrappers pass --skip-welcome into the devenv/bootstrap layer, which sets YAZELIX_SKIP_WELCOME=true, and show_welcome treats that as test_mode. The most suspicious paths are nushell/scripts/core/start_yazelix.nu, nushell/scripts/utils/environment_bootstrap.nu, and nushell/scripts/yzx/launch.nu. The likely fix is to keep bootstrap welcome suppression for environment setup while clearing or scoping YAZELIX_SKIP_WELCOME before the real interactive inner session starts.","acceptance_criteria":"With core.skip_welcome_screen = false, interactive Yazelix launch shows the welcome screen again. With core.skip_welcome_screen = true, the welcome screen is skipped and the info is logged as before. The fix must not regress env-only, one-shot command, or sweep/test flows that intentionally use YAZELIX_SKIP_WELCOME.","status":"open","priority":2,"issue_type":"bug","created_at":"2026-03-14T20:09:12.701657419Z","created_by":"lucca","updated_at":"2026-03-14T20:09:19.982045894Z","source_repo":".","compaction_level":0,"original_size":0,"labels":["launch","regression","ux","welcome"]}
9696
{"id":"yazelix-vi3","title":"Auto-assign new GitHub issues to the maintainer","description":"Automatically assign new GitHub issues to the maintainer instead of leaving assignment as a manual follow-up step.","design":"Treat this as repository workflow automation, not product runtime work. Decide whether GitHub Actions, issue templates, or another automation path is the right place to assign newly opened issues to the maintainer, and verify the permission model before committing to an approach. The solution should be reliable without creating noisy side effects on transferred, reopened, or bot-created issues unless that behavior is explicitly desired.","acceptance_criteria":"New issues are assigned to the intended maintainer automatically, or the repo has a documented explanation of why that automation is not supportable. Include validation for the chosen workflow path, with logs or dry-run evidence showing the assignment behavior for representative issue-opening scenarios.","status":"open","priority":4,"issue_type":"task","created_at":"2026-03-11T19:04:06.545186857Z","created_by":"lucca","updated_at":"2026-03-11T19:04:06.683603842Z","external_ref":"https://github.com/luccahuguet/yazelix/issues/422","source_repo":".","compaction_level":0,"original_size":0,"labels":["automation","github","triage","workflow"]}
9797
{"id":"yazelix-x7z","title":"Add CI check for README version drift","description":"Protect the public README version marker from drifting away from YAZELIX_VERSION. Add one focused check that compares the README title/version line against the version constant and run it in CI.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-03-22T12:28:38.542160312Z","created_by":"lucca","updated_at":"2026-03-22T12:35:10.079239646Z","closed_at":"2026-03-22T12:35:10.078156204Z","close_reason":"Completed: added README version drift validator to CI and taught yzx dev update to auto-sync the README title/version marker from YAZELIX_VERSION","external_ref":"https://github.com/luccahuguet/yazelix/issues/446","source_repo":".","compaction_level":0,"original_size":0,"labels":["ci","docs","versioning"]}
98+
{"id":"yazelix-xeq","title":"Add maintainer pack for local maintainer tooling","description":"Imported GitHub issue #453 after deciding that maintainer tooling should be an opt-in pack rather than a special yzx dev mode. Add a top-level maintainer pack for repo maintenance tools that are meaningfully tied to maintaining Yazelix itself, starting with gh, prek, tru, beads-rust, and beads-viewer. Keep runtime behavior unchanged, sync the default config and Home Manager module, document the pack in the collection/docs, and add a focused regression test that verifies the pack stays aligned across configuration paths.","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-03-22T12:52:37.729964836Z","created_by":"lucca","updated_at":"2026-03-22T12:56:40.730174328Z","closed_at":"2026-03-22T12:56:40.729748842Z","close_reason":"Added an opt-in maintainer pack with gh, prek, tru, beads-rust, and beads-viewer; synced the default config, Home Manager module, and collection docs; and added a regression test that keeps the pack aligned across both configuration paths.","external_ref":"https://github.com/luccahuguet/yazelix/issues/453","source_repo":".","compaction_level":0,"original_size":0,"labels":["maintainer","packs","workflow"]}

docs/yazelix_collection.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,15 @@ General-purpose development tools:
181181
- [lazyjj](https://github.com/Cretezy/lazyjj) — LazyGit-style TUI for jj
182182
- [jjui](https://github.com/idursun/jjui) — TUI for Jujutsu VCS
183183

184+
### Maintainer Pack (`maintainer`)
185+
Tools for maintaining Yazelix itself without changing runtime behavior.
186+
187+
- [gh](https://cli.github.com/) — GitHub CLI for issues, PRs, and repo workflow
188+
- [prek](https://github.com/j178/prek) — Fast local pre-commit hook runner
189+
- [tru](https://github.com/block/tru) — Compact structured output for Beads and agent workflows
190+
- [beads-rust](https://github.com/Dicklesworthstone/beads_rust) — Rust Beads tracker (`br`)
191+
- [beads-viewer](https://github.com/Dicklesworthstone/beads_viewer) — Graph-aware triage and visualization (`bv`)
192+
184193
### AI Agents Pack (`ai_agents`)
185194
AI coding agents sourced from [llm-agents.nix](https://github.com/numtide/llm-agents.nix) with daily updates.
186195

home_manager/module.nix

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,13 @@ in
458458
"lazyjj"
459459
"jjui"
460460
];
461+
maintainer = [
462+
"gh"
463+
"prek"
464+
"tru"
465+
"beads-rust"
466+
"beads-viewer"
467+
];
461468
python = [
462469
"ruff"
463470
"uv"

nushell/scripts/dev/test_yzx_dev_commands.nu

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,29 @@
33
use ../core/yazelix.nu *
44
use ./test_yzx_helpers.nu [get_repo_config_dir repo_path]
55

6+
def extract_hm_pack_declaration [pack_name: string] {
7+
let hm_module = (open --raw (repo_path "home_manager" "module.nix"))
8+
let lines = ($hm_module | lines)
9+
let start_pattern = $" ($pack_name) = ["
10+
let start_index = ($lines | enumerate | where item == $start_pattern | get -o 0.index | default null)
11+
12+
if $start_index == null {
13+
return []
14+
}
15+
16+
$lines
17+
| skip ($start_index + 1)
18+
| take while { |line| ($line | str trim) != "];" }
19+
| each { |line|
20+
$line
21+
| str trim
22+
| parse --regex '^"(?<pkg>.+)"$'
23+
| get -o 0.pkg
24+
| default null
25+
}
26+
| where { |pkg| $pkg != null }
27+
}
28+
629
def test_dev_update_canary_set [] {
730
print "🧪 Testing yzx dev update canary set..."
831

@@ -51,9 +74,9 @@ def test_tru_is_in_ai_agents [] {
5174
try {
5275
let default_config = (open (repo_path "yazelix_default.toml"))
5376
let default_agents = ($default_config.packs.declarations.ai_agents | default [])
54-
let hm_module = (open --raw (repo_path "home_manager" "module.nix"))
77+
let hm_agents = (extract_hm_pack_declaration "ai_agents")
5578

56-
if ("tru" in $default_agents) and ($hm_module | str contains '"tru"') {
79+
if ("tru" in $default_agents) and ("tru" in $hm_agents) {
5780
print " ✅ tru is present in both ai_agents configuration paths"
5881
true
5982
} else {
@@ -66,6 +89,34 @@ def test_tru_is_in_ai_agents [] {
6689
}
6790
}
6891

92+
def test_maintainer_pack_stays_in_sync [] {
93+
print "🧪 Testing maintainer pack stays in sync across config paths..."
94+
95+
try {
96+
let expected = [
97+
"gh"
98+
"prek"
99+
"tru"
100+
"beads-rust"
101+
"beads-viewer"
102+
]
103+
let default_config = (open (repo_path "yazelix_default.toml"))
104+
let default_pack = ($default_config.packs.declarations.maintainer | default [])
105+
let hm_pack = (extract_hm_pack_declaration "maintainer")
106+
107+
if (($default_pack | sort) == ($expected | sort)) and (($hm_pack | sort) == ($expected | sort)) {
108+
print " ✅ maintainer pack matches in both the default config and Home Manager module"
109+
true
110+
} else {
111+
print $" ❌ Unexpected maintainer pack contents: default=($default_pack | to json -r) hm=($hm_pack | to json -r)"
112+
false
113+
}
114+
} catch { |err|
115+
print $" ❌ Exception: ($err.msg)"
116+
false
117+
}
118+
}
119+
69120
def test_home_manager_desktop_entry_evaluates [] {
70121
print "🧪 Testing Home Manager desktop entry evaluates with StartupWMClass..."
71122

@@ -126,6 +177,7 @@ export def run_dev_tests [] {
126177
(test_dev_update_canary_set)
127178
(test_gemini_cli_is_reactivated)
128179
(test_tru_is_in_ai_agents)
180+
(test_maintainer_pack_stays_in_sync)
129181
(test_home_manager_desktop_entry_evaluates)
130182
(test_readme_title_matches_declared_version)
131183
]

yazelix_default.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ enabled = [
286286
# "file-management",
287287
# "git",
288288
# "jj",
289+
# "maintainer",
289290
# "python",
290291
# "rust",
291292
# "rust_maintainer",
@@ -371,6 +372,14 @@ jj = [
371372
"jjui", # TUI for Jujutsu VCS
372373
]
373374

375+
maintainer = [
376+
"gh", # GitHub CLI for repo maintenance
377+
"prek", # Fast local git-hook runner and commit log viewer
378+
"tru", # Compact Beads/agent structured output CLI
379+
"beads-rust", # Rust Beads tracker (br)
380+
"beads-viewer", # Beads Viewer (bv)
381+
]
382+
374383
# Language packs
375384
python = [
376385
"ruff", # Fast Python linter/formatter

0 commit comments

Comments
 (0)