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
Bendik Aagaard Lynghaug and Claude Fable 5.1
a9b5a81ebd
Docs as a site: portal.uhhm.no from docs/ with mdBook, put to git-pages
...
Test / test (pull_request) Successful in 58s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 13:31:23 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
f047e21c4a
Memberships: groups kept by portal itself, a person by phone number first
...
Test / test (pull_request) Successful in 58s
A membership is a case in the built-in portal_memberships bucket:
invited by a desk, a grants, the seed or the responsible pass; active
from the person's first sign-in, when the provider's subject, phone
number or address matches the record; removed by a desk, and invited
again after that. One record per group and person however it was
keyed, and at sign-in every record that matched learns what the
provider verified. The active memberships join the groups claim, so
Cedar sees the same parents as before.
PEOPLE_BACKEND picks Kanidm or memberships; unset, a KANIDM_API_TOKEN
means Kanidm. The NATS access service looks a person's groups up when
a question names them by sub, phone or email and lists none. The
sign-in asks for the phoneNumber scope and reads it from userinfo.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 13:28:28 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
1025dd7718
build: escalate - a case left too long goes up to another desk with the same buttons
...
escalate: { <stage>: { days, to: <group> } } on a need adds a stage
<stage>_escalated the clock enters, with the same moves out of it; the
group's desk lists exactly those cases with those buttons, and the
desk that had it keeps it and may send it up itself. Not a mail: a
desk job. The vel's help requests go up to styret after a week.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 11:58:02 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
3dabcf7c58
build: one page holds every need that answers a record; runs: the kommune planned again by Opus
...
Two needs about the same record wrote the same page, and the last won.
The record's page now holds one form per answering need, under
words["forms"][need].
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:58:55 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
41db6093e5
The effort budget counts what a person fills in, not carrier fields
...
A type: record field carries the case an answer is about on the link,
and a hidden preset carries a value; neither is asked. An objection
form that carried the application's id counted one field over.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:57:03 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
9776dc1808
plan: the guidance names records that answer records, members-only needs and a group contact
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:38:44 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
28ef235906
build: a door may point to a members-only need; signed-in people are not asked who they are; a granted group does not self-invite
...
The vel: paid membership grants the medlemmer group, and a committee
seat is offered on the bidra door and taken on the members' page.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:38:25 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
b9761cec63
Docs: vel.klingenbergbygg.no runs v0.5.6
...
Test / test (push) Failing after 40s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:28:05 +02:00
Bendik Aagaard Lynghaug
b9327a170f
Release 0.5.6
Test / test (push) Successful in 55s
Publish release / publish (push) Successful in 3m9s
2026-09-30 08:18:41 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
789cbf7977
Changelog: 0.5.6
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:18:39 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
67250af445
build: the plan's contact may be a group, which then answers for every page
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:18:30 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
014594283a
A group may hold a page's responsibility
...
Test / test (pull_request) Successful in 56s
responsible: { name, contact, group } says the address is a group's
inbox, not a person: no account or mail is made for it, and any
signed-in member of the group gets the suggest-a-change card. A
board's shared address was onboarded as a person before this.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:17:27 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
de65392917
Docs: vel.klingenbergbygg.no runs v0.5.5
...
Test / test (push) Failing after 56s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 08:04:35 +02:00
Bendik Aagaard Lynghaug
77867090ed
Release 0.5.5
Test / test (push) Successful in 55s
Publish release / publish (push) Successful in 3m29s
2026-09-30 07:51:06 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
c24e117f67
Changelog: 0.5.5
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 07:51:04 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
894f228b8f
build: the answer page's guidance says what it is not
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 07:02:51 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
42b6ce7c70
build: a desk card is its list; runs: Tomter Vel's lending board answered from the board
...
The lift matched cards on a desk by action, which every card there
shares, so a card that left the desk left its words on the next one.
A card with a strong identity - a bucket, a group it invites into, a
page of its own - is matched on that alone, and a desk card's identity
is the bucket its feature lists.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 07:02:40 +02:00
Bendik Aagaard Lynghaug and Claude Fable 5.1
4e1bc2027d
build: a need about another, answered from the board's own rows
...
`about: <need>` on a need puts its form on a page per record of the
other need (/status/<bucket>/[key]), links every row of the public
list to it, carries the record's id in a type: record field, takes a
signed-in person's address without asking, and lets `mails: { open:
owner }` reach whoever sent the record. The vel's plan uses it for
the lending board: notices stand from the moment they are sent, the
board hears, an answer goes straight to the poster, the queue is the
poster's inbox, and the redaktør or the clock takes down what stands.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
2026-09-30 06:55:28 +02:00