Put two icon buttons at the top right of the popup: capture this posting, and add a new listing from scratch #6
Labels
No labels
bug
documentation
enhancement
performance
security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo-chromium#6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The popup's header holds only the logo and the title “Postulo”, in a flex row (
src/popup.htmllines 9–12). Capturing is the primary button “Capture this posting” in the body (#ready), with a hint under it. The one icon button is the settings gear in the footer:button.iconaround an inline lucide-static v1.41.0 SVG, itsaria-labelandtitlefilled fromdata-i18n-label. The suggestion is two icon buttons in line with the logo and title, at the top right: capture the current posting, and create a new job listing from scratch.What the extension should do
readCurrentTab()under theactiveTabgrant that opening the popup gives, then the correction form or the tick list (or the review window of #8). Its name reuses the existing keycapture./listings/new/in the review window of #8, or a new tab until that lands. The extension makes no request; the browser must be signed in to Postulo, and is taken to its sign-in page otherwise. Named in the core's words, as the README promises: the core's listings page has “Capture a posting” and “Add a listing” side by side, and the core's catalogue for each of the extension's 39 other languages translates “Add a listing”.button.iconhasmargin-inline-start: auto, so two need a wrapper that takes it. 28 px targets and lucide-static icons, as the gear (the core'sassets/icons.txthasplus);button:focus-visiblealready draws the outline. Keyboard order: capture, from scratch, then the body.show()insrc/popup.js).Decisions for this repository
#readygoes, freeing the body for #7 (recommended); (b) both stay. Under (a), the hintcaptureHintstays as a line in the body (recommended) or leaves all 40 catalogues, since the test fails on a key nothing asks for.readCurrentTab()refuses an address that is not http(s) withnotWebPage(“Only web pages can be captured.”). Either the popup tests the tab when it opens, disables the button and shows that sentence as text, since a disabled button is not reached by the keyboard (recommended, if the address can be read then; unverified in a real browser); or the button refuses on the press, as today. Pages closed to extensions, such as the add-on stores, refuse on the press either way./listings/new/(recommended). Works today with thecaptures-only token because no API call is made; the listing goes straight into the listings, not the review queue.POST /api/v1/capturescannot take a posting typed by hand: it must read a page (the one sent, or the one aturl) and answers 422 otherwise. Making up a page for it to read is not proposed.POST /api/v1/listings. Needs thewritescope, which also reaches applications, notes, reminders and letters, where the core's own model says a browser extension's token holdscapturesand nothing else./listings/new/takes?url=. “From scratch” reads as no pre-fill (recommended); the alternative passes the current tab's address, for a posting the reader could not read. That sends the address to Postulo on the press, which PRIVACY.md would have to say.Needs from the server
Not filed on postulo/postulo. Route 2 would need
POST /api/v1/captures, or another call under thecapturesscope, to accept a posting typed by hand; route 3, a scope narrower thanwritethat can add a listing. Route 1 works with the server as it is.Translations and documents
One new key, “Add a listing”, and one more only if the not-set-up case gets words. test/i18n.test.mjs requires every new key in all 40
_localesat once, with identical placeholders, so each new sentence costs 40 translations in the same commit. README.md: step 3 of “Set it up”, if the body's button goes, and thesrc/popup.*row of the layout table. PRIVACY.md changes only if the address is pre-filled.Done when
aria-labeland tooltip), reached by keyboard in that order, with the focus outline.npm testpasses; README.md describes the popup as it now is.From the list of extension improvements of 2026-09-30.