Skip to content

therzka/git-stuff-done

Repository files navigation

✨ git-stuff-done

git-stuff-done is your personal developer dashboard designed to keep you in the flow. It combines a distraction-free markdown editor for your daily work logs with AI superpowers. Track your work, manage your PRs and GitHub notifications, and generate work summaries all in one place.

(or see screenshots below)

Features

  • 📝 Work Log Editor — A rich hybrid editor. Type markdown naturally — headings, bold, lists, and links render inline as you type.

  • 📅 Date Navigation — Browse past logs with a calendar picker. Dates that have content show a dot indicator. Use ← / → to step day by day, or click Today to jump back.

  • 🪄 Linkify — Click 🪄 Linkify to resolve bare GitHub URLs to titled markdown links. Updates the log in-place.

  • 📊 Work Log Summary — Generate AI-powered summaries of your work logs for daily standups or weekly reports. Choose the AI model, pick a date range, and save summaries directly to your repo in summaries/.

  • 🔍 Natural Language Search — AI-powered search across your work logs. Ask questions like "What did I work on last week?" or "Find all examples of pairing sessions." The search automatically classifies your query into one of three strategies:

    • Exhaustive — queries like "find all examples of X" or "every time I mentioned Y" search through ALL available logs to find every instance.
    • Date-bounded — queries with time constraints like "last two weeks" or "in February" search only the specified range.
    • Recent-first — general queries progressively look back in 7-day increments (up to 365 days), accumulating context so the AI has more to work with each iteration. GitHub context is cached across iterations to avoid redundant API calls. Ideal for "when did I last…" style questions with resumable deep lookback.

    The search API streams results via NDJSON, so you see real-time progress in the UI — query classification, log loading, batch progress, and AI call status update live as the search runs. Query classification uses a fast model internally regardless of the user-selected model. Follows GitHub links in your logs for additional context and never fabricates answers. Includes a model selector.

  • 🤖 Dynamic Model Loading — Available AI models are loaded from the Copilot SDK at runtime and cached for 24 hours. Falls back to a built-in default list if the SDK is unavailable.

  • 📋 Saved Summaries — Browse, preview, copy, and delete past AI-generated summaries. Opens from the toolbar 📋 button. Summaries render as rich text with markdown-on-copy.

  • ✅ TODO List — Manual TODOs with inline editing + AI-suggested action items based on your work log.

  • 🔀 My PRs — Live feed of your open PRs (authored or assigned) in your GitHub org with status badges: Copilot (authored by Copilot, you're an assignee), Draft, Queued / Merging (merge queue), CI Failing (required checks only), Needs Review (awaiting human review), and unanswered comment count (excludes bots and resolved threads). Click the insert button on any PR to paste its link at the cursor in your work log.

  • 🐛 My Issues — Open issues assigned to you across your GitHub org, showing labels (toggleable) and comment counts. Linked PRs appear as chips styled by state (open/draft/merged/closed). Click the insert button to paste a link at the cursor in your work log.

  • 🤖 Assign to Copilot — From the My Issues panel, hover over any issue without a linked PR and click the Copilot icon to assign it to the GitHub Copilot coding agent. A modal lets you select the target repository (where the PR will be created — useful when issues live in a tracker repo but code lives elsewhere), the AI model for Copilot to use, and provide additional instructions. Issues already assigned to Copilot show a "Copilot" badge. Uses the GitHub REST API with the agent_assignment parameter for cross-repo PR creation.

  • 🔔 Notifications — Filtered GitHub notifications: reviews requested, mentions, assignments, and activity on your issues/PRs. Click the insert button to paste a link at the cursor. Dismiss individual notifications with the X button (reappear on reload).

  • 🚀 Auto-commit & Push — Hourly auto-commit of your logs and TODOs to a git repo, with push to remote. The commit button provides inline visual feedback — it changes color and text to show success, "no changes", or error states for 3 seconds, then reverts. No layout shift.

  • ⚙️ Settings — Ignore noisy repos in notifications. Adjust font size across the dashboard (Compact / Default / Comfortable / Large) — only text scales, layout stays stable. Preferences are saved in localStorage.

  • ▤ Layout modes — Toggle between grid (2-column) and column (single-column) layouts. Hide individual panels and restore them from the ☰ menu. Preferences are saved in localStorage.

  • 🌗 Dark Mode — First-class support for both light and dark themes.

Prerequisites

  • Node.js 20+
  • GitHub Copilot CLI (copilot) — installed and in your PATH. The SDK communicates with the CLI in server mode for AI features.
  • A GitHub Personal Access Token (PAT) with read-only scopes — see setup step 2 below.
  • GitHub CLI (gh) — optional, only needed if you skip the PAT step. If present and authenticated, it's used as a fallback for GitHub API access.

Setup

  1. Fork, then clone your fork:

    Click Fork on GitHub to create your own copy of this repo, then clone it:

    git clone https://github.com/<your-username>/git-stuff-done git-stuff-done
    cd git-stuff-done
    npm install

    ⚠️ Do not clone this repo directly — the auto-commit feature pushes to the git remote, and you won't have push access to the original repo.

  2. Create a GitHub PAT:

    Go to https://github.com/settings/personal-access-tokens/new and create a fine-grained token with:

    • Repository access: Public repositories (or select specific repos if needed)
    • Permissions: Issues → Read & Write, Pull requests → Read & Write, Notifications → Read-only, Actions → Read & Write, Contents → Read & Write
    • Read-only access is sufficient for viewing PRs, issues, and notifications. Write access is required for the "Assign to Copilot" feature (assigning issues, creating comments, and triggering the Copilot coding agent).

    If your org requires SSO, click Configure SSOAuthorize for your org after creating the token.

  3. Configure environment:

    cp .env.example .env.local

    Edit .env.local:

    • GITHUB_READ_TOKEN — the PAT from step 2
    • GITHUB_ORG — your GitHub org name (filters notifications, PRs, links)
    • GIT_STUFF_DONE_DATA_DIR — (recommended) path to a separate git repo for storing logs/TODOs
  4. Set up a separate repo for your logs (recommended):

    Without GIT_STUFF_DONE_DATA_DIR, logs and TODOs are stored inside the app repo itself (your fork). To keep them separate:

    Create a new private repo on GitHub for your logs, then clone it:

    git clone https://github.com/<your-username>/my-work-logs ~/my-work-logs

    Set GIT_STUFF_DONE_DATA_DIR=~/my-work-logs in .env.local. The directory must be a git repo with a remote for auto-push to work.

  5. Run the dashboard:

    npm run dev

    Open http://localhost:3000

Environment Variables

Variable Default Description
GITHUB_ORG (none) GitHub org to filter notifications, PRs, and links
GITHUB_READ_TOKEN (falls back to gh auth token) GitHub token (create one with Issues, PRs, Notifications, Actions, Contents — write access needed for Copilot assignment)
GIT_STUFF_DONE_DATA_DIR ./ (app dir) Path to a git repo where logs/ and data/ will be stored

How It Works

  • Storage: Daily logs are saved as logs/YYYY-MM-DD.md. Summaries are saved in summaries/YYYY-MM-DD-{type}.md. TODOs live in data/todos.json. Settings in data/config.json.
  • Linkify: Click 🪄 Linkify in the log panel. Strips GitHub URLs to their bare form first (removing sub-paths like /files, fragments, and query params), then resolves them to titled markdown links (e.g. [Fix auth bug (#123)](url)). Saves the result back to the same file.
  • Auto-commit: Every hour while the app is running, changes to logs/, summaries/, and data/ are committed and pushed. You can also trigger a manual commit via the 🚀 button.
  • Timezone: All dates use America/Los_Angeles (Pacific Time). Edit getTodayDate() in src/lib/files.ts to change.

Tech Stack

  • Next.js 16 (App Router) + TypeScript
  • Tailwind CSS v4
  • Tiptap (ProseMirror) rich text editor
  • @github/copilot-sdk for AI summaries and dynamic model discovery
  • Space Grotesk + JetBrains Mono fonts
  • Octokit for GitHub API
  • react-resizable-panels for layout

Screenshots

Light Mode Dark Mode
TODO List AI-Suggested TODOs
AI Summaries
AI Search Alternate Layout
Calendar Picker

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors