Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c90e8a5
docs(deploy): add Fly.io fly.toml and deployment steps
cursoragent May 4, 2026
80b8da6
feat(deploy): Railway docs, railway.toml, and PORT-aware entrypoint
cursoragent May 4, 2026
d542d83
Add flightdeck demo for one-command quickstart onboarding
cursoragent May 5, 2026
d452f39
docs: align web-ui, cli, sdk-integrations, and ops-policy with shippe…
cursoragent May 11, 2026
c559720
docs(repo): add Cursor Cloud specific instructions to AGENTS.md
cursoragent May 26, 2026
23bd894
Polish web UI for release-quality UX and discoverability
cursoragent May 26, 2026
4484e05
Port operator UI primitives from industry-standard polish branch
cursoragent May 26, 2026
53aa52d
Add demo capture script and committed UI marketing artifacts
cursoragent May 26, 2026
905ddf3
Address PR review: a11y, validation UX, security strip, and e2e gaps
cursoragent May 26, 2026
f95bba2
Regenerate demo screenshots and walkthrough video
cursoragent May 26, 2026
b8df603
Web UI: open Appearance from sidebar Settings popover
cursoragent May 26, 2026
608c3ae
docs: add GitHub Pages workflow and Ask AI affordances
cursoragent May 26, 2026
9181102
Regenerate FlightDeck UI demo screenshots and walkthrough video
cursoragent May 26, 2026
2564887
Web UI: icon-only Theme row in sidebar Settings popover
cursoragent May 26, 2026
f2996c6
Merge PR #59: docs(repo): add Cursor Cloud specific instructions to A…
Gsbreddy May 31, 2026
309bfc8
Merge PR #56: Add flightdeck demo for one-command quickstart onboarding
Gsbreddy May 31, 2026
e90e5da
Merge PR #60: Web UI sidebar Settings popover for Appearance
Gsbreddy May 31, 2026
a40696e
Merge PR #61: Add GitHub Pages docs site and Ask AI affordances
Gsbreddy May 31, 2026
8ce72de
Merge PR #57: docs align web-ui, cli, sdk-integrations, ops-policy wi…
Gsbreddy May 31, 2026
3326b2e
Merge PR #55: feat(deploy): Railway support with PORT-aware serve ent…
Gsbreddy May 31, 2026
04e3e72
Merge PR #54: docs(deploy): Fly.io fly.toml and deployment instructions
Gsbreddy May 31, 2026
acb02ca
chore(ci): expand Python matrix (3.11/3.12/3.13), add CodeQL + Depend…
Gsbreddy May 31, 2026
db8a81d
chore(repo): real maintainer identity; soften Ask AI to floating pill…
Gsbreddy May 31, 2026
aad88ea
feat(community,supply-chain): industry-standard launch readiness
Gsbreddy May 31, 2026
92111f6
fix(ci): always tag GHCR image as 'latest' on semver tag push
Gsbreddy May 31, 2026
2a30923
feat(web): apply UI/UX audit P0+P1 fixes
Gsbreddy May 31, 2026
b0dee7d
fix(pr62-review): address all reviewer BLOCKERs + MAJORs + 2 high-lev…
Gsbreddy May 31, 2026
d5169ed
feat(webhooks): HMAC-signed outbound webhooks (v1.3.0)
Gsbreddy May 31, 2026
1eb1406
feat(server): identity passthrough from X-FlightDeck-Actor / X-Forwar…
Gsbreddy May 31, 2026
9639a56
feat: request-id middleware, version --json, Slack/Discord webhook re…
Gsbreddy May 31, 2026
f842511
fix(reviewer-pass-2): SSRF validation on webhook URL, identity-passth…
Gsbreddy Jun 1, 2026
da9b752
fix(ci): trivy-action tag 0.28.0 doesn't exist; use 0.35.0 (latest no…
Gsbreddy Jun 1, 2026
31c9b72
feat(ux+landing): live UI fixes, new screenshots, demo video, README …
Gsbreddy Jun 1, 2026
cc82e33
fix(pages): enable GitHub Pages, improve docs homepage, add docs badge
Gsbreddy Jun 1, 2026
da6c860
fix(e2e): open pricing-warnings <details> before asserting visibility
Gsbreddy Jun 1, 2026
7ad4f3f
fix(security): bump pymdown-extensions 10.16 -> 10.21.3
Gsbreddy Jun 1, 2026
c7142a7
chore(release): bump version 1.2.0 → 1.3.0; finalize CHANGELOG for v1…
Gsbreddy Jun 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
12 changes: 12 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
github: [Gsbreddy]
# TODO: enable additional funding ecosystems as they are set up.
# patreon: # Replace with a single Patreon username
# open_collective: # Replace with a single Open Collective username
# ko_fi: # Replace with a single Ko-fi username
# tidelift: # Replace with a single Tidelift platform-name/package-name
# community_bridge: # Replace with a single Community Bridge project-name
# liberapay: # Replace with a single Liberapay username
# issuehunt: # Replace with a single IssueHunt username
# otechie: # Replace with a single Otechie username
# lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name
# custom: # Replace with up to 4 custom sponsorship URLs
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Security disclosure
url: https://github.com/flightdeckdev/flightdeck/security/advisories/new
about: Report a vulnerability privately.
- name: Discussion / Q&A
url: https://github.com/flightdeckdev/flightdeck/discussions
about: Ask questions or share use cases.
- name: Documentation
url: https://github.com/flightdeckdev/flightdeck#documentation
about: Read CLI, HTTP API, policy, and operator docs.
57 changes: 57 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "automated"
groups:
python-minor-patch:
update-types:
- "minor"
- "patch"

