what the claude — help & feature reference

Everything the dashboard can do, in plain language. Runs entirely in your browser — your transcripts never leave your machine.

New here? what the claude turns your ~/.claude/projects folder into a calendar of when, how long, and on what you worked with Claude Code. Connect the folder once and it stays live.

▸ Try the interactive demo Open the app
Contents
  1. The calendar
  2. Sessions, blocks & time
  3. Decluttering a busy calendar
  4. Session detail view
  5. Counting the right activity
  6. Grouping folders into projects
  7. Profiles
  8. Connecting your data
  9. Parsing transcripts
  10. Saving & portability
  11. Onboarding & cleanup helpers

The calendar #

The core week/month timeline that visualizes when, how long, and on what you worked with Claude.

Week view (7-day hourly grid) #

A Monday-start, 7-column day grid with a 24-hour time axis where each work session renders as a positioned block at its real start/end time; today's column header is highlighted.

How to use: Default view on load, or click the "Week" button in the header view-toggle. Day headers show weekday + date.

Month view (heat overview) #

A Mon-Sun month grid (4-6 week rows) where each in-month day cell shows a stacked mini bar-chart of per-project time plus a daily total and message count; out-of-month days are dimmed and empty days show a dot.

How to use: Click the "Month" button in the header view-toggle.

Week/Month view toggle (persisted) #

A two-button header toggle switches between the hourly week grid and the month overview; the active view is highlighted and remembered across reloads.

How to use: Click "Week" / "Month" in the header.

View-aware navigation (prev / next / Today) #

Arrow buttons and a Today button step the calendar by one week in week view or one month in month view; arrow tooltips update to match the active unit, and Today snaps back to the current period.

How to use: Use the header left/right chevrons and "Today" button.

Month-cell drill-down to week #

Clicking any day cell in month view jumps into the week view containing that day.

How to use: Click a non-empty day cell in Month view.

"NOW" current-time indicator #

In week view, today's column draws a dashed horizontal line with a dot and a "NOW" label at the current local time.

How to use: Automatic on today's column in week view.

Header live stats (sessions / msgs / active hours) #

The header shows a running "N sessions · M msgs · Xh active" summary computed from currently visible sessions (respecting profile/hide filters, source toggles, and the gap setting), mirrored into the drawer header.

How to use: Always visible in the header and under the Filters drawer title; updates live as filters/sources/gap change.

Refresh (reload data + config) #

A header Refresh button re-reads the data source and config, then re-renders. It is hidden when a live watcher is active (updates are already pushed) and shown for polling, no-watcher, or disconnected states.

How to use: Click "Refresh" in the header when visible.

Empty / pre-connect calendar grid #

On boot the app immediately renders the empty week/month grid (before any folder is connected) so it looks alive; disconnect returns to this same grid with the Connect prompt.

How to use: Shown automatically at boot and after disconnect.

Sessions, blocks & how time is measured #

How raw transcripts become meaningful work blocks, and the controls that tune that clustering.

Activity clustering into blocks (pause-driven) #

A project's sessions are pooled by user-message timestamp and split into blocks wherever the gap between consecutive messages exceeds the idle-gap threshold; block bounds extend to cover the true work span (lead-in before the first message through the last response).

How to use: Automatic; tuned via "Idle gap (min)" in the Filters drawer. Each block renders as a card with group name, time range, duration, and message count.

Idle-gap split threshold #

A configurable minute threshold controlling when a continuous run of messages breaks into separate blocks; 0 disables splitting (one block per project). Default 20. Editing it re-clusters live.

How to use: "Idle gap (min)" number input in the Filters drawer (Activity clustering section); a helper paragraph explains the behavior.

Autonomous / Claude-running detection (hatched stripes) #

Within a block, any stretch more than a set number of minutes past your last typed message is flagged as "Claude running on its own" and rendered as diagonal hatched stripes; day totals split into a "you" vs "auto" line.

