Skip to content

docs: TODO/FAQ bookkeeping, AGENTS.md permission guidance, least-privilege Vibe config - #58

Open
jmlrt wants to merge 10 commits into
mainfrom
docs/todo-web-ui-backlog
Open

jmlrt wants to merge 10 commits into
mainfrom
docs/todo-web-ui-backlog

Conversation

@jmlrt

@jmlrt jmlrt commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

Documentation housekeeping split out of the Liked Songs PR (#57) scope audit, then extended with a FAQ, stale-reference fixes, agent/permission configuration hardening, and genericized test fixtures.

Changes

TODO backlog

  • Note that sqlite.execute_many() and the liked-sync query parameterization landed with feat: add Liked Songs (saved tracks) support #57; keep the repo-wide f-string migration open
  • Add web-UI backlog items, each scoped as a standalone PR: track selection with batch actions on the /tracks page, job page log following the last line, resizable columns on the tracks page
  • Add TODO entries for the two workarounds documented in the FAQ: job cancellation in the web UI (cooperative cancel flag) and first-time Spotify auth in the web UI (paste-redirect-URL page)
  • Remove personal-usage traces: drop the private toolbox reference from the random-playlist idea, genericize the duplicate-detection examples

FAQ

  • Add FAQ.md covering setup/auth workflow, token cache location, Docker Compose usage, and stuck-job troubleshooting
  • Clarify the redirect-URI behavior in the manual auth flow: the browser landing on 127.0.0.1:9090 (the REDIRECT_URI default) and showing "site can't be reached" is expected — nothing listens there during the manual flow; it works only because that URI matches the Spotify app registration

Stale references

  • Repoint dead CLAUDE.md links to AGENTS.md across SPEC.md, CONTRIBUTING.md, README.md
  • Fix the "Per CLAUDE.md Development Practices" attribution in CONTRIBUTING.md (the quoted rule lives in CONTRIBUTING itself)

Agent guidance and permissions (AGENTS.md, .vibe/config.toml)

  • AGENTS.md: shell habits that keep commands inside the Vibe allowlist — plain git forms (no git -C), allowlisted search tools (grep/find, not rg/awk/sed), builtin file tools over shell for reads (read_file instead of sed -n/cat), verification via make test-unit/uv run pytest -k instead of one-off uv run python -c, and no routing around deliberate prompts
  • .vibe/config.toml: self-sufficient least-privilege bash allowlist — Vibe read-only defaults plus safe make/uv/spfm entry points, local git workflow (add/commit), and gh auth status; make publish/build/clean, dependency changes, library-mutating spfm ops, git push and destructive git ops stay behind the approval prompt

Test fixtures

  • Replace real artist/track names (Beatles, Queen, Pink Floyd, Guns N' Roses, AC/DC, Björk, JID, Anderson .Paak, Latto) with generic Test Artist/Test Track-style fixtures across the test suite and dupes.py algorithm comments; branch-sensitive duplicate-detection cases preserve name lengths, prefix tokens, apostrophes, feat-credit structure and remix markers so every code path is unchanged
  • Remove the four dead sample_*_data fixtures in conftest.py (defined, never consumed)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe vibe@mistral.ai

- note that sqlite.execute_many() and the liked-sync parameterization
  landed with the Liked Songs PR; remaining work is repo-wide
- add standalone-PR TODOs: track selection with batch actions on the
  /tracks page (like/unlike, batch playlist add/remove/move), job page
  log following the last line, resizable columns on the tracks page

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Copilot AI balanced review requested due to automatic review settings October 27, 2026 11:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The documentation-only changes have no blocking issues; the remaining wording correction is minor.

1 open issue
What changed in this PR

Updates spotfm’s backlog independently of the Liked Songs feature in #57. This is documentation-only; runtime behavior is unchanged.

Changes:

  • Adds a parameterization progress note while keeping the repo-wide migration open.
  • Defines standalone web UI tasks for batch track actions, automatic log scrolling, and resizable track columns.
File Description
TODO.md Updates parameterization tracking and adds three web UI backlog items.

Review effort: Balanced

Comment thread TODO.md
Comment on lines +32 to +34
- **Note**: `sqlite.execute_many()` (parameterized executemany) landed with the
Liked Songs PR (#57) and the liked-sync queries are parameterized; remaining
work is migrating the f-string queries across the rest of the codebase
jmlrt and others added 5 commits October 28, 2026 08:40
- Add FAQ.md covering Docker/Spotify auth (first-time auth in a container,
  token cache sharing, re-auth, stuck jobs) and webapp questions
- Repoint six dead CLAUDE.md links in CONTRIBUTING.md and SPEC.md to
  AGENTS.md; replace the "CLAUDE.md Development Practices" self-reference
  with a plain house-rule intro
- Link FAQ.md from README (Webapp), CONTRIBUTING (Questions), SPEC (References)
- Use `docker compose exec` instead of a guessed container name in the FAQ

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Add TODO entries for job cancellation in the web UI (currently cleared by
  restarting the container) and first-time Spotify auth in the web UI (first
  auth without a cached token blocks on an input() paste prompt unreachable
  in a container)
- Cross-reference both items from the FAQ's stuck-job section

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Drop reference to toolbox/python/spotify_random_playlist.py (private
  toolbox not present in this repo; dead end for outside contributors)
- Genericize dupe-classification examples drawn from a personal library
  ("A COLORS SHOW", "Angela - Version 2") to neutral equivalents

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Explain why the 127.0.0.1:9090 redirect shows "site can't be reached"
(nothing listens there during the manual flow) and that the host:port is
the REDIRECT_URI default which must match the Spotify app registration —
the URL differs if the app pins another redirect URI.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
…list

AGENTS.md: shell habits that keep commands inside the Vibe allowlist
(plain git forms, allowlisted search tools, pytest over one-off python,
no routing around deliberate prompts). .vibe/config.toml: self-sufficient
least-privilege allowlist - read-only defaults plus safe make/uv/spfm
entry points; publish/build/clean and library-mutating spfm ops stay
behind the approval prompt. Local git workflow (add/commit) allowed;
push and destructive git ops stay prompted.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
@jmlrt jmlrt changed the title docs: TODO — parameterization progress, web UI backlog docs: TODO/FAQ bookkeeping, AGENTS.md permission guidance, least-privilege Vibe config Oct 28, 2026
jmlrt and others added 4 commits October 28, 2026 10:15
Scoped entry, not bare gh - other gh commands (PR edits, repo ops,
arbitrary API writes) stay behind the approval prompt.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Beatles, Queen, Pink Floyd, Guns N' Roses, AC/DC, Bjork, JID,
Anderson .Paak and Latto examples in tests and dupes.py comments
become Test Artist/Test Track-style fixtures. Branch-sensitive dupes
cases keep their code paths: name lengths, prefix tokens, apostrophes,
feat-credit structure and remix markers are preserved.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
read_file with offset/limit instead of sed -n/cat/head - fewer
permission prompts and the sanctioned way to read file regions.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
sample_artist_data, sample_album_data, sample_track_data and
sample_playlist_data were defined but never consumed by any test.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants