Skip to content

docs: an FAQ, a free-agents page, and 30 Days as a numbered list - #6382

Merged
ukimsanov merged 5 commits into
mainfrom
docs/faq-inspiration
Oct 26, 2026
Merged

ukimsanov merged 5 commits into
mainfrom
docs/faq-inspiration

Conversation

@ukimsanov

@ukimsanov ukimsanov commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

What

  • New: HyperFrames FAQ (/faq, in "Start here"). 17 short answers to the questions people ask the docs assistant most: is it free, can I use it commercially, which agent, the Claude or ChatGPT chat apps, install, accounts and API keys, Windows, the Studio app vs the browser editor, Remotion, preview and render, render time, voice and music, captions, fonts, cloud rendering, what is sent to HeyGen, what to check when something fails. Each answer links to the page with the details.
  • New: Make videos with a free agent (/guides/free-agents, in "Use it with your agent"). HyperFrames is free, so the agent is the only cost. The page covers:
    • a paid model and an open model on the same Code2Video prompt, side by side;
    • OpenCode's free models in the Studio app;
    • a local model through Ollama;
    • what else is free.
  • 30 Days of HyperFrames becomes one numbered row per lesson (hover previews follow reduced motion, and each film is a button that plays and pauses for keyboard and touch), with its film on hover and the post one click away, under the Day 30 cut. It also drops a "Plays in full above" link that points to a section removed earlier.

Why

In one month the docs assistant got 5,541 questions (Mintlify analytics, 18 Sep – 17 Oct). The most common:

  • 392 asked whether HyperFrames is free;
  • 181 asked which agent works, or whether they can use something other than Claude;
  • 66 asked about Windows or older Macs;
  • 59 compared it with Remotion or other tools;
  • 49 were confused about the Studio app vs the browser editor.

Today no page answers these in one place, so the assistant answers them again each time. Some people leave instead, because they think they have to pay for a top model.

How we'll know: fewer of those questions to the assistant; FAQ and free-agents pages get visits from search and AI answers (PostHog docs pageviews).

Related work

Docs PR 7b, stacked on #6380 (#6378, #6379 and #6393 merged): until it merges, this diff also shows its commits. Review only this PR's own commits. The Inspiration page (old "Examples") is its own PR, stacked on this one. "Is HyperFrames free?" as its own page waits until pricing is announced, so the FAQ links the free and HeyGen table instead.

How

Built from the reviewed drafts (docs/content-samples, 22–23 Oct). Every claim was checked against today's main of both repos before it went in:

  • Free agents:
    • OpenCode is installed by the app, runs free models with no sign-in, and asks for Full access the first time (harnessCatalog.mjs, harnessProbe.mjs, FullAccessCard.tsx);
    • OpenCode finds Ollama models by itself (opencode.ai model docs);
    • the benchmark wording matches HeyGen's Code2Video page (168 briefs; the four open models "within 50 Elo of first place").
  • FAQ:
    • Apache 2.0 (LICENSE); the supported agents (README, skills guide); the plugin and npx skills add commands;
    • auth login; the Mac and Linux app with Windows coming (the app install page);
    • the 9.8 s vs 25 s render example (performance guide); --quality draft (render.ts);
    • telemetry: anonymous until sign-in, no project names or video content (telemetry.ts, events.ts); cloud render (cloud.ts).
  • Fixed from the drafts:
    • the FAQ said music uses MusicGen, but today it's tracks you add or local generation if you install it, and a 10,000-track catalog with HeyGen;
    • "Studio in the browser" is now "the browser editor";
    • the free answer pointed to the held pricing page;
    • Free agents said the Studio app transcribes locally (it goes through HeyGen);
    • a "16k to 32k context" tip had no source and is cut.
  • The 30 Days rows match today's page word for word (titles, posts, films); only one line changes, "in Studio" to "in the browser editor".

Test plan

  • mint broken-links --check-redirects: no broken links; mint validate passes; bun run lint passes
  • Manual testing performed: the three pages loaded in Chrome on a local preview at desktop and phone width, 0 page errors, no sideways scroll, every internal link answers 200; hovering a 30 Days row plays its film; all 64 film and poster URLs answer 200
  • Documentation updated (if applicable)
  • Unit tests added/updated (docs only)
  • Comments follow CONTRIBUTING.md "Comments"

Copilot AI balanced review requested due to automatic review settings October 26, 2026 02:34
@mintlify

mintlify Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
hyperframes 🟢 Ready View Preview Oct 26, 2026, 8:04 AM

💡 Tip: Enable Automations to automatically generate PRs for you.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We reviewed only this PR's last commit and checked sampled FAQ and provider claims against source. The new lesson list loses the old reduced-motion and accessible playback behavior. Please fix the inline finding before merging. Broken links pass; we did not rerun provider flows or Mint validation.

