What's Changed
- Retry Windows safe move rename locks by @GrahamCampbell in #293
- Add a v4 upgrade guide by @mnapoli in #277
- Refactor readme by @GrahamCampbell in #294
- Clarify 3.x README installation by @GrahamCampbell in #295
- Add test migration foundation tooling by @GrahamCampbell in #296
- Remove unused aws4 dependency by @GrahamCampbell in #297
- Migrate function package compiler tests by @GrahamCampbell in #298
- Migrate layer package compiler tests by @GrahamCampbell in #299
- Add remote artifact deploy coverage by @GrahamCampbell in #300
- Migrate S3 and Cognito event coverage by @GrahamCampbell in #301
- Migrate API Gateway package compiler tests by @GrahamCampbell in #302
- Refactor API Gateway low-level compiler tests by @GrahamCampbell in #303
- Migrate API Gateway lifecycle hack tests by @GrahamCampbell in #304
- Migrate WebSocket compiler tests by @GrahamCampbell in #305
- Refactor leaf event compiler tests by @GrahamCampbell in #306
- Migrate stream compiler tests by @GrahamCampbell in #307
- Refactor CloudWatch log compiler tests by @GrahamCampbell in #308
- Refactor CloudFront compiler tests by @GrahamCampbell in #309
- Migrate check-for-changes deploy tests by @GrahamCampbell in #310
- Migrate deploy lifecycle test stubs by @GrahamCampbell in #311
- Migrate Lambda action plugin tests by @GrahamCampbell in #312
- Migrate invoke local input tests by @GrahamCampbell in #313
- Migrate remove command lifecycle tests by @GrahamCampbell in #314
- Migrate AWS operational info tests by @GrahamCampbell in #315
- Migrate AWS provider helper tests by @GrahamCampbell in #316
- Migrate AWS common helper tests by @GrahamCampbell in #317
- Migrate AWS package and deploy helper tests by @GrahamCampbell in #318
- Modernize AWS stub-map test callers by @GrahamCampbell in #319
- Replace package service fixture wrapper by @GrahamCampbell in #320
- Replace core fixture wrappers by @GrahamCampbell in #321
- Replace small core Serverless fakes by @GrahamCampbell in #322
- Replace commands fixture wrappers by @GrahamCampbell in #323
- Replace variable source Serverless fakes by @GrahamCampbell in #324
- Replace non-AWS plugin Serverless fakes by @GrahamCampbell in #325
- Replace package ZIP service Serverless fake by @GrahamCampbell in #326
- Replace utility and class Serverless fakes by @GrahamCampbell in #327
- Remove temporary test migration artifacts by @GrahamCampbell in #328
- Include SnapStart in Lambda version hashes by @GrahamCampbell in #330
- Harden target alias dependencies by @GrahamCampbell in #331
- Clean up 4.x target alias merge by @GrahamCampbell in #332
- Support qualified existing event targets by @GrahamCampbell in #333
- Propagate function conditions to generated resources by @GrahamCampbell in #334
- Cache custom-resource artifacts by content by @GrahamCampbell in #335
- Read deprecation environment at call time by @GrahamCampbell in #337
- Only replace S3 notification configs owned by the function by @GrahamCampbell in #336
- Make existing-event delete cleanup idempotent by @GrahamCampbell in #338
- Allow Cognito permission cleanup for removed functions by @GrahamCampbell in #339
- Tolerate denied S3 notification cleanup on delete by @GrahamCampbell in #340
- Fix existing S3 target migration cleanup by @GrahamCampbell in #341
- Pin Cognito update-path missing-pool guard by @GrahamCampbell in #342
- Clean up S3 notifications on rename migrations by @GrahamCampbell in #343
- Tighten Cognito migration IAM by @GrahamCampbell in #344
- Regenerate missing custom-resource artifacts on copy by @GrahamCampbell in #345
- Regenerate missing ajv validator artifacts on read by @GrahamCampbell in #346
- Isolate health-status test and clear artifact copy cache by @GrahamCampbell in #347
- Take over conflicted Lambda permissions by @GrahamCampbell in #348
- Serialize existing-event custom resources by @GrahamCampbell in #349
- Document condition semantics by @GrahamCampbell in #351
- Upgrade to mocha 12.0.0-beta-9.4 by @GrahamCampbell in #350
- Fail fast for conditional async destinations by @GrahamCampbell in #352
- Pin async destination condition mismatch by @GrahamCampbell in #353
- Constrain function name to the Lambda character set by @GrahamCampbell in #354
- Align function name schema tests with the 4.x harness by @GrahamCampbell in #355
- Pin alias targeting for new buckets and pools by @GrahamCampbell in #356
- Add Lambda Durable Functions support by @GrahamCampbell in #329
- Standardize temp file random suffixes by @GrahamCampbell in #357
- Update the upgrading guide to note pruning and durable functions by @GrahamCampbell in #358
Full Changelog: v4.0.0-alpha.1...v4.0.0-beta.0