Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
18f062e
Add full ADR and DDD documentation set
claude May 9, 2026
1f50f70
Ignore Claude Code harness worktree directory
claude May 10, 2026
06e8bcc
Clean up TypeScript leftovers and dead binaries
claude May 10, 2026
a0d5ac4
Introduce layered module skeleton (M1)
claude May 10, 2026
4fbb83f
Land domain value objects and boundary translation (M2)
claude May 10, 2026
b26a2e5
Mark M0/M1/M2 acceptance in roadmap
claude May 10, 2026
52fa68f
Enable tokio-util sync feature for CancellationToken
claude May 10, 2026
9b17eb0
Add GitHub Actions CI and release workflows
claude May 10, 2026
5580b3f
Add HttpEngine port and ReqwestEngine adapter
claude May 10, 2026
4bab2d3
Add MockHttpEngine for use-case testing
claude May 10, 2026
9b24a01
Snapshot: MockHttpEngine and wiremock integration tests (WIP, M3)
claude May 10, 2026
4968178
Mark M3 acceptance in roadmap
claude May 10, 2026
fb20b17
Add SendRequest application service
claude May 10, 2026
78bd0fa
Add AppRuntime worker harness with cancellation
claude May 10, 2026
7e4772c
Rewire RequesterApp to use AppRuntime and add Cancel button
claude May 10, 2026
2380101
Mark M4 acceptance in roadmap
claude May 10, 2026
583d495
Snapshot: M5 history domain types in progress
claude May 10, 2026
f2cfaaa
Wrap up M5 at a green checkpoint: domain layer only
claude May 12, 2026
c7b9c3a
Add SystemClock and UuidV4Generator infrastructure adapters
claude May 12, 2026
f1d7c23
Add DirectoriesProvider and DataDirectories trait
claude May 12, 2026
cee30da
Add JsonlHistoryRepository persistence adapter
claude May 12, 2026
a7df9f6
Wire HistoryRecorder into SendRequest and AppRuntime
claude May 12, 2026
5e9dd6a
Add History panel and Recall flow to RequesterApp
claude May 12, 2026
463bf58
Add integration tests for M5 history persistence
claude May 12, 2026
40c6c36
Mark M5 acceptance in roadmap
claude May 12, 2026
be0c544
Snapshot: M6 settings domain skeleton in progress
claude May 12, 2026
23c35b3
Add Settings domain types and SettingsRepository trait
claude May 12, 2026
53bd83e
Add UpdateSettings application service
claude May 12, 2026
628331c
Add JsonSettingsRepository adapter
claude May 12, 2026
dfab4d0
Wire default headers and timeout from Settings into SendRequest
claude May 12, 2026
4b3a184
Add Settings panel to RequesterApp
claude May 12, 2026
ac55e38
Add integration tests for settings persistence and defaults
claude May 12, 2026
8242feb
Mark M6 acceptance in roadmap
claude May 12, 2026
f67cde9
Add Secret Vault domain types and trait
claude May 12, 2026
70bd515
Add KeyringSecretVault and InMemorySecretVault adapters
claude May 12, 2026
ecbe53c
Add Collections domain types (Variable, Auth, Template, Collection)
claude May 12, 2026
3075465
Add CollectionRepository trait and JsonCollectionRepository adapter
claude May 12, 2026
3d5881d
Add SaveTemplate, RunTemplate, and Manage Collection use cases
claude May 12, 2026
c45b2c5
Add Collections sidebar and template editor to RequesterApp
claude May 12, 2026
d91c6a4
Add integration tests for collections persistence and secret redaction
claude May 12, 2026
b3d9c96
Add integration test for template run end-to-end
claude May 12, 2026
d5943d2
Mark M7 acceptance in roadmap
claude May 12, 2026
f4c814d
Add DomainEvent and EventPublisher port
claude May 12, 2026
4c6a8ec
Add BroadcastEventPublisher and NoopEventPublisher
claude May 12, 2026
f799b50
Wire publishers through every use case
claude May 12, 2026
e288d40
Add UI event bridge: DomainEvent to AppEvent forwarder
claude May 12, 2026
987d3e8
Add RetentionScheduler subscriber for HistoryEntryRecorded
claude May 12, 2026
023cfd4
Mark M8 acceptance in roadmap
claude May 12, 2026
871e61d
Audit and tighten tracing instrumentation across use cases
claude May 12, 2026
f3737f0
Record performance baseline in benches/BASELINE.md
claude May 12, 2026
79eef59
Emit debug symbol bundles in release workflow
claude May 12, 2026
d0f38cb
Rewrite README to match the current implementation
claude May 12, 2026
f6821a2
Delete legacy reports, transition shim, and rewrite CLAUDE.md
claude May 12, 2026
d27ce52
Flip ADR-0009/0014/0015 from Proposed to Accepted
claude May 12, 2026
94046f3
Scope CI bench step to the two known benches
claude May 12, 2026
576243f
Add accessibility notes and close keyboard paper-cuts
claude May 12, 2026
2da917e
Apply workspace-wide cargo fmt and fix bench clippy lint
claude May 12, 2026
f66c5c3
Drop accidentally-committed *.profraw and ignore them in future
claude May 12, 2026
dea1291
Mark M9 acceptance in roadmap
claude May 12, 2026
9f00f91
Add validation report and use case guide; refresh README for v0.1.0-a…
claude May 23, 2026
ec446db
Add runnable acceptance demo and functional acceptance report
claude May 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: CI

