Full shaders#26
Merged
dwursteisen merged 172 commits intomainfrom Mar 29, 2026
Merged
Conversation
… command - DocsCommand: Add hidden=true to Clikt constructor so it no longer appears in help output (still callable for dev use) - UpdateCommand: Replace interactive table UI with clean emoji-prefixed display matching palette style. Editable params (zoom, cursor) are now set via CLI options (--zoom, --hide-cursor, --show-cursor) instead of arrow-key navigation - ResourcesCommand: Replace interactive table UI with clean categorized display. Resource deletion now uses --delete option by filename instead of keyboard navigation https://claude.ai/code/session_01SjyS1GFQhfDWqL4YgpmZyw
Serializable sealed class mirroring the _tiny.json format, usable from both JVM and JS platforms. This enables the JS entry point to fetch and parse _tiny.json via HTTP instead of reading HTML attributes. Includes unit tests for JSON parsing, default values, toGameOptions() mapping, and unknown key handling. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Simplify index.html to just <tiny-game game="."/>
- Rewrite JS Main.kt to fetch _tiny.json via AjaxStream, parse with
GameConfig, and create GameOptions from the config
- Fix dropLast() bug where result was not assigned back
- Make setupGames() suspend with coroutine scope in main()
- Remove template variable replacements in GameExporter except {GAME_NAME}
- Remove replaceList() method no longer needed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allow games to specify a custom boot script via the "bootScript" field in _tiny.json. When set, this script from the game directory is loaded instead of the built-in _boot.lua as the first script to run. Changes: - GameOptions/GameParametersV1: add bootScript field (nullable String) - ResourceFactory: add customBootScript() to load boot script from game dir - GameResourceProcessor: use custom boot script when configured - CreateCommand: add boot script prompt to CLI creation wizard - ExportCommand/GameExporter: bundle custom boot script in web export - Main.kt (JS): read bootscript attribute from HTML - index.html: add bootscript attribute placeholder https://claude.ai/code/session_013un8W9TvooEvP1W9dGZX4p
Generate a 256x256 PNG icon (palette mosaic with game name initial) during game creation. Include the icon as favicon in web exports and as application icon in desktop exports (with ICO/ICNS conversion). Add configurable `icon` field to _tiny.json for custom icon paths. - IconImageGenerator: creates palette-based mosaic icon with center letter - IconConverter: converts PNG to ICO (Windows) and ICNS (macOS via sips) - CreateCommand: generates icon.png and writes icon field to _tiny.json - ExportCommand/GameExporter: includes icon in web ZIP with favicon link, passes --icon to jpackage for desktop builds - Extract parseColor into ColorUtils for shared use https://claude.ai/code/session_013FMWcPC5jH5az9MuhFpCyP
- Create tiny-debugger KMP module with shared debug protocol and Kotlin/JS web UI - Move RemoteCommand.kt and LuaValue.kt from tiny-cli to tiny-debugger commonMain - Add FileProtocol classes for file watcher WebSocket communication - Implement browser-based debugger with code editor, breakpoint management, variable inspector, and step/resume controls - Add DebugCommand2 CLI command serving static debugger UI via Ktor - Wire tiny-cli dependencies to tiny-debugger for protocol classes and bundled UI Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace client-side rendering with build-time static HTML generation using Pebble templating engine. Pages now ship pre-rendered content for SEO and performance, with small JS islands for interactivity. - Add Pebble 3.2.3 to buildscript and renderPebbleTemplates Gradle task - Create base.peb with inheritance blocks and shared partials (nav, footer) - Convert 4 HTML pages to Pebble templates (index, showcase, docs, api) - Add lazy-loading GIFs with IntersectionObserver and shimmer animation - Add "Load More" pagination for showcase game cards - Embed API JSON data at build time for "Function of the Day" feature - Move nav CSS to tiny-common.css for static nav in Pebble pages - Remove HTML files from copy-seoFiles (now generated by Pebble) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Lead: stop at beat 31 (leave beat 32 silent to prevent doubled notes when looping back to beat 0) - Lead: guide melody toward root note in last 4 beats for musical resolution, using shortest-path stepping through the scale - Chords: fade volume over last 3 beats of final bar - Bass: fade last root and fifth hits in final bar - Add stepTowardRoot helper for circular scale navigation - Add tests for silent beat 32 and volume fade behavior Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduce JsonDsl.kt with JsonObject/JsonArray builders following the same @DslMarker pattern as AsciidocDsl.kt. Rewrite generateJson() to use the DSL, eliminating manual StringBuilder, comma tracking, and the jsonString() helper. Output is byte-identical. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… API Make tiny-doc a Kotlin JVM module with a PebbleRenderer class that reads tiny-api.json, flattens the nested structure, and renders all HTML pages. Remove the asciidoc-based API generation pipeline (tiny-api.adoc) in favor of the Pebble-generated api.html. Add editor link to nav, "Try it" buttons on API function cards, and hide example blocks when no example exists. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the "Try it" button (which opened the editor in a new tab) with inline <tiny-editor> web components that render the game alongside the code editor directly in each function card. Load tiny-web-editor.js and the required editor CSS on the API page. Use Pebble's raw filter to prevent auto-escaping of Lua code in the editor elements. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…click Restore the terminal div with the code example so users can read the code before running it. The "Try it" button in the terminal header hides the terminal and reveals a <tiny-editor> web component in its place to execute the example. Remove the unused inline editor CSS overrides that were duplicating styles from tiny-web-editor.js. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove data-example attribute from the Try it button since the code is already in the terminal body. In setupDocMode, remove the toolbar and buttons that were visible even when the tiny-editor was hidden. Instead, create a hidden container and listen for a "play" custom event on the tiny-editor element to trigger game creation. The API page dispatches this event when the Try it button is clicked. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the terminal-style code blocks with the same visual style used by the tiny-web-editor: tiny-toolbar header with a Try it button and a matching code body. Add all the editor CSS (syntax highlighting, container, textarea, canvas, status bar) to the API page so the editor renders correctly when loaded on click. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Only hide the code body (.fn-card__code) when clicking Try it, keeping the toolbar visible. Add a highlightLua() JS function that reuses the same regex logic as the tiny-web-editor highlight() to syntax-highlight all static code examples on page load. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace editor.adoc, tiny-cli.adoc, and tiny-sfx-editor.adoc with Pebble templates (editor.peb, cli.peb, cmd-card.peb). Add JsonHelpFormatter to output CLI command data as JSON instead of AsciiDoc. Update DocsCommand to produce tiny-cli-commands.json. Update PebbleRenderer to render the two new pages and accept the CLI JSON file. Update build.gradle.kts outputs and Makefile path. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use muted green (#5a8c00) for CLI hero and SFX section titles instead of neon var(--green) for better readability - Remove iframe scrollbar, fix container to 768x512 and center it - Add terminal header bar (macOS dots + filename) to editor page Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the examples attribute from <tiny-editor> so the web component no longer creates its own toolbar/dropdown. Instead, place a <select> in the terminal header bar and manage example switching from page JS. The page decodes Base64 examples, injects code into the editor div, and dispatches an input event to trigger game recompilation. Hide the component's own toolbar via CSS. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hide the web component's own share link (.tiny-share-link) via CSS. Add a page-managed share link below the editor wrapper with the Lucide share-2 icon. The link href updates on editor input via a MutationObserver that attaches to the editor element once ready. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Override adoc-riak.css styles in docinfo-header.html to give AsciiDoc pages the same visual identity as Pebble-rendered pages: pink background, Quicksand/Lilita One fonts, cyan-accented code blocks, rounded corners on admonitions and sidebars, and matching link colors. Add Pebble-style footer to AsciiDoc pages via docinfo-footer.html and hide the default AsciiDoc footer. Add Editor link to the navigation bar in tiny-nav.js. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace all url('../images/riak/...') references in adoc-riak.css with
background-image: none or background: #f8f9fa. These images never
existed in the build output, causing 404 console errors on every
AsciiDoc page.
Convert guide.adoc from a monolithic page that included all tutorials
inline into a lightweight hub with a table linking to individual
tutorial and reference pages. This dramatically reduces page size and
avoids duplicate content.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The global `a { color: #ff0080 !important }` rule from the Pebble
theme overrides was turning the "Get Started" CTA button text pink
and nav links pink instead of their intended colors.
Add !important to tiny-nav.js styles for logo, links, and CTA to
ensure they keep their correct colors on AsciiDoc pages.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The frame counter in GameEngine counted all frames from engine start, including boot animation frames (~184 frames / 3 seconds). When boot was excluded (default), the cache was cleared but the frame counter was not reset, resulting in fewer game frames than requested. With short durations (<= boot time), the engine stopped before boot completed, producing boot-only output regardless of --include-boot. Fix: when excluding boot, set maxFrames=0 (unlimited) during boot and reset the frame counter with the real limit after boot ends via the switchScript callback. Also limit cache clearing to the first script transition (boot->game) to avoid losing game frames in multi-script games. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New TtfConverter utility converts TTF/OTF files to PNG spritesheets with binary alpha (no anti-aliasing artifacts) - AddCommand now handles .ttf/.otf files with --font option - Default character set is printable ASCII (!-~) when --chars is omitted - spaceWidth is derived from font metrics for accurate spacing - FontAnalyzer.buildFontConfig accepts optional spaceWidth parameter Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Display warnings about monospace-only rendering and no alpha blending support after adding a font (both TTF and PNG paths). This helps users understand why proportional or anti-aliased fonts may render incorrectly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…I agents - Add comprehensive color system docs at top of stub file (palette examples, default colors, common mistakes) - Fix TinyVisitor bug: @TinyArgs types array was ignored, all params defaulted to "any" - Add type = LuaType.NUMBER to missing @TinyArg annotations in ShapeLib (circlef, circle, line, trianglef, triangle, gradient) - Add type = LuaType.TABLE/@Number to rect/rectf table overload annotations - Document gfx.cls() default color (#000000) and print() default color (#FFFFFF) - Change print() color param from LuaType.ANY to LuaType.NUMBER - Add types to gfx.pal() annotations - Update stub generator header to match improved documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.