Your details: twelve fixes and additions (#919–#932) #1005

Merged
tiagoagueda merged 7 commits from details-batch into main 2026-10-18 20:45:09 +00:00
Owner

Twelve issues on Your details and the link services, as one pull request.

Closes #919
Closes #920
Closes #922
Closes #923
Closes #924
Closes #925
Closes #926
Closes #928
Closes #929
Closes #930
Closes #931
Closes #932

What each one did

  • #932 A service has a company_prefix; a company's LinkedIn row builds /company/, Xing /pages/. Both kinds of full address are still recognised in either row.
  • #931 Reproduced with the "gets me back in" choice beside the star (the bin dropped to a second line). The star's wrapper may now shrink and both sit at the top of the first line below 40rem. A browser test compares the centres at 360px.
  • #930, #929 Not reproduced: the masthead keeps its name and logo at the foot, and the strip is drawn and every entry reachable, at 360px on Your details, Your career and Language settings. Held by browser tests; if it still happens on a real phone, a screenshot or the browser would help.
  • #925 One social profile per service. Exceptions decided: Other, services on many servers (any_host: Mastodon, Forgejo…) and code repositories repeat. The select greys a taken service (with the reason), the formset refuses a duplicate, the API refuses two in one call, existing duplicates are kept and flagged. Archive restore is unchanged.
  • #924 Clicking the fixed front focuses the box (not after a drag-selection).
  • #923 A pin toggle (map-pin-off grey / map-pin green) before the star and bin, confirmed in one dialog. Your details only; the contact form keeps its tick box. The dialog does not claim the address never leaves the instance (map tiles are fetched by the browser).
  • #922 PersonIdentifier.is_primary (migration 0046 marks each person's first; one-per-person constraint), star in the row, primary listed first and printed first, archive format 73. There is no API surface for a person's identifiers.
  • #920 Icons on every entry, plus a Your CV photo entry.
  • #919 The legend is floated out of the border and drawn as the card title with the question mark inside the card.
  • #926 Marks for every service (Simple Icons; LinkedIn from Font Awesome Free, CC BY 4.0 — LinkedIn's own kit could not be fetched offline), TRADEMARKS.md updated per the decision. Some owner-page URLs in assets/brands.txt are best guesses and need checking.
  • #928 The calendar button stays on the boxes' line; a calendar of Postulo's own (<c-date-picker>). The period picker (#858) is not converted because it must work without a script.

Checked

Full unit suite (the failures it found are fixed), browser tests for the files touched and the pages that draw these cards, extract --check, guard.

🤖 Generated with Claude Code

Twelve issues on *Your details* and the link services, as one pull request. Closes #919 Closes #920 Closes #922 Closes #923 Closes #924 Closes #925 Closes #926 Closes #928 Closes #929 Closes #930 Closes #931 Closes #932 ## What each one did - **#932** A service has a `company_prefix`; a company's LinkedIn row builds `/company/`, Xing `/pages/`. Both kinds of full address are still recognised in either row. - **#931** Reproduced with the "gets me back in" choice beside the star (the bin dropped to a second line). The star's wrapper may now shrink and both sit at the top of the first line below 40rem. A browser test compares the centres at 360px. - **#930, #929** Not reproduced: the masthead keeps its name and logo at the foot, and the strip is drawn and every entry reachable, at 360px on Your details, Your career and Language settings. Held by browser tests; if it still happens on a real phone, a screenshot or the browser would help. - **#925** One social profile per service. Exceptions decided: *Other*, services on many servers (`any_host`: Mastodon, Forgejo…) and code repositories repeat. The select greys a taken service (with the reason), the formset refuses a duplicate, the API refuses two in one call, existing duplicates are kept and flagged. Archive restore is unchanged. - **#924** Clicking the fixed front focuses the box (not after a drag-selection). - **#923** A pin toggle (`map-pin-off` grey / `map-pin` green) before the star and bin, confirmed in one dialog. Your details only; the contact form keeps its tick box. The dialog does not claim the address never leaves the instance (map tiles are fetched by the browser). - **#922** `PersonIdentifier.is_primary` (migration 0046 marks each person's first; one-per-person constraint), star in the row, primary listed first and printed first, archive format 73. There is no API surface for a person's identifiers. - **#920** Icons on every entry, plus a Your CV photo entry. - **#919** The legend is floated out of the border and drawn as the card title with the question mark inside the card. - **#926** Marks for every service (Simple Icons; LinkedIn from Font Awesome Free, CC BY 4.0 — LinkedIn's own kit could not be fetched offline), `TRADEMARKS.md` updated per the decision. Some owner-page URLs in `assets/brands.txt` are best guesses and need checking. - **#928** The calendar button stays on the boxes' line; a calendar of Postulo's own (`<c-date-picker>`). The period picker (#858) is not converted because it must work without a script. ## Checked Full unit suite (the failures it found are fixed), browser tests for the files touched and the pages that draw these cards, `extract --check`, `guard`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
A service gets a company_prefix beside its prefix; a company's row asks for the name
after it, a person's after the person's. LinkedIn and Xing declare one. Both kinds of
full address are still recognised in either row and nothing stored is rewritten.

Refs #932

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
#919 the seven fieldset cards draw their legend as the card's title; #931 star and bin
level on a phone; #920 icons on the section menu; #922 a primary identifier (migration,
archive 73); #923 a map pin that asks first; #924 the fixed front of an address focuses the
box; #925 one social profile to a service; #929 and #930 could not be reproduced and are
held by browser tests.

