Implement activity log (task 22)
- activity_log table in _core/schema.ts with household+created_at index; migration 0008_activity_log.sql applied - logActivity() in _core/activity.ts reads current session and inserts a row - ActivityLogEntry type + renderActivity?(entry): string added to EntityTypeRegistration so modules declare human-readable labels without any if/else branches in the widget - core.activity widget replaced with a real async server component that queries the last 20 rows and renders via the registry - logActivity wired into every create/update/delete in calendar, lists, and notes server actions; getAuthorizedItem also returns text so toggle/delete can include item text in the payload - pnpm typecheck, lint, build, and all 4 E2E specs pass Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
1133fa8aac
commit
28475e483d
@@ -1,6 +1,17 @@
|
||||
import type { ReactNode } from "react";
|
||||
import type { ZodType } from "zod";
|
||||
|
||||
export type ActivityLogEntry = {
|
||||
id: string;
|
||||
householdId: string;
|
||||
entityType: string;
|
||||
entityId: string;
|
||||
actorId: string;
|
||||
action: string;
|
||||
payload: Record<string, unknown> | null;
|
||||
createdAt: Date;
|
||||
};
|
||||
|
||||
export type ShareCapabilities = {
|
||||
canShare: boolean;
|
||||
defaultCapabilities?: string[];
|
||||
@@ -58,6 +69,7 @@ export type EntityTypeRegistration = {
|
||||
search?: SearchAdapter;
|
||||
resolveUrl: (id: string) => string;
|
||||
loadForShare?: (id: string) => Promise<unknown>;
|
||||
renderActivity?: (entry: ActivityLogEntry) => string;
|
||||
};
|
||||
|
||||
export type ModuleManifest = {
|
||||
|
||||
Reference in New Issue
Block a user