Case management
- fix(cases): Number case panel hotkeys in tab order (#3985)
- test(cases): Cover deleting an already-removed case field (#4077)
- fix(cases): Reject invalid timestamp case field values (#4079)
Tables
- feat(tables): Sort the tables list by name, created or updated (#4064)
- fix(tables): Render quoted JSON and text column defaults (#4078)
Agents
- feat(agents): Validate first-class LLM provider keys before save (#3922)
- fix(agents): Classify managed LLM provider and gateway outages (#4026)
- fix(agents): Classify missing provider credentials as a user error (#4073)
- fix(agents): Classify Bedrock AssumeRole denials as user errors (#4080)
Tracecat MCP
- fix(mcp): Fix workflow and action descriptions in MCP authoring (#4000)
- fix(mcp): Request offline_access when clients omit scope (#4071)
Integrations
- fix(integrations): Send PKCE for custom OAuth providers (#4062)
API
- fix(api): Return 400 for invalid workflow control flow instead of 500 (#3797)
- fix(api): Return 422 for malformed secret IDs (#4074)
- fix(api): Return 400 for security-key sign-in without keys (#4075)
- fix(api): Skip locked API key last_used_at writes (#4076)
User interface
- fix(ui): Keep case count visible and rename search modes (#3977)
- feat(ui): Show build details in platform settings (#4069)
Infrastructure
- fix(infra): Deny same-account sts:AssumeRole on the Fargate executor (#4082)
Full changelog: 1.4.0...1.5.0-alpha.1