Build image / build-and-push (push) Successful in 11s
- The "add note" affordance no longer hides from viewers (it claimed parity with the bed inspector but gated on !readOnly). A viewer now sees "📓 Notes about this plant" and can open the plop's journal to read it; the composer stays edit-gated, so they can't write. Real parity now. - onScopePlantingChange is required, matching onScopeChange (its bed twin), so a caller can't pass a plop scope with no way to clear it. Dropped the now-dead guard on the "Show all" button. - Pulled the plop-over-bed scope-label priority into one `scopeLabel`, shared by the filter's sibling logic and the composer, so they can't drift; trimmed the invariant comment that was restated a third time. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01H3zbym8Doka2d7D48maSgZ