]> quire.kejadlen.dev Git - quire.git/log
quire.git
2 days agoSet RANGER_DEFAULT_BACKLOG in ramekin Dockerfile
Alpha Chen [Sat, 25 Apr 2026 14:52:38 +0000 (14:52 +0000)]
Set RANGER_DEFAULT_BACKLOG in ramekin Dockerfile

Assisted-by: GLM-5.1 via pi
2 days agoExtract Repo struct wrapping a resolved path
Alpha Chen [Sat, 25 Apr 2026 14:38:19 +0000 (14:38 +0000)]
Extract Repo struct wrapping a resolved path

Gives commands a typed handle instead of a bare PathBuf, with room to
add methods later.

Assisted-by: GLM-5.1 via pi
2 days agoAdd ramekin Dockerfile with Rust toolchain
Alpha Chen [Sat, 25 Apr 2026 14:15:36 +0000 (14:15 +0000)]
Add ramekin Dockerfile with Rust toolchain

Installs the packages needed to run justfile targets (fmt, clippy,
test, coverage) inside the ramekin container.

Assisted-by: GLM-5.1 via pi
2 days agoExtract Quire struct to replace Repo and Config threading
Alpha Chen [Sat, 25 Apr 2026 14:10:21 +0000 (07:10 -0700)]
Extract Quire struct to replace Repo and Config threading

Repo was a thin validated-name wrapper that required callers to pass
repos_dir alongside it at every call site. Quire holds the config and
provides repo() -> PathBuf and repos() -> Iterator, collapsing two
arguments into one at every command handler.

Assisted-by: GLM-5.1 via pi
2 days agoStrengthen pre-commit requirement in AGENTS.md
Alpha Chen [Sat, 25 Apr 2026 14:05:04 +0000 (14:05 +0000)]
Strengthen pre-commit requirement in AGENTS.md

Assisted-by: GLM-5.1 via pi
2 days agoInline repo submodules and add Repo::exists
Alpha Chen [Sat, 25 Apr 2026 14:00:32 +0000 (07:00 -0700)]
Inline repo submodules and add Repo::exists

Collapsed commands/repo/{new,list,rm}.rs into a single repo.rs. Added
Repo::exists() so callers don't need to construct paths just to check.

Assisted-by: GLM-5.1 via pi
2 days agoExtract Repo struct to unify path validation
Alpha Chen [Sat, 25 Apr 2026 13:56:41 +0000 (06:56 -0700)]
Extract Repo struct to unify path validation

All repo name validation now goes through Repo::from_name(). The exec
command strips the SSH leading slash before calling it, keeping the
Repo type focused on name rules only. Removed the duplicate
validate_repo_path function from exec.rs.

Assisted-by: GLM-5.1 via pi
2 days agoAdd repo management subcommands (new, list, rm)
Alpha Chen [Sat, 25 Apr 2026 13:47:49 +0000 (06:47 -0700)]
Add repo management subcommands (new, list, rm)

New `quire repo` subcommand group with new/list/rm. Name validation
rejects traversal, deep nesting, missing .git suffix, and reserved
segments (.git). The exec allowlist dispatches `quire repo` to the
binary. Post-receive hook is configured system-wide via gitconfig
instead of per-repo.

Assisted-by: GLM-5.1 via pi
2 days agoSwitch base images from bookworm to trixie
Alpha Chen [Sat, 25 Apr 2026 13:45:27 +0000 (13:45 +0000)]
Switch base images from bookworm to trixie

Trixie ships newer packages overall. Git still needs building from
source (trixie has 2.47, we need 2.54+) but trixie is a better
foundation going forward.

Assisted-by: GLM-5.1 via pi
2 days agoRestrict hook subcommand to HookName enum
Alpha Chen [Sat, 25 Apr 2026 13:36:03 +0000 (06:36 -0700)]
Restrict hook subcommand to HookName enum

Only post-receive is allowed for now; clap rejects anything else at
parse time. Easy to extend with more variants later.

Assisted-by: GLM-5.1 via pi
2 days agoBuild git 2.54 from source and add hook subcommand
Alpha Chen [Sat, 25 Apr 2026 04:44:53 +0000 (04:44 +0000)]
Build git 2.54 from source and add hook subcommand

Debian bookworm ships git 2.39 but we need 2.54+ for
hook.<name>.command config support, which lets quire register
hooks via git config instead of writing shim scripts to disk.

The hook subcommand is a no-op that logs invocations — enough to
verify the dispatch path works end-to-end.

Assisted-by: GLM-5.1 via pi
2 days agoNote ranger as task manager in AGENTS.md
Alpha Chen [Sat, 25 Apr 2026 04:37:53 +0000 (04:37 +0000)]
Note ranger as task manager in AGENTS.md

Assisted-by: GLM-5.1 via pi
2 days agoRun container as host uid/gid
Alpha Chen [Sat, 25 Apr 2026 02:41:05 +0000 (19:41 -0700)]
Run container as host uid/gid

Bind-mounted repos under /var/quire are owned by the host's git user;
baking a quire user with a different uid into the image triggered
git's safe.directory "dubious ownership" check. Setting the user at
docker run time keeps ownership aligned end-to-end.

Assisted-by: Claude Opus 4.7 via Claude Code
3 days agoStub HTTP server in quire serve
Alpha Chen [Fri, 24 Apr 2026 17:28:39 +0000 (17:28 +0000)]
Stub HTTP server in quire serve

Prevents the Docker container from restarting in a loop by binding
an HTTP listener on port 3000 with /health and / endpoints.

Assisted-by: GLM-5.1 via pi
3 days agoFix typo in docker/login-action pinned SHA
Alpha Chen [Fri, 24 Apr 2026 15:29:24 +0000 (15:29 +0000)]
Fix typo in docker/login-action pinned SHA

