release: publish stable product destinations
This commit is contained in:
@@ -72,7 +72,7 @@ Each WebUI module should be able to announce:
|
|||||||
The contract references surfaces. It does not permit Core or a product package
|
The contract references surfaces. It does not permit Core or a product package
|
||||||
to import their implementation.
|
to import their implementation.
|
||||||
|
|
||||||
The first versioned `product_surfaces` slice is now implemented in Core. It
|
The versioned `product_surfaces` slice is implemented in Core. It
|
||||||
binds a stable product identity and entry path to one or more owner routes,
|
binds a stable product identity and entry path to one or more owner routes,
|
||||||
View surfaces, presentations, capabilities, search sources, help contexts and
|
View surfaces, presentations, capabilities, search sources, help contexts and
|
||||||
documentation topics. It also carries standard unavailable/degraded
|
documentation topics. It also carries standard unavailable/degraded
|
||||||
@@ -80,8 +80,22 @@ explanations and migration aliases. Mail and Postbox contribute the first
|
|||||||
shared identity, `communication.messages`: `/messages` and the migration alias
|
shared identity, `communication.messages`: `/messages` and the migration alias
|
||||||
`/inbox` select the first currently authorized, View-visible owner while the
|
`/inbox` select the first currently authorized, View-visible owner while the
|
||||||
underlying `/mail` and `/postbox` deep links, custody and permissions remain
|
underlying `/mail` and `/postbox` deep links, custody and permissions remain
|
||||||
unchanged. Alias resolution emits a bounded client telemetry event before the
|
unchanged. Tasks, Calendar and Files contribute the corresponding single-owner
|
||||||
redirect.
|
identities:
|
||||||
|
|
||||||
|
| Product identity | Stable destination | Compatible owner route |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Work | `/work` | `/tasks` |
|
||||||
|
| Calendar | `/agenda` | `/calendar` |
|
||||||
|
| Messages | `/messages` (`/inbox` alias) | `/mail`, `/postbox` |
|
||||||
|
| Files | `/documents` | `/files` |
|
||||||
|
|
||||||
|
Core replaces those owner entries in the ordinary rail with the stable product
|
||||||
|
destinations. A collapsed **All available tools** catalogue retains every
|
||||||
|
authorized technical owner route independently of View focus; unauthorized
|
||||||
|
entries are never disclosed. The original deep links remain valid, and all
|
||||||
|
contributing owner paths keep the corresponding product entry active. Alias
|
||||||
|
resolution emits a bounded client telemetry event before the redirect.
|
||||||
|
|
||||||
Core's `ProductAvailabilityState` is the shared presentation primitive for
|
Core's `ProductAvailabilityState` is the shared presentation primitive for
|
||||||
authorization, Policy, configuration, disabled, missing-capability, offline and
|
authorization, Policy, configuration, disabled, missing-capability, offline and
|
||||||
@@ -105,10 +119,11 @@ People and Responsibility. They are configurable system/tenant defaults and
|
|||||||
Views projections, not hard-coded repository groups. Empty areas disappear;
|
Views projections, not hard-coded repository groups. Empty areas disappear;
|
||||||
single-destination areas may link directly; familiar tools may remain pinned.
|
single-destination areas may link directly; familiar tools may remain pinned.
|
||||||
|
|
||||||
The complete permission-derived module rail remains available as **All
|
The complete permission-derived module rail is available as the collapsed
|
||||||
available tools**. Its ability to scroll is useful and is not itself the
|
**All available tools** escape. It is deliberately independent of the active
|
||||||
product defect. The defect is requiring people to infer a task or outcome from
|
View while still enforcing authorization. Its ability to scroll is useful and
|
||||||
repository topology.
|
is not itself the product defect. The defect is requiring people to infer a
|
||||||
|
task or outcome from repository topology.
|
||||||
|
|
||||||
Task-local Work, Calendar, Messages and Files tools may be contributed to the
|
Task-local Work, Calendar, Messages and Files tools may be contributed to the
|
||||||
optional `govoplan-quick-access` rail. Messages composes Mail, Postbox and
|
optional `govoplan-quick-access` rail. Messages composes Mail, Postbox and
|
||||||
@@ -125,6 +140,12 @@ sections, commands, widgets, and fields. A view must not grant a permission or
|
|||||||
change data semantics. Policy can force, allow, or prohibit a surface at system,
|
change data semantics. Policy can force, allow, or prohibit a surface at system,
|
||||||
tenant, group, or user scope.
|
tenant, group, or user scope.
|
||||||
|
|
||||||
|
Core browser conformance exercises the German Anwohnerparkausweis reference
|
||||||
|
context with Work, Calendar, Messages and Files entries, verifies that package
|
||||||
|
owner labels are absent from the primary rail, expands the technical catalogue,
|
||||||
|
and runs WCAG 2 A/AA checks over the result. Unit permutations cover two-owner,
|
||||||
|
one-owner, unauthorized-owner and focused-View compositions.
|
||||||
|
|
||||||
## Error And Provenance Language
|
## Error And Provenance Language
|
||||||
|
|
||||||
Normal errors answer:
|
Normal errors answer:
|
||||||
|
|||||||
@@ -39,16 +39,24 @@ The first production-shaped slice is implemented:
|
|||||||
order and optional labels. Scoped Views therefore configure product
|
order and optional labels. Scoped Views therefore configure product
|
||||||
presentation for system, tenant, group, user and Workflow contexts;
|
presentation for system, tenant, group, user and Workflow contexts;
|
||||||
- the expanded left rail groups classified destinations while retaining
|
- the expanded left rail groups classified destinations while retaining
|
||||||
Dashboard and every authorized unclassified destination under More tools.
|
Dashboard and every authorized unclassified destination under More tools;
|
||||||
|
- Core promotes Work (`/work`), Calendar (`/agenda`), Messages (`/messages`)
|
||||||
|
and Files (`/documents`) into stable primary destinations and collapses the
|
||||||
|
compatible owner routes under **All available tools**;
|
||||||
|
- **All available tools** is permission-derived but independent of the active
|
||||||
|
View, providing a deliberate escape without granting access or discarding
|
||||||
|
the original `/tasks`, `/calendar`, `/mail`, `/postbox` and `/files` links.
|
||||||
|
|
||||||
The baseline classification is now manifest-declared for every ordinary
|
The baseline classification and the four initial stable destinations are now
|
||||||
user-facing module and enforced by the workspace manifest check. A separately
|
manifest-declared. The area classification covers every ordinary user-facing
|
||||||
|
module and is enforced by the workspace manifest check. A separately
|
||||||
versioned launch-context contract carries bounded active-object, acting,
|
versioned launch-context contract carries bounded active-object, acting,
|
||||||
temporal, View and return references into full-page Quick Access fallbacks;
|
temporal, View and return references into full-page Quick Access fallbacks;
|
||||||
Cases publishes the first active-object reference. The remaining rollout is to
|
Cases publishes the first active-object reference. The remaining rollout is to
|
||||||
add useful bounded tools and active-object publishers only where a maintained
|
add useful bounded tools and active-object publishers only where a maintained
|
||||||
journey benefits, and to extend browser evidence to a pinned reference
|
journey benefits. The pinned German Anwohnerparkausweis browser composition
|
||||||
composition. Authorized global and technical routes remain visible through
|
verifies stable product labels, technical escape, keyboard access and WCAG
|
||||||
|
conformance. Authorized global and technical routes remain visible through
|
||||||
their dedicated shell entry or **All available tools**.
|
their dedicated shell entry or **All available tools**.
|
||||||
|
|
||||||
## Quick Access Boundary
|
## Quick Access Boundary
|
||||||
@@ -166,9 +174,10 @@ areas, and users may personalize them within Policy ceilings. An empty area is
|
|||||||
omitted. An area with one destination may open it directly. A multi-destination
|
omitted. An area with one destination may open it directly. A multi-destination
|
||||||
area provides a useful work/recent/action surface rather than another menu.
|
area provides a useful work/recent/action surface rather than another menu.
|
||||||
|
|
||||||
Familiar product nouns such as Calendar, Mail or Files may remain directly
|
Familiar product nouns such as Calendar or Files remain direct product
|
||||||
pinned. The objective is not to hide every module name; it is to prevent
|
destinations. The objective is not to hide every implementation name from
|
||||||
repository topology from determining a person's workflow.
|
administrators; it is to prevent repository topology from determining a
|
||||||
|
person's workflow.
|
||||||
|
|
||||||
The initial module classification is deliberately outcome-oriented:
|
The initial module classification is deliberately outcome-oriented:
|
||||||
|
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "govoplan"
|
name = "govoplan"
|
||||||
version = "0.1.43"
|
version = "0.1.44"
|
||||||
description = "Developer convenience package for a versioned GovOPlaN composition"
|
description = "Developer convenience package for a versioned GovOPlaN composition"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
license = { text = "AGPL-3.0-or-later" }
|
license = { text = "AGPL-3.0-or-later" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"govoplan-core[server]==0.1.43",
|
"govoplan-core[server]==0.1.44",
|
||||||
"govoplan-tenancy==0.1.21",
|
"govoplan-tenancy==0.1.21",
|
||||||
"govoplan-organizations==0.1.20",
|
"govoplan-organizations==0.1.20",
|
||||||
"govoplan-identity==0.1.20",
|
"govoplan-identity==0.1.20",
|
||||||
@@ -20,10 +20,10 @@ dependencies = [
|
|||||||
"govoplan-policy==0.1.22",
|
"govoplan-policy==0.1.22",
|
||||||
"govoplan-audit==0.1.20",
|
"govoplan-audit==0.1.20",
|
||||||
"govoplan-dashboard==0.1.20",
|
"govoplan-dashboard==0.1.20",
|
||||||
"govoplan-files==0.1.24",
|
"govoplan-files==0.1.25",
|
||||||
"govoplan-mail==0.1.26",
|
"govoplan-mail==0.1.26",
|
||||||
"govoplan-campaign==0.1.27",
|
"govoplan-campaign==0.1.27",
|
||||||
"govoplan-calendar==0.1.22",
|
"govoplan-calendar==0.1.23",
|
||||||
"govoplan-docs==0.1.22",
|
"govoplan-docs==0.1.22",
|
||||||
"govoplan-ops==0.1.21",
|
"govoplan-ops==0.1.21",
|
||||||
]
|
]
|
||||||
@@ -77,7 +77,7 @@ full = [
|
|||||||
"govoplan-search==0.1.19",
|
"govoplan-search==0.1.19",
|
||||||
"govoplan-services==0.1.19",
|
"govoplan-services==0.1.19",
|
||||||
"govoplan-soap==0.1.19",
|
"govoplan-soap==0.1.19",
|
||||||
"govoplan-tasks==0.1.21",
|
"govoplan-tasks==0.1.22",
|
||||||
"govoplan-templates==0.1.21",
|
"govoplan-templates==0.1.21",
|
||||||
"govoplan-tickets==0.1.22",
|
"govoplan-tickets==0.1.22",
|
||||||
"govoplan-transparency==0.1.20",
|
"govoplan-transparency==0.1.20",
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ govoplan-admin @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-admin.git@v0.1
|
|||||||
govoplan-policy @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-policy.git@v0.1.22
|
govoplan-policy @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-policy.git@v0.1.22
|
||||||
govoplan-audit @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-audit.git@v0.1.20
|
govoplan-audit @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-audit.git@v0.1.20
|
||||||
govoplan-dashboard @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-dashboard.git@v0.1.20
|
govoplan-dashboard @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-dashboard.git@v0.1.20
|
||||||
govoplan-files @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-files.git@v0.1.24
|
govoplan-files @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-files.git@v0.1.25
|
||||||
govoplan-mail @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-mail.git@v0.1.26
|
govoplan-mail @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-mail.git@v0.1.26
|
||||||
govoplan-campaign @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-campaign.git@v0.1.27
|
govoplan-campaign @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-campaign.git@v0.1.27
|
||||||
govoplan-calendar @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-calendar.git@v0.1.22
|
govoplan-calendar @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-calendar.git@v0.1.23
|
||||||
govoplan-docs @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-docs.git@v0.1.22
|
govoplan-docs @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-docs.git@v0.1.22
|
||||||
govoplan-ops @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-ops.git@v0.1.21
|
govoplan-ops @ git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-ops.git@v0.1.21
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ class PackageRegistryReleaseTests(unittest.TestCase):
|
|||||||
by_name = {item["name"]: item for item in selected}
|
by_name = {item["name"]: item for item in selected}
|
||||||
self.assertIn("govoplan-core", by_name)
|
self.assertIn("govoplan-core", by_name)
|
||||||
self.assertIn("govoplan-records", by_name)
|
self.assertIn("govoplan-records", by_name)
|
||||||
self.assertEqual("0.1.21", by_name["govoplan-tasks"]["version"])
|
self.assertEqual("0.1.22", by_name["govoplan-tasks"]["version"])
|
||||||
|
|
||||||
payload = PACKAGE_SET.generate_package_set(
|
payload = PACKAGE_SET.generate_package_set(
|
||||||
core_version=core_version,
|
core_version=core_version,
|
||||||
|
|||||||
Reference in New Issue
Block a user