{{ formatExpiresAt(value) }}
@@ -509,6 +512,7 @@ const ACCOUNT_SORTABLE_KEYS = new Set([
'priority',
'rate_multiplier',
'last_used_at',
+ 'created_at',
'expires_at'
])
const loadInitialAccountSortState = (): AccountSortState => {
@@ -1127,6 +1131,7 @@ const allColumns = computed(() => {
{ key: 'priority', label: t('admin.accounts.columns.priority'), sortable: true },
{ key: 'rate_multiplier', label: t('admin.accounts.columns.billingRateMultiplier'), sortable: true },
{ key: 'last_used_at', label: t('admin.accounts.columns.lastUsed'), sortable: true },
+ { key: 'created_at', label: t('admin.accounts.columns.createdAt'), sortable: true },
{ key: 'expires_at', label: t('admin.accounts.columns.expiresAt'), sortable: true },
{ key: 'notes', label: t('admin.accounts.columns.notes'), sortable: false },
{ key: 'actions', label: t('admin.accounts.columns.actions'), sortable: false }
diff --git a/frontend/src/views/admin/__tests__/AccountsView.bulkEdit.spec.ts b/frontend/src/views/admin/__tests__/AccountsView.bulkEdit.spec.ts
index 112baf22..ed53a9e5 100644
--- a/frontend/src/views/admin/__tests__/AccountsView.bulkEdit.spec.ts
+++ b/frontend/src/views/admin/__tests__/AccountsView.bulkEdit.spec.ts
@@ -63,7 +63,14 @@ vi.mock('vue-i18n', async () => {
const DataTableStub = {
props: ['columns', 'data'],
- template: '
'
+ template: `
+
+
{{ column.key }}
+
+
+
+
+ `
}
const AccountBulkActionsBarStub = {
@@ -149,4 +156,72 @@ describe('admin AccountsView bulk edit scope', () => {
expect(wrapper.get('[data-test="bulk-edit-modal"]').attributes('data-show')).toBe('true')
expect(wrapper.get('[data-test="bulk-edit-modal"]').attributes('data-target-mode')).toBe('filtered')
})
+
+ it('renders the created_at column by default', async () => {
+ listAccounts.mockResolvedValue({
+ items: [
+ {
+ id: 1,
+ name: 'test-account',
+ platform: 'anthropic',
+ type: 'oauth',
+ status: 'active',
+ schedulable: true,
+ created_at: '2026-03-07T10:00:00Z',
+ updated_at: '2026-03-07T10:00:00Z'
+ }
+ ],
+ total: 1,
+ page: 1,
+ page_size: 20,
+ pages: 1
+ })
+
+ const wrapper = mount(AccountsView, {
+ global: {
+ stubs: {
+ AppLayout: { template: '
' },
+ TablePageLayout: {
+ template: '
'
+ },
+ DataTable: DataTableStub,
+ Pagination: true,
+ ConfirmDialog: true,
+ AccountTableActions: { template: '
' },
+ AccountTableFilters: { template: '
' },
+ AccountBulkActionsBar: AccountBulkActionsBarStub,
+ AccountActionMenu: true,
+ ImportDataModal: true,
+ ReAuthAccountModal: true,
+ AccountTestModal: true,
+ AccountStatsModal: true,
+ ScheduledTestsPanel: true,
+ SyncFromCrsModal: true,
+ TempUnschedStatusModal: true,
+ ErrorPassthroughRulesModal: true,
+ TLSFingerprintProfilesModal: true,
+ CreateAccountModal: true,
+ EditAccountModal: true,
+ BulkEditAccountModal: BulkEditAccountModalStub,
+ PlatformTypeBadge: true,
+ AccountCapacityCell: true,
+ AccountStatusIndicator: true,
+ AccountTodayStatsCell: true,
+ AccountGroupsCell: true,
+ AccountUsageCell: true,
+ Icon: true
+ }
+ }
+ })
+
+ await flushPromises()
+
+ const columnKeys = wrapper.findAll('[data-test="column-key"]').map(node => node.text())
+ expect(columnKeys).toContain('created_at')
+ const columns = wrapper.getComponent(DataTableStub).props('columns') as Array<{ key: string; label: string; sortable: boolean }>
+ expect(columns.find(column => column.key === 'created_at')).toMatchObject({
+ label: 'admin.accounts.columns.createdAt',
+ sortable: true
+ })
+ })
})