-
v0.6.13
Stablereleased this
2026-10-01 09:40:32 +00:00 | 30 commits to main since this release- Who is here (the name and "sign out", or "sign in") sits on the wordmark's own line instead of being pinned to the corner of the page, where it read as a row of its own. With a picture strip it is in the wordmark's bar; without, it is level with the mark at the right edge. On a narrow screen it drops under the mark.
- Trainer: every form, public ones included, carries a signed-in person's name and address from the login instead of asking for them; a visitor still sees the fields. Only the inside forms did before, so someone signed in filled in their own name and address again on a public form.
Downloads
-
v0.6.12
Stablereleased this
2026-10-01 08:41:31 +00:00 | 48 commits to main since this release- Trainer: the words model is told who opens each mail: the person who sent the case, the person who posted the record an answer is about, or someone at the business. Mails to the business about another person's case used to be written as if to that person ("you will hear from us"); on Gullberg, three of nine were.
Downloads
-
v0.6.11
Stablereleased this
2026-10-01 07:33:31 +00:00 | 51 commits to main since this releasewordmark_ink: trueinsite.yaml: an SVG wordmark is drawn in the page's own ink, as a mask over the text colour, so it follows the page's light and dark in every browser. A wordmark shown as an<img>only knows the system's setting, and some browsers don't pass even that on. Opacity in the file still shows, so a lighter line stays lighter. Opt-in, for one-colour marks; a mark with a colour of its own keeps its colours.
Downloads
-
v0.6.10
Stablereleased this
2026-09-30 19:52:28 +00:00 | 54 commits to main since this release- Trainer: who a business is gets a page of its own ("who are we?",
/hvemin Norwegian), with nothing to do on it. It has one card per need thatpresents(the people, the work, each shown as picture cards) and one for the plan'svalues. The front door leads there instead of carrying it all. - Trainer: the words model is told that a form page from the inside asks a real question and says where the answer ends up ("How do you present yourself?", not "Your card on the front page"), and that a
one_per_personform is the colleague's own. - Trainer:
portal buildnames every need no persona tries. Klingenberg Bygg's plan had personas only for customers, so nobody ever played the office filling in its own forms. - Klingenberg Bygg: "Hvem består Klingenberg Bygg av?" with Menneskene, Erfaringer (projects with pictures, added from the office) and Verdier (a first draft for Fredrik to replace).
Downloads
- Trainer: who a business is gets a page of its own ("who are we?",
-
v0.6.9
Stablereleased this
2026-09-30 19:38:59 +00:00 | 58 commits to main since this release- What a person wrote on a card (a bio) is shown as markdown: paragraphs, line breaks as typed, lists, emphasis, and links to https, mailto or tel marked
rel="nofollow ugc". No images and no raw HTML, which is stricter than the site's own descriptions. The desk still shows the text as written.
Downloads
- What a person wrote on a card (a bio) is shown as markdown: paragraphs, line breaks as typed, lists, emphasis, and links to https, mailto or tel marked
-
v0.6.8
Stablereleased this
2026-09-30 19:08:33 +00:00 | 62 commits to main since this release- An upload that did not arrive says why: larger than 20 MB (checked in the browser before anything is sent), a site that takes no files (no Garage configured), not allowed from here, or anything else. It used to say "try again, or with a smaller file" whatever the reason, which sent people looking for a smaller file when the site had no storage at all.
Downloads
-
v0.6.7
Stablereleased this
2026-09-30 18:50:45 +00:00 | 66 commits to main since this releaseleaves_after: { minutes: 10 }on a state: a record that has been there that long leaves its bucket's lists (days, hours and minutes add up; swept every minute; the event log keeps it). Trainer:leaves_afterper stage on a need. A Klingenberg Bygg card taken off the front page leaves the office's list ten minutes later instead of standing there greyed out.
Downloads
-
v0.6.6
Stablereleased this
2026-09-30 18:39:12 +00:00 | 70 commits to main since this releaseone_per_person: trueon an alternative: each signed-in person keeps one record there, their own. The form opens filled in with it, a file left unchosen keeps the one already there (shown beside the picker), and sending again replaces the card instead of adding one. Two sends at once settle on the newest. Trainer:one_per_personon a need entered from inside; Klingenberg Bygg's people each edit their own card on the front page.- Send is disabled from the moment it is pressed. Files upload before the form is sent, and a second press in that time used to send it twice.
- A failed upload stops the send and says so. The form used to go without the file, which made a record that looked complete and was not.
- A refused send says why, under its button. It used to say nothing.
Downloads
-
v0.6.5
Stablereleased this
2026-09-30 18:10:59 +00:00 | 74 commits to main since this release- Trainer:
paused: trueon a need. Its card stays on the front door with what the business does and a sentence saying it is not taking new ones right now, with no form and a button that does not press; nothing is recorded. The lint reports a paused need as a warning ("paused, not open now") and counts it on its own in the summary, asplannedalready did for needs not open yet. Klingenberg Bygg's building applications are paused for capacity.
Downloads
- Trainer:
-
v0.6.4
Stablereleased this
2026-09-30 17:52:12 +00:00 | 78 commits to main since this release- The rate limit is a hundred at once, refilled at ten a second (it was 30, one every two seconds, which a page with a picture strip used up in one load: a few reloads and the stylesheet was refused). The files a page is made of, from portal's own disk, are not counted at all.
PORTAL_RATE_PER_SECONDreplacesPORTAL_RATE_SECONDS; no site set it.
Downloads
- The rate limit is a hundred at once, refilled at ten a second (it was 30, one every two seconds, which a page with a picture strip used up in one load: a few reloads and the stylesheet was refused). The files a page is made of, from portal's own disk, are not counted at all.