Skip to content

Blender AI Tutor

Autumn edited this page Oct 16, 2026 · 5 revisions

Blender AI tutor

Goal

Build a personal website that teaches Blender through each user's own projects. A project collects goals, milestones, progress and preferences in a shared memory. Each chat pairs one project with one persona, a character with its own manner of speech, such as Mr. Tee. The tutor searches the official Blender Reference Manual and cites the sections it uses. The site runs on Vercel. Owner: Axlog.

Version 1 is done when these work on the Vercel URL:

  • Invited users sign up with the invite code and their email, and sign in by an emailed link. Every page and API route needs a session (passphrase-gated-email-sign-in).
  • Each user's data is private (private-user-data), and each user has a $5 monthly Claude quota (claude-spend-quota).
  • Creating a project starts an interview chat that writes the project memory, including goals and milestones.
  • Creating a chat means choosing a project and a persona: Hippy, Mr. Tee, Fjord Tines, Span Tines, Argon Sprangler or Roland Dustchain (persona-spoof-names). An existing chat can be reopened. Every chat receives its project's memory.
  • Users clone and edit personas as text (personas-as-text).
  • The tutor searches the 5.3 manual, and each factual claim links to a real manual section.
  • The tutor updates the memory during chats. The user can view, edit and undo memory changes.
  • Haiku names each chat, and the user can rename it (haiku-chat-names).
  • One command rebuilds the index when a new stable Blender release ships.
  • Every use case in use-cases/ has a passing test.

The decision names above are entries on the Decisions page.

Constraints & Preferences

  • The repo, this wiki and GitHub issues are the source of truth. This page was the build's working plan until 2026-10-12 (Axlog) and holds only what they don't. It moved here from Axlog's notes on 2026-10-13. Repo: github.com/axolotl-logic/project-buddy, cloned wherever you keep repos.
    • Code, test and production rules: CONTRIBUTING.md. AGENTS.md points agents to it and to Decisions.
    • Design decisions and what they rejected: Decisions, one page per area.
    • How to run the app and the tests: README.md.
    • Work and results: GitHub issues on the "version 1" milestone, labelled by stage (stage: personas, stage: deploy-v1, stage: accounts) and product-note.
  • The issue pipeline does the work. It takes every open issue from a collaborator and merges without a human; how it works and the rules it follows are on the Issue pipeline page, and running it on Running the issue pipeline. Every merge to main deploys to production.
  • Axlog decides. Design choices, failed gates and rule conflicts go to her with options and a recommendation. Her rulings are recorded as "(Axlog, )", with the options she rejected.
  • Production holds Axlog's real account. Never read or write her rows. One Neon database serves Production, Preview and Development.
  • Secrets: .env (INVITE_CODE, RESEND_API_KEY) and .env.local (the pulled Vercel variables, including DATABASE_URL) are gitignored. Never print a .env* file; read one variable with node --env-file. Vercel holds INVITE_CODE, ANTHROPIC_API_KEY, SESSION_SECRET and RESEND_API_KEY. The Resend key was once pasted into a chat; Axlog chose not to rotate it.
  • Operational notes not yet in the repo (to move into the README; see repo-tooling-notes):
    • Vercel project project-buddy. vercel link writes its IDs to .vercel/project.json (projectId, and orgId for the owning team), which git ignores; tools that need them read VERCEL_PROJECT_ID and VERCEL_ORG_ID. Production: https://project-buddy-rust.vercel.app. Team aliases sit behind Vercel SSO.
    • vercel env pull returns sensitive variables as empty strings.
    • vercel logs --follow misses lines written in after(), such as [tutor-steps]. Query with --deployment <dpl> --since <start> --until <end> --json.
    • A push to main once got no Vercel deployment (3f6e57f), and GitHub shows no commit status, so only Vercel's API links a deployment to its commit.
    • Turbopack's build fails when node_modules is a symlink (unlink node_modules && npm ci).
    • If Docker Desktop's credential helper hangs pulling the test database images, pull with a credential-free DOCKER_CONFIG.
    • npm run manual:reindex peaks at about 450–510 MB and writes about 8,974 sections.
  • History: stage briefs, reports, diffs and screenshots are in ../project-buddy-worktrees/ (<stage>-briefs/, <stage>-*.md). Retrospectives are on Retrospectives. The old orchestration rules ("How the build runs", "Agent roles") are on How the build runs.

