Skip to content

feat(lighting): add the @codexo/exojs-lighting extension package - #664

Merged
Exoridus merged 3 commits into
nextfrom
feat/exojs-lighting
Sep 4, 2026
Merged

Exoridus merged 3 commits into
nextfrom
feat/exojs-lighting

Conversation

@Exoridus

@Exoridus Exoridus commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Forward normal-mapped point lighting for sprites, as an opt-in extension package.

  • PointLight: plain mutable world-space data (x, y, radius, color, intensity, height).
  • LightingSystem: collects lights and packs them, with the active count and the ambient term, into one rgba32f data texture per frame; registers on any SystemRegistry. The light list being a texture rather than a uniform array makes the light count a shader loop bound instead of a compiled-in constant.
  • LitSpriteMaterial: samples a tangent-space normal map next to the albedo and rotates the normal by the instance's local-to-world basis (the Core seam from feat(rendering): expose world position and basis to custom sprite materials #659), so spinning and mirrored sprites keep their bumps facing the right way. Sprites sharing one material stay in one batch; no extra pass, no extra draw call.
  • v1 contract: one normal map per material (= per atlas), no deferred path, no shadows.
  • Examples lighting/normal-mapped-sprites (moved onto the package) and lighting/many-lights (1 to 48 lights, one draw call), both verified in the browser. Unit tests for packing and lifecycle, pixel tests on WebGL2 and WebGPU.
  • Wired like the other packages: workspace, full bundle entry, release lockstep and external-consumer smoke, CI lanes, coverage, ESLint, Vitest project, preview import map, API docs. Never published yet, so it needs release:bootstrap at the next coordinated release (noted in RELEASING.md).

No Core changes were needed: DataTexture with rgba32f already works as a material texture on both backends.

https://claude.ai/code/session_01NSrXpH1WyqP7udpWWhHz1i

Forward normal-mapped point lighting for sprites, shaded inside the sprite
fragment stage so a lit scene costs no extra pass and no extra draw call.

PointLight is plain mutable world-space data. LightingSystem collects lights and
packs them, together with the active count and the ambient term, into one
rgba32f DataTexture per frame - a header column plus one column per light. That
is why the light count is a shader loop bound instead of a compiled-in constant:
core user uniforms are one vec4 per name, so a uniform array would have capped
the scene at a handful of lights and needed a recompile to change.
LitSpriteMaterial samples a tangent-space normal map next to the albedo and
rotates the normal by the instance's local-to-world basis, so spinning and
mirrored sprites keep their bumps facing the right way.

One normal map per material (= per atlas) is the v1 contract; a second atlas
takes a second material and breaks the batch at that boundary. No deferred path.

Also stop type-aware lint rules from throwing on every package's
rolldown.config.ts: those files belong to no package's TypeScript program, so
the ProjectService has no types to serve for them.

Claude-Session: https://claude.ai/code/session_01NSrXpH1WyqP7udpWWhHz1i
… both backends

normal-mapped-sprites drops its hand-written material and uniform bookkeeping
for LightingSystem/LitSpriteMaterial. many-lights is new: a slider walks the
scene from 1 to 48 point lights over a normal-mapped floor, which is only a
slider because the light list is a data texture - a uniform array would have
been a recompile per count, and a cap far below 48.

Browser pixel tests on both backends assert the same three facts: the falloff
reaches the framebuffer, a mirrored instance shades identically to an upright
one, and the two quads stay in a single draw call. The WebGPU one also pops a
validation scope, because binding an rgba32f texture through the sprite
material's group(2) layout is the part that could silently be invalid.

Claude-Session: https://claude.ai/code/session_01NSrXpH1WyqP7udpWWhHz1i
The GLSL compile suite globs every package's shader files and requires each to
be either half of a program pair or declared standalone. `lit-sprite.frag` is a
sprite-material fragment, so it only compiles once the renderer has spliced in
the base-texture slot table and `sampleBase()`; the suite now composes it the
same way it already composes the text-atlas fragments, and links it against
`sprite-material.vert` - which stops being "standalone, fragment comes from the
application" now that an in-repo fragment exists for it.

Also map `@codexo/exojs-lighting` in test/tsconfig.json so the two lighting
browser suites type-check.

Claude-Session: https://claude.ai/code/session_01NSrXpH1WyqP7udpWWhHz1i
@Exoridus
Exoridus enabled auto-merge (squash) September 4, 2026 16:10
@codecov

codecov Bot commented Sep 4, 2026 •

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 18.06MB (57.88%) ⬆️⚠️, exceeding the configured threshold of 5%.

Bundle name Size Change
site-server-esm 32.34MB 18.03MB (126.07%) ⬆️⚠️
exo-full-iife-Exo-iife 5.04MB 14.13kB (0.28%) ⬆️
exo-full-iife-min-Exo-iife 1.85MB 4.76kB (0.26%) ⬆️
exojs-lighting-esm 13.29kB 13.29kB (100%) ⬆️⚠️

Affected Assets, Files, and Routes:

