Commit Graph

18 Commits

Author SHA1 Message Date
d34a4f9363 chore(repo): add git-cliff config, sort deps, add rust-version
Some checks failed
Public Repo Readiness / Check Public Repo Readiness (push) Has been cancelled
- Add cliff.toml with GitHub remote wiring, issue link parsers, and
  clean group names (no sort prefixes)
- Add rust-version = "1.87.0" and codegen-units = 1 to workspace
- Sort workspace.dependencies alphabetically; add notstrap path entry
- Add CLAUDE.md preflight block; reformat workspace table to 100-col
- Delete stale brainstorm artifacts and root HANDOFF.md
2026-07-14 10:14:43 -04:00
039f8d808d chore(manifests): sort Cargo.toml dependencies 2026-07-11 22:10:48 -04:00
6427d188e6 feat(notfiles): hexagonal architecture refactor with adapters, integration tests, and notsecrets cleanup
Some checks failed
Public Repo Readiness / Check Public Repo Readiness (push) Has been cancelled
- Extract FileStore port and InMemoryFileStore/FileStoreImpl/Reporter adapters
- Add Reporter trait to notcore with TerminalReporter and JsonReporter
- Refactor linker, package, status modules to use FileStore port
- Add integration test suite with dotfiles fixtures
- Add cross-crate integration tests
- Remove ssh_rsa identity/recipient (unsupported)
- Add rustqual.toml, .sccignore, notfiles.toml config files
- Update CLAUDE.md, README.md, AGENTS.md with current architecture
2026-07-08 13:07:42 -04:00
50ff598684 refactor(notstrap): replace EnvInjector with SecretResolver
Some checks failed
Public Repo Readiness / Check Public Repo Readiness (push) Has been cancelled
Remove the EnvInjector closure and replace with a secrets_config path
that loads notsecrets.toml and uses SecretResolver for env injection.
Existing parse_env_line validation (blocked keys, null bytes) is
preserved in the injection loop.
2026-06-06 09:57:20 -04:00
1359def673 feat(notsecrets): add multi-provider secret resolution system
Some checks failed
Public Repo Readiness / Check Public Repo Readiness (push) Has been cancelled
Add a config-driven, strongly-typed secret/env resolution system to
notsecrets with 11 provider backends. The system supports explicit
key bindings with typed SecretRef enums and a priority chain fallback.

Tier 1 providers (implemented): Env, 1Password, dotenvx, SOPS, GSM
Tier 2 providers (stubbed): nuenv, direnv, mise, Bitwarden, Vault, dotenvy

New types: Provider, ProviderConfig, SecretRef, SecretsConfig,
SecretsError, SecretSource, EnumerableSecretSource, SecretResolver

Config lives in notsecrets.toml with typed serde deserialization.
ISP split: EnumerableSecretSource for backends that support bulk
enumeration, SecretSource for single-key lookup only.

Includes conformance test suite, 33 new tests (161 workspace total).
notstrap EnvInjector migration deferred to follow-up.
2026-06-06 09:49:05 -04:00
Joseph O'Brien
c7c074d48b feat: add notnet crate and YubikeySource, thread Tailscale into notstrap
- New crates/notnet: TailscaleOptions, ensure_connected(), auth key chain
  (TS_AUTHKEY env → YubiKey PIV 9d → interactive prompt), install via
  apt/brew/pacman or official install.sh, peer reachability verification
- notsecrets: YubikeySource implementing IdentitySource, reads age key from
  PIV slot 9c; gated behind optional `yubikey` feature
- notstrap: Tailscale step inserted between prerequisites and clone;
  BootstrapOptions.tailscale controls override/skip; NotstrapConfig gains
  optional [tailscale] section; dotfiles_repo is now Option<String> (Tailscale
  gitea_url takes precedence); identity chain adds YubikeySource before
  Bitwarden
- Updated workspace Cargo.toml: notnet added to members and workspace deps
- Integration tests: tailscale: Some(None) to skip Tailscale in all test opts
2026-04-17 00:01:50 -04:00
Joseph O'Brien
67f20eef2d Refactor: Formalize ports and update related files 2026-04-15 21:27:25 -04:00
Joseph O'Brien
ebb8a5946d refactor(nothooks): make hook runner language-agnostic
Some checks failed
Public Repo Readiness / Check Public Repo Readiness (push) Failing after 6s
Remove hardcoded nu interpreter. HookSpec gains an optional interpreter
field; runner infers from file extension (.sh, .nu, .py, .rb, .zsh,
.bash) when not set. Integration tests now use sh — no nu runtime dep
on CI.
2026-04-04 01:14:29 -04:00
Joseph O'Brien
b5a27108d0 feat(notgraph): heatmap coloring, symbol counts, per-crate module graphs, cycle callouts 2026-04-02 20:53:07 -04:00
Joseph O'Brien
58de007e19 feat(notstrap): migrate to notsecrets age-native API, remove sops shell-out
Replace AgeKeySource/resolve_age_key/install_age_key with IdentitySource/resolve_identities.
Update integration tests to use a valid age bech32 key fixture.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 21:19:23 -04:00
Joseph O'Brien
b4cba74ea3 docs: update HANDOFF.md — age-native redesign progress (tasks 1–7 complete) 2026-04-01 20:58:09 -04:00
Joseph O'Brien
bd06746b31 test(integration): improve cross_crate test clarity
Some checks failed
Public Repo Readiness / Check Public Repo Readiness (push) Failing after 4s
2026-04-01 06:33:34 -04:00
Joseph O'Brien
02c84c32f7 test(integration): add cross-crate boundary tests 2026-04-01 06:32:07 -04:00
Joseph O'Brien
eb1807a8b1 test(integration): improve test clarity with expect() and constants 2026-04-01 05:14:27 -04:00
Joseph O'Brien
dcbbe6c716 test(integration): add bootstrap flow tests via notstrap::run()
Three tests covering the full bootstrap path: dot-hook execution with
symlink verification, setup-hook skip-on-rerun via state file, and
fail-fast behaviour when the age key is missing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 05:11:50 -04:00
Joseph O'Brien
ef052c86cd chore: add integration test crate to workspace 2026-04-01 05:01:42 -04:00
Joseph O'Brien
ed11aa9bc3 feat(workspace): migrate notfiles into crates/ workspace layout
Move src/ and tests/ into crates/notfiles/ as a proper lib+bin crate.
Internal config/error/paths modules replaced with notcore imports.
All 31 workspace tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 17:23:16 -04:00
Joseph O'Brien
929f711cbf Initial commit 2026-03-24 06:43:49 -04:00