Skip to content

fix(lint): compositions in .hyperframesignore no longer count as the project's - #7239

Merged
miguel-heygen merged 2 commits into
mainfrom
fix/lint-honors-hyperframesignore
Nov 5, 2026
Merged

miguel-heygen merged 2 commits into
mainfrom
fix/lint-honors-hyperframesignore

Conversation

@miguel-heygen

@miguel-heygen miguel-heygen commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

What

The project lint no longer reads compositions that .hyperframesignore leaves out. A blank index.html beside an archived standalone composition in an ignored folder no longer fails check, snapshot, render and publish with blank_root_with_standalone_composition, and an ignored file's own findings no longer count.

Why

Someone kept an old standalone video under compositions/<folder>/index.html and listed that folder in .hyperframesignore. check still found it, reported blank_root_with_standalone_composition, and snapshot aborted with "the default index.html entry is blank". The ignore file was read only when building the publish and cloud archives, so the lint walk of compositions/ had no way to know the folder was not part of the project.

How

The ignore rules (root renders/ and snapshots/, dotfiles, then the project's .hyperframesignore) move from publishProject.ts into @hyperframes/lint as projectIgnore(projectDir), so lint and publish read one rule set. Publish calls it in place of its private copy. lintProject's walk of compositions/ skips every file and folder it matches. @hyperframes/lint gains the ignore dependency the CLI already uses, at the same range. The dotfile rule stays the unanchored .*, so it matches at any depth and a .hyperframesignore negation can still re-include a hidden folder (#3859).

The root-level multiple_root_compositions rule is unchanged: it guards files the runtime can open as entry points, and is not part of this report.

Test plan

  • Unit tests added/updated:
    • fails without the fix: project.test.ts "does not count a composition in a folder the project's .hyperframesignore leaves out": a blank root, compositions/archive/index.html with a timed clip, and compositions/archive/ in .hyperframesignore; lint reads only index.html and reports no blank_root_with_standalone_composition. It fails with the skip removed.
    • project.test.ts (87) passes three runs in a row; publishProject.test.ts and publishProject.srcset.test.ts (150) pass with publish on the moved rules.
  • Manual testing performed: the built CLI's lint --json on the reported shape (blank root, a standalone composition in compositions/archive/) reports blank_root_with_standalone_composition; with compositions/archive/ in .hyperframesignore it does not. check, snapshot, render and publish read the same finding from this lint.
  • Documentation updated (if applicable): the .hyperframesignore paragraph in docs/packages/cli.mdx.
  • Comments follow CONTRIBUTING.md "Comments": one doc line on projectIgnore; the new file stays under the package's comment share, and the dotfile note it had in publish is in this body.

Size

About 20 lines of source in five files, one test and two doc lines. One fix: lint honours the project's ignore file.

@mintlify

mintlify Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

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

Project Status Preview Updated
hyperframes 🟢 Ready View Preview Nov 5, 2026, 12:37 PM

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

@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 267 (base branch 267), smooth 95 of those

The gate passes.
Smoothness is reported in the artifact, not gated. A case fails only if it fails 2 of 3 runs.

Quarantined, measured but not gated (8)

@heygengenesis heygengenesis Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Verdict: REQUEST CHANGES · 1 blocker · 0 important · 0 nits · head efa65615

The code looks right; the only blocker is CI. The Comments check fails and the PR body doesn't explain it: NEW file over its package's comment share: packages/lint/src/projectIgnore.ts is 18.8% (3/16), the package is 10.8%. ↓ inline

Scope

Read the full diff. The lintProject compositions walk is the only path into blank_root_with_standalone_composition. Publish keeps the same rules: the defaults and .hyperframesignore loading moved without changes. Paths are built with /, so matching holds on Windows. Locally project.test.ts passes 87/87. With the ignored.ignores line removed, the new test fails (['index.html', …(1)] ≠ ['index.html']), so the fails without the fix: line holds. All other CI was green; CodeQL and Windows render were still running. No earlier reviews.

— Genesis V2 (Lane B)

Comment thread packages/lint/src/projectIgnore.ts Resolved
@miguel-heygen

Copy link
Copy Markdown
Collaborator Author

Fixed at 4898cab: projectIgnore.ts is now one comment line in 13 (7.7%, under the package's 10.8%). The dotfile note moved to the PR body.

@heygengenesis heygengenesis Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Verdict: APPROVE — 1 resolved, 0 open, 0 new · efa65615 → 4898cab4

— Genesis V2 (Lane B)

@miguel-heygen
miguel-heygen added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit 80e02e7 Nov 5, 2026
136 of 137 checks passed
@miguel-heygen
miguel-heygen deleted the fix/lint-honors-hyperframesignore branch November 5, 2026 13:54
SanHsien added a commit to SanHsien/hyperframes that referenced this pull request Nov 6, 2026
…eview

Adopts or partially adopts 11 groups: multi-worker tween replay behind
the timeline stand-in (heygen-com#7231), template entries in the shared compile
stage (heygen-com#7217), HYPERFRAMES_CACHE_DIR and HYPERFRAMES_CONFIG_DIR for
every per-user cache and settings file (heygen-com#7224, heygen-com#7229; HeyGen
credentials stay under HEYGEN_CONFIG_DIR), WebKit audio clock (heygen-com#7225),
packet-based video length (heygen-com#7233), HLG tone mapping (heygen-com#7234), fetch
network cause (heygen-com#7236), .hyperframesignore in lint (heygen-com#7239), info
--media (heygen-com#7235), lint priority (heygen-com#7244), check --budget (heygen-com#7245) and the
unknown-command answer (heygen-com#7247). bun.lock gains only the lint `ignore`
edge from heygen-com#7239, already resolved. Watermark advances to 0a6746e.

Co-authored-by: Jerrai <jerrai@heygen.com>
Co-authored-by: Miguel Ángel <miguel.sierra@heygen.com>
Co-authored-by: WaterrrForever <miao.yang@heygen.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant