Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0e1afa4
feat: rebuild site as Astro community hub
Neikon Apr 25, 2026
dea02df
chore: configure fork pages deployment
Neikon Apr 25, 2026
948e45d
Merge branch 'rebuild-astro-community-hub'
Neikon Apr 25, 2026
0ae2d8d
fix: clarify aggregate theme stars label
Neikon Apr 25, 2026
2f524e5
feat: add system dark theme
Neikon Apr 25, 2026
5c70ce2
ci: update Pages actions for Node 24
Neikon Apr 25, 2026
9f9e3d9
feat: audit theme repositories monthly
Neikon Apr 25, 2026
b02d487
ci: handle blocked audit PR creation
Neikon Apr 25, 2026
0293e79
chore: propose theme repository audit changes
github-actions[bot] Apr 25, 2026
d364bd7
Merge pull request #1 from Neikon/automation/theme-repository-audit-2…
Neikon Apr 25, 2026
5ec425c
ci: audit archived theme repositories
Neikon Apr 25, 2026
b30509a
feat: add issue-based theme submissions
Neikon Apr 25, 2026
e27d1c4
fix: clean submitted screenshot urls
Neikon Apr 25, 2026
f542799
fix: detect new submission files
Neikon Apr 25, 2026
f19eb6b
feat: publish approved theme submissions
Neikon Apr 25, 2026
4f8da16
fix: recreate closed submission prs
Neikon Apr 25, 2026
63c38f2
feat: add candidate theme from issue #2
github-actions[bot] Apr 25, 2026
09233bd
chore: publish approved theme submission #4
github-actions[bot] Apr 25, 2026
9f862f8
Merge pull request #4 from Neikon/submissions/theme-2
Neikon Apr 25, 2026
609a7e5
fix: close merged submission issues
Neikon Apr 25, 2026
d5fd862
fix: normalize submission tags and stats
Neikon Apr 25, 2026
f0574a4
fix: prevent tag pills from stretching
Neikon Apr 25, 2026
b230aac
chore: refresh theme stats monthly
Neikon Apr 25, 2026
9705afb
chore: refresh theme repository stats
github-actions[bot] Apr 25, 2026
99a963a
Merge pull request #5 from Neikon/automation/theme-stats-refresh-2026-04
Neikon Apr 25, 2026
aec691a
fix: keep theme action buttons compact
Neikon Apr 25, 2026
e8693c1
docs: record branch cleanup status
Neikon May 2, 2026
cf3cce3
fix: restore upstream deployment links
Neikon May 2, 2026
224f5d1
fix: keep FirefoxCSS-Store naming
Neikon May 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 0 additions & 4 deletions .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,4 @@ if ! command -v jq >/dev/null 2>&1; then
sudo apt-get install -y jq
fi

if ! command -v nu >/dev/null 2>&1; then
npm install -g nushell
fi

npm ci
33 changes: 0 additions & 33 deletions .github/ISSUE_TEMPLATE/-send-your-theme.md

This file was deleted.

75 changes: 75 additions & 0 deletions .github/ISSUE_TEMPLATE/theme-submission.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Submit a theme
description: Share a Firefox userChrome.css theme repository with the hub.
title: "[Theme]: "
labels:
- theme submission
body:
- type: markdown
attributes:
value: |
Thanks for sharing a Firefox CSS theme. This form opens a review issue; automation will turn it into a candidate pull request when possible.
- type: input
id: title
attributes:
label: Theme title
description: Use the public name of the theme.
placeholder: My Firefox Theme
validations:
required: true
- type: input
id: repository
attributes:
label: Original repository
description: Link to the source repository maintained by the author or project.
placeholder: https://github.com/owner/repository
validations:
required: true
- type: input
id: homepage
attributes:
label: Homepage
description: Optional project page, docs page, or website.
placeholder: https://example.com
validations:
required: false
- type: textarea
id: description
attributes:
label: Short description
description: Keep it concise. Mention the visual style, layout idea, or main browser customization.
placeholder: A compact dark Firefox theme with vertical tabs and rounded controls.
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Screenshot URLs
description: Attach images here or paste direct image URLs. Use one screenshot per line when pasting links.
placeholder: Drag screenshots into this field, or paste image URLs.
validations:
required: true
- type: input
id: tags
attributes:
label: Tags
description: Use lowercase tags separated by commas, such as dark, compact, sidebery, oneline.
placeholder: dark, compact, sidebery
validations:
required: true
- type: dropdown
id: submitter_role
attributes:
label: Your relationship to the theme
options:
- Author
- Maintainer
- User or recommender
validations:
required: true
- type: textarea
id: notes
attributes:
label: Notes for reviewers
description: Optional compatibility notes, install caveats, or context for maintainers.
validations:
required: false
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ updates:
directory: "/"
schedule:
interval: weekly
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: weekly
84 changes: 84 additions & 0 deletions .github/workflows/audit-theme-repositories.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Audit Theme Repositories