view changes for bundle: site-server-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
chunks/_astro_data-layer-content_C7q0FzX5.mjs (New) 7.14MB 7.14MB 100.0% 🚀
chunks/example-sources_aiRWOAIA.mjs (New) 1.5MB 1.5MB 100.0% 🚀
chunks/cpp_CPDmpxAH.mjs (New) 837.87kB 837.87kB 100.0% 🚀
chunks/emacs-lisp_Dv0hCzlu.mjs (New) 792.54kB 792.54kB 100.0% 🚀
chunks/wasm_CLRKp8VF.mjs (New) 622.55kB 622.55kB 100.0% 🚀
_astro/vendor-monaco.D6-58Mxn.css (New) 308.24kB 308.24kB 100.0% 🚀
chunks/components_hi_I81ex.mjs (New) 302.51kB 302.51kB 100.0% 🚀
chunks/wolfram_CcZPfnLd.mjs (New) 266.98kB 266.98kB 100.0% 🚀
chunks/jsx-runtime_DRnKKoER.mjs (New) 246.89kB 246.89kB 100.0% 🚀
prerender-entry.B9Eon_kz.mjs (New) 226.1kB 226.1kB 100.0% 🚀
chunks/vue-vine_BwEx5Hbl.mjs (New) 201.21kB 201.21kB 100.0% 🚀
chunks/angular-ts_Go_sxgiM.mjs (New) 194.57kB 194.57kB 100.0% 🚀
chunks/typescript_BdOuaDkb.mjs (New) 191.0kB 191.0kB 100.0% 🚀
chunks/jsx_DlBZfu41.mjs (New) 188.11kB 188.11kB 100.0% 🚀
chunks/tsx_DP9gbsaw.mjs (New) 185.85kB 185.85kB 100.0% 🚀
chunks/javascript_Csr6kOdt.mjs (New) 185.19kB 185.19kB 100.0% 🚀
chunks/typst_BnzMfKm_.mjs (New) 184.6kB 184.6kB 100.0% 🚀
chunks/objective-cpp__ooRQ-PY.mjs (New) 184.45kB 184.45kB 100.0% 🚀
chunks/backend-comparison_DFk9Yh9S.mjs (New) 169.16kB 169.16kB 100.0% 🚀
chunks/audio-effects_KVX8zjG9.mjs (New) 157.49kB 157.49kB 100.0% 🚀
chunks/asciidoc_xKuVlNk6.mjs (New) 150.63kB 150.63kB 100.0% 🚀
chunks/mdx_BK9ZufRc.mjs (New) 146.33kB 146.33kB 100.0% 🚀
chunks/infinite-maps_1x36WnZ7.mjs (New) 141.61kB 141.61kB 100.0% 🚀
chunks/animation_BMmP1o30.mjs (New) 141.26kB 141.26kB 100.0% 🚀
chunks/spatial-audio_BR9_Lcxi.mjs (New) 137.74kB 137.74kB 100.0% 🚀
chunks/php_Ce-_eRmu.mjs (New) 120.72kB 120.72kB 100.0% 🚀
chunks/blade_BmZAqhvV.mjs (New) 112.47kB 112.47kB 100.0% 🚀
chunks/objective-c_6dJF64Dt.mjs (New) 111.93kB 111.93kB 100.0% 🚀
chunks/tiled-maps_BzoDY72P.mjs (New) 111.71kB 111.71kB 100.0% 🚀
chunks/audio-basics_58eI4OdW.mjs (New) 107.93kB 107.93kB 100.0% 🚀
chunks/less_BzbdhFUi.mjs (New) 107.13kB 107.13kB 100.0% 🚀
chunks/loading-and-resources_C864A5uG.mjs (New) 104.49kB 104.49kB 100.0% 🚀
chunks/gamepad_XKtxH4mc.mjs (New) 100.0kB 100.0kB 100.0% 🚀
chunks/csharp_CFKaLbHg.mjs (New) 99.97kB 99.97kB 100.0% 🚀
chunks/fortran-free-form_yxJ7igsv.mjs (New) 98.65kB 98.65kB 100.0% 🚀
chunks/ui-and-widgets_2q-R10NN.mjs (New) 97.2kB 97.2kB 100.0% 🚀
chunks/racket_DRv7j6nv.mjs (New) 95.06kB 95.06kB 100.0% 🚀
chunks/particles_rAbyFV-l.mjs (New) 94.62kB 94.62kB 100.0% 🚀
chunks/swift_DWmMn3lF.mjs (New) 94.57kB 94.57kB 100.0% 🚀
chunks/immediate-mode_pceAaGu3.mjs (New) 92.79kB 92.79kB 100.0% 🚀
chunks/custom-mesh-shaders_EXz4RxVV.mjs (New) 88.03kB 88.03kB 100.0% 🚀
chunks/hack_ogeSwry3.mjs (New) 86.02kB 86.02kB 100.0% 🚀
chunks/text_qU00YqpO.mjs (New) 84.66kB 84.66kB 100.0% 🚀
chunks/authoring-extensions_B5JuL1Bi.mjs (New) 84.42kB 84.42kB 100.0% 🚀
chunks/beat-detection_BEddEasQ.mjs (New) 83.95kB 83.95kB 100.0% 🚀
chunks/application_DuH4L9JF.mjs (New) 83.5kB 83.5kB 100.0% 🚀
chunks/vyper_C6KGx0YU.mjs (New) 82.05kB 82.05kB 100.0% 🚀
chunks/latex_CHMapQI4.mjs (New) 80.49kB 80.49kB 100.0% 🚀
chunks/filters_c3CfKD5a.mjs (New) 79.62kB 79.62kB 100.0% 🚀
chunks/gameplay-collision_DChYUvKj.mjs (New) 78.98kB 78.98kB 100.0% 🚀
chunks/c_DtrCgMGx.mjs (New) 78.39kB 78.39kB 100.0% 🚀
chunks/physics-basics_l-L7Fsdt.mjs (New) 77.32kB 77.32kB 100.0% 🚀
chunks/python_BjnOIxPe.mjs (New) 77.17kB 77.17kB 100.0% 🚀
chunks/mojo_CsUSYzsu.mjs (New) 76.64kB 76.64kB 100.0% 🚀
chunks/graphics_CmAsHeov.mjs (New) 75.46kB 75.46kB 100.0% 🚀
chunks/vendor-react_CW3EEB64.mjs (New) 75.19kB 75.19kB 100.0% 🚀
chunks/worlds-and-spawning_CQzJeUN9.mjs (New) 72.75kB 72.75kB 100.0% 🚀
chunks/ldtk_CKumqy6k.mjs (New) 72.12kB 72.12kB 100.0% 🚀
chunks/typed-worklets-and-workers_DnobHWbp.mjs (New) 70.72kB 70.72kB 100.0% 🚀
chunks/ExampleBrowser_xUpQ7aDV.mjs (New) 69.03kB 69.03kB 100.0% 🚀
chunks/debugging-and-inspection_C6W_Nyu0.mjs (New) 67.4kB 67.4kB 100.0% 🚀
chunks/ocaml_vm1Y8An6.mjs (New) 67.28kB 67.28kB 100.0% 🚀
chunks/markdown_CkmxmzqY.mjs (New) 65.34kB 65.34kB 100.0% 🚀
chunks/sprites_D9roHjn5.mjs (New) 65.21kB 65.21kB 100.0% 🚀
chunks/ballerina_DIdXD2KH.mjs (New) 64.73kB 64.73kB 100.0% 🚀
chunks/aseprite_BJ1jfbe3.mjs (New) 63.85kB 63.85kB 100.0% 🚀
chunks/deployment_B4a1iRC3.mjs (New) 63.24kB 63.24kB 100.0% 🚀
chunks/wikitext_wjhjmmzD.mjs (New) 62.35kB 62.35kB 100.0% 🚀
chunks/html_CJiVogkZ.mjs (New) 62.31kB 62.31kB 100.0% 🚀
chunks/stata_ZpI2p0PE.mjs (New) 62.02kB 62.02kB 100.0% 🚀
chunks/mermaid_ItFqCK9s.mjs (New) 61.2kB 61.2kB 100.0% 🚀
chunks/render-targets_DdWTOBTU.mjs (New) 58.77kB 58.77kB 100.0% 🚀
chunks/everforest-light_D0-By8Ib.mjs (New) 58.66kB 58.66kB 100.0% 🚀
chunks/everforest-dark_DM8lKNNi.mjs (New) 58.65kB 58.65kB 100.0% 🚀
chunks/catppuccin-macchiato_Dkogd_RC.mjs (New) 56.22kB 56.22kB 100.0% 🚀
chunks/catppuccin-frappe_DpzIdcTG.mjs (New) 56.2kB 56.2kB 100.0% 🚀
chunks/catppuccin-latte_qlLg6gWa.mjs (New) 56.2kB 56.2kB 100.0% 🚀
chunks/catppuccin-mocha_DW8bSod0.mjs (New) 56.2kB 56.2kB 100.0% 🚀
chunks/typed-shaders_DV2QH91p.mjs (New) 55.37kB 55.37kB 100.0% 🚀
chunks/imba_96qKoJCa.mjs (New) 54.85kB 54.85kB 100.0% 🚀
chunks/_virtual_astro_get-image_Dv831jW1.mjs (New) 54.78kB 54.78kB 100.0% 🚀
chunks/ada_twHwrVWN.mjs (New) 54.62kB 54.62kB 100.0% 🚀
chunks/mouse-and-pointer_wWjl1fnc.mjs (New) 53.74kB 53.74kB 100.0% 🚀
chunks/apex_CybrBQ0z.mjs (New) 53.2kB 53.2kB 100.0% 🚀
chunks/keyboard-and-actions_BE3ZgYpD.mjs (New) 52.88kB 52.88kB 100.0% 🚀
chunks/AppShell_DgRRVbbF.mjs (New) 52.66kB 52.66kB 100.0% 🚀
chunks/ruby_DurSp7NY.mjs (New) 52.52kB 52.52kB 100.0% 🚀
chunks/css_B24SoJng.mjs (New) 52.49kB 52.49kB 100.0% 🚀
chunks/go_aXtTCanQ.mjs (New) 51.86kB 51.86kB 100.0% 🚀
_astro/AppShell.DdDJa49n.css (New) 50.24kB 50.24kB 100.0% 🚀
chunks/ahk2_bJ5Wm9-K.mjs (New) 48.96kB 48.96kB 100.0% 🚀
chunks/d_BQY8TDgQ.mjs (New) 48.94kB 48.94kB 100.0% 🚀
chunks/perl_DD46WzW0.mjs (New) 48.57kB 48.57kB 100.0% 🚀
chunks/shellscript_CJgrg95w.mjs (New) 45.75kB 45.75kB 100.0% 🚀
chunks/haskell_CfGsE1Cf.mjs (New) 45.58kB 45.58kB 100.0% 🚀
chunks/troubleshooting_CMU-yP4k.mjs (New) 44.55kB 44.55kB 100.0% 🚀
chunks/asm_wBDSgBbA.mjs (New) 43.88kB 43.88kB 100.0% 🚀
chunks/scene-graph_Ce4G-eXk.mjs (New) 43.01kB 43.01kB 100.0% 🚀
chunks/custom-renderers_CZMPcVjL.mjs (New) 42.4kB 42.4kB 100.0% 🚀
chunks/erlang_BsP4G84Y.mjs (New) 41.69kB 41.69kB 100.0% 🚀
chunks/org_GxkLwT0W.mjs (New) 41.61kB 41.61kB 100.0% 🚀
chunks/cobol_Cde5oeOV.mjs (New) 41.47kB 41.47kB 100.0% 🚀
chunks/bird2_BMprQDNV.mjs (New) 41.32kB 41.32kB 100.0% 🚀
chunks/haxe_QaqXWmIB.mjs (New) 40.26kB 40.26kB 100.0% 🚀
chunks/pixel-snapping_DVvuRdgH.mjs (New) 40.11kB 40.11kB 100.0% 🚀
chunks/resize-dpr-and-canvas_CsNGa2t6.mjs (New) 39.66kB 39.66kB 100.0% 🚀
chunks/nginx_B6K5caqL.mjs (New) 39.45kB 39.45kB 100.0% 🚀
chunks/EditorPreview_BEnY8JmG.mjs (New) 39.29kB 39.29kB 100.0% 🚀
chunks/houston_BCge59HB.mjs (New) 39.13kB 39.13kB 100.0% 🚀
chunks/tokyo-night_CZgEO66P.mjs (New) 38.95kB 38.95kB 100.0% 🚀
chunks/device-variants_C2j-7VjW.mjs (New) 37.6kB 37.6kB 100.0% 🚀
chunks/one-dark-pro_CUhzNQJE.mjs (New) 37.42kB 37.42kB 100.0% 🚀
chunks/poimandres_QRiMVtzX.mjs (New) 36.74kB 36.74kB 100.0% 🚀
chunks/serialization-and-prefabs_CaqO297K.mjs (New) 35.73kB 35.73kB 100.0% 🚀
chunks/scenes-and-lifecycle_Cbza4EcN.mjs (New) 35.13kB 35.13kB 100.0% 🚀
chunks/bsl_RRHQTRWr.mjs (New) 35.05kB 35.05kB 100.0% 🚀
chunks/stylus_ZZDn1yUO.mjs (New) 33.23kB 33.23kB 100.0% 🚀
chunks/julia_CUdUEEdZ.mjs (New) 33.23kB 33.23kB 100.0% 🚀
chunks/crystal_BxARsATC.mjs (New) 32.91kB 32.91kB 100.0% 🚀
chunks/ahk_B0zayAPr.mjs (New) 32.83kB 32.83kB 100.0% 🚀
chunks/night-owl_Cm6kp1PA.mjs (New) 32.35kB 32.35kB 100.0% 🚀
chunks/applescript_CJ80B5XJ.mjs (New) 32.08kB 32.08kB 100.0% 🚀
chunks/scala_pMGZAs9j.mjs (New) 31.33kB 31.33kB 100.0% 🚀
chunks/joints-and-dynamics_BNCh7hss.mjs (New) 31.05kB 31.05kB 100.0% 🚀
chunks/razor_DtzGaIsD.mjs (New) 30.85kB 30.85kB 100.0% 🚀
chunks/scss_DfTZ3J77.mjs (New) 30.71kB 30.71kB 100.0% 🚀
chunks/java_DtJJObUJ.mjs (New) 30.68kB 30.68kB 100.0% 🚀
chunks/EditorCode_BbRG6mai.mjs (New) 30.57kB 30.57kB 100.0% 🚀
chunks/coffee_CKL8nDPj.mjs (New) 29.89kB 29.89kB 100.0% 🚀
chunks/c3_u0qNrniV.mjs (New) 29.84kB 29.84kB 100.0% 🚀
chunks/guide-structure_B4PBWYYB.mjs (New) 29.7kB 29.7kB 100.0% 🚀
chunks/nord_B2iOUYPu.mjs (New) 29.64kB 29.64kB 100.0% 🚀
chunks/codeql_BwdvwJnv.mjs (New) 29.6kB 29.6kB 100.0% 🚀
chunks/night-owl-light_C5JQlziG.mjs (New) 29.05kB 29.05kB 100.0% 🚀
chunks/system-verilog_DW0KSMVO.mjs (New) 28.95kB 28.95kB 100.0% 🚀
chunks/performance_BA6EdSDM.mjs (New) 28.89kB 28.89kB 100.0% 🚀
chunks/vue_BZSikl6a.mjs (New) 28.8kB 28.8kB 100.0% 🚀
chunks/marko_yztgkyW2.mjs (New) 28.69kB 28.69kB 100.0% 🚀
chunks/fsharp_Csv26BFS.mjs (New) 28.44kB 28.44kB 100.0% 🚀
_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff (New) 28.21kB 28.21kB 100.0% 🚀
chunks/one-light_Dydeaphl.mjs (New) 28.19kB 28.19kB 100.0% 🚀
chunks/angular-html_DFpvQUcR.mjs (New) 27.66kB 27.66kB 100.0% 🚀
chunks/typespec_C_R5TbvO.mjs (New) 27.64kB 27.64kB 100.0% 🚀
chunks/moonbit_BzHkbr4Q.mjs (New) 27.52kB 27.52kB 100.0% 🚀
_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff (New) 27.5kB 27.5kB 100.0% 🚀
chunks/apl_BusG2rRg.mjs (New) 27.01kB 27.01kB 100.0% 🚀
chunks/vhdl_Co2XFKY7.mjs (New) 26.8kB 26.8kB 100.0% 🚀
chunks/purescript_CLpaGMbw.mjs (New) 26.78kB 26.78kB 100.0% 🚀
chunks/DocsSidebar_LFh80MyK.mjs (New) 26.63kB 26.63kB 100.0% 🚀
chunks/cadence_B1ELWULD.mjs (New) 26.37kB 26.37kB 100.0% 🚀
chunks/templ_Dua9xeFZ.mjs (New) 26.31kB 26.31kB 100.0% 🚀
chunks/astro_DVlyOzje.mjs (New) 25.85kB 25.85kB 100.0% 🚀
chunks/nim_B6oIhaho.mjs (New) 25.63kB 25.63kB 100.0% 🚀
chunks/retained-containers_DZnh2gWu.mjs (New) 25.49kB 25.49kB 100.0% 🚀
chunks/gruvbox-light-medium_DK7Hp87r.mjs (New) 25.36kB 25.36kB 100.0% 🚀
chunks/gruvbox-dark-medium_C1cagsrM.mjs (New) 25.36kB 25.36kB 100.0% 🚀
chunks/gruvbox-light-hard_h1QgYclB.mjs (New) 25.35kB 25.35kB 100.0% 🚀
chunks/gruvbox-light-soft_CsHBh6fE.mjs (New) 25.35kB 25.35kB 100.0% 🚀
chunks/gruvbox-dark-hard_DaH6zhre.mjs (New) 25.35kB 25.35kB 100.0% 🚀
chunks/gruvbox-dark-soft_V8cmWQ7W.mjs (New) 25.35kB 25.35kB 100.0% 🚀
chunks/react_5XR8rYL-.mjs (New) 25.32kB 25.32kB 100.0% 🚀
chunks/sql_DtGcscyb.mjs (New) 24.8kB 24.8kB 100.0% 🚀
chunks/_astro_content_DuJTAjLY.mjs (New) 24.54kB 24.54kB 100.0% 🚀
chunks/twig_D5YhvR8w.mjs (New) 24.25kB 24.25kB 100.0% 🚀
chunks/rose-pine-dawn_5bNxnqJn.mjs (New) 24.16kB 24.16kB 100.0% 🚀
chunks/rose-pine-moon_D9u1dVFS.mjs (New) 24.16kB 24.16kB 100.0% 🚀
chunks/rose-pine_LrKaLPzB.mjs (New) 24.14kB 24.14kB 100.0% 🚀
chunks/offline_BtGDwMLw.mjs (New) 24.08kB 24.08kB 100.0% 🚀
chunks/wit_CeQiCbz_.mjs (New) 23.94kB 23.94kB 100.0% 🚀
chunks/common-lisp_DJtwvW4V.mjs (New) 23.61kB 23.61kB 100.0% 🚀
chunks/dracula-soft_CxJ6yBh7.mjs (New) 23.29kB 23.29kB 100.0% 🚀
chunks/dracula_DrwtDR2u.mjs (New) 23.26kB 23.26kB 100.0% 🚀
chunks/audio-reactive-visualization_DlqGfn9S.mjs (New) 23.26kB 23.26kB 100.0% 🚀
chunks/snazzy-light_DfXk5yzb.mjs (New) 23.25kB 23.25kB 100.0% 🚀
chunks/build-orb-dodge_DFeGRbG9.mjs (New) 23.02kB 23.02kB 100.0% 🚀
chunks/glimmer-js_B8pygmEI.mjs (New) 22.94kB 22.94kB 100.0% 🚀
chunks/glimmer-ts_CQEDCkOl.mjs (New) 22.94kB 22.94kB 100.0% 🚀
chunks/nushell_BLPX3-WC.mjs (New) 22.84kB 22.84kB 100.0% 🚀
chunks/errors-data_CM441LK8.mjs (New) 22.73kB 22.73kB 100.0% 🚀
chunks/ayu-light_Djj5_ZCz.mjs (New) 22.53kB 22.53kB 100.0% 🚀
chunks/ayu-mirage_B5o6RGmT.mjs (New) 22.47kB 22.47kB 100.0% 🚀
chunks/ayu-dark_liWEyCZQ.mjs (New) 22.46kB 22.46kB 100.0% 🚀
chunks/powershell_DvOBVZPr.mjs (New) 21.96kB 21.96kB 100.0% 🚀
_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2 (New) 21.83kB 21.83kB 100.0% 🚀
chunks/groovy_Bw2Ku4bU.mjs (New) 21.56kB 21.56kB 100.0% 🚀
chunks/mdc_C1b5g3_q.mjs (New) 21.34kB 21.34kB 100.0% 🚀
chunks/viml_BReTXeDA.mjs (New) 21.2kB 21.2kB 100.0% 🚀
_astro/HomePage.6qBWH9qC.css (New) 21.18kB 21.18kB 100.0% 🚀
_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2 (New) 21.17kB 21.17kB 100.0% 🚀
chunks/gdscript_CSSSWtkL.mjs (New) 21.11kB 21.11kB 100.0% 🚀
chunks/your-first-scene_C2FVGTP3.mjs (New) 21.01kB 21.01kB 100.0% 🚀
chunks/svelte_BPWEr4fK.mjs (New) 20.75kB 20.75kB 100.0% 🚀
chunks/graphql_D_YYFDMU.mjs (New) 20.59kB 20.59kB 100.0% 🚀
chunks/material-theme-palenight_BqWSY0zJ.mjs (New) 20.57kB 20.57kB 100.0% 🚀
chunks/material-theme-lighter_BiEXTf1u.mjs (New) 20.56kB 20.56kB 100.0% 🚀
chunks/material-theme-darker_DAUXLwZb.mjs (New) 20.55kB 20.55kB 100.0% 🚀
chunks/material-theme-ocean_C0tH_beU.mjs (New) 20.55kB 20.55kB 100.0% 🚀
chunks/material-theme_DckHuUUK.mjs (New) 20.52kB 20.52kB 100.0% 🚀
chunks/liquid_BmzWPM4R.mjs (New) 20.34kB 20.34kB 100.0% 🚀
chunks/move_B-o8dn0N.mjs (New) 20.24kB 20.24kB 100.0% 🚀
_astro/ExampleBrowser.BGXKxNid.css (New) 20.05kB 20.05kB 100.0% 🚀
chunks/setup_h3Ddjx1x.mjs (New) 19.4kB 19.4kB 100.0% 🚀
chunks/ts-tags_fCPzN4J1.mjs (New) 19.02kB 19.02kB 100.0% 🚀
chunks/kanagawa-dragon_BUX6P0jP.mjs (New) 18.91kB 18.91kB 100.0% 🚀
chunks/kanagawa-lotus_Dm_LiccM.mjs (New) 18.91kB 18.91kB 100.0% 🚀
chunks/kanagawa-wave_K9PBxgbK.mjs (New) 18.9kB 18.9kB 100.0% 🚀
chunks/odin_vjOJSyfV.mjs (New) 18.58kB 18.58kB 100.0% 🚀
chunks/solidity_DPVu0wkJ.mjs (New) 18.46kB 18.46kB 100.0% 🚀
chunks/elixir_B_EVzLaG.mjs (New) 18.25kB 18.25kB 100.0% 🚀
chunks/cue_B5KneM5p.mjs (New) 18.22kB 18.22kB 100.0% 🚀
chunks/matlab_CfRK6IMC.mjs (New) 17.96kB 17.96kB 100.0% 🚀
chunks/luau_koeK31uZ.mjs (New) 17.78kB 17.78kB 100.0% 🚀
chunks/nix_4vzStI7m.mjs (New) 17.7kB 17.7kB 100.0% 🚀
chunks/lua_D40mNAJl.mjs (New) 17.57kB 17.57kB 100.0% 🚀
chunks/post-processing_Dp_gpV9P.mjs (New) 17.44kB 17.44kB 100.0% 🚀
chunks/actionscript-3_CfsDl31I.mjs (New) 17.38kB 17.38kB 100.0% 🚀
_astro/space-grotesk-latin-400-normal.BnQMeOim.woff (New) 17.0kB 17.0kB 100.0% 🚀
_astro/space-grotesk-latin-500-normal.CNSSEhBt.woff (New) 16.99kB 16.99kB 100.0% 🚀
chunks/rust_COBzcmTx.mjs (New) 16.94kB 16.94kB 100.0% 🚀
_astro/space-grotesk-latin-600-normal.BflQw4A9.woff (New) 16.88kB 16.88kB 100.0% 🚀
_astro/space-grotesk-latin-ext-400-normal.DRPE3kg4.woff (New) 16.79kB 16.79kB 100.0% 🚀
_astro/space-grotesk-latin-ext-500-normal.3dgZTiw9.woff (New) 16.79kB 16.79kB 100.0% 🚀
_astro/space-grotesk-latin-ext-600-normal.VcznFIpX.woff (New) 16.73kB 16.73kB 100.0% 🚀
chunks/abap_LtYK6g-v.mjs (New) 16.59kB 16.59kB 100.0% 🚀
chunks/github-dark-high-contrast_RHN5kW48.mjs (New) 16.44kB 16.44kB 100.0% 🚀
chunks/gnuplot_DgWvVXI8.mjs (New) 16.3kB 16.3kB 100.0% 🚀
chunks/kusto_6FdaWTzR.mjs (New) 16.29kB 16.29kB 100.0% 🚀
chunks/github-dark-default_BrdnT3vv.mjs (New) 16.25kB 16.25kB 100.0% 🚀
chunks/github-dark-dimmed_Bn-P3bZJ.mjs (New) 16.25kB 16.25kB 100.0% 🚀
chunks/github-light-high-contrast_XMJJhVsV.mjs (New) 16.09kB 16.09kB 100.0% 🚀
chunks/coordinates-and-views_BOytpPGp.mjs (New) 15.95kB 15.95kB 100.0% 🚀
chunks/github-light-default_PTSfV1MO.mjs (New) 15.94kB 15.94kB 100.0% 🚀
chunks/clarity_BkOxTQMf.mjs (New) 15.91kB 15.91kB 100.0% 🚀
chunks/pug_UKFyUFpE.mjs (New) 15.87kB 15.87kB 100.0% 🚀
chunks/synthwave-84_D4CZeGaH.mjs (New) 15.79kB 15.79kB 100.0% 🚀
_astro/DocsSidebar.BkSw41XL.css (New) 15.77kB 15.77kB 100.0% 🚀
chunks/smalltalk_D4IpSogw.mjs (New) 15.67kB 15.67kB 100.0% 🚀
chunks/HomePage_HiQ5WM4y.mjs (New) 15.49kB 15.49kB 100.0% 🚀
chunks/vitesse-dark_Cjct7fHa.mjs (New) 15.47kB 15.47kB 100.0% 🚀
chunks/ApiSymbolPage_C9ZwGgpG.mjs (New) 15.4kB 15.4kB 100.0% 🚀
chunks/vitesse-black_BnxsPkql.mjs (New) 15.39kB 15.39kB 100.0% 🚀
chunks/vitesse-light_D54yeeu7.mjs (New) 15.32kB 15.32kB 100.0% 🚀
chunks/v_DBTjbKF9.mjs (New) 15.03kB 15.03kB 100.0% 🚀
chunks/aurora-x_Dwo4cmWi.mjs (New) 15.02kB 15.02kB 100.0% 🚀
chunks/parse_DwASa1l8.mjs (New) 14.67kB 14.67kB 100.0% 🚀
chunks/bat_Dx8nnxXE.mjs (New) 14.19kB 14.19kB 100.0% 🚀
chunks/chords-and-sequences_LafZ8NOH.mjs (New) 14.16kB 14.16kB 100.0% 🚀
chunks/fish_D7qAeWQz.mjs (New) 13.98kB 13.98kB 100.0% 🚀
chunks/handlebars_CenwkBn_.mjs (New) 13.96kB 13.96kB 100.0% 🚀
chunks/vesper_29-00ngB.mjs (New) 13.95kB 13.95kB 100.0% 🚀
chunks/nsis_C3tUpeAt.mjs (New) 13.79kB 13.79kB 100.0% 🚀
chunks/surrealql_H8LFCYct.mjs (New) 13.62kB 13.62kB 100.0% 🚀
chunks/hjson_Cuaphql8.mjs (New) 13.51kB 13.51kB 100.0% 🚀
_astro/space-grotesk-latin-400-normal.CJ-V5oYT.woff2 (New) 13.39kB 13.39kB 100.0% 🚀
chunks/apache_BIl2qPOf.mjs (New) 13.38kB 13.38kB 100.0% 🚀
_astro/space-grotesk-latin-500-normal.lFbtlQH6.woff2 (New) 13.31kB 13.31kB 100.0% 🚀
_astro/space-grotesk-latin-600-normal.DjKNqYRj.woff2 (New) 13.28kB 13.28kB 100.0% 🚀
chunks/wasm_gNIKwGlD.mjs (New) 13.23kB 13.23kB 100.0% 🚀
chunks/GuideChapterPage_CG9Qesqd.mjs (New) 13.12kB 13.12kB 100.0% 🚀
chunks/github-dark_DS-peopi.mjs (New) 12.89kB 12.89kB 100.0% 🚀
chunks/puppet_CQlPp728.mjs (New) 12.8kB 12.8kB 100.0% 🚀
chunks/terraform_v0KN9QQh.mjs (New) 12.78kB 12.78kB 100.0% 🚀
chunks/project-structure_B8BSkbmq.mjs (New) 12.74kB 12.74kB 100.0% 🚀
chunks/cinematics_D-OvRBCo.mjs (New) 12.7kB 12.7kB 100.0% 🚀
chunks/github-light_COKynrhu.mjs (New) 12.66kB 12.66kB 100.0% 🚀
chunks/laserwave_DHoaXozT.mjs (New) 12.62kB 12.62kB 100.0% 🚀
chunks/elm_Bipiw8b9.mjs (New) 12.52kB 12.52kB 100.0% 🚀
chunks/just_Du2dk0Nd.mjs (New) 12.4kB 12.4kB 100.0% 🚀
_astro/space-grotesk-latin-ext-600-normal.DxxdqCpr.woff2 (New) 12.29kB 12.29kB 100.0% 🚀
_astro/space-grotesk-latin-ext-500-normal.DUe3BAxM.woff2 (New) 12.27kB 12.27kB 100.0% 🚀
_astro/space-grotesk-latin-ext-400-normal.CfP_5XZW.woff2 (New) 12.26kB 12.26kB 100.0% 🚀
chunks/gherkin_D6Lr12YQ.mjs (New) 12.25kB 12.25kB 100.0% 🚀
chunks/ApiAllPage_DYZE8LES.mjs (New) 12.01kB 12.01kB 100.0% 🚀
chunks/rst_8pQc8J6s.mjs (New) 11.99kB 11.99kB 100.0% 🚀
chunks/prolog_Bacii3Ue.mjs (New) 11.89kB 11.89kB 100.0% 🚀
chunks/yaml_BXGYSTgF.mjs (New) 11.87kB 11.87kB 100.0% 🚀
chunks/nextflow-groovy_CdFFX-gF.mjs (New) 11.82kB 11.82kB 100.0% 🚀
chunks/beancount_CXtOQ8oS.mjs (New) 11.76kB 11.76kB 100.0% 🚀
chunks/dream-maker_CngiPd8U.mjs (New) 11.66kB 11.66kB 100.0% 🚀
chunks/pkl_C7lWzykI.mjs (New) 11.51kB 11.51kB 100.0% 🚀
chunks/hcl_DHg_Osgo.mjs (New) 11.39kB 11.39kB 100.0% 🚀
chunks/light-plus_BYP-8qw4.mjs (New) 11.16kB 11.16kB 100.0% 🚀
chunks/jison_otwuiBLr.mjs (New) 11.11kB 11.11kB 100.0% 🚀
chunks/raku_DI9yGpeW.mjs (New) 11.1kB 11.1kB 100.0% 🚀
chunks/pause-menu_6HF0Z2BU.mjs (New) 10.73kB 10.73kB 100.0% 🚀
chunks/slack-ochin_BtOis9cv.mjs (New) 10.72kB 10.72kB 100.0% 🚀
chunks/tex_D-vgCAxY.mjs (New) 10.68kB 10.68kB 100.0% 🚀
chunks/sass_DI2zJwx7.mjs (New) 10.44kB 10.44kB 100.0% 🚀
chunks/plastic_DW9BRoPy.mjs (New) 10.41kB 10.41kB 100.0% 🚀
_astro/jetbrains-mono-latin-ext-500-normal.ckzbgY84.woff (New) 10.34kB 10.34kB 100.0% 🚀
chunks/slack-dark_DF6OVa8y.mjs (New) 10.31kB 10.31kB 100.0% 🚀
chunks/smithy_BRyN83Yn.mjs (New) 10.29kB 10.29kB 100.0% 🚀
chunks/dark-plus_BLkfv1Ms.mjs (New) 10.26kB 10.26kB 100.0% 🚀
chunks/game-feel_C_clDlXm.mjs (New) 10.16kB 10.16kB 100.0% 🚀
chunks/cmake_DPsCB_V6.mjs (New) 10.14kB 10.14kB 100.0% 🚀
_astro/jetbrains-mono-latin-ext-400-normal.fXTG6kC5.woff (New) 10.13kB 10.13kB 100.0% 🚀
chunks/audio-reactive-scene_DLzY90bU.mjs (New) 10.11kB 10.11kB 100.0% 🚀
chunks/andromeeda_BsG9A-2G.mjs (New) 10.05kB 10.05kB 100.0% 🚀
chunks/make_B2ukzWs3.mjs (New) 10.03kB 10.03kB 100.0% 🚀
chunks/horizon-bright_CwPyL0ta.mjs (New) 9.96kB 9.96kB 100.0% 🚀
chunks/horizon_D2HPo9qV.mjs (New) 9.93kB 9.93kB 100.0% 🚀
chunks/kotlin_BHE8CoV9.mjs (New) 9.85kB 9.85kB 100.0% 🚀
chunks/sas_CDyGTQ8m.mjs (New) 9.74kB 9.74kB 100.0% 🚀
chunks/haml_Cuchl6uH.mjs (New) 9.71kB 9.71kB 100.0% 🚀
chunks/hud-overlay_6VM54VYc.mjs (New) 9.69kB 9.69kB 100.0% 🚀
chunks/vue-html_CftEgX6P.mjs (New) 9.68kB 9.68kB 100.0% 🚀
chunks/dart_C6DUdjib.mjs (New) 9.67kB 9.67kB 100.0% 🚀
_astro/ApiSymbolPage.CWZBqkCH.css (New) 9.5kB 9.5kB 100.0% 🚀
chunks/monokai_Y04IwRdK.mjs (New) 9.17kB 9.17kB 100.0% 🚀
chunks/regexp_hIwxRxyb.mjs (New) 9.14kB 9.14kB 100.0% 🚀
chunks/ui-patterns_DWTZYqrd.mjs (New) 9.06kB 9.06kB 100.0% 🚀
chunks/plsql_DCNXypXO.mjs (New) 9.03kB 9.03kB 100.0% 🚀
chunks/camera-follow-and-parallax_Bd0cbpcI.mjs (New) 9.0kB 9.0kB 100.0% 🚀
chunks/prisma_4G_BaF_i.mjs (New) 8.73kB 8.73kB 100.0% 🚀
chunks/systemd_DFbUltlW.mjs (New) 8.58kB 8.58kB 100.0% 🚀
chunks/GuideIndexPage_BbkvKU5i.mjs (New) 8.36kB 8.36kB 100.0% 🚀
chunks/ApiIndexPage_MJPJMHUi.mjs (New) 8.28kB 8.28kB 100.0% 🚀
chunks/soy_CIWxkm6B.mjs (New) 8.12kB 8.12kB 100.0% 🚀
chunks/solarized-dark_W1kg3ZX0.mjs (New) 8.03kB 8.03kB 100.0% 🚀
chunks/qss_Iltvkn1C.mjs (New) 7.97kB 7.97kB 100.0% 🚀
chunks/split-screen_Cx3PP46W.mjs (New) 7.96kB 7.96kB 100.0% 🚀
chunks/r_xm7_PhsC.mjs (New) 7.96kB 7.96kB 100.0% 🚀
chunks/min-light_CnaFhYML.mjs (New) 7.88kB 7.88kB 100.0% 🚀
chunks/scheme_D3A2QBtM.mjs (New) 7.87kB 7.87kB 100.0% 🚀
_astro/GuideChapterPage.Cg0P5OpK.css (New) 7.79kB 7.79kB 100.0% 🚀
chunks/talonscript_CLxaFu-b.mjs (New) 7.73kB 7.73kB 100.0% 🚀
chunks/hlsl_BJLUNfne.mjs (New) 7.73kB 7.73kB 100.0% 🚀
chunks/solarized-light_DnHmPawE.mjs (New) 7.63kB 7.63kB 100.0% 🚀
_astro/jetbrains-mono-latin-ext-500-normal.Cut-4mMH.woff2 (New) 7.53kB 7.53kB 100.0% 🚀
chunks/riscv_CvzikGLb.mjs (New) 7.5kB 7.5kB 100.0% 🚀
chunks/proto_ClkOcAW0.mjs (New) 7.47kB 7.47kB 100.0% 🚀
chunks/chapel_C02jq-Ii.mjs (New) 7.47kB 7.47kB 100.0% 🚀
chunks/red_C4iRHu1e.mjs (New) 7.35kB 7.35kB 100.0% 🚀
_astro/jetbrains-mono-latin-ext-400-normal.Bc8Ftmh3.woff2 (New) 7.34kB 7.34kB 100.0% 🚀
chunks/toml_B7BHZIqX.mjs (New) 7.22kB 7.22kB 100.0% 🚀
chunks/clojure_DDsQ0FaV.mjs (New) 7.2kB 7.2kB 100.0% 🚀
chunks/postcss_D1gKt4z_.mjs (New) 7.15kB 7.15kB 100.0% 🚀
chunks/min-dark_Ba1FsixN.mjs (New) 7.12kB 7.12kB 100.0% 🚀
chunks/ara_IxnQjO6j.mjs (New) 7.1kB 7.1kB 100.0% 🚀
chunks/gdshader_D7JfdFV3.mjs (New) 7.08kB 7.08kB 100.0% 🚀
chunks/what-is-exojs_afmgeBnf.mjs (New) 7.03kB 7.03kB 100.0% 🚀
_astro/jetbrains-mono-cyrillic-500-normal.DJqRU3vO.woff (New) 7.02kB 7.02kB 100.0% 🚀
chunks/verilog_Ma7yBE30.mjs (New) 6.99kB 6.99kB 100.0% 🚀
_astro/jetbrains-mono-cyrillic-400-normal.ugxPyKxw.woff (New) 6.98kB 6.98kB 100.0% 🚀
_astro/GuideIndexPage.*.css (New) 6.71kB 6.71kB 100.0% 🚀
chunks/jinja_D9zUf7rH.mjs (New) 6.61kB 6.61kB 100.0% 🚀
chunks/cypher_D8Bb8Cq2.mjs (New) 6.58kB 6.58kB 100.0% 🚀
chunks/powerquery_SrvS_NBM.mjs (New) 6.58kB 6.58kB 100.0% 🚀
chunks/coq_BtFcIXby.mjs (New) 6.55kB 6.55kB 100.0% 🚀
chunks/vb_eGVhCUXq.mjs (New) 6.54kB 6.54kB 100.0% 🚀
chunks/shaderlab_BcRFTmmA.mjs (New) 6.5kB 6.5kB 100.0% 🚀
chunks/xml_DzftpGsQ.mjs (New) 6.41kB 6.41kB 100.0% 🚀
_astro/ApiIndexPage.Bl6TcwAA.css (New) 6.35kB 6.35kB 100.0% 🚀
chunks/content-modules_whDhzjCb.mjs (New) 6.32kB 6.32kB 100.0% 🚀
chunks/lean_BwOKScIt.mjs (New) 6.28kB 6.28kB 100.0% 🚀
chunks/qml_CknB7WvB.mjs (New) 6.24kB 6.24kB 100.0% 🚀
chunks/SourceSnippet_eWOj6j_R.mjs (New) 6.17kB 6.17kB 100.0% 🚀
chunks/awk_D6dA05Ye.mjs (New) 6.17kB 6.17kB 100.0% 🚀
chunks/gdresource_DdPbsqpY.mjs (New) 6.06kB 6.06kB 100.0% 🚀
chunks/bicep_CZ338dSk.mjs (New) 5.98kB 5.98kB 100.0% 🚀
chunks/zig_lTQvxhLD.mjs (New) 5.97kB 5.97kB 100.0% 🚀
chunks/wgsl_1s5rV5xS.mjs (New) 5.77kB 5.77kB 100.0% 🚀
chunks/dax_S-Noo-ku.mjs (New) 5.73kB 5.73kB 100.0% 🚀
_astro/space-grotesk-vietnamese-400-normal.BIWiOVfw.woff (New) 5.73kB 5.73kB 100.0% 🚀
_astro/jetbrains-mono-greek-500-normal.D7SFKleX.woff (New) 5.72kB 5.72kB 100.0% 🚀
_astro/space-grotesk-vietnamese-500-normal.BTqKIpxg.woff (New) 5.72kB 5.72kB 100.0% 🚀
_astro/space-grotesk-vietnamese-600-normal.D6zpsUhD.woff (New) 5.7kB 5.7kB 100.0% 🚀
_astro/jetbrains-mono-greek-400-normal.B9oWc5Lo.woff (New) 5.66kB 5.66kB 100.0% 🚀
_astro/jetbrains-mono-vietnamese-500-normal.DNRqzVM1.woff (New) 5.48kB 5.48kB 100.0% 🚀
chunks/bibtex_BzgdqG3s.mjs (New) 5.41kB 5.41kB 100.0% 🚀
chunks/polar_4pN1JrJ8.mjs (New) 5.38kB 5.38kB 100.0% 🚀
_astro/jetbrains-mono-vietnamese-400-normal.CqNFfHCs.woff (New) 5.37kB 5.37kB 100.0% 🚀
chunks/sharp_CA3kV5sA.mjs (New) 5.37kB 5.37kB 100.0% 🚀
_astro/jetbrains-mono-cyrillic-500-normal.DmUKJPL_.woff2 (New) 5.36kB 5.36kB 100.0% 🚀
_astro/jetbrains-mono-cyrillic-400-normal.BEIGL1Tu.woff2 (New) 5.33kB 5.33kB 100.0% 🚀
chunks/llvm_ZNG_yAr9.mjs (New) 5.31kB 5.31kB 100.0% 🚀
chunks/nextflow_Dp8l2yvM.mjs (New) 5.28kB 5.28kB 100.0% 🚀
chunks/http_DUlij2nY.mjs (New) 5.25kB 5.25kB 100.0% 🚀
chunks/fennel_B3wtZRne.mjs (New) 5.21kB 5.21kB 100.0% 🚀
chunks/rosmsg_CyYq6XdT.mjs (New) 5.13kB 5.13kB 100.0% 🚀
_astro/ApiAllPage.B_HMfH1F.css (New) 5.11kB 5.11kB 100.0% 🚀
chunks/tcl_DLe0Tsfm.mjs (New) 4.95kB 4.95kB 100.0% 🚀
chunks/sdbl_CdQg5gu1.mjs (New) 4.95kB 4.95kB 100.0% 🚀
chunks/ron_DzAo6FTJ.mjs (New) 4.51kB 4.51kB 100.0% 🚀
chunks/pascal_D8-gNZ2I.mjs (New) 4.49kB 4.49kB 100.0% 🚀
chunks/zenscript_BoijL7rl.mjs (New) 4.38kB 4.38kB 100.0% 🚀
_astro/space-grotesk-vietnamese-500-normal.BmEvtly_.woff2 (New) 4.32kB 4.32kB 100.0% 🚀
chunks/gn_DDjbVPF4.mjs (New) 4.31kB 4.31kB 100.0% 🚀
_astro/space-grotesk-vietnamese-600-normal.DUi7WF5p.woff2 (New) 4.31kB 4.31kB 100.0% 🚀
_astro/space-grotesk-vietnamese-400-normal.B7xT_GF5.woff2 (New) 4.3kB 4.3kB 100.0% 🚀
_astro/jetbrains-mono-greek-500-normal.JpySY46c.woff2 (New) 4.28kB 4.28kB 100.0% 🚀
_astro/jetbrains-mono-greek-400-normal.C190GLew.woff2 (New) 4.23kB 4.23kB 100.0% 🚀
chunks/hurl_CmOLSul9.mjs (New) 4.22kB 4.22kB 100.0% 🚀
chunks/turtle_BEG5g_eT.mjs (New) 4.2kB 4.2kB 100.0% 🚀
_astro/EditorCode.BiwcI9nO.css (New) 4.18kB 4.18kB 100.0% 🚀
chunks/narrat_D9rrR0H5.mjs (New) 4.12kB 4.12kB 100.0% 🚀
chunks/kdl_DkTyxPcj.mjs (New) 4.1kB 4.1kB 100.0% 🚀
chunks/glsl_BNaTluKX.mjs (New) 4.09kB 4.09kB 100.0% 🚀
chunks/fluent_BjfpB34g.mjs (New) 4.04kB 4.04kB 100.0% 🚀
chunks/jsonnet_BafgE6cE.mjs (New) 4.04kB 4.04kB 100.0% 🚀
chunks/ssh-config_DXFPABYp.mjs (New) 3.83kB 3.83kB 100.0% 🚀
chunks/tasl__AAbKiWM.mjs (New) 3.81kB 3.81kB 100.0% 🚀
chunks/rel_BT0iIKKw.mjs (New) 3.75kB 3.75kB 100.0% 🚀
chunks/rbs_D_4FkXDS.mjs (New) 3.75kB 3.75kB 100.0% 🚀
chunks/vala_BnnASFsX.mjs (New) 3.74kB 3.74kB 100.0% 🚀
chunks/genie_DnK2KWIP.mjs (New) 3.73kB 3.73kB 100.0% 🚀
chunks/json5_xULSgPQI.mjs (New) 3.71kB 3.71kB 100.0% 🚀
chunks/po_IjpR1yHO.mjs (New) 3.71kB 3.71kB 100.0% 🚀
chunks/splunk_xP_ZjUH2.mjs (New) 3.65kB 3.65kB 100.0% 🚀
chunks/mipsasm_EL46Y4Xg.mjs (New) 3.54kB 3.54kB 100.0% 🚀
chunks/jsonc_Cu6rqcrJ.mjs (New) 3.51kB 3.51kB 100.0% 🚀
chunks/cairo_7gDYl5gO.mjs (New) 3.49kB 3.49kB 100.0% 🚀
chunks/json_B8nXmmR-.mjs (New) 3.48kB 3.48kB 100.0% 🚀
chunks/jsonl_Bp0qqr10.mjs (New) 3.42kB 3.42kB 100.0% 🚀
chunks/berry_CgA2ea0_.mjs (New) 3.4kB 3.4kB 100.0% 🚀
chunks/api-reference_aNM6Dy92.mjs (New) 3.35kB 3.35kB 100.0% 🚀
chunks/logo_DTXV8SKw.mjs (New) 3.27kB 3.27kB 100.0% 🚀
chunks/openscad_jn-f1Ocl.mjs (New) 3.17kB 3.17kB 100.0% 🚀
chunks/ExamplePreview_D68dQxb_.mjs (New) 3.15kB 3.15kB 100.0% 🚀
chunks/log_Dad54gsi.mjs (New) 3.15kB 3.15kB 100.0% 🚀
chunks/gleam_CTllUdfC.mjs (New) 2.93kB 2.93kB 100.0% 🚀
chunks/diff_Blb4MjsC.mjs (New) 2.89kB 2.89kB 100.0% 🚀
chunks/hy_CJKxDzbh.mjs (New) 2.86kB 2.86kB 100.0% 🚀
chunks/edge_CgYDa_hN.mjs (New) 2.85kB 2.85kB 100.0% 🚀
chunks/TryIt_BiKkmL48.mjs (New) 2.81kB 2.81kB 100.0% 🚀
chunks/reg_DpJf71oO.mjs (New) 2.64kB 2.64kB 100.0% 🚀
chunks/erb_C8YKatMA.mjs (New) 2.61kB 2.61kB 100.0% 🚀
chunks/jssm_Dx5A5sBR.mjs (New) 2.54kB 2.54kB 100.0% 🚀
_astro/Callout.BOvfkbMv.css (New) 2.48kB 2.48kB 100.0% 🚀
chunks/wenyan_BeysbCrW.mjs (New) 2.43kB 2.43kB 100.0% 🚀
_astro/ExamplePreview.UpcfGuJY.css (New) 2.3kB 2.3kB 100.0% 🚀
chunks/remote_BUikHFn8.mjs (New) 2.24kB 2.24kB 100.0% 🚀
chunks/hxml_D7jA4-jQ.mjs (New) 2.2kB 2.2kB 100.0% 🚀
chunks/fortran-fixed-form_DKmTkb0c.mjs (New) 2.11kB 2.11kB 100.0% 🚀
chunks/desktop_BgOb7Aj4.mjs (New) 2.06kB 2.06kB 100.0% 🚀
_astro/backend-comparison.ZtNk-atA.css (New) 2.0kB 2.0kB 100.0% 🚀
chunks/docker_PC1tuYpa.mjs (New) 1.96kB 1.96kB 100.0% 🚀
chunks/GuidePartRedirect_KA61otGL.mjs (New) 1.94kB 1.94kB 100.0% 🚀
chunks/ini_C24lZfdM.mjs (New) 1.76kB 1.76kB 100.0% 🚀
chunks/sparql_DGgRGInO.mjs (New) 1.75kB 1.75kB 100.0% 🚀
chunks/index_BJ8RYB3Y.mjs (New) 1.72kB 1.72kB 100.0% 🚀
chunks/xsl_Cw3rM8vE.mjs (New) 1.71kB 1.71kB 100.0% 🚀
chunks/dotenv_Dkdv7Sm2.mjs (New) 1.65kB 1.65kB 100.0% 🚀
chunks/index_7KJ4LtH-.mjs (New) 1.61kB 1.61kB 100.0% 🚀
chunks/index_C5hsxWdY.mjs (New) 1.61kB 1.61kB 100.0% 🚀
chunks/Callout_V6qJikCk.mjs (New) 1.58kB 1.58kB 100.0% 🚀
chunks/git-commit_bqpc4DGi.mjs (New) 1.57kB 1.57kB 100.0% 🚀
_astro/TryIt.2vmWUXmI.css (New) 1.56kB 1.56kB 100.0% 🚀
chunks/rolldown-runtime_DC62tzP2.mjs (New) 1.45kB 1.45kB 100.0% 🚀
chunks/index_BXaYHDQd.mjs (New) 1.44kB 1.44kB 100.0% 🚀
chunks/index_COfq0y-T.mjs (New) 1.44kB 1.44kB 100.0% 🚀
chunks/index_BmjS_sKA.mjs (New) 1.41kB 1.41kB 100.0% 🚀
chunks/index_x-hohsql.mjs (New) 1.41kB 1.41kB 100.0% 🚀
chunks/_symbol__BHvlwvwh.mjs (New) 1.41kB 1.41kB 100.0% 🚀
chunks/_symbol__Cp9RktP1.mjs (New) 1.41kB 1.41kB 100.0% 🚀
chunks/compiler_C_wsWChh.mjs (New) 1.34kB 1.34kB 100.0% 🚀
chunks/csv_DqIVFkK7.mjs (New) 1.32kB 1.32kB 100.0% 🚀
chunks/git-rebase_CRs01Nr6.mjs (New) 1.3kB 1.3kB 100.0% 🚀
_astro/NextStep.5jphCb2x.css (New) 1.28kB 1.28kB 100.0% 🚀
_astro/example-sources.BPTlcc6X.css (New) 1.19kB 1.19kB 100.0% 🚀
chunks/qmldir_Dz8ttxjf.mjs (New) 1.17kB 1.17kB 100.0% 🚀
chunks/react-utils_DNZ_oAx1.mjs (New) 1.15kB 1.15kB 100.0% 🚀
chunks/html-derivative_UN2HpEjt.mjs (New) 1.13kB 1.13kB 100.0% 🚀
chunks/NextStep_ChfNId7S.mjs (New) 1.06kB 1.06kB 100.0% 🚀
chunks/shellsession_Bbrjk1tD.mjs (New) 995 bytes 995 bytes 100.0% 🚀
chunks/index_BhiOFvIz.mjs (New) 957 bytes 957 bytes 100.0% 🚀
chunks/index_DGcrx5dR.mjs (New) 957 bytes 957 bytes 100.0% 🚀
chunks/index_4ay1y94-.mjs (New) 935 bytes 935 bytes 100.0% 🚀
chunks/index_NMbbqJek.mjs (New) 935 bytes 935 bytes 100.0% 🚀
chunks/all_DSm60z8S.mjs (New) 919 bytes 919 bytes 100.0% 🚀
chunks/all_nm_nLA65.mjs (New) 919 bytes 919 bytes 100.0% 🚀
chunks/index_BcwjrkFL.mjs (New) 897 bytes 897 bytes 100.0% 🚀
chunks/index_DH-B4SeW.mjs (New) 897 bytes 897 bytes 100.0% 🚀
chunks/tsv_BorGVq2Z.mjs (New) 862 bytes 862 bytes 100.0% 🚀
chunks/codeowners_CxEKPWu0.mjs (New) 666 bytes 666 bytes 100.0% 🚀
chunks/EnglishFallbackNotice_CVFgekAN.mjs (New) 635 bytes 635 bytes 100.0% 🚀
chunks/vendor-monaco_CC8sPhLj.mjs (New) 570 bytes 570 bytes 100.0% 🚀
_astro/SourceSnippet.DWw4KFVr.css (New) 529 bytes 529 bytes 100.0% 🚀
chunks/audio-reactive-visualization_BgEJQqqi.mjs (New) 381 bytes 381 bytes 100.0% 🚀
chunks/typed-worklets-and-workers_DJN_Rn8c.mjs (New) 380 bytes 380 bytes 100.0% 🚀
chunks/camera-follow-and-parallax_CyAhoZcU.mjs (New) 379 bytes 379 bytes 100.0% 🚀
chunks/debugging-and-inspection_DskZ0U45.mjs (New) 377 bytes 377 bytes 100.0% 🚀
chunks/resize-dpr-and-canvas_Dpagjieu.mjs (New) 377 bytes 377 bytes 100.0% 🚀
chunks/serialization-and-prefabs_J9JK2vT6.mjs (New) 377 bytes 377 bytes 100.0% 🚀
chunks/authoring-extensions_Cbj7KIvp.mjs (New) 369 bytes 369 bytes 100.0% 🚀
chunks/coordinates-and-views_BZD8LJ4C.mjs (New) 369 bytes 369 bytes 100.0% 🚀
chunks/project-structure_z8IPd4pS.mjs (New) 369 bytes 369 bytes 100.0% 🚀
chunks/loading-and-resources_Bv4bJsK9.mjs (New) 368 bytes 368 bytes 100.0% 🚀
chunks/audio-reactive-scene_CHxLVg6N.mjs (New) 367 bytes 367 bytes 100.0% 🚀
chunks/retained-containers_eq-ujefV.mjs (New) 367 bytes 367 bytes 100.0% 🚀
chunks/scenes-and-lifecycle_BDq1q4iF.mjs (New) 367 bytes 367 bytes 100.0% 🚀
chunks/your-first-scene_CoZNH8AW.mjs (New) 367 bytes 367 bytes 100.0% 🚀
chunks/backend-comparison_CqaQhSNw.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/chords-and-sequences_CQeWOr8M.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/custom-mesh-shaders_Dhy81C-S.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/joints-and-dynamics_Cb8JHZqW.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/keyboard-and-actions_Hrjrw5QH.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/worlds-and-spawning_D9u5w22B.mjs (New) 364 bytes 364 bytes 100.0% 🚀
chunks/gameplay-collision_BgTobxoI.mjs (New) 363 bytes 363 bytes 100.0% 🚀
chunks/custom-renderers_CVf7Ot9-.mjs (New) 361 bytes 361 bytes 100.0% 🚀
chunks/what-is-exojs_D4oiNQgu.mjs (New) 361 bytes 361 bytes 100.0% 🚀
chunks/mouse-and-pointer_C1pXdBCw.mjs (New) 359 bytes 359 bytes 100.0% 🚀
chunks/troubleshooting_CuH5GFJ2.mjs (New) 358 bytes 358 bytes 100.0% 🚀
chunks/build-orb-dodge_Dct9xtdF.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/immediate-mode_Bi01zsJk.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/pixel-snapping_DqCGyOnl.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/post-processing_BEho6THE.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/render-targets_BRjy8w3L.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/device-variants_BjDGa-8w.mjs (New) 356 bytes 356 bytes 100.0% 🚀
chunks/infinite-maps_BZwec44T.mjs (New) 355 bytes 355 bytes 100.0% 🚀
chunks/physics-basics_aijh5slX.mjs (New) 355 bytes 355 bytes 100.0% 🚀
chunks/ui-and-widgets_DzOxYaAz.mjs (New) 355 bytes 355 bytes 100.0% 🚀
chunks/typed-shaders_BxxuvzWF.mjs (New) 354 bytes 354 bytes 100.0% 🚀
chunks/beat-detection_BXRWYTzy.mjs (New) 353 bytes 353 bytes 100.0% 🚀
chunks/audio-effects_D08gEtlD.mjs (New) 351 bytes 351 bytes 100.0% 🚀
chunks/performance_6b4qxWnM.mjs (New) 351 bytes 351 bytes 100.0% 🚀
chunks/spatial-audio_Dx3NNJez.mjs (New) 351 bytes 351 bytes 100.0% 🚀
chunks/split-screen_WSWjsw6x.mjs (New) 351 bytes 351 bytes 100.0% 🚀
chunks/application_ChzM-2on.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/audio-basics_CalWofC3.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/hud-overlay_DH1DyMju.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/scene-graph_mVHf9oRL.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/ui-patterns_Dvs7maYH.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/deployment_CBfE1Tmr.mjs (New) 348 bytes 348 bytes 100.0% 🚀
chunks/animation_BIj71S2D.mjs (New) 347 bytes 347 bytes 100.0% 🚀
chunks/cinematics_yMcUjNw7.mjs (New) 347 bytes 347 bytes 100.0% 🚀
chunks/pause-menu_CcV0xxxc.mjs (New) 347 bytes 347 bytes 100.0% 🚀
chunks/tiled-maps_CETn9Klb.mjs (New) 346 bytes 346 bytes 100.0% 🚀
chunks/game-feel_DJB4OfR2.mjs (New) 345 bytes 345 bytes 100.0% 🚀
chunks/graphics_BnTGWQkI.mjs (New) 345 bytes 345 bytes 100.0% 🚀
chunks/particles_Dj21_GAM.mjs (New) 345 bytes 345 bytes 100.0% 🚀
chunks/setup_DcRij-3b.mjs (New) 345 bytes 345 bytes 100.0% 🚀
chunks/sprites_CVZJWmx-.mjs (New) 343 bytes 343 bytes 100.0% 🚀
chunks/aseprite_oe92YQti.mjs (New) 342 bytes 342 bytes 100.0% 🚀
chunks/react_BJv_9aD0.mjs (New) 342 bytes 342 bytes 100.0% 🚀
chunks/filters_CclefqLd.mjs (New) 341 bytes 341 bytes 100.0% 🚀
chunks/offline_Bhgov_RK.mjs (New) 340 bytes 340 bytes 100.0% 🚀
chunks/gamepad_DFogFOzB.mjs (New) 339 bytes 339 bytes 100.0% 🚀
chunks/text_DUdSBXl2.mjs (New) 337 bytes 337 bytes 100.0% 🚀
chunks/ldtk_Csnq-SqK.mjs (New) 334 bytes 334 bytes 100.0% 🚀
_astro/EnglishFallbackNotice.CBJEFTmj.css (New) 279 bytes 279 bytes 100.0% 🚀
chunks/_virtual_astro_server-island-manifest_C1Q2srgE.mjs (New) 217 bytes 217 bytes 100.0% 🚀
chunks/_virtual_astro_session-driver_C-PI1Pas.mjs (New) 165 bytes 165 bytes 100.0% 🚀
chunks/content-assets_DXqEyLLP.mjs (New) 151 bytes 151 bytes 100.0% 🚀
chunks/_noop-middleware_CQ50ikAJ.mjs (New) 100 bytes 100 bytes 100.0% 🚀
chunks/noop-entrypoint_Z3zFhrGC.mjs (New) 99 bytes 99 bytes 100.0% 🚀
_astro/vendor-monaco.Bu-5TSsx.js (Deleted) -4.18MB 0 bytes -100.0% 🗑️
_astro/css.worker-DTwhyFDG.js (Deleted) -1.05MB 0 bytes -100.0% 🗑️
_astro/html.worker-Cv1I6WlM.js (Deleted) -719.51kB 0 bytes -100.0% 🗑️
_astro/json.worker-BrRSZ7c-.js (Deleted) -409.15kB 0 bytes -100.0% 🗑️
_astro/vendor-monaco.CTGdSUG0.css (Deleted) -321.61kB 0 bytes -100.0% 🗑️
_astro/vendor-react.CrH08agE.js (Deleted) -206.03kB 0 bytes -100.0% 🗑️
_astro/codicon.ngg6Pgfi.ttf (Deleted) -121.97kB 0 bytes -100.0% 🗑️
_astro/ExampleBrowser.DwMub4k8.js (Deleted) -32.38kB 0 bytes -100.0% 🗑️
_astro/ExoHeader.C7SNs1_U.js (Deleted) -32.27kB 0 bytes -100.0% 🗑️
_astro/EditorPreview.72wGVbHL.js (Deleted) -21.37kB 0 bytes -100.0% 🗑️
_astro/EditorCode.DOlHhKPE.js (Deleted) -15.59kB 0 bytes -100.0% 🗑️
_astro/EditorCode.CVWGmhtx.css (Deleted) -3.38kB 0 bytes -100.0% 🗑️
_astro/BottomSheet.5e2n4-z3.js (Deleted) -2.67kB 0 bytes -100.0% 🗑️
_astro/BottomSheet.URrhJv5z.css (Deleted) -2.08kB 0 bytes -100.0% 🗑️
_astro/versions.aOfTA5D9.js (Deleted) -1.61kB 0 bytes -100.0% 🗑️
_astro/GuideExamplePreview.DpHezqLt.js (Deleted) -1.55kB 0 bytes -100.0% 🗑️
_astro/rolldown-runtime.hePW80VL.js (Deleted) -716 bytes 0 bytes -100.0% 🗑️
_astro/react-utils.VlPjQmbj.js (Deleted) -260 bytes 0 bytes -100.0% 🗑️
_astro/client.hXtcBeT_.js (Deleted) -68 bytes 0 bytes -100.0% 🗑️