The SHA for v4.1.0 had a transposed digit (7398 → 7399) which
caused GitHub Actions to fail resolving the action reference.

Assisted-by: GLM-5.1 via pi
3 days agoTrim AGENTS.md to just pre-commit rule only
Alpha Chen [Fri, 24 Apr 2026 15:18:21 +0000 (15:18 +0000)]
Trim AGENTS.md to just pre-commit rule only

Clippy and miette conventions are already enforced by tooling.
Use "just all" instead of "cargo test" since the justfile is
the canonical check runner.

Assisted-by: GLM-5.1 via pi
3 days agoAdd project AGENTS.md and remove unused miette import
Alpha Chen [Fri, 24 Apr 2026 14:35:34 +0000 (14:35 +0000)]
Add project AGENTS.md and remove unused miette import

Assisted-by: GLM-5.1 via pi
3 days agoSimplify Config to Default and use miette bail/ensure macros
Alpha Chen [Fri, 24 Apr 2026 13:38:10 +0000 (13:38 +0000)]
Simplify Config to Default and use miette bail/ensure macros

Config::load() with env var parsing was premature. Default impl is
enough for now. Switch exec.rs from if/return Err(miette!) to
ensure! and bail! for idiomatic miette usage.

Assisted-by: GLM-5.1 via pi
3 days agoExtract Config struct for shared app configuration
Alpha Chen [Fri, 24 Apr 2026 13:31:19 +0000 (06:31 -0700)]
Extract Config struct for shared app configuration

Multiple commands need the repos directory path. A Config struct
centralizes the default and lets QUIRE_REPOS_DIR override it.

Assisted-by: GLM-5.1 via pi
3 days agoSwitch from color-eyre to miette for error reporting
Alpha Chen [Fri, 24 Apr 2026 13:27:33 +0000 (06:27 -0700)]
Switch from color-eyre to miette for error reporting

Miette provides better diagnostic output and integrates with thiserror
via the Diagnostic derive. Library errors now derive both Error and
Diagnostic. Binary uses miette::Result with into_diagnostic() for
third-party errors.

Assisted-by: GLM-5.1 via pi
3 days agoImplement quire exec dispatch with git command allowlist
Alpha Chen [Fri, 24 Apr 2026 04:05:42 +0000 (04:05 +0000)]
Implement quire exec dispatch with git command allowlist

Parses SSH_ORIGINAL_COMMAND, validates git commands against an
allowlist (receive-pack, upload-pack, upload-archive), sanitizes
repo paths, and execs the git subprocess. Removes the separate
quire-dispatch shell script — the binary handles dispatch directly.
Updates host reference configs to use quire exec in ForceCommand.

Assisted-by: GLM-5.1 via pi
3 days agoComment out coverage and mutation testing in CI
Alpha Chen [Fri, 24 Apr 2026 04:00:24 +0000 (04:00 +0000)]
Comment out coverage and mutation testing in CI

Disabled during early exploratory work — not enough library code
to meaningfully measure yet.

Assisted-by: GLM-5.1 via pi
3 days agoReplace binary release with Docker image build and push
Alpha Chen [Fri, 24 Apr 2026 00:01:59 +0000 (00:01 +0000)]
Replace binary release with Docker image build and push

Multi-stage Dockerfile builds the Rust binary then copies it into a
slim runtime image with git and ca-certificates. CI workflow follows
the ketchup pattern: single ci.yml with test, zizmor, and build jobs.
Build pushes to GHCR on green main, tags with YYYYMMDD-<short-sha>,
and creates a GitHub release. Removes the old release workflow and
dotslash config.

Assisted-by: GLM-5.1 via pi
3 days agoAdd host-side reference configs for SSH dispatch
Alpha Chen [Thu, 23 Apr 2026 23:57:07 +0000 (23:57 +0000)]
Add host-side reference configs for SSH dispatch

sshd_config Match block, quire-dispatch script with repo path
validation and git-command allowlist, and a README covering setup
steps. These are reference configs versioned with the repo — the
dispatch script will be replaced by quire exec in step 2.

Assisted-by: GLM-5.1 via pi
3 days agoAdd Dockerfile for step 1 host-mediated dispatch
Alpha Chen [Thu, 23 Apr 2026 23:51:20 +0000 (16:51 -0700)]
Add Dockerfile for step 1 host-mediated dispatch

Minimal image: debian bookworm, git, quire user, bare test repo
at /var/quire/repos/foo.git. Entrypoint passes through to docker
exec invocations. No sshd, no quire binary yet.

Assisted-by: GLM-5.1 via pi
3 days agoAdd project README and design plan
Alpha Chen [Thu, 23 Apr 2026 21:14:45 +0000 (14:14 -0700)]
Add project README and design plan

Assisted-by: GLM-5.1 via pi
3 days agoScaffold Rust binary project with clap, CI, and tooling
Alpha Chen [Thu, 23 Apr 2026 21:14:45 +0000 (14:14 -0700)]
Scaffold Rust binary project with clap, CI, and tooling

Restructure from a minimal lib+main into a proper binary project
layout: library target with error types, separate binary target
under src/bin/quire/ with clap subcommands (serve, exec), CalVer
versioning via build.rs, integration tests, justfile, clippy config,
mutation testing config, and GitHub Actions CI/release workflows.

Assisted-by: GLM-5.1 via pi
3 days agoInitialize quire project with Cargo skeleton
Alpha Chen [Thu, 23 Apr 2026 16:16:47 +0000 (09:16 -0700)]
Initialize quire project with Cargo skeleton

Assisted-by: GLM-5.1 via pi