Progress

Done

  • Stages before accounts: infrastructure, the manual index, strict tooling, the tutor core, search and citations, project memory, error surfaces, the interview and chat names, themes and the Radix redesign, persona names, lane splitting, and the chat UI with mobile support.
  • accounts-and-quotas: released in two parts. Rounds 1 and 2 were released on 2026-10-13, deployment dpl_u4e8YB3UhcwGFFexCAJi34LWb1EL. Rounds 3 and 4 were released as a1f0bd0, deployment dpl_CvwEAmBvVr8iJRJX6ZYBm68261d6, with migration 0006. The sweep and cleanup passed.
  • Move to the repo and issues (2026-10-13): the repo's rule and decision docs were written, INVITE_CODE replaced SITE_PASSPHRASE, the order markers were set, and production migrates in its build (96149b0, migrate-on-production-build).
  • Pipeline merges (2026-10-13): #17, #19, #20, #21, #23, #24, #25, #27–#36, #49, #51, #52, #54, #56, #57, #60–#63, and #78–#80, the sub-issues #26 was split into.
  • personas-and-prompts: done. #25 (persona store), #26 (persona editor, as #78–#80), #27 (interview at creation) and #30 merged.

In Progress

Issues in GitHub are authoritative; this list is as of 2026-10-13 22:50Z.

  • deploy-v1: #32–#36 merged. Next is #37, the deploy and real-Claude smoke test, which needs #74 first.
  • Waiting on Axlog's answers on the issue (agent:needs-info): #48 (memory size cap), #50 (Blender add-on), #53 (split reply-test-kit.ts only if needed), #58 (LocalTime placeholder width).
  • release-workflow (#74 and #148 merged): one GitHub Actions workflow releases main when a deploy ticket (an issue labelled deploy) asks: build without going live, migrate, go live, smoke test, report on the ticket. Nothing deploys automatically. Pushing workflow changes needs a token with the workflow scope (gh auth refresh -h github.com -s workflow). No release has passed yet: the first, on push of 55ac0c1, hit Vercel's daily deployment limit (#147).
  • integration-branch (PR #150 merged, 2026-10-14): PRs merge into integration, whose every push deploys a Vercel preview and smoke-tests it. scripts/deploy.sh fast-forwards main to a tested integration commit and opens a deploy ticket.
  • definition-of-done-in-repo (not started; offered to Axlog): copy the Goal's version 1 list into #37 or a wiki page. #37 still says "the plan's Goal".
  • repo-tooling-notes (not started; offered to Axlog): move the operational notes under Constraints & Preferences into the README or a wiki page.
  • Triage of the old parked issues (2026-10-13): Axlog removed agent:skip from every issue, and the label is gone. The pipeline rejected #16 (retrospective) and #18 (WebKit flake, not reproduced); #22, #37, #59 and the product notes (#38–#45, #47) are queued for triage. #48 and #50 left the version 1 milestone.

Blocked

  • production-check-after-merge: Axlog to choose whether production gets a cheap check after each merge, or only the real-Claude smoke test in #37. personas-and-prompts-rulings expects each release's smoke test to record cacheRead/cacheWrite for an edited persona, and per-merge releases have no such test. #74's smoke test covers only signed-out requests.

Key Decisions

Every product, design and tooling decision is on Decisions, which is authoritative.

plan-retired

Work moved from this plan to GitHub issues and the repo's docs (Axlog, 2026-10-12), and from the orchestrator's staged lanes to the issue pipeline. This replaces delegated-staged-build.

release-workflow

Production is released by one GitHub Actions workflow, with Vercel's own Git deploys off (Axlog, 2026-10-13; #74). Since 2026-10-14 it runs only from a deploy ticket, never on push (#148). Rejected: migrating inside the Vercel build long term, migrating after the deploy is live, the pipeline migrating at merge (it misses hand merges), and migrating at app start-up. Migrations must work with the live build. The decision is release-workflow.

integration-branch

PRs merge into integration; each push there deploys a Vercel preview and smoke-tests it. Production runs main, which only scripts/deploy.sh moves, to a tested integration commit, before it opens a deploy ticket (Axlog, 2026-10-14; PR #150). The decision is integration-branch.

Clone this wiki locally