Files
hyperframes/packages/core/package-subpaths.json
Vance IngallsandClaude Sonnet 5 5240367150 feat(core): the audio group model — element, membership, helpers (#3278)
* feat(core,studio): the character presets pitch shift unlocks

Chipmunk, Giant, and Monster ship as presets on the pitchshift worklet
P1 added: Chipmunk pitches up and adds sparkle, Giant pitches down with
weight and a compressor to hold the extra low end together, Monster pitches
down further with saturation growl and a close, tight reverb. Every param
verified against the live effect registry rather than sketched — the
compressor/reverb/saturate/shelf keys all match exactly.

Each gets its own title treatment (font, size, tracking, hue) so the FX
rack's per-preset styling coverage and hue-distance/background-uniqueness
tests extend cleanly to the three new entries, and complaint-line copy in
the non-voice vocabulary the audit test enforces (no speech words — "Giant"
over CapCut's "Deep Voice", as the design doc records).

Updates plans/audio-fx-presets.md's two limits paragraphs to record that
pitch shift landed and this half of the character list now ships; Robot and
Alien stay out of scope (ring modulation, still unbuilt).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* feat(core): the audio group model — element, membership, helpers

Introduces <hf-audio-group> and data-audio-group as the group model B2–B7
and C1 build on: a non-rendering group element carries a label and (later)
an FX chain, membership lives on the member's own data-audio-group
attribute rather than DOM nesting, so a track removed from the document
simply drops out of the group on the next resolve — nothing dangles.
Groups do not nest: data-audio-group on the group element itself is
ignored. A group with members but no <hf-audio-group> element still
resolves, label falling back to the id, so hand-authored HTML degrades
gracefully. Audio only in v1 — video members are ignored.

Parse-only: nothing routes or sums audio yet (B3/B4). Adds the
audio-groups canary at percentage: 0 gating the future Studio UI; the
element and attribute parse and play regardless of enrollment.

Verified rather than assumed per this plan's standing rule: the timeline's
clip-collection selector ([data-start], [data-track-index],
[data-composition-id], video, audio, img) already excludes the group
element with zero changes, and no lint rule flags unknown elements or
data-* attributes, so neither needed touching — confirmed by grep and by
running `hyperframes lint` against a fixture containing the element (0
findings referencing it). The step doc's suggested display:none injection
point (an existing base stylesheet in the runtime) does not exist in this
codebase; skipped rather than inventing new infrastructure, since an empty,
childless custom element already renders as a zero-size inline box with no
visible output — the same reasoning the lint check above confirms
empirically.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 09:34:47 -07:00

391 lines
14 KiB
JSON

{
"package": "@hyperframes/core",
"localNodeRuntime": true,
"subpaths": {
".": {
"source": "./src/index.ts",
"runtime": "./dist/index.js",
"types": "./dist/index.d.ts",
"environments": ["bun", "node"]
},
"./package.json": {
"source": "./package.json",
"runtime": "./package.json",
"types": null,
"environments": ["browser", "bun", "node"]
},
"./canary": {
"source": "./src/canary.ts",
"runtime": "./dist/canary.js",
"types": "./dist/canary.d.ts",
"environments": ["browser", "bun", "node"]
},
"./canary-registry": {
"source": "./src/canaryRegistry.ts",
"runtime": "./dist/canaryRegistry.js",
"types": "./dist/canaryRegistry.d.ts",
"environments": ["browser", "bun", "node"]
},
"./beats": {
"source": "./src/beats/index.ts",
"runtime": "./dist/beats/index.js",
"types": "./dist/beats/index.d.ts",
"environments": ["browser", "bun", "node"]
},
"./html-attr-safety": {
"source": "./src/utils/htmlAttrSafety.ts",
"runtime": "./dist/utils/htmlAttrSafety.js",
"types": "./dist/utils/htmlAttrSafety.d.ts",
"environments": ["browser", "bun", "node"]
},
"./rich-text-sanitize": {
"source": "./src/utils/richTextSanitize.ts",
"runtime": "./dist/utils/richTextSanitize.js",
"types": "./dist/utils/richTextSanitize.d.ts",
"environments": ["browser", "bun", "node"]
},
"./composition-contract": {
"source": "./src/compositionContract.ts",
"runtime": "./dist/compositionContract.js",
"types": "./dist/compositionContract.d.ts",
"environments": ["browser", "bun", "node"]
},
"./editing": {
"source": "./src/editing/affordances.ts",
"runtime": "./dist/editing/affordances.js",
"types": "./dist/editing/affordances.d.ts",
"environments": ["browser", "bun", "node"]
},
"./editing/draft-markers": {
"source": "./src/editing/draftMarkers.ts",
"runtime": "./dist/editing/draftMarkers.js",
"types": "./dist/editing/draftMarkers.d.ts",
"environments": ["browser", "bun", "node"]
},
"./variables": {
"source": "./src/variables.ts",
"runtime": "./dist/variables.js",
"types": "./dist/variables.d.ts",
"environments": ["browser", "bun", "node"]
},
"./slideshow": {
"source": "./src/slideshow/index.ts",
"runtime": "./dist/slideshow/index.js",
"types": "./dist/slideshow/index.d.ts",
"environments": ["browser", "bun", "node"]
},
"./generators": {
"source": "./src/generators/hyperframes.ts",
"runtime": "./dist/generators/hyperframes.js",
"types": "./dist/generators/hyperframes.d.ts",
"environments": ["browser", "bun", "node"]
},
"./lint": {
"source": "./src/lint/index.ts",
"runtime": "./dist/lint/index.js",
"types": "./dist/lint/index.d.ts",
"environments": ["bun", "node"]
},
"./compiler": {
"source": "./src/compiler/index.ts",
"runtime": "./dist/compiler/index.js",
"types": "./dist/compiler/index.d.ts",
"environments": ["bun", "node"]
},
"./audio-fx": {
"source": "./src/audioFx.ts",
"runtime": "./dist/audioFx.js",
"types": "./dist/audioFx.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-fx-copy": {
"source": "./src/audioFxCopy.ts",
"runtime": "./dist/audioFxCopy.js",
"types": "./dist/audioFxCopy.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-fx-profiles": {
"source": "./src/audioFxProfiles.ts",
"runtime": "./dist/audioFxProfiles.js",
"types": "./dist/audioFxProfiles.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-fx-jobs": {
"source": "./src/audioFxJobs.ts",
"runtime": "./dist/audioFxJobs.js",
"types": "./dist/audioFxJobs.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-fx-eq": {
"source": "./src/audioFxEq.ts",
"runtime": "./dist/audioFxEq.js",
"types": "./dist/audioFxEq.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-leveller": {
"source": "./src/audioLeveller.ts",
"runtime": "./dist/audioLeveller.js",
"types": "./dist/audioLeveller.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-fx-presets": {
"source": "./src/audioFxPresets.ts",
"runtime": "./dist/audioFxPresets.js",
"types": "./dist/audioFxPresets.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-fx-tail": {
"source": "./src/audio/audioFxTail.ts",
"runtime": "./dist/audio/audioFxTail.js",
"types": "./dist/audio/audioFxTail.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-fx-runtime": {
"source": "./src/generated/audio-fx-runtime-inline.ts",
"runtime": "./dist/generated/audio-fx-runtime-inline.js",
"types": "./dist/generated/audio-fx-runtime-inline.d.ts",
"environments": ["bun", "node"]
},
"./audio-carve": {
"source": "./src/audioCarve.ts",
"runtime": "./dist/audioCarve.js",
"types": "./dist/audioCarve.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-groups": {
"source": "./src/audioGroups.ts",
"runtime": "./dist/audioGroups.js",
"types": "./dist/audioGroups.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-automation": {
"source": "./src/audioAutomation.ts",
"runtime": "./dist/audioAutomation.js",
"types": "./dist/audioAutomation.d.ts",
"environments": ["browser", "bun", "node"]
},
"./audio-gain": {
"source": "./src/audioGain.ts",
"runtime": "./dist/audioGain.js",
"types": "./dist/audioGain.d.ts",
"environments": ["browser", "bun", "node"]
},
"./color-grading": {
"source": "./src/colorGrading.ts",
"runtime": "./dist/colorGrading.js",
"types": "./dist/colorGrading.d.ts",
"environments": ["browser", "bun", "node"]
},
"./color-luts": {
"source": "./src/colorLuts.ts",
"runtime": "./dist/colorLuts.js",
"types": "./dist/colorLuts.d.ts",
"environments": ["browser", "bun", "node"]
},
"./media-grade-analyzer": {
"source": "./src/mediaGradeAnalyzer.ts",
"runtime": "./dist/mediaGradeAnalyzer.js",
"types": "./dist/mediaGradeAnalyzer.d.ts",
"environments": ["bun", "node"]
},
"./storyboard": {
"source": "./src/storyboard/index.ts",
"runtime": "./dist/storyboard/index.js",
"types": "./dist/storyboard/index.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime": {
"source": "./dist/hyperframe.runtime.iife.js",
"runtime": "./dist/hyperframe.runtime.iife.js",
"types": null,
"environments": ["browser"]
},
"./runtime/clipTree": {
"source": "./src/runtime/clipTree.ts",
"runtime": "./dist/runtime/clipTree.js",
"types": "./dist/runtime/clipTree.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime/custom-ease": {
"source": "./src/runtime/customEase.ts",
"runtime": "./dist/runtime/customEase.js",
"types": "./dist/runtime/customEase.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime/start-expression": {
"source": "./src/runtime/startExpression.ts",
"runtime": "./dist/runtime/startExpression.js",
"types": "./dist/runtime/startExpression.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime/start-resolver": {
"source": "./src/runtime/startResolver.ts",
"runtime": "./dist/runtime/startResolver.js",
"types": "./dist/runtime/startResolver.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime/protocol": {
"source": "./src/runtime/protocol.ts",
"runtime": "./dist/runtime/protocol.js",
"types": "./dist/runtime/protocol.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime/stacking-context": {
"source": "./src/runtime/stackingContext.ts",
"runtime": "./dist/runtime/stackingContext.js",
"types": "./dist/runtime/stackingContext.d.ts",
"environments": ["browser", "bun", "node"]
},
"./compiler/html-document": {
"source": "./src/compiler/htmlDocument.ts",
"runtime": "./dist/compiler/htmlDocument.js",
"types": "./dist/compiler/htmlDocument.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime/position-edits": {
"source": "./src/runtime/positionEdits.ts",
"runtime": "./dist/runtime/positionEdits.js",
"types": "./dist/runtime/positionEdits.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime/position-edits-render": {
"source": "./src/generated/position-edits-render-inline.ts",
"runtime": "./dist/generated/position-edits-render-inline.js",
"types": "./dist/generated/position-edits-render-inline.d.ts",
"environments": ["browser", "bun", "node"]
},
"./runtime/lottie-readiness": {
"source": "./src/lottieReadiness.ts",
"runtime": "./dist/lottieReadiness.js",
"types": "./dist/lottieReadiness.d.ts",
"environments": ["browser", "bun", "node"]
},
"./studio-api": {
"source": "./src/studio-api/index.ts",
"runtime": "./dist/studio-api/index.js",
"types": "./dist/studio-api/index.d.ts",
"environments": ["bun", "node"]
},
"./studio-api/screenshot-clip": {
"source": "./src/studio-api/helpers/screenshotClip.ts",
"runtime": "./dist/studio-api/helpers/screenshotClip.js",
"types": "./dist/studio-api/helpers/screenshotClip.d.ts",
"environments": ["bun", "node"]
},
"./studio-api/manual-edits-render-script": {
"source": "./src/studio-api/helpers/manualEditsRenderScript.ts",
"runtime": "./dist/studio-api/helpers/manualEditsRenderScript.js",
"types": "./dist/studio-api/helpers/manualEditsRenderScript.d.ts",
"environments": ["bun", "node"]
},
"./studio-api/studio-motion-render-script": {
"source": "./src/studio-api/helpers/studioMotionRenderScript.ts",
"runtime": "./dist/studio-api/helpers/studioMotionRenderScript.js",
"types": "./dist/studio-api/helpers/studioMotionRenderScript.d.ts",
"environments": ["bun", "node"]
},
"./studio-api/draft-markers": {
"source": "./src/studio-api/helpers/draftMarkers.ts",
"runtime": "./dist/studio-api/helpers/draftMarkers.js",
"types": "./dist/studio-api/helpers/draftMarkers.d.ts",
"environments": ["browser", "bun", "node"]
},
"./studio-api/finite-mutation": {
"source": "./src/studio-api/helpers/finiteMutation.ts",
"runtime": "./dist/studio-api/helpers/finiteMutation.js",
"types": "./dist/studio-api/helpers/finiteMutation.d.ts",
"environments": ["bun", "node"]
},
"./text": {
"source": "./src/text/index.ts",
"runtime": "./dist/text/index.js",
"types": "./dist/text/index.d.ts",
"environments": ["browser", "bun", "node"]
},
"./registry": {
"source": "./src/registry/index.ts",
"runtime": "./dist/registry/index.js",
"types": "./dist/registry/index.d.ts",
"environments": ["browser", "bun", "node"]
},
"./media-volume-envelope": {
"source": "./src/runtime/mediaVolumeEnvelope.ts",
"runtime": "./dist/runtime/mediaVolumeEnvelope.js",
"types": "./dist/runtime/mediaVolumeEnvelope.d.ts",
"environments": ["browser", "bun", "node"]
},
"./hf-ids": {
"source": "./src/parsers/hfIds.ts",
"runtime": "./dist/parsers/hfIds.js",
"types": "./dist/parsers/hfIds.d.ts",
"environments": ["browser", "bun", "node"]
},
"./gsap-parser": {
"source": "./src/parsers/gsapParserExports.ts",
"runtime": "./dist/parsers/gsapParserExports.js",
"types": "./dist/parsers/gsapParserExports.d.ts",
"environments": ["browser", "bun", "node"]
},
"./gsap-parser-acorn": {
"source": "./src/parsers/gsapParserAcorn.ts",
"runtime": "./dist/parsers/gsapParserAcorn.js",
"types": "./dist/parsers/gsapParserAcorn.d.ts",
"environments": ["browser", "bun", "node"]
},
"./gsap-writer-acorn": {
"source": "./src/parsers/gsapWriterAcorn.ts",
"runtime": "./dist/parsers/gsapWriterAcorn.js",
"types": "./dist/parsers/gsapWriterAcorn.d.ts",
"environments": ["browser", "bun", "node"]
},
"./gsap-constants": {
"source": "./src/parsers/gsapConstants.ts",
"runtime": "./dist/parsers/gsapConstants.js",
"types": "./dist/parsers/gsapConstants.d.ts",
"environments": ["browser", "bun", "node"]
},
"./spring-ease": {
"source": "./src/parsers/springEase.ts",
"runtime": "./dist/parsers/springEase.js",
"types": "./dist/parsers/springEase.d.ts",
"environments": ["browser", "bun", "node"]
},
"./wiggle-ease": {
"source": "./src/runtime/wiggleEase.ts",
"runtime": "./dist/runtime/wiggleEase.js",
"types": "./dist/runtime/wiggleEase.d.ts",
"environments": ["browser", "bun", "node"]
},
"./fonts/aliases": {
"source": "./src/fonts/aliases.ts",
"runtime": "./dist/fonts/aliases.js",
"types": "./dist/fonts/aliases.d.ts",
"environments": ["browser", "bun", "node"]
},
"./fonts/system-locator": {
"source": "./src/fonts/systemFontLocator.ts",
"runtime": "./dist/fonts/systemFontLocator.js",
"types": "./dist/fonts/systemFontLocator.d.ts",
"environments": ["bun", "node"]
},
"./figma": {
"source": "./src/figma/index.ts",
"runtime": "./dist/figma/index.js",
"types": "./dist/figma/index.d.ts",
"environments": ["bun", "node"]
},
"./schemas/registry.json": {
"source": "./schemas/registry.json",
"runtime": "./schemas/registry.json",
"types": null,
"environments": ["browser", "bun", "node"]
},
"./schemas/registry-item.json": {
"source": "./schemas/registry-item.json",
"runtime": "./schemas/registry-item.json",
"types": null,
"environments": ["browser", "bun", "node"]
}
}
}