2 Commits
Author SHA1 Message Date
zemion 0a7bd5b3b4 fix(ui): align contextual documentation with headings
Verified with the coordinated workspace changes by devkit full run
2026-09-08T225814-186389-0000-3e3ed7cd (all seven phases passed).
This shared UI pass does not mark the individual module reviews complete.
2026-09-09 02:03:46 +02:00
zemion 00bec0ed94 fix(packaging): expose immutable WebUI Git package for v0.1.23
Module Package Release / publish-packages (push) Successful in 11s
2026-09-08 02:06:09 +02:00
11 changed files with 78 additions and 8 deletions
+18
View File
@@ -39,3 +39,21 @@ PYTHONPATH=src:/mnt/DATA/git/govoplan-core/src \
```
See [docs/FORMS_BOUNDARY.md](docs/FORMS_BOUNDARY.md) for the boundary decision.
## Git-source WebUI package
The repository root exposes `@govoplan/forms-webui` for Git-tagged release
dependencies. It mirrors the owning `webui/package.json` version, public
TypeScript/CSS exports and peer requirements, with entry paths under
`webui/src`. Consumers provide the shared Core/React peers; the facade runs no
development or install scripts. The source archive contains `webui/src`, this
README and any repository license file. Run module development checks from `webui/`; Python
installation remains governed by `pyproject.toml`.
Das Repository stellt `@govoplan/forms-webui` am Wurzelpfad für versionierte
Git-Abhängigkeiten bereit. Version, öffentliche TypeScript-/CSS-Exporte und
Peer-Anforderungen entsprechen `webui/package.json`; die Einstiegspfade liegen
unter `webui/src`. Gemeinsame Core-/React-Peers stellt die einbindende Anwendung
bereit. Die Fassade führt keine Entwicklungs- oder Installationsskripte aus.
Entwicklungsprüfungen bleiben in `webui/`, die Python-Installation weiterhin in
`pyproject.toml` definiert.
+4
View File
@@ -70,6 +70,10 @@ Form definitions should carry:
option, constraint, draft, attachment, signature, policy, and handoff editing.
- Forms Runtime performs value validation against the resolved definition; the
definition owner does not persist submissions.
- Forms consumes Core's title-help and text-help layout contracts for its
catalogue and revision dialog. Workflow books sit beside their heading;
semantic documentation stays beside the Form meaning label for the exact
definition. The placement contract does not move content ownership to Core.
## Recovery And Operations
+6
View File
@@ -36,3 +36,9 @@ shared section-header toolbar surface. Core therefore owns viewport, search,
state, heading, and narrow-layout geometry. These contracts do not change
filter scope, permissions, revision semantics, or publication consequences.
English and German catalogues cover the owned route and editor vocabulary.
Documentation books belong immediately beside their contextual text. The
catalogue uses Core's workspace title and `titleHelp`; the revision dialog uses
its title help, and the separate Form meaning label carries semantic help for
that exact definition. Field help stays beside its label. This uses Core layout
contracts and does not change revision, publication, or runtime ownership.
+33
View File
@@ -0,0 +1,33 @@
{
"name": "@govoplan/forms-webui",
"version": "0.1.23",
"private": true,
"type": "module",
"main": "webui/src/index.ts",
"module": "webui/src/index.ts",
"types": "webui/src/index.ts",
"exports": {
".": {
"types": "./webui/src/index.ts",
"import": "./webui/src/index.ts"
},
"./styles/forms.css": "./webui/src/styles/forms.css"
},
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
"react": ">=19.2.7 <20",
"react-dom": ">=19.2.7 <20",
"react-router": ">=8.3.0 <9"
},
"peerDependenciesMeta": {
"@govoplan/core-webui": {
"optional": true
}
},
"files": [
"webui/src",
"README.md",
"LICENSE"
]
}
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "govoplan-forms"
version = "0.1.22"
version = "0.1.23"
description = "Immutable reusable form definitions for GovOPlaN."
readme = "README.md"
requires-python = ">=3.12"
+1 -1
View File
@@ -1,3 +1,3 @@
"""GovOPlaN Forms module."""
__version__ = "0.1.22"
__version__ = "0.1.23"
+7 -2
View File
@@ -51,7 +51,7 @@ from govoplan_forms.backend.semantic_subjects import (
MODULE_ID = "forms"
MODULE_NAME = "Forms"
MODULE_VERSION = "0.1.22"
MODULE_VERSION = "0.1.23"
READ_SCOPE = "forms:definition:read"
WRITE_SCOPE = "forms:definition:write"
ADMIN_SCOPE = "forms:definition:admin"
@@ -371,6 +371,8 @@ manifest = ModuleManifest(
title="Reusable form definitions",
summary="Create immutable, versioned schemas consumed by Forms Runtime and institutional services.",
body=(
"Documentation books sit beside Form definitions and the revision dialog title. The separate "
"Form meaning label carries the exact definitions semantic documentation book. "
"Each revision fixes field types, options, constraints, draft, attachment, signature, policy, and handoff requirements. "
"Publishing is explicit; existing submissions continue to retain their exact revision. The catalogue, filter, empty states, "
"section headings, and definition field groups use the shared responsive layout language and reflow at narrow widths without "
@@ -398,6 +400,9 @@ manifest = ModuleManifest(
"Unveränderliche versionierte Schemata erstellen, die Forms Runtime und institutionelle Services verwenden."
),
"body": (
"Dokumentationsbücher stehen neben Formulardefinitionen und dem Titel des Revisionsdialogs. "
"Die separate Bezeichnung Formularbedeutung trägt das Buch zur semantischen Dokumentation der "
"genauen Definition. "
"Jede Revision legt Feldtypen, Optionen, Einschränkungen sowie Anforderungen an Entwurf, Anlagen, Signaturen, "
"Richtlinien und Übergaben fest. Die Veröffentlichung erfolgt ausdrücklich; vorhandene Einreichungen behalten ihre "
"exakte Revision. Katalog, Filter, Leerzustände, Abschnittsüberschriften und Feldgruppen der Definition verwenden die "
@@ -518,7 +523,7 @@ manifest = ModuleManifest(
"workflow instance",
),
reference_packages=("product.service-to-decision",),
migration_docs=("docs/FORMS_BOUNDARY.md",),
migration_docs=("docs/FORMS_BOUNDARY.md", "docs/INTERFACE_PATTERN_MIGRATION.md"),
recovery_docs=("docs/FORMS_BOUNDARY.md",),
security_docs=("docs/FORMS_BOUNDARY.md",),
operations_docs=("docs/FORMS_BOUNDARY.md",),
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@govoplan/forms-webui",
"version": "0.1.22",
"version": "0.1.23",
"private": true,
"type": "module",
"main": "src/index.ts",
@@ -6,6 +6,7 @@ import { FormGrid,
ConfirmDialog,
Dialog,
DocumentationHelpLink,
TextWithHelp,
DismissibleAlert,
FormField as Field,
IconButton,
@@ -193,6 +194,7 @@ export default function FormDefinitionDialog({
<Dialog
open={open}
title={definition ? `Revise ${definition.title}` : "New Form definition"}
titleHelp={<DocumentationHelpLink reference={FORMS_FIELD_DOCUMENTATION} />}
onClose={requestClose}
closeDisabled={busy}
portal
@@ -207,9 +209,8 @@ export default function FormDefinitionDialog({
}>
<div className="form-definition-editor">
<div className="form-definition-help">
<DocumentationHelpLink reference={FORMS_FIELD_DOCUMENTATION} />
{definition && <>
<DocumentationHelpLink reference={semanticFormDocumentation(definition)} />
<TextWithHelp help={<DocumentationHelpLink reference={semanticFormDocumentation(definition)} />}>Form meaning</TextWithHelp>
<a className="btn btn-secondary" href={semanticAuthoringHref(definition)} target="_blank" rel="noreferrer">
<BookOpen size={16} aria-hidden="true" /> Document form meaning
</a>
+2 -1
View File
@@ -162,6 +162,8 @@ export default function FormsPage({ settings, auth }: PlatformRouteContext) {
<main className="forms-page">
<WorkspaceFrame className="forms-shell" label="Form definitions" interfaceId="forms.catalogue" helpContextId="forms.page.catalogue" helpModuleId="forms">
<WorkspaceActionBar
title="Form definitions"
titleHelp={<DocumentationHelpLink reference={FORMS_DOCUMENTATION} />}
scope="workspace"
variant="collection"
refreshable
@@ -187,7 +189,6 @@ export default function FormsPage({ settings, auth }: PlatformRouteContext) {
<span className="forms-count">{total}</span>
</>}
createAction={<Button variant="primary" disabled={!canWrite} disabledReason={!canWrite ? FORMS_I18N.writeReason : undefined} onClick={() => setEditing("new")}><Plus size={16} aria-hidden="true" />New definition</Button>}
helpAction={<DocumentationHelpLink reference={FORMS_DOCUMENTATION} />}
/>
<PageScrollViewport className="forms-list-viewport">
{error && <DismissibleAlert tone="danger" resetKey={error}>{error}</DismissibleAlert>}
+2
View File
@@ -1,6 +1,7 @@
import type { PlatformTranslations } from "@govoplan/core-webui";
const en = {
"Form meaning": "Form meaning",
"i18n:govoplan-forms.form_definitions": "Form definitions",
"i18n:govoplan-forms.loading_reason": "Form definitions are still loading.",
"i18n:govoplan-forms.busy_reason": "Another Form definition action is still running.",
@@ -74,6 +75,7 @@ const en = {
} as const;
const de: Record<keyof typeof en, string> = {
"Form meaning": "Formularbedeutung",
"i18n:govoplan-forms.form_definitions": "Formulardefinitionen",
"i18n:govoplan-forms.loading_reason": "Formulardefinitionen werden noch geladen.",
"i18n:govoplan-forms.busy_reason": "Eine andere Aktion für Formulardefinitionen läuft noch.",