Skip to content

Commit f0930bb

Browse files
committed
Merge remote-tracking branch 'origin/main' into claude/issue-10545-filter-candidates-displayfield
Claude-Session: https://claude.ai/code/session_01KUxVUa7e39aNjhkKi1gsoy Co-authored-by: Claude <noreply@anthropic.com>
2 parents 61ce977 + b1030c7 commit f0930bb

56 files changed

Lines changed: 667 additions & 1552 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.changeset/3743-retire-system-hub-card-wall.md‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ queries and badge text that each needed a manual update whenever the object or
1111
permission model changed. The page (`SystemHubPage`) and its two test suites
1212
are deleted.
1313

14-
Every link that used to open the hub still works: the "System Settings" entries
15-
in both sidebars, the "System Settings" button on the "No Apps Configured"
16-
screen, the home Quick Action, the sidebar header and user menu, and the legacy
17-
`/system` bookmark all now land on the settings hub. The Setup app's
18-
navigation ("All Settings") and both sidebars' "Configuration" entry already
19-
declare that page. It lists the settings manifests the server returns for the
20-
signed-in user. The landing works with no apps configured as well.
14+
Every link that used to open the hub and still ships now lands on the settings
15+
hub: the sidebar's "System Settings" entry, the "System Settings" button on the
16+
"No Apps Configured" screen, the home Quick Action and the legacy `/system`
17+
bookmark. The Setup app's navigation ("All Settings") and the sidebar's
18+
"Configuration" entry already declare that page. It lists the settings
19+
manifests the server returns for the signed-in user. The landing works with no
20+
apps configured as well.
2121

2222
The `/apps/:app/system/{users,organizations,roles,positions,permissions}`
2323
redirects are unchanged.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
'@object-ui/app-shell': minor
3+
---
4+
5+
**Breaking:** `AppSidebar` is removed from `@object-ui/app-shell` (objectui#5817).
6+
The package entry, `dist/index.d.ts` included, no longer exports it. The bump
7+
is `minor` only because this repository's fixed release group never declares
8+
`major`; treat it as a breaking change.
9+
10+
Nothing in this repository mounted it. `ConsoleLayout`, the shell the console
11+
renders, uses `UnifiedSidebar`, so the console itself does not change. The
12+
component had been marked `@deprecated` under objectui#5720 after a census found
13+
no GitHub-visible consumer anywhere in this org, and the maintainer ruled that the removal need not
14+
wait for a major release.
15+
16+
Migration: render `UnifiedSidebar` from the same package instead, passing the
17+
active app through the same `activeAppName` prop. It is not a drop-in
18+
replacement, in three ways:
19+
20+
- It carries no app switcher and no user menu. The app-switcher dropdown and
21+
the user menu that `AppSidebar` drew in its own header and footer belong to
22+
`AppHeader` in the console shell, and `UnifiedSidebar` draws no mobile
23+
bottom-tab strip.
24+
- It reads `NavigationContext` to choose between the active app's navigation
25+
and the `/home` menu.
26+
- It gates differently, which is the difference objectui#5720 recorded:
27+
`UnifiedSidebar` hides its whole Administration cluster from anyone who is not
28+
a workspace admin, where `AppSidebar`'s no-app fallback cluster hid only the
29+
App Marketplace entry.

‎.changeset/6335-starred-apps-nav-exclusion.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ so a `nav` favorite handed to it rendered anyway. `FavoriteItem['type']` also ha
1313
translated one.
1414

1515
`StarredApps` now filters `items` to `type !== 'nav'` before rendering — the same
16-
exclusion already applied to the sidebar Favorites list in `AppSidebar.tsx` and
17-
`UnifiedSidebar.tsx` — restoring declared-equals-enforced behaviour and making the
18-
missing locale key correct by construction. No locale packs were touched, and the
16+
exclusion already applied to the sidebar Favorites list in `UnifiedSidebar.tsx` —
17+
restoring declared-equals-enforced behaviour and making the missing locale key
18+
correct by construction. No locale packs were touched, and the
1919
`FavoriteItem` / `RecentItem` union types are unchanged.

‎.changeset/6507-boot-gate-redirect-splash.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ Converted to `RedirectWithSplash`, which pairs the same navigation with the same
2727
`SystemRedirect` is deliberately left as a bare `Navigate`. It carries the same
2828
shape on a first navigation, but it is the only site in this set that also fires
2929
with the console already painted (`SettingsView` navigates to `/system/settings`
30-
from a button; `AppSidebar` links to `/system`), and a redirect firing under an
31-
already-painted layout must keep that layout rather than gain a splash. The five
32-
URL-rewrite redirects in `AppContent` are excluded for the same reason.
30+
from a button), and a redirect firing under an already-painted layout must keep
31+
that layout rather than gain a splash. The five URL-rewrite redirects in
32+
`AppContent` are excluded for the same reason.

