Commit Graph

173 Commits

Author SHA1 Message Date
yuhao
501931c5e3 fix: make MuseScore undo/redo functional by updating session state
Commands now reload project metadata from output files after backend
operations, ensuring session.project_data reflects actual changes.

Previously, snapshot() captured state before mscore operations, but
project_data was never updated afterward—undo restored unchanged
metadata. Now all mutation commands (transpose, add/remove/reorder
instruments) update session state from the output file.

Fixes the issue identified in PR review where undo/redo was
scaffolding-only for backend-driven harnesses.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 08:58:59 +00:00
Vicky Tam
b1f9a3c6ba fix: address second round of PR review feedback
- Fix add_instrument off-by-one: count parts before SubElement append
- Replace bare except with logger.debug in instruments, media, parts, project
- Make project save delegate to real mscore export instead of no-op
- Pass help= to Click export subcommands for proper --help text
- Preserve --json flag across REPL command dispatches
2026-03-22 02:34:44 +09:00
Vicky Tam
b9698b3169 fix: address PR review feedback
- Guard `import fcntl` for Windows compatibility (try/except with fallback)
- Use `shlex.split()` in REPL for proper quoted argument handling
- Error on incomplete `reorder_instruments` to prevent silent data loss
- Use `functools.wraps` in `handle_error` decorator
2026-03-22 02:34:44 +09:00
Vicky Tam
e6eb002311 feat: add MuseScore 4 CLI wrapper for music notation
First music notation tool in the CLI-Anything ecosystem. Wraps MuseScore 4's
mscore backend following the HARNESS.md 7-phase methodology.

Supports: transpose (by key/interval/diatonic), export (PDF/PNG/SVG/MP3/FLAC/
WAV/MIDI/MusicXML/Braille), part extraction, instrument management, score
analysis (probe/diff/stats), and interactive REPL with undo/redo.

56 tests (39 unit + 17 E2E) — all passing on macOS with MuseScore 4.6.5.
2026-03-22 02:34:44 +09:00
Yuhao
b1e9d53e9d Sync license for the CC plugin 2026-03-22 01:27:04 +08:00
Yuhao
5ebde79f23 Update copyright year and owner in LICENSE file 2026-03-22 01:26:04 +08:00
Yuhao
776b5126a3 Merge pull request #100 from ZJZAC/security/codec-whitelist-validation
security: add codec allowlist validation for melt backends
2026-03-21 23:11:13 +08:00
Yuhao
415ffc4b5d Merge pull request #101 from Alex-wuhu/novita-integration
Add Novita provider integration
2026-03-21 23:08:33 +08:00
Yuhao
124e7f06c5 Merge branch 'main' into novita-integration 2026-03-21 23:06:05 +08:00
Yuhao
0beb0d6f30 Merge pull request #83 from sehawq/codex/gimp-file-load-fix
Use gimp-file-load for non-PNG inputs in apply_filter_and_export
2026-03-20 20:00:40 +08:00
Yuhao
b478b46cbc Merge pull request #110 from tommyalt/feat/ollama-batch-embed
feat(ollama): support repeatable embed inputs
2026-03-20 19:56:08 +08:00
Yuhao
8ad7efaf79 Merge pull request #112 from sehawq/fix/gimp-cli-session-persistence
fix: persist session state in CLI mode and handle quoted text in REPL
2026-03-20 19:40:48 +08:00
sehawq
08f6eb5e61 fix: persist session state in CLI mode and handle quoted text in REPL
- Add auto-save via result_callback so --project flag triggers disk
  write after every mutating command, fixing broken consecutive
  operations in non-REPL mode.
- Switch REPL arg parsing from str.split() to shlex.split() so that
  quoted strings with spaces (e.g. --text "Summer Sale") are handled
  correctly.