on:
push:
branches:
- "**"
pull_request:
branches:
- "**"

permissions:
contents: read

jobs:
build-test:
name: Build, lint and test
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install egui system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libgl1-mesa-dev \
libegl1-mesa-dev \
libssl-dev \
libx11-dev \
libfontconfig1-dev \
libfreetype6-dev \
pkg-config

- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt

- name: Cache cargo registry, git index and target/
uses: Swatinem/rust-cache@v2

- name: Check formatting
run: cargo fmt --all -- --check

# Workspace-wide clippy mirrors the per-target gate the
# contributor workflow uses; `--all-targets` covers benches too
# so domain-type drift breaks CI before it reaches a release.
- name: Run clippy
run: cargo clippy --all-targets -- -D warnings

- name: Build all targets
run: cargo build --all-targets --locked

- name: Run tests
run: cargo test --all-targets --locked

# Bench-compile gate: full runs are manual (recorded baseline is
# in `benches/BASELINE.md`) but the benches must keep compiling
# so they don't rot.
- name: Compile benchmarks (no run)
run: cargo bench --no-run --locked --bench http_performance --bench ui_performance
202 changes: 202 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
name: Release

on:
push:
tags:
- "v*.*.*"

permissions:
contents: write

jobs:
linux-x86_64:
name: Build linux-x86_64
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install egui system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libgl1-mesa-dev \
libegl1-mesa-dev \
libssl-dev \
libx11-dev \
libfontconfig1-dev \
libfreetype6-dev \
pkg-config

- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache cargo registry, git index and target/
uses: Swatinem/rust-cache@v2
with:
key: release-linux-x86_64

- name: Build release binary
run: cargo build --release --locked --bin requester

# ADR-0013: the release profile sets `strip = true`, so the
# shipped binary has no debug info. Split the debug bundle out
# before stripping so panics from a released binary can still be
# symbolicated. `objcopy --only-keep-debug` produces a sibling
# file containing just the .debug_* sections.
- name: Extract debug symbols
run: |
objcopy --only-keep-debug target/release/requester target/release/requester.debug
strip target/release/requester
objcopy --add-gnu-debuglink=target/release/requester.debug target/release/requester

- name: Upload binary artefact
uses: actions/upload-artifact@v4
with:
name: requester-linux-x86_64
path: target/release/requester
if-no-files-found: error

- name: Upload debug-symbols artefact
uses: actions/upload-artifact@v4
with:
name: requester-linux-x86_64-debug
path: target/release/requester.debug
if-no-files-found: error

macos-aarch64:
name: Build macos-aarch64
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin

- name: Cache cargo registry, git index and target/
uses: Swatinem/rust-cache@v2
with:
key: release-macos-aarch64

- name: Build release binary
run: cargo build --release --locked --bin requester --target aarch64-apple-darwin

