Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
830a708
Preserve Guitar Pro strum direction (#2)
cchacs Jul 31, 2026
a8f18ec
Merge branch 'got-feedBack:main' into main
cchacs Jul 31, 2026
5b443e9
Fix: add loaded_slop null check before accessing stems (#16)
cchacs Aug 1, 2026
b9e7c3d
fix: use retained FFmpeg Docker assets (#18)
cchacs Aug 1, 2026
6b2e5f0
core: add fork maintenance policy, sync helper, and audit CI (#19)
cchacs Aug 2, 2026
8abbb56
core: Update .gitignore
cchacs Aug 3, 2026
cb6407b
fix: Add arrangement type to WS and fix keyboard detection
cchacs Aug 4, 2026
fed3461
Add FeedBack issue workflow templates
cchacs Aug 4, 2026
6638509
Point planning contact link to repo issues
cchacs Aug 5, 2026
a8e003f
fix(highway_3d): chord diagram no longer mirrors on Invert
cchacs Aug 5, 2026
48903d6
Bump 3D Highway plugin version
cchacs Aug 5, 2026
e995a66
core(ui): allow dynamic library card action text (#43)
cchacs Aug 5, 2026
4973abe
Add `pullfrog.yml` workflow
cchacs Aug 6, 2026
81837ec
Fix stored XSS in retune modal (#44)
cchacs Aug 7, 2026
371d7a4
core: extend fork-audit rule 2 to accept fix: prefix for bug/security…
Copilot Aug 7, 2026
190c60c
sync: Merge main into local
claude Aug 8, 2026
4ba7598
Fix anchor and event timing with negative audio offsets (#58)
cchacs Aug 8, 2026
ec1157a
build(deps-dev): bump the npm_and_yarn group across 1 directory with …
dependabot[bot] Aug 10, 2026
c4aba80
fix: Offload convert_wem calls in highway_ws off the event loop
claude Aug 10, 2026
f111804
Document the convert_wem event-loop fix in CHANGELOG
claude Aug 10, 2026
1180f3d
Merge branch 'local' of https://github.com/get-flashbacks/feedBack in…
cchacs Aug 10, 2026
4717e24
Merge branch 'local' of https://github.com/get-flashbacks/feedBack in…
cchacs Aug 10, 2026
75931c5
Add regression for failed sloppak websocket load (#17)
cchacs Aug 10, 2026
ec4c019
Add a README (#61)
cchacs Aug 13, 2026
1c792f0
Created AGENTS.md
cchacs Aug 13, 2026
15a6229
Added the contributor workflow to AGENTS.md
cchacs Aug 13, 2026
d27fe97
docs: add contributing guidelines to CLAUDE.md
cchacs Aug 13, 2026
f56f00b
Block lyrics_sync's new save-lyrics endpoint in demo mode (#64)
cchacs Aug 13, 2026
bf80de3
docs(agents): add context, philosophy, conventions, and intentionally…
kilo-code-bot[bot] Aug 14, 2026
9b33620
core(security): replace insecure sha1 hash with sha256
deepsource-autofix[bot] Aug 13, 2026
89a9172
fix: restore error handling for sloppak loading in websocket handler
claude Aug 15, 2026
6c34871
Merge pull request #62 from get-flashbacks/deepsource-autofix-1f4a257f
cchacs Aug 15, 2026
8817a2a
fix: use optional chaining for songInfo.arrangement fallback
claude Aug 16, 2026
7af01ed
docs: remove misleading nav.screen/nav.icon from plugin manifest docs…
cchacs Aug 19, 2026
be5de31
fix(security): add worker-src to CSP so alphaTab-based plugins can re…
cchacs Aug 23, 2026
110fc10
fix: route resume/transport/library plays through window.playSong
claude Sep 8, 2026
55d60fe
fix(highway_3d): let the chord diagram widget linger longer before fa…
cchacs Sep 8, 2026
607c924
core: use asyncio.get_running_loop() instead of get_event_loop()
claude Sep 8, 2026
d96a2cf
fix: resume through a playSong wrapper was dropping the saved position
claude Sep 8, 2026
7eed0d5
fix: a resume that never reaches song:ready could leak onto the next …
claude Sep 8, 2026
2e4a10f
fix: a stalled resume could leak its position onto a later normal pla…
claude Sep 9, 2026
b915a57
test: exercise the actual preserve-branch in the same-song resume reg…
claude Sep 9, 2026
48bcb0a
sync: merge origin/main into local
claude Sep 9, 2026
5cdd651
fix: is_keys's own fret-data gate reverted this PR's headline fix
claude Sep 9, 2026
2925118
fix: piano-typed arrangements fell through the same guards as keys
claude Sep 9, 2026
63a2ded
Merge pull request #42 from get-flashbacks/local
cchacs Sep 9, 2026
f41435e
fix: route resume/transport/library plays through window.playSong
cchacs Sep 9, 2026
8154194
core: fix overgeneralized performance-parable rule in CLAUDE.md/AGENT…
claude Sep 11, 2026
5252405
core: fix Auto-sync rationale and document semver validation
claude Sep 11, 2026
d2fc88d
fix(security): rate-limit /ws/sync connection attempts per source IP …
cchacs Sep 11, 2026
8d53b20
fix(keys_highway_3d): respect the mastery/difficulty slider (#67) (#77)
cchacs Sep 11, 2026
da92462
fix: propagate GP arpeggio flag through gp2rs.py chord templates (#78)
cchacs Sep 14, 2026
be5f27a
feat(keys3d): filter practice by hand (#80)
cchacs Sep 16, 2026
ac2ff57
feat(highway): add coordinated frame rendering
cchacs Sep 17, 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
71 changes: 71 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Bug report
description: Report something broken or unexpectedly behaving in this FeedBack repo.
title: "[Bug]: "
labels: ["bug", "needs triage"]
body:
- type: markdown
attributes:
value: |
Use this for reproducible failures. Include the smallest chart, plugin state, or workflow that shows the issue.
- type: textarea
id: summary
attributes:
label: Summary
description: What is happening?
placeholder: Describe the problem in one or two sentences.
validations:
required: true
- type: dropdown
id: area
attributes:
label: Area
options:
- backend API / server.py
- frontend app / static
- chart import/export
- player/highway rendering
- plugin system
- Docker or deployment
- documentation
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: What should someone do to see the issue?
placeholder: |
1. Open FeedBack...
2. Enable/open...
3. Play/import/change...
4. See...
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behavior
validations:
required: true
- type: textarea
id: validation
attributes:
label: Useful validation
description: What should be checked when this is fixed?
placeholder: Run the app, exercise the affected route/screen/import path, and check console/server logs.
- type: input
id: environment
attributes:
label: Environment
placeholder: Browser/OS, FeedBack version or commit, plugin version, Docker image, etc.
- type: textarea
id: notes
attributes:
label: Additional notes
description: Logs, screenshots, chart files, console output, or related PRs/issues.
6 changes: 5 additions & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
blank_issues_enabled: true
blank_issues_enabled: false
contact_links:
- name: Roadmap or planning question
url: https://github.com/get-flashbacks/feedBack/issues
about: Use the relevant GitHub Project board for roadmap-level planning when available.
54 changes: 54 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Feature request
description: Suggest a new capability or workflow improvement.
title: "[Feature]: "
labels: ["enhancement", "needs triage"]
body:
- type: textarea
id: problem
attributes:
label: User problem or opportunity
description: What workflow gap does this solve?
placeholder: When practicing or authoring in FeedBack, I want...
validations:
required: true
- type: dropdown
id: area
attributes:
label: Area
options:
- backend API / server.py
- frontend app / static
- chart import/export
- player/highway rendering
- plugin system
- Docker or deployment
- documentation
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed behavior
description: What should change from the user's perspective?
validations:
required: true
- type: textarea
id: implementation_notes
attributes:
label: Implementation notes
description: Mention relevant files, plugin lifecycle concerns, API/data format changes, or performance risks.
- type: textarea
id: acceptance
attributes:
label: Acceptance criteria
description: What must be true for this to be considered done?
placeholder: |
- [ ] The user can...
- [ ] The change survives reload/reopen...
- [ ] No console/server errors appear...
validations:
required: true
- type: textarea
id: references
attributes:
label: References or mockups
56 changes: 56 additions & 0 deletions .github/ISSUE_TEMPLATE/task.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Task or improvement
description: Track cleanup, refactors, documentation, research, or non-bug work.
title: "[Task]: "
labels: ["task", "needs triage"]
body:
- type: textarea
id: goal
attributes:
label: Goal
description: What should be accomplished?
validations:
required: true
- type: dropdown
id: area
attributes:
label: Area
options:
- backend API / server.py
- frontend app / static
- chart import/export
- player/highway rendering
- plugin system
- Docker or deployment
- documentation
validations:
required: true
- type: textarea
id: scope
attributes:
label: Scope
description: What is included, and what is intentionally out of scope?
- type: textarea
id: checklist
attributes:
label: Checklist
description: Break the work into concrete steps.
placeholder: |
- [ ] ...
- [ ] ...
validations:
required: true
- type: dropdown
id: priority
attributes:
label: Priority
options:
- low
- medium
- high
validations:
required: true
- type: textarea
id: validation
attributes:
label: Validation
placeholder: Run the app, exercise the affected route/screen/import path, and check console/server logs.
76 changes: 76 additions & 0 deletions .github/workflows/fork-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: fork-audit

# Fork-only checks — see docs/fork-maintenance.md. Deliberately its own file
# (not a job added to upstream's ci.yml/ship-ci.yml) so pulling upstream
# changes to those workflows never conflicts with this policy's own
# enforcement of "keep core edits small and isolated".

on:
pull_request:
branches: [main]

permissions:
contents: read
pull-requests: read

jobs:

core-commit-labeling:
# Fails only on commits THIS PR introduces (relative to its base), so
# pre-existing history is never retroactively flagged.
name: core-commit-labeling
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
fetch-depth: 0
persist-credentials: false

- name: Flag unlabeled core-touching commits introduced by this PR
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
commits=$(git rev-list "$BASE_SHA".."$HEAD_SHA")

fail=0
for sha in $commits; do
files=$(git show --name-only --pretty=format:"" "$sha")
core_hit=$(printf '%s\n' "$files" | grep -Ev '^(plugins/|docs/|tests/|scripts/|specs/|\.specify/)|^(CHANGELOG\.md|VERSION)$' || true)
[ -z "$core_hit" ] && continue

subject=$(git show -s --format=%s "$sha")
if ! printf '%s' "$subject" | grep -qE '^(core|hook|sync|fix)(\([^)]*\))?:'; then
echo "::error::Commit $sha ('$subject') touches core path(s) but its subject isn't prefixed core:/hook:/sync:/fix: — see docs/fork-maintenance.md (Rule 2). Files touched: $(printf '%s' "$core_hit" | tr '\n' ' ')"
fail=1
fi
done
exit $fail

upstream-drift:
# Advisory only — never fails the PR. Nudges toward Rule 4 (sync often,
# in small increments) instead of letting drift build up silently.
name: upstream-drift
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
fetch-depth: 0
persist-credentials: false

- name: Compare PR base against got-feedback/feedBack:main
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
run: |
if ! git fetch --no-tags https://github.com/got-feedback/feedBack.git main:refs/remotes/canonical-upstream/main; then
echo "::warning::Unable to fetch got-feedback/feedBack:main; skipping upstream drift check."
exit 0
fi
if ! behind=$(git rev-list --count "$BASE_SHA"..canonical-upstream/main); then
echo "::warning::Unable to calculate upstream drift; skipping check."
exit 0
fi
echo "PR base is $behind commit(s) behind got-feedback/feedBack:main."
if [ "$behind" -gt 50 ]; then
echo "::warning::This branch's base is $behind commits behind got-feedback/feedBack:main. Consider running scripts/fork-sync.sh before adding more fork-only work (docs/fork-maintenance.md, Rule 4)."
fi
67 changes: 67 additions & 0 deletions .github/workflows/pullfrog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# PULLFROG ACTION — DO NOT EDIT EXCEPT WHERE INDICATED
name: Pullfrog
run-name: ${{ inputs.name || github.workflow }}
on:
workflow_dispatch:
inputs:
prompt:
type: string
description: Agent prompt
name:
type: string
description: Run name

permissions:
contents: read

jobs:
pullfrog:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run agent
uses: pullfrog/pullfrog@v0
with:
prompt: ${{ inputs.prompt }}
env:
# add at least one provider API key
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GOOGLE_GENERATIVE_AI_API_KEY:
${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }}
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
MOONSHOT_API_KEY: ${{ secrets.MOONSHOT_API_KEY }}
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}

# for Amazon Bedrock (https://docs.pullfrog.com/bedrock)
# AWS_BEARER_TOKEN_BEDROCK: ${{ secrets.AWS_BEARER_TOKEN_BEDROCK }}
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# AWS_REGION: us-east-1
# BEDROCK_MODEL_ID: <bedrock-model-id>

# for Google Vertex AI (https://docs.pullfrog.com/vertex)
# VERTEX_SERVICE_ACCOUNT_JSON: >-
# ${{ secrets.VERTEX_SERVICE_ACCOUNT_JSON }}
# GOOGLE_CLOUD_PROJECT: my-project
# VERTEX_LOCATION: global
# VERTEX_MODEL_ID: <vertex-model-id>

# for any OpenAI-compatible endpoint — LiteLLM, Cloudflare AI Gateway,
# self-hosted vLLM (https://docs.pullfrog.com/openai-compatible)
# OPENAI_COMPATIBLE_BASE_URL: https://litellm.example.com/v1
# OPENAI_COMPATIBLE_API_KEY: ${{ secrets.OPENAI_COMPATIBLE_API_KEY }}
# OPENAI_COMPATIBLE_MODEL: <model-id>
# both limits are required — set them to the real limits of that model
# OPENAI_COMPATIBLE_CONTEXT: "128000"
# OPENAI_COMPATIBLE_MAX_OUTPUT: "16384"
3 changes: 3 additions & 0 deletions .github/workflows/ship-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ name: ship-ci
# workflow_call — it never runs standalone, which would emit unprefixed
# "<job>" checks that the rulesets can't match.
on:
# Keeps the wrapper discoverable and lets maintainers rerun the exact
# required-check workflow while diagnosing PR event delivery.
workflow_dispatch:
pull_request:
branches: [main, 'release/**']
# Trunk-based: post-merge CI on main catches semantic conflicts between
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,5 @@ Thumbs.db
*.swp
.idea/
plugins/support_creators
/library
/static/sloppak_cache
Loading