hyperweave 0.2.23__tar.gz → 0.2.24__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.23 → hyperweave-0.2.24}/CHANGELOG.md +20 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/PKG-INFO +1 -1
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/_version.py +2 -2
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/resolver.py +0 -46
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/treemap.py +25 -3
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/receipt.svg.j2 +2 -2
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_compose_treemap.py +107 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_proofset.py +28 -7
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_telemetry_integration.py +5 -4
- hyperweave-0.2.23/src/hyperweave/templates/components/treemap.svg.j2 +0 -46
- {hyperweave-0.2.23 → hyperweave-0.2.24}/.dockerignore +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/.github/workflows/ci.yml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/.github/workflows/deploy.yml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/.github/workflows/publish.yml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/.gitignore +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/.pre-commit-config.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/Dockerfile +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/LICENSE +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/README.md +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/buttons/button-liquid.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/cards/card-butterfly.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/cards/card-python.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/cards/card-sunflower.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/cards/card-waves.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/badge_critical.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/badge_passing.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/badge_warning.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/banner.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/icons/discord.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/icons/notion.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/icons/reddit.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/icons/spotify.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/icons/youtube.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/marquee_counter.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/marquee_horizontal.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/marquee_vertical.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/profile-cards/chart_stars_full.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/profile-cards/stats.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/strip.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/badge_critical.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/badge_passing.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/badge_warning.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/banner.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/icons/bluesky.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/icons/github.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/icons/instagram.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/icons/mastodon.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/icons/x.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/marquee_counter.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/marquee_horizontal.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/marquee_vertical.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/profile-cards/chart_stars_full.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/profile-cards/stats.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/strip.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/master_card.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/receipt.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/receipt_claude-code_medium.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/receipt_codex_large.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/receipt_voltage_xlarge.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/rhythm_strip.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/rhythm_strip_voltage_xlarge.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/footers/inneraura-footer-liquid.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/footers/inneraura-footer-purple.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/footers/inneraura-footer.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/hyperweave-banner.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/icons/cobalt-sapphire-discord.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/icons/cobalt-sapphire-docs.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/icons/cobalt-sapphire-github.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/icons/cobalt-sapphire-instagram.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/icons/cobalt-sapphire-linkedin.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/icons/cobalt-sapphire-tiktok.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/icons/cobalt-sapphire-x.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/icons/cobalt-sapphire-youtube.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/marquees/badge-showcase-triple.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/marquees/genome-marquee-triple.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/marquees/sample-badges.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/404.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/callout-icons.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/divider.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/favicon.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/hero-banner.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/hyperweave-banner-v2.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/hyperweave-navbar-logo.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/loader.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/mintlify-assets/og-image.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/assets/timelines/hyperweave-roadmap.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/assets/favicon.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/assets/hyperweave-banner.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/assets/hyperweave-navbar-logo.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/assets/og-image.svg +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/explanation/architecture.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/explanation/camo-compatibility.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/explanation/cim-compliance.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/explanation/genome-profile-system.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/explanation/metadata-tiers.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/how-to/add-motion-to-badges.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/how-to/create-session-receipts.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/how-to/set-up-claude-code-hooks.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/how-to/use-live-data-badges.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/introduction.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/mint.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/quickstart.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/reference/cli.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/reference/compose-spec.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/reference/genomes.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/reference/http-api.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/reference/mcp-tools.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/reference/motions.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/reference/telemetry-contract.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/spec/hyperweave-protocol.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/tutorials/build-an-artifact-kit.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/tutorials/compose-your-first-badge.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/docs/tutorials/install-session-telemetry.mdx +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/fly.toml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/hooks/install.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/hooks/session_end.sh +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/justfile +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/pyproject.toml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/scripts/extract_font_metrics.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/scripts/extract_glyphs.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/scripts/generate_proofset.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/scripts/probe_live_stats.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/scripts/probe_star_history.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/scripts/stress_test.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/__main__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/cli.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/assembler.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/bar_chart.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/context.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/engine.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/lanes.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/resolvers/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/resolvers/chart.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/resolvers/stats.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/rhythm.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/rhythm_strip.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/compose/validate_paradigms.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/config/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/config/genome_validator.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/config/loader.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/config/registry.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/config/settings.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/connectors/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/connectors/arxiv.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/connectors/base.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/connectors/cache.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/connectors/github.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/connectors/rest.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/cell_layout.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/color.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/contracts.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/enums.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/font_metrics.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/models.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/paradigm.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/schema.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/state.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/text.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/core/thresholds.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/css/accessibility.css +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/css/bridge.css +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/css/expression.css +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/css/status.css +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/font-metrics/chakra-petch.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/font-metrics/inter.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/font-metrics/jetbrains-mono.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/font-metrics/orbitron.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/fonts/chakra-petch.b64 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/fonts/chakra-petch.meta.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/fonts/jetbrains-mono.b64 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/fonts/jetbrains-mono.meta.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/fonts/orbitron.b64 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/fonts/orbitron.meta.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/genomes/automata.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/genomes/brutalist.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/genomes/chrome.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/genomes/telemetry-claude-code.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/genomes/telemetry-codex.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/genomes/telemetry-cream.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/genomes/telemetry-voltage.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/glyphs.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/motions/border/chromatic-pulse.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/motions/border/corner-trace.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/motions/border/dual-orbit.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/motions/border/entanglement.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/motions/border/rimrun.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/motions/static.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/paradigms/brutalist.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/paradigms/cellular.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/paradigms/chrome.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/paradigms/default.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/policies/normal.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/policies/permissive.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/policies/ungoverned.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/profiles/brutalist.contract.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/profiles/brutalist.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/profiles/chrome.contract.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/profiles/chrome.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/specimens.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/telemetry/model-pricing.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/telemetry/runtimes/claude-code.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/telemetry/runtimes/codex.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/telemetry/stage-config.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/telemetry/stage-labels.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/telemetry/tool-colors.yaml +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/arrow.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/aurora.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/beacon.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/bracket3d.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/chevron.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/crosshair.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/diamond.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/rocket.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/rules/bar.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/rules/dashed.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/rules/five-wave.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/rules/spectral.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/rules/straight.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/rules/wave.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/data/terminals/stijl.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/kit.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/mcp/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/mcp/__main__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/mcp/server.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/py.typed +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/render/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/render/chart_engine.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/render/fonts.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/render/glyphs.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/render/motion.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/render/templates.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/serve/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/serve/app.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/serve/data_tokens.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/capture.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/codex_parser.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/contract.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/corrections.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/cost.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/models.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/parser.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/runtimes.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/telemetry/stages.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-area.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-axes.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-empty-state.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-gridlines.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-markers/circle.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-markers/diamond.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-markers/endpoint-diamond.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-markers/endpoint-rect.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-markers/rect.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-milestone.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/chart-polyline.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/filter.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/glyph-inline.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/glyph.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/gradient.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/metadata.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/metric.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/phase-segment.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/rule.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/status.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/components/terminal.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/document.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/error-badge.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge/brutalist-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge/cellular-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge/cellular-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge/chrome-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge/chrome-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge/default-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge/default-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/badge.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/catalog.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/chart/brutalist-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/chart/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/chart/cellular-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/chart/cellular-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/chart/chrome-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/chart/chrome-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/chart.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/divider/brutalist-seam.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/divider/chrome-band.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/divider.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon/brutalist-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon/cellular-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon/cellular-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon/chrome-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon/chrome-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon/default-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon/default-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/icon.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-overlay.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/cellular-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/cellular-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/cellular-overlay.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/chrome-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/chrome-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/chrome-overlay.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/default-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal/default-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/marquee-horizontal.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/master-card.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/rhythm-strip.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/stats/brutalist-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/stats/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/stats/cellular-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/stats/cellular-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/stats/chrome-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/stats/chrome-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/stats.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/brutalist-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/brutalist-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/brutalist-status.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/cellular-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/cellular-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/cellular-status.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/chrome-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/chrome-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/chrome-status.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/default-content.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/default-defs.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip/default-status.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/frames/strip.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/motions/border/chromatic-pulse.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/motions/border/corner-trace.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/motions/border/dual-orbit.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/motions/border/entanglement.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/motions/border/rimrun.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/partials/provider-glyphs.svg.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/src/hyperweave/templates/partials/state-signal-cascade.j2 +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/__init__.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/conftest.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/fixtures/codex_session.jsonl +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/fixtures/codex_session_patches.jsonl +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/fixtures/github_contributions/synthetic.html +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/fixtures/session.json +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/fixtures/session.jsonl +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/helpers.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_assembler.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_badge_cellular.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_chart_engine.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_chart_frame.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_codex_parser.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_compose_bar_chart.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_compose_rhythm_strip.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_compose_variant_field.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_connectors.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_core.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_data_tokens.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_divider_cellular.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_divider_genome_specific.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_font_metrics_chakra.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_genome_automata.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_github_scrape.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_kit.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_marquee_v0_2_16.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_mcp.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_paradigm_cellular.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_paradigm_dispatch.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_paradigm_extensibility.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_parse_transcript_auto.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_receipt_token_compliance.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_render.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_resolver_rhythm.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_runtime_registries.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_serve.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_serve_live_state.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_slot_metric_state.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_state_inference.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_stats_card.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_strip_cellular.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_strip_status_toggle.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_telemetry.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_telemetry_contract_per_stage.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_telemetry_skin_dispatch.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_tool_class_completeness.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/tests/test_variant_default_resolution.py +0 -0
- {hyperweave-0.2.23 → hyperweave-0.2.24}/uv.lock +0 -0
|
@@ -5,6 +5,26 @@ 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.24] - 2026-05-07
|
|
9
|
+
|
|
10
|
+
Receipts no longer clip past the right edge of the card when one tool dominates the session. Cleanup pass removes an unused template, an unused styling table, and two silent default-position fallbacks in the receipt template.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Token map row could overflow the receipt's right edge** — sessions where a single tool used most of the tokens (for example 95% by one tool, the rest split between two others) made the smallest tool's cell extend past the card's right edge, hiding part of its label. The token map now shrinks cells proportionally when the row would otherwise overflow, with a minimum width that keeps every cell visible as a readable colored block.
|
|
15
|
+
|
|
16
|
+
### Removed
|
|
17
|
+
|
|
18
|
+
- **Unused template `templates/components/treemap.svg.j2`** — orphan from before v0.2.21 with no remaining callers in the rendering pipeline.
|
|
19
|
+
- **Unused styling table in `compose/resolver.py`** — values had drifted from the live source in `treemap.py` and no template read it.
|
|
20
|
+
- **Silent default-position fallbacks for the provider and model labels** — these positions are always computed from the actual rendered text width; missing values now raise a clear template error instead of silently rendering at the legacy hardcoded position.
|
|
21
|
+
|
|
22
|
+
### Notes
|
|
23
|
+
|
|
24
|
+
- 914 tests (was 910); 4 new tests cover token-map cell widths under heavy and balanced tool distributions plus the row of small tool cells fitting within the card.
|
|
25
|
+
- The row of small tool cells was already safe by construction (8 cells * 90px + 7 gaps * 4px = 748 <= 752); a defensive test now locks that contract.
|
|
26
|
+
- ruff + format + mypy --strict green.
|
|
27
|
+
|
|
8
28
|
## [0.2.23] - 2026-05-06
|
|
9
29
|
|
|
10
30
|
Multi-runtime tool registry replaces v0.2.22's single empirical `tool-classes.yaml`. Codex receipts ship as the second runtime via spec-driven YAML registries dispatched by JSONL-shape auto-detection.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hyperweave
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.24
|
|
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.24'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 2, 24)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1606,51 +1606,6 @@ def _wall_clock_minutes(stages: list[dict[str, Any]], fallback_m: float) -> floa
|
|
|
1606
1606
|
return max((max(ends) - min(starts)).total_seconds() / 60.0, 1.0)
|
|
1607
1607
|
|
|
1608
1608
|
|
|
1609
|
-
# ── Tier styling table for the treemap (Phase B template thinness) ──
|
|
1610
|
-
# All tier-derived font sizes, x offsets, and accent widths live here so
|
|
1611
|
-
# the receipt template iterates cells without branching on tier. The
|
|
1612
|
-
# values are derived from tier 1 / 2 / 3 visual hierarchy in the v9
|
|
1613
|
-
# specimens (claude-code-ledger as the canonical reference).
|
|
1614
|
-
_TREEMAP_TIER_STYLES: dict[int, dict[str, Any]] = {
|
|
1615
|
-
1: {
|
|
1616
|
-
"accent_w": 4,
|
|
1617
|
-
"label_x": 14,
|
|
1618
|
-
"label_size": 13,
|
|
1619
|
-
"detail_x": 14,
|
|
1620
|
-
"detail_y": 72,
|
|
1621
|
-
"detail_size": 10,
|
|
1622
|
-
"error_size": 9,
|
|
1623
|
-
"error_pad": 8,
|
|
1624
|
-
"pct_size": 36,
|
|
1625
|
-
"pct_y": 58,
|
|
1626
|
-
},
|
|
1627
|
-
2: {
|
|
1628
|
-
"accent_w": 3,
|
|
1629
|
-
"label_x": 10,
|
|
1630
|
-
"label_size": 10,
|
|
1631
|
-
"detail_x": 10,
|
|
1632
|
-
"detail_y": 24,
|
|
1633
|
-
"detail_size": 8,
|
|
1634
|
-
"error_size": 8,
|
|
1635
|
-
"error_pad": 8,
|
|
1636
|
-
"pct_size": 0, # tier 2/3 omit the big-pct block
|
|
1637
|
-
"pct_y": 0,
|
|
1638
|
-
},
|
|
1639
|
-
3: {
|
|
1640
|
-
"accent_w": 3,
|
|
1641
|
-
"label_x": 9,
|
|
1642
|
-
"label_size": 9,
|
|
1643
|
-
"detail_x": 9,
|
|
1644
|
-
"detail_y": 19,
|
|
1645
|
-
"detail_size": 8,
|
|
1646
|
-
"error_size": 8,
|
|
1647
|
-
"error_pad": 7,
|
|
1648
|
-
"pct_size": 0,
|
|
1649
|
-
"pct_y": 0,
|
|
1650
|
-
},
|
|
1651
|
-
}
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
1609
|
def resolve_receipt(
|
|
1655
1610
|
spec: ComposeSpec,
|
|
1656
1611
|
genome: dict[str, Any],
|
|
@@ -2039,7 +1994,6 @@ def resolve_receipt(
|
|
|
2039
1994
|
"treemap_legend": treemap_legend,
|
|
2040
1995
|
"treemap_header_chips": treemap_header_chips,
|
|
2041
1996
|
"treemap_cells": treemap_cells,
|
|
2042
|
-
"tier_styles": _TREEMAP_TIER_STYLES,
|
|
2043
1997
|
# Rhythm panel — v0.2.21 risograph-canonical structure
|
|
2044
1998
|
"stage_count": len(stages),
|
|
2045
1999
|
"rhythm_original_count": original_count,
|
|
@@ -460,11 +460,33 @@ def compute_treemap_layout(
|
|
|
460
460
|
usable = content_w - total_gaps
|
|
461
461
|
mid_total = sum(t.get("total_tokens", t.get("count", 0)) for t in mid_tools) or 1
|
|
462
462
|
|
|
463
|
-
|
|
464
|
-
|
|
463
|
+
# Pass 1: compute raw widths with the readability floor.
|
|
464
|
+
raw_w: list[int] = []
|
|
465
|
+
for t in mid_tools:
|
|
465
466
|
t_tokens = t.get("total_tokens", t.get("count", 0))
|
|
466
467
|
share = t_tokens / mid_total
|
|
467
|
-
|
|
468
|
+
raw_w.append(max(int(usable * share), 40))
|
|
469
|
+
|
|
470
|
+
# Post-hoc rescale when floor pressure pushes the sum past the budget.
|
|
471
|
+
# Mirrors bar_chart.py's rescale pattern. The 24px rescale floor keeps
|
|
472
|
+
# a cell visible as a colored slab; below that, _truncate_label's 24px
|
|
473
|
+
# padding threshold returns empty and the cell becomes a pure color
|
|
474
|
+
# signal — the deliberate graceful-degradation point under skew.
|
|
475
|
+
#
|
|
476
|
+
# Bound: the post-rescale sum is provably ≤ usable when
|
|
477
|
+
# usable ≥ n * rescale_floor. For tier-2 with n ≤ 3 (sorted_tools[1:4])
|
|
478
|
+
# and rescale_floor = 24, this holds for usable ≥ 72 — equivalently
|
|
479
|
+
# content_w ≥ 80. At the receipt's 752px content_w the headroom is
|
|
480
|
+
# ~10*; below 80px the canvas is too small to render anyway.
|
|
481
|
+
raw_total = sum(raw_w)
|
|
482
|
+
if raw_total > usable and raw_total > 0:
|
|
483
|
+
scale = usable / raw_total
|
|
484
|
+
raw_w = [max(int(w * scale), 24) for w in raw_w]
|
|
485
|
+
|
|
486
|
+
# Pass 2: build cells with the (possibly rescaled) widths.
|
|
487
|
+
x = 0
|
|
488
|
+
for i, (t, w) in enumerate(zip(mid_tools, raw_w, strict=True)):
|
|
489
|
+
t_tokens = t.get("total_tokens", t.get("count", 0))
|
|
468
490
|
cells.append(
|
|
469
491
|
_make_cell(
|
|
470
492
|
tier=2,
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
{% if has_glyph %}
|
|
65
65
|
<use href="#{{ glyph_id }}" x="24" y="13" width="18" height="18"/>
|
|
66
66
|
{% endif %}
|
|
67
|
-
<text x="{{ provider_label_x
|
|
67
|
+
<text x="{{ provider_label_x }}" y="27" class="s ink1" font-size="14" font-weight="700">{{ provider_label }}</text>
|
|
68
68
|
{% if model_label %}
|
|
69
|
-
<text x="{{ model_label_x
|
|
69
|
+
<text x="{{ model_label_x }}" y="27" class="m ink2" font-size="11" letter-spacing="0.04em">· {{ model_label }}</text>
|
|
70
70
|
{% endif %}
|
|
71
71
|
{# Phase pill at top-right — token-driven, branch-free.
|
|
72
72
|
Voltage (titanium spec): layered structure — dark outer base + thin frame
|
|
@@ -131,6 +131,113 @@ def test_tier2_widths_plus_gaps_fit_content_w() -> None:
|
|
|
131
131
|
assert last.x + last.w <= 752
|
|
132
132
|
|
|
133
133
|
|
|
134
|
+
# --------------------------------------------------------------------------- #
|
|
135
|
+
# Floor-pressure rescale (v0.2.24 — tier-2 budget invariant) #
|
|
136
|
+
# --------------------------------------------------------------------------- #
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def test_tier2_budget_invariant_under_floor_pressure() -> None:
|
|
140
|
+
"""Reproduces production receipt overflow: tier-2 share distribution
|
|
141
|
+
95% / 3% / 2% pushed the rightmost cell past 752px because the 2%
|
|
142
|
+
cell hit the 40px readability floor without a corresponding rescale
|
|
143
|
+
of its larger siblings. The post-hoc rescale must restore the bound.
|
|
144
|
+
"""
|
|
145
|
+
tools = [
|
|
146
|
+
_tool("Bash", 5_000_000, 500, "execute"), # tier-1
|
|
147
|
+
_tool("Edit", 950_000, 200, "mutate"),
|
|
148
|
+
_tool("Read", 30_000, 50, "explore"),
|
|
149
|
+
_tool("Write", 20_000, 30, "mutate"),
|
|
150
|
+
]
|
|
151
|
+
cells = compute_treemap_layout(tools)
|
|
152
|
+
tier2 = [c for c in cells if c.tier == 2]
|
|
153
|
+
assert len(tier2) == 3, f"expected 3 tier-2 cells, got {len(tier2)}"
|
|
154
|
+
last = max(tier2, key=lambda c: c.x + c.w)
|
|
155
|
+
assert last.x + last.w <= 752, f"production overflow regression: last cell ends at {last.x + last.w}"
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def test_tier2_extreme_skew_triggers_rescale() -> None:
|
|
159
|
+
"""3 tools at 99% / 0.5% / 0.5% — both small cells hit the 40 floor
|
|
160
|
+
and the largest cell would push raw_total well past usable. The
|
|
161
|
+
rescale must activate, and the post-rescale sum + gaps must fit
|
|
162
|
+
inside content_w. Asserts the budget bound explicitly so a future
|
|
163
|
+
regression where the rescale floor of 24 breaks the bound surfaces
|
|
164
|
+
as a test failure rather than a silent overflow.
|
|
165
|
+
"""
|
|
166
|
+
tools = [
|
|
167
|
+
_tool("Bash", 10_000_000, 1000, "execute"), # tier-1
|
|
168
|
+
_tool("Edit", 990_000, 100, "mutate"),
|
|
169
|
+
_tool("Read", 5_000, 5, "explore"),
|
|
170
|
+
_tool("Write", 5_000, 5, "mutate"),
|
|
171
|
+
]
|
|
172
|
+
cells = compute_treemap_layout(tools)
|
|
173
|
+
tier2 = [c for c in cells if c.tier == 2]
|
|
174
|
+
assert len(tier2) == 3
|
|
175
|
+
|
|
176
|
+
# Rescale activates: the largest cell shrinks below its un-rescaled
|
|
177
|
+
# proportional width (744 * 0.99 ≈ 736).
|
|
178
|
+
largest = max(tier2, key=lambda c: c.w)
|
|
179
|
+
assert largest.w < 736, f"expected rescaled largest cell, got w={largest.w}"
|
|
180
|
+
|
|
181
|
+
# Post-rescale sum invariant: sum of cell widths plus inter-cell gaps
|
|
182
|
+
# must fit inside content_w. This is the budget bound; provably tight
|
|
183
|
+
# when usable >= n * 24 (holds for content_w >= 80; default 752 has ~10* headroom).
|
|
184
|
+
gap_px = 4
|
|
185
|
+
total = sum(c.w for c in tier2) + (len(tier2) - 1) * gap_px
|
|
186
|
+
assert total <= 752, f"tier-2 budget invariant broken: cells={[c.w for c in tier2]}, sum+gaps={total}"
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def test_tier2_balanced_distribution_no_rescale() -> None:
|
|
190
|
+
"""Balanced 50/30/20 distribution — no cell hits the 40 floor, so
|
|
191
|
+
the rescale path doesn't run. Guards against regressions where the
|
|
192
|
+
rescale runs unnecessarily and shrinks balanced cells.
|
|
193
|
+
"""
|
|
194
|
+
tools = [
|
|
195
|
+
_tool("Bash", 5_000_000, 500, "execute"), # tier-1
|
|
196
|
+
_tool("Edit", 500_000, 200, "mutate"),
|
|
197
|
+
_tool("Read", 300_000, 100, "explore"),
|
|
198
|
+
_tool("Write", 200_000, 50, "mutate"),
|
|
199
|
+
]
|
|
200
|
+
cells = compute_treemap_layout(tools)
|
|
201
|
+
tier2 = [c for c in cells if c.tier == 2]
|
|
202
|
+
assert len(tier2) == 3
|
|
203
|
+
|
|
204
|
+
# No cell at the 40 floor → rescale didn't run → proportional widths
|
|
205
|
+
# are preserved (modulo integer rounding).
|
|
206
|
+
assert all(c.w > 40 for c in tier2), f"cells={[c.w for c in tier2]}"
|
|
207
|
+
|
|
208
|
+
# Order matches descending token rank.
|
|
209
|
+
assert tier2[0].name == "Edit"
|
|
210
|
+
assert tier2[1].name == "Read"
|
|
211
|
+
assert tier2[2].name == "Write"
|
|
212
|
+
assert tier2[0].w > tier2[1].w > tier2[2].w
|
|
213
|
+
|
|
214
|
+
# Budget invariant still holds.
|
|
215
|
+
gap_px = 4
|
|
216
|
+
total = sum(c.w for c in tier2) + (len(tier2) - 1) * gap_px
|
|
217
|
+
assert total <= 752
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
def test_tier3_uniform_budget_invariant_under_max_cells() -> None:
|
|
221
|
+
"""Tier-3 uses uniform 90px cells with max_cells=8. Verify the budget
|
|
222
|
+
invariant at maximum cell count and that the +N more overflow cell
|
|
223
|
+
occupies the last visible slot. Defensive test: tier-3 is provably
|
|
224
|
+
safe today (8*90 + 7*4 = 748 ≤ 752), but a future refactor that
|
|
225
|
+
breaks the uniform-cell contract should fail this test.
|
|
226
|
+
"""
|
|
227
|
+
# 1 tier-1 + 3 tier-2 + 12 tier-3 (12 > max_cells=8 → triggers +N more).
|
|
228
|
+
tools = [_tool(f"Tool{i:02d}", 100_000 - i * 100, 50 - i, "coordinate") for i in range(16)]
|
|
229
|
+
cells = compute_treemap_layout(tools)
|
|
230
|
+
tier3 = [c for c in cells if c.tier == 3]
|
|
231
|
+
assert len(tier3) <= 8, f"tier-3 exceeded max_cells: got {len(tier3)}"
|
|
232
|
+
|
|
233
|
+
overflow = [c for c in tier3 if c.is_overflow]
|
|
234
|
+
assert len(overflow) == 1, f"expected 1 +N more cell, got {len(overflow)}"
|
|
235
|
+
|
|
236
|
+
# Budget invariant: rightmost cell edge ≤ content_w.
|
|
237
|
+
rightmost = max(c.x + c.w for c in tier3)
|
|
238
|
+
assert rightmost <= 752, f"tier-3 budget broken: rightmost={rightmost}"
|
|
239
|
+
|
|
240
|
+
|
|
134
241
|
# --------------------------------------------------------------------------- #
|
|
135
242
|
# Overflow handling — "+N more" cell #
|
|
136
243
|
# --------------------------------------------------------------------------- #
|
|
@@ -33,6 +33,14 @@ def test_generate_data_cards_writes_stats_and_chart(proofset_module: object) ->
|
|
|
33
33
|
Timeline was removed in v0.2.14; the section header retained its name
|
|
34
34
|
in the script for git-history continuity but only stats + chart artifacts
|
|
35
35
|
are emitted now.
|
|
36
|
+
|
|
37
|
+
Stats are network-independent and must always render. The chart frame
|
|
38
|
+
requires a successful GitHub stargazer fetch with REST/GraphQL cross-
|
|
39
|
+
check agreement; in CI without auth (or under rate-limit pressure) the
|
|
40
|
+
generator deliberately skips the chart rather than ship disagreeing
|
|
41
|
+
data. That's the system working as designed, not a test failure — so
|
|
42
|
+
we verify stats unconditionally and `pytest.skip` the chart leg when
|
|
43
|
+
the generator legitimately omitted it.
|
|
36
44
|
"""
|
|
37
45
|
from hyperweave.core.enums import GenomeId
|
|
38
46
|
|
|
@@ -40,14 +48,27 @@ def test_generate_data_cards_writes_stats_and_chart(proofset_module: object) ->
|
|
|
40
48
|
assert count > 0, "generator should emit at least one artifact"
|
|
41
49
|
|
|
42
50
|
out_dir = proofset_module.OUT # type: ignore[attr-defined]
|
|
43
|
-
expected_files = ("stats.svg", "chart_stars_full.svg")
|
|
44
51
|
for genome in GenomeId:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
stats = out_dir / "proofset" / genome / "data-cards" / "stats.svg"
|
|
53
|
+
assert stats.exists(), f"expected artifact missing: {stats}"
|
|
54
|
+
assert stats.stat().st_size > 500, f"artifact too small: {stats}"
|
|
55
|
+
assert "<svg" in stats.read_text(), f"not valid SVG: {stats}"
|
|
56
|
+
|
|
57
|
+
# Chart artifacts share a single upstream fetch — if one is missing
|
|
58
|
+
# they're all missing, so probe one genome and skip if absent.
|
|
59
|
+
sample_genome = next(iter(GenomeId))
|
|
60
|
+
sample_chart = out_dir / "proofset" / sample_genome / "data-cards" / "chart_stars_full.svg"
|
|
61
|
+
if not sample_chart.exists():
|
|
62
|
+
pytest.skip(
|
|
63
|
+
"chart artifact intentionally skipped by generator "
|
|
64
|
+
"(GitHub stargazer cross-check disagreement or auth/rate-limit failure); "
|
|
65
|
+
"stats artifacts verified above"
|
|
66
|
+
)
|
|
67
|
+
for genome in GenomeId:
|
|
68
|
+
chart = out_dir / "proofset" / genome / "data-cards" / "chart_stars_full.svg"
|
|
69
|
+
assert chart.exists(), f"expected artifact missing: {chart}"
|
|
70
|
+
assert chart.stat().st_size > 500, f"artifact too small: {chart}"
|
|
71
|
+
assert "<svg" in chart.read_text(), f"not valid SVG: {chart}"
|
|
51
72
|
|
|
52
73
|
|
|
53
74
|
def test_generate_readme_includes_new_sections(proofset_module: object) -> None:
|
|
@@ -379,11 +379,12 @@ def test_receipt_renders_failed_tool_calls_legend() -> None:
|
|
|
379
379
|
|
|
380
380
|
|
|
381
381
|
def test_treemap_field_is_errors_not_error_count() -> None:
|
|
382
|
-
"""
|
|
382
|
+
"""No live .j2 template references the stale `cell.error_count` field.
|
|
383
383
|
|
|
384
|
-
Prior drift:
|
|
385
|
-
|
|
386
|
-
|
|
384
|
+
Prior drift: receipt.svg.j2 used `cell.errors` while a now-deleted orphan
|
|
385
|
+
treemap component used `cell.error_count`. The orphan was removed in the
|
|
386
|
+
P0 audit cleanup; this test still defends against any future drift across
|
|
387
|
+
all live .j2 files.
|
|
387
388
|
"""
|
|
388
389
|
from pathlib import Path
|
|
389
390
|
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{# HyperWeave Treemap Component — token distribution visualization.
|
|
2
|
-
Renders a 3-tier treemap for receipt telemetry frames.
|
|
3
|
-
Area = token share, hue = tool class.
|
|
4
|
-
Expects: treemap_tiers (list of tier dicts), uid, content_w #}
|
|
5
|
-
|
|
6
|
-
{% set tm_w = content_w | default(752) %}
|
|
7
|
-
|
|
8
|
-
{% for tier in treemap_tiers | default([]) %}
|
|
9
|
-
<g transform="translate(0, {{ tier.y | default(10 + (loop.index0 * 36)) }})"
|
|
10
|
-
data-hw-zone="treemap-tier-{{ loop.index0 }}">
|
|
11
|
-
{% for cell in tier.cells %}
|
|
12
|
-
<rect x="{{ cell.x }}" width="{{ cell.w }}" height="{{ tier.h | default(88) }}" rx="{{ tier.rx | default(3) }}"
|
|
13
|
-
fill="url(#{{ uid }}-{{ cell.tool_class }})"
|
|
14
|
-
stroke="var(--dna-tool-{{ cell.tool_class }})"
|
|
15
|
-
stroke-opacity="0.2" stroke-width="1"/>
|
|
16
|
-
{# Cell name #}
|
|
17
|
-
<text class="m cell-name" font-size="{{ tier.name_size | default(13) }}"
|
|
18
|
-
x="{{ cell.x + 12 }}" y="{{ tier.name_y | default(22) }}">{{ cell.name }}</text>
|
|
19
|
-
{% if cell.pct %}
|
|
20
|
-
{# Large percentage (tier 1 dominant only) #}
|
|
21
|
-
<text class="m" font-size="{{ tier.pct_size | default(32) }}" font-weight="700"
|
|
22
|
-
fill="var(--dna-tool-{{ cell.tool_class }})"
|
|
23
|
-
x="{{ cell.x + 12 }}" y="{{ tier.pct_y | default(58) }}">{{ cell.pct }}%</text>
|
|
24
|
-
{% endif %}
|
|
25
|
-
{% if cell.meta %}
|
|
26
|
-
<text class="m cell-meta" font-size="{{ tier.meta_size | default(10) }}"
|
|
27
|
-
x="{{ cell.x + 12 }}" y="{{ tier.meta_y | default(74) }}">{{ cell.meta }}</text>
|
|
28
|
-
{% endif %}
|
|
29
|
-
{% if cell.errors %}
|
|
30
|
-
<text class="m cell-error" font-size="8"
|
|
31
|
-
x="{{ cell.x + cell.w - 10 }}" y="{{ tier.name_y | default(17) }}"
|
|
32
|
-
text-anchor="end">{{ cell.error_symbol | default('x') }}{{ cell.errors }}</text>
|
|
33
|
-
{% endif %}
|
|
34
|
-
{% endfor %}
|
|
35
|
-
</g>
|
|
36
|
-
{% endfor %}
|
|
37
|
-
|
|
38
|
-
{# Encoding key #}
|
|
39
|
-
{% if show_key | default(true) %}
|
|
40
|
-
<g transform="translate(0, {{ treemap_key_y | default(174) }})">
|
|
41
|
-
<text class="m" font-size="8" font-weight="700" fill="var(--dna-signal)">AREA</text>
|
|
42
|
-
<text class="m ghost" font-size="8" x="30">-> token share</text>
|
|
43
|
-
<text class="m" font-size="8" font-weight="700" fill="var(--dna-signal)" x="140">HUE</text>
|
|
44
|
-
<text class="m ghost" font-size="8" x="164">-> tool class</text>
|
|
45
|
-
</g>
|
|
46
|
-
{% endif %}
|
|
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.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/badge_critical.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
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/marquee_counter.svg
RENAMED
|
File without changes
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/marquee_horizontal.svg
RENAMED
|
File without changes
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/brutalist-emerald/marquee_vertical.svg
RENAMED
|
File without changes
|
|
File without changes
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/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
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/marquee_horizontal.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/chrome-horizon/profile-cards/stats.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/receipt_claude-code_medium.svg
RENAMED
|
File without changes
|
|
File without changes
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/receipt_voltage_xlarge.svg
RENAMED
|
File without changes
|
|
File without changes
|
{hyperweave-0.2.23 → hyperweave-0.2.24}/assets/examples/telemetry/rhythm_strip_voltage_xlarge.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
|