# ADR-0013: dsymutil produces a `.dSYM` bundle of debug info we
# can ship alongside the stripped binary so crash logs can be
# symbolicated post-release.
- name: Extract dSYM and strip binary
run: |
dsymutil target/aarch64-apple-darwin/release/requester \
-o target/aarch64-apple-darwin/release/requester.dSYM
strip target/aarch64-apple-darwin/release/requester

- name: Upload binary artefact
uses: actions/upload-artifact@v4
with:
name: requester-macos-aarch64
path: target/aarch64-apple-darwin/release/requester
if-no-files-found: error

- name: Upload dSYM bundle
uses: actions/upload-artifact@v4
with:
name: requester-macos-aarch64-dSYM
path: target/aarch64-apple-darwin/release/requester.dSYM
if-no-files-found: error

windows-x86_64:
name: Build windows-x86_64
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache cargo registry, git index and target/
uses: Swatinem/rust-cache@v2
with:
key: release-windows-x86_64

- name: Build release binary
run: cargo build --release --locked --bin requester

- name: Upload binary artefact
uses: actions/upload-artifact@v4
with:
name: requester-windows-x86_64
path: target/release/requester.exe
if-no-files-found: error

# ADR-0013: cargo emits the MSVC `.pdb` alongside the binary by
# default; the `strip = true` profile setting strips the binary
# but does not delete the pdb. Upload it so released panics can
# be symbolicated against the matching build.
- name: Upload PDB symbols
uses: actions/upload-artifact@v4
with:
name: requester-windows-x86_64-pdb
path: target/release/requester.pdb
if-no-files-found: error

release:
name: Publish GitHub Release
needs:
- linux-x86_64
- macos-aarch64
- windows-x86_64
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download all artefacts
uses: actions/download-artifact@v4
with:
path: artefacts

- name: Stage release assets
run: |
mkdir -p release-assets
cp artefacts/requester-linux-x86_64/requester release-assets/requester-linux-x86_64
cp artefacts/requester-linux-x86_64-debug/requester.debug release-assets/requester-linux-x86_64.debug
cp artefacts/requester-macos-aarch64/requester release-assets/requester-macos-aarch64
# `requester.dSYM` is a directory bundle; tar it for upload.
tar -C artefacts/requester-macos-aarch64-dSYM -czf \
release-assets/requester-macos-aarch64.dSYM.tar.gz .
cp artefacts/requester-windows-x86_64/requester.exe release-assets/requester-windows-x86_64.exe
cp artefacts/requester-windows-x86_64-pdb/requester.pdb release-assets/requester-windows-x86_64.pdb
ls -l release-assets

- name: Create draft release with binaries
uses: softprops/action-gh-release@v2
with:
draft: true
files: release-assets/*
fail_on_unmatched_files: true
body: |
## Requester ${{ github.ref_name }}

Binaries for Linux x86_64, macOS aarch64, and Windows x86_64.

### Symbolicating panics from a released binary

The shipped binaries are stripped of debug info (per
[ADR-0013](https://github.com/${{ github.repository }}/blob/${{ github.ref_name }}/docs/adr/0013-build-and-release-profiles.md))
to keep the download small. The matching debug-symbol
bundles are attached alongside each platform binary:

- `requester-linux-x86_64.debug` — split debug-info file
produced by `objcopy --only-keep-debug`. Pair with
`gdb` / `addr2line` / `lldb` for line-level traces.
- `requester-macos-aarch64.dSYM.tar.gz` — extract and pair
with `lldb` / `atos` / `symbolicatecrash`.
- `requester-windows-x86_64.pdb` — MSVC PDB. Pair with
`WinDbg` / Visual Studio.

Match the symbol file against the exact binary version the
crash came from — the build IDs must agree.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@

# Claude Code harness internals (worktrees for isolated sub-agents, etc.)
.claude/worktrees/

# Claude Flow generated files
.claude/settings.local.json
.mcp.json
Expand Down Expand Up @@ -27,3 +30,7 @@ claude-flow
hive-mind-prompt-*.txt
node_modules
target/

# `cargo test --instrument-coverage` (and some toolchains by default)
# scatter these at the workspace root. Don't ever commit them.
*.profraw
Loading
Loading