Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Unreleased

### Features
- Restyle the dashboard to match befailproof.ai and drop light mode entirely. Palette swaps from deep-navy + sky-blue to near-black `#0a0a0a` + cyan-500 `#06b6d4` with a sharper `0.5rem` radius — the change cascades through the existing `@theme inline` CSS variables in `app/globals.css` since every page consumes `bg-background` / `text-foreground` / etc. via theme tokens. Geist Mono is wired via `next/font/google` as `--font-mono`, a faint cyan radial vignette via `body::before` lifts the near-black canvas, the navbar swaps the Exosphere icon + "Failproof AI" text combo for the failproof wordmark image from the CDN (same asset as the README hero in #321), CLI badges shift to `font-mono uppercase tracking-wider`, and `Button`'s primary variant gains a `hover:shadow-[0_0_0_1px_var(--primary)]` cyan selection ring. Removes `contexts/ThemeContext.tsx`, `components/theme-toggle.tsx`, `components/logo.tsx`, the `<ThemeProvider>` wrapper, the `localStorage`-keyed pre-paint `<script>` and inline `<style>` blocks in `app/layout.tsx` (now `<html className="… dark">` is rendered statically — strict-CSP friendly), the `.light { ... }` block in `globals.css`, the obsolete `public/exospheresmall*.png` assets, and the `## Theme` section in `docs/dashboard.mdx`. Also fixes the `entry-highlight` keyframe to use `color-mix(in oklch, …)` since the prior `hsl(var(--primary) / …)` form did not work against a hex CSS variable, so the row-click highlight didn't actually paint (#332).
- `scripts/launch.ts`: redesign the dashboard-startup ASCII banner to mirror the hosted PNG wordmark — hand-crafted chunky pixel-block lowercase "failproof ai" compressed with Unicode 2x2 quadrant block characters (▖▗▘▙▚▛▜▝▞▟ + ▀ ▄ █ ▌ ▐) and horizontally scaled 4:3 so the full wordmark fits in ~75 cols × ~10 rows (clean on any standard ≥80-col terminal), with a plain-text fallback for narrower windows. Also drops the "Using default .claude projects path: …" log line at startup — it printed unconditionally on every dashboard launch and added no signal (#322).
- Remove the undocumented `--projects-path <path>` / `-p <path>` CLI flag from `scripts/parse-script-args.ts` and the corresponding plumbing in `scripts/launch.ts` (custom-path branch + log line + spawn-env override). Custom Claude project folders can still be pointed at via the `CLAUDE_PROJECTS_PATH` environment variable, which `lib/paths.ts:getClaudeProjectsPath` already honors. `docs/cli/dashboard.mdx` updated to reflect the env-var-only path; tests in `__tests__/scripts/parse-script-args.test.ts` trimmed to drop the 6 cases that exercised the removed flag (#322).

Expand Down
2 changes: 1 addition & 1 deletion __tests__/components/button.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ describe("Button", () => {
render(<Button variant="outline">Outline</Button>);
const btn = screen.getByText("Outline");
expect(btn.className).toContain("border");
expect(btn.className).toContain("bg-background");
expect(btn.className).toContain("bg-transparent");
});

it("applies correct classes for icon size", () => {
Expand Down
48 changes: 0 additions & 48 deletions __tests__/components/theme-context.test.tsx

This file was deleted.

64 changes: 0 additions & 64 deletions __tests__/components/theme-toggle.test.tsx

This file was deleted.

7 changes: 1 addition & 6 deletions __tests__/helpers/test-utils.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import React from "react";
import { render, type RenderOptions } from "@testing-library/react";
import { ThemeProvider } from "@/contexts/ThemeContext";
import { AutoRefreshProvider } from "@/contexts/AutoRefreshContext";

function Providers({ children }: { children: React.ReactNode }) {
return (
<ThemeProvider>
<AutoRefreshProvider>{children}</AutoRefreshProvider>
</ThemeProvider>
);
return <AutoRefreshProvider>{children}</AutoRefreshProvider>;
}

export function renderWithProviders(
Expand Down
2 changes: 1 addition & 1 deletion app/components/cli-badge.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export function CliBadge({ cli }: { cli: ProjectCli }) {
const classes = getCliBadgeClasses(cli);
return (
<span
className={`inline-flex items-center rounded px-1.5 py-0.5 text-[0.6rem] font-medium border ${classes}`}
className={`inline-flex items-center rounded px-1.5 py-0.5 text-[0.6rem] font-mono font-medium uppercase tracking-wider border ${classes}`}
title={`Agent CLI: ${label}`}
>
{label}
Expand Down
Loading