Refs #919 #920 #922 #923 #924 #925 #929 #930 #931

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Facebook, Instagram, Codeberg, X, Threads, GitLab, Bitbucket and Xing come
from the pinned Simple Icons, LinkedIn from Font Awesome Free brands
(CC BY 4.0, attribution comment kept; LinkedIn's own kit could not be
downloaded offline), all in single-colour mode. brands.txt gains an optional
@file source that sync-brands.mjs reads from assets/brand-sources/. The
link_services plugin names a brand for every service. TRADEMARKS.md rule 2,
the none bullet, the LinkedIn paragraph and the table, THIRD-PARTY.md and the
tests follow the maintainer's decision of 2026-10-15.

Refs #926

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The date of birth's three boxes and the calendar button are one row that never wraps
(the fieldset may shrink, the boxes give way, the button keeps its size), level with the
boxes down to 320px. The picker is a new <c-date-picker> component: a month select, a year
select and a grid of day buttons drawn by app.js from the browser's Intl locale, following the
ARIA date-picker dialog pattern (arrows, Page Up/Down, Home/End, Enter, Escape back to the
button, today and the chosen day announced, 36px targets). It fills the three boxes and
never replaces them, and opens on the date already in them. Painted in basecoat.css.

The calendar's period picker (#858) is not converted: it is a no-script GET form around the
browser's date input, and a grid that needs a script cannot replace it without losing that.
The component's event and script are reusable by it later.

New strings: Previous month (existing), Month and Year (existing); "Pick a day" is retired.
Run extract; no translation written.

Refs #928

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Refs #922 #923 #919

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Your details: browser tests follow the pin, the one-profile rule and the new marks
Some checks failed
CI / Unit tests and coverage (Python 3.14) (pull_request) Successful in 13m46s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 2m39s
CI / Database tests on PostgreSQL (pull_request) Successful in 3m25s
CI / Security audit (pull_request) Successful in 53s
CI / Browser tests (Chromium) (pull_request) Failing after 31m29s
ad37d83571
Refs #923 #925 #926

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
tiagoagueda force-pushed details-batch from ad37d83571
Some checks failed
CI / Unit tests and coverage (Python 3.14) (pull_request) Successful in 13m46s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 2m39s
CI / Database tests on PostgreSQL (pull_request) Successful in 3m25s
CI / Security audit (pull_request) Successful in 53s
CI / Browser tests (Chromium) (pull_request) Failing after 31m29s
to 90d407fa54
All checks were successful
CI / Unit tests and coverage (Python 3.14) (pull_request) Successful in 16m39s
CI / Checks: lint, migrations, catalogues, settings, built files (pull_request) Successful in 2m41s
CI / Database tests on PostgreSQL (pull_request) Successful in 3m56s
CI / Security audit (pull_request) Successful in 1m6s
CI / Browser tests (Chromium) (pull_request) Successful in 32m55s
2026-10-18 20:11:31 +00:00
Compare
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!1005
No description provided.