How to use: "autonomous after (min)" input in the Filters drawer (default 5; 0 disables). Hatched segments appear in blocks; the tooltip shows an "autonomous" duration stat.

User-message tick marks within blocks #

Each individual user message renders as a thin horizontal tick line at its exact timestamp inside its block, colored with the project color; hovering shows the message's exact send time.

How to use: Automatic inside blocks and aggregate cards.

Hide empty (no-message) sessions toggle #

Sessions with zero user messages become "idle" blocks spanning their file-open window; a checkbox (default on) hides these from the calendar and totals. When shown, idle blocks have a distinct empty style and an "idle / No messages" tooltip.

How to use: "hide sessions with no messages" checkbox in the Filters drawer Display section.

Block tooltips (rich session detail) #

Hovering a block shows a styled tooltip: project name, time range + duration, date, and stats (messages, autonomous time, session count, distinct folders, token mix bar with total, git branch). Consolidated blocks list each contributing session's range, branch, tokens, and message count.

How to use: Hover any block; aggregate cards and month-day cells have their own tooltip variants.

Month-view bar stacks with peak normalization #

In month view each day cell stacks up to 4 project bars whose heights are proportional to that project's time, normalized against the month's busiest day; bars fold to "+k" when a day has more than 4 projects.

How to use: Automatic in month view; bars carry "group · duration" tooltips.

Month legend with "+k more" fold #

Month view renders a legend of the top groups active that month (by time) with color swatches and durations, capped at 14 with a "+k more" overflow; shows "// no activity" for empty months.

How to use: Automatic strip above the month grid.

In-context drawer helper explanations #

Each clustering/aggregation control carries an inline tooltip and a short explanatory paragraph describing block spans, the hatched stripes meaning, and the hybrid aggregation layout.

How to use: Open the Filters drawer; hover inputs and read the meta paragraphs.

Decluttering a busy calendar #

Density-aware folding, directory filtering, and in-place hiding to keep packed days legible.

Density-aware aggregation ("+k more" overlap folding) #

When a connected chain of overlapping blocks reaches a configurable overlap depth (default 7; 0 disables), the cluster collapses into a single striped summary card ("N blocks · M groups") instead of unreadable slivers.

How to use: "collapse when overlap depth ≥" input in the Filters drawer (Density-aware aggregation section). Dense clusters show a summary card with "click to expand".

Expand / collapse aggregate clusters #

Clicking an aggregate summary card expands it into individual blocks (with a "↥ collapse (N)" pill to re-fold); a "Collapse all expanded" button resets every expanded cluster at once. Expanded state persists.

How to use: Click an aggregate card to expand; click the collapse pill to re-fold; use "Collapse all expanded" in the Filters drawer.

Working-dirs tree filter (per-week, hide/show) #

The Filters drawer shows a collapsible directory tree of the week's unique folders, each with a color swatch, session count, and optional group label; tri-state checkboxes toggle visibility, with branch toggles cascading to descendants. Hidden folders render struck-through and dimmed and persist into the portable config.

How to use: Open Filters > "Working dirs"; click a node/checkbox to toggle; use Show all / Hide all and the expand/collapse-all buttons.

Block right-click context menu (hide folder / hide group / open detail) #

Right-clicking a block (or aggregate card) opens a terminal-styled menu to open the session detail, hide a specific folder, or hide the whole group; aggregate menus list each contributing group and folder to hide individually. Dismissed by click-away, scroll, resize, or Escape.

How to use: Right-click any block or aggregate card.

Session detail view #

Drill from a calendar block into the raw event stream behind a work session.

Session-detail page #

Clicking a block opens a full-page inspector that lists every event from every session in the block, with a hero summary (group, time span, duration, message count, folder count, tokens, branches, version). The URL is shareable and bookmarkable.

How to use: Click a block (or right-click > "open detail"). Back button, browser back, or Escape closes it and restores the calendar.

Detail event filter chips (kind + source axes) #

Chips filter the event list by kind (real user msgs, assistant, all user, synthetic) and, when agent events exist, by source (main/subagent/workflow); an "all" chip clears everything. Kind and source are combined; counts shown per chip.

How to use: Click chips in the detail event-filter row; the source-chip row appears only when non-main events are present.

Detail session tabs (consolidated blocks) #

When a block consolidates multiple sessions, the detail view shows a tab per session (time span + message count + folder basename) to switch which session's events are displayed.

How to use: Click a session tab in the detail view.

Counting the right activity (sources) #

Choose whether main, subagent, and workflow transcripts count toward your activity picture.

Transcript source toggle (main / agents / workflows) #

A three-button header toggle (all on by default) selects which transcript sources count as activity: main (the human conversation), agents (subagents), and workflows (workflow-agent runs). Toggling re-derives each session's effective activity without re-reading files, and re-renders blocks, stats, and day totals live.

How to use: Click "main" / "agents" / "workflows" in the header; active ones are highlighted. State persists with your config.

Grouping folders into projects #

Turn scattered working directories into named, colored projects via rules, auto-suggestions, drag-and-drop, or right-click.

Full grouping deep-dive →

Prefix grouping rules (longest-prefix-wins, boundary-aware) #

Each session's working directory is matched against prefix rules; the most specific (longest) prefix wins, so an exact path beats a broader ancestor. Matching respects path-segment boundaries, so "/a" never matches "/ab".

How to use: Implicit when you assign a repo root a project name; one rule sweeps in all subfolders while overrides resolve automatically.

Exact-folder & bulk folder assignment #

Assigning a single folder pins just that folder to a project (inheriting its color) even under a broader parent rule; many folders can be assigned at once, each as an exact rule.

How to use: Select a folder (or multi-select several) in the grouping UI and assign to a project.

Detach / eject one folder back to Unassigned #

Unassigning an already-grouped folder drops any exact rule and, if a broader prefix still claims it, pins just that path back to Unassigned without deleting the broader rule or affecting siblings.

How to use: Choose "unassign" on a grouped folder, or the "×" on a folder row inside a project card.

Ignore folders (prefix or exact) with match counts #

Mark a path (and optionally everything beneath it) to exclude it from grouping, counts, and the calendar; an "exact" variant excludes only that single path without removing its subtree. The ignore list is shown tagged prefix vs exact with a count of distinct folders each entry drops.

How to use: Add an ignore entry (toggle "exact" as needed) from the auto-group view, context menu, or ignore-management UI; previews the blast radius.

Projects roll-up (rename / recolor / dissolve) #

Rules sharing a name aggregate into one project showing color, prefixes, member folders, and total sessions/messages. A project can be renamed (preserving profile membership), recolored (all rules at once, or cleared to auto), or dissolved (all its rules removed, folders returning to Unassigned).

How to use: Edit/recolor/dissolve from the project list, the Drag board bucket header, or the Auto-group active-projects list.

Unassigned folders view #

Lists every distinct folder with no matching rule and not ignored — the staging area for assignment.

How to use: Rendered as the "unassigned" bucket / Drag board tree.

Auto-group suggestions (worktree-aware clustering) #

Analyzes unassigned folders and proposes projects: parents named worktrees/workspaces/playgrounds/conductor/trees give each child its own project; a parent with 2+ child folders becomes one repo-root project; lone folders become solo projects. Colliding auto-names are de-duplicated, each labeled solid (●) or weak (○) confidence.

How to use: Open the Auto-group tab; review suggestion cards with confidence dots and session counts.

Grouping panel overlay with tabs #

A full-screen modal ("GROUP FOLDERS INTO PROJECTS") hosting Auto-group, Drag board, and Profiles as switchable tabs over one shared store, with a per-tab hint bar, a "?" help link to the explainer, and a live footer of project/unassigned/ignored/cleanup counts. Closes via X, Escape, or backdrop click.

How to use: Open via the top-bar "group folders" button (or "Manage profiles…" in the title menu); click tabs to switch.

