Release govoplan-tasks v0.1.23: unify interface contracts and documentation

This commit is contained in:
2026-09-08 01:32:53 +02:00
parent 5c186b565e
commit bb6ebf194a
6 changed files with 39 additions and 25 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@govoplan/tasks", "name": "@govoplan/tasks",
"version": "0.1.22", "version": "0.1.23",
"private": true, "private": true,
"description": "Governed work items and unified work inbox for GovOPlaN.", "description": "Governed work items and unified work inbox for GovOPlaN.",
"type": "module", "type": "module",
+2 -2
View File
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "govoplan-tasks" name = "govoplan-tasks"
version = "0.1.22" version = "0.1.23"
description = "Governed work items and unified work inbox for GovOPlaN." description = "Governed work items and unified work inbox for GovOPlaN."
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.44", "govoplan-core>=0.1.45",
"govoplan-access>=0.1.18", "govoplan-access>=0.1.18",
] ]
+1 -1
View File
@@ -1,3 +1,3 @@
"""GovOPlaN Tasks module.""" """GovOPlaN Tasks module."""
__version__ = "0.1.22" __version__ = "0.1.23"
+16 -1
View File
@@ -49,7 +49,7 @@ from govoplan_tasks.backend.service import SqlTaskService
MODULE_ID = "tasks" MODULE_ID = "tasks"
MODULE_NAME = "Tasks" MODULE_NAME = "Tasks"
MODULE_VERSION = "0.1.22" MODULE_VERSION = "0.1.23"
READ_SCOPE = "tasks:item:read" READ_SCOPE = "tasks:item:read"
WRITE_SCOPE = "tasks:item:write" WRITE_SCOPE = "tasks:item:write"
ADMIN_SCOPE = "tasks:item:admin" ADMIN_SCOPE = "tasks:item:admin"
@@ -136,6 +136,21 @@ ROLE_TEMPLATES = (
) )
DOCUMENTATION = ( DOCUMENTATION = (
DocumentationTopic(
id="tasks.workspace-layout",
title="Tasks workspace actions",
summary="Find collection-wide commands in their consistent workspace position.",
body="Reload and Create task use the persistent full-width workspace header at the upper right; Reload sits immediately before creation. Selecting a record, changing filters, or opening an editor does not move these collection-wide commands into the left pane. Search and status filters stay in the task list; completion, ownership, and other task-specific actions remain with the selected task. Existing permissions, disabled-state rules, and unsaved-change guards still apply. Administrators configure authority through the existing permission system; no new permission or automatic operation is introduced.",
layer="static",
documentation_types=("user", "admin"),
audience=("user", "module_admin", "operator"),
order=5,
translations={"de": {
"title": "Aufgaben: Aktionen im Arbeitsbereich",
"summary": "Sammlungsweite Aktionen an ihrer einheitlichen Position im Arbeitsbereich finden.",
"body": "Neu laden und Aufgabe anlegen stehen oben rechts in der dauerhaft sichtbaren, arbeitsbereichsweiten Leiste; Neu laden steht unmittelbar vor dem Anlegen. Auswahl, Filterwechsel und Bearbeitung verschieben diese sammlungsweiten Aktionen nicht in den linken Bereich. Suche und Statusfilter bleiben in der Aufgabenliste; Abschluss, Zuständigkeit und weitere aufgabenspezifische Aktionen bleiben bei der ausgewählten Aufgabe. Bestehende Berechtigungen, Deaktivierungsregeln und der Schutz ungespeicherter Änderungen gelten weiterhin. Administratoren konfigurieren Rechte im bestehenden Berechtigungssystem; es entstehen weder neue Rechte noch automatische Vorgänge.",
}},
),
DocumentationTopic( DocumentationTopic(
id="tasks.data-subject-requests", id="tasks.data-subject-requests",
title="Task data-subject requests", title="Task data-subject requests",
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "@govoplan/tasks-webui", "name": "@govoplan/tasks-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",
@@ -14,7 +14,7 @@
"./styles/tasks.css": "./src/styles/tasks.css" "./styles/tasks.css": "./src/styles/tasks.css"
}, },
"peerDependencies": { "peerDependencies": {
"@govoplan/core-webui": "^0.1.44", "@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",
+17 -18
View File
@@ -124,6 +124,23 @@ export default function TasksPage({ settings, auth }: { settings: ApiSettings; a
return ( return (
<WorkspaceFrame as="main" height="viewport" surface="plain" className="tasks-page" label="Task inbox" data-help-context-id="tasks.page.inbox"> <WorkspaceFrame as="main" height="viewport" surface="plain" className="tasks-page" label="Task inbox" data-help-context-id="tasks.page.inbox">
<WorkspaceActionBar
scope="workspace"
variant="collection"
refreshable
reloadAction={{ onReload: () => void load(), loading: loading || busy, label: "i18n:govoplan-tasks.refresh" }}
contextActions={<span className="tasks-title"><ListChecks size={18} /><strong>i18n:govoplan-tasks.work</strong></span>}
createAction={canWrite ? (
<Button
variant="primary"
onClick={() => setCreateOpen(true)}
disabled={busy}
helpContextId="tasks.action.create"
>
<Plus size={16} aria-hidden="true" /> i18n:govoplan-tasks.create_task
</Button>
) : undefined}
/>
<WorkspaceLayout <WorkspaceLayout
variant="split" variant="split"
primarySize="default" primarySize="default"
@@ -138,24 +155,6 @@ export default function TasksPage({ settings, auth }: { settings: ApiSettings; a
helpContextId="tasks.page.inbox" helpContextId="tasks.page.inbox"
helpModuleId="tasks" helpModuleId="tasks"
primary={<> primary={<>
<WorkspaceActionBar
scope="collection-pane"
variant="collection"
refreshable
reloadAction={{ onReload: () => void load(), loading: loading || busy, label: "i18n:govoplan-tasks.refresh" }}
className="tasks-sidebar-bar"
contextActions={<span className="tasks-title"><ListChecks size={18} /><strong>i18n:govoplan-tasks.work</strong></span>}
createAction={canWrite ? (
<Button
variant="primary"
onClick={() => setCreateOpen(true)}
disabled={busy}
helpContextId="tasks.action.create"
>
<Plus size={16} aria-hidden="true" /> i18n:govoplan-tasks.create_task
</Button>
) : undefined}
/>
<FilterBar as="form" surface="control" wrap="never" className="tasks-search" onSubmit={submitSearch} role="search"> <FilterBar as="form" surface="control" wrap="never" className="tasks-search" onSubmit={submitSearch} role="search">
<Search size={15} aria-hidden="true" /> <Search size={15} aria-hidden="true" />
<input <input