Joseph O'Brien
b899198e98
feat(notsecrets): scrypt identity and recipient (passphrase-based)
2026-04-01 20:51:40 -04:00
Joseph O'Brien
6202c5dfe9
feat(notsecrets): X25519 identity and recipient with wrap/unwrap
...
Implements ECDH key wrapping via HKDF-SHA256 + ChaCha20Poly1305,
bech32 encode/decode for age1... recipients and AGE-SECRET-KEY-1... identities.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 20:49:31 -04:00
Joseph O'Brien
2476daafa6
feat(notsecrets): age wire format parser/serializer with unit tests
2026-04-01 20:47:00 -04:00
Joseph O'Brien
34d9e3d677
feat(notsecrets): scaffold age-native domain types and trait ports
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 20:44:05 -04:00
Joseph O'Brien
55d68ee92f
fix: address security findings from devkit-review (#1–#7)
...
notsecrets:
- install_age_key_at: create key file with mode 0600 via OpenOptions,
eliminating TOCTOU window where file was transiently world-readable (#3 )
- sops_args: extract arg-builder and add -- separator before path,
preventing leading-dash flag injection (#2 )
- use .context() instead of .with_context(closure) for string literal (#7 )
notstrap:
- extract parse_env_line: validates env lines before set_var — rejects
null bytes (#4 ) and blocks dangerous keys (LD_PRELOAD, PATH, etc.) (#5 )
- wire parse_env_line into injection loop; errors abort the step cleanly
- correct SAFETY comment: documents single-threaded invariant and notes
that subsequent spawns inherit injected env (#6 )
Tests: 12 new tests covering all fixes; workspace grows from 44 to 56 passing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 15:00:47 -04:00
Joseph O'Brien
403bcc4436
fix: address blocking sentinel findings (unsafe SAFETY comment, unwrap panics)
Public Repo Readiness / Check Public Repo Readiness (push) Failing after 4s
2026-04-01 08:59:28 -04:00
Joseph O'Brien
748a0d8634
fix(notstrap): fix clippy warning and unwrap panics in lib extraction
2026-04-01 05:00:26 -04:00
Joseph O'Brien
1545a913c5
refactor(notstrap): extract run() into lib with BootstrapOptions
2026-04-01 04:57:32 -04:00
Joseph O'Brien
28f129c944
fix(notcore): add .nothooks-state.toml to default_ignore and starter_toml
...
Public Repo Readiness / Check Public Repo Readiness (push) Failing after 4s
Prevents state files from being accidentally linked into the target
directory when a user initializes a fresh notfiles.toml from the
starter template.
Closes #2 (post-merge audit)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 02:22:46 -04:00
Joseph O'Brien
0ff89234e8
chore: add dual MIT/Apache-2.0 license, update Cargo.toml and README
...
Public Repo Readiness / Check Public Repo Readiness (push) Failing after 4s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 22:00:10 -04:00
Joseph O'Brien
4025ed037b
feat(notstrap): add new-machine bootstrap orchestrator
2026-03-31 17:29:08 -04:00
Joseph O'Brien
7339e2070d
Merge branch 'feature/nothooks' into feature/workspace-restructure
2026-03-31 17:26:38 -04:00
Joseph O'Brien
4cc6fb022d
feat(nothooks): add phase-aware hook runner with setup-hook state tracking
2026-03-31 17:26:26 -04:00
Joseph O'Brien
6e78778543
feat(notsecrets): add age key retrieval with bw/file/prompt sources
2026-03-31 17:26:10 -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
6b0bd3beb6
feat(notcore): add shared types, config, paths, error crate
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 17:17:35 -04:00