‎.changeset/6661-app-launcher-nav-menu-renderers.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ and neither issues a request or touches an adapter:
3636
from `resolveActiveNavItem`, and the item-level guards (`visible`,
3737
`requiredPermissions`, `requiresObject` / `requiresService`) in the order
3838
`NavigationItemRenderer` applies them, wired to the same console providers
39-
`AppSidebar` wires them to. `action` items dispatch through
39+
`UnifiedSidebar` wires them to. `action` items dispatch through
4040
`useNavActionDispatch`, so framework#4509's "renders but dead-clicks" shape is
4141
not reintroduced.
4242

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
'@object-ui/components': patch
3+
'@object-ui/i18n': patch
4+
---
5+
6+
The record form now tells the user when a `visibleWhen` transition clears a field
7+
(objectui#8070, ruling letter A).
8+
9+
Since objectui#6958 a field whose own `visibleWhen` / `visibleOn` turns it
10+
invisible while it holds a value has that value cleared, so the server does not
11+
refuse the row over a column that is no longer on screen. That clear was silent:
12+
the field disappeared and nothing said a stored value went with it. The ruling
13+
on objectui#8070 ports the naming half of the objectui#6499 ruling to this
14+
surface, and the clear itself is unchanged.
15+
16+
- When a transition clears one or more fields, the form raises one notice that
17+
names them by the labels the form draws, joined by the locale's
18+
`validation.formInvalidJoiner`, and says they no longer apply given the
19+
current values. A field that was already empty is not named (an unchecked
20+
two-state control counts as empty), and neither is the first render of a
21+
record, which only records the baseline.
22+
- The notice is published under the form's outcome-toast id. A later submit
23+
refusal replaces it, and the next attempt that passes client validation
24+
dismisses it, like the form's other outcome messages.
25+
- When a clear hides a second field whose `visibleWhen` reads the field just
26+
cleared, the notice names both. Any edit in between starts a new list.
27+
- `@object-ui/i18n` adds one key, `form.clearedOnHide`, to all ten packs. The
28+
form's built-in fallback table carries its `en` text for a form rendered
29+
without an `I18nProvider`.

‎.changeset/appsidebar-deprecated-5720.md‎

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,19 @@
22
'@object-ui/app-shell': patch
33
---
44

5-
`AppSidebar` is now `@deprecated` — use `UnifiedSidebar` instead.
5+
`AppSidebar` was marked `@deprecated` in favour of `UnifiedSidebar`
6+
(objectui#5720), and objectui#5817 then removed it from `@object-ui/app-shell`.
7+
The two changes publish together; the removal's own entry carries the migration
8+
detail.
69

7-
A census (objectui#5720) found `AppSidebar` has no in-repo mount point
10+
A census (objectui#5720) found `AppSidebar` had no in-repo mount point
811
(`ConsoleLayout` renders `UnifiedSidebar`, not this component) and no
912
downstream consumer visible anywhere across this org's GitHub-visible
10-
repositories. It stays exported — from the package barrel and the published
11-
`dist/index.d.ts` — because `@object-ui/app-shell` is a public npm package
12-
(`publishConfig.access: "public"`) and an external consumer outside this org
13-
is structurally invisible to that census; that is why it is deprecated
14-
rather than deleted outright. No behavior change in this release — the
15-
component still renders exactly as before. Its admin nav cluster is a
16-
near-duplicate of `UnifiedSidebar`'s and has already drifted from it (it
17-
gates only `sys-marketplace` on the workspace-admin flag, where
18-
`UnifiedSidebar` gates the whole cluster); that divergence is not being
19-
reconciled, since the component is scheduled for removal rather than kept
20-
in parity — see objectui#5817 for the removal plan.
13+
repositories. It was deprecated rather than deleted at first because
14+
`@object-ui/app-shell` is a public npm package (`publishConfig.access: "public"`)
15+
and an external consumer outside this org is structurally invisible to that
16+
census; the maintainer then ruled that the removal need not wait for a major
17+
release.
2118

2219
Migration: replace any `AppSidebar` usage with `UnifiedSidebar` from the same
2320
package.

‎apps/console/src/AppContent.tsx‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ function MetadataRedirect() {
105105
* (User/Role/Permission/Audit/Org) … these objects are now contributed by
106106
* framework plugins (plugin-auth, -security, -audit) into the Setup app
107107
* navigation and resolved via the generic /apps/setup/<object_name> route."
108-
* The pages went; the URLs did not — both sidebars' `sys-*` cluster still
108+
* The pages went; the URLs did not — `UnifiedSidebar`'s `sys-*` cluster still
109109
* emits three of them (`users`, `organizations`, `roles`), bookmarks carry all
110110
* five. Until objectui#3743 retired it, the system hub's card wall was the
111111
* in-app producer of the other two (`positions`, `permissions`); those two now
@@ -161,10 +161,10 @@ function SystemObjectRedirect({ objectName }: { objectName: string }) {
161161
* had to be copied into it by hand, and the retirement ruling lists the repair
162162
* rounds it needed for drifting (objectui#3670, #3679, #3680, #3686, #3655).
163163
* objectui#3743 retired it. The
164-
* URL stays, because app-shell sends users here: both sidebars' `sys-settings`
165-
* entry, the zero-app empty state's "System Settings" button, the home Quick
166-
* Action, the sidebar header and user menu, and the legacy `/system` bookmark
167-
* redirect all target `/apps/setup/system`.
164+
* URL stays, because app-shell sends users here: `UnifiedSidebar`'s
165+
* `sys-settings` entry, the zero-app empty state's "System Settings" button,
166+
* the home Quick Action and the legacy `/system` bookmark redirect all target
167+
* `/apps/setup/system`.
168168
*
169169
* WHERE it lands is read off the navigation, not chosen here. `system/settings`
170170
* is the one system entry that all three navigations declared when this

‎apps/console/src/__tests__/AppContent.systemHubRoutes.test.tsx‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -349,10 +349,13 @@ describe('system-hub entries reach the framework system objects (objectui#3655)'
349349

350350
describe('zero-app branch — measured, not asserted away (objectui#3655)', () => {
351351
/**
352-
* The sidebars' `sys-*` cluster renders ONLY when there is no active app, so
353-
* this is the branch its Users / Organizations / Roles entries are clicked
354-
* in. `AppContent`'s no-active-app route table declares no `:objectName`
355-
* route, so the redirect target leaves the pseudo-route family
352+
* On a zero-app deployment this is the branch the sidebar's Users /
353+
* Organizations / Roles entries are clicked into: `UnifiedSidebar`'s `/home`
354+
* Administration cluster carries all three, and `/apps/setup` has no active
355+
* app there. (The since-removed `AppSidebar` rendered its own `sys-*` cluster
356+
* ONLY in that state; objectui#5817.) `AppContent`'s no-active-app route
357+
* table declares no `:objectName` route, so the redirect target leaves the
358+
* pseudo-route family
356359
* (`isSystemRoute` keys on a `system` path segment) and falls into the "No
357360
* Apps Configured" guard.
358361
*

‎apps/console/src/pages/system/AppManagementPage.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export function AppManagementPage() {
123123
*
124124
* `t` is passed on deliberately: an app's `label` may be objectui's KEYED
125125
* form (`{ key, defaultValue }`), and the resolver only reaches the pack when
126-
* it is handed a translator — the same call shape `AppSidebar` and
126+
* it is handed a translator — the same call shape `AppSwitcher` and
127127
* `DashboardView` already use. Without it a keyed label renders its authoring
128128
* `defaultValue` on every locale; interpolating `app.label` directly (what
129129
* these labels did before this page was keyed) renders `[object Object]`.

0 commit comments

Comments
 (0)