Drag board (tree + buckets, drag-and-drop) #

Left: unassigned folders as a filterable, collapsible file tree with leaf vs folder icons, session/dir count chips, and multi-select. Right: project buckets with drop zones. Dragging a folder adds a prefix rule, a leaf groups just that folder, and dropping on a dashed box (or clicking it) creates a new project pre-named from the folder. Buckets support inline rename/recolor/dissolve and per-folder eject.

How to use: Open the Drag board tab; filter/expand the tree, select or drag rows onto buckets or the dashed "create project" box.

Auto-group tab (accept / split / collapse / ignore) #

Suggestion cards (sorted by sessions, confidence-dotted, with editable name/color and coverage chips) can be accepted one-by-one ("✓ add") or in bulk via checkboxes and "✦ Apply N checked". "split ▸" drills a card into per-subfolder cards; clickable path segments collapse to a shallower level; "⌫ ignore" excludes a card. Sections list active projects and ignored prefixes. Edits survive re-renders and reconcile with newly appearing folders.

How to use: Open the Auto-group tab; edit, split, collapse, ignore, then add or apply checked suggestions.

Always-on right-click grouping context menu #

Right-clicking any calendar element carrying a group (a block or a per-day project total) opens a self-contained grouping menu — working even if the panel was never opened. It labels the target "project · NAME" or "folder · NAME" and offers: merge into another project, new project from this, rename, recolor (incl. auto), and two ignore items (exact / + subfolders).

How to use: Right-click a calendar block or per-day project total; closes on outside click.

Shared color palette picker #

A reusable swatch picker (used by the Drag board, Auto-group, and context menu) renders selectable colors plus an "auto"/no-color option, highlighting the current selection.

How to use: Click a swatch in any project/suggestion editor or recolor menu.

Live re-grouping without file re-read #

Sessions are parsed raw, so every rule change re-derives group/color and re-applies the ignore list on already-loaded sessions and re-renders instantly — decoupling grouping edits from disk reads.

How to use: Implicit: any add/remove/assign/rename/recolor/ignore takes effect immediately.

Plain-language explainer page #

A standalone guide covering what "projects" are, a before/after illustration, a quick-start, the two tabs plus right-click grouping, where changes are saved, and how to open the panel; adapts to light/dark.

How to use: Open via the "?" button in the panel header (or directly at the grouping explainer).

Profiles #

Named sets of projects layered above grouping as a pure visibility filter for switching contexts (e.g. Work vs Personal).

Profiles as a visibility filter (with synthetic Unassigned) #

Profiles never re-group — they just show/hide which projects appear. A synthetic "Unassigned" profile automatically owns every project no real profile claims (auto-hidden once everything is assigned), guaranteeing no group is ever orphaned. A project belongs to at most one profile.

How to use: Create profiles and assign projects; the profiles view lists each with rolled-up counts and a visibility flag.

Profile switcher menu in the title #

Clicking the "what the claude" header title opens a dropdown listing every profile with a checkbox and a "N sess" count; ticking shows/hides an entire context across both the calendar and its summed totals. The title only shows a caret affordance once a real profile exists, shows "No profiles yet." when empty, and the footer offers "Set up profiles…" / "Manage profiles…".

How to use: Click the header title; tick/untick profile rows; click outside or Escape to close.

Profiles management board (drag-and-drop) #

A two-column board (unassigned groups left, profile buckets right) for organizing contexts: drag a group into a bucket to assign, drag between buckets to reassign, or "×"/drag-left to unassign. A dashed box creates a profile (click or drop, with a name prompt); buckets support inline rename and delete. Group rows show color swatch, sessions, dir count; the left column is filterable.

How to use: Open via "Manage profiles…"; drag group rows between the unassigned column and profile cards.

Stable profile IDs (slug, reserved, rename-safe) #

