pin the app types on the four locked screens that had none
The allow-list existed on fourteen screens and was missing from every other one, which the previous commit turned from fifty lines into one. These four are locked — the user cannot change what is in the panel — so an appType that stops resolving strands them on the empty teal box in PanelSlot with no picker and no way back. Checked against what is actually persisted rather than against the defaults: `screens/desktop` holds `officerdev/desktop` and `screens/files` holds `officerdev/file-browser`, both already inside the list they are now being given. `screens/terminal` and `screens/dashboards` have no row at all — those screens have never been opened on this machine — so they seed from the default, which also matches. Nothing is rewritten by this. Browser and Email stay unguarded on purpose. Their panels resolve through `components`, which PanelSlot keys on the *panel id*, and their layouts carry `appType: null` — the app type is never consulted, so pinning it would pin nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,7 @@ export const DashboardsScreen = () => {
|
||||
<WorkspaceView
|
||||
workspace={workspace}
|
||||
locked
|
||||
appTypes={{ allowed: ['dashboard-list', 'dashboard-preview'], fallback: 'dashboard-preview' }}
|
||||
mobilePanelId={mobilePanelId}
|
||||
onMobilePanelChange={(id) => {
|
||||
if (!id)
|
||||
|
||||
@@ -8,7 +8,11 @@ export const DesktopScreen = () => {
|
||||
|
||||
return (
|
||||
<div className="h-full w-full">
|
||||
<WorkspaceView workspace={workspace} locked />
|
||||
<WorkspaceView
|
||||
workspace={workspace}
|
||||
locked
|
||||
appTypes={{ allowed: ['officerdev/desktop'], fallback: 'officerdev/desktop' }}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -9,7 +9,14 @@ export const FilesScreen = () => {
|
||||
|
||||
return (
|
||||
<div className="h-full w-full">
|
||||
<WorkspaceView workspace={workspace} locked ephemeral={ephemeral} />
|
||||
{/* The file-viewer panels `ephemeral` adds are a layout of their own, rendered beside this one —
|
||||
they never enter `workspace.value`, so the allow-list does not have to know about them. */}
|
||||
<WorkspaceView
|
||||
workspace={workspace}
|
||||
locked
|
||||
appTypes={{ allowed: ['officerdev/file-browser'], fallback: 'officerdev/file-browser' }}
|
||||
ephemeral={ephemeral}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -8,7 +8,11 @@ export const TerminalScreen = () => {
|
||||
|
||||
return (
|
||||
<div className="h-full w-full">
|
||||
<WorkspaceView workspace={workspace} locked />
|
||||
<WorkspaceView
|
||||
workspace={workspace}
|
||||
locked
|
||||
appTypes={{ allowed: ['officerdev/terminal'], fallback: 'officerdev/terminal' }}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user