Design
Tiago Águeda edited this page 2026-11-11 16:15:37 +01:00

Page revisions

33 Commits

Author SHA1 Message Date
3fc93f2098
Describe saving a setting with no connection, and the script build
Accessibility says that a setting changed while Postulo cannot be reached is
kept and sent when the connection returns. Design and Installing Postulo say
that the page script is built from assets/js/app.js and committed, as the
stylesheet is.

Refs postulo/postulo#1157
Refs postulo/postulo#1149

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 16:15:37 +01:00
f71f01dd51
Phone navigation bar: holds every item and scrolls sideways, no More (postulo/postulo#912) 2026-10-27 23:53:08 +01:00
29f9b960f0
Your details: a question mark beside the heading and on every section, no helper text under headings
Refs postulo/postulo#918
2026-10-19 18:37:11 +02:00
24a2a8a33c
Document the logo dialog, the calendar controls and settings, and button labels
Refs postulo/postulo#853 postulo/postulo#858 postulo/postulo#859 postulo/postulo#852 postulo/postulo#861 postulo/postulo#862

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 19:01:18 +02:00
149e7151a4
Say that new strings get an empty slot and are translated in Weblate, for Postulo and its plugins
Refs postulo/postulo#706
2026-10-10 12:43:57 +02:00
691c9d9ac6 Show the interface the pages describe, with pictures generated from a demo instance (#353)
Thirty-four pictures from scripts/screenshots.py in the postulo repository, each with alternative text, placed beside the text that describes it. Never retake one by hand: run the script.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 05:53:28 +02:00
7d63a5fe2b
Describe the board's bounded height and sticky names
Refs postulo/postulo#652

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 22:41:55 +02:00
042e69e7f4
Tracking applications, Design: several board columns open, centred, in motion
The board's columns can be open several at a time (a strip opens beside the
open ones, an open column's heading folds it alone), `?status=` takes a set,
comma-separated, in the table too, the board is centred, and a fold moves
unless less motion is asked for. Design gives the heading's four actions, the
centring, the motion and why the content's width is a custom property.

Refs postulo/postulo#709

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 16:53:00 +02:00
0c4e61405c
Career record, CVs, documents, Design, Accessibility: skills need a group, anonymous CV titles, the Documents menu, fieldsets
A skill needs a group and those without one are listed on the overview; deleting a career entry
removes its CV rows; a CV with contact details off does not name its holder in its title; the
four Documents lists have a section menu and Files filter by kind; a group of choices is a
fieldset with a legend; the Tags list is labelled with scripts off; switch knobs follow the
reading direction and a select's open list is painted from the same tokens in both themes;
Europass import strips markup, skips what the account holds and places entries by date; saved
views survive a width drag and can be named in any script.

Refs postulo/postulo#617 postulo/postulo#381 postulo/postulo#512 postulo/postulo#667
Refs postulo/postulo#624 postulo/postulo#625 postulo/postulo#518 postulo/postulo#517
Refs postulo/postulo#655 postulo/postulo#563 postulo/postulo#616 postulo/postulo#618
Refs postulo/postulo#632 postulo/postulo#503 postulo/postulo#504

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 12:04:58 +02:00
057f51076a
Say where the help is on Your details, and what it does for 1.4.13 and 3.3.2
Design: what a field's help is, the question mark on a card, and a section on help --
the tooltip, where it is drawn and when it is not, what stays in sight, the drawer, and
help as templates. Accessibility: what a person can expect of it and how it is tested.
A line pointing at each card's help topic where the wiki explains the same thing.

Refs postulo/postulo#302

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 06:33:51 +02:00
9bd0a9b41a
Say that every choice is a button with a list of its own
Design: Choices, the select every page draws, how it is used with the keyboard and what
it keeps from the native one. Tracking applications: a status on a card is saved when it
is chosen. Writing a plugin: a scheme's icon. Getting started: the time zones in groups.

Refs postulo/postulo#301
Refs postulo/postulo#315

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 05:20:30 +02:00
d4c1088ad8
Say that the board folds to one column and scrolls under a held card
Tracking applications: the status folds the board's columns, the fold is in the
address, a strip is still a column; what a move says and where the board is left; the
edge scrolling and what it leaves to the browser. Design: the board as a component, its
turn among the requests, and the one thing a script moves.

Refs postulo/postulo#315

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:06:14 +02:00
05eef9f47b
Say how an instance defines identifier schemes of its own
Configuration: the JSON, the pattern language and its budget, what is refused and how it
is said, what deleting or changing a scheme does to what is stored, where the text is
kept. Writing a plugin: what a reader of the registry now meets. Design: a dialog with a
page behind it, and a box of code. Backups, the API, Your career record and Tracking
applications: what happens to identifiers of a kind this instance lacks.

Refs postulo/postulo#311

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:33:35 +02:00
a4adbf7720
Say how a telephone number is read against its country's numbering plan
Tracking applications: the telephone section again -- what is put aside before a number
is read, what is refused and what is kept with a warning, how a stored number is marked
and never rewritten, how a number is shown, and the row, with the kind beside the number
on a wide screen. Your career record: what an import and a candidate file do with a
number. The group of two controls and the row's grid in Design, `phone_country` on the
API, and what an importer hands over.

Refs postulo/postulo#304
Refs postulo/postulo#416
Refs postulo/postulo#649
Refs postulo/postulo#650

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 02:46:24 +02:00
0cc2583605
Say how a postal address is checked against its country
Your career record: a section on the address rows -- what is refused, that a street is
never required and a town and a country are enough, how a postcode is put right, the
forces and territory forms, and that a stored or imported address is marked and left
alone. The same said shortly in Configuration, Getting started and Backups; the
address-line grid in Design; and in Writing a plugin, what postal-rules governs and
that a word shared with Postulo needs a context.

Refs postulo/postulo#306
Refs postulo/postulo#635
Refs postulo/postulo#458
Refs postulo/postulo#651

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 02:40:22 +02:00
2a90c3eaae
Say that the Applications filters are in the table's column headers
Tracking applications: where the four filters are in each shape, a header that holds
more than one filter, Narrow as a form of its own with its count, what it keeps across
a swap, and the buttons with scripts off. Listings: the one Apply on a phone. Design:
what a header holds, how its cell is named, and Narrow.

Refs postulo/postulo#314
Refs postulo/postulo#622
Refs postulo/postulo#626
Refs postulo/postulo#647

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 01:22:39 +02:00
08ab380be0
Say that a web link is on a service, and how a plugin adds one
Tracking applications: the service of a link, what its address has to be, Other, and
that nothing has to be chosen; one address under two kinds; what an archive does with
a service. Your career record: a value moved between rows in one save, the candidate
file's format 4 and its claim about a service. Writing a plugin: the link-service
kind, its three names on the surface and a section of its own. The API's web_links
on a contact, and the icon beside a choice in Design.

Refs postulo/postulo#305
Refs postulo/postulo#457
Refs postulo/postulo#461

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 01:01:52 +02:00
9fff446515 A language code is a BCP 47 tag in its canonical form, said where one is met
Postulo writes `pt-BR` wherever it writes a language, and Serbian is `sr-Cyrl`.
The pages that show or describe a code say so where a reader meets one: the
webhook payload, the API's `language` and `record_language`, what a notifier
and a store are handed, and the catalogue directories of a plugin, which are
gettext's names and the one place an underscore is written.

*Writing a plugin* names the four calls that are on the surface for it:
`language_tag`, `is_language_tag`, `language_match` and `language_matches`,
Postulo's own writer, shape check and comparison, so that a plugin does not
grow its own way of lower-casing a code.

Also: what an older archive's codes become when it is put back, that a
language menu keeps a language it does not list, that Django's admin says its
own language in lower case, and the working catalogues in the design rules.

Refs postulo/postulo#337

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 21:51:55 +02:00
234b550b29
Say Enabled and Disabled about a plugin, and that a caution is an amber pill
The switch is labelled Enabled, what is off wears a grey Disabled pill,
and the amber pills are badges.

Refs postulo/postulo#311

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:53:14 +02:00
2a8a6e5e77
Say how a row leaves Your details, and describe the dialog component
A bin on every saved row asks in a dialog and removes at once; Primary
is a star; the dialog opens without a script as a popover and with one
as a modal.

Refs postulo/postulo#303

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:53:14 +02:00
89bc269cbf
Say how a Server settings page keeps the measure
A block on the frame, filled in one line by a page that is a form;
tables, grids and the plugin rows keep the width.

Refs postulo/postulo#320

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:23:00 +02:00
bf3e5e8754
Say that a page which is also a fragment says so in Vary
Back after a live filter found the cached fragment instead of the page;
the mixin that chooses the template names what chose it.

Refs postulo/postulo#646

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:05:36 +02:00
ee3e5df63e
Say that the header's box searches the page's table on three pages
On Companies, Applications and Listings the masthead's search narrows
the table, with a globe that searches everything; on a narrow screen it
is a bar under the masthead that never lies over what has focus; and the
live controls of a table take turns.

Refs postulo/postulo#313

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:05:19 +02:00
fac9bf95b2
Say that a menu is one component, drawn in the top layer, and that People has pictures
Every menu opens over the page, tied to its trigger, so none is cut off
by a box that scrolls; the account menu and More became the same
component.

Refs postulo/postulo#310

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:34:12 +02:00
30b7c3ee58
Say that a column's sort sits at the end of its header
Since #253 a column's name opens its filter; the sort is the arrows at
the end of the cell, lined up down the table.

Refs postulo/postulo#317

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:34:12 +02:00
ba83e50e65
Say where a page's measure lives, and when a form takes two columns
Your details and every Settings page keep their forms to 672 pixels
beside the sidebar, and the contact and capture forms take two columns
from 2xl, by the rule the company form set: neither column narrower than
the one it replaces.

Refs postulo/postulo#320

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:34:11 +02:00
7b101053ac
Say how the main navigation keeps your order, and what it becomes on a phone
Getting started says the Appearance page orders the navigation as well
as trimming it, what the order decides (the row's room, the phone bar's
first four), and that on a phone the places are a bar at the foot of
the screen with More and search. It also stops saying "your name, top
right": the account menu has been your picture since #282.

Accessibility gains the navigation's promise (one list, one name, one
place in the reading order at every width; a row that never wraps; a
bar whose targets are 44 pixels and that nothing hides behind), the `/`
key on a narrow window, and what the navigation's own test measures
that axe cannot. Design gains *The main navigation*: one element drawn
once, how many items the row holds at each breakpoint and why, More,
the three neighbours that must know the bar's height and the rule about
containing blocks on the header, and what is stored for the order.

Refs postulo/postulo#299

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 15:31:26 +02:00
487d462774
Design: cards and headings, pills, alerts and figures
Refs postulo/postulo#291
Refs postulo/postulo#292

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-29 00:48:58 +02:00
5e7ec4a41a
Design: the brand scale is a deep blue, not an indigo, per the hue decision in #295 2026-09-25 14:34:45 +02:00
cd79d1293b
Design: the tile
Refs postulo/postulo#291

Co-Authored-By: Cline <noreply@cline.bot>
2026-09-23 12:58:40 +02:00
fba1774b6a
Design: tables, and the three shapes of nothing
Refs postulo/postulo#291

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-22 20:40:27 +02:00
f4f29de52e
Design: the Forms section, for Basecoat's field family
Refs postulo/postulo#290

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-22 19:49:00 +02:00
28c72a14aa
Write down what the interface is made of
#292's last part: there was no design page among the wiki's 23, and
CONTRIBUTING described the mechanics -- components live here, Basecoat draws
them, icons come from Lucide -- without a word about what the result should
look like. So every judgement about the interface was somebody's taste on the
day, and the six ways of writing a page title are what that produced.

The page says what the tokens are and when to reach for each: the two scales
and the semantic names, the one radius everything is derived from, the three
planes, the type sizes, the two densities, and the empty state. It says what
is not negotiable, in the places where a design decision would otherwise cost
a criterion -- colour is never the only thing saying something, a
high-contrast theme throws backgrounds and shadows away, nothing moves unless
somebody's system allows it, compact may not shrink a target.

It also says where the skeleton went, since #292 asked for one: Postulo
renders on the server, so there is no moment with nothing in it to fill, and
what htmx replaces is the previous answer and still true while it does.

It points at the gallery rather than describing it. *Server settings ->
Design* shows every component in whichever theme you are reading it in, which
is a thing to look at rather than a thing to read about.

Refs postulo/postulo#292

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-20 18:04:01 +02:00