Skip to content

Commit 34c2837

Browse files
authored
Merge branch 'main' into tl/comparaison-pages
2 parents 88e483d + 4a4fb68 commit 34c2837

71 files changed

Lines changed: 3214 additions & 170 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/review-prompt.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Claude output format
2+
3+
- Use inline comments at the relevant lines for specific issues.
4+
- Use a top-level comment for the summary, severity-tagged finding list, AGENTS.md / writing_style_guide.md compliance check, and the verification assessment.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
name: pricing-feature-audit
3+
description: Audit src/components/pricing/FeatureList.js for EE/Cloud/Team features that are mentioned in docs or live in the windmill repo but missing from the pricing comparison table. Use when asked to "flag missing pricing features", "audit FeatureList.js", "check if EE features are listed", or to add features (with verified tier flags) to the pricing page.
4+
---
5+
6+
# Pricing FeatureList audit
7+
8+
## Context
9+
10+
`src/components/pricing/FeatureList.js` is the source of the feature comparison table on https://www.windmill.dev/pricing. Its rows have five tier columns:
11+
12+
- `tier-free-selfhost` — Community Edition (self-host, no license)
13+
- `tier-enterprise-selfhost` — Enterprise self-host
14+
- `tier-enterprise-cloud` — Enterprise cloud
15+
- `tier-free` — free tier on cloud
16+
- `tier-team` — Team plan on cloud
17+
18+
Each row also has an optional `link` (must be a real URL on the docs site) and `tooltip`.
19+
20+
This file drifts. Engineering ships EE-gated features that get docs and changelogs but never show up here, and previously-EE features sometimes become available to all editions without the row being updated. Both states mislead customers.
21+
22+
## Goal
23+
24+
Find features that:
25+
26+
1. **Should be in the table but aren't** — EE-gated (or Cloud-only / Team-only) features that have docs or shipped commits but no row in `FeatureList.js`.
27+
2. **Are in the table with the wrong tier flags** — rows that claim EE-only when the runtime is actually open to CE, or vice versa.
28+
29+
Fix the rows, and update the corresponding doc pages so the EE/CE prose matches reality.
30+
31+
## Sources of truth (in priority order)
32+
33+
When deciding whether a feature is EE-gated, **the code is the source of truth, not the docs**. Doc prose lags shipping changes. Verify in this order:
34+
35+
1. **Engineering confirmation** — if you have a direct answer from a Windmill engineer, that wins.
36+
2. **Backend code in `../windmill`**:
37+
- Compile-time gate: `#[cfg(feature = "enterprise")]`, `#[cfg(all(feature = "private", feature = "enterprise"))]`
38+
- Runtime gate: `LICENSE_KEY` checks, `require_super_admin_or_admin`, "enterprise edition" error strings
39+
- File hint: handlers under `backend/windmill-api/src/` named `*_ee.rs` or `*_ext.rs` are usually EE
40+
3. **Frontend gate** in `../windmill/frontend`:
41+
- `$enterpriseLicense` store, `disabled={!$enterpriseLicense}`
42+
- `ee_only: true` flag in `frontend/src/lib/components/instanceSettings.ts`
43+
4. **Cloud-vs-self-host availability** — check `frontend/src/lib/stores.ts` or any `is_cloud_hosted()` checks. Some features (Kubernetes operator, Windows workers, autoscaling on private clusters) are self-host-only regardless of EE.
44+
5. **Docs prose** — only as a starting hint, never as the final answer. A line like "this feature requires Enterprise Edition" can be stale.
45+
46+
If a feature has no runtime gate but limits behaviour by other means (e.g., workspace forks count toward the CE 3-workspace cap), reflect that in the tier value as a string, not a boolean — see "Tier value patterns" below.
47+
48+
## Workflow
49+
50+
1. **Ask for scope** — date range, specific feature name, or "audit the whole file".
51+
2. **Inventory candidates**:
52+
- Grep `docs/` for `enterprise edition`, `/pricing`, `EE only`, `enterprise license`, `$enterpriseLicense` references.
53+
- Grep recent changelogs in `changelog/` for `ee: true` frontmatter.
54+
- For a date-bounded audit, also run `git log --oneline --no-merges` in `../windmill` for `feat:` commits and inspect ones with EE-gated changes.
55+
3. **For each candidate**, verify against the sources above and produce a row plan: name, suggested section (Platform / Security & Support / Observability / Developers & Deployments / Performance / Flows / Apps), tier flags, doc URL, tooltip.
56+
4. **Verify every doc URL resolves**:
57+
- Folders use numeric prefixes (`16_roles_and_permissions`) but URLs strip them (`/docs/core_concepts/roles_and_permissions`).
58+
- Don't fabricate paths — open the file and confirm the exact heading anchor (lower-case, hyphenated, no punctuation) before writing the link.
59+
5. **Present the plan** to the user before editing. Group additions by section. Flag any rows already in the file whose tier flags conflict with what the code shows.
60+
6. **On approval**, make the edits to `src/components/pricing/FeatureList.js` (one section at a time, ordered to keep diffs reviewable) and fix any doc pages that mis-state the EE gate.
61+
7. **Run `npm run build`** and confirm no new broken-link warnings were introduced. Pre-existing warnings (the script-editor / changelog ones) are not yours to fix.
62+
63+
## Tier value patterns
64+
65+
- `true` / `false` for binary availability.
66+
- A string when the tier has a meaningful limit: `'Up to 2 users'`, `'Counts toward 3-workspace limit'`, `'Maximum 4 groups'`, `'Unlimited'`. Strings render in place of the check/cross icon, so keep them short.
67+
- Use `tooltip` for self-host vs cloud distinctions that don't fit in the row name (e.g., `'Self-hosted only'`, `'Cloud only'`).
68+
69+
## Common gotchas
70+
71+
- **"EE in docs" ≠ "EE in code"**: a feature page saying "this requires EE" can be wrong. Always grep the backend.
72+
- **Self-host-only ≠ EE-only**: features like the Kubernetes operator or Windows workers run on CE self-host too — they're absent from cloud, not gated by license.
73+
- **Cloud Team availability**: features that work on EE cloud usually work on Team unless the backend explicitly blocks Team workspace IDs. Don't copy `tier-enterprise-cloud: true` to `tier-team: false` without checking.
74+
- **Existing duplicates**: this file has previously had duplicate rows (e.g., a removed Postgres triggers duplicate). Before adding a row, grep the file for the feature name to avoid re-adding it under a different label.
75+
- **Don't add billing knobs as features**: Non-prod / dev instance mode is a billing affordance, not a feature — skip it.
76+
77+
## When fixing a wrong tier flag
78+
79+
If a row already exists but the tier flags are wrong, also audit any related doc pages — the same misconception that produced the wrong row often shows up as "Enterprise Edition only" prose in the docs. Fix both at once and grep for cross-references in `docs/advanced/23_canonical_deployment_setups/index.mdx` and other "edition requirements" callouts that may inherit the same claim.