Fixes #111
2026-03-20 13:18:20 +03:00
ZJZAC
5153e9b86f docs: add scope note to SECURITY.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 13:24:28 +08:00
Tommy-alto-FYygU
72dc6a6f59 feat(ollama): support repeatable embed inputs 2026-03-20 11:46:08 +08:00
Yuhao
edf9755dd3 Merge pull request #96 from sehawq/codex/audacity-eval-harness
Add Audacity eval harness and regression reporting
2026-03-19 23:53:40 +08:00
Yuhao
d2dd36c831 Merge pull request #102 from HKUDS/codex/ollama-harness
feat: add ollama agent harness
2026-03-19 23:47:11 +08:00
Yuhao
d6040fb59f Merge pull request #103 from fishwww-ww/docs/readmecn
docs(README_CN): improve Chinese phrasing
2026-03-19 23:43:37 +08:00
sehawq
b601e69a38 chore: revert README_CN and README_JA changes, will sync in separate docs PR 2026-03-19 14:57:30 +03:00
sehawq
bc03927dec chore: remove README_CN changes from ollama PR, will sync in separate docs PR 2026-03-19 14:53:38 +03:00
sehawq
e2e7c4105f fix: correct README totals to 1,839 matching individual entry sum 2026-03-19 14:43:14 +03:00
sehawq
50eb3e52b3 fix: restore adguardhome entries in .gitignore and README, add ollama alongside 2026-03-19 14:31:34 +03:00
Alex-wuhu
77af57d9ce fix: persist history to disk, add file locking, remove sys.path hack
- save_history() now writes to session JSON so history survives restarts
- Use fcntl.flock exclusive locking on session writes (ported from blender harness)
- Reset modified flag after _save()
- Remove sys.path.insert; rely on proper package installation
- clear() also resets history

Addresses review feedback from sehawq on #101.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:53:51 +08:00
Alex-wuhu
371a651ce4 fix: resolve bugs and align novita harness with repo conventions
- Fix NameError: pass api_key_opt via Click context to chat/stream commands
- Fix NameError: add missing `import requests` in test_core.py
- Extract ChatSession to core/session.py (matches other harness patterns)
- Convert flat session commands to @cli.group() subcommands
- Add missing utils/__init__.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:53:51 +08:00
Alex-wuhu
e9ec0b7dda Add Novita provider and CLI harness
- Implement novita/agent-harness with OpenAI-compatible API client
- Add chat completion, streaming, model listing support
- Include CLI with chat, session, and config commands
- Add tests with mocked API calls
- Update registry.json with Novita entry
- Update .gitignore to include novita/
2026-03-19 18:53:50 +08:00
Zeng Qingwen
ade2d54e56 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-19 14:48:53 +08:00
fishwww-ww
d96d1528b6 docs(README_CN): improve Chinese phrasing 2026-03-19 14:38:51 +08:00
Ömer
45cfa1e66d Merge branch 'main' into codex/ollama-harness 2026-03-19 00:52:58 +03:00
sehawq
7ba573680b test: record Ollama test results 2026-03-19 00:26:52 +03:00
Yuhao
40bdb40b92 Merge pull request #98 from pyxl-dev/feat/adguardhome-clean
feat: add AdGuardHome CLI harness
2026-03-19 01:40:19 +08:00
yuhao
96f4b0eef5 merge: resolve README conflicts, update counts, add adguardhome to registry
- Resolve merge conflict in README.md test badge (1,684 → 1,720)
- Update all app/demo counts from 14 → 16 to reflect all CLIs in registry
- Update test counts: 1,247 unit + 473 e2e = 1,720 total
- Add AdGuardHome entry to registry.json with contributor info (pyxl-dev)
- Add contributor/contributor_url fields to all registry entries

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 17:36:36 +00:00
yuhao
341a4dc088 include authors on CLI-Hub 2026-03-18 17:27:31 +00:00
Yuhao
2fbbe24705 Merge pull request #99 from cnfjlhj/feat/add-mubu-harness
feat(mubu): add Mubu agent harness
2026-03-19 01:07:55 +08:00
PYXL
d5e999029d Merge branch 'main' into feat/adguardhome-clean 2026-03-18 15:46:14 +01:00
pyxl
433c3cf880 fix: preserve server config when toggling log/filter settings
- log_config: trigger POST when --interval is passed without --enabled,
  read current config for missing parameters
- set_enabled: read current filter interval from server instead of
  hardcoding 24h
- Update test mock to cover the new get_status call in set_enabled

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:39:58 +01:00
ZJZAC
f66e29cdb2 docs: document codec allowlist as breaking change in SECURITY.md
Add section explaining the behavior change for callers using non-listed
codecs, with instructions on how to extend the allowlists.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 19:50:23 +08:00
sehawq
36e6a6a0ed feat: add ollama agent harness 2026-03-18 13:10:51 +03:00
cnfjlhj
ffb7395f1a merge: sync feat/add-mubu-harness with upstream main 2026-03-18 17:59:31 +08:00
cnfjlhj
71c1ae6dcf fix(mubu): harden document resolution and state branding
Deduplicate logical document paths by freshest metadata so open-path resolves real Mubu history duplicates consistently. Overlay backup-driven show/link output with metadata titles and doc paths, and default new public state to ~/.config/mubu-cli while preserving legacy fallback.
2026-03-18 17:13:44 +08:00
ZJZAC
ad83a32283 security: block extra_args from bypassing codec allowlist
extra_args could pass vcodec=..., acodec=..., or -consumer to override
the validated codec parameters. Add _validate_extra_args() that rejects
any argument starting with these prefixes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 16:50:38 +08:00
ZJZAC
8935f478c5 security: add codec allowlist validation in melt backends
When an AI agent constructs CLI commands, it may pass arbitrary strings as
codec parameters — either through prompt injection, hallucination, or
processing untrusted input. Since codec values are passed directly to
melt/ffmpeg subprocesses, unvalidated input is an injection risk.

Fix: add ALLOWED_VCODECS / ALLOWED_ACODECS allowlists to both kdenlive
and shotcut melt_backend.py. All codec parameters are validated before
reaching subprocess.run(). Unknown codecs raise ValueError with a list
of valid options.

Also add SECURITY.md documenting the project's threat model (AI agents
as CLI callers), attack surfaces, reporting process, and security
guidelines for harness developers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 16:17:18 +08:00
Ömer
061b3c9047 Merge pull request #95 from Haimbeau1o/notebooklm-agent-harness-scaffold
feat: add experimental NotebookLM agent harness scaffold / 新增实验性的 NotebookLM agent harness 脚手架
2026-03-18 11:15:35 +03:00
liuche
54f78f65d2 docs: trim notebooklm readme mentions 2026-03-18 15:30:14 +08:00
cnfjlhj
f15052487e chore(mubu): bump harness version to 0.1.1
Update the package metadata, generated skill output, test expectations, and registry entry so the contribution PR reflects the generalized daily-folder behavior in the published harness version.
2026-03-18 13:40:41 +08:00
cnfjlhj
c74bf7fdce fix(mubu): generalize daily folder resolution
Require an explicit daily folder reference or MUBU_DAILY_FOLDER for daily helpers, scrub personal examples from docs and generated skill content, and harden live E2E checks for environment-specific SSL failures.
2026-03-18 13:28:48 +08:00
cnfjlhj
6d1ae1c863 feat(mubu): add mubu agent harness 2026-03-18 12:18:31 +08:00
liuche
d7f38c54e3 Merge origin/main into notebooklm-agent-harness-scaffold 2026-03-18 08:53:00 +08:00
liuche
8e93f3bf42 docs: surface notebooklm harness and trim PR scope 2026-03-18 08:50:47 +08:00
pyxl
eaf43c5f56 fix: restore README em-dashes, keep only AdGuardHome additions
Reverts all unintended em-dash → hyphen replacements introduced in
previous commits. README is now restored from upstream (e0dd643) with
only the three AdGuardHome-related additions: badge count update,
categories table row, and project structure entry.

Addresses review feedback from yuh-yang on PR #65.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 19:23:42 +01:00
pyxl
1cf993dc97 refactor: simplify Path conversion and persist https in save_config
- Extract duplicate Path(config_path) conversion to a single variable
- save_config() now accepts and persists the https flag, ensuring
  load/save roundtrip symmetry for all config fields

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 19:21:53 +01:00