Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
241 commits
Select commit Hold shift + click to select a range
1c3bf19
Enable strict clippy (pedantic + restriction) with documented allow-list
aram356 Apr 25, 2026
91ee677
Factor out API-design clippy allow-list
aram356 Apr 25, 2026
6677778
Audit and re-justify previously papered-over clippy allows
aram356 Apr 25, 2026
476d411
Style-pass: factor out ~50 sites; rewrite allow-list rationale
aram356 Apr 25, 2026
a5df55b
Have #[action] emit `#[allow(clippy::unused_async)]` on the inner fn
aram356 Apr 25, 2026
4c8e2aa
Imports/paths + Attributes track: 6 lints factored out
aram356 Apr 25, 2026
0cbae0f
Documentation pass: factor out missing_panics_doc / missing_errors_do…
aram356 Apr 25, 2026
b86f39f
Output/diagnostics: route CLI through log to remove print_stderr/prin…
aram356 Apr 25, 2026
b1af7b2
Stylistic small-wins: factor out 4 more allow entries with real renames
aram356 Apr 25, 2026
1506738
Propagate response/builder/init errors instead of panicking on the re…
aram356 Apr 26, 2026
f667c62
Add typed GeneratorError + ScaffoldError for the CLI scaffold path
aram356 Apr 26, 2026
193e0c1
Update examples/app-demo handler tests for fallible IntoResponse trait
aram356 Apr 26, 2026
c9dea46
Apply strict-clippy gate to examples/app-demo
aram356 Apr 26, 2026
dcf8a18
Refactor most demo allows into real fixes
aram356 Apr 26, 2026
dcca14a
Refactor more demo allows into real fixes
aram356 Apr 26, 2026
4fbc82d
Reorder demo handlers to canonical layout
aram356 Apr 26, 2026
d9b8484
Generate strict-clippy gate in edgezero new projects
aram356 Apr 26, 2026
d352ac3
Propagate router errors in cloudflare and spin dispatch paths
aram356 Apr 26, 2026
fa76775
Refactor production code so several allows can move from workspace to…
aram356 Apr 26, 2026
e3fa443
Fix str_to_string: replace .to_string() on &str with .to_owned() work…
aram356 Apr 26, 2026
c2b84c8
Fix default_numeric_fallback: add type suffixes to literals
aram356 Apr 26, 2026
2293264
Fix absolute_paths in core crate + axum proxy
aram356 Apr 26, 2026
49c70c5
Major slim-down of allow-list towards demo's profile
aram356 Apr 26, 2026
44b4e86
Remove missing_trait_methods workspace allow
aram356 Apr 26, 2026
48d7348
Trim redundant pub use re-exports from edgezero-core lib root
aram356 Apr 26, 2026
5e9cbf0
Document why format_push_string is load-bearing
aram356 Apr 26, 2026
d8d475b
Remove format_push_string allow; propagate fmt::Error in generator
aram356 Apr 26, 2026
f6bd344
Remove single_char_lifetime_names allow; rename 4 lifetimes
aram356 Apr 26, 2026
cab6413
Remove shadow_reuse allow; rename ~30 shadowed bindings
aram356 Apr 26, 2026
061fb72
Remove tests_outside_test_module allow
aram356 Apr 26, 2026
97b6057
Remove pub_use workspace allow; localize to file-level expects
aram356 Apr 26, 2026
4bd988d
Replace pub_use file-level expects with real pub mod restructure
aram356 Apr 27, 2026
a908521
Remove allow_attributes workspace allow
aram356 Apr 27, 2026
9e49e12
Add workspace-level .cargo/config.toml for wasm32-wasip1 runner
aram356 Apr 27, 2026
a3bfb59
Add CI test job for spin adapter; collapse wasm jobs into a matrix
aram356 Apr 27, 2026
d0749e8
Drop redundant extra_check; explain why axum stays out of the matrix
aram356 Apr 27, 2026
f65b1f5
Guard wasm test runner installs against cached binaries
aram356 Apr 27, 2026
14b92fb
Use --force for cargo install of cached wasm runners
aram356 Apr 27, 2026
90e8943
Tighten pub_with_shorthand surface; document why allow stays
aram356 Apr 27, 2026
e0eb5ff
Remove absolute_paths workspace allow; convert ~110 sites to use imports
aram356 Apr 27, 2026
3329c07
Remove arbitrary_source_item_ordering allow; reorder ~300 sites
aram356 Apr 29, 2026
dc3c581
Remove as_conversions workspace allow; eliminate 8 cast sites
aram356 Apr 29, 2026
0060b1f
Remove arithmetic_side_effects allow; use checked/saturating ops
aram356 Apr 29, 2026
42fb68c
Pin Viceroy to ^0.16 in CI
aram356 Apr 29, 2026
b873bba
Pin viceroy 0.16.4 in .tool-versions
aram356 Apr 29, 2026
5113963
Read Viceroy version from .tool-versions in CI
aram356 Apr 29, 2026
2c6b951
Remove min_ident_chars allow; rename ~190 single-char identifiers
aram356 Apr 29, 2026
91b9bc6
Document why module_name_repetitions stays as workspace allow
aram356 Apr 30, 2026
0a49b32
Document why module_name_repetitions stays as workspace allow
aram356 Apr 30, 2026
c55b648
Remove stray libtest_lint.rlib build artifact, ignore *.rlib
aram356 Apr 30, 2026
b1b0453
Remove float_arithmetic allow; use integer ms in request logger
aram356 Apr 30, 2026
855dda9
Document why exhaustive_enums stays as workspace allow
aram356 Apr 30, 2026
b30f353
Remove missing_inline_in_public_items allow; add #[inline] to ~321 fns
aram356 Apr 30, 2026
2a6c22c
Rename Manifest::secret_store_name → secret_store_binding
aram356 May 1, 2026
4932aee
Bump checkout/setup-node/cache actions v4 → v5 (Node 24 runtime)
aram356 May 3, 2026
e758803
Bump remaining CI actions to current latest majors
aram356 May 3, 2026
2e7b689
Merge remote-tracking branch 'origin/main' into chore/strict-clippy
aram356 May 8, 2026
91ffc82
Upgrade redb 4.0 → 4.1
aram356 May 8, 2026
5577695
Fix CodeQL rust/cleartext-logging by dropping binding name from log
aram356 May 8, 2026
a26704f
Fix CodeQL rust/cleartext-transmission (#9, #10): rename test helper
aram356 May 16, 2026
0e930ed
Add tests for behaviour added in this PR
aram356 May 18, 2026
1f80519
Upgrade ctor 0.10 → 1.0; document spin-sdk 6.0 MSRV gap
aram356 May 18, 2026
89b68f0
Upgrade toolchain to rust 1.95.0; bump viceroy to 0.17
aram356 May 19, 2026
97d02de
Fix two clippy warnings only visible on no-features build
aram356 May 19, 2026
41871df
Pull edgezero_adapter_axum::dev_server::run_app via use in app-demo
aram356 May 19, 2026
d2f79f2
Fix spin CI: pin wasmtime via .tool-versions + direct GitHub tarball
aram356 May 19, 2026
459eee5
Address PR review comments
aram356 May 19, 2026
fb2e816
Surface invalid handler paths via compile_error! instead of panicking
aram356 May 19, 2026
308204f
Document pub_with_shorthand with verbatim clippy diagnostic
aram356 May 19, 2026
67d0cdf
Add design spec for extensible edgezero-cli library
aram356 May 19, 2026
a78284c
Expand CLI extensions spec to cover all 7 sub-projects
aram356 May 19, 2026
f1fdbfe
Apply review feedback and add secret annotation to CLI extensions spec
aram356 May 19, 2026
2e6904b
Expand spec for multi-store manifest + finalize naming and validate s…
aram356 May 20, 2026
0c1e118
Apply second-pass review: runtime API completeness, Cloudflare KV, se…
aram356 May 20, 2026
197b4f9
Third-pass review: async ConfigStore, env overlay, extractor refactor
aram356 May 20, 2026
1b41ad7
Fourth-pass review: manifest discrimination, Hooks split, env coercio…
aram356 May 20, 2026
f0aed20
Fifth-pass review: hard cutoff, Spin as first-class store adapter, on…
aram356 May 20, 2026
27a6169
Sixth-pass review: close Spin integration design holes
aram356 May 20, 2026
fd2ef43
Seventh-pass review + dev→demo rename + documentation step
aram356 May 20, 2026
1533464
Eighth-pass review: three minor fixes (no blockers remain)
aram356 May 20, 2026
d7eff52
Ninth-pass review: three minor notes (reviewer sign-off, no blockers)
aram356 May 20, 2026
fe5dce1
Add implementation plan for CLI extensions (8-commit PR)
aram356 May 20, 2026
a542f28
Fix six plan-review findings (plan + spec)
aram356 May 20, 2026
1e6f3f3
Tighten plan: four review findings before execution
aram356 May 20, 2026
23b76ca
Plan: wire new commands into the default binary, upgrade scaffold, al…
aram356 May 20, 2026
c63dad0
Plan: fix three crate-dependency gaps for typed-config wiring
aram356 May 20, 2026
df7751e
Plan: generator context for config type name + validator workspace seed
aram356 May 20, 2026
82be804
Plan: fix generated-CLI import path + guarantee valid NameUpperCamel …
aram356 May 20, 2026
166c2df
Fixed formatting
aram356 May 20, 2026
4e814ba
Address PR review: stale scaffold deps + KV pagination scan-cap bug
aram356 May 20, 2026
1d582dd
Commit 1: extensible edgezero-cli library + generator + app-demo-cli
aram356 May 20, 2026
06f4b72
Make `demo` example-only; `serve --adapter axum` runs the axum adapter
aram356 May 20, 2026
3f6151d
Plan: mark Commit 1 done, fix stale branch/path, expand Fastly in Com…
aram356 May 20, 2026
e5a9a4f
Spec: document the namespaced args API (edgezero_cli::args::*)
aram356 May 20, 2026
8a00fe5
Address PR review: scaffold templates fail their own clippy/test gate
aram356 May 20, 2026
5d5f92d
Merge remote-tracking branch 'origin/main' into chore/strict-clippy
aram356 May 20, 2026
f6acd93
Merge remote-tracking branch 'origin/chore/strict-clippy' into featur…
aram356 May 21, 2026
247cb74
demo: run app-demo via run_app for full manifest setup
aram356 May 21, 2026
0b0c914
Plan/spec: rename "Commit N" to "Stage N"
aram356 May 21, 2026
4565b30
Formatting
aram356 May 21, 2026
6463ba1
Make demo a contributor-only command; rename feature to demo-example
aram356 May 21, 2026
8d16ba9
Fix binary name, stale dev docs, and scaffold drift
aram356 May 21, 2026
e29b749
Generate path dependencies to the local edgezero checkout
aram356 May 21, 2026
cc7ff45
Verify the full generated workspace compiles, not just the CLI crate
aram356 May 21, 2026
0c2919e
Merge remote-tracking branch 'origin/main' into chore/strict-clippy
aram356 May 21, 2026
ca357c4
Fix generated-README serve command; align plan/spec with 4-command CLI
aram356 May 21, 2026
3d1ed25
Drop redundant cfg attributes in spin KV/secret store modules
aram356 May 21, 2026
5fe5834
Merge remote-tracking branch 'origin/chore/strict-clippy' into featur…
aram356 May 21, 2026
2277072
Wire generated-project compile check into CI; fix stale plan lines
aram356 May 21, 2026
1d95345
Fix generated wasm adapters and project-name sanitisation
aram356 May 21, 2026
72ec5ee
Plan: clear stale PR #253 gating and five-built-ins references
aram356 May 21, 2026
58c8e91
Spec/plan: revise Stage 2 to the portable-manifest + EDGEZERO__ design
aram356 May 21, 2026
f5bd432
Stage 2 Task 2.1: portable manifest store schema
aram356 May 22, 2026
46248f9
Stage 2 Task 2.2: EDGEZERO__* environment-config layer
aram356 May 22, 2026
6a64847
Stage 2 Tasks 2.3 + 2.4: bake portable stores into Hooks; drop manife…
aram356 May 23, 2026
82ee8d3
Stage 2 Task 2.5: async ConfigStore, new KvError variants, store regi…
aram356 May 23, 2026
34c9722
Stage 2 Task 2.6 (partial): axum store registries; Spin KV uses new e…
aram356 May 23, 2026
d21db4d
Stage 2 Task 2.6 (partial): fastly store registries
aram356 May 23, 2026
6850aa0
Stage 2 Task 2.6 (partial): spin store registries + paginated list_ke…
aram356 May 23, 2026
f817bcc
Stage 2 Task 2.6 (partial): cloudflare store registries; CloudflareCo…
aram356 May 23, 2026
f76c18a
Stage 2 Task 2.6 (final): axum end-to-end registry dispatch tests
aram356 May 23, 2026
b6f892f
Stage 2 Task 2.7: Kv/Secrets/Config extractors switch to default()/na…
aram356 May 23, 2026
30a68b7
Stage 2 Tasks 2.8 + 2.9: docs migration + Stage 2 ship gate
aram356 May 23, 2026
2c1c54f
Address Stage 2 review: provision app-demo platform bindings; trim de…
aram356 May 24, 2026
893d961
Address Stage 2 follow-up review: explicit-env manifest typos, cloudf…
aram356 May 24, 2026
73d4d61
Refresh edgezero-cli README and scaffold README to match Stage 1 surface
aram356 May 24, 2026
b32f4ff
Address Stage 1 docs review: README feature flags, library API sample…
aram356 May 24, 2026
4c9c645
Spin config dotted-key translation; exclude internal specs from ViteP…
aram356 May 24, 2026
4717cbd
Address Stage 2 review: config registry handler path, axum local-file…
aram356 May 25, 2026
667097c
Address Stage 2 review: unify axum bind contracts, seed local-config …
aram356 May 25, 2026
8942ec2
Address Stage 2 review: spin component field, bind-vs-env precedence,…
aram356 May 26, 2026
b58d072
Refresh stale Stage 2 docs: adapter entrypoints, plan status, Manifes…
aram356 May 26, 2026
95f931d
Refresh plan's Codebase Facts block for post-Stage-2 substrate
aram356 May 26, 2026
1de4b64
App-config schema, #[derive(AppConfig)] macro, env-overlay loader
aram356 May 26, 2026
8a52391
Address Stage 3 review: container rename_all, non-table config, AppCo…
aram356 May 26, 2026
14e36c2
Address Stage 3 review: reject #[serde(skip_serializing_if)] on #[sec…
aram356 May 26, 2026
719f08d
config validate command (raw + typed)
aram356 May 26, 2026
66a89cc
Address Stage 4 review: Spin selector, store_ref collision, app-demo …
aram356 May 26, 2026
b917723
Address Stage 4 review: wire #[validate(nested)] through app-demo + s…
aram356 May 26, 2026
0774256
Drop the [config] wrapper: <name>.toml IS the typed struct
aram356 May 26, 2026
22b41fb
Dispatch adapter-specific validation via an AdapterCheck trait
aram356 May 27, 2026
ef3f14d
Stage 4 review followups: scaffold-test parse, KV docs, env-segment e…
aram356 May 27, 2026
8d8074f
auth command (adapter-trait dispatch, no hardcoded table)
aram356 May 27, 2026
94a0191
Hoist run_native to cli_support + sweep stale CommandRunner refs
aram356 May 27, 2026
d3ec92d
config validate via Adapter trait — adapters own their own rules
aram356 May 27, 2026
9a0369b
Stage 6.1: provision dispatch via Adapter trait + axum impl
aram356 May 27, 2026
d905e42
Stage 6.2: cloudflare provision (wrangler shell-out + wrangler.toml w…
aram356 May 27, 2026
79a54b6
Stage 6.3: fastly provision (fastly CLI shell-out + fastly.toml write…
aram356 May 27, 2026
0933440
Stage 6.4: spin provision (pure spin.toml editing, no shell-out)
aram356 May 27, 2026
bc0a705
Stage 7.1: config push command (trait + axum impl + CLI raw/typed)
aram356 May 27, 2026
74d596a
Stage 7.2: cloudflare config push (wrangler kv bulk put)
aram356 May 27, 2026
d852f3f
Stage 7.3: fastly config push (config-store-entry create per key)
aram356 May 27, 2026
57c7eb3
Stage 7.4: spin config push (pure spin.toml editing, two tables)
aram356 May 27, 2026
3d3f87c
Stage 8.1: app-demo spin.toml — declare manual secret variables
aram356 May 27, 2026
9fdd1f4
Stage 8.2: app-demo integration tests for the typed CLI flow
aram356 May 27, 2026
26fddcc
Stage 8.3: app-demo handlers exercise Kv::named (sessions + cache)
aram356 May 27, 2026
723dafe
Refresh plan status to reflect Stages 6/7/8 progress
aram356 May 27, 2026
a4f7c81
Stage 8.4: generator cli template emits the full 7-command surface
aram356 May 28, 2026
45aef3d
Stage 8.5: app-demo e2e push→AxumConfigStore→handler roundtrip test
aram356 May 28, 2026
7d01061
Stage 8.6: CI wires app-demo workspace into tests + fmt + clippy
aram356 May 28, 2026
a3b7a89
Stage 8.7: cli-walkthrough.md + docs audit + sidebar + build fix
aram356 May 28, 2026
55fe91b
Stage 9.1 (review fix): run_config_push* runs the strict preflight
aram356 May 28, 2026
b531f5a
Stage 9.2 (review fix): Spin secret-value validation mirrors runtime …
aram356 May 28, 2026
2cc85d1
Stage 9.3 (review fix): enforce runtime store-API hard-cutoff
aram356 May 28, 2026
6592918
Stage 9.4 (review fix): assert Spin dry-run preview content (translat…
aram356 May 28, 2026
8ad9040
Stage 9.5 (review fix): refresh PR template, run_tests.sh, migration …
aram356 May 28, 2026
b1b5dca
Stage 10.1 (review fix): full runtime store-API hard-cutoff
aram356 May 28, 2026
6876578
Stage 10.2 (review fix): docs / plan / CLAUDE.md align with hard-cutoff
aram356 May 28, 2026
fd69b49
Scrub stage/task/phase/section refs from source comments
aram356 May 28, 2026
6f067a2
Harden fastly cli: schema-drift detection + partial-fail tracking
aram356 May 28, 2026
a96cf68
Harden cloudflare cli: idempotent provision + lenient push dry-run
aram356 May 28, 2026
65794b3
Spin cli UX polish: per-mode key diagnostics + table migration hint
aram356 May 28, 2026
4e7f014
Doc polish: AuthArgs no-Default rationale + axum from_path JSON shape
aram356 May 28, 2026
56cbf08
Add precedence test for synthesised one-id store registry
aram356 May 28, 2026
b4c5da3
Close remaining L2/L4/L5/L6 self-review followups
aram356 May 28, 2026
fe79025
Close deep-review findings: scaffold + spin inline + fastly half-setu…
aram356 May 28, 2026
6a5d89e
Close all remaining deep-review findings (cloudflare/fastly/spin/scaf…
aram356 May 29, 2026
6274a3f
Close provision capability gap: enforce Single-store on the operator-…
aram356 May 29, 2026
2a3ad63
Fix env precedence + drop axum legacy EDGEZERO_HOST shim
aram356 May 29, 2026
5cc742b
Fix env-overlay prefix shown in scaffold templates + app-demo comments
aram356 May 29, 2026
cea89ed
Close all multi-review findings: platform-name flow + hard-cutoff + t…
aram356 May 29, 2026
9d31015
Hard-cutoff pass: empty-name guard + drop EDGEZERO_KV defaults + Serv…
aram356 May 30, 2026
05f052e
Extract test-fixture consts in cloudflare/fastly/spin cli.rs test mods
aram356 May 30, 2026
684c5f2
Don't log adapter passthrough args — can carry deploy secrets
aram356 May 30, 2026
f2ad3f0
clippy --fix auto-applied for wasm32 adapter targets
aram356 May 30, 2026
83ca833
Make fastly contract test pass wasm32-wasip1 clippy
aram356 May 30, 2026
9c5d77b
Add per-target clippy matrix for adapter wasm builds
aram356 May 30, 2026
49d1d70
Move adapter wasm clippy matrix from test.yml to format.yml
aram356 May 30, 2026
d5d92f7
wasm32 clippy: clean cloudflare context.rs and secret_store.rs
aram356 May 30, 2026
969dd2a
wasm32 clippy: clean cloudflare response.rs and proxy.rs
aram356 May 30, 2026
7da3dc1
wasm32 clippy: clean cloudflare config_store.rs
aram356 May 30, 2026
04aa617
wasm32 clippy: clean cloudflare key_value_store.rs
aram356 May 30, 2026
564a0a8
wasm32 clippy: clean cloudflare lib.rs and request.rs
aram356 May 30, 2026
7eca8cd
wasm32 clippy: clean cloudflare contract.rs
aram356 May 30, 2026
b83d06c
wasm32 clippy: clean spin response/secret/config small files
aram356 May 30, 2026
a432c1e
wasm32 clippy: clean spin lib.rs and key_value_store.rs
aram356 May 30, 2026
3d808ab
wasm32 clippy: clean spin proxy.rs and request.rs
aram356 May 30, 2026
483a8a7
wasm32 clippy: clean spin contract.rs
aram356 May 30, 2026
1438972
Address remaining PR #257 review feedback
aram356 May 31, 2026
487ac5f
Upgrade Spin adapter to spin-sdk 6.0 (WASI Preview 2)
aram356 May 31, 2026
16898f8
Close PR #257 self-review followups: store id validation + docs lint
aram356 May 31, 2026
611064e
Merge origin/chore/strict-clippy into feature/extensible-cli
aram356 May 31, 2026
910739d
Pass strict clippy on wasm32 adapter targets
aram356 Jun 1, 2026
4928cdc
Close PR #257 self-review followups: store id validation + docs lint
aram356 Jun 2, 2026
990feb8
Print log when validating config
aram356 Jun 2, 2026
c61670f
Skip Fastly logger init when no endpoint is configured
aram356 Jun 2, 2026
b4c80e9
Add config push --local for fastly + cloudflare; delegate for spin/axum
aram356 Jun 2, 2026
7655955
Spin config store: switch from variables to KV backend
aram356 Jun 3, 2026
cef8e80
Spin seed handler + run_app_with_seeder for `config push --local`
aram356 Jun 3, 2026
42fed2b
config push: HTTP POST to seed handler for spin; AdapterPushContext
aram356 Jun 4, 2026
dc4ab33
Spin KV-config Stage 5: provision writes config labels to key_value_s…
aram356 Jun 4, 2026
5873523
Spin KV-config Stage 6: drop Spin's variable-name validator
aram356 Jun 4, 2026
048b6cb
Spin KV-config Stage 7: docs + app-demo migration
aram356 Jun 4, 2026
4353a1c
Spin KV-config Stage 8: runtime-config.toml scaffold + plan/spec clos…
aram356 Jun 4, 2026
b3da439
spin: PR-thread review fixes + per-backend-push plan
aram356 Jun 5, 2026
e788714
Address June-02 PR #257 review feedback
aram356 Jun 5, 2026
fc41491
spin: drop /__edgezero/config/seed handler (architecture pivot)
aram356 Jun 5, 2026
d4e392e
spin: per-backend writers (SQLite-direct + Fermyon Cloud shellout)
aram356 Jun 5, 2026
0be7444
spin: address review findings on per-backend dispatcher
aram356 Jun 5, 2026
7dd6ab6
spin: fix `spin cloud key-value set` shape + non-default-label gate +…
aram356 Jun 5, 2026
762c426
spin: fix parallel-test env race, switch cloud push to --app + --labe…
aram356 Jun 5, 2026
af47a2b
spin: fix `link key-value` hint shape; scaffold doc; hermetic mock-sp…
aram356 Jun 5, 2026
1b7342f
Merge origin/chore/strict-clippy into feature/extensible-cli
aram356 Jun 6, 2026
0807767
spin: race-free push tests, defer runtime-config parse for cloud, doc…
aram356 Jun 6, 2026
f1179df
scaffold/cloud-dryrun/docs: fix CF template, validate cloud --dry-run…
aram356 Jun 6, 2026
62f07ef
spin/docs: partial-failure cloud-push diagnostic + 3 stale-doc fixes
aram356 Jun 6, 2026
f374351
spin: silence strict-clippy on cloud partial-failure diagnostic
aram356 Jun 7, 2026
0f2f6df
docs: prettier-format cli-walkthrough Spin config-push bullets
aram356 Jun 7, 2026
c5652d3
strict-clippy: address PR review feedback (round 2)
aram356 Jun 10, 2026
3082391
Merge origin/chore/strict-clippy (round 2) into feature/extensible-cli
aram356 Jun 10, 2026
e1d7753
PR #269 review: fix .with_secrets() bug, plug CF orphan + Fastly argv…
aram356 Jun 10, 2026
453a44b
strict-clippy: cloudflare scaffold + handlers.md doc fixes
aram356 Jun 10, 2026
4079cde
PR #269 review round 2: CF push --remote/--local + cwd, kv-config col…
aram356 Jun 10, 2026
a04814d
Merge origin/chore/strict-clippy (round 3) into feature/extensible-cl…
aram356 Jun 10, 2026
3d7b42e
scaffold: generate adapter-aware .tool-versions for new projects
aram356 Jun 11, 2026
c666132
Merge remote-tracking branch 'origin/main' into chore/strict-clippy
aram356 Jun 11, 2026
9175cff
Merge origin/chore/strict-clippy (redb 4.1.0 bump, main-into-branch s…
aram356 Jun 11, 2026
dfb00b3
strict-clippy: round-4 review feedback (test.yml, cli logger, docs)
aram356 Jun 11, 2026
a9ae306
PR #269 review round 4: case-insensitive [adapters.*], deny_unknown_f…
aram356 Jun 11, 2026
e526e6b
Merge origin/chore/strict-clippy (round 4 — test.yml + CliLogger + ha…
aram356 Jun 11, 2026
2eeccc9
Merge origin/main (PR #257 squash-merge + round-5 CliLogger fix) into…
aram356 Jun 12, 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
2 changes: 1 addition & 1 deletion .claude/agents/build-validator.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ cargo check -p edgezero-core --all-features
cargo check -p edgezero-adapter-fastly --features cli
cargo check -p edgezero-adapter-cloudflare --features cli
cargo check -p edgezero-adapter-axum --features axum
cargo check -p edgezero-cli --features dev-example
cargo check -p edgezero-cli --features demo-example
```

## Demo apps
Expand Down
2 changes: 1 addition & 1 deletion .claude/agents/verify-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Demo adapters must build for their respective WASM targets.
## 6. Dev server smoke test

```
cargo run -p edgezero-cli --features dev-example -- dev &
cargo run -p edgezero-cli --features demo-example -- demo &
pid=$!
trap 'kill "$pid" 2>/dev/null || true; wait "$pid" 2>/dev/null || true' EXIT
sleep 3
Expand Down
36 changes: 17 additions & 19 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -1,32 +1,30 @@
{
"permissions": {
"allow": [
"Bash(ls:*)",
"Bash(cat:*)",
"Bash(head:*)",
"Bash(tail:*)",
"Bash(wc:*)",
"Bash(tree:*)",
"Bash(which:*)",

"Bash(cargo build:*)",
"Bash(cargo test:*)",
"Bash(cargo check:*)",
"Bash(cargo clippy:*)",
"Bash(cargo fmt:*)",
"Bash(cargo metadata:*)",
"Bash(cargo run -p edgezero-cli:*)",

"Bash(cargo fmt:*)",
"Bash(cargo clippy:*)",

"Bash(cargo test:*)",
"Bash(cat:*)",
"Bash(git branch:*)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(git status:*)",
"Bash(head:*)",
"Bash(ls:*)",
"Bash(npm ci:*)",
"Bash(npm run:*)",

"Bash(rustup target:*)",

"Bash(git status:*)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(git branch:*)"
"Bash(tail:*)",
"Bash(tree:*)",
"Bash(wc:*)",
"Bash(which:*)"
]
},
"enabledPlugins": {
"superpowers@claude-plugins-official": true
}
}
10 changes: 7 additions & 3 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,12 @@ Closes #

- [ ] `cargo test --workspace --all-targets`
- [ ] `cargo clippy --workspace --all-targets --all-features -- -D warnings`
- [ ] `cargo check --workspace --all-targets --features "fastly cloudflare"`
- [ ] WASM builds: `wasm32-wasip1` (Fastly) / `wasm32-unknown-unknown` (Cloudflare)
- [ ] Manual testing via `edgezero-cli dev`
- [ ] `cargo fmt --all -- --check`
- [ ] `cargo check --workspace --all-targets --features "fastly cloudflare spin"`
- [ ] WASM builds: `wasm32-wasip1` (Fastly) / `wasm32-wasip2` (Spin) / `wasm32-unknown-unknown` (Cloudflare)
- [ ] `examples/app-demo` workspace: `cd examples/app-demo && cargo test --workspace --all-targets`
- [ ] Docs build: `cd docs && npm run lint && npm run format && npm run build`
- [ ] Manual testing via `edgezero serve --adapter axum` (the pre-rewrite `edgezero-cli dev` was renamed; see [cli-reference](docs/guide/cli-reference.md#edgezero-demo))
- [ ] Other: <!-- describe -->

## Checklist
Expand All @@ -36,5 +39,6 @@ Closes #
- [ ] No Tokio deps added to core or adapter crates
- [ ] Route params use `{id}` syntax (not `:id`)
- [ ] Types imported from `edgezero_core` (not `http` crate)
- [ ] Store wiring goes through `KvRegistry` / `ConfigRegistry` / `SecretRegistry` (not the legacy single-handle setters) — see spec §6.6
- [ ] New code has tests
- [ ] No secrets or credentials committed
15 changes: 14 additions & 1 deletion .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,19 @@ jobs:
- name: Run cargo clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings

# Plan task 8.3 corollary: `examples/app-demo` is excluded
# from the root workspace, so the fmt/clippy steps above
# don't cover it. Run the same gates against it explicitly
# — the app-demo workspace has the same strict-clippy
# config and is the showcase a new user clones.
- name: Run cargo fmt (app-demo workspace)
working-directory: examples/app-demo
run: cargo fmt --all -- --check

- name: Run cargo clippy (app-demo workspace)
working-directory: examples/app-demo
run: cargo clippy --workspace --all-targets --all-features -- -D warnings

adapter-wasm-clippy:
name: ${{ matrix.adapter }} wasm clippy
runs-on: ubuntu-latest
Expand All @@ -64,7 +77,7 @@ jobs:
- adapter: fastly
target: wasm32-wasip1
- adapter: spin
target: wasm32-wasip1
target: wasm32-wasip2
steps:
- uses: actions/checkout@v6

Expand Down
23 changes: 20 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
toolchain: ${{ steps.rust-version.outputs.rust-version }}

- name: Add wasm targets
run: rustup target add wasm32-wasip1 wasm32-unknown-unknown
run: rustup target add wasm32-wasip1 wasm32-wasip2 wasm32-unknown-unknown

- name: Fetch dependencies (locked)
run: cargo fetch --locked
Expand All @@ -55,6 +55,23 @@ jobs:
- name: Check feature compilation
run: cargo check --workspace --all-targets --features "fastly cloudflare spin"

- name: Verify a generated project compiles
run: cargo test -p edgezero-cli --test generated_project_builds -- --ignored

# `examples/app-demo` is excluded from the root workspace, so
# `cargo test --workspace` above does not cover it. Run its own
# workspace tests separately. An end-to-end push →
# AxumConfigStore → handler roundtrip in
# `app-demo-cli/tests/config_flow.rs` exists to be exercised by
# THIS step — without it, a regression in the JSON-file contract
# between `config push --adapter axum` and
# `AxumConfigStore::from_path` would not be caught by CI.
# Axum-only path, no live external calls — intentionally kept
# off the wasm matrix.
- name: Run app-demo workspace tests
working-directory: examples/app-demo
run: cargo test --workspace --all-targets

adapter-wasm-tests:
name: ${{ matrix.adapter }} wasm tests
runs-on: ubuntu-latest
Expand All @@ -71,8 +88,8 @@ jobs:
runner_env: CARGO_TARGET_WASM32_WASIP1_RUNNER
runner_value: viceroy run
- adapter: spin
target: wasm32-wasip1
runner_env: CARGO_TARGET_WASM32_WASIP1_RUNNER
target: wasm32-wasip2
runner_env: CARGO_TARGET_WASM32_WASIP2_RUNNER
runner_value: wasmtime run
steps:
- uses: actions/checkout@v6
Expand Down
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ target/
# Worktrees
.worktrees/

# Superpowers plans
docs/superpowers/

# Editors
.claude/*
!.claude/settings.json
Expand Down
16 changes: 8 additions & 8 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ crates/
edgezero-adapter/ # Adapter registry and traits
edgezero-adapter-fastly/ # Fastly Compute bridge (wasm32-wasip1)
edgezero-adapter-cloudflare/# Cloudflare Workers bridge (wasm32-unknown-unknown)
edgezero-adapter-spin/ # Fermyon Spin bridge (wasm32-wasip1)
edgezero-adapter-spin/ # Fermyon Spin bridge (wasm32-wasip2)
edgezero-adapter-axum/ # Axum/Tokio bridge (native, dev server)
edgezero-cli/ # CLI: new, build, deploy, dev, serve
edgezero-cli/ # CLI lib + bin: new, build, deploy, serve, auth, provision, config (validate|push), demo
examples/app-demo/ # Reference app with all 4 adapters (excluded from workspace)
docs/ # VitePress documentation site (Node.js)
scripts/ # Build/deploy/test helper scripts
Expand Down Expand Up @@ -53,10 +53,10 @@ cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo check --workspace --all-targets --features "fastly cloudflare spin"

# Spin wasm32 compilation check
cargo check -p edgezero-adapter-spin --target wasm32-wasip1 --features spin
cargo check -p edgezero-adapter-spin --target wasm32-wasip2 --features spin

# Run the demo dev server
cargo run -p edgezero-cli --features dev-example -- dev
# Run the demo server
cargo run -p edgezero-cli --features demo-example -- demo

# Docs site
cd docs && npm ci && npm run dev
Expand All @@ -71,7 +71,7 @@ faster iteration on a single crate.
| ---------- | ------------------------ | ---------------------------------- |
| Fastly | `wasm32-wasip1` | Requires Viceroy for local testing |
| Cloudflare | `wasm32-unknown-unknown` | Requires `wrangler` for dev/deploy |
| Spin | `wasm32-wasip1` | Requires `spin` CLI for dev/deploy |
| Spin | `wasm32-wasip2` | Requires `spin` CLI for dev/deploy |
| Axum | Native (host triple) | Standard Tokio runtime |

## Coding Conventions
Expand Down Expand Up @@ -170,7 +170,7 @@ Each adapter follows the same structure:
- `response.rs` — core response → platform response conversion
- `proxy.rs` — platform-specific proxy client
- `logger.rs` — platform-specific logging init
- `cli.rs` — build/deploy commands (behind `cli` feature)
- `cli.rs` — adapter dispatch behind the `cli` feature: `build` / `deploy` / `serve` (legacy) plus `Adapter::execute` for `auth` (login/logout/status) and dedicated trait methods `provision` (Stage 6 — platform-resource creation) and `push_config_entries` (Stage 7 — `config push` writeback). Self-registers via `#[ctor]` into the `edgezero-adapter` registry.

Contract tests live in `tests/contract.rs` within each adapter crate.

Expand All @@ -187,7 +187,7 @@ Every PR must pass:
2. `cargo clippy --workspace --all-targets --all-features -- -D warnings`
3. `cargo test --workspace --all-targets`
4. `cargo check --workspace --all-targets --features "fastly cloudflare spin"`
5. `cargo check -p edgezero-adapter-spin --target wasm32-wasip1 --features spin`
5. `cargo check -p edgezero-adapter-spin --target wasm32-wasip2 --features spin`

Docs CI additionally runs ESLint + Prettier on the `docs/` directory.

Expand Down
Loading
Loading