Skip to content

Commit 8486c41

Browse files
committed
feat(dashboard): drop region column from box table; full image refs in onboarding
- BoxTable: remove the Region column from the desktop table and the Region entry from the compact mobile meta. The box table no longer surfaces region. - Remove the now-unused getRegionName plumbing from the box-table path (Boxes page, BoxTable, useBoxTable, columns, types) and the stale 'region' entry from persisted column visibility. useRegions/getRegionName stay in place for the other consumers (Runners, Org Settings, Box details). - onboarding-code-examples: use the fully-qualified image reference ghcr.io/boxlite-ai/boxlite-agent-base:20260605-p0-r3 across all four SDK snippets (JS/TS, Python, Go, Rust) instead of the short 'boxlite/base'.
1 parent a1740c6 commit 8486c41

6 files changed

Lines changed: 7 additions & 38 deletions

File tree

apps/dashboard/src/components/BoxTable/columns.tsx

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ interface GetColumnsProps {
5252
handleCreateSshAccess: (id: string) => void
5353
handleRevokeSshAccess: (id: string) => void
5454
handleRecover: (id: string) => void
55-
getRegionName: (regionId: string) => string | undefined
5655
handleScreenRecordings: (id: string) => void
5756
}
5857

@@ -67,7 +66,6 @@ export function getColumns({
6766
handleCreateSshAccess,
6867
handleRevokeSshAccess,
6968
handleRecover,
70-
getRegionName,
7169
handleScreenRecordings,
7270
}: GetColumnsProps): ColumnDef<Box>[] {
7371
const handleOpenWebTerminal = async (boxId: string) => {
@@ -170,23 +168,6 @@ export function getColumns({
170168
),
171169
accessorKey: 'state',
172170
},
173-
{
174-
id: 'region',
175-
size: 80,
176-
enableSorting: true,
177-
enableHiding: false,
178-
header: ({ column }) => {
179-
return <SortableHeader column={column} label="Region" dataState="sortable" />
180-
},
181-
cell: ({ row }) => {
182-
return (
183-
<div className="w-full truncate">
184-
<span className="truncate block">{getRegionName(row.original.target) ?? row.original.target}</span>
185-
</div>
186-
)
187-
},
188-
accessorKey: 'target',
189-
},
190171
{
191172
id: 'resources',
192173
size: 230,

apps/dashboard/src/components/BoxTable/index.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ export function BoxTable({
4545
boxIsLoading,
4646
boxStateIsTransitioning,
4747
loading,
48-
getRegionName,
4948
handleStart,
5049
handleStop,
5150
handleDelete,
@@ -96,7 +95,6 @@ export function BoxTable({
9695
filters,
9796
onFiltersChange,
9897
handleRecover,
99-
getRegionName,
10098
})
10199

102100
const [pendingBulkAction, setPendingBulkAction] = useState<BulkAction | null>(null)
@@ -233,7 +231,6 @@ export function BoxTable({
233231
</div>
234232

235233
<div className="grid grid-cols-1 gap-x-5 gap-y-3 text-xs sm:grid-cols-2 xl:grid-cols-4">
236-
<CompactBoxMeta label="Region">{getRegionName(box.target) ?? box.target}</CompactBoxMeta>
237234
<CompactBoxMeta label="Resources">
238235
<div className="flex flex-wrap gap-1">
239236
<ResourceChip resource="cpu" value={box.cpu} />

apps/dashboard/src/components/BoxTable/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ export interface BoxTableProps {
2020
boxIsLoading: Record<string, boolean>
2121
boxStateIsTransitioning: Record<string, boolean>
2222
loading: boolean
23-
getRegionName: (regionId: string) => string | undefined
2423
handleStart: (id: string) => void
2524
handleStop: (id: string) => void
2625
handleDelete: (id: string) => void

apps/dashboard/src/components/BoxTable/useBoxTable.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ interface UseBoxTableProps {
4848
filters: BoxFilters
4949
onFiltersChange: (filters: BoxFilters) => void
5050
handleRecover: (id: string) => void
51-
getRegionName: (regionId: string) => string | undefined
5251
}
5352

5453
export function useBoxTable({
@@ -71,19 +70,18 @@ export function useBoxTable({
7170
filters,
7271
onFiltersChange,
7372
handleRecover,
74-
getRegionName,
7573
}: UseBoxTableProps) {
7674
// Column visibility state management with persistence
7775
const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(() => {
7876
const saved = getLocalStorageItem(LocalStorageKey.BoxTableColumnVisibility)
7977
if (saved) {
8078
try {
81-
return { ...JSON.parse(saved), id: true, region: true, labels: false }
79+
return { ...JSON.parse(saved), id: true, labels: false }
8280
} catch {
83-
return { id: true, region: true, labels: false }
81+
return { id: true, labels: false }
8482
}
8583
}
86-
return { id: true, region: true, labels: false }
84+
return { id: true, labels: false }
8785
})
8886

8987
useEffect(() => {
@@ -107,7 +105,6 @@ export function useBoxTable({
107105
handleCreateSshAccess,
108106
handleRevokeSshAccess,
109107
handleRecover,
110-
getRegionName,
111108
handleScreenRecordings,
112109
}),
113110
[
@@ -121,7 +118,6 @@ export function useBoxTable({
121118
handleCreateSshAccess,
122119
handleRevokeSshAccess,
123120
handleRecover,
124-
getRegionName,
125121
handleScreenRecordings,
126122
],
127123
)

apps/dashboard/src/lib/onboarding-code-examples.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const rt = JsBoxlite.rest(new BoxliteRestOptions({
2424
credential: new ApiKeyCredential(apiKey),
2525
}))
2626
27-
const box = await rt.create({ image: 'boxlite/base' }, 'sdk-quickstart')
27+
const box = await rt.create({ image: 'ghcr.io/boxlite-ai/boxlite-agent-base:20260605-p0-r3' }, 'sdk-quickstart')
2828
await box.start()
2929
3030
const exec = await box.exec('echo', ['Hello from BoxLite SDK'])
@@ -54,7 +54,7 @@ async def main():
5454
credential=ApiKeyCredential(os.environ["BOXLITE_API_KEY"]),
5555
))
5656
57-
box = await rt.create(BoxOptions(image="boxlite/base"), name="sdk-quickstart")
57+
box = await rt.create(BoxOptions(image="ghcr.io/boxlite-ai/boxlite-agent-base:20260605-p0-r3"), name="sdk-quickstart")
5858
await box.start()
5959
6060
execution = await box.exec("echo", args=["Hello from BoxLite SDK"])
@@ -105,7 +105,7 @@ func main() {
105105
}
106106
defer rt.Close()
107107
108-
box, err := rt.Create(ctx, "boxlite/base", boxlite.WithName("sdk-quickstart"))
108+
box, err := rt.Create(ctx, "ghcr.io/boxlite-ai/boxlite-agent-base:20260605-p0-r3", boxlite.WithName("sdk-quickstart"))
109109
if err != nil {
110110
log.Fatal(err)
111111
}
@@ -143,7 +143,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
143143
)?;
144144
145145
let options = BoxOptions {
146-
rootfs: RootfsSpec::Image("boxlite/base".into()),
146+
rootfs: RootfsSpec::Image("ghcr.io/boxlite-ai/boxlite-agent-base:20260605-p0-r3".into()),
147147
..Default::default()
148148
};
149149
let box_handle = rt.create(options, Some("sdk-quickstart".into())).await?;

apps/dashboard/src/pages/Boxes.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import { useApi } from '@/hooks/useApi'
2929
import { deleteBoxViaBoxApi, startBoxViaBoxApi, stopBoxViaBoxApi } from '@/lib/cloudBox'
3030
import { useConfig } from '@/hooks/useConfig'
3131
import { useNotificationSocket } from '@/hooks/useNotificationSocket'
32-
import { useRegions } from '@/hooks/useRegions'
3332
import {
3433
DEFAULT_BOX_SORTING,
3534
getBoxesQueryKey,
@@ -295,8 +294,6 @@ const Boxes: React.FC = () => {
295294

296295
// TODO(image-rewrite): template/image listing removed with the image/template subsystem.
297296

298-
const { getRegionName } = useRegions()
299-
300297
// Subscribe to Box Events
301298

302299
useEffect(() => {
@@ -857,7 +854,6 @@ const Boxes: React.FC = () => {
857854
filters={filters}
858855
onFiltersChange={handleFiltersChange}
859856
handleRecover={handleRecover}
860-
getRegionName={getRegionName}
861857
handleScreenRecordings={handleScreenRecordings}
862858
headerAction={
863859
authenticatedUserHasPermission(OrganizationRolePermissionsEnum.WRITE_BOXES) ? (

0 commit comments

Comments
 (0)