.github/codex/pr-review.prompt.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Codex output format
2+
3+
- Read `./.github/codex/pr-review-context.md` for PR metadata and the diff commands.
4+
- Return a markdown PR comment starting with `## Codex Review`.
5+
- Tag each finding with a severity (P0 / P1 / P2), file path, and line number when known confidently.

.github/pi/pr-review.prompt.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Pi output format
2+
3+
- Read `./.github/pi/pr-review-context.md` for PR metadata and the diff commands.
4+
- Return a markdown PR comment starting with `## Pi Review`.
5+
- Tag each finding with a severity (P0 / P1 / P2), file path, and line number when known confidently.
6+
- Output ONLY the final review markdown — no preamble, no thinking, no tool transcripts.

.github/review-prompt-shared.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Pull request review — shared policy (windmilldocs)
2+
3+
You are reviewing a GitHub pull request for the **windmilldocs** repository (the public Windmill documentation site, built with Docusaurus). Apply this policy alongside your tool's output requirements.
4+
5+
## Read the project rules first
6+
7+
- Read `AGENTS.md` (repo root), `CLAUDE.md`, and `writing_style_guide.md` before reviewing — they are the canonical contributor guide for documentation.
8+
- Quote the exact rule from `AGENTS.md` or `writing_style_guide.md` when flagging a violation.
9+
10+
## Review policy
11+
12+
- Only report issues you are confident are real and introduced by this pull request.
13+
- Focus on factual mistakes, broken links/anchors, MDX/markdown issues, missing or invalid frontmatter, sidebar misregistration, and clear `AGENTS.md` / `writing_style_guide.md` violations.
14+
- Do not report style nits, speculative concerns, pre-existing issues, or anything Docusaurus's own build (`npm run build`) would obviously catch (build errors are caught by the `check docs build` workflow).
15+
- Self-validate each finding before posting: "is this definitely a real issue?" If uncertain, discard it.
16+
- Read additional files only when the diff is not enough to validate a finding.
17+
- Do not modify any files.
18+
19+
## Severity triage
20+
21+
Tag each finding with a severity. Always report P0 and P1. Report P2 only when the diff invites it (a new docs page, a new section in `sidebars.js`, a new landing page, a new component, or a meaningful restructure).
22+
23+
- **P0** — factually wrong claim about a Windmill feature that could mislead users (e.g. wrong CLI flag, wrong default value, wrong tier gating like "this is free" when it's Enterprise), broken link to a critical onboarding page, secrets/credentials accidentally committed, security misinformation.
24+
- **P1** — broken internal link or anchor, missing/invalid frontmatter `description`, page not registered in `sidebars.js` when it should be, image referenced but missing from the directory, code example that won't run as written, Enterprise/Cloud/Pro feature not labeled as such on first mention, missing `[Enterprise Edition](/pricing)` link on first mention of EE on the page.
25+
- **P2**`AGENTS.md` / `writing_style_guide.md` violations (em dashes, bold misuse, title case in headings, marketing-style language, missing backlinks on first mention of a concept), JSON-LD missing on a non-doc page that needs it, `description` outside the recommended length (120–160 chars for docs/changelog, up to ~300 for blog/case studies), missing `textAnswer` field on FAQ entries, image only in PNG (no WebP) or vice versa, file/folder naming that doesn't follow the underscore + numeric prefix convention.
26+
27+
## Documentation-specific checks
28+
29+
For each new or significantly edited `.md` / `.mdx` page in the diff, verify:
30+
31+
- (a) Frontmatter has a `description` field, between 120–160 chars for docs/changelog, ideally question-based ("How do I ...?").
32+
- (b) The first mention of "Enterprise Edition" / "EE" links to `/pricing`. Subsequent mentions on the same page do not need to be linked.
33+
- (c) Internal links use **relative paths** (e.g. `../../8_triggers/index.mdx`) on first mention of a concept, and external links are absolute URLs.
34+
- (d) If the page introduces a new feature, a backlink exists from related main pages (and ideally a `DocCard` component on the parent index).
35+
- (e) If a new page is added under `docs/`, it appears in `sidebars.js`. If it's a major feature, it should also be considered for `docs/core_concepts/index.mdx` and `src/components/pricing/FeatureList.js` (when EE/Cloud/Team).
36+
- (f) Code blocks specify a language (`ts`, `python`, `bash`, etc.).
37+
- (g) No em dashes ('—') in prose — use sentences without them or '-' instead.
38+
- (h) Headings use sentence case ('Like this'), not title case ('Like This'). No bold in headings or titles. No HTML colour styling on titles.
39+
- (i) Images live in the same directory as the related MDX file, with both PNG and optimized WebP versions, and meaningful filenames.
40+
41+
For new non-doc pages (landing/marketing, case studies, product pages, FAQ sections), also verify the JSON-LD `<script type="application/ld+json">` block is present in `<Head>` per the patterns in `AGENTS.md` (`SoftwareApplication`, `FAQPage`, `ItemList`, etc.) and that any rich/JSX FAQ content has a plain-text counterpart (`textAnswer`).
42+
43+
## Test coverage assessment
44+
45+
End your review with a short "Verification" section:
46+
47+
- Note whether `npm run build` was likely to succeed (broken links / anchors, missing files referenced from `sidebars.js`, MDX validity). The CI `npm check` workflow runs this — call out any failure mode you spot in the diff that would block CI.
48+
- For non-doc page changes (React components, schema, config), describe what manual verification is still useful (navigate to the page locally, click the new link, confirm the FAQ renders, etc.).
49+
- If the diff has no in-app surface to exercise (purely text edits, image swaps), say that plainly.
50+
51+
## Additional reviewer instructions
52+
53+
If the prompt or context includes an "Additional reviewer instructions" section, treat it as extra guidance from the human who triggered this review and follow it.
54+
55+
## Prior PR discussion
56+
57+
If the prompt or context includes a "Prior PR discussion" section, this PR has already received review activity. Look for your own previous comment, take it into account, focus on what changed in the latest commits, and do not repeat findings the human already pushed back on or addressed.

.github/workflows/build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on:
55
paths:
66
- 'src/**'
77
- 'docs/**'
8+
- 'blog/**'
89
push:
910
branches:
1011
- main

0 commit comments

Comments
 (0)