Comment thread docs/snippets/day-list.jsx Outdated
const play = (event, on) => {
const video = event.currentTarget.querySelector("video");
if (!video) return;
if (on) video.play().catch(() => {});

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Preserve reduced motion and an explicit playback control. This unconditionally starts a looping film when the pointer crosses a lesson row. In the preview with prefers-reduced-motion enabled, hovering day 1 still calls play(). The old HoverVideo guarded incidental playback and provided a keyboard-accessible play button; this video has no controls and the only handlers are mouse enter/leave. Keep reduced-motion autoplay suppression and provide an intentional play/pause route for keyboard and touch users. HoverVideo already demonstrates the policy, though Mintlify's snippet-import restriction may require a self-contained control.

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We checked the follow-up. Reduced-motion hover protection and keyboard/touch playback now work. One new control-state bug remains when two lesson films are started in sequence; please fix the inline finding. The replay used the actual snippet with fixture media, not production film acceptance.

const toggle = (event, n) => {
const video = event.currentTarget.querySelector("video");
if (!video) return;
if (chosen === n && !video.paused) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Keep each film's playback state and button in agreement. A single chosen ID cannot describe multiple videos that remain playing. Keyboard Enter on day 1, then Space on day 2 leaves both native videos playing, but day 1 now says Play with aria-pressed=false. Activating day 1 again does not pause it because chosen !== n. We reproduced this in Chromium with the actual snippet. Either pause the previous chosen film when selecting another or track playback per film, and derive the labels and pause action from the actual state.

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We checked the follow-up. Choosing another lesson now pauses the previous film, keeps the labels accurate and prevents other rows from previewing while one is chosen. Keyboard, touch and reduced-motion controls pass in the snippet fixture harness. Our prior finding is resolved; no new blocker found.

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent review at 3f40b2acaeac9b2b0e53681b139cb26bdaa92bef, scoped to this PR's own changes above d33083bd0. Rames's within-list switching, reduced-motion and keyboard repairs work; one page-level playback boundary remains.

Blocker (P2), docs/snippets/day-list.jsx:81: each of the three mounted DayLists pauses only its own videos. On the actual hosted /thirty-days preview, keyboard-start day 1 then day 2: one plays, as intended. Now keyboard-start day 10: day 2 and day 10 both remain playing, each button pressed. thirty-days.mdx mounts parts 0/1/2 independently, so a chosen film in another section also does not suppress this section's hover previews. Coordinate selection/pause at page scope and cover a cross-section keyboard/hover sequence, retaining accurate labels.

Audited: own six-file diff and cumulative stack boundaries, FAQ/free-agent guidance and consumers, the three DayList mounts and source cleanup. Executed: actual public hosted-preview media and keyboard controls, reduced-motion hover suppression and deliberate Space playback; FAQ mobile route has no horizontal overflow. The 14 snippet-motion tests pass on the Inspiration snapshot (supporting shared coverage, not a witness for this missing case). Existing peer reviews read in full; this is additive to their within-list control.

CI: 57 success / 54 skipped, no failed checks. Browser evidence is public Mintlify preview, not native/provider acceptance; no installation, paid call, production write, merge or FPS claim.

Verdict: REQUEST CHANGES
Reasoning: The single-film repair is confined to one list instance; the real page mounts three instances and still permits simultaneous playback across them.

— Magi

Comment thread docs/snippets/day-list.jsx Outdated
return;
}
// Choosing a film stops the one chosen before, so each button always matches its film.
for (const v of listRef.current?.querySelectorAll("video") ?? []) if (v !== video) v.pause();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Coordinate selection across all three lesson lists. The actual /thirty-days page mounts DayList parts 0, 1 and 2. Keyboard Enter on day 1, Enter on day 2 correctly pauses day 1; Enter on day 10 then leaves day 2 and day 10 both playing with aria-pressed=true. This loop only reaches listRef, and each instance owns its own chosen state. A chosen film in one section likewise does not suppress hover previews in another. Use a page-wide playback owner (or equivalent coordination), keeping labels in sync, and test day 2 → day 10 plus cross-section hover.

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent repair review at fe6c350805c7ccfe347e4272bbe027c8aeed67b2; replaces my cross-section playback hold.

docs/snippets/day-list.jsx:61-83 now coordinates the independently mounted lists via document capture, clears another list's selection and suppresses hover while sound plays. In the newly deployed public /thirty-days Mintlify preview, keyboard/click day 1 → 2 → 10 leaves only day 10 playing and pressed. Day 21 hover is suppressed during sound; after pausing and re-entering, it previews muted. Mobile 390px dark/reduced-motion deliberate playback passes without horizontal overflow. The isolated exact-source browser control agrees.

Audited: the repair diff, all three DayList mounts, listener cleanup and previous full peer review texts. Prior FAQ/provider guidance audit is unchanged. Executed: hosted public CDN media controls and 14/14 snippet-motion tests. No uncaught page errors; the known GitHub repository/star widget XHR 403 is unrelated to playback. No native/provider/FPS acceptance claim.

CI snapshot: 39 success, 19 skipped, 1 neutral, 5 running; docs validation, lint and Mintlify deployment succeeded, no failing checks. Remaining Windows/analysis checks are pending, not claimed green.

Verdict: APPROVE
Reasoning: The original page-level failure and its hover boundary now pass on the deployed repair, with accurate selection state and cleanup.

— Magi

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successor review at b1c11cedebd6564232845aade3491056be6522eb. docs/custom.css:1675-1683 replaces the fixed tints with the merged palette tokens; DayList playback source is byte-identical to the independently approved repair. The actual public hosted /thirty-days preview still leaves only day 10 playing/pressed after choosing days 1, 2 and 10 across separate lists.

Audited: restacked layer and palette delta, token definitions/consumers, three DayList mounts and all current peer review text. Trusting: prior FAQ/free-agent source audit for unchanged prose. Executed: hosted public preview light/dark and 390px checks, computed token styles and screenshots; no horizontal overflow or uncaught page errors. 14 snippet-motion tests and prior-repair byte-equivalence controls pass. No native/provider/FPS acceptance claim.

Current-head CI snapshot: {'skipped': 50, 'success': 52, 'in_progress': 2, 'neutral': 1}. Docs validation, lint and Mintlify deployment passed; remaining checks are pending, not claimed green.

Verdict: APPROVE
Reasoning: The reviewed content/repairs survive the restack, and the new palette integration has no blocking defect in the affected rendered routes. Approval covers this exact head only.

— Magi

The FAQ answers the questions people ask the docs assistant most, each
linking to its page. Make videos with a free agent shows OpenCode's free
models in the Studio app, local models through Ollama, and how open models
scored in Code2Video. 30 Days of HyperFrames becomes one numbered row per
lesson with its film on hover, and drops a link to a section that no
longer exists.
Hovering a lesson started its film even with reduced motion on, and
keyboard and touch visitors had no way to play it. Hover previews now
follow the setting (read on the first render, and stopped if it turns
on), and each film is a button that plays and pauses on purpose.
Choosing a lesson film pauses the one chosen before, so every button
matches its film, and other rows do not preview while a film plays.
The page mounts three lesson lists, and each only paused its own films.
A chosen film now plays with sound, and any unmuted start on the page
makes every list stop its own films and drop its choice; previews stay
muted and wait while a film with sound plays.
The lesson list used fixed black and white tints; its rules, numbers,
lines and film backgrounds now use the palette tokens, so they match the
beige ground and the Night theme.

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fresh restack review at bda4ab457151b4acf59d823d45809033135c19b0, based on landed a988afa00bc5dd391dbabb82adebc795ece8d730.

All five own commits pair unchanged in git range-diff against 1a4b9e0b..b1c11ced; the normalized full patch matches. All six affected files and the entire docs tree are byte-identical to the approved b1c11ced snapshot, including page-wide playback and token-based styling. API/git file censuses agree.

Audited: exact five-commit layer, base integration, nav/FAQ/free-agent/three-DayList consumers and all current peer review/comment text. Trusting: the prior independent factual-source, light/dark/mobile and palette audits for this identical content. No new native/provider/FPS acceptance claim. Executed: exact-source motion guard and 12 applicable snippet-motion tests pass. Prior Inspiration-only assertions are outside this layer's test file.

Rames's earlier within-list/reduced-motion findings and my cross-section finding remain repaired in the unchanged source. The browser evidence below is public hosted Mintlify, not production or signed-in Studio.

Fresh hosted replay after hydration: day 2 → day 10 leaves only day 10 playing/pressed; no horizontal overflow or uncaught page errors. The known preview-widget Axios403 remains. This reuses the prior full light/dark/mobile evidence for byte-identical source rather than claiming a new full matrix.

Current-head CI: {'skipped': 37, 'neutral': 1, 'success': 23, 'in_progress': 1}. Docs validation and lint passed; any remaining running checks are unconfirmed.

Verdict: APPROVE
Reasoning: The actual restack preserves every reviewed patch and affected file, including the playback repair and palette. Current focused evidence and docs gates show no blocker. This covers only this exact head.

— Magi

@ukimsanov
ukimsanov enabled auto-merge October 26, 2026 08:07
@ukimsanov
ukimsanov added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit a183125 Oct 26, 2026
62 checks passed
@ukimsanov
ukimsanov deleted the docs/faq-inspiration branch October 26, 2026 08:15

This branch was successfully deployed

1 active deployment
staging - docs — bda4ab45 Deployed Oct 26, 2026 by mintlify[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants