Your career in the account menu, after Your details #676

Closed
opened 2026-10-03 01:58:54 +00:00 by tiagoagueda · 0 comments
Owner

Your details and Your career are the two halves of what Postulo knows about the person as a candidate, and they sit in different places: Your details in the account menu, Your career under Documents in the main navigation. The maintainer's list asks for the second to follow the first: "User menu: after “Your details” show “Your career”."

What exists today

  • The account menu is a kind="navigation" disclosure of links: the person, then Your details, Settings, Server settings for staff, a separator, the theme switch and Sign out (src/postulo/templates/base.html:192-240). Your details is the first link (base.html:216-218). There is no link to the career record in it.
  • Your career is resume:overview, at /career/ (src/postulo/config/urls.py:24). It is reached from the main navigation only through the Documents item, which lists resume:overview among the URL names that light it up (src/postulo/core/navigation.py:84-96, the name at line 93), and from buttons on the CV list, the CV page, the candidate file page and the preview (documents/cv_list.html:22,56, documents/cv_detail.html:256, resume/candidate_file.html:88, resume/preview.html:15).
  • Documents itself lands on documents:cv_list (navigation.py:87), so the Your career page is one click from a CV list and no click from the account menu where Your details is.
  • Only resume:overview is in Documents' list. The other pages of the same area (resume:preview, resume:item_create, resume:item_update, resume:europass_import, resume:candidate_file, and the rest in src/postulo/resume/urls.py) light up nothing in the main navigation.
  • The avatar button is marked as the current item on Your details alone: trigger_class="{% nav_active 'accounts:profile' %} …" (base.html:193). The links inside the menu are never marked, although the stylesheet already draws .menu-item[aria-current="page"] (assets/css/app.css:826, written for the row under More, #299).
  • The search results page has a group called “Career record” that links to the same page (src/postulo/core/search.py:542); the page's own title and heading are “Your career” (templates/resume/overview.html:4,9). The wiki gives the way as “Documents → Your career” (or “… → Your career record”) in five places (Getting-started.md:117, Your-career-record.md:3, :111, :321, :517).
  • The existing msgid “Your career” is already translated; no new string is needed for the link.
  • Found on the way, not part of this issue: the career search hits link to /career/#experience, #education, #projects, #certifications and #skills (search.py:492, :510), but the page's anchors are section-<slug> (overview.html:39: section-experience, section-project, …), so none of those fragments exists on the page.

Checked against main at f09b6010b.

Proposal

  1. A second row in the account menu, directly after Your details: “Your career”, to resume:overview, with an icon from the bundled set (assets/icons.txt). The menu is a list of links, so Tab walks it in the order they are written; nothing else about the component changes (templates/cotton/dropdown_menu.html).
  2. Take it out of Documents. resume:overview leaves the Documents item's list (navigation.py:93), so the page is not lit under two places.
  3. Say where you are, for the pair. The row of the page being looked at carries aria-current="page" (the stylesheet already marks it with weight, tint and underline, not colour alone), and the avatar button is marked on the pages of either row. The career area's URL names are kept in one list beside ITEMS in core/navigation.py, next to the account menu's two rows, and a test walks resume/urls.py so that a page added to the area without its name in the list fails.
  4. Rename the search group “Career record” to “Your career” (search.py:542), so the results page and the menu say the same thing. “Your career” is already a translated msgid; “Career record” is used nowhere else and leaves the catalogues at the next extract.
  5. Wiki. Getting-started.md and Your-career-record.md say “Your picture, top right → Your career” in place of “Documents → Your career” at the five places above, in the same commit.

Decisions

  • The icon. graduation-cap is already bundled, but means study. briefcase is the Listings icon. Lucide has briefcase-business (present in lucide-static here), which would be a new line in assets/icons.txt and one more file under static/icons/. Recommended: briefcase-business, so the two are not confused in the same screen as Listings and Education; it is one line in the icon list and a test beside tests/test_navigation.py::test_every_item_has_an_icon_from_the_bundled_set holds the account menu's rows to the same rule.
  • Documents loses the career page. The Documents item will no longer light on /career/. Options: keep it in both places, or only in the account menu. Recommended: only in the account menu; two controls that both claim to be “you are here” for one page is what #299 removed for the dashboard and the wordmark. The CV list keeps its “Your career” button, so the way from a CV to the record is unchanged.
  • Capitalisation. The list writes “Your Career”; the product writes “Your career” (the page title, the CV buttons, the wiki). Recommended: “Your career”, as everywhere.
  • Search label. Rename “Career record” or leave it. Recommended: rename, one word of difference is the kind of drift the account menu would otherwise start.
  • The broken search fragments. Fix them here (four strings in search_career) or file separately. Recommended: separately as a bug; it is not caused by this issue and has its own test.

Builds on

#282 (the avatar-only account menu, which the template comment at base.html:180 describes as “the person, three links, a switch and sign-out”: this makes it four links), #299 (the main navigation; aria-current in a menu row), #180 (Your details), #175 (Your career in sections). Related: #677 changes the label over the sub-menu of both pages and touches the same two templates; the two are independent.

Done when

  • The account menu lists Your details, then Your career, then Settings, in that order, and the Your career link goes to /career/. tests/test_header.py::test_the_right_side_holds_the_plus_menu_and_the_account_menu is extended for it (it already slices the panel up to “Your details”).
  • On /career/ and on every page of resume/urls.py, the avatar button carries the active class and the Your career row carries aria-current="page", the Documents item does not light, and on /accounts/profile/ the same holds for Your details. New tests in tests/test_navigation.py, including the walk of the career area's URL names.
  • tests/test_search.py is updated for the renamed group; a case in tests/e2e/test_keyboard_and_focus.py, beside the account-menu one, opens the menu by keyboard and finds the row by Tab, and the axe run over the pages (tests/e2e/test_accessibility.py) stays clean in both themes.
  • The icon is in assets/icons.txt and src/postulo/static/icons/ (npm run sync:icons); tests/test_icons.py passes.
  • No new string: the link and the renamed group both use the existing, translated “Your career”, and the retired “Career record” is gone from the catalogues and from Weblate (#349) at the next extract.
  • The wiki pages named above are corrected in the same commit.

From the list of improvements of 2026-10-02.

Your details and Your career are the two halves of what Postulo knows about the person as a candidate, and they sit in different places: Your details in the account menu, Your career under Documents in the main navigation. The maintainer's list asks for the second to follow the first: "User menu: after “Your details” show “Your career”." ## What exists today - The account menu is a `kind="navigation"` disclosure of links: the person, then Your details, Settings, Server settings for staff, a separator, the theme switch and Sign out (`src/postulo/templates/base.html:192-240`). Your details is the first link (`base.html:216-218`). There is no link to the career record in it. - Your career is `resume:overview`, at `/career/` (`src/postulo/config/urls.py:24`). It is reached from the main navigation only through the Documents item, which lists `resume:overview` among the URL names that light it up (`src/postulo/core/navigation.py:84-96`, the name at line 93), and from buttons on the CV list, the CV page, the candidate file page and the preview (`documents/cv_list.html:22,56`, `documents/cv_detail.html:256`, `resume/candidate_file.html:88`, `resume/preview.html:15`). - Documents itself lands on `documents:cv_list` (`navigation.py:87`), so the Your career page is one click from a CV list and no click from the account menu where Your details is. - Only `resume:overview` is in Documents' list. The other pages of the same area (`resume:preview`, `resume:item_create`, `resume:item_update`, `resume:europass_import`, `resume:candidate_file`, and the rest in `src/postulo/resume/urls.py`) light up nothing in the main navigation. - The avatar button is marked as the current item on Your details alone: `trigger_class="{% nav_active 'accounts:profile' %} …"` (`base.html:193`). The links inside the menu are never marked, although the stylesheet already draws `.menu-item[aria-current="page"]` (`assets/css/app.css:826`, written for the row under More, #299). - The search results page has a group called “Career record” that links to the same page (`src/postulo/core/search.py:542`); the page's own title and heading are “Your career” (`templates/resume/overview.html:4,9`). The wiki gives the way as “Documents → Your career” (or “… → Your career record”) in five places (`Getting-started.md:117`, `Your-career-record.md:3`, `:111`, `:321`, `:517`). - The existing msgid “Your career” is already translated; no new string is needed for the link. - Found on the way, not part of this issue: the career search hits link to `/career/#experience`, `#education`, `#projects`, `#certifications` and `#skills` (`search.py:492`, `:510`), but the page's anchors are `section-<slug>` (`overview.html:39`: `section-experience`, `section-project`, …), so none of those fragments exists on the page. Checked against `main` at `f09b6010b`. ## Proposal 1. **A second row in the account menu**, directly after Your details: “Your career”, to `resume:overview`, with an icon from the bundled set (`assets/icons.txt`). The menu is a list of links, so Tab walks it in the order they are written; nothing else about the component changes (`templates/cotton/dropdown_menu.html`). 2. **Take it out of Documents.** `resume:overview` leaves the Documents item's list (`navigation.py:93`), so the page is not lit under two places. 3. **Say where you are, for the pair.** The row of the page being looked at carries `aria-current="page"` (the stylesheet already marks it with weight, tint and underline, not colour alone), and the avatar button is marked on the pages of either row. The career area's URL names are kept in one list beside `ITEMS` in `core/navigation.py`, next to the account menu's two rows, and a test walks `resume/urls.py` so that a page added to the area without its name in the list fails. 4. **Rename the search group** “Career record” to “Your career” (`search.py:542`), so the results page and the menu say the same thing. “Your career” is already a translated msgid; “Career record” is used nowhere else and leaves the catalogues at the next extract. 5. **Wiki.** `Getting-started.md` and `Your-career-record.md` say “Your picture, top right → Your career” in place of “Documents → Your career” at the five places above, in the same commit. ## Decisions - **The icon.** `graduation-cap` is already bundled, but means study. `briefcase` is the Listings icon. Lucide has `briefcase-business` (present in `lucide-static` here), which would be a new line in `assets/icons.txt` and one more file under `static/icons/`. **Recommended:** `briefcase-business`, so the two are not confused in the same screen as Listings and Education; it is one line in the icon list and a test beside `tests/test_navigation.py::test_every_item_has_an_icon_from_the_bundled_set` holds the account menu's rows to the same rule. - **Documents loses the career page.** The Documents item will no longer light on `/career/`. Options: keep it in both places, or only in the account menu. **Recommended:** only in the account menu; two controls that both claim to be “you are here” for one page is what #299 removed for the dashboard and the wordmark. The CV list keeps its “Your career” button, so the way from a CV to the record is unchanged. - **Capitalisation.** The list writes “Your Career”; the product writes “Your career” (the page title, the CV buttons, the wiki). **Recommended:** “Your career”, as everywhere. - **Search label.** Rename “Career record” or leave it. **Recommended:** rename, one word of difference is the kind of drift the account menu would otherwise start. - **The broken search fragments.** Fix them here (four strings in `search_career`) or file separately. **Recommended:** separately as a bug; it is not caused by this issue and has its own test. ## Builds on #282 (the avatar-only account menu, which the template comment at `base.html:180` describes as “the person, three links, a switch and sign-out”: this makes it four links), #299 (the main navigation; `aria-current` in a menu row), #180 (Your details), #175 (Your career in sections). Related: #677 changes the label over the sub-menu of both pages and touches the same two templates; the two are independent. ## Done when - The account menu lists Your details, then Your career, then Settings, in that order, and the Your career link goes to `/career/`. `tests/test_header.py::test_the_right_side_holds_the_plus_menu_and_the_account_menu` is extended for it (it already slices the panel up to “Your details”). - On `/career/` and on every page of `resume/urls.py`, the avatar button carries the active class and the Your career row carries `aria-current="page"`, the Documents item does not light, and on `/accounts/profile/` the same holds for Your details. New tests in `tests/test_navigation.py`, including the walk of the career area's URL names. - `tests/test_search.py` is updated for the renamed group; a case in `tests/e2e/test_keyboard_and_focus.py`, beside the account-menu one, opens the menu by keyboard and finds the row by Tab, and the axe run over the pages (`tests/e2e/test_accessibility.py`) stays clean in both themes. - The icon is in `assets/icons.txt` and `src/postulo/static/icons/` (`npm run sync:icons`); `tests/test_icons.py` passes. - No new string: the link and the renamed group both use the existing, translated “Your career”, and the retired “Career record” is gone from the catalogues and from Weblate (#349) at the next extract. - The wiki pages named above are corrected in the same commit. From the list of improvements of 2026-10-02.
tiagoagueda added this to the 0.5.0 milestone 2026-10-03 01:58:54 +00:00
Sign in to join this conversation.
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#676
No description provided.