Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
264 commits
Select commit Hold shift + click to select a range
c70b485
feat: implement local wrangler executable resolution and enhance depl…
Refzlund Apr 14, 2026
5a064e2
feat: add wrangler dependency to testing services and enhance deploy …
Refzlund Apr 14, 2026
9b8b163
feat: enhance deploy command to support branch-scoped preview deploym…
Refzlund Apr 14, 2026
77c4548
feat: add verification script for testing preview deployments and upd…
Refzlund Apr 14, 2026
cc41c50
feat: enhance testing preview deployment verification and update work…
Refzlund Apr 14, 2026
5a08d40
fix: avoid cloudflare resource resolution in preview verification
Refzlund Apr 14, 2026
c0685a5
fix: relax named preview verification fallback
Refzlund Apr 14, 2026
9e258ce
fix: bump bun to 1.3.12
Refzlund Apr 14, 2026
c027eca
test: isolate preview alias env fallback
Refzlund Apr 14, 2026
5d53eff
feat: combine PR deployment status comments
Refzlund Apr 14, 2026
f25a4d7
Enhance Devflare documentation and workflows
Refzlund Apr 14, 2026
f647da0
Refactor tests and update bindings for improved clarity and functiona…
Refzlund Apr 15, 2026
1a5b61f
refactor: rename alias to scope in preview registry
Refzlund Apr 15, 2026
5fddc4a
refactor: simplify function signatures by removing unused parameters …
Refzlund Apr 15, 2026
f16b5b1
refactor: update CI workflow and enhance schema validation for strict…
Refzlund Apr 15, 2026
0d96977
refactor: remove unused workflow structures and update descriptions f…
Refzlund Apr 15, 2026
9a56773
refactor: enhance deployment verification for branch-scoped previews …
Refzlund Apr 15, 2026
5834ee6
refactor: improve code formatting and consistency across multiple files
Refzlund Apr 15, 2026
d516dab
Fix preview deployment verification
Refzlund Apr 16, 2026
0517ec6
Fix local wrangler preview deploys
Refzlund Apr 16, 2026
02d9572
Fix testing preview verification
Refzlund Apr 16, 2026
5dabef1
Fix branch preview verification
Refzlund Apr 16, 2026
b86f83e
Harden preview deploy verification and registry recovery
Refzlund Apr 16, 2026
ad11583
Skip workspace build guard in CI
Refzlund Apr 16, 2026
b7779d3
Restore preview workflow app-level verification
Refzlund Apr 16, 2026
63c966f
Refactor documentation workflows for clarity and efficiency
Refzlund Apr 16, 2026
630fa88
refactor: streamline preview command handling and improve cleanup fun…
Refzlund Apr 16, 2026
3053b5f
fix: update wrangler deploy command arguments for consistency and cla…
Refzlund Apr 16, 2026
bc77f7e
fix: remove --bun from deploy commands to prevent silent wrangler fai…
Refzlund Apr 16, 2026
f0e0c5a
Harden workflow summaries and deploy impact
Refzlund Apr 16, 2026
e406100
chore(devflare): update version to 1.0.0-next.16 and remove unused files
Refzlund Apr 16, 2026
1210790
feat: enhance documentation routing with canonical slugs and aliases
Refzlund Apr 16, 2026
b2717e5
feat: add service binding documentation and update references for cla…
Refzlund Apr 16, 2026
4063ce9
refactor(devflare): waves 4-8 - AST transforms, gateway runtime extra…
Refzlund Apr 17, 2026
fc09c3c
refactor(devflare): wave 9 + quality sweep - middleware toString warn…
Refzlund Apr 17, 2026
79518bc
Remove documentary files
Refzlund Apr 17, 2026
38fbac5
fix(devflare): resolve typecheck errors, normalize FINDINGS.md as sin…
Refzlund Apr 20, 2026
5945c51
docs(devflare): add mock-vs-Miniflare guidance, public-API migration …
Refzlund Apr 20, 2026
0138548
docs(devflare): F29 - sync root README workflow scripts, package entr…
Refzlund Apr 20, 2026
0f52aec
docs(remaining): add REMAINING.md sequencing and per-blocked-item imp…
Refzlund Apr 20, 2026
1c5dca0
feat(devflare): F18 - add refresh-permission-groups script and genera…
Refzlund Apr 20, 2026
4cd48b2
test(devflare): F22 - cross-phase resolver contract tests + REMAINING…
Refzlund Apr 20, 2026
69e5d89
feat(devflare): F09/F11 - bridge transport v2 foundation (architectur…
Refzlund Apr 20, 2026
58577e9
feat(devflare): F09/F11 phase 2+3 - v2 codec + streaming body seriali…
Refzlund Apr 20, 2026
e0bad2f
feat(devflare): v2 value-codec — Date/URL/Error/Map/Set/Uint8Array/Ar…
Refzlund Apr 20, 2026
c9fb6fe
feat(devflare): v2 control-messages + ws-relay manager
Refzlund Apr 20, 2026
dd2222e
refactor(devflare): remove v1 bridge source files; v2 namespace owns …
Refzlund Apr 20, 2026
9358b71
feat(devflare): wire BridgeClient + gateway-runtime onto TransportV2C…
Refzlund Apr 20, 2026
9f3d6c7
fix(devflare): repair v2 build after BridgeClient migration
Refzlund Apr 20, 2026
53b70e1
Clean-up
Refzlund Apr 20, 2026
18334ce
Clean-up
Refzlund Apr 20, 2026
2dd8c47
Clean-up
Refzlund Apr 20, 2026
2860221
fix(devflare): contained follow-ups from REMAINING.md (F59, C2, C12, …
Refzlund Apr 20, 2026
d597d13
feat(devflare): R3 Cloudflare resiliency + R1 phased-resolver facade …
Refzlund Apr 20, 2026
e7b2248
feat(devflare): add validateServiceBindings deploy-time preflight (C16)
Refzlund Apr 20, 2026
92153ad
feat(devflare): R4 vite plugin offline-first resolution (C1, C7)
Refzlund Apr 20, 2026
a108976
feat(devflare): wire validateServiceBindings preflight + write deploy…
Refzlund Apr 20, 2026
e03c2aa
feat(devflare): R2 build manifest + deploy-time drift detection (C5, …
Refzlund Apr 20, 2026
8a7d6e8
feat(devflare): C9 + C10 + C13 + C18 - hardening pass
Refzlund Apr 20, 2026
dfe58fd
feat(devflare): C3 + C6 - resolve-only resources first, dry-run shows…
Refzlund Apr 20, 2026
ac6c409
feat(devflare): C17 - schema entries for mTLS / Dispatch / Workflows-…
Refzlund Apr 20, 2026
88fd7d7
refactor(devflare): R1 step 2 - extract shared binding-resolution hel…
Refzlund Apr 20, 2026
7ed88d4
refactor(devflare): R1 step 3 - brand DeployConfig/LocalConfig and ti…
Refzlund Apr 20, 2026
6f14141
chore(devflare): ignore _tr_*.txt test scratch files
Refzlund Apr 20, 2026
8c25abe
refactor(devflare): F49 step 1 - extract bridge-backed startup helpers
Refzlund Apr 20, 2026
fa36776
refactor(devflare): F35 step 1 - extract Vite DO discovery helpers
Refzlund Apr 20, 2026
4a2cc56
refactor(devflare): F45 step 1 - extract Miniflare binding translators
Refzlund Apr 20, 2026
2ff35a5
refactor(devflare): CR1 - opt-in alreadyResolved flag for compileBuil…
Refzlund Apr 20, 2026
faba162
refactor(devflare): F49 step 2 - extract resolveHandlerPaths helper
Refzlund Apr 20, 2026
020bc80
refactor(devflare): F35+F45 step 2 - extract plugin-context and serve…
Refzlund Apr 20, 2026
e7795d8
refactor(devflare): F49 step 3 - extract transport decoders
Refzlund Apr 20, 2026
c96b2bf
refactor(devflare): F49 step 4 - extract applyMultiWorkerConfig
Refzlund Apr 20, 2026
a2abd8a
refactor(devflare): F49 step 5 - extract buildInlineBridgeMfConfig
Refzlund Apr 20, 2026
dc183a5
refactor(devflare): F45 step 3 - extract Miniflare worker-config buil…
Refzlund Apr 20, 2026
8fff57a
refactor(devflare): F35 step 3 - extract programmatic helpers (getClo…
Refzlund Apr 20, 2026
5d8d3a1
refactor(devflare): F35 step 4 - extract config() hook helpers
Refzlund Apr 20, 2026
9627afd
refactor(devflare): F35 step 5 - dedupe config-load between configRes…
Refzlund Apr 20, 2026
4b7d725
refactor(devflare): F45 step 4 - extract buildMiniflareDevConfig orch…
Refzlund Apr 20, 2026
d33ae10
refactor(devflare): F45 step 6 - extract resolveWorkerConfigWatchPath
Refzlund Apr 20, 2026
df65c1c
refactor(devflare): F49 step 6 - extract buildRemoteAndStaticBindings
Refzlund Apr 20, 2026
0b68a50
refactor(devflare): F35 step 6 - extract runDevflareTransform helper
Refzlund Apr 20, 2026
f379063
refactor(devflare): F49 step 7 - extract surface-handler wiring + env…
Refzlund Apr 20, 2026
d796c02
refactor(devflare): F49 step 8 - extract config resolution and dispos…
Refzlund Apr 20, 2026
a8adc4f
refactor(devflare): F45 step 7 - extract applyWatcherTargetDiff helper
Refzlund Apr 20, 2026
8ec2afb
refactor(devflare): F35 step 7 - extract buildPluginConfigHookResult
Refzlund Apr 20, 2026
72c8545
refactor(devflare): F45 step 8 - extract maybeStartBrowserShim helper
Refzlund Apr 20, 2026
18c7bcc
refactor(devflare): F45 step 9 - extract maybeStartDOBundler helper
Refzlund Apr 20, 2026
f64ed47
refactor(devflare): F45 step 10 - extract resolveViteIntegration helper
Refzlund Apr 20, 2026
9f23cdc
docs: log 2026-04-22 helper-extraction pass in REMAINING.md
Refzlund Apr 20, 2026
18d00d1
chore(devflare): close-out F35/F45/F49 in-flight work + Wave 1 docs (…
Refzlund Apr 21, 2026
57e51e2
refactor(devflare): V3 - composed-worker returns absolute path
Refzlund Apr 21, 2026
fdea7a7
refactor(devflare): V2 - share SUPPORTED_WORKER_EXTENSIONS across wor…
Refzlund Apr 21, 2026
6030f96
refactor(devflare): R2 - alias ContextUnavailableError to ContextAcce…
Refzlund Apr 21, 2026
798498d
refactor(devflare): R3 - unify proxy factories under createContextPro…
Refzlund Apr 21, 2026
b18b6e5
refactor(devflare): R4 - co-locate router under runtime/router/
Refzlund Apr 21, 2026
5f38af0
refactor(devflare): D1 - always assemble miniflare workers array
Refzlund Apr 21, 2026
12d2d47
refactor(devflare): B5 - surface silent bridge catches via DEVFLARE_D…
Refzlund Apr 21, 2026
d154726
refactor(devflare): B6 - mark bridgeEnv as @internal
Refzlund Apr 21, 2026
044a4e6
refactor(devflare): C2 prep - make resolveResources phase a strict su…
Refzlund Apr 21, 2026
acf1922
refactor(devflare): C2 step 1 - route compile path through resolveRes…
Refzlund Apr 21, 2026
5cb157d
refactor(devflare): C2 step 2 - route Vite plugin through resolveReso…
Refzlund Apr 21, 2026
20b73a2
refactor(devflare): C2 step 3 - route deploy path through resolveReso…
Refzlund Apr 21, 2026
3e6efbd
docs(devflare): C2 step 4 - mark legacy resolver entry points @internal
Refzlund Apr 21, 2026
b9a8ab3
refactor(devflare): V1 - share durable-object-discovery helper across…
Refzlund Apr 21, 2026
6af7dce
refactor(devflare): C5 - consolidate config validation in Zod, keep c…
Refzlund Apr 21, 2026
38d75aa
refactor(devflare): P2 - use wrangler versions view --json output, dr…
Refzlund Apr 21, 2026
4dd0a82
refactor(devflare): R1 - warn on middleware param-name sniffing; stri…
Refzlund Apr 21, 2026
468a30e
refactor(devflare): R1 - warn on middleware param-name sniffing; stri…
Refzlund Apr 21, 2026
c14ae5b
refactor(devflare): C3 - add kind discriminant on DO binding refs
Refzlund Apr 21, 2026
bc2081b
refactor(devflare): C4 - resolve DO ref proxy access against actual b…
Refzlund Apr 21, 2026
68cd5ad
refactor(devflare): P1 - declare DevflareEnv global once in src/env.ts
Refzlund Apr 21, 2026
eef9e64
refactor(devflare): B3 - namespace all bridge RPC operations with bin…
Refzlund Apr 21, 2026
778ce6e
docs(devflare): B4 - document namespaced bridge RPC convention; resol…
Refzlund Apr 21, 2026
954331d
docs: close out REMAINING.md - move all 20 items to FINDINGS.md, reco…
Refzlund Apr 21, 2026
75ce9d2
docs: scrub stale REMAINING.md content - keep closeout summary only
Refzlund Apr 21, 2026
7800351
refactor(devflare): V4-defaults — extract createWorkerdBundlerDefaults
Refzlund Apr 21, 2026
34539cf
refactor(devflare): D2-removal — drop createBridgeTestContext from pu…
Refzlund Apr 21, 2026
783d4fb
refactor(devflare): C2-public — remove resolveConfigForLocalRuntime +…
Refzlund Apr 21, 2026
ccf798f
refactor(devflare): R1-strict — drop parameter-name fallback, require…
Refzlund Apr 21, 2026
f1e8dde
refactor(devflare): B3-final — remove legacy bare-verb / stub.* / stm…
Refzlund Apr 21, 2026
e7e61c1
refactor(devflare): B5-frame — add structured wire-error frame to bri…
Refzlund Apr 21, 2026
b1d7313
refactor(devflare): P1-codegen — pin generated DevflareEnv shape with…
Refzlund Apr 21, 2026
07a313b
docs: REMAINING.md - mark Wave-4 follow-ups complete (V4/D2/C2/R1/B3/…
Refzlund Apr 21, 2026
c8c05d1
fix(devflare): drop leaky bun module mock for wrapEnvSendEmailBinding…
Refzlund Apr 21, 2026
a847202
fix(devflare): make dev-server-state vite-process mock resolve dispos…
Refzlund Apr 21, 2026
6a3ff54
fix(devflare): only auto-run refresh-permission-groups main() when in…
Refzlund Apr 21, 2026
5b918fd
fix(devflare): rebase deploy artefact main/assets paths from build di…
Refzlund Apr 21, 2026
a4bca2c
fix(cli): avoid ref proxy resolution during source-config hashing
Refzlund Apr 21, 2026
6f94712
test(integration): make cleanupTempDirs tolerant of CI rm failures
Refzlund Apr 21, 2026
e14a3aa
chore(cloudflare): include response body in non-envelope/JSON parse e…
Refzlund Apr 21, 2026
04d981a
fix(cloudflare): accept bare `{result}` envelopes from CF Queues API
Refzlund Apr 21, 2026
a607a4e
fix(testing): allow Hyperdrive POSTGRES preview to fall back to base …
Refzlund Apr 21, 2026
5994840
fix(ci): pass --json to wrangler versions view in testing preview ver…
Refzlund Apr 21, 2026
2bdd202
fix(preview): materialize preview scope inside hyperdrive object form
Refzlund Apr 21, 2026
dad456e
test(verifier): expect Hyperdrive object form with previewFallback
Refzlund Apr 21, 2026
b5ee7ea
fix(testing): add ctx parameter to fetch handler
Refzlund Apr 21, 2026
48b6949
harden: close fragility gaps that masked the PR-1 cascade
Refzlund Apr 21, 2026
d469c65
verifier: gate branch-preview live probe behind Cloudflare Access creds
Refzlund Apr 21, 2026
c93015e
test(devflare): use 3-arg queue/scheduled fixtures for new R1-strict …
Refzlund Apr 21, 2026
f7e7104
chore: update .env.example with Cloudflare Access details and improve…
Refzlund Apr 21, 2026
317511e
feat: enhance SvelteKit integration with improved build artifact hand…
Refzlund Apr 21, 2026
6a81f73
Add unit tests for offline bindings, service resolution, and context …
Refzlund Apr 26, 2026
d527b0a
Add comprehensive tests for documentation integrity
Refzlund Apr 26, 2026
74f101c
Add comprehensive tests for config schema bindings and runtime config…
Refzlund Apr 27, 2026
7e39355
Fix preview deploy and CI validation flake
Refzlund Apr 27, 2026
840fbea
Stabilize preview verification and runtime tests
Refzlund Apr 27, 2026
093becf
Avoid Wrangler import for local dev vars
Refzlund Apr 27, 2026
05f10cc
Improve documentation coverage and navigation
Refzlund Apr 27, 2026
eed236f
Improve offline bindings and documentation clarity
Refzlund Apr 27, 2026
76bae98
Handle missing Miniflare log level export
Refzlund Apr 27, 2026
cafc596
Omit Miniflare custom log when export is missing
Refzlund Apr 27, 2026
82b004a
Defer missing Miniflare helper failures
Refzlund Apr 27, 2026
275eb47
Use wrapped bindings for local Secrets Store values
Refzlund Apr 27, 2026
00ee4c6
Guard optional Miniflare dispose helper
Refzlund Apr 27, 2026
0af6f19
Use primary worker for Miniflare bindings
Refzlund Apr 27, 2026
83712d8
Stabilize local secret binding access
Refzlund Apr 27, 2026
dc16e60
Stabilize send email context integration test
Refzlund Apr 27, 2026
bc554c7
Verify offline-first local bindings
Refzlund Apr 27, 2026
cecf3e3
style: visually center pill + commit logo
Refzlund Apr 27, 2026
98e0de9
refactor: update social metadata and replace favicon with logo
Refzlund Apr 27, 2026
5264156
Generate documentation social cards
Refzlund Apr 28, 2026
58960bc
Isolate social card Svelte rendering
Refzlund Apr 28, 2026
0e3cf54
Avoid social card generation during install
Refzlund Apr 28, 2026
06e71c8
Cache documentation social cards
Refzlund Apr 28, 2026
8f27e44
Fix local dev service bindings
Refzlund Apr 28, 2026
f4745b2
Harden root env dev-server test
Refzlund Apr 28, 2026
5194070
Stabilize sendEmail dev-server tests
Refzlund Apr 28, 2026
3e040e5
Fix SvelteKit service binding bridge
Refzlund Apr 28, 2026
e056f66
feat: add typed config env vars
Refzlund May 1, 2026
5b3d40f
fix: clarify custom domain routing
Refzlund May 1, 2026
c318df0
test: keep docs integrity checks focused
Refzlund May 1, 2026
580cf6e
fix: resolve typed env vars for deploy
Refzlund May 1, 2026
9c2f55d
fix: include zone permissions in managed tokens
Refzlund May 2, 2026
a235ee6
fix: split account and zone token policies
Refzlund May 2, 2026
9eb6d63
fix: clean package dist before build
Refzlund May 2, 2026
43e10e3
feat: enhance article and TOC components with dynamic content offset …
Refzlund May 10, 2026
7127e49
fix: update Floating TOC styles for improved layout and interaction
Refzlund May 10, 2026
e25ea0a
refactor: simplify content offset calculations and improve title widt…
Refzlund May 10, 2026
2303d83
feat(devflare): add `server` dev host/port config + changesets next-t…
Refzlund Jun 28, 2026
6b7356d
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
51e8463
fix(ci): publish.yml — drop --tag (forbidden in pre mode) + pre-mode-…
Refzlund Jun 28, 2026
3973c8a
fix(ci): configure git identity unconditionally in publish workflow
Refzlund Jun 28, 2026
db83da3
feat(devflare): Phase A — freeze API contract + release/stability pol…
Refzlund Jun 28, 2026
6eeebd5
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
3cd03ab
feat(devflare): Phase B — close unfinished bridge/shim code paths
Refzlund Jun 28, 2026
131e8e8
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
dcc56e7
feat(devflare): Phase C — model v4 deploy-policy options + Cloudflare…
Refzlund Jun 28, 2026
9b77884
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
38f576f
feat(devflare): Phase D — deploy & secrets maturity guide + clearer p…
Refzlund Jun 28, 2026
357fd7f
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
e27dd17
feat(devflare): Phase E — enforce lint + gate publish on tests + fix …
Refzlund Jun 28, 2026
458898c
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
3f9f0d7
docs(devflare): Phase F — architecture & docs debt close-out
Refzlund Jun 28, 2026
f7e7992
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
e7b82e3
chore(devflare): packaging & release hygiene (LICENSE, node bin, expo…
Refzlund Jun 28, 2026
023b0e3
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
0b47000
fix(devflare): docs & contract honesty (entrypoint rows, bridge ports…
Refzlund Jun 28, 2026
db91029
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
cd82c4e
fix(devflare): repair DO WebSocket relay through the live gateway + c…
Refzlund Jun 28, 2026
55604c0
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
c813821
docs(devflare): accurate Cloudflare support matrix + offline-binding …
Refzlund Jun 28, 2026
de4bc5a
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
bef00b5
test(devflare): fix NaN error messages, ratchet lint to error, harden…
Refzlund Jun 28, 2026
f322db8
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
22d4986
chore(devflare): final QA sweep — bridge WS frame guard, docs notes, …
Refzlund Jun 28, 2026
d08f0c4
fix(devflare): build importable bundles with rolldown + verify dist b…
Refzlund Jun 28, 2026
35ad35b
ci(devflare): run build before the unit gate + bun 1.3.14 in publish
Refzlund Jun 28, 2026
445b501
test(devflare): move nested-Miniflare worker-loader test to a serial …
Refzlund Jun 28, 2026
8938d0e
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
db98dd9
fix(devflare): declare typescript as a runtime dependency
Refzlund Jun 28, 2026
17411f2
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
6fab0de
fix(devflare): CLI bin runs dist under node + robust dependency packa…
Refzlund Jun 28, 2026
d8e8abc
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
feab91d
feat(devflare): remote flag + preview/jurisdiction/migration on core …
Refzlund Jun 28, 2026
1420744
chore(release): version packages [skip ci]
github-actions[bot] Jun 28, 2026
81b4c63
feat(devflare): Stream, VPC services/networks, and Flagship bindings …
Refzlund Jun 29, 2026
a2aeef6
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
54f4566
feat(devflare): wire Analytics Engine + tail consumers + mTLS remote …
Refzlund Jun 29, 2026
fd4f874
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
b3f6771
feat(devflare): offline mocks for Vectorize + Analytics Engine, cf.al…
Refzlund Jun 29, 2026
acd012f
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
e267951
fix(devflare): honest offline-support classification for Durable Obje…
Refzlund Jun 29, 2026
9765278
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
49aad79
feat(devflare): gradual/percentage deploy + devflare tail command (CF…
Refzlund Jun 29, 2026
67a0af0
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
15fed0f
feat(devflare): cron grammar validation + build-time 2-arg fetch chec…
Refzlund Jun 29, 2026
0d68f4d
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
f1209e4
fix(devflare): typed env/vars proxies assignable to augmented Devflar…
Refzlund Jun 29, 2026
9c06ba8
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
53347f3
docs(devflare): CF-7 boundaries — DO WS hibernation (covered), unsafe…
Refzlund Jun 29, 2026
804bc79
feat(devflare): close CF-8 config-coverage gaps (queue/service/stream…
Refzlund Jun 29, 2026
c2e2206
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
848e41f
feat(devflare): productions deployments history subcommand + observab…
Refzlund Jun 29, 2026
acc5a0e
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
fb5dff4
feat(devflare): sendEmail pure-offline test parity — createMockSendEm…
Refzlund Jun 29, 2026
2af2b04
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
23650d8
feat(devflare): server.liveReload + server.cf local-dev options (CF-15)
Refzlund Jun 29, 2026
b54cf56
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
0ba2da4
fix(devflare): streamingTailConsumers rejects environment (wrangler S…
Refzlund Jun 29, 2026
06da2a8
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
50a2474
feat(devflare): model Durable Objects binding environment sub-field (…
Refzlund Jun 29, 2026
088a0c2
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
95b548f
fix(devflare): fold service-binding environment into the service name…
Refzlund Jun 29, 2026
9d5854d
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
8e71c14
docs(devflare): generalize esbuild bundling-flag passthrough boundary…
Refzlund Jun 29, 2026
0ad0536
feat(devflare): reject route flags on non-custom-domain routes + add …
Refzlund Jun 29, 2026
5248085
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
cd9efe6
feat(devflare): model+wire server.publicUrl local-dev knob (CF-28)
Refzlund Jun 29, 2026
9a2dcb5
chore(release): version packages [skip ci]
github-actions[bot] Jun 29, 2026
f3e1256
docs(devflare): record CF-29/CF-30 convergence — gap loop closed (zer…
Refzlund Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets).

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md).
24 changes: 24 additions & 0 deletions .changeset/bridge-do-websocket-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
"devflare": patch
---

Fix the Durable Object WebSocket relay through the live dev gateway, and harden
proxied-response limits:

- **DO WebSocket `stub.connect()` was broken in both directions.** The live
gateway (`gateway-runtime.ts`) and the bridge client disagreed on the WS-data
wire format: the client sent/expected binary `WsData` frames while the gateway
only read string frames inbound and emitted a JSON `ws.data` envelope outbound,
so every payload was silently dropped. The gateway now speaks the same binary
`WsData` frame format as the client (matching `wire.ts`/`server.ts`) in both
directions, honoring the TEXT flag. Added an end-to-end integration test that
round-trips binary (both directions) and a text frame through the real gateway.
- **Oversized proxied responses now throw a clear error** instead of being
silently truncated. DO and service-binding `fetch()` responses reached through
the bridge are delivered inline over the WebSocket and are capped at 512 KB
(workerd's ~1 MB message limit); a larger body now throws, with the boundary
documented in the Cloudflare support matrix. Large R2 objects remain exempt
(HTTP transfer side-channel).
- The gateway handshake now advertises only the capabilities it actually
implements end-to-end (`ws-relay`, `http-transfer`); `streams` is no longer
advertised since proxied responses are inlined, not streamed.
12 changes: 12 additions & 0 deletions .changeset/cf-binding-remote-preview-fields.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"devflare": minor
---

Model the `remote` flag and preview/jurisdiction/migration fields on the core
resource bindings. KV, D1, R2, queue producers, and service bindings now accept
`remote?: boolean` (use the real remote resource during local dev), and KV
(`previewId`), D1 (`previewDatabaseId`, `migrationsTable`, `migrationsDir`), and
R2 (`previewBucketName`, `jurisdiction`) accept their preview/jurisdiction/
migration fields — all compiled to the matching wrangler keys. R2 buckets and
queue producers now accept an object form (`{ bucketName | queue, remote, … }`)
in addition to the existing string shorthand, which keeps working unchanged.
16 changes: 16 additions & 0 deletions .changeset/cf-cron-fetch-lint-secrets.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
"devflare": minor
---

Add build-time safety checks and cron validation. Cron expressions are now
validated against Cloudflare's 5-field grammar (`src/config/cron.ts`) at
config-parse time (a `.superRefine()` on `triggers.crons`) and in
`cf.scheduled.trigger(cron)`, so a typo like `cf.scheduled.trigger('* * *')`
fails with an actionable message instead of silently passing. The explicit
2-arg fetch-handler style requirement is now also checked at dev-start / `build`
time (`validateFetchHandlerStyle()` in the shared worker-load chokepoint),
reusing the exact same resolver and style markers as the request-time check —
zero false positives, with the runtime check kept as the backstop. Finally, a
successful **production** deploy prints a one-line hint that runtime secrets are
set via `wrangler secret put` / the dashboard (devflare never sends secret
values to Cloudflare); the hint never fires on preview or dry-run deploys.
11 changes: 11 additions & 0 deletions .changeset/cf-deploy-lifecycle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"devflare": minor
---

Add deploy-lifecycle parity. `devflare deploy --prod --percentage <n>` performs a
gradual/canary rollout (uploads a new version with `wrangler versions upload`,
then shifts `<n>%` of traffic to it via `wrangler versions deploy <id>@<n>`, with
an optional `--version` to pin the version keeping the remainder) — production
only, never shifting traffic on preview/dry-run. New `devflare tail` command
streams a deployed worker's live logs over Cloudflare's tail API (`--format
pretty|json`, clean teardown on exit).
11 changes: 11 additions & 0 deletions .changeset/cf-local-dev-wiring.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"devflare": minor
---

Wire deploy-modeled-only bindings into local development. Analytics Engine now
binds in local dev (Miniflare's write-only no-op stub, so `writeDataPoint()` no
longer throws), tail consumers are delivered locally when the consumer Worker is
present in the same dev instance (the tail handler was already testable via
`cf.tail.trigger()`), and the mTLS `remote` flag is forwarded to the local
binding so deploy and local dev agree on the binding shape. Wired consistently
across the dev server, the cross-process bridge, and the test context.
10 changes: 10 additions & 0 deletions .changeset/cf-stale-claims.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"devflare": patch
---

Correct stale offline-support classifications. Durable Objects and Service
bindings are no longer mislabelled "no offline support" — they run fully locally
under `createTestContext()` (Miniflare executes the DO class / resolves the
service binding), classified honestly as offline-native with the caveat that
there is no pure in-memory `createMockEnv()` mock for them. (Vectorize was
reclassified to an offline fixture in the previous release.)
14 changes: 14 additions & 0 deletions .changeset/cf-stream-vpc-flagship-bindings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"devflare": minor
---

Add first-class support for three more Cloudflare bindings: **Stream**
(`bindings.stream`), **VPC** (`bindings.vpcServices` / `bindings.vpcNetworks`),
and **Flagship** (`bindings.flagship`). Each is schema-validated, compiled to the
matching wrangler keys (`stream`, `vpc_services`, `vpc_networks`, `flagship`),
typed on the generated `env`, and documented in the support matrix. Stream runs
locally through Miniflare with a deterministic pure mock (`createMockStreamBinding`)
for hosted operations; Flagship has a configured-value pure mock
(`createMockFlagshipBinding`) — its local Miniflare plugin returns call defaults,
not evaluated flags; VPC services/networks are a remote boundary (Miniflare only
proxies them) testable via a custom fake injected through `createMockEnv`.
13 changes: 13 additions & 0 deletions .changeset/cf-test-dx.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"devflare": minor
---

Close the test/offline DX gaps. New `createMockVectorize()` (in-memory vector
store with cosine `query`, metadata filters, insert/upsert/delete/getByIds) and
`createMockAnalyticsEngine()` (write-only recording stub) let you unit-test those
bindings offline; Vectorize is reclassified to an offline fixture. New
`cf.alarm.trigger()` fires a Durable Object `alarm()` handler in tests, the same
way the runtime does. And `createOfflineBindings()` now auto-wires the KV/D1/R2/
queues mocks when those bindings are declared without an explicit fixture, so
`env.MY_KV` is bound offline instead of undefined (an explicit fixture still
overrides).
14 changes: 14 additions & 0 deletions .changeset/cf11-deployments-subcommand.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"devflare": minor
---

Add a read-only `devflare productions deployments` subcommand that lists a
Worker's full chronological deployment history (deployed-at, deployment id,
strategy, per-version traffic split, source, triggered-by, and message) via the
already-wired account API — the same read path `productions list` / `versions`
use, with no new write surface. Previously only the latest deployment summary
(`list`) and per-version timestamps (`versions`) were exposed.

Also documents the deploy-only `observability`, `placement`, and `limits`
top-level config keys in the Cloudflare support matrix (they were already
modeled and compiled; only their support tier was undocumented).
15 changes: 15 additions & 0 deletions .changeset/cf13-sendemail-offline-parity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
"devflare": minor
---

Bring the `sendEmail` binding to full pure-offline test parity. `createOfflineEnv()`
and `createMockEnv({ sendEmail })` now auto-wire a deterministic
`createMockSendEmail()` — a recording SendEmail mock that captures every
dispatched message into `.sentEmails` while enforcing the configured
sender/destination allow-lists — so `env.MY_EMAIL.send(...)` is assertable in
pure unit tests without Miniflare. `describeOfflineSupport('sendEmail')` is now
classified `offline-native` (previously it fell through to a false
`remote-boundary`). `createMockSendEmail` and the underlying
`createLocalSendEmailBinding` are exported from `devflare/test`. This was the last
mockable binding without offline auto-wiring; every binding family is now both
auto-wired offline and classified in the support matrix.
16 changes: 16 additions & 0 deletions .changeset/cf15-server-livereload-cf.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
"devflare": minor
---

Add two more local-dev `server` options, threaded into Miniflare's
`CoreSharedOptions` alongside the existing `https`/`inspectorPort`/`upstream`:

- `server.liveReload` — inject Miniflare's in-browser live-reload script so the
page auto-refreshes when the dev runtime reloads (complements Devflare's own
source watcher).
- `server.cf` — override the local `request.cf` (`IncomingRequestCfProperties`):
`false` omits it, a string is a path to a JSON file, and an object injects
custom cf metadata (colo, country, TLS, bot management, …) for testing cf-aware
code under `devflare dev` without Cloudflare.

Both are local-dev only with no deploy effect.
13 changes: 13 additions & 0 deletions .changeset/cf17-streaming-tail-environment-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"devflare": patch
---

Fix `streamingTailConsumers` rejecting `environment` at config-parse time.
Wrangler's `StreamingTailConsumer` accepts only `service` (`additionalProperties:
false`) — unlike `tailConsumers`, it has no `environment` field. The object form
previously modeled an optional `environment` (mirrored from `tailConsumers`),
which devflare accepted and compiled into the Wrangler config, so a config that
set it validated locally but failed at deploy. `environment` is now removed from
the streaming-tail schema, input type, and compiler output, so it is rejected up
front with a clear error — keeping local validation equivalent to a deploy-valid
config. (The regular `tailConsumers` `environment` field is unchanged.)
14 changes: 14 additions & 0 deletions .changeset/cf19-do-environment-subfield.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"devflare": minor
---

Model the Durable Objects binding `environment` sub-field. A cross-worker DO
binding (`scriptName` set) may now carry `environment` — the service-environment
of the target script — which compiles to wrangler's
`durable_objects.bindings[].environment`. Previously the field was unmodeled and,
because the DO binding predicate is not strict, a user-supplied `environment` was
silently dropped before deploy (validate-locally ≠ deploy-valid). It is now
threaded through normalization and emitted for cross-worker DOs only (a local DO
without `scriptName` drops it). This brings per-binding `environment` support in
line with wrangler across every binding type that accepts it (service bindings,
dispatch-namespace outbound, and now Durable Objects).
14 changes: 14 additions & 0 deletions .changeset/cf21-service-environment-fold.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"devflare": patch
---

Fix service bindings emitting an unsupported `environment` field. Wrangler's
`services` config item is `additionalProperties: false` and addresses a target
environment via the service **name** (`<worker_name>-<environment_name>`), not a
separate `environment` field — so a config that set `environment` on a service
binding compiled to a wrangler config that fails deploy validation. The
ergonomic `environment` input is kept, but it is now **folded into the emitted
`service` name** (`<service>-<environment>`) instead of emitted as a separate
field, so local validation once again matches a deploy-valid config. (Local
Miniflare wiring already used the base service name — environments are a deploy
concept.)
19 changes: 19 additions & 0 deletions .changeset/cf25-route-flags-and-dev-knobs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
"devflare": minor
---

Fix route flags being emitted on the wrong route type, and add the remaining
local-dev `server` knobs.

- **Route `enabled` / `previews_enabled`** are valid only on a **custom-domain**
route — wrangler's `zone_id` / `zone_name` route shapes are
`additionalProperties: false` and reject them. Devflare now rejects them at
config-parse time on non-custom-domain routes (with a clear error) and emits
them only for custom-domain routes, so a config that validates locally is
deploy-valid (previously `{ pattern, zone_id, enabled: true }` parsed but
failed at deploy).
- **`server.inspectorHost`**, **`server.verbose`**, and **`server.logRequests`**
are now accepted on the dev `server` config and threaded into Miniflare's
shared options — the remaining user-facing local-dev knobs alongside
`https`/`inspectorPort`/`upstream`/`liveReload`/`cf`. Local-dev only, no deploy
effect.
13 changes: 13 additions & 0 deletions .changeset/cf28-server-public-url.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"devflare": patch
---

Add the `server.publicUrl` local-dev knob.

`publicUrl` is the public-facing URL the local dev runtime advertises for itself
(served on Miniflare's `/core/public-url` loopback; otherwise the runtime entry
URL) — set it when the dev runtime sits behind a reverse proxy, tunnel, or custom
domain so the Worker reports the externally-visible origin. It maps to Miniflare's
`publicUrl` and is the final user-facing `CoreSharedOptions` knob, a sibling of the
already-wired `upstream`/`cf`/`liveReload`. Local-dev only — no deploy effect (no
wrangler analogue).
31 changes: 31 additions & 0 deletions .changeset/cf9-config-coverage-gaps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
"devflare": minor
---

Close the remaining Cloudflare config-coverage gaps found by a fresh
dependency-grounded re-investigation (wrangler 4.85.0 / miniflare 4.20260424.0 /
workers-types 4.20260426.1). Each field mirrors an existing sibling and stays
backward-compatible.

Locally wired into dev/test Miniflare:
- Queue producer `deliveryDelay` (→ `delivery_delay`).
- Service binding `props` (object exposed to the target Worker via `ctx.props`).
- `streamingTailConsumers` (→ `streaming_tail_consumers`, wired to Miniflare
`streamingTails`, a full twin of `tailConsumers`).
- `server` config now also accepts `https` / `httpsKeyPath` / `httpsCertPath` /
`inspectorPort` / `upstream` (local HTTPS dev, custom inspector port, upstream).
- Cache API contents now persist across dev-server restarts (`cachePersist`).
- New dev/test-only `outboundService` option to route a Worker's outbound
`fetch()` to a named service for local cross-service testing.

Compiled for deploy:
- Queue consumer `visibilityTimeoutMs` (→ `visibility_timeout_ms`).
- Top-level `complianceRegion` (`'public' | 'fedramp_high'`).
- Top-level `workersDev` toggle (was hardcoded `true`; still defaults to `true`).
- Custom-domain route `enabled` / `previewsEnabled`.
- `sendEmail` binding `remote` flag — emitted for deploy; Miniflare has no local
`remote` for `send_email`, so it is a deploy-time directive (stripped locally,
same as mTLS).

Legacy Worker `site` (static assets) is documented as passthrough-reachable via
`wrangler.passthrough` (superseded by `assets`).
10 changes: 10 additions & 0 deletions .changeset/ci-quality-gates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"devflare": patch
---

Fix default service-binding RPC worker discovery: `resolveServiceBindings` /
`findDefaultServiceWorkerEntrypoint` now also resolve a package's root-level
`worker.{ts,js}` (not only `src/worker.{ts,js}`), so a referenced worker that
keeps its entrypoint at the package root exposes its default RPC surface in
local tests and dev. (Also: internal quality gates — biome lint is now enforced
on the published package and releases are gated on typecheck + unit tests.)
11 changes: 11 additions & 0 deletions .changeset/cloudflare-deploy-policy-flags.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"devflare": minor
---

Add three first-class top-level Cloudflare deploy-policy config options: `logpush`, `uploadSourceMaps`, and `keepVars` (all `boolean`).

- `logpush` — send Trace Events from this Worker to Workers Logpush (does not create a Logpush job). Compiles to the Wrangler `logpush` key.
- `uploadSourceMaps` — include source maps when uploading this Worker. Compiles to the Wrangler `upload_source_maps` key.
- `keepVars` — keep dashboard-managed vars when Wrangler deploys this Worker (default `false`). Compiles to the Wrangler `keep_vars` key.

All three are per-environment overridable like other deploy-surface scalars. They previously required `wrangler.passthrough`.
22 changes: 22 additions & 0 deletions .changeset/cloudflare-matrix-accuracy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
"devflare": patch
---

Make the Cloudflare support documentation accurate and surface offline-binding gaps:

- Reconcile the docs-site support labels with the authoritative support matrix:
Hyperdrive, Browser Rendering, Worker Loaders, Images, Media Transformations,
and Analytics Engine are now marked **Limited** (each has a code-backed local
gap — e.g. Hyperdrive `connect()` and Worker Loaders `getDurableObjectClass()`
throw) instead of overstating them as Full.
- Correct the matrix's Analytics Engine classification: it is **not** an inherent
remote-only boundary — it is simply not yet wired into the local Miniflare
worker (Miniflare's native plugin is a write-shape-only no-op).
- Document that Static Assets (`assets`) and cross-worker Tail consumers
(`tailConsumers`) are compiled for deploy but not served/delivered locally, and
that Cron triggers' scheduled handlers are locally invokable via the test layer
(distinct from the wired `files.tail` handler surface).
- `createOfflineEnv()` / `createOfflineBindings()` now report core storage
bindings (KV/D1/R2/Queues/Durable Objects/Services) that are present in config
but only available via `createTestContext()` as explicit `missingFixtures`
entries, instead of leaving `env.X` silently `undefined`.
11 changes: 11 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "next",
"updateInternalDependencies": "patch",
"ignore": []
}
9 changes: 9 additions & 0 deletions .changeset/deploy-secrets-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"devflare": patch
---

Clarify the Cloudflare permission-group display-name fallback warning: it now
points maintainers at `refresh-permission-groups` (which regenerates the verified
ids) instead of asking them to hand-edit the generated id map. Also adds a deploy
& secrets maturity guide (auto-provisioning matrix, partial-deploy orphan
behavior, secrets boundary, per-environment scoping, permission-group refresh).
5 changes: 5 additions & 0 deletions .changeset/dev-server-host-port.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"devflare": minor
---

Add `server` config option to set the `devflare dev` runtime instance host and port. Configure `server: { host, port }` in `devflare.config.ts` to control the address the local Miniflare runtime binds to. CLI flags (`--runtime-port`, `--runtime-host`) and environment variables (`DEVFLARE_RUNTIME_PORT`, `DEVFLARE_RUNTIME_HOST`) take precedence over the config value, which in turn overrides the `127.0.0.1:8787` default.
24 changes: 24 additions & 0 deletions .changeset/docs-contract-honesty.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
"devflare": patch
---

Docs & contract-honesty fixes:

- The README `devflare/config` row listed ~40 names that the lightweight config
entry never exported; it now lists the real surface (`defineConfig`, `env`,
`preview`, `ref`). The doc-integrity guard that should have caught this was
validating the wrong module (`src/config` instead of `src/config-entry`) — now
fixed, plus a new reverse guard asserts the exhaustively-listed entrypoints
document every public export, and a guard checks every README `/docs/` link
resolves to a real slug.
- Document the previously-undocumented `vars` export (and the config error
classes) on the `devflare` row; note that `devflare/vite` re-exports Vite's
types (so type-checking it needs `vite` installed); fix two broken README
`/docs/` links; add `files.tail` to the full config examples.
- Align `DEFAULT_BRIDGE_PORT`/`DEFAULT_HTTP_PORT` to the real dev runtime ports
(8787/8788) — the bare bridge-client auto-connect fallback pointed at a dead
8686 port.
- Remove the contradictory orphan `event` control-message shape from the v2 aux
vocabulary before the wire surface freezes (the live consumer uses the
`EventMsg { topic, data }` shape); drop stale "to be implemented" comments from
the CLI dispatcher; clarify that `test:coverage` is unit-only.
10 changes: 10 additions & 0 deletions .changeset/fix-typed-env-vars-proxy-assignability.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"devflare": patch
---

Fix the typed `env` and `vars` runtime proxies so they are assignable to an
augmented `DevflareEnv` / `DevflareVars`. The proxy factory inferred its type
parameter from the internal getter (`Record<string, unknown>`) instead of the
exported type, so any consumer that declared `vars` (giving `DevflareEnv` /
`DevflareVars` required keys) hit a type error when importing `env` / `vars`
from `devflare/runtime`. The proxies now carry their declared types explicitly.
Loading
Loading