Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
84 changes: 84 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Bug report
description: Report a crash, error, or unexpected behavior
labels: ["bug"]
body:
- type: dropdown
id: area
attributes:
label: Area
description: Which part of Feather is affected?
options:
- CLI (feather command)
- Package manager (feather package)
- Desktop app
- Lua runtime / game-side
- Plugin
- Other
validations:
required: true

- type: textarea
id: what_happened
attributes:
label: What happened?
description: What did you do, what did you expect, and what actually occurred?
placeholder: |
I ran `feather package install anim8` and got an error instead of the files being installed.
validations:
required: true

- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
placeholder: |
1. Create a new LÖVE project directory
2. Run `feather package install anim8`
3. See error
validations:
required: true

- type: textarea
id: error_output
attributes:
label: Error output or logs
description: Paste the full terminal output or error message. Use `feather <command> --json` if available for machine-readable output.
render: shell

- type: input
id: feather_version
attributes:
label: Feather CLI version
description: Run `feather --version`
placeholder: 0.9.3
validations:
required: true

- type: input
id: node_version
attributes:
label: Node.js version
description: Run `node --version`
placeholder: v22.0.0
validations:
required: true

- type: input
id: os
attributes:
label: OS and version
placeholder: macOS 15.4 / Windows 11 / Ubuntu 24.04
validations:
required: true

- type: input
id: love_version
attributes:
label: LÖVE version (if relevant)
placeholder: 11.5

- type: textarea
id: extra
attributes:
label: Anything else?
description: Lockfile contents, feather.config.lua, workarounds you tried, etc.
75 changes: 75 additions & 0 deletions .github/ISSUE_TEMPLATE/package-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Package request
description: Propose adding a library to the Feather catalog
labels: ["package-request"]
body:
- type: input
id: name
attributes:
label: Package name
description: The name you'd like to use with `feather package install <name>`
placeholder: anim8
validations:
required: true

- type: input
id: repo
attributes:
label: GitHub repository
description: Full repo path (owner/repo)
placeholder: kikito/anim8
validations:
required: true

- type: input
id: tag
attributes:
label: Release tag or commit to pin
description: The specific tag or commit SHA Feather should pin. Prefer a tagged release over a branch.
placeholder: v2.3.1
validations:
required: true

- type: dropdown
id: trust
attributes:
label: Suggested trust level
description: >
`verified` — you've read the source and consider it safe to use as-is.
`known` — popular and widely used but you haven't audited it line by line.
options:
- known
- verified
validations:
required: true

- type: textarea
id: description
attributes:
label: What does this library do?
description: One or two sentences. This becomes the catalog description.
placeholder: A 2D animation library for LÖVE. Handles sprite sheets, frames, and playback.
validations:
required: true

- type: textarea
id: files
attributes:
label: Files to install
description: List the files that should be copied into a project and their suggested target paths.
placeholder: |
anim8.lua → lib/anim8.lua
validations:
required: true

- type: input
id: require
attributes:
label: require() path
description: How users load it in Lua code, matching the suggested target path.
placeholder: lib.anim8

- type: textarea
id: why
attributes:
label: Why should this be in the catalog?
description: What problem does it solve? Are there alternatives already in the catalog?
76 changes: 76 additions & 0 deletions .github/ISSUE_TEMPLATE/plugin-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Plugin request
description: Propose adding a plugin to the Feather catalog
labels: ["plugin-request"]
body:
- type: input
id: id
attributes:
label: Plugin ID
description: Snake-case identifier used with `feather plugin install <id>`
placeholder: collision-debug
validations:
required: true

- type: input
id: name
attributes:
label: Display name
description: Human-readable name shown in `feather plugin list`
placeholder: Collision Debug
validations:
required: true

- type: textarea
id: description
attributes:
label: What does this plugin do?
description: One or two sentences shown in the catalog. Be specific about what it displays or enables inside Feather.
placeholder: Draws AABB and circle collision shapes on top of your game world, color-coded by collision group.
validations:
required: true

- type: textarea
id: integration
attributes:
label: How does it integrate with the game?
description: >
Describe what the game needs to do to support this plugin — e.g. does it hook into
love.update / love.draw automatically, or does the developer need to call specific APIs?
Does it require any particular library (bump, windfield, etc.)?
placeholder: |
Hooks into love.draw automatically. Requires bump.lua to be installed and passed in via opts.world.
validations:
required: true

- type: dropdown
id: opt_in
attributes:
label: Opt-in?
description: Should the plugin be disabled by default and require the developer to explicitly enable it?
options:
- "Yes — opt-in (disabled by default)"
- "No — enabled by default"
validations:
required: true

- type: textarea
id: capabilities
attributes:
label: Capabilities used
description: List any Feather capabilities this plugin relies on (e.g. overlay, inspector, command palette). Leave blank if none.
placeholder: |
overlay
inspector

- type: input
id: repo
attributes:
label: Source repository (if external)
description: If the plugin lives in a separate repo rather than being contributed directly, link it here.
placeholder: github.com/yourname/feather-plugin-collision-debug

- type: textarea
id: why
attributes:
label: Why should this be in the catalog?
description: What workflow or debugging scenario does it address? Is there overlap with an existing plugin?
2 changes: 0 additions & 2 deletions .github/workflows/cli-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ on:
paths:
- "cli/**"
- "src-lua/**"
- "scripts/cli-e2e.mjs"
- "scripts/bundle-lua.sh"
- "package.json"
- "package-lock.json"
Expand All @@ -15,7 +14,6 @@ on:
paths:
- "cli/**"
- "src-lua/**"
- "scripts/cli-e2e.mjs"
- "scripts/bundle-lua.sh"
- "package.json"
- "package-lock.json"
Expand Down
57 changes: 57 additions & 0 deletions .github/workflows/registry.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Publish registry

on:
push:
branches: [main]
paths:
- 'packages/**'
workflow_dispatch:

jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write

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

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Generate registry
run: node scripts/generate-registry.mjs

- name: Push to packages branch
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

# Fetch packages branch if it already exists
git fetch origin packages 2>/dev/null || true

# Set up a worktree pointing at the packages branch.
# If the branch doesn't exist yet, create it as an orphan.
if git ls-remote --exit-code origin packages > /dev/null 2>&1; then
git worktree add /tmp/registry-branch packages
else
git worktree add --orphan -b packages /tmp/registry-branch
fi

cp cli/src/generated/registry.json /tmp/registry-branch/registry.json

cd /tmp/registry-branch
git add registry.json

if git diff --cached --quiet; then
echo "Registry unchanged — nothing to push."
else
# Surface the triggering commit so the packages branch log is traceable
TRIGGER_SHA="${{ github.sha }}"
TRIGGER_MSG=$(git -C "$GITHUB_WORKSPACE" log -1 --pretty=format:"%s" "$TRIGGER_SHA")
git commit -m "chore: update registry (${TRIGGER_SHA::7}) ${TRIGGER_MSG}"
git push origin packages
fi
Loading
Loading