App Routes Affected:

App Route Size Change Total Size Change (%)
/en/playground (New) 1.44kB 1.44kB 100% 🚀
/en/api/[symbol] (New) 1.41kB 1.41kB 100% 🚀
/en/guide (New) 957 bytes 957 bytes 100% 🚀
/de/guide (New) 957 bytes 957 bytes 100% 🚀
/en/api/all (New) 919 bytes 919 bytes 100% 🚀
/de/playground (New) 1.44kB 1.44kB 100% 🚀
/en/api (New) 935 bytes 935 bytes 100% 🚀
/de/guide/[part]/[chapter] (New) 1.61kB 1.61kB 100% 🚀
/en/guide/[part] (New) 1.41kB 1.41kB 100% 🚀
/ (New) 1.72kB 1.72kB 100% 🚀
/de/api/[symbol] (New) 1.41kB 1.41kB 100% 🚀
/en/guide/[part]/[chapter] (New) 1.61kB 1.61kB 100% 🚀
/de/api (New) 935 bytes 935 bytes 100% 🚀
/de (New) 897 bytes 897 bytes 100% 🚀
/en (New) 897 bytes 897 bytes 100% 🚀
/de/api/all (New) 919 bytes 919 bytes 100% 🚀
/de/guide/[part] (New) 1.41kB 1.41kB 100% 🚀
view changes for bundle: exo-full-iife-Exo-iife

