Commit Graph
69 Commits
Author SHA1 Message Date
Bendik Aagaard Lynghaug 8a291fb574 README: voice, value, url substitution, audio cards
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
2026-08-30 15:58:24 +02:00
Bendik Aagaard Lynghaug f64d62f20e Pin portal v0.3.9 - templated actions, pickable places
Lint and reload / reload (push) Successful in 0s
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 3s
2026-08-30 15:42:11 +02:00
Bendik Aagaard Lynghaug dd858e4ee6 README: markdown descriptions
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 1s
2026-08-30 14:47:22 +02:00
Bendik Aagaard Lynghaug 51fae8b86c Pin portal v0.3.8 - markdown descriptions
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
Deploy instance / deploy (push) Successful in 1s
2026-08-30 14:46:59 +02:00
Bendik Aagaard Lynghaug 83af980ab1 Pin portal v0.3.7 - feature links
Lint and reload / lint (push) Successful in 2s
Deploy instance / deploy (push) Successful in 1s
Lint and reload / reload (push) Successful in 0s
2026-08-30 14:42:00 +02:00
Bendik Aagaard Lynghaug e8a04a2783 README: Feature.link
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 1s
2026-08-30 14:39:43 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 799e2b3c8c Review desk: announced pages (portal_events)
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-30 12:37:17 +02:00
Bendik Aagaard Lynghaug 16e5a27bde Pin portal v0.3.6 - announced pages
Lint and reload / lint (push) Successful in 2s
Deploy instance / deploy (push) Successful in 1s
Lint and reload / reload (push) Successful in 0s
2026-08-30 12:36:48 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 1bb73aa37a Deploy enables the instance unit
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 1s
A host reboot on 2026-08-30 left the instance down: deploys only ever
started it. enable is best-effort until the host's polkit rule grants
manage-unit-files to deploy-runner.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-30 12:09:14 +02:00
Bendik Aagaard Lynghaug 1dcf8118d2 Pin portal v0.3.5 - gesture ghost for v2 keys
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
2026-08-30 11:43:10 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 717c8ee365 README: the proposal loop as it now runs (draft PR on submission)
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 22:52:57 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 17112452b8 Proposal file select lists the whole questions tree
Lint and reload / reload (push) Successful in 0s
Lint and reload / lint (push) Skipped
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 22:48:35 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 17341c170e Propose it: announced, not yet open (disabled: true)
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 22:45:45 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 569a155015 Pin portal v0.3.4 - disabled alternatives
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 1s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 20:28:13 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 a5125e191a README: Alternative.disabled
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 20:25:49 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 951e85db33 Pin portal v0.3.3 - empty-list notice
Lint and reload / lint (push) Successful in 3s
Deploy instance / deploy (push) Successful in 1s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 20:11:22 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 564929db00 Pin portal v0.3.2 - resource empty text
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 20:07:25 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 36e86c7787 README: ResourceSpec.empty
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 20:05:22 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 58b03a222e Pin portal v0.3.1 - content-hashed assets (LEPTOS_HASH_FILES=true)
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 19:51:29 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 87d004cc05 Ship the hero as content: hero.js + site.yaml; docs
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 1s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 17:28:45 +02:00
Bendik Aagaard Lynghaug 56ffc87786 Merge branch 'hero-module' 2026-08-25 17:28:45 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 e38b3302f1 Pin portal v0.3.0 - content-owned hero modules
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 17:28:34 +02:00
Bendik Aagaard Lynghaug 4720397450 Content-owned hero module (WIP branch for local verification)
Lint and reload / lint (push) Skipped
2026-08-25 17:24:14 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 d928fbcbc9 Pin portal v0.2.4 - gates keep the nav
Lint and reload / lint (push) Successful in 3s
Deploy instance / deploy (push) Successful in 0s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 17:07:26 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 981a448b30 Icons on every input feature; why-lines; question titles; voice rule
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
Desk/receipt titles become questions (What's been proposed? / What
happens to your proposal? / What came in? / Which proposal is this?),
Where to send it and Record a prospect explain why before the field,
lucide icons on input-bearing features, README's alternatives rule
reworded (draw people in with a real path, not necessarily a slogan)
and its stale /develop-proposal + followup references fixed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 17:04:45 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 bd19da9959 Pin portal v0.2.3 - attended-bucket lint, first-nav fix; document the rule
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 1s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 15:38:08 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 1ff3c971ad Pin portal v0.2.2 - single app-level title
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 22:49:14 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 f25dedd742 Pin portal v0.2.1 - asset cache revalidation, stable title on nav
Deploy instance / deploy (push) Successful in 0s
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 1s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 22:43:14 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 f243494499 Pin portal v0.2.0; document tree routing in the schema reference
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 22:33:16 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 ad9dd1762b The tree is the router: nest the develop flow, section-gate review
develop/ holds the whole proposal flow (index = owners desk,
proposal = public form, proposed = chain-gated receipt) with relative
actions; review/ gains _section.yaml (one owners gate for the
directory) and a [record].yaml dynamic page - /review/<chain-hash>
shows a single proposal. Top-level files drop their now-derived id:
and fossil route: fields. URLs /develop-proposal and /proposed become
/develop/proposal and /develop/proposed (no automation references
them - n8n filters checked).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 22:32:01 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 77ff58e524 Docs: this repo runs the uhhm.no instance (PORTAL_RELEASE pin)
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 1s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 21:49:32 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 380593a998 Pin portal v0.1.0 - first semver release
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 21:45:45 +02:00
Bendik Aagaard Lynghaug bb117c1a1b Amend: GITEA_ is a reserved Actions secret-name prefix
Deploy instance / deploy (push) Successful in 1s
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
2026-08-24 21:26:26 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 9b7162f2ca Showcase links prefer repo Website setting; fix star count field
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 1s
A private starred repo used to link visitors straight to a 404. The
link now uses the repo's Website setting when set, falls back to the
repo url only for public repos, and renders private repos without a
website as unlinked cards. Also: Gitea serializes the star count as
stars_count, not GitHub's stargazers_count - the stars chip had been
silently null and dropped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-23 11:27:39 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 9dbd30655f Picking a file loads its current content to edit in place
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 1s
proposed_yaml binds to the file select: the selected file's content
fetches through Gitea's contents API (base64-decoded by the jq
filter) and lands in the editor. On-site contributions no longer
start from a blank box.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 13:50:29 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 b2423d64cf More accurately: "How can this website improve?"
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 07:21:33 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 3e2abceec8 Ask "How can we improve this website?" instead of commanding "Propose a change"
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
The title is the page's one question - and it should actually be one.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 07:21:17 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 6443b9fdd4 Propose-a-change: link the questions repo as the reference
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
A linked card straight from Gitea's repo info - proposers can read
what exists before proposing against it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 07:19:34 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 1a88212bd9 Propose-a-change: pick the file from the repo itself
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
target_path becomes a select whose options are the live listing of
questions/ from Gitea's contents API (the engine's existing
select-from-resource mechanism - no code change), with a free path
field kept for proposals that create a new file. No more hand-typed,
typo-able paths for existing pages.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 07:14:56 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 c1bd503efd State the proposal scope where proposals are made
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
The automation fences commits to questions/*.yaml and aggregates.yaml;
the page and README now say so, instead of promising "any file" and
silently failing after approval.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 00:23:05 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 627bdb807e Asked by the full name, not the account short name
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 23:47:14 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 bd0ba41281 Voice: join the narrative, don't bucket people into roles
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 23:35:02 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 c07f8c880d Drop the investor concern entirely
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
It was a worked example of the empathic pattern, not a feature: every
alternative should be empathic, informative, and helpful - information
that gives an answer, not necessarily a path to choose. The pattern
stays (voice rules, README); the investor pages, aggregate, review
alternative, and front-page gateway go. The investors KV bucket and
its test records linger in NATS unreferenced - purge at leisure.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 23:33:53 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 176e2210a0 README: the voice rules
Lint and reload / lint (push) Successful in 3s
Lint and reload / reload (push) Successful in 0s
The title is the only question; alternatives are bold statements
argued against each other; explain why input is needed, then hand
over the field; never assume the visitor's role - give the concern
its own page and let the question nav surface it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 23:29:53 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 309e3b43df Voice: bold statements, argued alternatives, no questions below the title
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
- The page title is the only question anywhere; alternative and
  feature names are now statements in our voice. Where we need input
  we say why (the reply is personal, software lands somewhere, a
  proposal is a stance), then hand over the field.
- The opening question's alternatives become the statements we'd like
  visitors to get behind: "Good software begins with a clear
  argument", "Attention is earned", "Capital needs reasons", "Work
  happens through dialogue, not tickets".
- followup: true on the five post-submission pages keeps them out of
  the question nav until the visitor actually carries a chain.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 23:26:10 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 c6d82199be Ask the investment question instead of assuming the investor
"I want to invest" on the front page presumed the visitor's intent.
/invest now asks it from their side - "How do we invest in uhhm?" -
and speaks to what a capital manager is actually accountable for:
reasons. The front page keeps only a light gateway; the question nav
surfaces /invest (like every other qualifying question) from anywhere,
so no concern depends on front-page space.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 23:11:25 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 251fe22c25 README: the runtime's dependencies and the optimal usecase, in order
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 1s
Replaces the long-stale schema notes (pre-aggregates, pre-resources,
pre-proposal-loop) with what the repo actually is now: declare a state
graph, give it a way in (submission), a way through (review
transitions), let automations react, and change the system through
itself.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 22:56:54 +02:00
Bendik Aagaard LynghaugandClaude Sonnet 5 c488932695 Remove the proposal-loop demo page
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
It existed to prove the round-trip (proposed -> approved -> PR ->
lint -> merge -> live) and it did. Its job is done.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 22:45:19 +02:00
bl 3c48c47f88 Merge pull request 'Proposal: questions/test-proposal-demo.yaml' (#1) from proposal-4fa4bbee2473 into main
Lint and reload / lint (push) Successful in 2s
Lint and reload / reload (push) Successful in 0s
2026-08-12 20:32:22 +00:00
bl 8fb191fe21 Proposal: questions/test-proposal-demo.yaml
Lint and reload / reload (pull_request) Has been skipped
Lint and reload / lint (pull_request) Successful in 2s
End-to-end verification of the proposal loop - this page is a harmless demo and can be deleted after the round-trip is confirmed.

Proposed-by: Verification Bot
Approved-by: bl@id.uhhm.no
2026-08-12 20:30:34 +00:00