Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
17051a2
chore: pin actions to SHA hashes and scope workflow permissions
GraysonCAdams Mar 3, 2026
90e18f8
docs: enhance security policy with disclosure process and timelines
GraysonCAdams Mar 3, 2026
61f7eb0
fix: show correct status label in viewers sheet
GraysonCAdams Mar 3, 2026
cf0776f
fix: override vulnerable minimatch and cookie transitive deps
GraysonCAdams Mar 3, 2026
cbf85e2
chore: extract shared safeTimeout utility
GraysonCAdams Mar 3, 2026
105d885
refactor: remove playback speed functionality
GraysonCAdams Mar 3, 2026
7eb4117
fix: security hardening and auth improvements
GraysonCAdams Mar 3, 2026
1b139f5
refactor: narrow type literals and migrate $app/stores
GraysonCAdams Mar 3, 2026
4fe354d
fix: add error handling to db.transaction calls and extract startDown…
GraysonCAdams Mar 3, 2026
623aa1a
perf: optimize download and stats queries with JOINs
GraysonCAdams Mar 3, 2026
e5511a6
fix: miscellaneous bug fixes and cleanup
GraysonCAdams Mar 3, 2026
a88f723
refactor: extract shared Toggle and SettingRow components
GraysonCAdams Mar 3, 2026
0003690
refactor: modernize sheet and overlay components
GraysonCAdams Mar 3, 2026
cb35df0
feat: reel UX improvements and feed refinements
GraysonCAdams Mar 3, 2026
a316097
chore: fix icon paths in app.html and adjust nav icon sizes
GraysonCAdams Mar 3, 2026
4a9e9e9
refactor: move lastActiveContributor to module script block
GraysonCAdams Mar 3, 2026
50a6746
refactor: simplify ViewersSheet layout
GraysonCAdams Mar 3, 2026
034663b
style: adjust feed overlay touch targets and styling
GraysonCAdams Mar 3, 2026
4b32757
feat: dim filter bar when contributor pill overlaps it
GraysonCAdams Mar 3, 2026
2b48084
fix: remove stale PATCH /api/clips/[id] tests
GraysonCAdams Mar 3, 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
10 changes: 5 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ jobs:
outputs:
code: ${{ steps.filter.outputs.code }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: filter
with:
filters: |
Expand All @@ -51,12 +51,12 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 24
cache: npm
Expand All @@ -82,7 +82,7 @@ jobs:

- name: Upload coverage
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: coverage-report
path: coverage/
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/dependabot-auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,19 @@ on:
- '.github/workflows/**'
- '.github/actions/**'

permissions:
contents: write
pull-requests: write
permissions: read-all

jobs:
auto-merge:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
if: github.actor == 'dependabot[bot]'
steps:
- name: Fetch Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2
uses: dependabot/fetch-metadata@21025c705c08248db411dc16f3619e6b5f9ea21a # v2.5.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

Expand Down
19 changes: 10 additions & 9 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@ concurrency:
group: docker-publish
cancel-in-progress: false

permissions:
contents: read
packages: write
permissions: read-all

env:
REGISTRY: ghcr.io
Expand All @@ -37,6 +35,9 @@ jobs:
build-and-push:
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
packages: write
# For workflow_run: only run if the Release workflow succeeded AND a new
# release was actually created (check for a tag matching the latest release).
# For release/workflow_dispatch: always run.
Expand All @@ -47,7 +48,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

- name: Determine version
id: version
Expand Down Expand Up @@ -83,15 +84,15 @@ jobs:

- name: Set up QEMU
if: steps.version.outputs.skip != 'true'
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0

- name: Set up Docker Buildx
if: steps.version.outputs.skip != 'true'
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0

- name: Log in to GHCR
if: steps.version.outputs.skip != 'true'
uses: docker/login-action@v3
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
Expand All @@ -100,7 +101,7 @@ jobs:
- name: Extract metadata
if: steps.version.outputs.skip != 'true'
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
Expand All @@ -109,7 +110,7 @@ jobs:

- name: Build and push
if: steps.version.outputs.skip != 'true'
uses: docker/build-push-action@v6
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
with:
context: .
platforms: linux/amd64,linux/arm64
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ on:
- 'package.json'
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write
permissions: read-all

concurrency:
group: pages
Expand All @@ -21,9 +18,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

- uses: actions/setup-node@v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 24
cache: npm
Expand All @@ -34,18 +31,21 @@ jobs:

- run: npm run docs:build

- uses: actions/configure-pages@v5
- uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0

- uses: actions/upload-pages-artifact@v3
- uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
with:
path: docs/.vitepress/dist

deploy:
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5
20 changes: 10 additions & 10 deletions .github/workflows/release-pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,7 @@ on:
workflows: [Release]
types: [completed]

permissions:
contents: read
statuses: write
security-events: write
permissions: read-all

jobs:
# Gate: only run for release-please PRs. Finds PR details from either trigger.
Expand Down Expand Up @@ -73,12 +70,12 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout PR code
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
ref: ${{ needs.should-run.outputs.head_sha }}

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 24
cache: npm
Expand All @@ -105,6 +102,8 @@ jobs:
runs-on: ubuntu-latest
if: always()
needs: [should-run, lint-and-check]
permissions:
statuses: write
steps:
- name: Check CI status
run: |
Expand Down Expand Up @@ -152,23 +151,24 @@ jobs:
timeout-minutes: 15
permissions:
security-events: write
contents: read
steps:
- name: Checkout PR code
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
ref: ${{ needs.should-run.outputs.head_sha }}

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17
with:
languages: javascript-typescript
config-file: .github/codeql/codeql-config.yml
queries: security-extended

- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17

- name: Perform CodeQL analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17
with:
category: '/language:javascript-typescript'
9 changes: 5 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,21 @@ on:
# That workflow posts commit statuses to the PR head SHA so branch protection
# sees the results. Docker publishing uses docker-publish.yml (also workflow_run).

permissions:
contents: write
pull-requests: write
permissions: read-all

jobs:
release-please:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
outputs:
pr: ${{ steps.rp.outputs.pr }}
release_created: ${{ steps.rp.outputs.release_created }}
steps:
- name: Run release-please
id: rp
uses: googleapis/release-please-action@v4
uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4.4.0
with:
config-file: release-please-config.json
manifest-file: .release-please-manifest.json
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@ jobs:
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false

- name: Run Scorecard
uses: ossf/scorecard-action@v2.4.3
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
with:
results_file: results.sarif
results_format: sarif
publish_results: true

- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
uses: github/codeql-action/upload-sarif@60168efe1c415ce0f5521ea06d5c2062adbeed1b # v3.28.17
with:
sarif_file: results.sarif
Loading