Skip to content

Commit 1a2d35e

Browse files
authored
feat: release channels and export/import
1 parent f267f26 commit 1a2d35e

18 files changed

Lines changed: 771 additions & 127 deletions

.specs/v0.4.0-roadmap.md

Lines changed: 0 additions & 110 deletions
This file was deleted.

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ Verify → Test → Build
9090
3. Features: full spec with acceptance criteria
9191
4. Review spec with user before implementation
9292
5. Checkpoints tied to deliverables, not percentages
93-
6. Keep specs in git — archive after merge
93+
6. Specs are temporary planning artifacts — delete after merge
9494
7. Post-mortem lessons go to AGENTS.md, not the spec
9595

9696
## PR Discipline

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.6.0] - 2026-04-23
11+
12+
### Added
13+
- Release channels: `gitclaw install user/repo --channel nightly|beta|stable`
14+
- `gitclaw search user/repo --channel <name>` filters releases by channel
15+
- Channel pattern overrides in `.gitclaw.toml` under `[channels]`
16+
- `gitclaw export` outputs installed packages as TOML to stdout
17+
- `gitclaw export -o deps.toml` writes to file
18+
- `gitclaw import deps.toml` installs all packages from a TOML file
19+
- Import skips already-installed packages unless `--force` is set
20+
- Export output is deterministic: sorted by owner then repo
21+
- New modules: `src/core/channel.rs`, `src/core/export.rs`
22+
1023
## [0.5.0] - 2026-04-23
1124

1225
### Added

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "gitclaw"
3-
version = "0.5.0"
3+
version = "0.6.0"
44
edition = "2021"
55

66
[[bin]]

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ gcw cache clean
3131

3232
gcw install --local sharkdp/bat # project-local install
3333
gcw uninstall --local bat
34+
35+
gcw install BurntSushi/ripgrep --channel nightly
36+
gcw search sharkdp/fd --channel beta
37+
38+
gcw export -o deps.toml
39+
gcw import deps.toml
3440
```
3541

3642
## Configuration

ROADMAP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ gitclaw alias rg BurntSushi/ripgrep
3131
gitclaw install rg
3232
```
3333

34-
## 0.5.0 — User Experience
34+
## 0.5.0 — User Experience ✅ ✅
3535

3636
**Asset caching**
3737

@@ -58,7 +58,7 @@ Project-scoped installation isolated from the global registry:
5858
gitclaw install --local user/repo
5959
```
6060

61-
## 0.6.0 — Advanced Features
61+
## 0.6.0 — Advanced Features
6262

6363
**Release channels**
6464

src/cli/mod.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ pub enum Commands {
7676
locked: bool,
7777
#[arg(long, help = "Install to project-local .gitclaw/ directory.")]
7878
local: bool,
79+
#[arg(long, help = "Release channel: stable, beta, or nightly.")]
80+
channel: Option<String>,
7981
},
8082
#[command(about = "Generate a lockfile from installed packages.")]
8183
Lock {
@@ -117,6 +119,20 @@ pub enum Commands {
117119
help = "Maximum number of releases to show."
118120
)]
119121
limit: usize,
122+
#[arg(long, help = "Filter by release channel: stable, beta, or nightly.")]
123+
channel: Option<String>,
124+
},
125+
#[command(about = "Export installed packages to TOML.")]
126+
Export {
127+
#[arg(short, long, help = "Output file (default: stdout).")]
128+
output: Option<String>,
129+
},
130+
#[command(about = "Install packages from a TOML file.")]
131+
Import {
132+
#[arg(help = "TOML file to import packages from.")]
133+
file: String,
134+
#[arg(long, help = "Force reinstall already-installed packages.")]
135+
force: bool,
120136
},
121137
#[command(about = "Generate shell completions.")]
122138
Completions {

0 commit comments

Comments
 (0)