Repository navigation
The working loon: motion files, a guide section, and the swimming-loon pattern (0.2.0) - #1
Merged
Merged
Conversation
…tern (0.2.0) The loon may move for one reason: to show that work is in flight. Five motion files (small, inline, page, diving, lake) and four reversed twins are generated by tools/motion.py from the supplied artwork; each copies the paths unchanged and adds only clip regions, CSS animation and a reduced-motion rule. The guide's new section says when the loon may move, how it pairs with words, and how the small loon swims along a waterline for known progress. Tests regenerate the files byte for byte and hold every path and circle to the originals. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t's job A fade-in inside the files held the loon at opacity 0 until the animation ran, so a still renderer (a thumbnail, Quick Look, a design-tool import, a paused tab) showed nothing. Every file now starts at rest and fully visible, and the guide's 300 ms rule says the host waits before showing it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Kyle, 2026-09-29: "Consider putting the loon-loading in the branding guide with a few variations? Have some fun with it, like full page, icon, etc."
Animated preview, both themes and in context: https://claude.ai/artifact/SSrgxMZuWywSCBw8UYAZbc (private to Kyle until shared)
Why
LoonSecIO/LoonInspect#721 gives LoonInspect a loading loon that beats its checkered back while a page waits. Making the loon's motion a brand asset, with rules, lets LoonInspect, the marketing site and a future native agent use one loon instead of each drawing its own.
This touches two sentences in the guide, so I'm naming them: "Do not redraw, distort, rotate…" the mark, and "Avoid looping decorative motion; honor reduced-motion preferences." This PR sanctions one functional motion and nothing decorative. The loon moves only while work is in flight, stands still under reduced motion, and never appears on a finished, empty, failed or stale state. Only the back lifts about the shoulder; nothing is redrawn, and the tests hold every path and circle to the supplied files. If you'd rather keep the mark still, the guide section is the place to say no.
What
assets/motion/: five files, generated bytools/motion.pyfromloon-mark.svg,loon-favicon.svgandlake-scene.svg. Each adds only clip regions, CSS animation and a reduced-motion rule.loon-working-small.svg(16–31 px, the simplified loon) for busy buttons and controls.loon-working.svg(32–64 px) for a panel or table waiting on its first read. This is what LoonInspect#721 draws inline.loon-working-page.svg(96–200 px) for a whole page that waits; the ripples drift.loon-diving.svg(96–200 px) for long work of unknown length: the loon dives, swims out of sight, surfaces and shakes off.lake-working.svg(full width) for onboarding and a first run: the illustration with the loon riding the swell.-reversedtwins of the four loon files for dark surfaces (ink swapped for paper, eye kept). The lake keeps its own palette.guide/brand.md: a new section, "The loon at work", with the table, six rules, and the swimming loon pattern for known progress (the small loon swims along a waterline to the share that's done, with the numbers in words beside it). The illustration sentence now names the working loon as the one exception.tests/test_motion.py: the files regenerate byte for byte; everydand circle, fill included, is a supplied one; the eye is present in every loon file; every file stands still underprefers-reduced-motion, with no scripts and no remote references; the reversed twins change only the ink; the lake's paths equal the illustration's.Verification
python3 tools/build.py→dist/loon-design-0.2.0.zip;python3 -m unittest discover -s tests -v→ 8 tests, OK.<img>(the dive and the page loon caught mid-motion). An earlier fade-in inside the files hid the loon from still renderers; it was removed, and the 300 ms wait is now the host's job (second commit).--loon-actionand--loon-border, both already AA-checked bytest_foundations.py. Keyboard: nothing here takes focus; the swim pattern is arole="progressbar"with its value in words.Not in this PR
loon-working.svg)./brand/pin update is a marketing PR.Kyle owns brand decisions; an independent reviewer approves before merge. Not merged. AI-assisted: yes.
🤖 Generated with Claude Code