2 Commits
Author SHA1 Message Date
zemion 5c186b565e feat: promote work to a stable product destination
Module Package Release / publish-packages (push) Successful in 12s
2026-08-24 17:58:22 +02:00
zemion 39e9c6c2ea docs: complete German structured documentation
Module Package Release / publish-packages (push) Successful in 12s
2026-08-24 01:15:41 +02:00
7 changed files with 81 additions and 11 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@govoplan/tasks",
"version": "0.1.20",
"version": "0.1.22",
"private": true,
"description": "Governed work items and unified work inbox for GovOPlaN.",
"type": "module",
+2 -2
View File
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
[project]
name = "govoplan-tasks"
version = "0.1.20"
version = "0.1.22"
description = "Governed work items and unified work inbox for GovOPlaN."
readme = "README.md"
requires-python = ">=3.12"
authors = [{ name = "GovOPlaN" }]
dependencies = [
"govoplan-core>=0.1.18",
"govoplan-core>=0.1.44",
"govoplan-access>=0.1.18",
]
+1 -1
View File
@@ -1,3 +1,3 @@
"""GovOPlaN Tasks module."""
__version__ = "0.1.20"
__version__ = "0.1.22"
@@ -0,0 +1,29 @@
"""German translations for public structured documentation metadata."""
from __future__ import annotations
from typing import Any
GERMAN_STRUCTURED_TRANSLATIONS: dict[str, dict[str, Any]] = {'tasks.data-subject-requests': {'consequence_classes': {'export_assigned_task': 'Gibt nur '
'eingeschränkte '
'aufgabeneigene '
'Daten und genaue '
'Kontozuweisung '
'zurück.',
'retain_actor_attribution': 'Bewahrt '
'minimierte '
'Task-Lifecycle-Rechenschaftsnachweise '
'vor.',
'review_assignment_erasure': 'Benötigt '
'den '
'Besitzer '
'der '
'Task-Quelle '
'und die '
'Aufbewahrungsberechtigung, '
'bevor Sie '
'die '
'freigegebene '
'Arbeit '
'ändern.'}}}
+39 -3
View File
@@ -1,5 +1,8 @@
from __future__ import annotations
from govoplan_core.core.modules import with_documentation_structured_translations
from govoplan_tasks.backend.german_structured_documentation import GERMAN_STRUCTURED_TRANSLATIONS
from pathlib import Path
from govoplan_core.core.access import (
@@ -23,7 +26,9 @@ from govoplan_core.core.modules import (
ModuleManifest,
NavItem,
PermissionDefinition,
ProductAvailabilityExplanation,
ProductAreaContribution,
ProductSurfaceContribution,
QuickAccessTool,
RoleTemplate,
)
@@ -44,7 +49,7 @@ from govoplan_tasks.backend.service import SqlTaskService
MODULE_ID = "tasks"
MODULE_NAME = "Tasks"
MODULE_VERSION = "0.1.20"
MODULE_VERSION = "0.1.22"
READ_SCOPE = "tasks:item:read"
WRITE_SCOPE = "tasks:item:write"
ADMIN_SCOPE = "tasks:item:admin"
@@ -206,7 +211,8 @@ DOCUMENTATION = (
title="Work in product navigation and Quick Access",
summary="Keep assigned work available in the Work area and the optional right-side Quick Access rail.",
body=(
"Tasks contributes its authorized workspace to the Work product area. When Quick Access is enabled, "
"Tasks contributes its authorized workspace to the stable Work destination at /work. The owner route "
"/tasks remains available through All available tools and as a compatible deep link. When Quick Access is enabled, "
"a bounded seven-item authorized inbox and detail can appear beside the current page. Explicit Tasks can be "
"started or completed there; work from another provider exposes only that provider's launch path. Every load "
"and command is rechecked by Tasks, and completion returns a typed work-item reference to the host. Views may "
@@ -221,7 +227,8 @@ DOCUMENTATION = (
"title": "Arbeit in Produktnavigation und Schnellzugriff",
"summary": "Zugewiesene Arbeit im Produktbereich Arbeit und optional in der rechten Schnellzugriffsleiste verwenden.",
"body": (
"Tasks ordnet den berechtigten Arbeitsbereich dem Produktbereich Arbeit zu. Ist der Schnellzugriff aktiviert, "
"Tasks ordnet den berechtigten Arbeitsbereich dem stabilen Produktziel Arbeit unter /work zu. Der Eigentümerpfad "
"/tasks bleibt unter Alle verfügbaren Werkzeuge und als kompatibler Direktlink erreichbar. Ist der Schnellzugriff aktiviert, "
"kann ein begrenzter, berechtigungsgeprüfter Arbeitsvorrat mit sieben Einträgen und Details neben der "
"aktuellen Seite erscheinen. Explizite Tasks lassen sich dort beginnen oder abschließen; fremde Quellen "
"behalten ihre eigenen Befehle und Startpfade. Jeder Aufruf wird erneut durch Tasks geprüft. Ansichten "
@@ -404,6 +411,30 @@ manifest = ModuleManifest(
order=10,
),
),
product_surfaces=(
ProductSurfaceContribution(
id="work.items",
module_id=MODULE_ID,
label="i18n:govoplan-core.product_surface.work",
description="i18n:govoplan-core.product_surface.work_description",
icon="list-checks",
entry_path="/work",
route_path="/tasks",
surface_ids=("tasks.route.work",),
presentations=("task", "reader"),
help_context_ids=("tasks.route.work",),
documentation_topic_ids=("tasks.quick-access-and-product-area",),
required_any=(READ_SCOPE,),
order=10,
unavailable=ProductAvailabilityExplanation(
reason="authorization",
title="i18n:govoplan-core.product_surface.unavailable",
description="i18n:govoplan-core.product_surface.unavailable_description",
resolution="i18n:govoplan-core.product_surface.unavailable_resolution",
responsible_role="i18n:govoplan-core.access_administrator",
),
),
),
quick_access_tools=(
QuickAccessTool(
id="tasks.work",
@@ -492,6 +523,11 @@ manifest = ModuleManifest(
)
manifest = with_documentation_structured_translations(
manifest, locale="de", translations=GERMAN_STRUCTURED_TRANSLATIONS
)
def get_manifest() -> ModuleManifest:
return manifest
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@govoplan/tasks-webui",
"version": "0.1.20",
"version": "0.1.22",
"private": true,
"type": "module",
"main": "src/index.ts",
@@ -14,7 +14,7 @@
"./styles/tasks.css": "./src/styles/tasks.css"
},
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"@govoplan/core-webui": "^0.1.44",
"lucide-react": "^1.23.0",
"react": ">=19.2.7 <20",
"react-dom": ">=19.2.7 <20",
+7 -2
View File
@@ -4,6 +4,7 @@ import type {
PlatformWebModule,
QuickAccessToolsUiCapability
} from "@govoplan/core-webui";
import { generatedTranslations as productSurfaceTranslations } from "@govoplan/core-webui/outcome-product-surface-translations";
import TasksSummaryWidget from "./features/tasks/TasksSummaryWidget";
import TasksQuickAccess from "./features/tasks/TasksQuickAccess";
import { generatedTranslations } from "./i18n/generatedTranslations";
@@ -11,6 +12,10 @@ import "./styles/tasks.css";
const TasksPage = lazy(() => import("./features/tasks/TasksPage"));
const readScope = ["tasks:item:read"];
const translations = {
en: { ...generatedTranslations.en, ...productSurfaceTranslations.en },
de: { ...generatedTranslations.de, ...productSurfaceTranslations.de }
};
const dashboardWidgets: DashboardWidgetsUiCapability = {
widgets: [
@@ -44,10 +49,10 @@ const quickAccessTools: QuickAccessToolsUiCapability = {
export const tasksModule: PlatformWebModule = {
id: "tasks",
label: "i18n:govoplan-tasks.work",
version: "0.1.20",
version: "0.1.22",
dependencies: ["access"],
optionalDependencies: ["idm", "organizations", "workflow_engine", "workflow", "notifications", "postbox", "approvals", "views", "dashboard", "search"],
translations: generatedTranslations,
translations,
navItems: [
{
to: "/tasks",