Problem
The audit log page fetches the log with no `limit`/offset parameter:
```ts
const { data } = useAsync(() => api("/audit"), []);
```
The API defaults `limit` to 100 (capped at 500) when none is supplied:
```ts
const limit = Number.isInteger(limitParam) && limitParam > 0 ? Math.min(limitParam, 500) : 100;
```
There is no "load more" control, no offset-based pagination, and no filter by action/admin/date on the page, and no indication in the UI when the returned set has been truncated.
Impact
The audit log exists specifically so admins can investigate "every mutating admin action, newest first." Once an install accumulates more than 100 audit entries, anything older simply becomes invisible with no way to page back to it and no signal that older entries exist — a silent truncation that undermines the log's purpose during an incident investigation.
Location
`app/admin/audit/page.tsx:19-20`, `app/api/admin/audit/route.ts:12-13`
Suggested fix
Add offset/cursor-based "load more" pagination to the audit page (the API already supports `limit`, so add an `offset`/`before` cursor param), and show a hint when the page's row count equals the requested limit (implying more rows may exist).
Problem
The audit log page fetches the log with no `limit`/offset parameter:
```ts
const { data } = useAsync(() => api("/audit"), []);
```
The API defaults `limit` to 100 (capped at 500) when none is supplied:
```ts
const limit = Number.isInteger(limitParam) && limitParam > 0 ? Math.min(limitParam, 500) : 100;
```
There is no "load more" control, no offset-based pagination, and no filter by action/admin/date on the page, and no indication in the UI when the returned set has been truncated.
Impact
The audit log exists specifically so admins can investigate "every mutating admin action, newest first." Once an install accumulates more than 100 audit entries, anything older simply becomes invisible with no way to page back to it and no signal that older entries exist — a silent truncation that undermines the log's purpose during an incident investigation.
Location
`app/admin/audit/page.tsx:19-20`, `app/api/admin/audit/route.ts:12-13`
Suggested fix
Add offset/cursor-based "load more" pagination to the audit page (the API already supports `limit`, so add an `offset`/`before` cursor param), and show a hint when the page's row count equals the requested limit (implying more rows may exist).