Repository navigation
feat(studio): a Publish dialog, and publishing over MCP and the HTTP API - #49
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This brings
claudius publish(#48) to the studio, to assistants over MCP, and to the HTTP API.In the studio
publish in the toolbar opens a Publish dialog:
The browser studio reads a dropped cover asynchronously and sends it the same way. The demo keeps the details, and says that it checks nothing and writes no files.
In the session
release.jsonand its artwork.release.jsonandartwork.jpg(or.png) in the song's folder. That happens only once something was given for the release, so ordinary saves write nothing new.Over MCP and HTTP
publishtool. It takes what the person said: the artist, the songwriters, the artwork file,made, and the other details. Withwrite, it also writes the kit. What it leaves out stays as it was. Its description, and the claudius-songs skill, tell the assistant never to choosemadefor the person.set_release(the details, and optionally an artwork path, read under the session's file policy) andwrite_kit.POST /api/release/artworktakes the cover's bytes. It requires an image or octet-stream content type, so a cross-site form can't post one without a preflight, which CORS refuses; the limit is 40 MB.GET /api/release/artworkreturns the cover as given.GET /api/release/preview.pngreturns it at most 512 pixels on a side.State.releaseholds the details, the artwork, the checks, the render they're of, and where the last kit went.How I checked it
cargo xtask cipasses: formatting, clippy on all three builds, the headless check, 217 tests, the doctests and the docs examples.cargo clippy -p claudius-ui --target wasm32-unknown-unknown -D warnings,cargo deny check,typos,cargo xtask siteandlychee --offline(0 broken links) pass too.text/plainis refused, and one sent asimage/pngis taken;release/, andrelease.jsonandartwork.pnginto the song's folder;publishand gets the artwork and "how the song was made" problems. The shared-session test refuses an artwork path from outside the session's folders.publishplan step) with screenshots: