Add the vector mark, its pride variant and their animated loops #1219

Merged
tiagoagueda merged 1 commit from 1218-vector-mark into main 2026-11-05 21:05:26 +00:00
Owner

Adds the mark as vectors beside the raster, in assets/brand/. postulo.png stays the source scripts/brand.py reads, so the served icons and brand.json are unchanged (brand.py --check passes).

File What Size
postulo.svg The mark redrawn: seven paper sheets, each a Bézier path with its own gradient (grad-<sheet>) and shadow filter (shadow-<sheet>), sampled and measured from the raster 20 KB
postulo_pride.svg The same sheets in the six pride colours, with softer shadows 20 KB
postulo_pride.png The raster the pride colours came from, kept as made (on white), at 896 px to stay under the 500 KB limit 484 KB
postulo_swell.svg, postulo_pride_swell.svg 8 s loop: a slow wave bends the edges between sheets; the outline and the counter stay still 477 KB each
postulo_drift.svg, postulo_pride_drift.svg 8 s loop: each sheet's light turns ±22° and back 23 KB each

Every loop starts and ends on the static mark. The animation is SMIL, so browsers play it even in an <img>. Nothing serves these files yet; CONTRIBUTING's The mark says to give people who ask for reduced motion the static file wherever an animated one is used.

tests/test_brand.py gains one test per SVG: pure vectors (no <image>, <script> or <foreignObject>, no external URL), seven sheets each filled by its gradient, under 500 KB, and the loops actually animate.

Closes #1218

🤖 Generated with Claude Code

Adds the mark as vectors beside the raster, in `assets/brand/`. `postulo.png` stays the source `scripts/brand.py` reads, so the served icons and `brand.json` are unchanged (`brand.py --check` passes). | File | What | Size | |---|---|---| | `postulo.svg` | The mark redrawn: seven paper sheets, each a Bézier path with its own gradient (`grad-<sheet>`) and shadow filter (`shadow-<sheet>`), sampled and measured from the raster | 20 KB | | `postulo_pride.svg` | The same sheets in the six pride colours, with softer shadows | 20 KB | | `postulo_pride.png` | The raster the pride colours came from, kept as made (on white), at 896 px to stay under the 500 KB limit | 484 KB | | `postulo_swell.svg`, `postulo_pride_swell.svg` | 8 s loop: a slow wave bends the edges between sheets; the outline and the counter stay still | 477 KB each | | `postulo_drift.svg`, `postulo_pride_drift.svg` | 8 s loop: each sheet's light turns ±22° and back | 23 KB each | Every loop starts and ends on the static mark. The animation is SMIL, so browsers play it even in an `<img>`. Nothing serves these files yet; CONTRIBUTING's *The mark* says to give people who ask for reduced motion the static file wherever an animated one is used. `tests/test_brand.py` gains one test per SVG: pure vectors (no `<image>`, `<script>` or `<foreignObject>`, no external URL), seven sheets each filled by its gradient, under 500 KB, and the loops actually animate. Closes #1218 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add the vector mark, its pride variant and their animated loops
All checks were successful
CI / Unit tests and coverage (Python 3.14) (pull_request) Successful in 36m22s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 2m53s
CI / Browser tests (Chromium) (pull_request) Successful in 49m26s
CI / Database tests on PostgreSQL (pull_request) Successful in 11m51s
CI / Security audit (pull_request) Successful in 2m25s
241f4407d3
Beside the raster in assets/brand:
- postulo.svg: the mark redrawn as seven paper sheets, each a Bezier path
  with its own gradient and shadow filter sampled from the raster;
- postulo_pride.svg, and postulo_pride.png, the raster it was coloured
  from (896 px, kept as made);
- postulo_swell.svg and postulo_drift.svg, with their pride twins:
  8-second loops that start and end on the static mark.

The raster stays what scripts/brand.py reads, so the served icons and
brand.json do not change. A test holds the vectors to pure SVG (no
raster, script or external reference) under the 500 KB limit, and
CONTRIBUTING's "The mark" names them.

Closes #1218

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tiagoagueda deleted branch 1218-vector-mark 2026-11-05 21:05:27 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo!1219
No description provided.