20 Commits

Author SHA1 Message Date
Claudio Ortolina 6a3e9695db ML-184: add Presto smoke test harness
Add a headless smoke-test harness for the Presto microPython app using
pimoroni-emulator mock modules.  A PRESTO_TEST_MODE=1 guard prevents
main() from running at import time so draw functions can be called
directly from tests.

- presto/main.py: wrap main() with PRESTO_TEST_MODE guard
- presto/tests/: conftest with emulator fixtures, 7 smoke tests
- presto/mise.toml: add [tasks.test]
- presto/README.md, presto/AGENTS.md: add Testing section
- .gitignore: exclude test __pycache__, pytest_cache, fixture pngs
2026-05-15 10:53:08 +01:00
Claudio Ortolina 2d451d2807 [presto] ignore emulator cache files 2026-05-15 07:26:17 +01:00
Claudio Ortolina a88c704fe5 ML-175: parse bash commands structurally via unbash
Replace regex-based command blocking with structural AST parsing
using unbash (zero-dependency TypeScript bash parser). The walker
collects command names only from executable positions (simple
commands, pipelines, subshells, command substitutions, control-flow
bodies), excluding arguments, comments, and quoted strings.

- Convert to directory-style extension with pinned unbash@3.0.0
- Add AST walker (ast.ts) covering 15 shell construct types
- Update blocked_commands to plain names instead of regexes
- Keep regex fallback for parse failures (degradation path)
- Path-based blocking unchanged for non-bash tools
- 41 tests cover blocked/allowed cases including false positives
2026-05-11 17:42:48 +01:00
Claudio Ortolina 9d0ab1ffc6 ML-166: First working implementation 2026-05-05 16:34:09 +01:00
Claudio Ortolina 179ac35130 Add pi extension to browse database backups 2026-05-01 22:23:44 +01:00
Claudio Ortolina 933f04bb25 Add .mcp.json to version control 2026-04-30 23:00:20 +01:00
Claudio Ortolina 8631b97b4d Add joinphrase to Release.Artist; parse from MB 2026-04-23 07:42:06 +01:00
Claudio Ortolina e75fb93694 Ignore superpowers working folder 2026-04-22 13:37:18 +01:00
Claudio Ortolina d0d9c4ea75 Ignore some Claude working directories 2026-04-17 08:11:48 +01:00
Claudio Ortolina 0339f7f11b EXP: add task to manage worktrees 2026-04-03 11:41:37 +01:00
Claudio Ortolina cf95d6e89b Update .dockerignore and .gitignore 2026-03-13 11:49:53 +00:00
Claudio Ortolina 6aa1c502a5 Ignore expert artifacts 2026-03-05 06:44:01 +00:00
Copilot 2faddbf0c6 Add audit tooling for scrobbled tracks data quality (#89) 2026-02-17 11:24:45 +00:00
Claudio Ortolina 7edc05d205 Move configuration to Mise 2025-02-17 18:05:41 +00:00
Claudio Ortolina edaab25104 Setup mise config with boilerplate env variables 2025-02-17 17:56:26 +00:00
Claudio Ortolina e363328c12 Ignore Lexical build folder 2024-12-19 19:04:34 +00:00
Claudio Ortolina 18ae8b7866 Refactor last_fm configuration
Move all configuration outside of the LastFm module, so that it's not
polluted with references to the parent music_library application.
2024-11-06 12:09:38 +00:00
Claudio Ortolina 1abcc5e6ad Add LastFm feed for a given user 2024-11-04 09:17:01 +00:00
Claudio Ortolina 94ca2ab625 Move databases into /data 2024-10-07 08:12:05 +01:00
Claudio Ortolina d547ee6f8d Generate project
Using `mix phx.new music_library --database sqlite3 --binary-id --no-mailer`
2024-09-12 14:05:08 +01:00