Profiles get kebab-case IDs derived from the name, collision-suffixed (e.g. "work-2"), and can never collide with the reserved synthetic "unassigned" id. Because profiles store group names, renaming a project rewrites them inside every profile so membership survives renames.

How to use: Automatic on profile creation and on project rename.

Connecting your data #

Read ~/.claude/projects directly in the browser — no upload, no backend — and keep it live.

Connect a Claude sessions folder #

Reads ~/.claude/projects directly from disk via the browser's folder picker — data never leaves the machine and there is no backend. The picked directory becomes the live data source for the whole calendar.

How to use: Click the header "+ connect ~/.claude/projects" button, then "Continue" in the walkthrough to open the native picker and grant read access.

Guided connect walkthrough (OS-aware, copy-path) #

A 4-step accessible modal (open picker, navigate, paste path, confirm) detects macOS/Windows/Linux and shows the matching projects path plus the correct picker keystroke (Cmd-Shift-G / Ctrl-L) and confirm-button label; a "copy" button copies the OS-specific path with a "✓ copied" flash. Closes on Cancel, backdrop, or Escape.

How to use: Opens on clicking Connect; read the per-OS path/keystroke, optionally copy the path, click Continue.

Unsupported-browser detection #

Detects the absence of folder-picker support (Firefox/Safari/mobile) and disables Connect, relabeling it "browser unsupported" with an explanatory tooltip and status naming Chromium browsers to use.

How to use: Automatic on page load.

Live connected status with pulse indicator #

When connected, the header shows 'connected "<folder>"' plus a watch-mode suffix ("· live" for observer, "· polling" for fallback) and a colored pulse dot that goes solid when watching and rings on each detected change; hover shows the last-change time.

How to use: Appears in the header after connecting.

Live watcher (push updates, polling fallback) #

On supported browsers a file-system observer recursively watches the transcript tree and re-renders on any change with a one-shot blip; when unavailable it polls every ~3s comparing a per-file fingerprint (including subagent transcripts) and reloads only on change.

How to use: Automatic once connected; status reads "· live" or "· polling" and the Refresh button stays available for polling.

Reconnect & auto-reconnect a remembered folder #

On reload the saved folder is rehydrated: if read permission still stands the app reconnects silently and repopulates instantly; if permission lapsed a '↻ reconnect "<folder>"' button re-requests access in one click instead of re-picking.

How to use: Automatic at boot, or click the reconnect button when shown.

Disconnect / reset folder #

An ✕ button beside the status forgets the connected folder: stops the watcher, clears the saved handle, empties the calendar back to the pre-connect grid, and re-shows the Connect prompt — all without a page reload.

How to use: Click the ✕ disconnect button in the header status.

OPFS debug-connect hook #

A debug hook exposes connect/disconnect/store/openPanel plus caps/state, letting a test harness drive the full pipeline (including the observer) over an in-browser file system with no native picker.

How to use: In console/tests: seed an in-browser dir, then connect it via the debug hook.

Parsing transcripts #

How JSONL transcripts become structured sessions, including subagent/workflow ingestion and resilience.

Transcript parsing into sessions #

A pure parser turns JSONL transcripts into per-session summaries: time bounds, typed-user-message timestamps, an activity timeline, event count, token usage (input/cache/output), git branches, Claude version, entrypoint, and models used — the data behind the entire calendar.

How to use: Runs on connect; fields surface across the calendar and detail view.

Typed-prompt vs synthetic-event classification #

Distinguishes real human-typed prompts from synthetic/meta/sidechain/tool-result/command events, so "messages" counts and the user-activity timeline reflect actual human input rather than tool noise.

How to use: Implicit in every session summary and in detail-view event labeling.

Subagent & workflow transcript ingestion (per-source activity) #

Reads subagent transcripts and the nested workflows tree alongside the main transcript, merging by timestamp and tracking activity per source — so agent-heavy sessions show real activity instead of looking idle. This per-source data backs the main/agents/workflows toggles.

How to use: Automatic on parse.

Resilient & live-correct reading #

