Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions src/app/(app)/today/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,10 @@ import { StuckGoalsCard } from "@/components/today/StuckGoalsCard";
import { LockedZoneBanner } from "@/components/today/LockedZoneBanner";
import { TodayWatch } from "@/components/today/TodayWatch";
import { LayoutGrid } from "lucide-react";
import { APP_NAME } from "@/config/brand";
import { LokiDispatchButton } from "@/components/shared/LokiDispatchButton";
import { requirePageUserId, getCurrentUserName } from "@/lib/session";
import { getUserProjects, getOrgProjects } from "@/db/queries/user-projects";
import { PLAN_DAY_PROMPT, WRAP_UP_PROMPT } from "@/lib/constants/today";
import { FIRST_RUN, PLAN_DAY_PROMPT, WRAP_UP_PROMPT } from "@/lib/constants/today";
import { PullToRefresh } from "@/components/shared/PullToRefresh";
import { AutoRefresh } from "@/components/shared/AutoRefresh";
import { REFRESH_CADENCE } from "@/config/refresh";
Expand Down Expand Up @@ -79,16 +78,16 @@ export default async function TodayPage() {
<div className="ui-callout-accent mt-4">
<LayoutGrid className="mt-0.5 h-5 w-5 shrink-0 text-accent-text" />
<div className="min-w-0 flex-1">
<p className="font-medium text-text-primary">Register your first project to get started</p>
<p className="mt-0.5 text-sm text-text-secondary">
{APP_NAME} tracks your AI agent sessions, git state, and progress across projects — add one to the control panel to unlock the fleet view.
</p>
<p className="font-medium text-text-primary">{FIRST_RUN.title}</p>
<p className="mt-0.5 text-sm text-text-secondary">{FIRST_RUN.body}</p>
<Link href={NAV.control.href} className="mt-3 inline-flex items-center min-h-11 sm:min-h-0 gap-1.5 text-sm font-medium text-accent-text hover:opacity-80 transition-opacity">
Go to Control Panel
{FIRST_RUN.cta}
</Link>
</div>
</div>
)}
{!isFirstRun && (
<>
<Suspense fallback={<div className="mt-2"><SummaryBarSkeleton /></div>}>
<div className="mt-2">
<SummaryBar />
Expand All @@ -113,8 +112,12 @@ export default async function TodayPage() {
<LogConversationButton />
<QuickCaptureButton />
</div>
</>
)}
</div>

{!isFirstRun && (
<>
<Suspense fallback={null}>
<LockedZoneBanner />
</Suspense>
Expand Down Expand Up @@ -175,6 +178,8 @@ export default async function TodayPage() {
</Suspense>
</div>
<AutoRefresh intervalMs={REFRESH_CADENCE.today} />
</>
)}
</div>
</PullToRefresh>
);
Expand Down
7 changes: 7 additions & 0 deletions src/lib/constants/today.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ export const CALENDAR_LOOKAHEAD_DAYS = 2;
// Location used by the weather widget.
export const WEATHER_CITY = "Zurich";

/** Zero-project Today: one action, no empty-card wall. */
export const FIRST_RUN = {
title: "Add a project.",
body: "Then you can tell the fleet what to do.",
cta: "Open Control",
} as const;

export const PLAN_DAY_PROMPT = `Plan my day.

Check in ${APP_NAME} and the codebase:
Expand Down
Loading