Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
6fccbce
Add expiry to approval policies
deanhannigan Sep 21, 2026
952ab9e
Add per-plan escalation duration quota
deanhannigan Sep 21, 2026
630c74b
Honour policy expiry and plan cap when raising escalations
deanhannigan Sep 21, 2026
32dcf90
Add expiration and outcome to the policy modal
deanhannigan Sep 21, 2026
eef916c
Cover expiry capping and outcomes
deanhannigan Sep 21, 2026
61a9618
Merge remote-tracking branch 'origin/feat/approval-core-flows' into f…
deanhannigan Sep 21, 2026
af6c2fa
Merge remote-tracking branch 'origin/feat/approval-core-flows' into f…
deanhannigan Sep 21, 2026
e4fa5db
Type the resume job the same way as the notify job
deanhannigan Sep 21, 2026
85da37f
Summarise zero-approver policies by recipient
deanhannigan Sep 21, 2026
406f4bd
Merge remote-tracking branch 'origin/feat/approval-core-flows' into f…
deanhannigan Sep 21, 2026
bdabd13
Use the renamed duration field in the cleanup spec
deanhannigan Sep 21, 2026
2fbc6dc
Drop the never flag, no duration means never
deanhannigan Sep 21, 2026
123b182
Clear the cap notice once the expiry selection changes
deanhannigan Sep 21, 2026
3b69f43
Document the units on the duration fields
deanhannigan Sep 21, 2026
238f50a
Remove license generate path change
deanhannigan Sep 21, 2026
ff0b37e
Move the escalation duration constants beside the other escalation co…
deanhannigan Sep 21, 2026
d15cfe5
Assert the auto-approved request completes
deanhannigan Sep 21, 2026
3acafba
Fall back to the raw recipient type in the policy summary
deanhannigan Sep 21, 2026
ee8d081
Merge branch 'master' into feat/escalation-expiration
deanhannigan Sep 28, 2026
2b11f82
Preserve a within-ceiling expiry instead of snapping to a preset
deanhannigan Sep 28, 2026
8681565
Preserve a within-ceiling expiry instead of snapping to a preset
deanhannigan Sep 28, 2026
40c438a
Require a duration when an expiry outcome is set
deanhannigan Sep 28, 2026
b9031be
Assert resume job scheduling by payload and delay
deanhannigan Sep 28, 2026
2bc7c26
Shifted duration to shared core
deanhannigan Sep 28, 2026
254a179
DM only shows for Slack and Teams now
deanhannigan Sep 28, 2026
1c62446
Treat only a missing or unlimited quota as no ceiling
deanhannigan Sep 28, 2026
2272ff6
Merge branch 'master' into feat/escalation-expiration
deanhannigan Sep 29, 2026
b1551eb
Merge branch 'master' into feat/escalation-expiration
deanhannigan Sep 29, 2026
ad1cc38
Merge branch 'master' into feat/escalation-expiration
deanhannigan Sep 29, 2026
e078680
Merge branch 'master' into feat/escalation-expiration
deanhannigan Sep 30, 2026
4e2bf40
Merge branch 'master' into feat/escalation-expiration
deanhannigan Oct 1, 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 packages/backend-core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export * as docIds from "./docIds"
export * as security from "./security"
export * as sql from "./sql"
export * as csv from "./csv"
export * from "./utils/Duration"
export { Duration } from "@budibase/shared-core"
export * from "./Endpoint"
// Add context to tenancy for backwards compatibility
// only do this for external usages to prevent internal
Expand Down
2 changes: 1 addition & 1 deletion packages/backend-core/src/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export * from "./hashing"
export * from "./utils"
export * from "./stringUtils"
export * from "./Duration"
export { Duration } from "@budibase/shared-core"
export * from "./time"
export * from "./fetch"
export * from "./gzip"
Expand Down
2 changes: 1 addition & 1 deletion packages/backend-core/src/utils/session.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Duration } from "./Duration"
import { Duration } from "@budibase/shared-core"
import env from "../environment"

export function getSessionExpirySeconds() {
Expand Down
2 changes: 1 addition & 1 deletion packages/backend-core/src/utils/time.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Duration } from "./Duration"
import { Duration } from "@budibase/shared-core"

export async function time<T>(f: () => Promise<T>): Promise<[T, Duration]> {
const start = performance.now()
Expand Down
6 changes: 6 additions & 0 deletions packages/backend-core/tests/core/utilities/mocks/licenses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,12 @@ export const setAgentLogsQuota = (value: number) => {
return useLicense(license)
}

export const setEscalationDurationQuota = (value: number) => {
const license = cloneDeep(UNLIMITED_LICENSE)
license.quotas.constant.escalationDurationDays.value = value
return useLicense(license)
}

export const setUsersQuota = async (value: number) => {
const license = await getCachedLicense()
license.quotas.usage.static.users.value = value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@ export function quotas(): Quotas {
value: 1,
triggers: [],
},
escalationDurationDays: {
name: "Escalation Duration",
value: 3,
triggers: [],
},
},
}
}
Expand Down
Loading
Loading