on:
schedule:
- cron: '17 3 1 * *'
workflow_dispatch:

permissions:
contents: write
pull-requests: write

concurrency:
group: audit-theme-repositories
cancel-in-progress: false

jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm

- run: npm ci

- name: Audit published and archived theme repositories
env:
GITHUB_TOKEN: ${{ github.token }}
RETIREMENT_REPORT: theme-repository-audit.md
run: npm run audit:theme-repos

- run: npm test
- run: npm run build

- name: Open repository audit review PR
env:
GH_TOKEN: ${{ secrets.AUDIT_PR_TOKEN || github.token }}
shell: bash
run: |
if git diff --quiet -- src/content/themes; then
echo "No theme archive or removal changes proposed."
exit 0
fi

branch="automation/theme-repository-audit-$(date -u +%Y-%m)"

git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git checkout -B "$branch"
git add src/content/themes
git commit -m "chore: propose theme repository audit changes"
git fetch --no-tags --depth=1 origin "$branch:refs/remotes/origin/$branch" || true
git push --force-with-lease origin "$branch"

manual_url="https://github.com/${GITHUB_REPOSITORY}/pull/new/${branch}"
title="Review archived or unavailable theme repositories"

if pr_url="$(gh pr view "$branch" --json url --jq .url 2>/dev/null)"; then
gh pr edit "$branch" \
--title "$title" \
--body-file theme-repository-audit.md
echo "Updated repository audit PR: ${pr_url}" >> "$GITHUB_STEP_SUMMARY"
else
if pr_url="$(gh pr create \
--base main \
--head "$branch" \
--title "$title" \
--body-file theme-repository-audit.md 2>pr-create-error.txt)"; then
echo "Created repository audit PR: ${pr_url}" >> "$GITHUB_STEP_SUMMARY"
else
echo "::warning::The audit branch was pushed, but GitHub refused to create the PR automatically."
cat pr-create-error.txt
{
echo "Repository audit changes were pushed to \`${branch}\`, but the workflow token could not create the PR automatically."
echo ""
echo "Open it manually: ${manual_url}"
echo ""
echo "To allow automatic PR creation, enable **Settings > Actions > General > Workflow permissions > Allow GitHub Actions to create and approve pull requests**, or add an \`AUDIT_PR_TOKEN\` secret with permission to create pull requests."
} >> "$GITHUB_STEP_SUMMARY"
fi
fi
41 changes: 16 additions & 25 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
name: Build And Publish Docs
name: Build And Deploy

on:
push:
branches:
- main
paths:
- 'dev/**'
- 'images/**'
- 'themes.json'
- 'gulpfile.js'
- 'gulpconfig.js'
- 'src/**'
- 'public/**'
- 'scripts/**'
- 'astro.config.mjs'
- 'tsconfig.json'
- 'package.json'
- 'package-lock.json'
- 'dev/config/**'
- '.github/workflows/**'
workflow_dispatch:

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"

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

concurrency:
group: build-and-publish-${{ github.ref }}
group: pages-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand All @@ -42,16 +41,8 @@ jobs:
- run: npm test
- run: npm run build

- name: Commit generated docs
shell: bash
run: |
if git diff --quiet -- docs; then
echo "No generated docs changes to commit."
exit 0
fi

git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add docs
git commit -m "ci(build): compile and deploy"
git push
- uses: actions/configure-pages@v6
- uses: actions/upload-pages-artifact@v5
with:
path: dist
- uses: actions/deploy-pages@v5
14 changes: 5 additions & 9 deletions .github/workflows/check-themes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,15 @@ on:
pull_request:
branches: [ main ]
paths:
- 'dev/**'
- 'images/**'
- 'themes.json'
- 'gulpfile.js'
- 'gulpconfig.js'
- 'src/**'
- 'public/**'
- 'scripts/**'
- 'astro.config.mjs'
- 'tsconfig.json'
- 'package.json'
- 'package-lock.json'
- 'dev/config/**'
- '.github/workflows/**'

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"

jobs:
validate_pull_requests:
runs-on: ubuntu-latest
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/close-merged-theme-submission.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Close Merged Theme Submission Issue

on:
pull_request:
types: [closed]

permissions:
issues: write
pull-requests: read

jobs:
close_issue:
if: ${{ github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'submissions/theme-') }}
runs-on: ubuntu-latest
steps:
- name: Close source issue
env:
GH_TOKEN: ${{ github.token }}
PR_BODY: ${{ github.event.pull_request.body }}
PR_NUMBER: ${{ github.event.pull_request.number }}
shell: bash
run: |
issue_number="$(printf '%s' "$PR_BODY" | sed -nE 's/^Generated from #([0-9]+)\.$/\1/p' | head -n 1)"

if [ -z "$issue_number" ]; then
echo "No source issue number found in PR #${PR_NUMBER}."
exit 0
fi

gh issue close "$issue_number" \
--comment "Theme submission was merged in #${PR_NUMBER}. Thanks for sharing it."
Loading