hyperweave 0.2.2__tar.gz → 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hyperweave-0.2.2 → hyperweave-0.2.3}/CHANGELOG.md +14 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/PKG-INFO +1 -1
- {hyperweave-0.2.2 → hyperweave-0.2.3}/pyproject.toml +1 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/_version.py +2 -2
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/resolver.py +11 -4
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/core/schema.py +13 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/genomes/chrome-horizon.json +4 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/badge/chrome-defs.j2 +8 -3
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/stats/chrome-content.j2 +9 -15
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/chrome-defs.j2 +1 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_github_scrape.py +8 -8
- {hyperweave-0.2.2 → hyperweave-0.2.3}/.dockerignore +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/.github/workflows/ci.yml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/.github/workflows/deploy.yml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/.github/workflows/publish.yml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/.gitignore +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/Dockerfile +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/LICENSE +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/README.md +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/buttons/button-liquid.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/cards/card-butterfly.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/cards/card-python.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/cards/card-sunflower.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/cards/card-waves.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/badge_critical.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/badge_passing.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/badge_warning.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/banner.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/icons/discord.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/icons/notion.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/icons/reddit.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/icons/spotify.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/icons/youtube.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/marquee_counter.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/marquee_horizontal.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/marquee_vertical.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/profile-cards/chart_stars_full.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/profile-cards/stats.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/strip.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/badge_critical.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/badge_passing.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/badge_warning.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/banner.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/icons/bluesky.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/icons/github.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/icons/instagram.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/icons/mastodon.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/icons/x.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/marquee_counter.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/marquee_horizontal.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/marquee_vertical.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/profile-cards/chart_stars_full.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/profile-cards/stats.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/strip.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/telemetry/master_card.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/telemetry/receipt.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/telemetry/rhythm_strip.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/footers/inneraura-footer-liquid.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/footers/inneraura-footer-purple.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/footers/inneraura-footer.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/hyperweave-banner.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/icons/cobalt-sapphire-discord.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/icons/cobalt-sapphire-docs.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/icons/cobalt-sapphire-github.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/icons/cobalt-sapphire-instagram.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/icons/cobalt-sapphire-linkedin.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/icons/cobalt-sapphire-tiktok.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/icons/cobalt-sapphire-x.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/icons/cobalt-sapphire-youtube.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/marquees/badge-showcase-triple.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/marquees/genome-marquee-triple.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/marquees/sample-badges.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/404.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/callout-icons.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/divider.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/favicon.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/hero-banner.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/hyperweave-banner-v2.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/hyperweave-navbar-logo.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/loader.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/mintlify-assets/og-image.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/assets/timelines/hyperweave-roadmap.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/assets/favicon.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/assets/hyperweave-banner.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/assets/hyperweave-navbar-logo.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/assets/og-image.svg +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/explanation/architecture.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/explanation/camo-compatibility.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/explanation/cim-compliance.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/explanation/genome-profile-system.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/explanation/metadata-tiers.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/how-to/add-motion-to-badges.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/how-to/create-session-receipts.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/how-to/set-up-claude-code-hooks.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/how-to/use-live-data-badges.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/introduction.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/mint.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/quickstart.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/reference/cli.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/reference/compose-spec.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/reference/genomes.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/reference/http-api.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/reference/mcp-tools.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/reference/motions.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/reference/telemetry-contract.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/spec/hyperweave-protocol.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/tutorials/build-an-artifact-kit.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/tutorials/compose-your-first-badge.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/docs/tutorials/install-session-telemetry.mdx +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/fly.toml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/hooks/install.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/hooks/session_end.sh +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/justfile +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/scripts/extract_glyphs.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/scripts/generate_hw_compliant.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/scripts/generate_proofset.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/scripts/stress_test.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/__main__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/cli.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/assembler.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/context.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/engine.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/lanes.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/resolvers/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/resolvers/chart.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/resolvers/stats.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/compose/resolvers/timeline.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/config/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/config/genome_validator.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/config/loader.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/config/registry.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/config/settings.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/connectors/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/connectors/arxiv.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/connectors/base.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/connectors/cache.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/connectors/github.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/connectors/rest.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/core/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/core/color.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/core/contracts.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/core/enums.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/core/models.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/core/text.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/core/thresholds.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/css/accessibility.css +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/css/bridge.css +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/css/expression.css +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/css/phase-colors.css +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/css/status.css +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/css/telemetry.css +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/font-metrics/inter.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/fonts/jetbrains-mono.b64 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/fonts/jetbrains-mono.meta.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/fonts/orbitron.b64 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/fonts/orbitron.meta.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/genomes/brutalist-emerald.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/genomes/telemetry-void.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/glyphs.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/border/chromatic-pulse.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/border/corner-trace.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/border/dual-orbit.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/border/entanglement.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/border/rimrun.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/bars.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/breach.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/broadcast.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/cascade.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/collapse.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/converge.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/crash.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/drop.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/kinetic/pulse.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/motions/static.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/policies/normal.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/policies/permissive.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/policies/ungoverned.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/profiles/brutalist.contract.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/profiles/brutalist.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/profiles/chrome.contract.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/profiles/chrome.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/specimens.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/telemetry/model-pricing.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/telemetry/stage-config.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/telemetry/stage-labels.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/telemetry/tool-classes.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/telemetry/tool-colors.yaml +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/arrow.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/aurora.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/beacon.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/bracket3d.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/chevron.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/crosshair.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/diamond.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/rocket.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/rules/bar.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/rules/dashed.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/rules/five-wave.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/rules/spectral.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/rules/straight.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/rules/wave.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/data/terminals/stijl.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/kit.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/mcp/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/mcp/__main__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/mcp/server.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/py.typed +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/render/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/render/chart_engine.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/render/fonts.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/render/glyphs.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/render/motion.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/render/templates.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/serve/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/serve/app.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/telemetry/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/telemetry/capture.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/telemetry/contract.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/telemetry/corrections.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/telemetry/cost.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/telemetry/models.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/telemetry/parser.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/telemetry/stages.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/filter.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/glyph-inline.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/glyph.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/gradient.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/metadata.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/metric.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/phase-segment.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/rule.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/status.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/terminal.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/components/treemap.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/document.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/error-badge.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/badge/brutalist-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/badge/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/badge/chrome-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/badge/default-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/badge/default-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/badge.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/banner/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/banner/chrome-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/banner/default-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/banner.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/catalog.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/chart/brutalist-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/chart/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/chart/chrome-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/chart/chrome-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/chart.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/divider.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/icon/brutalist-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/icon/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/icon/chrome-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/icon/chrome-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/icon/default-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/icon/default-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/icon.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-counter/brutalist-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-counter/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-counter/chrome-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-counter/chrome-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-counter.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-horizontal/chrome-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-horizontal/chrome-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-horizontal.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-vertical/brutalist-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-vertical/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-vertical/chrome-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-vertical/chrome-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/marquee-vertical.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/master-card.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/receipt.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/rhythm-strip.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/stats/brutalist-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/stats/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/stats/chrome-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/stats.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/brutalist-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/brutalist-status.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/chrome-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/chrome-status.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/default-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/default-defs.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip/default-status.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/strip.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/timeline/default-content.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/timeline.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/border/chromatic-pulse.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/border/corner-trace.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/border/dual-orbit.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/border/entanglement.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/border/rimrun.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/bars.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/breach.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/broadcast.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/cascade.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/collapse.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/converge.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/crash.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/drop.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/motions/kinetic/pulse.svg.j2 +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/__init__.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/conftest.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/fixtures/github_contributions/synthetic.html +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/fixtures/session.json +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/fixtures/session.jsonl +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_assembler.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_chart_engine.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_chart_frame.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_connectors.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_core.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_kit.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_mcp.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_paradigm_dispatch.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_proofset.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_render.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_serve.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_stats_card.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_telemetry.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_telemetry_integration.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/tests/test_timeline.py +0 -0
- {hyperweave-0.2.2 → hyperweave-0.2.3}/uv.lock +0 -0
|
@@ -5,6 +5,20 @@ All notable changes to HyperWeave are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.3] - 2026-04-13
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Genome-level `text_metrics` field.** Genomes can now declare per-zone text width multipliers (`badge_label_width_factor`, `badge_value_width_factor`) so the resolver sizes frames correctly for non-default display fonts. Defaults preserve pre-v0.2.3 behavior; new fonts (e.g. Orbitron on chrome-horizon) opt in without touching the resolver. Extensible to future zones without a schema change.
|
|
13
|
+
- chrome-horizon ships `badge_value_width_factor = 1.35` to match Orbitron 900 glyph advances at the compositor badge scale.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **Orbitron was not actually loading on badges and strips.** The v0.2.0 font bundler emits `@font-face` via a `{{ font_faces | safe }}` Jinja variable, but that variable was only rendered in `stats/chrome-defs.j2` and `chart/chrome-defs.j2` — badge and strip chrome-defs templates omitted it. As a result, v0.2.1's switch to `var(--dna-font-display)` fell through to the system-ui fallback instead of rendering Orbitron. `{{ font_faces | safe }}` is now emitted in `badge/chrome-defs.j2` and `strip/chrome-defs.j2` so the bundled WOFF2 actually loads.
|
|
18
|
+
- **chrome-horizon badge typography overflow.** Compounded by the font-loading bug above, v0.2.1's badge font sizes (11/17 label/value) matched the magazine's 200x52 showcase badge but the compositor badge is 125x22 (~40% of magazine scale). Scaled to 8/11 and combined with the new `text_metrics` width factor so the value text and status diamond no longer collide.
|
|
19
|
+
- **Activity bar vector halos produced visible "fat bar" artifacts on mobile.** The v0.2.1 fix replaced `feGaussianBlur` with 2-layer sibling-rect halos, but those expanded the visual width of each 7px bar by 4px total, which read as blurry on small viewports. The magazine specimen's light-cyan top highlight is carried by the `ch-bar` gradient's first stop (#C8DAE6) alone, not by any halo — so the halos are removed entirely. Bars render as crisp gradient rects at every scale.
|
|
20
|
+
- `tier2/` added to ruff `extend-exclude` so `just fmt` no longer trips on internal research files.
|
|
21
|
+
|
|
8
22
|
## [0.2.2] - 2026-04-13
|
|
9
23
|
|
|
10
24
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hyperweave
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Headless visual output layer for AI agents. One API call → self-contained SVG.
|
|
5
5
|
Project-URL: Repository, https://github.com/InnerAura/hyperweave
|
|
6
6
|
Project-URL: Issues, https://github.com/InnerAura/hyperweave/issues
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 2,
|
|
21
|
+
__version__ = version = '0.2.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 2, 3)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -148,10 +148,17 @@ def resolve_badge(
|
|
|
148
148
|
if use_mono and label_display:
|
|
149
149
|
lw += len(label_display) * font_size * 0.06
|
|
150
150
|
|
|
151
|
-
#
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
151
|
+
# Empirical width factors — the Inter/mono LUTs approximate actual rendered
|
|
152
|
+
# width, but genomes can override per-zone to match their declared fonts.
|
|
153
|
+
# chrome-horizon, for example, renders badge values in Orbitron (~1.35x
|
|
154
|
+
# Inter). New genomes should measure their display font and declare their
|
|
155
|
+
# own `text_metrics` to avoid value-zone overflow. Defaults preserve the
|
|
156
|
+
# pre-v0.2.3 behavior so existing genomes are unaffected.
|
|
157
|
+
tm = genome.get("text_metrics", {})
|
|
158
|
+
default_label_factor = 1.15 if not use_mono else 1.0
|
|
159
|
+
default_value_factor = 1.10 if not use_mono else 1.0
|
|
160
|
+
lw *= tm.get("badge_label_width_factor", default_label_factor)
|
|
161
|
+
vw *= tm.get("badge_value_width_factor", default_value_factor)
|
|
155
162
|
|
|
156
163
|
has_glyph = bool(spec.glyph or spec.custom_glyph_svg)
|
|
157
164
|
|
|
@@ -211,6 +211,19 @@ class GenomeSpec(BaseModel):
|
|
|
211
211
|
description="Material hints: surface (matte/gloss), depth, filter_chain",
|
|
212
212
|
)
|
|
213
213
|
|
|
214
|
+
# -- Text metrics (optional, per-zone width factors for empirical calibration) --
|
|
215
|
+
# The text-measurement LUT is Inter-calibrated; genomes that render with wider
|
|
216
|
+
# fonts (e.g. Orbitron 900 for chrome-horizon badge values) declare a
|
|
217
|
+
# post-measurement multiplier per zone. Defaults preserve pre-v0.2.3 behavior
|
|
218
|
+
# (1.0 for mono, 1.10-1.15 for non-mono via the resolver fallback).
|
|
219
|
+
# Known zone keys: badge_label_width_factor, badge_value_width_factor.
|
|
220
|
+
# Future zones (strip_value_width_factor, banner_hero_width_factor, etc.) can
|
|
221
|
+
# be added without schema change.
|
|
222
|
+
text_metrics: dict[str, float] = Field(
|
|
223
|
+
default_factory=dict,
|
|
224
|
+
description="Per-zone text width multipliers (e.g. badge_value_width_factor=1.35 for Orbitron)",
|
|
225
|
+
)
|
|
226
|
+
|
|
214
227
|
# -- Kinetic cascade (optional, motion timing + compatible vocab) --
|
|
215
228
|
motion_config: dict[str, Any] = Field(
|
|
216
229
|
default_factory=dict,
|
|
@@ -45,15 +45,20 @@
|
|
|
45
45
|
<stop offset="{{ stop.offset }}" stop-color="{{ stop.color }}"/>
|
|
46
46
|
{% endfor %}
|
|
47
47
|
</linearGradient>
|
|
48
|
-
{# ── Typography (class-based,
|
|
48
|
+
{# ── Typography (class-based, scaled for 22px compositor badge).
|
|
49
|
+
Magazine specimen uses 11/17 label/value at 200×52; compositor badge is
|
|
50
|
+
125×22 (~40% of magazine scale), so sizes proportionally compress.
|
|
51
|
+
Design intent preserved: Orbitron replaces Impact for values, skew removed.
|
|
52
|
+
@font-face for bundled WOFF2 emitted so Orbitron actually loads. #}
|
|
49
53
|
<style>
|
|
54
|
+
{{ font_faces | safe }}
|
|
50
55
|
.{{ uid }}-label {
|
|
51
56
|
font-family: var(--dna-font-mono, 'JetBrains Mono', 'SF Mono', monospace);
|
|
52
|
-
font-size:
|
|
57
|
+
font-size: 8px; font-weight: 600; letter-spacing: 0.10em;
|
|
53
58
|
}
|
|
54
59
|
.{{ uid }}-value {
|
|
55
60
|
font-family: var(--dna-font-display, 'Orbitron', 'Space Grotesk', sans-serif);
|
|
56
|
-
font-size:
|
|
61
|
+
font-size: 11px; font-weight: 900; letter-spacing: 0.02em;
|
|
57
62
|
}
|
|
58
63
|
</style>
|
|
59
64
|
<clipPath id="{{ uid }}-clip"><rect width="{{ width }}" height="{{ height }}" rx="{{ chrome_corner | default('4') }}"/></clipPath>
|
{hyperweave-0.2.2 → hyperweave-0.2.3}/src/hyperweave/templates/frames/stats/chrome-content.j2
RENAMED
|
@@ -78,10 +78,12 @@
|
|
|
78
78
|
<line x1="{{ (ch_start_x + q * ch_stride) | round(1) }}" y1="{{ ch_baseline + 1.5 }}" x2="{{ (ch_start_x + q * ch_stride) | round(1) }}" y2="{{ ch_baseline + 4 }}" stroke="#A8C0D0" stroke-width="0.4" opacity="0.5"/>
|
|
79
79
|
{% endfor %}
|
|
80
80
|
|
|
81
|
-
{# Activity bars —
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
{# Activity bars — pure gradient rects, no halo. The magazine's light-cyan
|
|
82
|
+
top edge comes from the `ch-bar` gradient's first stop (#C8DAE6), not a
|
|
83
|
+
feGaussianBlur halo. On mobile, removing the filter eliminates the soft
|
|
84
|
+
blur from rasterized-buffer downsampling; on desktop, the gradient's top
|
|
85
|
+
stop alone carries the icy-highlight aesthetic. #}
|
|
86
|
+
<g data-hw-zone="activity-bars" fill="url(#{{ uid }}-bar)">
|
|
85
87
|
{% for bar in activity_bars %}
|
|
86
88
|
{# Zero-count weeks render as 2px stubs; non-zero weeks use sqrt scaling. #}
|
|
87
89
|
{% if bar.count == 0 %}
|
|
@@ -89,17 +91,9 @@
|
|
|
89
91
|
{% else %}
|
|
90
92
|
{% set h = [4, ((bar.count / ch_peak) ** 0.5 * ch_max_h) | int] | max %}
|
|
91
93
|
{% endif %}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
<rect x="{{ bx - 2 }}" y="{{ by - 2 }}" width="{{ ch_bar_w + 4 }}" height="{{ h + 4 }}" rx="2"
|
|
96
|
-
fill="#A8D4F0" opacity="0.10"/>
|
|
97
|
-
{# Inner halo — tighter brighter glow #}
|
|
98
|
-
<rect x="{{ bx - 1 }}" y="{{ by - 1 }}" width="{{ ch_bar_w + 2 }}" height="{{ h + 2 }}" rx="1.5"
|
|
99
|
-
fill="#A8D4F0" opacity="0.22"/>
|
|
100
|
-
{# Bar body — gradient fill #}
|
|
101
|
-
<rect x="{{ bx }}" y="{{ by }}" width="{{ ch_bar_w }}" height="{{ h }}" rx="1"
|
|
102
|
-
fill="url(#{{ uid }}-bar)" shape-rendering="geometricPrecision"/>
|
|
94
|
+
<rect x="{{ (ch_start_x + loop.index0 * ch_stride) | round(1) }}" y="{{ ch_baseline - h }}"
|
|
95
|
+
width="{{ ch_bar_w }}" height="{{ h }}" rx="1"
|
|
96
|
+
shape-rendering="geometricPrecision"/>
|
|
103
97
|
{% endfor %}
|
|
104
98
|
</g>
|
|
105
99
|
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
keeps shields.io-style Impact+skew but with silver hero gradient fill tying it
|
|
68
68
|
visually to stats/chart hero numbers. #}
|
|
69
69
|
<style>
|
|
70
|
+
{{ font_faces | safe }}
|
|
70
71
|
.{{ uid }}-identity {
|
|
71
72
|
font-family: var(--dna-font-mono, 'JetBrains Mono', monospace);
|
|
72
73
|
font-size: 11px; font-weight: 900; letter-spacing: 0.18em;
|
|
@@ -72,11 +72,11 @@ def test_parse_streak_grace_day_for_empty_today() -> None:
|
|
|
72
72
|
'<td class="ContributionCalendar-day" data-date="2025-04-10" data-level="3"> </td>'
|
|
73
73
|
'<td class="ContributionCalendar-day" data-date="2025-04-11" data-level="4"> </td>'
|
|
74
74
|
'<td class="ContributionCalendar-day" data-date="2025-04-12" data-level="0"> </td>'
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
"<tool-tip>No contributions on April 8</tool-tip>"
|
|
76
|
+
"<tool-tip>5 contributions on April 9</tool-tip>"
|
|
77
|
+
"<tool-tip>12 contributions on April 10</tool-tip>"
|
|
78
|
+
"<tool-tip>30 contributions on April 11</tool-tip>"
|
|
79
|
+
"<tool-tip>No contributions on April 12</tool-tip>"
|
|
80
80
|
)
|
|
81
81
|
parsed = parse_contribution_html(html)
|
|
82
82
|
# Today (Apr 12) is empty → grace. Apr 11 (30), Apr 10 (12), Apr 9 (5) are
|
|
@@ -90,9 +90,9 @@ def test_parse_streak_two_consecutive_zeros_break() -> None:
|
|
|
90
90
|
'<td class="ContributionCalendar-day" data-date="2025-04-10" data-level="3"> </td>'
|
|
91
91
|
'<td class="ContributionCalendar-day" data-date="2025-04-11" data-level="0"> </td>'
|
|
92
92
|
'<td class="ContributionCalendar-day" data-date="2025-04-12" data-level="0"> </td>'
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
"<tool-tip>12 contributions on April 10</tool-tip>"
|
|
94
|
+
"<tool-tip>No contributions on April 11</tool-tip>"
|
|
95
|
+
"<tool-tip>No contributions on April 12</tool-tip>"
|
|
96
96
|
)
|
|
97
97
|
parsed = parse_contribution_html(html)
|
|
98
98
|
# Today (Apr 12) is grace-zero, Apr 11 is also zero → streak breaks.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/marquee_horizontal.svg
RENAMED
|
File without changes
|
{hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/marquee_vertical.svg
RENAMED
|
File without changes
|
|
File without changes
|
{hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/brutalist-emerald/profile-cards/stats.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperweave-0.2.2 → hyperweave-0.2.3}/assets/examples/chrome-horizon/profile-cards/stats.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|