From be2d88cb5033a3ac22e45ae947a811c4cfc2530b Mon Sep 17 00:00:00 2001
From: amianthus <49116958+SirTenzin@users.noreply.github.com>
Date: Tue, 28 Apr 2026 11:20:38 +0100
Subject: [PATCH 1/6] =?UTF-8?q?fix:=20=F0=9F=90=9B=20save=20changes=20bar?=
=?UTF-8?q?=20not=20showing=20for=20past=20due?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vite/src/hooks/stores/useProductStore.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/vite/src/hooks/stores/useProductStore.ts b/vite/src/hooks/stores/useProductStore.ts
index 1f595d53e..5724b1793 100644
--- a/vite/src/hooks/stores/useProductStore.ts
+++ b/vite/src/hooks/stores/useProductStore.ts
@@ -81,7 +81,8 @@ export const useHasChanges = () => {
const hasChanges =
!comparison.itemsSame ||
!comparison.detailsSame ||
- !comparison.freeTrialsSame;
+ !comparison.freeTrialsSame ||
+ !comparison.configSame;
return hasChanges;
}, [product, baseProduct, features]);
From 00baab31acac95424304c8cef14d793d089941a4 Mon Sep 17 00:00:00 2001
From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com>
Date: Tue, 28 Apr 2026 12:10:56 +0000
Subject: [PATCH 2/6] Fix broken internal links across docs
Generated-By: mintlify-agent
---
.../api-reference/billing/billingUpdate.mdx | 2 +-
.../api-reference/plans/createPlan.mdx | 2 +-
.../api-reference/plans/updatePlan.mdx | 2 +-
apps/docs/mintlify/cli/getting-started.mdx | 4 +-
.../documentation/concepts/subscriptions.mdx | 6 +-
.../customers/feature-entities.mdx | 2 +-
.../customers/managing-balances.mdx | 4 +-
.../documentation/customers/payment-flow.mdx | 2 +-
.../customers/updating-subscriptions.mdx | 2 +-
.../modelling-pricing/add-ons.mdx | 2 +-
.../modelling-pricing/recurring.mdx | 4 +-
.../modelling-pricing/sub-entity-plans.mdx | 4 +-
.../docs/mintlify/react/hooks/useCustomer.mdx | 2 +-
apps/docs/mintlify/understanding.mdx | 77 -------------------
14 files changed, 19 insertions(+), 96 deletions(-)
delete mode 100644 apps/docs/mintlify/understanding.mdx
diff --git a/apps/docs/mintlify/api-reference/billing/billingUpdate.mdx b/apps/docs/mintlify/api-reference/billing/billingUpdate.mdx
index a781761ac..c4320c63f 100644
--- a/apps/docs/mintlify/api-reference/billing/billingUpdate.mdx
+++ b/apps/docs/mintlify/api-reference/billing/billingUpdate.mdx
@@ -8,7 +8,7 @@ import { DynamicResponseField } from "/components/dynamic-response-field.jsx";
import { DynamicResponseExample } from "/components/dynamic-response-example.jsx";
- The update endpoint modifies an existing subscription. Use this to change prepaid quantities, cancel subscriptions, or modify plan configuration. For subscribing to a new plan, use [attach](/api-reference/billing/billingAttach) instead.
+ The update endpoint modifies an existing subscription. Use this to change prepaid quantities, cancel subscriptions, or modify plan configuration. For subscribing to a new plan, use [attach](/api-reference/billing/attach) instead.
### Common Use Cases
diff --git a/apps/docs/mintlify/api-reference/plans/createPlan.mdx b/apps/docs/mintlify/api-reference/plans/createPlan.mdx
index 3d136f99c..1d1561772 100644
--- a/apps/docs/mintlify/api-reference/plans/createPlan.mdx
+++ b/apps/docs/mintlify/api-reference/plans/createPlan.mdx
@@ -7,7 +7,7 @@ import { DynamicParamField } from "/components/dynamic-param-field.jsx";
import { DynamicResponseField } from "/components/dynamic-response-field.jsx";
import { DynamicResponseExample } from "/components/dynamic-response-example.jsx";
-Creates a new plan with optional base price and feature configurations. See [How plans work](/documentation/pricing/plans) for concepts and [Adding features to plans](/documentation/pricing/plan-features) for item configuration.
+Creates a new plan with optional base price and feature configurations. See [How plans work](/documentation/concepts/plans) for concepts and [Adding features to plans](/documentation/concepts/plan-items) for item configuration.
### Plan Configuration
diff --git a/apps/docs/mintlify/api-reference/plans/updatePlan.mdx b/apps/docs/mintlify/api-reference/plans/updatePlan.mdx
index 93974b37f..f28cfe93c 100644
--- a/apps/docs/mintlify/api-reference/plans/updatePlan.mdx
+++ b/apps/docs/mintlify/api-reference/plans/updatePlan.mdx
@@ -7,7 +7,7 @@ import { DynamicParamField } from "/components/dynamic-param-field.jsx";
import { DynamicResponseField } from "/components/dynamic-response-field.jsx";
import { DynamicResponseExample } from "/components/dynamic-response-example.jsx";
-Updates an existing plan. By default, creates a new version of the plan. See [Adding features to plans](/documentation/pricing/plan-features) for item configuration.
+Updates an existing plan. By default, creates a new version of the plan. See [Adding features to plans](/documentation/concepts/plan-items) for item configuration.
Updates create a new plan version by default. Existing customers remain on their current version until their subscription renews or they explicitly upgrade.
diff --git a/apps/docs/mintlify/cli/getting-started.mdx b/apps/docs/mintlify/cli/getting-started.mdx
index 661f98c91..03201c41c 100644
--- a/apps/docs/mintlify/cli/getting-started.mdx
+++ b/apps/docs/mintlify/cli/getting-started.mdx
@@ -61,7 +61,7 @@ You'll be prompted to choose a starter template:
| **Linear** | Per-seat pricing with team limits |
| **OpenAI** | Credit system mapping multiple AI models |
-Pick whichever is closest to your use case, or start from scratch and build your own using the [config reference](/api-reference/cli/config).
+Pick whichever is closest to your use case, or start from scratch and build your own using the [config reference](/cli/config).
## Push and pull
@@ -115,7 +115,7 @@ Learn how to define features, plans, and pricing in your `autumn.config.ts`.
Complete reference for features, plans, and plan features
diff --git a/apps/docs/mintlify/documentation/concepts/subscriptions.mdx b/apps/docs/mintlify/documentation/concepts/subscriptions.mdx
index 3552a2b15..5052e0ddb 100644
--- a/apps/docs/mintlify/documentation/concepts/subscriptions.mdx
+++ b/apps/docs/mintlify/documentation/concepts/subscriptions.mdx
@@ -12,7 +12,7 @@ flowchart LR
S -->|provisions| B[Balances]
```
-When a subscription is created, Autumn provisions [balances](/documentation/customers/balances) for each feature in the plan. Balances determine what the customer can access and track how much they've used. For example, a Pro plan might grant 1,000 API requests per month—this becomes a balance that decrements as the customer uses your product.
+When a subscription is created, Autumn provisions [balances](/documentation/concepts/balances) for each feature in the plan. Balances determine what the customer can access and track how much they've used. For example, a Pro plan might grant 1,000 API requests per month—this becomes a balance that decrements as the customer uses your product.
Balances can also be created for [credit systems](/documentation/modelling-pricing/credit-systems) (eg, $10 credits per month) and boolean toggle features (eg, access to a premium analytics dashboard).
@@ -27,10 +27,10 @@ Balances can also be created for [credit systems](/documentation/modelling-prici
| `expired` | Subscription has ended |
-
+
Learn about the checkout and payment flow
-
+
Handle upgrades, downgrades and cancellations
diff --git a/apps/docs/mintlify/documentation/customers/feature-entities.mdx b/apps/docs/mintlify/documentation/customers/feature-entities.mdx
index 545c34f9d..f5908aa4a 100644
--- a/apps/docs/mintlify/documentation/customers/feature-entities.mdx
+++ b/apps/docs/mintlify/documentation/customers/feature-entities.mdx
@@ -10,7 +10,7 @@ Entities are sub accounts of a customer. For example, you may have a product tha
There are two ways you can handle entities depending on your use case.
1. **Entity-level balances**: this is the simplest way of handling entities, and keeps everything under 1 subscription. This is useful when all entities get the same features and limits.
-2. **Entity-level subscriptions**: if an entity can have its own subscription tiers (ie basic seats, pro seats), then you can attach a product directly at the entity level by passing the [entity ID](/api-reference/billing/billingAttach#body-entity-id) into an attach function. Each will be under its own subscription in Stripe with the billing cycles synced.
+2. **Entity-level subscriptions**: if an entity can have its own subscription tiers (ie basic seats, pro seats), then you can attach a product directly at the entity level by passing the [entity ID](/api-reference/billing/attach#body-entity-id) into an attach function. Each will be under its own subscription in Stripe with the billing cycles synced.
**Example**
diff --git a/apps/docs/mintlify/documentation/customers/managing-balances.mdx b/apps/docs/mintlify/documentation/customers/managing-balances.mdx
index dd7272aaa..2125c28cc 100644
--- a/apps/docs/mintlify/documentation/customers/managing-balances.mdx
+++ b/apps/docs/mintlify/documentation/customers/managing-balances.mdx
@@ -76,7 +76,7 @@ curl -X POST https://api.useautumn.com/v1/balances/create \
-See the [Create Balance API reference](/api-reference/features/create-balance) for all available parameters.
+See the [Create Balance API reference](/api-reference/balances/createBalance) for all available parameters.
## Updating Balances (API)
@@ -116,7 +116,7 @@ curl -X POST https://api.useautumn.com/v1/customers/user_123/balances \
-See the [Set Feature Balance API reference](/api-reference/features/set-feature-balances) for all available parameters.
+See the [Set Feature Balance API reference](/api-reference/balances/updateBalance) for all available parameters.
## Querying Balances
diff --git a/apps/docs/mintlify/documentation/customers/payment-flow.mdx b/apps/docs/mintlify/documentation/customers/payment-flow.mdx
index d12efb96c..e563c6645 100644
--- a/apps/docs/mintlify/documentation/customers/payment-flow.mdx
+++ b/apps/docs/mintlify/documentation/customers/payment-flow.mdx
@@ -196,4 +196,4 @@ The `billing.attach` response has two key fields:
**`payment_url`** — a URL the customer should be redirected to, or `null` if no redirect is needed.
-**`required_action`** — present when payment couldn't be processed automatically. See [Edge Cases](/documentation/customers/billing/edge-cases) for details on handling 3DS, payment failures, and retries.
+**`required_action`** — present when payment couldn't be processed automatically. See [Edge Cases](/documentation/customers/edge-cases) for details on handling 3DS, payment failures, and retries.
diff --git a/apps/docs/mintlify/documentation/customers/updating-subscriptions.mdx b/apps/docs/mintlify/documentation/customers/updating-subscriptions.mdx
index 3d6012d7c..b5555316b 100644
--- a/apps/docs/mintlify/documentation/customers/updating-subscriptions.mdx
+++ b/apps/docs/mintlify/documentation/customers/updating-subscriptions.mdx
@@ -168,7 +168,7 @@ By default, updating a subscription with billing changes will generate an invoic
### Previewing changes before executing
-Similar to [`billing.previewAttach`](/documentation/customers/attaching-plans#step-1-preview-the-change), you can use `billing.previewUpdate` to see exactly what will be charged before making changes. This returns line items and totals that you can display in a confirmation UI.
+Similar to [`billing.previewAttach`](/documentation/customers/payment-flow#step-1-preview-the-charge), you can use `billing.previewUpdate` to see exactly what will be charged before making changes. This returns line items and totals that you can display in a confirmation UI.
diff --git a/apps/docs/mintlify/documentation/modelling-pricing/add-ons.mdx b/apps/docs/mintlify/documentation/modelling-pricing/add-ons.mdx
index 61de922fa..f4024e26e 100644
--- a/apps/docs/mintlify/documentation/modelling-pricing/add-ons.mdx
+++ b/apps/docs/mintlify/documentation/modelling-pricing/add-ons.mdx
@@ -148,7 +148,7 @@ const { data } = await autumn.checkout({
## Cancelling add-ons
-Cancel an add-on using the same [cancel](/documentation/customers/managing-subscriptions#cancellations) flow:
+Cancel an add-on using the same [cancel](/documentation/customers/subscription-lifecycle#cancellations) flow:
diff --git a/apps/docs/mintlify/documentation/modelling-pricing/recurring.mdx b/apps/docs/mintlify/documentation/modelling-pricing/recurring.mdx
index 0503a6b17..81c0a377d 100644
--- a/apps/docs/mintlify/documentation/modelling-pricing/recurring.mdx
+++ b/apps/docs/mintlify/documentation/modelling-pricing/recurring.mdx
@@ -56,7 +56,7 @@ Push changes with `atmn push`.
## Attaching a subscription
-Use [billing.attach](/documentation/customers/attaching-plans) to attach a subscription to a customer. With `redirectMode: "always"`, a checkout URL is always returned for the customer to complete payment or confirm the plan change.
+Use [billing.attach](/documentation/customers/payment-flow) to attach a subscription to a customer. With `redirectMode: "always"`, a checkout URL is always returned for the customer to complete payment or confirm the plan change.
@@ -212,7 +212,7 @@ This is useful when you want to offer an annual discount while still metering us
## Managing subscriptions
-Once a customer has an active subscription, you can manage upgrades, downgrades, and cancellations. See [Managing Subscriptions](/documentation/customers/s) for details on:
+Once a customer has an active subscription, you can manage upgrades, downgrades, and cancellations. See [Managing Subscriptions](/documentation/customers/subscription-lifecycle) for details on:
- **Upgrades** — prorated charges for switching to a higher-priced plan
- **Downgrades** — scheduled at end of billing period
diff --git a/apps/docs/mintlify/documentation/modelling-pricing/sub-entity-plans.mdx b/apps/docs/mintlify/documentation/modelling-pricing/sub-entity-plans.mdx
index 4f3bced93..cc27369f7 100644
--- a/apps/docs/mintlify/documentation/modelling-pricing/sub-entity-plans.mdx
+++ b/apps/docs/mintlify/documentation/modelling-pricing/sub-entity-plans.mdx
@@ -198,7 +198,7 @@ curl -X POST "https://api.useautumn.com/v1/check" \
## Upgrading an entity's plan
-To upgrade or downgrade an entity, attach the new plan with the same `entity_id`. The same [upgrade/downgrade](/documentation/customers/billing/subscription-lifecycle) logic applies:
+To upgrade or downgrade an entity, attach the new plan with the same `entity_id`. The same [upgrade/downgrade](/documentation/customers/subscription-lifecycle) logic applies:
@@ -233,7 +233,7 @@ curl -X POST "https://api.useautumn.com/v1/billing.attach" \
## Cancelling an entity's plan
-Use `billing.update` with `cancelAction` to cancel an entity's plan. The same [cancel/uncancel](/documentation/customers/billing/subscription-lifecycle#cancellations) behavior applies.
+Use `billing.update` with `cancelAction` to cancel an entity's plan. The same [cancel/uncancel](/documentation/customers/subscription-lifecycle#cancellations) behavior applies.
diff --git a/apps/docs/mintlify/react/hooks/useCustomer.mdx b/apps/docs/mintlify/react/hooks/useCustomer.mdx
index f8952d158..6b471c16d 100644
--- a/apps/docs/mintlify/react/hooks/useCustomer.mdx
+++ b/apps/docs/mintlify/react/hooks/useCustomer.mdx
@@ -126,7 +126,7 @@ export default function UpgradeButton() {
Open checkout URL in a new tab instead of redirecting.
-See the [API reference](/api-reference/billing/billingAttach) for all available parameters.
+See the [API reference](/api-reference/billing/attach) for all available parameters.
### `check()`
diff --git a/apps/docs/mintlify/understanding.mdx b/apps/docs/mintlify/understanding.mdx
deleted file mode 100644
index f3e1202e1..000000000
--- a/apps/docs/mintlify/understanding.mdx
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: Understanding how Autumn works
-sidebarTitle: Understand Autumn
-description: "Autumn is built to manage your feature access and your billing together. Learn how it all works."
----
-
-## The Autumn flow
-
-The typical Autumn flow looks like this:
-
-
-
-The dashboard is where you define which of your users get access to what, and how much they're charged for it. Here, you'll [create products](/products/create-product) and [manage your customers](/customers/managing-customers).
-
-
-From your application, when your customer wants to [purchase](/products/enabling-product) one of your price plans, the `attach` endpoint will return a Stripe checkout URL.
-
-Once they've purchased, Autumn grants access to the product's features that were defined in the dashboard.
-
-If the customer is already paying for a plan, this will automatically handle any [upgrades and downgrades](products/enabling-product#upgrades-and-downgrades) too.
-
-
-
-
-From your application, you can [check](/features/check) in real-time whether a customer has access to:
-
-- a product (eg, pro tier)
-- a feature balance (eg, 10 remaining credits)
-- a feature flag (eg, premium AI models)
-
-Autumn will return whether they're `allowed` access, and you can use this to control access to your features. When you want to update your pricing model, you can do so without changing any of your code.
-
-
-
-
-For your usage-based features, if Autumn tells you they're `allowed` access, you can [track their usage](/features/tracking-usage) to update their balance.
-
-This means Autumn can enforce any usage limits you set (ie, by returning `allowed: false` once they hit a balance of 0). It also allows you to charge for usage (eg, $1 per AI tokens used), if you have a usage-based pricing model.
-
-
-
-
-When using usage-based features, you'll typically want to [display the customer's balance](/api-reference/customers/get) to them. You can do this from the `customers` route or hook, which will return customer information, the product they've purchased, and the balance of any usage-based features.
-
-
-
-
-This means all of the logic that you would typically have to build yourself is done for you.
-
-- How do I limit usage of this feature to 10 per month, then reset?
-- How would I bill users who go over the limit?
-- How do I build in-app flows for upgrading, downgrading, cancelling?
-- What if I want add-ons, or credits?
-- My billing is at the org level. How do I track feature limits at the user level?
-- What happens to their usage if they upgrade, or downgrade, or cancel?
-- How can I block access if payment fails?
-- How would I migrate people if I change my pricing?
-- What should I do if I want a custom plan for different customers?
-
-Autumn takes care of all of this, and more.
-
-## Why use Autumn?
-
-Autumn is loved by developers, founders and fast-growing startups because it's easy to integrate and **billing never has to be touched again**.
-
-1. **The simplest integration you'll find** - Just 2 API calls to set up any pricing model. You don't need to deal with webhooks, state syncing, or deal with any of Stripe's APIs.
-2. **Enforce access limits** - Autumn knows who's paying for which product and what features they have access to. Just [check](/features/check.mdx) if a customer has access, then [track](/features/tracking-usage.mdx) any usage if needed.
-3. **Billing flows handled** - Upgrades, downgrades, failed payments, and more. Autumn takes care of it all, with customizable UI components that "just work" out of the box.
-4. **Make changes without touching code** - Make pricing changes, set custom plans, or launch new types of pricing without going through engineering. Versioning, grandfathering and migrations is easy through the Autumn dashboard.
-
-## What Autumn isn't
-
-- A Stripe billing replacement: although you don't need to deal with Stripe's APIs, you are still using Stripe's subscriptions, payments and invoicing.
-- Another metered billing product: Autumn easily handles usage-based billing up to 100 events per second, but there are many providers out there that specialize if you need more.
-- For purely sales-led companies: Autumn is designed to be used by product-led, or hybrid product-sales teams. If your customers only pay via custom invoices, Autumn is probably not for you.
-
-Now that you understand how Autumn works, check out one of the quickstart guides to get started!
From a8d56e7bde40a74f2857e5c7c117a699e73e677f Mon Sep 17 00:00:00 2001
From: Charlie Lamb
Date: Tue, 28 Apr 2026 13:41:20 +0100
Subject: [PATCH 3/6] chore: remove vite diff
---
vite/src/hooks/stores/useProductStore.ts | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/vite/src/hooks/stores/useProductStore.ts b/vite/src/hooks/stores/useProductStore.ts
index 5724b1793..1f595d53e 100644
--- a/vite/src/hooks/stores/useProductStore.ts
+++ b/vite/src/hooks/stores/useProductStore.ts
@@ -81,8 +81,7 @@ export const useHasChanges = () => {
const hasChanges =
!comparison.itemsSame ||
!comparison.detailsSame ||
- !comparison.freeTrialsSame ||
- !comparison.configSame;
+ !comparison.freeTrialsSame;
return hasChanges;
}, [product, baseProduct, features]);
From 8fa25603d9630d4b6f497c6a773dc19e0b6e0cbb Mon Sep 17 00:00:00 2001
From: Charlie Lamb
Date: Tue, 28 Apr 2026 13:42:48 +0100
Subject: [PATCH 4/6] chore: remove vite diff
---
vite/src/hooks/stores/useProductStore.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/vite/src/hooks/stores/useProductStore.ts b/vite/src/hooks/stores/useProductStore.ts
index 1f595d53e..5724b1793 100644
--- a/vite/src/hooks/stores/useProductStore.ts
+++ b/vite/src/hooks/stores/useProductStore.ts
@@ -81,7 +81,8 @@ export const useHasChanges = () => {
const hasChanges =
!comparison.itemsSame ||
!comparison.detailsSame ||
- !comparison.freeTrialsSame;
+ !comparison.freeTrialsSame ||
+ !comparison.configSame;
return hasChanges;
}, [product, baseProduct, features]);
From ed7d0785d67fa289bcb9e3725f8871a58b24de97 Mon Sep 17 00:00:00 2001
From: Charlie Lamb
Date: Tue, 28 Apr 2026 13:52:20 +0100
Subject: [PATCH 5/6] chore: optimize github actions
---
.github/workflows/server-typecheck.yml | 24 +++++++++++++++++++++
.github/workflows/server-unit-tests.yml | 24 +++++++++++++++++++++
.github/workflows/vite-build.yml | 28 +++++++++++++++++++++++++
.github/workflows/vite-unit-tests.yml | 26 +++++++++++++++++++++++
4 files changed, 102 insertions(+)
diff --git a/.github/workflows/server-typecheck.yml b/.github/workflows/server-typecheck.yml
index 9fb4283f2..95aa67a8e 100644
--- a/.github/workflows/server-typecheck.yml
+++ b/.github/workflows/server-typecheck.yml
@@ -3,9 +3,33 @@ name: Server Type Check
on:
pull_request:
+permissions:
+ contents: read
+ pull-requests: read
+
jobs:
+ changes:
+ name: Check changed files
+ runs-on: ubuntu-latest
+ outputs:
+ server: ${{ steps.filter.outputs.server }}
+ steps:
+ - name: Check changed files
+ id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ filters: |
+ server:
+ - "server/**"
+ - "shared/**"
+ - "package.json"
+ - "bun.lock"
+ - ".github/workflows/server-typecheck.yml"
+
typecheck:
name: Type Check
+ needs: changes
+ if: needs.changes.outputs.server == 'true'
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/server-unit-tests.yml b/.github/workflows/server-unit-tests.yml
index bdb743a1d..42371fc2c 100644
--- a/.github/workflows/server-unit-tests.yml
+++ b/.github/workflows/server-unit-tests.yml
@@ -3,9 +3,33 @@ name: Server Unit Tests
on:
pull_request:
+permissions:
+ contents: read
+ pull-requests: read
+
jobs:
+ changes:
+ name: Check changed files
+ runs-on: ubuntu-latest
+ outputs:
+ server: ${{ steps.filter.outputs.server }}
+ steps:
+ - name: Check changed files
+ id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ filters: |
+ server:
+ - "server/**"
+ - "shared/**"
+ - "package.json"
+ - "bun.lock"
+ - ".github/workflows/server-unit-tests.yml"
+
unit-tests:
name: Unit Tests
+ needs: changes
+ if: needs.changes.outputs.server == 'true'
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/vite-build.yml b/.github/workflows/vite-build.yml
index 71214f9c0..cde9aa061 100644
--- a/.github/workflows/vite-build.yml
+++ b/.github/workflows/vite-build.yml
@@ -3,9 +3,35 @@ name: Vite Build Check
on:
pull_request:
+permissions:
+ contents: read
+ pull-requests: read
+
jobs:
+ changes:
+ name: Check changed files
+ runs-on: ubuntu-latest
+ outputs:
+ vite: ${{ steps.filter.outputs.vite }}
+ steps:
+ - name: Check changed files
+ id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ filters: |
+ vite:
+ - "vite/**"
+ - "shared/**"
+ - "packages/atmn/**"
+ - "packages/autumn-js/**"
+ - "package.json"
+ - "bun.lock"
+ - ".github/workflows/vite-build.yml"
+
typecheck:
name: Type Check
+ needs: changes
+ if: needs.changes.outputs.vite == 'true'
runs-on: ubuntu-latest
steps:
@@ -25,6 +51,8 @@ jobs:
build:
name: Build
+ needs: changes
+ if: needs.changes.outputs.vite == 'true'
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/vite-unit-tests.yml b/.github/workflows/vite-unit-tests.yml
index db4708dc5..1f7cdd797 100644
--- a/.github/workflows/vite-unit-tests.yml
+++ b/.github/workflows/vite-unit-tests.yml
@@ -3,9 +3,35 @@ name: Vite Unit Tests
on:
pull_request:
+permissions:
+ contents: read
+ pull-requests: read
+
jobs:
+ changes:
+ name: Check changed files
+ runs-on: ubuntu-latest
+ outputs:
+ vite: ${{ steps.filter.outputs.vite }}
+ steps:
+ - name: Check changed files
+ id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ filters: |
+ vite:
+ - "vite/**"
+ - "shared/**"
+ - "packages/atmn/**"
+ - "packages/autumn-js/**"
+ - "package.json"
+ - "bun.lock"
+ - ".github/workflows/vite-unit-tests.yml"
+
unit-tests:
name: Unit Tests
+ needs: changes
+ if: needs.changes.outputs.vite == 'true'
runs-on: ubuntu-latest
steps:
From 89eb789401f698d733e4c56569f477b2d2053702 Mon Sep 17 00:00:00 2001
From: Charlie Lamb
Date: Tue, 28 Apr 2026 14:04:24 +0100
Subject: [PATCH 6/6] chore: use github action commit tag
---
.github/workflows/server-typecheck.yml | 2 +-
.github/workflows/server-unit-tests.yml | 2 +-
.github/workflows/vite-build.yml | 2 +-
.github/workflows/vite-unit-tests.yml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/server-typecheck.yml b/.github/workflows/server-typecheck.yml
index 95aa67a8e..a081ea20f 100644
--- a/.github/workflows/server-typecheck.yml
+++ b/.github/workflows/server-typecheck.yml
@@ -16,7 +16,7 @@ jobs:
steps:
- name: Check changed files
id: filter
- uses: dorny/paths-filter@v3
+ uses: dorny/paths-filter@6852f92c20ea7fd3b0c25de3b5112db3a98da050
with:
filters: |
server:
diff --git a/.github/workflows/server-unit-tests.yml b/.github/workflows/server-unit-tests.yml
index 42371fc2c..a12cae17b 100644
--- a/.github/workflows/server-unit-tests.yml
+++ b/.github/workflows/server-unit-tests.yml
@@ -16,7 +16,7 @@ jobs:
steps:
- name: Check changed files
id: filter
- uses: dorny/paths-filter@v3
+ uses: dorny/paths-filter@6852f92c20ea7fd3b0c25de3b5112db3a98da050
with:
filters: |
server:
diff --git a/.github/workflows/vite-build.yml b/.github/workflows/vite-build.yml
index cde9aa061..35917b017 100644
--- a/.github/workflows/vite-build.yml
+++ b/.github/workflows/vite-build.yml
@@ -16,7 +16,7 @@ jobs:
steps:
- name: Check changed files
id: filter
- uses: dorny/paths-filter@v3
+ uses: dorny/paths-filter@6852f92c20ea7fd3b0c25de3b5112db3a98da050
with:
filters: |
vite:
diff --git a/.github/workflows/vite-unit-tests.yml b/.github/workflows/vite-unit-tests.yml
index 1f7cdd797..915df4166 100644
--- a/.github/workflows/vite-unit-tests.yml
+++ b/.github/workflows/vite-unit-tests.yml
@@ -16,7 +16,7 @@ jobs:
steps:
- name: Check changed files
id: filter
- uses: dorny/paths-filter@v3
+ uses: dorny/paths-filter@6852f92c20ea7fd3b0c25de3b5112db3a98da050
with:
filters: |
vite: