Conversation
take-shots.sh is ship's generated harness, written by `ship sync`. shots.sh is the part that is Duckling's: four frames with a conversion under way or finished in each, light leading and one dark, each opening a different demo document so the set is a tour of what Duckling reads. The control coordinates are empty. They are read off a reference frame at 1440x900 in each language, which is what `shots.sh --reference` takes, and no runner has taken one yet. Nothing here works until they are measured, and measuring them is the next step rather than guessing them: the toolbar is laid out by its own text, so `Umwandeln in` puts the German controls somewhere the English coordinates would miss. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
`ship duckling` reached the msix step, found the release carried no `.msix`, and stopped. `build-msix.ps1`, `AppxManifest.xml.in`, `identity.psd1` and the Store assets were all already here; nothing ran them. The workflow said so itself, in a comment: "Nothing here builds a release". It calls the shared `store-package` action, which is what the four store repositories that do package use. The package is built on every push, so the packaging is proved on each commit, and attached where there is a release to attach it to. The release event fires because a person's token creates the release; the tag input covers a release created any other way, and a dispatch with no tag builds and keeps the package without spending one. `contents: write` for the upload alone. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
The workflow built dist/Duckling.app, photographed the window for a person to look at, and had no way to take the set a listing wants. ship's App Store step found the German listing carrying no pictures, offered to take them, and had no workflow to ask. It calls the shared `mac-store-screenshots` action, which raises the desktop past the 1024x768 a hosted runner comes up at and runs the recipes once per language. Both languages: Duckling reads POTEXT_LANG before it asks the platform, so the German set is a German window, and the demo documents are the same in both. `tag` is now optional, because a screenshots run has no tag to give, and the release binary is built only where there is one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
The first run of the Store package step failed: `build-msix.ps1: no models at .models`. Duckling ships its ONNX models inside the package, and the steps that fetch them were gated on the screenshots input, so a run that was not taking pictures had none. They are unconditional now, and ahead of the package. The Linux lane already fetches them that way, and the cache is keyed on the script where every pin lives, so a run that is not the first pays for a cache read. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
The reference run came back "asked for 1440x900 and got 1100x728". The desktop was raised to 1600x1200 and `set size` reported no error; the window was 1100 wide all the same, which is the size Duckling opens at and remembers. `screenshot.sh` now reads the size back and asks again until it holds, and refuses naming what it reached if it never does. This is ship's generated driver, so the change is in internal/generate/templates and `ship sync` carries it to every repository with a window to photograph; this copy is that template rendered. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
The read-back said 260x228 while the frame that came out was 1100x728, so the resize and the read-back were talking about different windows: an application may have more than one, and the order System Events lists them in is not the order they were made. Both now take the largest, and a refusal lists every window with its size rather than leaving the next person to guess which one answered. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
The reference frames came back with an empty queue. Duckling takes documents as arguments rather than through the Finder open-document event, which is what `open -a app doc` sends and what the driver does, so the document the harness staged never reached it. packaging/submission-notes.md has the rest: under the Store sandbox the argument route is blocked too, and the folder goes in through Add folder, which is what a person does. The coordinates are measured off 00-reference.png in each language's own directory, taken at 1440x900 on a hosted runner. Per language because the toolbar is laid out by its own text: "Umwandeln in" is wider than "Convert to", so everything after it sits further right. The row coordinate is still empty. Nothing has yet photographed a queue with anything in it, and that is what this run is for. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
Rendered from ship's template, where the key table gained g. The recipe needs it to put a path into the Add folder panel. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
The comment claimed ten. The control offers seven, read off 02-light-the-output-formats.png taken on a runner: DocLang, Markdown, JSON, DocLang archive, LaTeX, ODT and DOCX. The listing copy makes no count, so nothing store-facing said it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
The first attempt used Add folder and a directory path. The panel opened, took the path, closed and added nothing: Cmd-Shift-G with a directory navigates into it and selects nothing, and the Open button acts on a selection. A path that names a file leaves that file selected. Add files takes it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP
|
Leaving this open, but it needs reconciling rather than merging or closing, and the reason is that main solved the same problem in parallel while this branch was in flight.
Each side holds something the other does not. Main has coordinates measured at 1440x900 in both languages, which this branch deliberately left as empty strings. This branch has ten commits of driver mechanics that main has no equivalent of: So the question is which driver to keep and whether main's coordinates survive the answer, and that is a judgement for whoever wrote both. Context: |
take-shots.shis ship's generated harness, written byship sync.shots.shis the part that is Duckling's: four frames with a conversion under way or finished in each, light leading and one dark, each opening a different demo document so the set is a tour of what Duckling reads rather than four pictures of one file.This is not finished and should not be merged as it stands. The control coordinates are empty strings. They are read off a reference frame at 1440x900 in each language, which is what
shots.sh --referencetakes, and no runner has taken one yet. They are left empty rather than guessed: the toolbar is laid out by its own text, soUmwandeln inputs the German controls where the English coordinates would miss.Towards anderix/ship#19. Not started: anderix/ship#15, the missing
.msix— the repository does not call the sharedstore-packageaction, which is what assembles and attaches the msix in the four store repositories that do — and anderix/ship#30.🤖 Generated with Claude Code
https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP