@@ -102,29 +101,24 @@ export function EntityActivity({ entityType, entityId, limit }: EntityActivityPr
const items = data?.items ?? [];
return (
-
);
}
diff --git a/apps/web/src/components/entities/entity-comments.tsx b/apps/web/src/components/entities/entity-comments.tsx
index 425dc14..91ef415 100644
--- a/apps/web/src/components/entities/entity-comments.tsx
+++ b/apps/web/src/components/entities/entity-comments.tsx
@@ -5,7 +5,6 @@ import { toast } from "sonner";
import { formatDistanceToNow, parseISO } from "date-fns";
import { Avatar, AvatarFallback } from "@/components/ui/avatar";
import { Button } from "@/components/ui/button";
-import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Textarea } from "@/components/ui/textarea";
import { ErrorState, LoadingState } from "@/components/state";
import { api, useApiMutation, useApiQuery } from "@/lib/api";
@@ -166,7 +165,7 @@ function CommentThread({ node, onDelete, deletePending }: CommentThreadProps) {
{comment.author}
-
+
{formatDistanceToNow(parseISO(comment.createdAt), { addSuffix: true })}
@@ -250,37 +249,32 @@ export function EntityComments({ entityType, entityId }: EntityCommentsProps) {
const tree = useMemo(() => buildCommentTree(data?.items ?? []), [data?.items]);
return (
-
-
- Comments
-
-
-
- {isLoading ? : null}
- {isError ? (
- refetch()}
- />
- ) : null}
- {!isLoading && !isError && tree.length === 0 ? (
-
- No comments yet — start the conversation.
-
- ) : null}
- {!isLoading && !isError && tree.length > 0 ? (
-
- {tree.map((node) => (
- deleteMutation.mutate(id)}
- deletePending={deleteMutation.isPending}
- />
- ))}
-
- ) : null}
-
-
+
+
+ {isLoading ?
: null}
+ {isError ? (
+
refetch()}
+ />
+ ) : null}
+ {!isLoading && !isError && tree.length === 0 ? (
+
+ No comments yet — start the conversation.
+
+ ) : null}
+ {!isLoading && !isError && tree.length > 0 ? (
+
+ {tree.map((node) => (
+ deleteMutation.mutate(id)}
+ deletePending={deleteMutation.isPending}
+ />
+ ))}
+
+ ) : null}
+
);
}
diff --git a/apps/web/src/components/entities/tag-manager.tsx b/apps/web/src/components/entities/tag-manager.tsx
index f0e8513..d89c77c 100644
--- a/apps/web/src/components/entities/tag-manager.tsx
+++ b/apps/web/src/components/entities/tag-manager.tsx
@@ -6,14 +6,15 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@
import { X } from "lucide-react";
import type { Tag, PaginatedResponse } from "@/lib/types";
-const ENTITY_ROUTES: Record<"task" | "habit" | "note", string> = {
+const ENTITY_ROUTES: Record<"task" | "habit" | "note" | "project", string> = {
task: "tasks",
habit: "habits",
note: "notes",
+ project: "projects",
};
interface TagManagerProps {
- entityType: "task" | "habit" | "note";
+ entityType: "task" | "habit" | "note" | "project";
entityId: string;
tags: Tag[];
}
diff --git a/apps/web/src/components/shell/command-palette.tsx b/apps/web/src/components/shell/command-palette.tsx
index 5c9e73b..14024fa 100644
--- a/apps/web/src/components/shell/command-palette.tsx
+++ b/apps/web/src/components/shell/command-palette.tsx
@@ -14,8 +14,9 @@ import {
Search,
Sun,
Moon,
- Palette,
LogOut,
+ Inbox,
+ FileBarChart,
type LucideIcon,
} from "lucide-react";
import {
@@ -27,7 +28,7 @@ import {
CommandList,
CommandSeparator,
} from "@/components/ui/command";
-import { useThemeStore, type AccentColor, ACCENT_PALETTE } from "@/lib/stores/use-theme-store";
+import { useThemeStore } from "@/lib/stores/use-theme-store";
import { useCreateDialogStore } from "@/lib/stores/use-create-dialog-store";
import { useApiDomain } from "@/lib/stores/use-active-domain-store";
@@ -38,6 +39,7 @@ interface NavItem {
}
const navItems: NavItem[] = [
+ { label: "Inbox", href: "/inbox", icon: Inbox },
{ label: "Dashboard", href: "/", icon: LayoutDashboard },
{ label: "Tasks", href: "/tasks", icon: ListTodo },
{ label: "Habits", href: "/habits", icon: Flame },
@@ -45,6 +47,8 @@ const navItems: NavItem[] = [
{ label: "Notes", href: "/notes", icon: NotebookPen },
{ label: "Graph", href: "/graph", icon: Share2 },
{ label: "Calendar", href: "/calendar", icon: CalendarDays },
+ { label: "Analytics", href: "/analytics", icon: LayoutDashboard },
+ { label: "Reports", href: "/reports", icon: FileBarChart },
{ label: "Agent Activity", href: "/agents/activity", icon: Bot },
{ label: "Settings", href: "/settings", icon: Settings },
];
@@ -73,7 +77,7 @@ function addRecentPage(href: string) {
export function CommandPalette() {
const navigate = useNavigate();
const location = useLocation();
- const { mode, setMode, accent, setAccent } = useThemeStore();
+ const { mode, setMode } = useThemeStore();
const activeDomainId = useApiDomain();
const [open, setOpen] = useState(false);
const [searchResults, setSearchResults] = useState<
@@ -152,13 +156,6 @@ export function CommandPalette() {
icon: mode === "dark" ? Sun : Moon,
action: () => setMode(mode === "dark" ? "light" : "dark"),
},
- ...(Object.entries(ACCENT_PALETTE) as [AccentColor, { name: string; hsl: string }][]).map(
- ([key, val]) => ({
- label: `Accent: ${val.name}`,
- icon: Palette,
- action: () => setAccent(key),
- })
- ),
];
// Settings actions
diff --git a/apps/web/src/components/shell/shortcuts-help.tsx b/apps/web/src/components/shell/shortcuts-help.tsx
index 3cf698a..c902094 100644
--- a/apps/web/src/components/shell/shortcuts-help.tsx
+++ b/apps/web/src/components/shell/shortcuts-help.tsx
@@ -10,6 +10,7 @@ import {
const shortcutGroups = [
{
heading: "Navigation",
+ color: "text-blue-500",
shortcuts: [
{ keys: "g then d", description: "Go to Dashboard" },
{ keys: "g then t", description: "Go to Tasks" },
@@ -23,6 +24,7 @@ const shortcutGroups = [
},
{
heading: "Create",
+ color: "text-amber-500",
shortcuts: [
{ keys: "n then t", description: "New task" },
{ keys: "n then h", description: "New habit" },
@@ -33,6 +35,7 @@ const shortcutGroups = [
},
{
heading: "General",
+ color: "text-muted-foreground",
shortcuts: [
{ keys: "⌘K / Ctrl+K", description: "Open command palette" },
{ keys: "/", description: "Open command palette" },
@@ -43,6 +46,7 @@ const shortcutGroups = [
},
{
heading: "Command Palette",
+ color: "text-muted-foreground",
shortcuts: [
{ keys: "↑↓", description: "Navigate items" },
{ keys: "Enter", description: "Select item" },
@@ -62,24 +66,24 @@ export function ShortcutsHelp() {
return (