- package-ecosystem: "pip"
directory: "/docs"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 3
labels:
- "dependencies"
- "automated"
- "docs"

- package-ecosystem: "npm"
directory: "/web"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "automated"
groups:
npm-minor-patch:
update-types:
- "minor"
- "patch"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "automated"
groups:
actions-minor-patch:
update-types:
- "minor"
- "patch"
99 changes: 21 additions & 78 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ on:

jobs:
test:
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.12"]
os: [ubuntu-latest, windows-latest]
python-version: ["3.11", "3.12", "3.13"]

steps:
- name: Checkout
Expand All @@ -24,6 +25,11 @@ jobs:
cache: npm
cache-dependency-path: web/package-lock.json

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
Expand All @@ -34,6 +40,8 @@ jobs:
run: uv sync --frozen --extra dev

- name: Build web UI
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
shell: bash
run: |
cd web
npm ci
Expand All @@ -42,12 +50,16 @@ jobs:
git diff --exit-code src/flightdeck/server/static/

- name: Playwright E2E (served UI)
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
shell: bash
run: |
cd web
npx playwright install chromium
npm run test:e2e

- name: Playwright E2E (approval workspace)
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
shell: bash
env:
FD_E2E_FORCE_APPROVAL: "1"
run: |
Expand All @@ -62,6 +74,8 @@ jobs:
run: uv run python -m pytest --cov=flightdeck --cov-fail-under=80 --cov-report=term

- name: JSON Schemas drift check
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
shell: bash
run: |
uv run python scripts/generate_schemas.py
git diff --exit-code schemas/
Expand Down Expand Up @@ -90,6 +104,11 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
Expand All @@ -104,79 +123,3 @@ jobs:

- name: Integration tests
run: uv run python -m pytest tests/test_integrations.py tests/test_integrations_langchain.py

test-windows:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.12"]

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json

- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: ${{ matrix.python-version }}

- name: Sync dependencies
run: uv sync --frozen --extra dev

- name: Build web UI
shell: bash
run: |
cd web
npm ci
npm run build
cd ..
git diff --exit-code src/flightdeck/server/static/

- name: Playwright E2E (served UI)
shell: bash
run: |
cd web
npx playwright install chromium
npm run test:e2e

- name: Playwright E2E (approval workspace)
shell: bash
env:
FD_E2E_FORCE_APPROVAL: "1"
run: |
cd web
npx playwright install chromium
npx playwright test e2e/actions-approval.spec.ts

- name: Lint
run: uv run python -m ruff check src tests

- name: Test
run: uv run python -m pytest --cov=flightdeck --cov-fail-under=80 --cov-report=term

- name: JSON Schemas drift check
run: |
uv run python scripts/generate_schemas.py
git diff --exit-code schemas/

- name: Quickstart smoke (cross-platform)
run: uv run flightdeck-quickstart-verify

- name: Example CI ledger gate
env:
FD_PROJECT: ${{ github.workspace }}
WORKSPACE: ${{ runner.temp }}/fd-ledger-gate-${{ github.run_id }}-${{ github.run_attempt }}
QUICKSTART_ROOT: ${{ github.workspace }}/examples/quickstart
run: uv run python examples/ci/ledger_gate.py

- name: CLI smoke
run: uv run flightdeck --help
37 changes: 37 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CodeQL

on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 8 * * 1'

jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: ['python', 'javascript-typescript']

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{ matrix.language }}"
72 changes: 72 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: docker-publish

on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
workflow_dispatch:
inputs:
push_latest:
description: 'Tag the resulting image as :latest (uncheck for backport / hotfix releases that should not move :latest backwards).'
type: boolean
default: true

permissions:
contents: read
packages: write
id-token: write
attestations: write

jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/flightdeckdev/flightdeck
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest,enable=${{ github.event_name == 'push' || inputs.push_latest }}
flavor: |
latest=false

- name: Build and push
id: build
uses: docker/build-push-action@v6
with:
context: examples/deploy
file: examples/deploy/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
provenance: true
sbom: true
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Attest build provenance
uses: actions/attest-build-provenance@v2
with:
subject-name: ghcr.io/flightdeckdev/flightdeck
subject-digest: ${{ steps.build.outputs.digest }}
push-to-registry: true
Loading
Loading