Bendik Aagaard Lynghaug and Claude Opus 5
22d086f9e1
A resource can show only its newest few
...
docs / deploy (push) Successful in 2s
Test / test (push) Successful in 2m0s
`limit: n` on a resource spec, applied after `jq`.
The releases card is what asked for it: a page that grows by one card
per release gets longer forever, and the cut a visitor should run is the
newest one — the rest are history, not an invitation. redoal's card had
every release on it.
After `jq` rather than before, for two reasons: it caps what the page
will actually render whatever the filter did, and content that reorders
with the filter can then take the top of its own ordering rather than
the top of the source's. A source yielding a single record has no length
and passes through untouched — turning one record into an empty list
would be worse than ignoring a limit that cannot apply. `limit: 0` on a
list does mean nothing, and the `empty` line speaks instead, which is a
coherent thing for content to ask for.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01ByshXuDEzH8hXh5qp4VgGk
2026-10-04 22:51:12 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
48ae5e07c2
Release 0.6.18
...
docs / deploy (push) Successful in 2s
Test / test (push) Successful in 2m0s
Publish release / publish (push) Successful in 1m50s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:48:22 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
b619926a11
generate follows its findings through, and stops when it stalls
...
Each structure round is logged as fixed, still open, new and reopened;
a fix round sees the open findings with their fixes and only the files
they name; a change that reopens a closed finding is undone; a round
that closes nothing ends the phase with what is left in run.log. A
hesitant visitor alone no longer triggers a wording rewrite.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:48:09 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
706c8108df
iris check --findings: every finding as JSON with a stable id
...
The id hashes scope, need, code and subject, nothing of the wording, so
the same gap keeps its id across runs. Every message that knows its fix
says it after "fix:". Codes listed in docs/lint.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 10:48:09 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
2feeea0810
Release 0.6.17
...
docs / deploy (push) Successful in 2s
Test / test (push) Successful in 2m12s
Publish release / publish (push) Successful in 1m55s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MznPTC31w5mSUK4XMehcpi
2026-10-02 11:26:13 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
6b91258ebe
One set of mail variables for every mail, and {link} in state mails
...
{site} and {site_name} everywhere; a state mail adds {self_link} (the
submitter's own page, when their record's state allows a move there),
{desk_link} and {link}, which picks by who the mail is to. gullberg's
{link} mails went out blank until now. Documented in docs/mail.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MznPTC31w5mSUK4XMehcpi
2026-10-02 11:25:49 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
ae119af987
A desk shows the three newest finished records, and older on request
...
Every record still moving stays; of those in a final state only the
three most recently decided, plus one so the page knows to offer
"Show older", three more at a time.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MznPTC31w5mSUK4XMehcpi
2026-10-02 11:25:49 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
92dd9bfc79
The lint walks every state of every bucket a need lands in
...
Clocks count as moves and a visitor's link only from its own states.
Per bucket: a state nothing reaches fails, a state a record can reach
and never leave fails (after done too), a declared move nobody offers
warns, a desk gated twice warns, and a mail from an unreachable state
or naming a field no form collects is caught. Working stages must
follow each other. Every finding ends in its fix, and a schema error no
longer hides the needs findings.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MznPTC31w5mSUK4XMehcpi
2026-10-02 11:25:49 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
2cc74e3354
CI builds and lints every plan with this portal
...
Test / test (push) Successful in 2m35s
The check portal-trainer's CI ran with the standalone trainer, which
kept failing on a builder bug fixed here long ago. Now it runs where the
trainer lives, with the same binary.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MznPTC31w5mSUK4XMehcpi
2026-10-02 09:27:44 +02:00
Bendik Aagaard Lynghaug
7b54c4c6d7
Release 0.6.16
Test / test (push) Successful in 1m8s
Publish release / publish (push) Successful in 1m56s
2026-10-01 21:46:45 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
738dbac7fe
Test fixtures: every form has the action the lint now requires
...
Test / test (pull_request) Successful in 21s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 21:46:24 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
4049809aa4
The lint refuses a form with no action, which would have no button; portal iris names the lint
...
Test / test (pull_request) Failing after 1m11s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 21:41:56 +02:00
Bendik Aagaard Lynghaug
b43ff57eab
Release 0.6.15
Test / test (push) Successful in 1m14s
Publish release / publish (push) Successful in 2m5s
2026-10-01 18:06:16 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
cc9f1c5d87
An invite may carry its own mail, with the form's fields and a spoken date and time
...
Test / test (pull_request) Successful in 1m9s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 18:06:12 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
506bb712fe
Klingenberg Bygg plan: Fredrik's two caption corrections from the live site
...
Test / test (pull_request) Successful in 1m10s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 17:57:08 +02:00
Bendik Aagaard Lynghaug
74fd2d1750
Release 0.6.14
Test / test (push) Successful in 1m11s
Publish release / publish (push) Successful in 1m57s
2026-10-01 17:47:51 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
d0ee06f48c
Less room above the wordmark, now that who is here sits on its line
...
Test / test (pull_request) Successful in 1m51s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 17:47:45 +02:00
Bendik Aagaard Lynghaug
6a9be3bef4
Release 0.6.13
Test / test (push) Successful in 1m5s
Publish release / publish (push) Successful in 1m48s
2026-10-01 11:40:32 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
78f42e6f8a
Who is here on the wordmark's line; every form carries a signed-in person's name and address
...
Test / test (pull_request) Successful in 1m6s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 11:40:27 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
9b50c9cab8
Gullberg: i Ås, ikke på Ås
...
Test / test (push) Successful in 1m4s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 11:09:08 +02:00
Bendik Aagaard Lynghaug
bf92666b3e
Merge branch 'main' into gullberg-plan
Test / test (pull_request) Successful in 1m4s
2026-10-01 10:42:35 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
b070d77acd
Gullberg: the house behind Ås kirke, rooms for everyone with students first, mails written to the reader who opens them
...
Test / test (pull_request) Successful in 1m5s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 10:41:41 +02:00
Bendik Aagaard Lynghaug
cc07cd321d
Release 0.6.12
Test / test (push) Successful in 1m5s
Publish release / publish (push) Successful in 1m44s
2026-10-01 10:41:31 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
8f24e5483c
Trainer: tell the words model who opens each mail
...
Test / test (pull_request) Successful in 1m9s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 10:41:27 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
b970c64c6a
Gullberg wordmark: sanatorium set in a little from the edges
...
Test / test (pull_request) Successful in 1m7s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 10:19:43 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
8a1fbd92ba
Gullberg wordmark: sanatorium spread to GULLBERG's width
...
Test / test (pull_request) Successful in 1m8s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 10:16:04 +02:00
Bendik Aagaard Lynghaug
1929d2f44e
Release 0.6.11
Test / test (push) Successful in 1m8s
Publish release / publish (push) Successful in 1m50s
2026-10-01 09:33:31 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
8376c68f8f
wordmark_ink: an SVG wordmark drawn in the page's own ink, following light and dark everywhere
...
Test / test (pull_request) Successful in 1m8s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 09:33:27 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
b9f69a5e7a
Gullberg wordmark as Futura outlines, cropped to the letters
...
Test / test (pull_request) Successful in 1m7s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 09:28:47 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
37624e8e2b
Gullberg: reviewed Norwegian words (nine misreadings fixed, invite mail written), tenants follow their own fault reports
...
Test / test (pull_request) Successful in 1m7s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 07:36:45 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
902dc36831
Gullberg: lighter on the bank, the co-owner offer held back, and the points the shareholder agreement must cover
...
Test / test (pull_request) Successful in 1m6s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 07:28:28 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
54efedef56
Gullberg draft: the site as the bank's running proof that the company operates; the ownership transfer step by step; a read-only bank group
...
Test / test (pull_request) Successful in 1m6s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 07:20:35 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
742be200a9
Gullberg draft: two of the four quarters are for sale; finding the co-owners comes first; the bank parts only if the company borrows
...
Test / test (pull_request) Successful in 1m6s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 07:18:25 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
2d695f990b
Gullberg draft: four equal shareholders; faults go to Klingenberg Bygg, its estimates to the board and the reports
...
Test / test (pull_request) Successful in 1m6s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 07:15:35 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
b016dfd964
Gullberg draft: the whole house in Gullberg AS, two shareholders, a bank lender; what the bank requires
...
Test / test (pull_request) Successful in 1m6s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 07:11:44 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
35e9586e77
Gullberg draft: the repayment plan all shareholders approve, and the monthly rent ledger
...
Test / test (pull_request) Successful in 1m7s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-10-01 07:07:26 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
4e211ddbff
Draft: GULLBERG sanatorium's plan, business-plan outline and wordmark; a board's published list may be public
...
Test / test (pull_request) Successful in 1m14s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 22:34:33 +02:00
Bendik Aagaard Lynghaug
c8901558b2
Release 0.6.10
Test / test (push) Successful in 1m18s
Publish release / publish (push) Successful in 2m1s
2026-09-30 21:52:28 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
02c94ae5dc
Changelog: 0.6.10
...
docs / deploy (push) Successful in 2s
Test / test (push) Successful in 1m11s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 21:52:25 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
e6c4f67db7
Who a business is gets a page of its own; inside forms ask real questions; build names untried needs
...
Test / test (pull_request) Successful in 1m12s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 21:52:23 +02:00
Bendik Aagaard Lynghaug
19b7750292
Release 0.6.9
Test / test (push) Successful in 1m8s
Publish release / publish (push) Successful in 1m54s
2026-09-30 21:38:59 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
1a1723f8bb
Changelog: 0.6.9
...
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 1m9s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 21:38:56 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
eb982ec6e6
A bio is markdown, on stricter rules than the site's own
...
Test / test (pull_request) Successful in 1m9s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 21:38:54 +02:00
Bendik Aagaard Lynghaug
c6dffc384c
Release 0.6.8
Test / test (push) Successful in 1m9s
Publish release / publish (push) Successful in 2m0s
2026-09-30 21:08:33 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
db0972974f
Changelog: 0.6.8
...
docs / deploy (push) Successful in 4s
Test / test (push) Successful in 1m17s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 21:08:30 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
db89ea6400
An upload that did not arrive says why
...
Test / test (pull_request) Successful in 1m21s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 21:08:28 +02:00
Bendik Aagaard Lynghaug
95bffc221b
Release 0.6.7
Test / test (push) Successful in 1m19s
Publish release / publish (push) Successful in 2m8s
2026-09-30 20:50:44 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
f5266cb347
Changelog: 0.6.7
...
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 1m17s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 20:50:42 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
0dc25b4023
A record may leave its lists some time after reaching a state: leaves_after
...
Test / test (pull_request) Successful in 1m20s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 20:50:28 +02:00
Bendik Aagaard Lynghaug
96c513d912
Release 0.6.6
Test / test (push) Successful in 1m16s
Publish release / publish (push) Successful in 2m7s
2026-09-30 20:39:12 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
0cb1dda202
Changelog: 0.6.6
...
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 1m16s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 20:39:10 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
809a6bdfe8
A card of one's own: one_per_person, prefilled, replaced on send; no double sends; refusals are shown
...
Test / test (pull_request) Successful in 1m12s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 20:39:01 +02:00
Bendik Aagaard Lynghaug
cae116b50c
Release 0.6.5
Test / test (push) Successful in 1m9s
Publish release / publish (push) Successful in 1m54s
2026-09-30 20:10:59 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
d8528ff1f9
Changelog: 0.6.5
...
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 1m10s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 20:10:56 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
9368086d81
A need may be paused: its card stays, with no form and a button that does not press
...
Test / test (pull_request) Successful in 1m12s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 20:09:14 +02:00
Bendik Aagaard Lynghaug
e2497941c8
Release 0.6.4
Test / test (push) Successful in 1m9s
Publish release / publish (push) Successful in 1m55s
2026-09-30 19:52:12 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
55fc61c514
Changelog: 0.6.4
...
docs / deploy (push) Successful in 2s
Test / test (push) Successful in 1m9s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 19:52:10 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
87d4dda0eb
Rate limit: a hundred at once, ten a second, and the page's own files are not counted
...
Test / test (pull_request) Successful in 1m15s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 19:51:48 +02:00
Bendik Aagaard Lynghaug
3604683df3
Release 0.6.3
Test / test (push) Successful in 1m8s
Publish release / publish (push) Successful in 1m55s
2026-09-30 19:33:11 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
1193894b02
Changelog: 0.6.3
...
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 1m8s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 19:33:08 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
309e30f36d
Pages move the way their addresses do; a record with a picture is a card; the trainer says who a business is
...
Test / test (pull_request) Successful in 1m13s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 19:32:49 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
a70690a736
Klingenberg Bygg's plan and words; a plan carries a slideshow; the words model is told what a follower's desk and an inside sent page are
...
Test / test (pull_request) Successful in 1m17s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:56:24 +02:00
Bendik Aagaard Lynghaug
827a75be3d
Release 0.6.2
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 1m14s
Publish release / publish (push) Successful in 2m3s
2026-09-30 17:39:57 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
4e0a56be13
Changelog: 0.6.2
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:39:55 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
c766dedc0e
A stored file on a record shows as its name and opens from the row
...
Test / test (pull_request) Successful in 1m16s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:38:32 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
a822f2175f
Trainer: followed_by - a group whose members each see their own cases; file fields
...
Test / test (pull_request) Successful in 1m14s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:36:08 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
f2b131ebbb
KANIDM_GROUP_PREFIX: plain group names in content on a shared Kanidm
...
Test / test (pull_request) Successful in 1m14s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:34:21 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
6b72ae568a
The header knows who is here; my cases; controls that scale with the text
...
Test / test (pull_request) Successful in 1m12s
A session link top right on a site with sign-in, and on a page with
pictures the wordmark as its own bar over the strip. A list may be
narrowed to the signed-in person's own records ({user.email}, from the
session), and an attachment follows the list that shows its record.
Form controls are sized in em: the date picker's icon and the file
picker's button scale and take the field's colours.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:32:41 +02:00
Bendik Aagaard Lynghaug
9a96386444
Release 0.6.1
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 1m7s
Publish release / publish (push) Successful in 1m46s
2026-09-30 17:19:36 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
5c95b6d8b3
Changelog: 0.6.1; the bare binary sorts after the tarball
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:19:34 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
c1a8433640
Slideshow: brace the closure
...
Test / test (pull_request) Successful in 1m8s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:17:55 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
cfb050d3ef
A slideshow across a page: pictures the full width of the screen, captions over them
...
Test / test (pull_request) Failing after 1m5s
slideshow on a page: max_height in svh, slides with an image (a path
in the content repo or https), a caption laid over the picture's foot,
and optionally the picture's size so its place is held before it
loads. Swiper upgrades it; before that it is a row that scrolls.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:16:50 +02:00
Bendik Aagaard Lynghaug and Claude Opus 5.5
c7e0ee146f
Trainer: documents - a text word for word, one card per section
...
Test / test (pull_request) Successful in 1m8s
Bylaws and terms are not the model's to write. documents in a plan
names a markdown file beside it; every heading with text under it is
one alternative on a page of its own, its paragraphs the card's words.
Tomter Vel's bylaws of 23.04.2018 are the first.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 17:05:06 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
3bb517be0f
Docs: vel.klingenbergbygg.no runs v0.6.0
...
docs / deploy (push) Successful in 2s
Test / test (push) Failing after 8s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:40:35 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
4eb1d03583
Changelog: 0.5.11 was tagged and never published
...
docs / deploy (push) Successful in 2s
Test / test (push) Failing after 35s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:38:53 +02:00
Bendik Aagaard Lynghaug
3cb0733955
Release 0.6.0
docs / deploy (push) Successful in 3s
Publish release / publish (push) Successful in 1m53s
Test / test (push) Successful in 1m5s
2026-09-30 15:33:17 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
969c22b432
Changelog: 0.6.0
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:33:15 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
48cba5cd8e
Docs: the examples in English
...
Test / test (pull_request) Successful in 1m5s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:31:59 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
96b3746643
One binary: the lint and the trainer are commands of portal
...
Test / test (pull_request) Successful in 1m7s
portal serve runs a site; portal lint is what iris was; portal plan,
build, report and the rest are what portal-trainer was. One source at
one version, so the three never disagree about what content means.
Both histories are merged in (subtree). The release attaches the bare
binary for a content repo's CI. The trainer's plans, intakes, engines
and reference prompt come along; its runs stay in the old repo.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:29:30 +02:00
Bendik Aagaard Lynghaug
d0d1cbf23d
Bring the lint in (uhhm/iris main, history kept)
...
git-subtree-dir: vendor/lint
git-subtree-mainline: bedd306854
git-subtree-split: e3c68f9441
2026-09-30 15:23:16 +02:00
Bendik Aagaard Lynghaug
bedd306854
Bring the trainer in (uhhm/portal-trainer main, history kept)
...
git-subtree-dir: vendor/trainer
git-subtree-mainline: c7c2956e15
git-subtree-split: a2a9f4edcf
2026-09-30 15:23:15 +02:00
Bendik Aagaard Lynghaug
c7c2956e15
Release 0.5.11
docs / deploy (push) Successful in 2s
Test / test (push) Failing after 39s
Publish release / publish (push) Failing after 2m13s
2026-09-30 15:17:32 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
267f7f0787
Changelog: 0.5.11
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:17:30 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
e3c68f9441
needs.yaml may name the tones
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:17:20 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
a2a9f4edcf
Tones and storylines: every word once per tone, kept through a lift, and a report of what each brought in
...
tones in the plan lists tones of voice, one storyline each. The words
pass writes each page once per tone and folds the tones into lists
where they differ; the render emits the lists portal reads as
storylines; the lift carries them back. needs.yaml names the tones.
portal-trainer report --site reads the site's counts per storyline
and scores each on what arrived and what ended well.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:16:29 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
f395ace556
Storylines: the same site told several ways, one per visitor, counted
...
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 1m1s
Any text a person reads may be a list, one entry per storyline, every
list the same length. A visitor is given one storyline for the whole
site and reads it on every page and in every mail about their case.
Records and events carry the storyline; GET /report gives counts per
bucket, storyline and state, and nothing else.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 15:11:27 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
cc3107e502
Docs: vel.klingenbergbygg.no runs v0.5.10 with memberships
...
docs / deploy (push) Successful in 3s
Test / test (push) Failing after 25s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 14:22:11 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
ca73ef7e9f
plans: Tomter Vel keeps its people in portal (people: memberships)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 14:12:22 +02:00
Bendik Aagaard Lynghaug
cb31995299
Release 0.5.10
docs / deploy (push) Successful in 4s
Test / test (push) Failing after 45s
Publish release / publish (push) Successful in 3m35s
2026-09-30 14:10:06 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
579ad6f50d
The lint lets an invite form ask for a phone number instead of an address
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 14:09:49 +02:00
Bendik Aagaard Lynghaug
89d419ff7b
Release 0.5.9
docs / deploy (push) Successful in 3s
Test / test (push) Successful in 58s
Publish release / publish (push) Successful in 3m36s
2026-09-30 14:06:58 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
00571f65bd
Changelog: 0.5.9
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 14:06:56 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
c4e2de5efa
Memberships beside Kanidm: the invite makes the account too
...
Kanidm makes people, portal makes members. A site can switch to
memberships before its sign-in provider is one everyone already has.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 14:06:55 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
5bc021de77
Docs: vel.klingenbergbygg.no runs v0.5.8
...
docs / deploy (push) Failing after 2s
Test / test (push) Failing after 25s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 13:55:49 +02:00
Bendik Aagaard Lynghaug
f4ed98322f
Release 0.5.8
docs / deploy (push) Failing after 3s
Test / test (push) Failing after 59s
Publish release / publish (push) Successful in 3m22s
2026-09-30 13:40:13 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
bce9ad13e4
Changelog: 0.5.8
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 13:40:12 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
6c86dc47a2
The phone scope is asked for only when told to: Kanidm denies a scope the person lacks
...
0.5.7 asked every provider for phoneNumber, so a Kanidm site could
not sign anyone in. OIDC_EXTRA_SCOPES=phoneNumber asks for it (Vipps).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 13:40:12 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
b0787f7c5a
build: people: memberships - invite by phone number, list who is in
...
With portal keeping the groups itself (portal v0.5.7), a desk's invite
form asks for a phone number first, the list of invites is the list
of memberships, and a grant may know the person by number.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 13:37:02 +02:00
Bendik Aagaard Lynghaug
cc26a232ec
Release 0.5.7
docs / deploy (push) Failing after 3s
Test / test (push) Successful in 58s
Publish release / publish (push) Successful in 3m21s
2026-09-30 13:33:15 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
77f2880e83
Changelog: 0.5.7
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 13:33:12 +02:00