Skip to content

Commit 4252ecd

Browse files
committed
release: v0.1.0
1 parent 32235ca commit 4252ecd

File tree

6 files changed

+297
-68
lines changed

6 files changed

+297
-68
lines changed

.github/workflows/mdbook.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ jobs:
2828
run: cargo build --release
2929

3030
- name: Render governance artifacts
31-
run: ./target/release/govctl render all
31+
run: |
32+
./target/release/govctl render rfc
33+
./target/release/govctl render adr
34+
./target/release/govctl render changelog
3235
3336
- name: Build mdbook
3437
run: ./scripts/build-book.sh --skip-render

.github/workflows/release.yml

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
env:
9+
CARGO_TERM_COLOR: always
10+
11+
jobs:
12+
# Build binaries for all platforms
13+
build:
14+
name: Build ${{ matrix.target }}${{ matrix.suffix }}
15+
runs-on: ${{ matrix.os }}
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
include:
20+
# Linux x86_64
21+
- target: x86_64-unknown-linux-gnu
22+
os: ubuntu-latest
23+
archive: tar.gz
24+
# Linux x86_64 with TUI
25+
- target: x86_64-unknown-linux-gnu
26+
os: ubuntu-latest
27+
archive: tar.gz
28+
features: tui
29+
suffix: -tui
30+
# Linux aarch64
31+
- target: aarch64-unknown-linux-gnu
32+
os: ubuntu-latest
33+
archive: tar.gz
34+
cross: true
35+
# Linux aarch64 with TUI
36+
- target: aarch64-unknown-linux-gnu
37+
os: ubuntu-latest
38+
archive: tar.gz
39+
cross: true
40+
features: tui
41+
suffix: -tui
42+
# macOS x86_64 (Intel)
43+
- target: x86_64-apple-darwin
44+
os: macos-latest
45+
archive: tar.gz
46+
# macOS x86_64 with TUI
47+
- target: x86_64-apple-darwin
48+
os: macos-latest
49+
archive: tar.gz
50+
features: tui
51+
suffix: -tui
52+
# macOS aarch64 (Apple Silicon)
53+
- target: aarch64-apple-darwin
54+
os: macos-latest
55+
archive: tar.gz
56+
# macOS aarch64 with TUI
57+
- target: aarch64-apple-darwin
58+
os: macos-latest
59+
archive: tar.gz
60+
features: tui
61+
suffix: -tui
62+
# Windows x86_64
63+
- target: x86_64-pc-windows-msvc
64+
os: windows-latest
65+
archive: zip
66+
# Windows x86_64 with TUI
67+
- target: x86_64-pc-windows-msvc
68+
os: windows-latest
69+
archive: zip
70+
features: tui
71+
suffix: -tui
72+
73+
steps:
74+
- name: Checkout
75+
uses: actions/checkout@v6
76+
77+
- name: Install Rust toolchain
78+
uses: dtolnay/rust-toolchain@stable
79+
with:
80+
targets: ${{ matrix.target }}
81+
82+
- name: Install cross (for cross-compilation)
83+
if: matrix.cross
84+
run: cargo install cross --git https://github.com/cross-rs/cross
85+
86+
- name: Build binary
87+
shell: bash
88+
run: |
89+
FEATURES="${{ matrix.features }}"
90+
if [ -n "$FEATURES" ]; then
91+
FEATURE_FLAG="--features $FEATURES"
92+
else
93+
FEATURE_FLAG=""
94+
fi
95+
96+
if [ "${{ matrix.cross }}" = "true" ]; then
97+
cross build --release --target ${{ matrix.target }} $FEATURE_FLAG
98+
else
99+
cargo build --release --target ${{ matrix.target }} $FEATURE_FLAG
100+
fi
101+
102+
- name: Prepare artifacts (Unix)
103+
if: runner.os != 'Windows'
104+
shell: bash
105+
run: |
106+
VERSION="${GITHUB_REF#refs/tags/}"
107+
BINARY="govctl"
108+
SUFFIX="${{ matrix.suffix }}"
109+
ARCHIVE_NAME="govctl-${VERSION}-${{ matrix.target }}${SUFFIX}"
110+
111+
mkdir -p "dist/${ARCHIVE_NAME}"
112+
cp "target/${{ matrix.target }}/release/${BINARY}" "dist/${ARCHIVE_NAME}/"
113+
cp README.md LICENSE* "dist/${ARCHIVE_NAME}/" 2>/dev/null || true
114+
115+
cd dist
116+
tar -czvf "${ARCHIVE_NAME}.tar.gz" "${ARCHIVE_NAME}"
117+
echo "ASSET=${ARCHIVE_NAME}.tar.gz" >> $GITHUB_ENV
118+
119+
- name: Prepare artifacts (Windows)
120+
if: runner.os == 'Windows'
121+
shell: pwsh
122+
run: |
123+
$VERSION = $env:GITHUB_REF -replace 'refs/tags/', ''
124+
$SUFFIX = "${{ matrix.suffix }}"
125+
$ARCHIVE_NAME = "govctl-${VERSION}-${{ matrix.target }}${SUFFIX}"
126+
127+
New-Item -ItemType Directory -Force -Path "dist\${ARCHIVE_NAME}"
128+
Copy-Item "target\${{ matrix.target }}\release\govctl.exe" "dist\${ARCHIVE_NAME}\"
129+
Copy-Item README.md, LICENSE* -Destination "dist\${ARCHIVE_NAME}\" -ErrorAction SilentlyContinue
130+
131+
Compress-Archive -Path "dist\${ARCHIVE_NAME}" -DestinationPath "dist\${ARCHIVE_NAME}.zip"
132+
echo "ASSET=${ARCHIVE_NAME}.zip" >> $env:GITHUB_ENV
133+
134+
- name: Upload artifact
135+
uses: actions/upload-artifact@v4
136+
with:
137+
name: ${{ env.ASSET }}
138+
path: dist/${{ env.ASSET }}
139+
retention-days: 1
140+
141+
# Create GitHub release with all artifacts
142+
release:
143+
name: Create Release
144+
needs: build
145+
runs-on: ubuntu-latest
146+
permissions:
147+
contents: write
148+
149+
steps:
150+
- name: Checkout
151+
uses: actions/checkout@v6
152+
153+
- name: Download all artifacts
154+
uses: actions/download-artifact@v7
155+
with:
156+
path: artifacts
157+
merge-multiple: true
158+
159+
- name: List artifacts
160+
run: ls -la artifacts/
161+
162+
- name: Extract version
163+
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
164+
165+
- name: Create Release
166+
uses: softprops/action-gh-release@v2
167+
with:
168+
name: ${{ env.VERSION }}
169+
draft: false
170+
prerelease: ${{ contains(github.ref, '-alpha') || contains(github.ref, '-beta') || contains(github.ref, '-rc') }}
171+
generate_release_notes: true
172+
files: artifacts/*
173+
env:
174+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -5,69 +5,70 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased]
8+
## [0.1.0] - 2026-01-18
99

1010
### Added
1111

12-
- README only references RFCs that actually exist (WI-2026-01-17-019)
13-
- New E08xx diagnostic codes for CLI/command errors (WI-2026-01-18-001)
14-
- Extended E01xx-E04xx codes for lifecycle operations (WI-2026-01-18-001)
15-
- All existing tests pass (WI-2026-01-17-018)
16-
- Move to done rejects if acceptance_criteria is empty (WI-2026-01-17-018)
17-
- Error message suggests how to add criteria (WI-2026-01-17-018)
12+
- Multi-line criterion:
13+
- First condition
14+
- Second condition (WI-2026-01-17-001)
15+
- Test criterion (WI-2026-01-17-001)
16+
- `new rfc "Title"` auto-generates RFC-ID (WI-2026-01-17-002)
17+
- `new rfc --id RFC-XXXX "Title"` allows manual ID with collision check (WI-2026-01-17-002)
18+
- `new work` generates unique IDs (no collisions) (WI-2026-01-17-002)
19+
- `edit --stdin` works (renamed from --text-stdin) (WI-2026-01-17-002)
20+
- `set <ID> <FIELD> --stdin` reads value from stdin (WI-2026-01-17-002)
21+
- `new work --active "Title"` creates active work item (WI-2026-01-17-002)
22+
- Work Item schema supports structured `acceptance_criteria` with status (WI-2026-01-17-002)
23+
- Work Item schema supports structured `decisions` with status (WI-2026-01-17-002)
24+
- ADR schema supports `alternatives` array with status (WI-2026-01-17-002)
25+
- Markdown renderer shows checkboxes (pending=unchecked, done=checked, cancelled=strikethrough) (WI-2026-01-17-002)
26+
- `tick` command updates checklist item status (WI-2026-01-17-002)
27+
- Validation blocks move to done if pending acceptance criteria exist (WI-2026-01-17-002)
28+
- TUI launches with govctl tui command (WI-2026-01-17-003)
29+
- Dashboard shows RFC/ADR/Work item counts by status (WI-2026-01-17-003)
30+
- List views for RFC/ADR/Work with j/k navigation (WI-2026-01-17-003)
31+
- Detail views show full content (WI-2026-01-17-003)
32+
- Feature-gated behind --features tui (WI-2026-01-17-003)
1833
- Clause kind enum has only 'normative' and 'informative' (WI-2026-01-17-004)
1934
- ADR status enum includes 'rejected' (WI-2026-01-17-004)
2035
- Work Item lifecycle allows queue to cancelled transition (WI-2026-01-17-004)
2136
- RFC status×phase rules documented in SCHEMA.md (WI-2026-01-17-004)
2237
- govctl reject command to reject ADR proposals (WI-2026-01-17-004)
2338
- is_valid_adr_transition allows proposed to rejected (WI-2026-01-17-004)
24-
- `Release` and `ReleasesFile` models in model.rs with version, date, and refs fields (WI-2026-01-17-030)
25-
- Load and save `gov/releases.toml` functionality with semver validation (WI-2026-01-17-030)
26-
- `govctl release <version>` command to cut releases (WI-2026-01-17-030)
27-
- `govctl render changelog` command with Keep a Changelog format (WI-2026-01-17-030)
28-
- Add `category` field to `ChecklistItem` with default `Added` (WI-2026-01-17-029)
29-
- Update `add acceptance_criteria` command to parse prefixes per [[ADR-0012]] (WI-2026-01-17-029)
30-
- ChangelogEntry model uses Keep a Changelog categories (WI-2026-01-17-008)
31-
- Changelog renders with Added/Changed/Fixed/etc sections (WI-2026-01-17-008)
32-
- RFC-0000 migrated to new format (WI-2026-01-17-008)
33-
- Refs in ADRs render as markdown links (WI-2026-01-17-007)
34-
- Refs in Work Items render as markdown links (WI-2026-01-17-007)
35-
- Clause refs link to RFC file with anchor (WI-2026-01-17-007)
36-
- Parse prefix from change string (add:, fix:, changed:, deprecated:, removed:, security:) (WI-2026-01-17-028)
37-
- Route changes to correct changelog category based on prefix (WI-2026-01-17-028)
38-
- Validate unknown prefixes with helpful error message (WI-2026-01-17-028)
39-
- Default to added category when no prefix (WI-2026-01-17-028)
40-
- Add SourceScanConfig to config.rs with enabled, roots, exts, pattern fields (WI-2026-01-17-024)
41-
- Add E0107SourceRefUnknown and W0107SourceRefOutdated diagnostic codes (WI-2026-01-17-024)
42-
- Create scan.rs with scan_source_refs function (WI-2026-01-17-024)
43-
- Integrate scanner into check command (WI-2026-01-17-024)
44-
- Add concrete Before/After example (WI-2026-01-17-020)
45-
- Add visual workflow diagram (WI-2026-01-17-020)
46-
- Add Who This Is For section (WI-2026-01-17-020)
47-
- Soften Contributing section tone (WI-2026-01-17-020)
48-
- TUI launches with govctl tui command (WI-2026-01-17-003)
49-
- Dashboard shows RFC/ADR/Work item counts by status (WI-2026-01-17-003)
50-
- List views for RFC/ADR/Work with j/k navigation (WI-2026-01-17-003)
51-
- Detail views show full content (WI-2026-01-17-003)
52-
- Feature-gated behind --features tui (WI-2026-01-17-003)
5339
- Add src/signature.rs with deterministic hash computation (WI-2026-01-17-005)
5440
- Rendered markdown includes SIGNATURE comment (WI-2026-01-17-005)
5541
- govctl check validates signatures (WI-2026-01-17-005)
5642
- SCHEMA.md documents signature format (WI-2026-01-17-005)
57-
- Fix tick command syntax to use -s flag (WI-2026-01-17-022)
43+
- ADR refs field validates that referenced artifacts exist (WI-2026-01-17-006)
44+
- Work Item refs field validates that referenced artifacts exist (WI-2026-01-17-006)
45+
- govctl check reports diagnostics for invalid refs (WI-2026-01-17-006)
46+
- Refs in ADRs render as markdown links (WI-2026-01-17-007)
47+
- Refs in Work Items render as markdown links (WI-2026-01-17-007)
48+
- Clause refs link to RFC file with anchor (WI-2026-01-17-007)
49+
- ChangelogEntry model uses Keep a Changelog categories (WI-2026-01-17-008)
50+
- Changelog renders with Added/Changed/Fixed/etc sections (WI-2026-01-17-008)
51+
- RFC-0000 migrated to new format (WI-2026-01-17-008)
5852
- Create ui module with color helpers (WI-2026-01-17-009)
5953
- Success messages display in green (WI-2026-01-17-009)
6054
- Error messages display in red (WI-2026-01-17-009)
6155
- File paths and IDs highlighted (WI-2026-01-17-009)
56+
- Add insta and insta-cmd as dev dependencies (WI-2026-01-17-015)
57+
- Create minimal test fixtures for valid and invalid governance states (WI-2026-01-17-015)
58+
- Implement test harness with path normalization and color stripping (WI-2026-01-17-015)
59+
- Add snapshot tests for check, list, and status commands (WI-2026-01-17-015)
6260
- Remove decisions field from WorkItemContent struct (WI-2026-01-17-017)
6361
- Change notes field from String to `Vec<String>` (WI-2026-01-17-017)
6462
- Migrate existing work items to new schema (WI-2026-01-17-017)
6563
- Update new work item template (WI-2026-01-17-017)
66-
- ADR refs field validates that referenced artifacts exist (WI-2026-01-17-006)
67-
- Work Item refs field validates that referenced artifacts exist (WI-2026-01-17-006)
68-
- govctl check reports diagnostics for invalid refs (WI-2026-01-17-006)
69-
- All work items have meaningful descriptions (WI-2026-01-17-026)
70-
- No W0108 warnings from govctl check (WI-2026-01-17-026)
64+
- All existing tests pass (WI-2026-01-17-018)
65+
- Move to done rejects if acceptance_criteria is empty (WI-2026-01-17-018)
66+
- Error message suggests how to add criteria (WI-2026-01-17-018)
67+
- README only references RFCs that actually exist (WI-2026-01-17-019)
68+
- Add concrete Before/After example (WI-2026-01-17-020)
69+
- Add visual workflow diagram (WI-2026-01-17-020)
70+
- Add Who This Is For section (WI-2026-01-17-020)
71+
- Soften Contributing section tone (WI-2026-01-17-020)
7172
- Fix tick command syntax (use -s flag) (WI-2026-01-17-021)
7273
- Fix work item paths (gov/work/ not worklogs/items/) (WI-2026-01-17-021)
7374
- Fix new rfc syntax (--id flag) (WI-2026-01-17-021)
@@ -76,42 +77,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7677
- Add --active flag for new work (WI-2026-01-17-021)
7778
- Reduce multi-line input section verbosity (WI-2026-01-17-021)
7879
- Add acceptance criteria setup in Phase 1 (WI-2026-01-17-021)
80+
- Fix tick command syntax to use -s flag (WI-2026-01-17-022)
81+
- Add refs field to RfcSpec model (WI-2026-01-17-023)
82+
- Validate RFC refs against known artifacts (WI-2026-01-17-023)
83+
- Add diagnostic code for RFC ref not found (WI-2026-01-17-023)
84+
- Support add/remove/get refs for RFCs in edit commands (WI-2026-01-17-023)
85+
- Add SourceScanConfig to config.rs with enabled, roots, exts, pattern fields (WI-2026-01-17-024)
86+
- Add E0107SourceRefUnknown and W0107SourceRefOutdated diagnostic codes (WI-2026-01-17-024)
87+
- Create scan.rs with scan_source_refs function (WI-2026-01-17-024)
88+
- Integrate scanner into check command (WI-2026-01-17-024)
7989
- Add warning diagnostic for placeholder descriptions (WI-2026-01-17-025)
8090
- Detect common placeholder patterns (WI-2026-01-17-025)
91+
- All work items have meaningful descriptions (WI-2026-01-17-026)
92+
- No W0108 warnings from govctl check (WI-2026-01-17-026)
8193
- Add `expand_inline_refs()` function using source_scan pattern (WI-2026-01-17-027)
8294
- Apply expansion to ADR content fields (context, decision, consequences) (WI-2026-01-17-027)
8395
- Apply expansion to work item content fields (description, notes, acceptance_criteria) (WI-2026-01-17-027)
84-
- `new rfc "Title"` auto-generates RFC-ID (WI-2026-01-17-002)
85-
- `new rfc --id RFC-XXXX "Title"` allows manual ID with collision check (WI-2026-01-17-002)
86-
- `new work` generates unique IDs (no collisions) (WI-2026-01-17-002)
87-
- `edit --stdin` works (renamed from --text-stdin) (WI-2026-01-17-002)
88-
- `set <ID> <FIELD> --stdin` reads value from stdin (WI-2026-01-17-002)
89-
- `new work --active "Title"` creates active work item (WI-2026-01-17-002)
90-
- Work Item schema supports structured `acceptance_criteria` with status (WI-2026-01-17-002)
91-
- Work Item schema supports structured `decisions` with status (WI-2026-01-17-002)
92-
- ADR schema supports `alternatives` array with status (WI-2026-01-17-002)
93-
- Markdown renderer shows checkboxes (pending=unchecked, done=checked, cancelled=strikethrough) (WI-2026-01-17-002)
94-
- `tick` command updates checklist item status (WI-2026-01-17-002)
95-
- Validation blocks move to done if pending acceptance criteria exist (WI-2026-01-17-002)
96-
- Add refs field to RfcSpec model (WI-2026-01-17-023)
97-
- Validate RFC refs against known artifacts (WI-2026-01-17-023)
98-
- Add diagnostic code for RFC ref not found (WI-2026-01-17-023)
99-
- Support add/remove/get refs for RFCs in edit commands (WI-2026-01-17-023)
100-
- Multi-line criterion:
101-
- First condition
102-
- Second condition (WI-2026-01-17-001)
103-
- Test criterion (WI-2026-01-17-001)
104-
- Add insta and insta-cmd as dev dependencies (WI-2026-01-17-015)
105-
- Create minimal test fixtures for valid and invalid governance states (WI-2026-01-17-015)
106-
- Implement test harness with path normalization and color stripping (WI-2026-01-17-015)
107-
- Add snapshot tests for check, list, and status commands (WI-2026-01-17-015)
96+
- Parse prefix from change string (add:, fix:, changed:, deprecated:, removed:, security:) (WI-2026-01-17-028)
97+
- Route changes to correct changelog category based on prefix (WI-2026-01-17-028)
98+
- Validate unknown prefixes with helpful error message (WI-2026-01-17-028)
99+
- Default to added category when no prefix (WI-2026-01-17-028)
100+
- Add `category` field to `ChecklistItem` with default `Added` (WI-2026-01-17-029)
101+
- Update `add acceptance_criteria` command to parse prefixes per [[ADR-0012]] (WI-2026-01-17-029)
102+
- `Release` and `ReleasesFile` models in model.rs with version, date, and refs fields (WI-2026-01-17-030)
103+
- Load and save `gov/releases.toml` functionality with semver validation (WI-2026-01-17-030)
104+
- `govctl release <version>` command to cut releases (WI-2026-01-17-030)
105+
- `govctl render changelog` command with Keep a Changelog format (WI-2026-01-17-030)
106+
- New E08xx diagnostic codes for CLI/command errors (WI-2026-01-18-001)
107+
- Extended E01xx-E04xx codes for lifecycle operations (WI-2026-01-18-001)
108108

109109
### Changed
110110

111-
- All anyhow::bail! calls converted to Diagnostic errors (WI-2026-01-18-001)
112111
- Consolidate `ChangelogCategory` enum into `model.rs` with `from_prefix` method (WI-2026-01-17-029)
113112
- Update `work.schema.toml` with category field documentation (WI-2026-01-17-029)
114113
- Update work template with category field documentation (WI-2026-01-17-029)
114+
- All anyhow::bail! calls converted to Diagnostic errors (WI-2026-01-18-001)
115115

116116
### Fixed
117117

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ govctl governs itself by its own rules. This repository is the first proof.
8989
# Install
9090
cargo install govctl
9191

92+
# Or with TUI dashboard
93+
cargo install govctl --features tui
94+
9295
# Initialize project
9396
govctl init
9497

0 commit comments

Comments
 (0)