Repository navigation
Notebook: tags per header block, colour pictures, one-click axes (PR 17b-1) - #247
Merged
Merged
Conversation
…17b-1) - Tag channels: folders with identical headers (exact: channel count, every raw name present and equal, colour flag) are one block tagged once; a block answer writes the same per-folder draft answers as one folder at a time. A folder can be taken out of its block. - The colour pre-tick is confirmed only on Image type; Tag channels restates it. - RGB folders are drawn as one colour picture (colour_composite, Thumbnails.colour): tags, image type, pairing, check and save. - Axes: one-click Confirm these axes when the roles leave nothing to ask; an unchanged reopen offers the earlier run's roles and moves on. - Pixel sizes say uncalibrated on the chip and summary. - Replicate IDs in natural order (rep2 before rep10), display only. - Texts no longer name the old steps 1-4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
natural_key appended the tie-break text after the parts, so "rep" against "rep2" compared the text with a number and raised TypeError (run plots, names, tag grid, image type, check and save). The parts are now a tuple of their own; the order is unchanged otherwise. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
On a reopen the recorded roles were re-offered after every role change and written back into the role boxes, so a user's edit was silently undone. The recorded roles now go into the boxes once per check; a role changed after that is the user's, and the recorded roles are offered again only when the boxes equal them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G3qp9AxjpGPw9xfWAUJNqc # Conflicts: # CHANGELOG.md
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.
PR 17b of the notebook UX re-evaluation (owner decisions 2026-11-09,
docs/restart/designs/ux-proposal-2026-11-09.mdon MorphoFeatureclaude/restart-doc). It follows #244 (17a, merged; this branch has main merged in, so the diff is 17b only).Split: 17b came out at about 2,000 changed lines, so it is in two PRs:
claude/notebook-17b). Merge it after this one.Summary (by module)
preview_render.colour_composite(pure, new function): turns the three panels of one plane into one colour picture. Channel 1 is red, 2 green and 3 blue, and each keeps its own 0.5-99.5 percentile contrast. It is display only and never changes a source pixel.ValueError), so it is shown channel by channel, never coloured.Thumbnails.colour(layout, detail=)andThumbnails.picture(layout, colour)(notebook_channel_thumbs).Thumbnailsnow caches the panels and makes PNGs on demand.notebook_channels_grid.TagGrid, one answer per header block (owner Q5):DAPI≠dapi);with_tagsto each folder and saves once. It writes the same per-folder answers as individual confirms, and a test compares the draft bytes.notebook_channels_rows(ui).ImageTypeRows). The tag page restates the block's answer: "Answered colour (RGB) (Image type, step 7)", or "confirm it on Image type (step 7)". The classicchannels_step()(no stepper) keeps its single confirm in the grid, because there is no image-type page there.notebook_axes_quick(new,ui): one-click axes confirm (owner Q3).unchanged_confirmation).preview_checkedand then calls the existing_toggle_confirmation, so it records exactly what the two clicks record. A test compares it with the manual path.notebook_stepper/notebook_step_states:StepState.note, and a new "noted" chip style (light green with a green border).notebook_values.natural_key), display only:rep2comes beforerep10, and the folder name breaks a tie.RunLabels.order(run box plots and legends), the replicate blocks and short names of Check and save (description_review), the names rows, the step summaries, and the folder order of the tag grid and the image-type page.dataset/designmessages say "Replicates in the notebook", not "step 1 of the notebook". The card headers lose their "A." and "B." prefixes. The classic hidden "What next" boxes keep their classic numbering, which is still right for embedders.pyprojectdeclares the two new modules asui.Decisions / for the owner
rep2beforerep10, the folder name breaking a tie) in the run plots and legends, the names tables and the replicate blocks. Nothing is stored in this order.physical_check.LayoutGroup.batch_confirmable.Notes for review
embed_minimal_htmlin Playwright chromium (1180 px, deviceScaleFactor 2), not in a live JupyterLab or Colab. Standalone renders lack JupyterLab styles and icons.RELEASE_REFstill pins v0.4.0, as in 17a.Tests
test_notebook_tag_blocks.py(8): blocks, draft bytes equal for block vs one-by-one, nameless headers,DAPI/dapi, split, duplicate refusal, one proposal confirm, one RGB confirm only on Image type.test_notebook_colour.py(8): PNG pixel checks that the composite is really colour and leaves the planes unchanged; refusals; colour pictures on tags, image type, enlarge, pairing and check-and-save.test_notebook_axes_quick.py(5): offer and preview; one click equals two clicks; a plain stack is not offered; an unchanged reopen offers the run's roles and opens Run; an edit withdraws the offer.natural_keyandRunLabels.order).grid.split) intest_notebook_channels.pyandtest_notebook_check_save.py; text changes intest_notebook_ui.pyandtest_notebook_convert.py; the stepper's "noted" chip.python tools/check.py(.[dev,notebook,zarr], Python 3.13): ruff, format and code rules pass; 4971 passed, 4 skipped. The 4 skips are environment-dependent: 3 for a case-sensitive file system and 1 for running as root, which ignores file modes.tests/channel_images.py): a fluorescence set, an RGB set, a rep2/rep10 set with a run, an unchanged reopen and a mixed reopen. Each one was looked at; the R/G/B chip colours and the duplicated caption were fixed after looking.Generated by Claude Code