Changelog#
Notable changes to Pocket, newest first. Package versions and the versions of serialized artifacts and profiles are independent of each other. Pocket hasn't been published to a package index. 0.4.0 is tagged as the last version released under the MIT License; the other version headings mark development milestones, not publication dates.
Unreleased#
Changed#
- Pocket is now licensed under the GNU Affero General Public License, version 3 only (AGPL-3.0-only), with additional permissions for output and for unmodified Pocket Max for Live devices shared inside musical projects. Using Pocket stays free, including commercially, and what you make with it is yours; a commercial license is available for closed products. Licensing explains the change in plain language. 0.4.0 is the last version released under the MIT License, and copies of it and earlier versions keep that license.
examples/andskills/stay MIT licensed. - The package version is now 0.5.0.dev0, so no AGPL-licensed build reports 0.4.0.
- Package metadata now declares
License-Expression: AGPL-3.0-only AND Apache-2.0(Pocket, plus the Apache-2.0 Basic Pitch decoder derivative) and shipsLICENSE,LICENSE-EXCEPTION.md,NOTICEand the Basic Pitch license. Building requires setuptools 77 or later. - Baste releases every LiveAPI object it builds once each read's result is complete, whether the read succeeded or failed. The device clears each object's path and reads the path and
idback, because an object that keeps its path keeps listeners armed in Live and slows structural edits in the open set.pocket.live-observation/v1records gainlive_objects_created,live_objects_released,release_elapsed_msandrelease_error; a shortfall leaves the disposition and observation unchanged and also writes a warning to the Max window. This hasn't been measured in Live yet, and the changed device needs native acceptance again. See object lifetime.
Added#
- Note hypotheses decoder
basic_pitch_0_4_0_false_false_v2. It keeps the model frames the analysis windows cover, following upstream Basic Pitch commit e989e40 (#179), so a note still sounding at the end of a region is kept. The v1 decoder stops 11 frames (about 0.13 s) short of a 20-second region's end and can drop such a note entirely. Migration: setsettings.decoderto the v2 value for new work. v1 settings are still accepted, and existing v1 records, requests and jobs replay exactly under v1; each record verifies only under the decoder it names. The v1 projection file is unchanged. The v2 projection is a new byte-pinned file,audio_note_projection_v2.py, listed inNOTICE. Restart a running MCP server to accept the new value. NOTICE: which license applies to which files, the MIT notice for earlier versions, and third-party notices. It now includes Basic Pitch's upstream notice, which its Apache-2.0 license requires alongside the adapted decoder.- SPDX license identifiers at the top of source files. A test keeps new files labeled and keeps byte-pinned files (the decoder derivative, the model runners and the Max for Live devices) unchanged, so recorded identities, qualifications and native acceptance stay valid.
- A draft contributor license agreement, pending legal review and not yet in effect, and a CLA workflow that stays off until the maintainer enables it.
- The website publishes the plain-language licensing page, the notices, the additional permissions and the draft agreement, and shows plain-text license files verbatim.
- Opt-in
pocket.error/v3machine errors (pocket --error-format v3,POCKET_ERROR_FORMAT=v3) add an optionalhintthat names the argument to supply or the call to make first. For a cue inside a repeated passage, it namesoccurrence_idand sayscontext_querylists the occurrences. Hints come from the refusing site or the error code, never from message wording, and never imply a retry outcome, an approval or a native result. On MCP, a value that fails the input schema gets a hint naming that argument. A write that fails after starting adds that the corrected call needs a new request ID. Migration: the v2 schema is closed, so hints are a new version. The legacy format andpocket.error/v2are byte-for-byte unchanged and still supported. To move, changev2tov3and accept one optionalhintstring. The codes and other fields are the same.examples/export_contracts.pyalso writeserror-v3.schema.json. Restart a running MCP server to use it. See contracts and errors. examples/measure_baste_observations.pyrecords what a series of Baste observations costs the running Live process: read times, release counts, Live's memory and log growth, and timed track adds and deletes at chosen points, with an optional control series that keeps the same pacing but reads nothing. It writes numbers only.
0.4.0: last MIT-licensed version#
The last version released under the MIT License: the source at commit 3ba9a4f, tagged v0.4.0. It wasn't published to a package index. It includes the Baste and Pipette milestone (fresh read-only Live observation and preservation of explicitly kept saved trials; existing names and serialized identifiers remain compatible) and the changes below.
Added#
- Source-bound musical contexts, explicit occurrence mappings and typed interpretation bindings.
- Reversible source slips, timeline shifts and anchor rebindings with locks and preservation evidence.
- Exact practice renders, revision comparisons, scoped attributed feedback and an explicit linear join-envelope profile.
- Installed Python/CLI/MCP input contract export and opt-in machine-readable errors.
- Public documentation site source, generated provider reference, contribution/conduct/security policies and an allowlisted publishing build.
practice_preview: a declaredpocket.practice-preview/v1browser copy of an exact practice render underbrowser-pcm16-original-rate/v1(original rate, PCM16, nearest rounding with ties to even; no dither, gain, clamping or resampling). Unrepresentable samples and undeclared sample rates are refused. Restart a running MCP server to register the new tool.practice_feedbackaccepts an optionalpreviewand then writespocket.practice-feedback/v2, recording the exact preview and interval reviewed. Calls withoutpreviewstill write unchanged v1 reports.practice_feedback_queryaccepts mixed v1/v2 reports and addsreport_schemaandreviewed_audioto v2 rows only;practice_queryalso reads previews and v2 reports.pocket practice-review: a loopback-only practice review page that plays one retained comparison through declared previews and saves explicitly attributed interval reports.- New guides for newcomers: key ideas, with a glossary, and use Pocket with an agent. Most guides now open with a plain-language summary.
- A redesigned website: a new home page with the tool family, light and dark color schemes, an on-page contents rail, previous and next links, copy buttons for code, search results with context, a 404 page and a link-preview image.
examples/linked_downbeat.py: a synthetic linked-downbeat handover. A linked source slip moves a repeated passage's internal bar one onto its clip boundaries. Locks refuse any change to the clip placement or to an anchor's kind or position, and no context edit can change the tempo step. It writes a revision comparison forpocket practice-reviewand records no listening. It adds no provider, profile or schema.
Changed#
- The documentation was reviewed end to end for newcomers. The README, guide index, getting-started walkthrough, status page, capability matrix, release notes and agent skill were rewritten for clarity, and references to private working material were removed.
- Within one practice provider call (and
context_edit_query), artifact bytes and hash checks already verified earlier in that call are reused, within per-call memory bounds, instead of being read and hashed again. Nothing verified is trusted across calls.
Fixed#
- Practice feedback queries report the processing profile of the audio actually reviewed.
- CI installs the optional MIDI dependency used by its test suite.
- The selection workspace refuses a non-ASCII
X-Pocket-CSRFheader with 403 instead of dropping the connection.
The music-tool foundation landed in PR #2. It preserves legacy defaults; no human musical approval or new native qualification is implied. The public-site and policy entries landed in PR #3. Browser previews, v2 reports and the practice review page come from PR #4; no human listening, device-output check or native qualification has been performed with them.
0.2 development milestone#
0.2 notes: canonical tool naming and the associated compatibility changes and limits.
Maintaining this file#
Add concise user-facing changes under Unreleased. Include migration details for changed schemas/profiles, errors or aliases. Before assigning a release heading/date, verify the version/tag and owner-approved release decision. Do not create a tag or publish a package as a side effect of updating notes.