{ "commands": [ { "authority": "browser-lowering", "command": "repixelizer.web.open", "method": "GET", "route": "/app/", "surfaceId": "repixelizer.operator.surface", "transport": "http" }, { "authority": "repixelizer-route-policy", "command": "repixelizer.job.submit", "method": "POST", "route": "/api/jobs", "surfaceId": "repixelizer.operator.surface", "transport": "http" }, { "authority": "repixelizer-job-owner", "command": "repixelizer.job.cancel_own", "method": "DELETE", "route": "/api/jobs/{job_id}", "surfaceId": "repixelizer.operator.surface", "transport": "http" } ], "loweringComparison": { "periwinkleAndroidKotlin": { "keeps": [ "surface root traversal", "pane/card/text hierarchy", "TextView body content", "basic ProgressBar metric rendering", "node-bound command taps" ], "losesUntilRendererParity": [ "Press Start 2P and VT323 font selection", "Repixelizer shell frame, scanlines, pixel grid, corner accents, and chunky border widths", "landing/app image assets; current Android lowerer prints asset refs when images are not explicitly implemented", "upload picker, comparison canvas, pan/zoom inspection, eyedropper, and paint controls", "provider style tokens; current Kotlin toneColor/textColorFor/textSizeFor are hard-coded" ], "minimumParityCuts": [ "map surface.styles.tokens before toneColor/textColorFor/textSizeFor", "add packaged pixel fonts or font download cache", "render image assetUri/assetRef as ImageView with pixelated sampling", "lower command controls to Android upload/document picker and job route calls" ], "source": "E:\\Projects\\Eve\\android\\app\\src\\main\\java\\org\\gamecult\\eve\\MainActivity.kt", "status": "surface-tree-renderer-present-style-token-gap" } }, "providerId": "repixelizer", "providerKind": "repixelizer.product", "runtime": { "auth": { "appSlug": "repixelizer", "enabled": false, "loginUrl": null, "logoutUrl": null, "mode": "off", "protectQueue": false, "required": false }, "hostedDemo": false, "limits": { "defaultSteps": 48, "heartbeatIntervalSeconds": 10, "maxInputDimension": 4096, "maxOutputDimension": 1024, "maxSteps": 256, "maxUploadBytes": 16777216, "queueCapacity": 32, "staleAfterSeconds": 30 }, "queue": { "activeStatus": null, "hasActiveJob": false, "queueCapacity": 32, "queueDepth": 0, "waitingCount": 0 } }, "schema": "gamecult.eve.surface.v1", "surface": { "id": "repixelizer.operator.surface", "root": { "children": [ { "children": [ { "children": [], "id": "repixelizer.hero.copy", "kind": "text", "props": { "role": "body", "text": "Force fake pixel art back onto a real grid, then inspect each solver step without sanding off the crunchy old-machine charm." }, "role": "body", "text": "Force fake pixel art back onto a real grid, then inspect each solver step without sanding off the crunchy old-machine charm." }, { "children": [ { "children": [], "id": "repixelizer.hero.open.body", "kind": "text", "props": { "role": "body", "text": "Browser lowering remains the full interactive app until native Eve gains upload and canvas editing parity." }, "role": "body", "text": "Browser lowering remains the full interactive app until native Eve gains upload and canvas editing parity." }, { "children": [], "id": "repixelizer.hero.open.route", "kind": "text", "props": { "method": "GET", "role": "mono", "route": "/app/", "text": "GET /app/" }, "role": "mono", "text": "GET /app/" } ], "commandId": "repixelizer.web.open", "id": "repixelizer.hero.open", "kind": "card", "props": { "commandId": "repixelizer.web.open", "styleProfile": "repixelizer.retro.pixel", "title": "Open demo", "transport": { "kind": "http", "method": "GET", "route": "/app/" } }, "role": "group", "style": { "tone": "cool", "variant": "repixelizer-retro-card" }, "text": "Open demo" } ], "id": "repixelizer.hero", "kind": "pane", "layout": { "direction": "vertical", "padding": 10 }, "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Repixelizer hosted demo" }, "role": "section", "style": { "tone": "warm", "variant": "repixelizer-retro-pane" }, "text": "Repixelizer hosted demo" }, { "children": [ { "children": [], "id": "repixelizer.product.pitch", "kind": "text", "props": { "role": "strong", "text": "You need pixel art for a project, but pixel art is a craft and your favorite AI is mostly vibes in a trench coat." }, "role": "strong", "text": "You need pixel art for a project, but pixel art is a craft and your favorite AI is mostly vibes in a trench coat." }, { "children": [ { "children": [ { "children": [], "id": "repixelizer.product.input.image", "kind": "image.preview", "props": { "aspectRatio": "1/1", "imageRendering": "pixelated", "label": "AI-generated hazmat character before repixelizing", "role": "body", "src": "https://repixelizer.gamecult.org/app/landing-assets/character-input.png" }, "role": "body", "text": "AI-generated hazmat character before repixelizing" }, { "children": [], "id": "repixelizer.product.input.copy", "kind": "text", "props": { "role": "body", "text": "Looks charming from orbit. Suspiciously charming." }, "role": "body", "text": "Looks charming from orbit. Suspiciously charming." } ], "id": "repixelizer.product.input", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "The AI gives you this" }, "role": "group", "style": { "tone": "cool", "variant": "repixelizer-retro-card" }, "text": "The AI gives you this" }, { "children": [ { "children": [], "id": "repixelizer.product.closeup.image", "kind": "image.preview", "props": { "aspectRatio": "1/1", "crop": "42% 63%", "imageRendering": "pixelated", "label": "Zoomed close-up showing fake pixel-art artifacts", "role": "body", "src": "https://repixelizer.gamecult.org/app/landing-assets/character-input.png", "zoom": 3.45 }, "role": "body", "text": "Zoomed close-up showing fake pixel-art artifacts" }, { "children": [], "id": "repixelizer.product.closeup.copy", "kind": "text", "props": { "role": "body", "text": "Smears, half-cells, anti-grid nonsense. The crime scene has opinions." }, "role": "body", "text": "Smears, half-cells, anti-grid nonsense. The crime scene has opinions." } ], "id": "repixelizer.product.closeup", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Then you zoom in" }, "role": "group", "style": { "tone": "cool", "variant": "repixelizer-retro-card" }, "text": "Then you zoom in" }, { "children": [ { "children": [], "id": "repixelizer.product.output.image", "kind": "image.preview", "props": { "aspectRatio": "1/1", "imageRendering": "pixelated", "label": "Repixelized hazmat character output", "role": "body", "src": "https://repixelizer.gamecult.org/app/landing-assets/character-repixelized.png" }, "role": "body", "text": "Repixelized hazmat character output" }, { "children": [], "id": "repixelizer.product.output.copy", "kind": "text", "props": { "role": "body", "text": "Real cells on a real lattice, ready for cleanup or export." }, "role": "body", "text": "Real cells on a real lattice, ready for cleanup or export." } ], "id": "repixelizer.product.output", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Repixelizer spits out this" }, "role": "group", "style": { "tone": "cool", "variant": "repixelizer-retro-card" }, "text": "Repixelizer spits out this" } ], "id": "repixelizer.product.gallery", "kind": "partition", "layout": { "direction": "horizontal", "gap": 12 }, "props": { "gap": 12, "role": "product.gallery", "split": "x" }, "role": "gallery" } ], "id": "repixelizer.product.landing", "kind": "pane", "layout": { "direction": "vertical", "padding": 10 }, "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Hosted demo" }, "role": "section", "style": { "tone": "warm", "variant": "repixelizer-retro-pane" }, "text": "Hosted demo" }, { "children": [ { "children": [ { "children": [], "id": "repixelizer.workspace.status", "kind": "status.stage", "props": { "detail": "Choose a file, then run the machine.", "label": "Idle", "role": "body", "stage": "Waiting for input" }, "role": "body", "text": "Idle" }, { "children": [ { "children": [], "id": "repixelizer.workspace.input.canvas", "kind": "canvas.preview", "props": { "label": "Input", "role": "body", "state": "empty" }, "role": "body", "text": "Input" }, { "children": [], "id": "repixelizer.workspace.output.canvas", "kind": "canvas.preview", "props": { "label": "Output", "role": "body", "state": "empty" }, "role": "body", "text": "Output" } ], "id": "repixelizer.workspace.compare", "kind": "partition", "layout": { "direction": "horizontal", "gap": 10 }, "props": { "gap": 10, "role": "comparison", "split": "x" }, "role": "comparison" }, { "children": [ { "children": [], "id": "repixelizer.workspace.inspect.copy", "kind": "text", "props": { "role": "body", "text": "Hold either preview to inspect both panels together." }, "role": "body", "text": "Hold either preview to inspect both panels together." }, { "children": [], "id": "repixelizer.workspace.inspect.zoom", "kind": "input.select", "props": { "label": "Inspect Zoom", "role": "field", "value": "8x" }, "role": "field", "text": "Inspect Zoom" } ], "id": "repixelizer.workspace.inspect", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Zoom" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Zoom" } ], "id": "repixelizer.workspace.viewer", "kind": "pane", "layout": { "direction": "vertical", "padding": 10 }, "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Pipeline Stages" }, "role": "section", "style": { "tone": "warm", "variant": "repixelizer-retro-pane" }, "text": "Pipeline Stages" }, { "children": [ { "children": [ { "children": [], "id": "repixelizer.workspace.reset", "kind": "control.button", "props": { "commandId": "repixelizer.editor.reset", "label": "Reset Output", "role": "command" }, "role": "command", "text": "Reset Output" }, { "children": [], "id": "repixelizer.workspace.export", "kind": "control.button", "props": { "commandId": "repixelizer.editor.export", "label": "Export PNG", "role": "command" }, "role": "command", "text": "Export PNG" } ], "id": "repixelizer.workspace.editor.actions", "kind": "partition", "layout": { "direction": "horizontal", "gap": 8 }, "props": { "gap": 8, "role": "toolbar", "split": "x" }, "role": "toolbar" }, { "children": [ { "children": [], "id": "repixelizer.workspace.swatch", "kind": "color.swatch", "props": { "label": "Paint", "role": "body", "value": "#ffffffff" }, "role": "body", "text": "Paint" }, { "children": [], "id": "repixelizer.workspace.paint.r", "kind": "input.number", "props": { "label": "R", "role": "field", "value": "255" }, "role": "field", "text": "R" }, { "children": [], "id": "repixelizer.workspace.paint.g", "kind": "input.number", "props": { "label": "G", "role": "field", "value": "255" }, "role": "field", "text": "G" }, { "children": [], "id": "repixelizer.workspace.paint.b", "kind": "input.number", "props": { "label": "B", "role": "field", "value": "255" }, "role": "field", "text": "B" }, { "children": [], "id": "repixelizer.workspace.paint.a", "kind": "input.number", "props": { "label": "A", "role": "field", "value": "255" }, "role": "field", "text": "A" }, { "children": [], "id": "repixelizer.workspace.zoom", "kind": "control.range", "props": { "label": "Zoom", "max": 32, "min": 4, "role": "field", "value": "12x" }, "role": "field", "text": "Zoom" }, { "children": [], "id": "repixelizer.workspace.grid", "kind": "control.toggle", "props": { "label": "Grid", "role": "body", "value": true }, "role": "body", "text": "Grid" } ], "id": "repixelizer.workspace.paint", "kind": "partition", "layout": { "direction": "horizontal", "gap": 6 }, "props": { "gap": 6, "role": "paint-controls", "split": "x" }, "role": "paint-controls" }, { "children": [], "id": "repixelizer.workspace.editor.canvas", "kind": "canvas.editor", "props": { "label": "Editable output canvas", "role": "body", "state": "empty" }, "role": "body", "text": "Editable output canvas" } ], "id": "repixelizer.workspace.editor", "kind": "pane", "layout": { "direction": "vertical", "padding": 10 }, "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Pixel Fixes" }, "role": "section", "style": { "tone": "warm", "variant": "repixelizer-retro-pane" }, "text": "Pixel Fixes" }, { "children": [ { "children": [ { "children": [], "id": "repixelizer.workspace.input.copy", "kind": "text", "props": { "role": "body", "text": "Start with the ugly input." }, "role": "body", "text": "Start with the ugly input." }, { "children": [], "id": "repixelizer.workspace.file", "kind": "input.file", "props": { "accept": "image/png,image/*", "label": "Choose File", "role": "body" }, "role": "body", "text": "Choose File" }, { "children": [], "id": "repixelizer.workspace.dropzone", "kind": "dropzone", "props": { "label": "PNG, sprite scrap, cursed logo. Whatever started this.", "role": "body" }, "role": "body", "text": "PNG, sprite scrap, cursed logo. Whatever started this." } ], "id": "repixelizer.workspace.input", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Input" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Input" }, { "children": [ { "children": [], "id": "repixelizer.workspace.target.size", "kind": "input.number", "props": { "label": "Target Size", "role": "field", "value": "auto" }, "role": "field", "text": "Target Size" }, { "children": [], "id": "repixelizer.workspace.target.width", "kind": "input.number", "props": { "label": "Target Width", "role": "field", "value": "auto" }, "role": "field", "text": "Target Width" }, { "children": [], "id": "repixelizer.workspace.target.height", "kind": "input.number", "props": { "label": "Target Height", "role": "field", "value": "auto" }, "role": "field", "text": "Target Height" }, { "children": [], "id": "repixelizer.workspace.steps", "kind": "input.number", "props": { "label": "Steps", "role": "field", "value": "48" }, "role": "field", "text": "Steps" }, { "children": [], "id": "repixelizer.workspace.run", "kind": "control.button", "props": { "commandId": "repixelizer.job.submit", "label": "Run The Machine", "method": "POST", "role": "command", "route": "/api/jobs" }, "role": "command", "text": "Run The Machine" } ], "id": "repixelizer.workspace.controls", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Controls" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Controls" }, { "children": [ { "children": [], "id": "repixelizer.workspace.queue.depth", "kind": "metric", "props": { "label": "Queue", "max": 32, "role": "body", "value": 0 }, "role": "body", "text": "Queue" }, { "children": [], "id": "repixelizer.workspace.queue.worker", "kind": "metric", "props": { "label": "Worker", "max": 1, "role": "body", "value": 0 }, "role": "body", "text": "Worker" } ], "id": "repixelizer.workspace.queue", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Queue" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Queue" }, { "children": [ { "children": [], "id": "repixelizer.workspace.lattice.copy", "kind": "text", "props": { "role": "body", "text": "No lattice picked yet." }, "role": "body", "text": "No lattice picked yet." } ], "id": "repixelizer.workspace.lattice", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Lattice" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Lattice" } ], "id": "repixelizer.workspace.sidebar", "kind": "pane", "layout": { "direction": "vertical", "padding": 10 }, "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Run Controls" }, "role": "section", "style": { "tone": "warm", "variant": "repixelizer-retro-pane" }, "text": "Run Controls" } ], "id": "repixelizer.workspace", "kind": "partition", "layout": { "direction": "horizontal", "gap": 12 }, "props": { "gap": 12, "role": "repixelizer.workspace", "split": "x" }, "role": "workspace" }, { "children": [ { "children": [ { "children": [], "id": "repixelizer.workflow.submit.body", "kind": "text", "props": { "role": "body", "text": "Submit a PNG/JPEG/WebP/GIF into the GUI job queue; queue ownership stays in repixelizer.gui." }, "role": "body", "text": "Submit a PNG/JPEG/WebP/GIF into the GUI job queue; queue ownership stays in repixelizer.gui." }, { "children": [], "id": "repixelizer.workflow.submit.route", "kind": "text", "props": { "method": "POST", "role": "mono", "route": "/api/jobs", "text": "POST /api/jobs" }, "role": "mono", "text": "POST /api/jobs" } ], "commandId": "repixelizer.job.submit", "id": "repixelizer.workflow.submit", "kind": "card", "props": { "commandId": "repixelizer.job.submit", "styleProfile": "repixelizer.retro.pixel", "title": "Upload image", "transport": { "kind": "http", "method": "POST", "route": "/api/jobs" } }, "role": "group", "style": { "tone": "cool", "variant": "repixelizer-retro-card" }, "text": "Upload image" }, { "children": [ { "children": [], "id": "repixelizer.inspect.source", "kind": "text", "props": { "role": "body", "text": "source, edge map, lattice overlay, phase field, cleaned output" }, "role": "body", "text": "source, edge map, lattice overlay, phase field, cleaned output" }, { "children": [], "id": "repixelizer.inspect.canvas", "kind": "text", "props": { "role": "body", "text": "comparison canvas and editor lower to native only after Periwinkle gets image/control parity" }, "role": "body", "text": "comparison canvas and editor lower to native only after Periwinkle gets image/control parity" } ], "id": "repixelizer.workflow.inspect", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Inspect solver" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Inspect solver" }, { "children": [ { "children": [], "id": "repixelizer.workflow.cancel.body", "kind": "text", "props": { "role": "body", "text": "The command intent delegates to the existing owner-bound DELETE route." }, "role": "body", "text": "The command intent delegates to the existing owner-bound DELETE route." }, { "children": [], "id": "repixelizer.workflow.cancel.route", "kind": "text", "props": { "method": "DELETE", "role": "mono", "route": "/api/jobs/{job_id}", "text": "DELETE /api/jobs/{job_id}" }, "role": "mono", "text": "DELETE /api/jobs/{job_id}" } ], "commandId": "repixelizer.job.cancel_own", "id": "repixelizer.workflow.cancel", "kind": "card", "props": { "commandId": "repixelizer.job.cancel_own", "styleProfile": "repixelizer.retro.pixel", "title": "Cancel own job", "transport": { "kind": "http", "method": "DELETE", "route": "/api/jobs/{job_id}" } }, "role": "group", "style": { "tone": "cool", "variant": "repixelizer-retro-card" }, "text": "Cancel own job" } ], "id": "repixelizer.workflow", "kind": "pane", "layout": { "direction": "vertical", "padding": 10 }, "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Single page app" }, "role": "section", "style": { "tone": "warm", "variant": "repixelizer-retro-pane" }, "text": "Single page app" }, { "children": [ { "children": [ { "children": [], "id": "repixelizer.runtime.hosted", "kind": "text", "props": { "role": "mono", "text": "hostedDemo: False" }, "role": "mono", "text": "hostedDemo: False" }, { "children": [], "id": "repixelizer.runtime.steps", "kind": "text", "props": { "role": "mono", "text": "defaultSteps: 48 maxSteps: 256" }, "role": "mono", "text": "defaultSteps: 48 maxSteps: 256" }, { "children": [], "id": "repixelizer.runtime.dimensions", "kind": "text", "props": { "role": "mono", "text": "maxOutputDimension: 1024px" }, "role": "mono", "text": "maxOutputDimension: 1024px" } ], "id": "repixelizer.runtime.config", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Runtime" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Runtime" }, { "children": [ { "children": [], "id": "repixelizer.queue.depth", "kind": "text", "props": { "role": "strong", "text": "0 active or waiting / 32 capacity" }, "role": "strong", "text": "0 active or waiting / 32 capacity" }, { "children": [], "id": "repixelizer.queue.waiting", "kind": "text", "props": { "role": "mono", "text": "waitingCount: 0" }, "role": "mono", "text": "waitingCount: 0" }, { "children": [], "id": "repixelizer.queue.active", "kind": "text", "props": { "role": "mono", "text": "hasActiveJob: False" }, "role": "mono", "text": "hasActiveJob: False" } ], "id": "repixelizer.runtime.queue", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Queue" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Queue" }, { "children": [ { "children": [], "id": "repixelizer.auth.mode", "kind": "text", "props": { "role": "mono", "text": "mode: off" }, "role": "mono", "text": "mode: off" }, { "children": [], "id": "repixelizer.auth.required", "kind": "text", "props": { "role": "mono", "text": "required: False" }, "role": "mono", "text": "required: False" }, { "children": [], "id": "repixelizer.auth.providers", "kind": "text", "props": { "role": "body", "text": "providers: none" }, "role": "body", "text": "providers: none" } ], "id": "repixelizer.runtime.auth", "kind": "card", "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Access" }, "role": "group", "style": { "tone": "panel", "variant": "repixelizer-retro-card" }, "text": "Access" } ], "id": "repixelizer.runtime", "kind": "pane", "layout": { "direction": "vertical", "padding": 10 }, "props": { "styleProfile": "repixelizer.retro.pixel", "title": "Live projection" }, "role": "section", "style": { "tone": "warm", "variant": "repixelizer-retro-pane" }, "text": "Live projection" } ], "id": "repixelizer.surface.root", "kind": "surface", "layout": { "direction": "vertical", "padding": 14 }, "props": { "browserLowering": "https://repixelizer.gamecult.org/app/", "frontPage": "https://repixelizer.gamecult.org/", "styleProfile": "repixelizer.retro.pixel", "subtitle": "Fake pixel art goes in. Real grid-aligned sprite art comes out.", "title": "Repixelizer" }, "role": "root", "style": { "tone": "warm", "variant": "repixelizer-retro-shell" }, "text": "Repixelizer" }, "schema": "gamecult.eve.surface.v1", "styles": { "assets": { "appUrl": "https://repixelizer.gamecult.org/app/", "fontCss": "https://fonts.googleapis.com/css2?family=Press+Start+2P&family=VT323&display=swap", "landingInput": "https://repixelizer.gamecult.org/app/landing-assets/character-input.png", "landingOutput": "https://repixelizer.gamecult.org/app/landing-assets/character-repixelized.png" }, "loweringHints": { "android-native": "Load packaged or downloadable Press Start 2P and VT323 fonts, map style tokens before hard-coded tones, and render asset images instead of asset labels.", "css": "Use the tokens as CSS custom properties and retain scanline/pixel-grid overlays.", "tui": "Preserve title/body font distinction as role metadata; canvas editing lowers to artifact refs and command intents only." }, "profile": "repixelizer.retro.pixel", "tokens": { "borderBottomWidthPx": 5, "borderWidthPx": 4, "buttonGlyph": ">", "colorAccent": "#ffd84a", "colorAccentStrong": "#ffae1a", "colorBackgroundBottom": "#01050d", "colorBackgroundMid": "#020813", "colorBackgroundTop": "#01040b", "colorCornerAccent": "#ffb72a", "colorMuted": "#d3bb7f", "colorPanel": "#0a2239", "colorPanelAlt": "#061627", "colorPanelBorder": "#0a2740", "colorPanelBorderDeep": "#06192a", "colorPixelGrid": "rgba(0, 0, 0, 0.3)", "colorShadow": "rgba(0, 0, 0, 0.55)", "colorShellSurfaceBottom": "#030b16", "colorShellSurfaceTop": "#061424", "colorText": "#efe5c9", "colorTextBright": "#f7efd8", "cornerAccentPx": 12, "dashedInnerFrame": true, "fontBody": "\"VT323\", \"Courier New\", monospace", "fontMono": "\"VT323\", \"Courier New\", monospace", "fontTitle": "\"Press Start 2P\", \"VT323\", monospace", "imageRendering": "pixelated", "scanlineOverlay": true } }, "title": "Repixelizer" }, "title": "Repixelizer", "type": "surface-state", "updatedAt": "2026-06-05T00:00:00Z", "version": 1 }