Assets Changed:

Asset Name Size Change Total Size Change (%)
exo.full.iife.js 14.13kB 5.04MB 0.28%

Files in exo.full.iife.js:

  • ./packages/exojs-lighting/src/LightingSystem.ts → Total Size: 4.79kB

  • ./packages/exojs-lighting/src/shaders/lit-sprite.wgsl → Total Size: 2.11kB

  • ./packages/exojs-lighting/src/shaders/lit-sprite.frag → Total Size: 1.93kB

  • ./packages/exojs-lighting/src/shaders/lit-sprite.vert → Total Size: 416 bytes

  • ./packages/exojs-lighting/src/LitSpriteMaterial.ts → Total Size: 2.48kB

  • ./packages/exojs-lighting/src/PointLight.ts → Total Size: 902 bytes

view changes for bundle: exo-full-iife-min-Exo-iife

Assets Changed:

Asset Name Size Change Total Size Change (%)
exo.full.iife.min.js 4.76kB 1.85MB 0.26%

Files in exo.full.iife.min.js:

  • ./packages/exojs-lighting/src/LightingSystem.ts → Total Size: 4.79kB

  • ./packages/exojs-lighting/src/PointLight.ts → Total Size: 902 bytes

  • ./packages/exojs-lighting/src/shaders/lit-sprite.wgsl → Total Size: 1.42kB

  • ./packages/exojs-lighting/src/shaders/lit-sprite.frag → Total Size: 1.28kB

  • ./packages/exojs-lighting/src/LitSpriteMaterial.ts → Total Size: 2.48kB

  • ./packages/exojs-lighting/src/shaders/lit-sprite.vert → Total Size: 194 bytes

@Exoridus
Exoridus merged commit a58efb0 into next Sep 4, 2026
22 checks passed
@Exoridus
Exoridus deleted the feat/exojs-lighting branch September 4, 2026 16:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant