Release govoplan-admin v0.1.23: unify interface contracts and documentation
Module Package Release / publish-packages (push) Successful in 12s
Module Package Release / publish-packages (push) Successful in 12s
This commit is contained in:
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@govoplan/admin-webui",
|
"name": "@govoplan/admin-webui",
|
||||||
"version": "0.1.22",
|
"version": "0.1.23",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "webui/src/index.ts",
|
"main": "webui/src/index.ts",
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
],
|
],
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.35",
|
"@govoplan/core-webui": "^0.1.45",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
"react": ">=19.2.7 <20",
|
"react": ">=19.2.7 <20",
|
||||||
"react-dom": ">=19.2.7 <20",
|
"react-dom": ">=19.2.7 <20",
|
||||||
|
|||||||
+2
-2
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "govoplan-admin"
|
name = "govoplan-admin"
|
||||||
version = "0.1.22"
|
version = "0.1.23"
|
||||||
description = "GovOPlaN generic administration module."
|
description = "GovOPlaN generic administration module."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
authors = [{ name = "GovOPlaN" }]
|
authors = [{ name = "GovOPlaN" }]
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"govoplan-core>=0.1.35",
|
"govoplan-core>=0.1.45",
|
||||||
"govoplan-access>=0.1.20",
|
"govoplan-access>=0.1.20",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ from govoplan_core.core.module_installer_notifications import (
|
|||||||
)
|
)
|
||||||
from govoplan_core.core.module_license import module_license_decision, module_license_diagnostics
|
from govoplan_core.core.module_license import module_license_decision, module_license_diagnostics
|
||||||
from govoplan_core.core.navigation import (
|
from govoplan_core.core.navigation import (
|
||||||
NavigationPreferences,
|
|
||||||
navigation_preferences_from_settings,
|
navigation_preferences_from_settings,
|
||||||
update_navigation_preferences,
|
update_navigation_preferences,
|
||||||
)
|
)
|
||||||
@@ -1885,11 +1884,7 @@ def write_system_settings(
|
|||||||
if "navigation" in payload.model_fields_set:
|
if "navigation" in payload.model_fields_set:
|
||||||
item.settings = update_navigation_preferences(
|
item.settings = update_navigation_preferences(
|
||||||
item.settings,
|
item.settings,
|
||||||
NavigationPreferences(
|
payload.navigation.model_dump(mode="json") if payload.navigation is not None else None,
|
||||||
order=tuple(payload.navigation.order),
|
|
||||||
hidden=tuple(payload.navigation.hidden),
|
|
||||||
locked=tuple(payload.navigation.locked),
|
|
||||||
) if payload.navigation is not None else None,
|
|
||||||
)
|
)
|
||||||
if payload.privacy_retention_policy is not None:
|
if payload.privacy_retention_policy is not None:
|
||||||
set_privacy_policy(item, payload.privacy_retention_policy.model_dump(mode="json"))
|
set_privacy_policy(item, payload.privacy_retention_policy.model_dump(mode="json"))
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ ADMIN_ROLE_TEMPLATES = (
|
|||||||
manifest = ModuleManifest(
|
manifest = ModuleManifest(
|
||||||
id="admin",
|
id="admin",
|
||||||
name="Admin",
|
name="Admin",
|
||||||
version="0.1.22",
|
version="0.1.23",
|
||||||
permissions=ADMIN_PERMISSIONS,
|
permissions=ADMIN_PERMISSIONS,
|
||||||
role_templates=ADMIN_ROLE_TEMPLATES,
|
role_templates=ADMIN_ROLE_TEMPLATES,
|
||||||
required_capabilities=(
|
required_capabilities=(
|
||||||
@@ -153,7 +153,7 @@ manifest = ModuleManifest(
|
|||||||
id="admin.workspace",
|
id="admin.workspace",
|
||||||
title="Use the administration workspace",
|
title="Use the administration workspace",
|
||||||
summary="The administration workspace shows only the sections supplied by enabled modules and allowed by the current account's permissions.",
|
summary="The administration workspace shows only the sections supplied by enabled modules and allowed by the current account's permissions.",
|
||||||
body="System and tenant administration share one workspace. Available sections can include settings, configuration changes and packages, governance templates, groups, and module lifecycle controls. A missing section normally means that its owning module is disabled or the current account lacks the required authority. System appearance settings select a validated palette default. Changing the separate palette lock additionally requires policy-write authority; a system lock suppresses tenant and personal palette choices, while an unlocked default remains inheritable and overridable. The separate advanced-override policy is disabled by default and also requires policy-write authority. Enabling it permits tenants to inherit or narrow access to Core's versioned, accessibility-validated personal accent, surface, and status editor; palette locks continue to win.",
|
body="System and tenant administration share one workspace. Available sections can include settings, configuration changes and packages, governance templates, groups, and module lifecycle controls. A missing section normally means that its owning module is disabled or the current account lacks the required authority. System appearance settings select a validated palette default. Changing the separate palette lock additionally requires policy-write authority; a system lock suppresses tenant and personal palette choices, while an unlocked default remains inheritable and overridable. The separate advanced-override policy is disabled by default and also requires policy-write authority. Enabling it permits tenants to inherit or narrow access to Core's versioned, accessibility-validated personal accent, surface, and status editor; palette locks continue to win. Opening lists and creation or edit dialogs does not save changes. If an authorized section reports a load failure, reload after deployment and report the frontend diagnostic; do not broaden permissions or recreate records to work around a render failure.",
|
||||||
documentation_types=("admin", "user"),
|
documentation_types=("admin", "user"),
|
||||||
audience=("tenant_admin", "system_admin", "operator"),
|
audience=("tenant_admin", "system_admin", "operator"),
|
||||||
translations={
|
translations={
|
||||||
@@ -164,6 +164,7 @@ manifest = ModuleManifest(
|
|||||||
"Konto berechtigt ist."
|
"Konto berechtigt ist."
|
||||||
),
|
),
|
||||||
"body": (
|
"body": (
|
||||||
|
"Das Öffnen von Listen sowie Anlage- oder Bearbeitungsdialogen speichert keine Änderungen. Meldet ein berechtigter Bereich einen Ladefehler, laden Sie nach der Bereitstellung neu und melden Sie die Oberflächendiagnose; erweitern Sie keine Berechtigungen und legen Sie keine Datensätze erneut an, um einen Darstellungsfehler zu umgehen. "
|
||||||
"System- und Mandantenadministration teilen sich einen Arbeitsbereich. Verfügbare Bereiche können Einstellungen, "
|
"System- und Mandantenadministration teilen sich einen Arbeitsbereich. Verfügbare Bereiche können Einstellungen, "
|
||||||
"Konfigurationsänderungen und -pakete, Governance-Vorlagen, Gruppen und die Steuerung des Modul-Lebenszyklus umfassen. "
|
"Konfigurationsänderungen und -pakete, Governance-Vorlagen, Gruppen und die Steuerung des Modul-Lebenszyklus umfassen. "
|
||||||
"Fehlt ein Bereich, ist normalerweise sein zuständiges Modul deaktiviert oder das aktuelle Konto besitzt nicht die "
|
"Fehlt ein Bereich, ist normalerweise sein zuständiges Modul deaktiviert oder das aktuelle Konto besitzt nicht die "
|
||||||
@@ -328,6 +329,7 @@ manifest = ModuleManifest(
|
|||||||
summary="System administrators define the instance-wide side-rail order, visibility baseline, and entries that lower scopes must keep visible.",
|
summary="System administrators define the instance-wide side-rail order, visibility baseline, and entries that lower scopes must keep visible.",
|
||||||
body=(
|
body=(
|
||||||
"The system navigation setting starts from module-declared defaults. Tenant settings take precedence over the system order and visibility, and personal settings take precedence over both. A system lock prevents tenant and user preferences from hiding an entry but does not prevent them from moving it. Removing the system preference restores module defaults. Navigation policy changes presentation only: module entitlement, View policy, and permissions still decide whether a surface is accessible."
|
"The system navigation setting starts from module-declared defaults. Tenant settings take precedence over the system order and visibility, and personal settings take precedence over both. A system lock prevents tenant and user preferences from hiding an entry but does not prevent them from moving it. Removing the system preference restores module defaults. Navigation policy changes presentation only: module entitlement, View policy, and permissions still decide whether a surface is accessible."
|
||||||
|
" Use the shared layout editor to drag modules and separators, add or restore available modules, remove entries from the rail, and label groups. Keyboard handles support Space, arrows, Enter, and Escape; arrow buttons also move individual entries. Collapsed rails retain group dividers. Changes stay in the page draft until Save, and Use inherited layout restores live module defaults rather than copying them. Removing a navigation entry never uninstalls a module or deletes its records."
|
||||||
),
|
),
|
||||||
documentation_types=("admin",),
|
documentation_types=("admin",),
|
||||||
audience=("system_admin",),
|
audience=("system_admin",),
|
||||||
@@ -346,6 +348,7 @@ manifest = ModuleManifest(
|
|||||||
"Verschiebung. Das Entfernen der Systempräferenz stellt die Modulstandardwerte wieder her. Navigationsrichtlinien ändern "
|
"Verschiebung. Das Entfernen der Systempräferenz stellt die Modulstandardwerte wieder her. Navigationsrichtlinien ändern "
|
||||||
"nur die Darstellung; Modulberechtigung, View-Richtlinie und Zugriffsrechte bestimmen weiterhin, ob eine Oberfläche "
|
"nur die Darstellung; Modulberechtigung, View-Richtlinie und Zugriffsrechte bestimmen weiterhin, ob eine Oberfläche "
|
||||||
"erreichbar ist."
|
"erreichbar ist."
|
||||||
|
" Im gemeinsamen Anordnungseditor ziehen Sie Module und Trennlinien, ergänzen verfügbare Module, entfernen Einträge aus der Leiste und benennen Gruppen. Tastaturgriffe unterstützen Leertaste, Pfeile, Eingabe und Escape; Pfeilschaltflächen verschieben einzelne Einträge ebenfalls. Eingeklappte Leisten behalten Gruppentrenner. Änderungen bleiben bis zum Speichern im Seitenentwurf. Geerbte Anordnung verwenden stellt die aktuellen Modulstandardwerte wieder her, statt sie zu kopieren. Das Entfernen eines Navigationseintrags deinstalliert kein Modul und löscht keine Datensätze."
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@govoplan/admin-webui",
|
"name": "@govoplan/admin-webui",
|
||||||
"version": "0.1.22",
|
"version": "0.1.23",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
"test:interface-patterns": "node scripts/test-interface-pattern-language.mjs"
|
"test:interface-patterns": "node scripts/test-interface-pattern-language.mjs"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.35",
|
"@govoplan/core-webui": "^0.1.45",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
"react": ">=19.2.7 <20",
|
"react": ">=19.2.7 <20",
|
||||||
"react-dom": ">=19.2.7 <20",
|
"react-dom": ">=19.2.7 <20",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { DescriptionItem, DescriptionList } from "@govoplan/core-webui";
|
import { DescriptionItem, DescriptionList, FormGrid } from "@govoplan/core-webui";
|
||||||
import { MetricGrid } from "@govoplan/core-webui";
|
import { MetricGrid } from "@govoplan/core-webui";
|
||||||
import { useEffect, useMemo, useState } from "react";
|
import { useEffect, useMemo, useState } from "react";
|
||||||
import { Download, Eye, Play, Plus, RefreshCw, Search, ShieldCheck } from "lucide-react";
|
import { Download, Eye, Play, Plus, RefreshCw, Search, ShieldCheck } from "lucide-react";
|
||||||
import type { FormGrid, ApiSettings, DataGridColumn } from "@govoplan/core-webui";
|
import type { ApiSettings, DataGridColumn } from "@govoplan/core-webui";
|
||||||
import {
|
import {
|
||||||
AdminIconButton,
|
AdminIconButton,
|
||||||
AdminPageLayout,
|
AdminPageLayout,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { DescriptionItem, DescriptionList } from "@govoplan/core-webui";
|
import { DescriptionItem, DescriptionList, FormGrid } from "@govoplan/core-webui";
|
||||||
import { useEffect, useMemo, useState } from "react";
|
import { useEffect, useMemo, useState } from "react";
|
||||||
import { Search, Pencil, Plus, RefreshCw, Trash2 } from "lucide-react";
|
import { Search, Pencil, Plus, RefreshCw, Trash2 } from "lucide-react";
|
||||||
import type { FormGrid, ApiSettings } from "@govoplan/core-webui";
|
import type { ApiSettings } from "@govoplan/core-webui";
|
||||||
import { Button } from "@govoplan/core-webui";
|
import { Button } from "@govoplan/core-webui";
|
||||||
import { ConfirmDialog } from "@govoplan/core-webui";
|
import { ConfirmDialog } from "@govoplan/core-webui";
|
||||||
import { DataGrid, type DataGridColumn } from "@govoplan/core-webui";
|
import { DataGrid, type DataGridColumn } from "@govoplan/core-webui";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { MetricGrid } from "@govoplan/core-webui";
|
import { ActionToolbar, MetricGrid } from "@govoplan/core-webui";
|
||||||
import { useEffect, useMemo, useState } from "react";
|
import { useEffect, useMemo, useState } from "react";
|
||||||
import type { ActionToolbar, ApiSettings } from "@govoplan/core-webui";
|
import type { ApiSettings } from "@govoplan/core-webui";
|
||||||
import { ActionBlockerHint, AdminPageLayout, adminErrorMessage, Button, ConfirmDialog, dispatchPlatformModulesChanged, DocumentationHelpLink, formatDateTime, MetricCard, SegmentedControl, StageRail, StatusBadge, ToggleSwitch, i18nMessage, useUnsavedDraftGuard, type FormatDateTimeOptions } from "@govoplan/core-webui";
|
import { ActionBlockerHint, AdminPageLayout, adminErrorMessage, Button, ConfirmDialog, dispatchPlatformModulesChanged, DocumentationHelpLink, formatDateTime, MetricCard, SegmentedControl, StageRail, StatusBadge, ToggleSwitch, i18nMessage, useUnsavedDraftGuard, type FormatDateTimeOptions } from "@govoplan/core-webui";
|
||||||
import { Check, Clock, FileText, Pencil, Send } from "lucide-react";
|
import { Check, Clock, FileText, Pencil, Send } from "lucide-react";
|
||||||
import {
|
import {
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ export default function SystemSettingsPanel({ settings, canWrite, canAccessMaint
|
|||||||
<Card title="System navigation order">
|
<Card title="System navigation order">
|
||||||
<NavigationPreferenceEditor
|
<NavigationPreferenceEditor
|
||||||
items={navigationItems}
|
items={navigationItems}
|
||||||
|
productAreas={modules.flatMap((module) => module.productAreas ?? [])}
|
||||||
value={draft.navigation}
|
value={draft.navigation}
|
||||||
onChange={(navigation) => setDraft({ ...draft, navigation })}
|
onChange={(navigation) => setDraft({ ...draft, navigation })}
|
||||||
scope="system"
|
scope="system"
|
||||||
|
|||||||
Reference in New Issue
Block a user