Making a Blink from inside a category
Open any Blink category and you will now see New Blink here in the header, beside Back, Edit and Delete. It opens the capture form with that category already chosen, so you can write the note and save without picking the category again.
Where it is
Blinks → Categories → any category. The button is in the same row as
Back to Categories, Edit and Delete. On a phone it drops onto its own
line rather than squeezing the others.
The category is pre-selected, not locked
It is filled in for you and you can still change it before saving, exactly as if you had chosen it by hand. Nothing is decided until you save the Blink.
Why it was added
From a bug report filed on a category page: "Right now I'm inside a specific category. Now I want to make a Blink under this category but I don't have the button right there. Make it easy to make a Blink under this category."
The header had every action except the one that page is actually for — you could go back, rename the category or delete it, but not add anything to it.
Goals, Projects and Businesses
Their category pages share the same header and do not have this button yet. That is deliberate rather than an oversight: the button only appears where there is a capture form that accepts a category, and a button that led nowhere would be worse than no button. Those modules can pick it up when they gain the same route.
They already have their own version of this, further down their detail pages: a "New Blink — will be linked to this project" form.
For developers
The link is ?open_blink_form=1&category=<pk> on the Blink dashboard, joining
the existing ?calendar_date= prefill rather than adding a second capture path. The id is
resolved by blink.services.owned_category_id(user, raw), which takes a user and a raw
value rather than a request, so a native client can pre-select a category without an HTTP layer.
A pk that is not yours resolves to nothing. It arrives in a query string, so it is attacker-chosen; the form's own queryset is filtered by owner too, but the check lives beside the input so a later change to the form cannot remove it silently.
In the shared partial _shared/_category_detail.html, create_url and
create_label are optional — omit them and the header renders exactly as before.