A malformed JSONL line is skipped rather than fatal, and a single unreadable transcript is dropped from the scan instead of aborting the whole load; each read re-acquires a fresh copy of the file so a transcript grown since connect reads cleanly instead of erroring.

How to use: Transparent during load and on every watcher-triggered reload.

Saving & portability #

How every setting persists across reloads and travels between origins and machines via the config object.

Layered config persistence (five layers) #

Every user setting lives in one config object that flows through five persistence layers: an in-browser working copy (per origin, on every change), the folder config file (the only artifact crossing origins/machines), export/import JSON, and the deployed default seed. Changes persist and re-group live; layout-neutral changes (e.g. hidden folders, prefs) persist without re-grouping.

How to use: Automatic on every change; no user action needed for the in-browser copy.

Load precedence & source detection #

On startup the store seeds from the in-browser working copy, then the connected folder's config file, then the deployed seed, then empty — and tracks which source was used so the UI can distinguish a fresh setup from a returning user.

How to use: Runs at app startup; the source drives onboarding vs returning-user UI.

Save config to the connected folder (disk) #

The "⊓ save to disk" button escalates the folder to read-write and writes the config file into the connected folder (the scanner skips it), with the button flashing a ✓/✕ confirmation. Disabled in snapshot mode with a tooltip pointing to export. This file is the only layer that crosses origins/machines.

How to use: Click "⊓ save to disk" in the panel footer; grant write permission if prompted.

Export / import config JSON #

Export serializes the current config and downloads it; import reads a JSON file, normalizes its shape, preserves unknown keys, and applies it live. The footer surfaces an inline "import failed: …" on error.

How to use: Click "⭳ export" / "⭱ import" in the panel footer.

Folder config seeding across origins #

On connect the app reads the folder's config file to seed grouping when this origin's local copy is empty — the mechanism that moves a setup between localhost and the deployed site (or another machine). Because the local copy wins precedence, a target that already connected keeps its copy unless reset.

How to use: Automatic on connect.

Deployed default grouping seed #

On a fresh origin with no local copy and no folder config, the app falls back to a shipped default config so new users get sensible default grouping rather than a flat list.

How to use: Fetched at boot; used only when higher-precedence sources are empty.

Forward-compatible config normalization #

Normalization keeps the raw config first so fields written by a newer build survive the round-trip, then layers known keys with guaranteed shapes/defaults — preventing settings loss when configs move between app versions.

How to use: Implicit on every load, import, and reset.

Reset configuration #

Wipes the config back to empty — all rules, profiles, ignores, cleanup, hidden folders, and prefs — and applies/persists it, behind a confirmation in the panel.

How to use: Click "reset" in the panel footer and confirm.

Portable hidden-folders & view-prefs bridges #

Hidden folders and view prefs (idle gap, autonomous threshold, hide-empty, aggregate threshold, view mode, source toggles) are mirrored into the portable config and adopted back on connect — migrating per-origin local-only settings into the config so they travel with the folder/export. The config value wins over the local one on adoption.

How to use: Automatic after config load; set any control or hide any folder and it round-trips through the config.

Onboarding & cleanup helpers #

First-run guidance and a punch-list for tidying ~/.claude/projects.

First-connect auto-group nudge #

On a genuinely fresh setup the app suggests groupings for ungrouped folders, applies them, then glows the "group folders" button and pops a tip explaining how to refine (rename/recolor/merge/split) — so the calendar reads cleanly out of the box and you discover the panel.

How to use: Fires once after first connect when no user config exists; the tip auto-dismisses on outside click / "got it".

Cleanup punch-list (folders flagged for deletion) #

A list of folders you flag as deletion candidates, with toggle/mark/unmark/clear actions and session/message/last-seen metadata joined back in — a to-do list for tidying ~/.claude/projects. Surfaced in the panel footer count ("🗑 N to clean up").

How to use: Flag folders for cleanup from the UI; a cleanup panel lists them with stats and a clear-all action.