v1.0 is here: a complete, local-first, portable performance workflow for the Domistika XR workshop. Create an editable installation, choreograph three visual acts with named cues, timed transitions, palette/gain/energy changes, and operate a silent show from desktop or the Quest's paginated PLAY SHOW / STOP SHOW / NEXT ACT / PREV ACT controls. Save and restore the full editable assembly and cue sheet in a validated Showpack v1 JSON. Your original workshop JSON, offline source previews, static GLB exports and optional music files remain independent. Playback emits no actual music and real Quest 3 device testing is still necessary. v1.0 release notes, safety contracts and headset test plan.
The Domistika XR workshop now has one-click stage installations: Orbit Bloom, Neon Corridor and Bass Cathedral. The generated pieces are independent and editable with per-object Motion Forge and Beat Forge settings. Start silent visual demo to preview animated lighting with an internally generated, soundless signal, without loading an audio file. Quest controls include stage shortcuts and DEMO ON / DEMO OFF on the existing paged workshop deck. Stage creation is one atomic undo step. Saved JSON contains only the editable objects and motions, while GLB keeps static rest-pose materials. No microphone, upload or new authoring schema. v0.9 test and Quest acceptance guide.
The immersive workshop now supports opt-in audio-reactive emissive glow with Outrun, Aurora, Ember and Ice palettes, bounded intensity and smooth transitions. Workshop objects keep their source colors and original rest poses; no real spotlights, strobes, or microphone recording. The Quest floating workshop menu is finally paginated into three smaller two-column pages with permanent NEXT/PREV actions and safe hit-testing. JSON exports preserve authoring data, and GLB exports use static rest-pose materials with no preview glow. Read v0.8 acceptance, limitations and Quest checklist.
Music-responsive sculpture now has independent Bass, Mids, Highs, and transient Beat channels. Choose each editable object's response band in Motion Forge, or cycle with BAND FX in the Quest in-world deck. Rhythm Forge displays three local spectrum meters and bass pulse detection. Existing local file-only operation remains; no microphone, cloud upload, BPM or exact beat-grid claim. Older project JSON defaults to Full energy; exported GLB still contains static rest poses. Beat Forge acceptance and limitations.
Bring your own local track into the Spatial Workshop. Rhythm Forge uses browser-native Web Audio spectrum analysis to make existing Motion Forge spins, bobs, orbits and pulses respond to bass/energy. Files remain local and ephemeral, with no microphone, uploads, network audio, or file storage. Quest has RHYTHM PLAY/STOP controls once a track is selected in the sidebar. Workshop JSON stores only the author's original object motion settings, never sound; GLB stays a static rest-pose export. Physical Quest audio and gesture acceptance remains pending. v0.6 playtest and feature boundaries.
Animate editable 3D workshop objects with Spin, Bob, Orbit, or Pulse visual effects. Set speed/amplitude/phase, preview in desktop or Quest VR, scrub a timeline, and reset instantly to the saved rest poses. Motion settings live in backward-compatible domistika.xr.workshop.v1 JSON; GLB exports remain static rest-pose geometry. Existing OpenBlueprint CAD and Framefield BPC previews remain protected and unmodified. No live music or microphone integration is claimed. Test plan and capability boundaries.
The immersive Domistika workshop now has linear arrays and radial rings of independent editable objects, origin alignment between workshop objects, and transformed-mesh floor contact. All repeating copies are one-step undoable and capacity-checked before applying. Quest gets LINE +3, RING +5, and TO FLOOR on the in-world tool deck. FramefieldStudio and OpenBlueprintStudio originals remain read-only. Read the v0.4 qualification and headset playtest guide.
The Spatial Workshop adds an editable object inventory, independent duplicate and true X-mirrored geometry copies, undoable renaming and recoloring, and a 3D in-world center-to-center distance ruler. Quest controllers use a compact two-column workshop menu. Measurements are visual annotations, not certified CAD dimensions, and are excluded from JSON/GLB exports; imported Framefield and OpenBlue sources remain read-only. Quest playtest and contracts.
Open the VR Workshop to make cubes, spheres, cylinders, toruses and knots, grab/rotate/scale with Quest controllers, snap to a meter grid, set exact measurements, and export a separate editable JSON assembly or combined GLB with spatial paintings. Operator-approved copies of Framefield BPC mesh previews and OpenBlueprint CAD walls can become independent workshop objects; original projects and preview-only assets remain untouched. Hardware acceptance for this upgrade is pending. See Spatial Workshop v0.2 guide.
The XR studio now connects the existing FramefieldStudio Export BPC XR animated mesh preview and a new read-only OpenBlueprintStudio Export JSON architectural plan preview, alongside free-air painting. Both imports are explicit local files; neither replaces the original source scene. See the contract and Quest playtest guide.
Paint in free air in Domistika XR with original neon, ribbon, and spark brushes, mirrored 3D strokes, independent local JSON backups, and GLB export. The existing 2D canvas studio and BPC preview remain in place. Quest 3 controller/hardware testing is still pending. See Air Brush Studio Guide.
Domistika can now receive a 5-minute browser-local SVG handoff from the museum's Creative Studio at https://michaelwave369.github.io/SiliconLouvre/ using the matching sender release.
- Preview is safe and automatic; import is not. Back up the current
.domistikaproject, confirm the download, then create a new rasterized 800×800 paint-layer project. - Checks the short-lived message, digest and a strict static SVG element/attribute allowlist.
- Imports locally with the public stable SDK and attempts rollback on failure.
- Does not publish artwork or enable arbitrary cross-app scripting.
- The museum's original scalable SVG export remains available for independent preservation.
See Silicon Louvre Receiver v1 for complete protocol and manual acceptance cases.
Domistika now includes six original Artists Series symmetry studies under the Recipes inspector tab, inspired by mathematical tessellation, reversible perspective, recursive architecture, and optical geometry. The new TILE, GLIDE, and SHEAR primitives are live as you draw, and the generated thumbnail cards let you preview a style before applying it. The existing Dimensional Weave tool is linked from the series for intentional impossible-depth construction on independent layers. The patterns are original, not reproductions of existing artists' artworks. Guide.
Domistika now contains an executable creative-authority end-to-end qualification protocol.
It snapshots the current project, runs a deterministic acceptance scenario on a disposable 512×512 project, hashes pixel evidence, writes a PSD in memory, then restores the original project even when a gate fails.
The frozen path verifies:
Composition Plate apply
Art Director generate + auto-lock
Symmetry Receipt verification
locked SDK write refusal
one-sector surgery
outside-sector no-op
inside-sector redraw
erase
redraw after erase
explicit radial refold + lock
exact undo / redo
.domistika save / restore
surgery provenance persistence
guide exclusion from PSD
motion-ignore exclusion from PSD
layered PSD write
original-project restoration
Pixel mutation checks use SHA-256 over raw RGBA canvas bytes. The final JSON qualification receipt is itself canonicalized and SHA-256 bound.
Stable SDK v0.1.19 adds:
await Domistika.qualification.run()
Domistika.qualification.last()
Domistika.qualification.running()Command palette:
qualification.run
See Field Qualification.
Domistika can now open exactly one radial Composition Plate sector for bounded repair.
The workflow is deliberately narrow:
Art Director draws on a new layer
↓
generated layer locks
↓
pick one radial plate sector
↓
source is hidden + protected
↓
full repair copy becomes active
↓
brush / shape edits are clipped to sector ∩ region
↓
Seal only
or
Refold + lock
The full-copy approach means erasing and replacement edits are real rather than merely transparent paint stacked above the original.
Refold uses only the region's base RADIAL(n) count. MIRROR, NEST, SPIRAL, COUNTERSPIN, PERTURB, and PHASE are not silently reinterpreted as repair semantics.
Stable SDK v0.1.18 adds:
Domistika.sectorSurgery.begin(point, { space: 'normalized' })
Domistika.sectorSurgery.active()
Domistika.sectorSurgery.refold()
Domistika.sectorSurgery.seal()
Domistika.sectorSurgery.cancel()
Domistika.sectorSurgery.receipt()See Sector Surgery.
Domistika now exports layered PSD paint interchange while keeping .domistika as the canonical project format.
PSD export includes only semantic paint layers. Guide layers, type layers, motion-ignore layers, and export-excluded scaffolding are omitted. Hidden paint layers remain present as hidden PSD layers.
Preserved at the interchange boundary:
paint pixels
layer names
visibility
opacity
supported blend modes
stacking order
write-lock state
The export dialog now offers PSD · paint layers alongside PNG and JPEG.
Stable SDK v0.1.17 adds:
Domistika.export.inspectLayered()
Domistika.export.psd()See Layered Exit.
Domistika's existing rectangle/lasso Selection & Transform system now supports two bounded, one-step operations:
Fill selection
Stroke selection outline
Fill uses the current color + opacity. Outline uses the current brush size + opacity + color. Both close the active selection and create exactly one undo entry.
The selection panel also carries a compact five-brush recent strip backed by the real brush library. Layer locks now block pixel selection itself as well as both acts, closing the old selection-overlay lock bypass.
Stable SDK v0.1.16 adds:
await Domistika.selection.fill()
await Domistika.selection.strokeOutline()
Domistika.selection.boundary()
Domistika.brush.recent()
Domistika.brush.recall(brushId)See Selection Acts.
Domistika now turns its existing export-excluded guide layers into precision constraints.
Built-ins:
Horizontal ruler
Vertical ruler
Ellipse
One-point perspective · one horizon + one vanishing point
Guide visibility and snapping are independent. The same active snap boundary applies to pointer/pen input and stable SDK strokes, so Recipe Artifacts and Agent Art Director output cannot silently bypass a drafting constraint.
Stable SDK v0.1.15 adds:
Domistika.draftingGuides.apply('horizontal-ruler', { position: 0.42 })
Domistika.draftingGuides.apply('ellipse', { cx: .5, cy: .5, rx: .32, ry: .22 })
Domistika.draftingGuides.apply('one-point', { horizonY: .42, vanishingX: .5 })
Domistika.draftingGuides.snap(false)
Domistika.draftingGuides.visible(false)
Domistika.draftingGuides.clear()See Drafting Guides.
Domistika now has persistent layer locks, organizational groups, and one-step merge down.
Locked layers reject pixel writes from human drawing, symmetry, Composition Plates, SDK strokes, Recipe Artifacts, and Art Director targeting. Groups remain organization-only folders with no compositing semantics.
Stable SDK v0.1.14 adds:
Domistika.layers.lock(layerId, true)
await Domistika.layers.mergeDown(layerId)
Domistika.layers.groups.create('Guardians')
Domistika.layers.groups.assign(layerId, groupId)See Layer Housekeeping.
Domistika now exports the generative grammar with the artwork instead of letting the pixels leave home without identification.
A SHA-256-bound receipt preserves:
formula
plate id + frozen regional grammar
Art Director seed
palette + palette source
transform count + count semantics
Creative Bridge remains protocol v2. The receipt carries its own hash, and that hash is anchored into the existing manifest-hashed bridge note so current Auralith receivers remain compatible.
Stable SDK v0.1.13 adds:
const receipt = await Domistika.symmetryReceipts.current()
await Domistika.symmetryReceipts.verify(receipt)See Symmetry Receipts.
Domistika symmetry can now obey different laws in different canvas regions.
The built-in plates are Mandala, Harvest Wheel, Portal Gate, and Square Guardians. Plate regions may carry their own Symmetry Recipe, constrain copies to the same region, or be protected from generated symmetry entirely. Protected regions still accept direct human drawing.
The Square Guardians plate is the acceptance target: the fold may shape the core, veil, body, gates, and flanks, but it is not allowed to enter the four guardian corners.
Stable SDK v0.1.12 adds:
Domistika.compositionPlates.list()
Domistika.compositionPlates.apply('square-guardians')
Domistika.compositionPlates.active()
Domistika.compositionPlates.regionAt({ x: 120, y: 120 })
Domistika.compositionPlates.clear()See Composition Plates.
Domistika now separates semantic layer meaning from Kinetic Motion behavior.
role: paint | guide | type
motionPolicy: inherit | animate | ignore
Legacy role: motion-ignore projects migrate fail-safely, and a title can remain role: type while using motionPolicy: ignore.
See Semantic Role + Motion Policy.
Domistika now carries the frozen candidate profile for the owned four-app creative chain:
Domistika
→ Auralith369
→ ParaCut
→ WaveForgeStudio
Profile ID:
parallax.creative-interop.v2
Frozen spec SHA-256:
364448afa4997b4fb297a67e1d3cec73ec3bae500855ec21469a24df8ef01be0
Domistika CI independently recomputes this hash.
The optional CineSwarm extension remains explicitly unratified_receiver until an authorized receiver repository adopts it.
See Parallax Creative Interop v2.
Domistika now sends protected semantic overlays separately from the raster artwork Auralith is expected to grade.
paint → base raster
guide → excluded
type → protected overlay
motion-ignore → protected overlay
Creative Bridge v2 binds:
base image SHA-256
overlay image SHA-256
canonical manifest SHA-256
so modifying artwork pixels, title pixels, or semantic metadata invalidates the package.
Stable SDK v0.1.8 adds:
await Domistika.bridge.auralith.transfer()and native site tools v0.1.1 add:
domistika_transfer_to_auralith
New Ink + Type placements retain domistika.semantic-text.v1 metadata, while older type and motion-ignore layers are still protected through their layer role alone.
See Creative Bridge v2.
The first observed live Domistika → Auralith finishing workflow is preserved as a cross-repo acceptance record.
The run verified:
Domistika 0.9.29
→ Harbor for Auralith
→ hash-bound parallax creative bridge
→ Auralith v0.7.1-alpha
→ image.open
→ Moonlight LUT
→ Vignette FX
→ 369 Cinema Style
→ creative receipt
The current bridge is raster, so type/layer semantics do not remain editable after transfer. That limitation is documented as expected behavior rather than hidden behind optimistic prose.
See Native Creative Chain Acceptance 001.
Domistika now exposes a thin browser-native WebMCP layer over the frozen window.Domistika stable SDK.
Registered native site tools cover:
capabilities
command search / execution
canvas state
bounded strokes
Color Studio color + gradients
Spiro placement
semantic layer roles
The adapter uses the live stable runtime instead of reaching into raw canvas contexts or versioned labs.
Normal browsers without WebMCP continue to run Domistika unchanged. WebMCP-aware browsers can discover the site tools directly from the live page.
browser agent
→ WebMCP
→ Domistika site tools
→ window.Domistika
→ stable semantic runtime
See Native WebMCP Site Tools v0.9.29.
Playground now makes its return path impossible to miss and keeps capability snapshots lightweight.
- A visible ▶ Playground chip sits beside Commands.
- After a demo, the chip becomes ↩ Return to Artwork.
- Playground completion shows an on-screen Return to my artwork action.
- The status line explicitly names ⌘K / Ctrl+K → Playground · Return to Previous Artwork.
Domistika.playground.state()andDomistika.capabilities().playgroundnow expose lightweight clip metadata only, excluding poster/data-URL payloads.- Stable SDK advances to
0.1.7.
The first live end-to-end Playground run is preserved as Domistika Stable Runtime Acceptance 001.
See Playground UX v0.9.28 and Stable Runtime Acceptance 001.
Domistika now has a one-command first-run demo that performs the studio instead of merely describing it.
Run Playground · Demo the Studio from the Command Palette.
The sequence:
save return snapshot
→ fresh demo canvas
→ Portal Core gradient
→ Flower + Gear Spiro
→ static motion-ignore frame
→ 3·6·9 Portal
→ 3 second Kinetic recording
→ project motion clip / Gallery card
→ Stop
The previous artwork is held as an in-session return snapshot and can be restored with Playground · Return to Previous Artwork.
Stable SDK v0.1.6 adds:
await Domistika.playground.run()
await Domistika.playground.restorePrevious()
Domistika.playground.state()
await Domistika.project.restore(project)
Domistika.motion.record.start({ source: 'kinetic' })
Domistika.motion.record.stop({ source: 'kinetic' })See Playground v0.9.27.
Layers now carry a persisted semantic role:
paint · guide · type · motion-ignore
- Role is saved in
.domistikaprojects and restored with the layer. - Existing Superphase guide layers automatically remain
guide. - The Layers panel exposes a role selector and role badges.
motion-ignorelayers are excluded from the Kinetic snapshot and remain visibly static above Motion preview.- Stable SDK v0.1.5 exposes
Domistika.layers.role(...)andDomistika.layers.roles(). - Command Palette actions can mark the active layer as Paint, Type, or Motion Ignore.
This directly supports static titles, signatures, frames, and captions over animated artwork.
See Layer Roles v0.9.26.
Domistika now treats the running SDK as the canonical machine-readable contract.
Domistika.capabilities()is the machine-readable source of truth for what the current build exposes. The README remains explanatory documentation, not a second capability registry.
Domistika.tool.list()now discovers extension tools such as Fill, Select, and Smart selection when installed.Domistika.tool.set('fill')andDomistika.tool.set('select')route through their owning extension runtimes.Domistika.commands.search(query)gives scripts and agents the same search contract used by the Command Palette.- Programmatic palette search now updates the visible palette when it is open.
- Harmony/color swatches have stronger two-tone framing so very dark and very light colors stay visible.
For integrations, do not infer features from README prose or app-version strings.
Use:
const capabilities = Domistika.capabilities();
const tools = Domistika.tool.list();
const commands = Domistika.commands.catalog();
const portal = Domistika.commands.search('portal');The stable SDK is designed so humans, agents, scripts, accessibility tools, and future controllers can interrogate the same running contract.
The existing Colors room is now a complete color workspace instead of only a favorites bank.
- Native browser color wheel remains available.
- Exact HEX / HTML color input.
- Numeric RGB controls.
- Numeric HSL controls.
- Curated CSS named-color shelf.
- Local recent-color history.
- Existing Favorite Colors preserved.
- Automatically derived analog, triad, and complementary harmonies.
- Ten real linear/radial gradient presets.
- Gradients can paint behind existing pixels or replace the active layer with one undo checkpoint.
- Stable SDK v0.1.3 exposes
Domistika.colors.*. - Command palette gains Open Color Studio.
See Color Studio v0.9.24.
Domistika now has a searchable command palette backed by the stable SDK command bus.
- Open with
Ctrl/Cmd+Kor the Commands button. - Search by command label, id, category, description, keywords, or shortcut.
- Keyboard navigation with Up / Down / Enter / Escape.
- Jump directly to Spiro Lab, Motion Studio, Gallery, and Creature Lab.
- Select common drawing tools without hunting the tool rail.
- Launch Motion presets, Composer / Visual Performance scenes, and recording controls.
- Open export/new-canvas/shortcut surfaces through the same command bus.
- Download the latest project motion clip.
- Stable SDK v0.1.2 adds
Domistika.commands.catalog()while preservinglist()andexecute().
The palette owns search and presentation only. Feature execution stays inside window.Domistika.
Motion recording now belongs to the artwork instead of only leaving through the browser download tray.
- Kinetic, Composer, and Visual Performance WebM recordings are saved to a bounded local motion-clip registry.
- Autosave stores clip metadata and IndexedDB references without repeatedly duplicating video base64.
- Explicit
.domistikaproject downloads embed motion media for portability. - Opening an embedded project restores the clips locally.
- Each recording lands in My Gallery with a poster, motion badge, and local video playback.
- Existing WebM download behavior remains available.
- Per-clip limit: 24 MiB.
- Per-project limit: 8 clips.
- Stable SDK v0.1.1 exposes
Domistika.motion.clips.*and portable project serialization.
See Motion Clips v0.9.22.
Domistika now exposes one frozen public runtime surface:
window.DomistikaThe SDK wraps the existing versioned modules instead of replacing them. It provides stable canvas, tool, brush, stroke, layer, Spiro, Motion, clean-capture, event, and command surfaces for scripts, accessibility tools, test harnesses, MIDI experiments, and governed agents.
Highlights:
Domistika.setTool(...),Domistika.color(...), andDomistika.stroke(...);- canvas-coordinate or normalized-coordinate scripted strokes;
- missing scripted pressure defaults safely to full pressure, so direct
drawSegmentcalls no longer collapse brush width; - metadata-only layer controls without exposing raw canvas contexts;
- stable Spiro placement and Motion preset/scene wrappers;
Domistika.export.capture()over the clean-art v0.9.20 contract;- semantic
domistika:*events; - an initial command bus intended to back a future command palette;
- no network, filesystem, arbitrary JavaScript, or raw context surface.
See Stable SDK v0.1.
Domistika now exposes a bounded read-only clean-art capture surface at window.domistikaCleanCaptureV0920.
It returns the current CanvasEngine.compositeCanvas() artwork as a PNG payload without Studio chrome, symmetry guides, zoom controls, or other overlay UI. The surface is intentionally narrow:
- PNG only;
- base64 only;
- maximum output dimension 2048 px;
- optional white background;
- no network access;
- no filesystem access;
- no local-storage access;
- no mutation of the canvas.
This is designed for governed local visual-critic bridges such as Browsallax while keeping capture separate from drawing authority.
A free, lefty-friendly drawing studio for the open web.
Domistika is an independent browser art application created for artists who want a focused sketching space without subscriptions, locked tools, or device-specific installs. The interface defaults to a left-handed layout and can flip instantly for right-handed artists.
Domistika is inspired by the broad category of professional digital sketchbooks. It is not affiliated with, endorsed by, or a copy of Sketchbook, Autodesk, or Sketchbook, Inc. No proprietary assets or source code are used.
https://michaelwave369.github.io/Domistika/
- Pressure-aware pencil, ink, marker, airbrush, and eraser
- Adjustable brush size, opacity, and steady-stroke smoothing
- Line, rectangle, and ellipse tools
- Vertical, horizontal, four-way, and radial symmetry
- Layer creation, duplication, visibility, opacity, reordering, and blend modes
- Undo and redo for drawing operations
- Pan, zoom, fit-to-screen, grid overlay, and eyedropper
- PNG/JPEG export with optional transparent PNG background
- Editable
.domistikaproject downloads - Image and Domistika project import
- IndexedDB local autosave and recovery
- Left-handed and right-handed layout switching
- WebGL2/Three.js 3D Form Lab for lighting and volume reference
- Responsive desktop, tablet, and mobile layouts
- Stamp-based stroke renderer
- 43 built-in sketching, inking, painting, texture, airbrush, and eraser presets
- Brush spacing, scatter, rotation jitter, grain, hardness, and flow
- Round, flat, chisel, square, rake, and splatter tip shapes
- Pressure-to-size and pressure-to-opacity controls
- Stylus tilt influence
- Local wet-color mixing
- Searchable brush shelf, categories, and favorites
- Brush Lab for live tuning
- Locally saved custom brushes
- Brush profiles preserved in
.domistikaprojects
- Floating, draggable reference image board
- Reference opacity, scale, rotation, and mirror controls
- Drag-and-drop reference loading
- Automatic eight-color palette extraction
- Clickable extracted color swatches
- Persistent recent-color history
- Complementary, analogous, triadic, and split-complementary harmonies
- Stroke-by-stroke time-lapse recording
- In-app time-lapse playback
- WebM process-video export where browser support is available
- PNG storyboard export
- Rectangular and freehand lasso selection
- Direct canvas manipulation with drag-to-move controls
- Corner handles for proportional scaling
- Rotation handle and precise rotation slider
- Horizontal and vertical flipping
- Pixel nudging with buttons or arrow keys
- Select-all support
- Internal cut, copy, paste, and duplicate clipboard
- Delete selected pixels without affecting the rest of the layer
- Commit creates one clean undo step
- Cancel restores the untouched original layer snapshot
- Desktop, tablet, phone, and keyboard workflows
- Magic-wand selection for connected regions
- Global color-range selection
- Adjustable color tolerance
- Grow, shrink, feather, and invert selection refinement
- Copy or cut selected pixels into a new layer
- Clear only smart-selected pixels
- Non-destructive layer masks that preserve the underlying canvas
- Enable, disable, invert, update, or remove masks
- Mask-aware PNG/JPEG export and layer compositing
- Reusable named selection channels
- Layer masks and channels preserved in
.domistikaprojects - Dedicated Smart Select tool, control-bar launcher, and inspector panel
- Desktop, tablet, mobile, and keyboard workflows
- Full-layer perspective warp with four-corner control
- Freeform 3×3 mesh warp
- Adjustable warp rendering quality
- Non-destructive live warp preview with Commit, Cancel, and Reset
- Warp commits as one undoable operation
- Linked masks warp with their artwork; unlinked masks stay in place
- Clipping chains that constrain layers to the alpha beneath them
- Consecutive clipped layers form reusable clipping groups
- Editable mask-painting mode with Hide and Reveal brushes
- Mask-paint session undo and redo
- Enable, disable, remove, link, or unlink editable masks
- Existing v0.5 smart masks are preserved when v0.6 editing begins
- Mask thumbnails and CLIP/MASK indicators in the Layers list
- Mask-aware export, compositing, autosave, and
.domistikaproject restore - Dedicated Layers+ launcher and inspector panel
- Spirograph-style pattern generator for the active drawing layer
- Hypotrochoid and epitrochoid curve families
- Live preview using the current Domistika drawing color
- Classic, flower, starburst, orbit, and gear presets
- One-click generative randomizer
- Adjustable ring radius, wheel radius, pen offset, diameter, turns, line width, opacity, rotation, and quality
- Draw-at-center action for mandalas and medallions
- Place-on-canvas mode for stamping a pattern anywhere
- Every single placement commits as one clean undo step
- Generated artwork remains compatible with layers, exports, autosave, and
.domistikaproject files
- Ring, golden-angle, grid, and row array layouts
- Alternating, doubled, and four-way mirrored patterns
- Start-to-end scale progression across an array
- Per-pattern rotation stepping
- Automatic hue cycling from the current drawing color
- Normal, multiply, screen, overlay, additive glow, and difference blending
- Live array preview
- Place-array mode for positioning complete pattern fields anywhere on the canvas
- Random layout generator
- An entire array commits as one undo operation
- Active-layer finishing preview with original-versus-effect comparison
- Clean Pop, Warm Film, Cool Night, Neon Glow, Mono Ink, Dream Haze, Vintage Print, Pixel Pop, and Solar Candy presets
- Brightness, contrast, saturation, and hue controls
- Blur, grayscale, sepia, and partial-invert controls
- Screen-composited glow and alpha-preserving vignette
- Pixelation, posterization, and film-grain processing
- One-click randomized finishing looks
- Apply directly to the active layer with a drawing-history checkpoint
- Apply to Copy workflow that keeps the original layer intact
- Transparent pixels remain transparent throughout processing
- Last-used finishing controls persist locally
- Dedicated Effects launcher and inspector panel
- Plain
Jkeyboard shortcut opens the Effects panel
- Live, non-destructive Motion mode for finished artwork
- Whole-artwork rotation or three independent radial rotation bands
- Separate signed speeds for outer, middle, and core motion
- Adjustable core and middle radial boundaries
- Optional pulse and hue-drift animation
- Play, pause, stop, reverse, reset, and refresh-source controls
- Random motion generator
- 3·6·9 Portal preset for counter-rotating kinetic compositions
- Authored paint layers remain untouched and return immediately when Motion mode stops
- Motion Region selection for rotating only a chosen part of the artwork
- Alpha-weighted automatic art-center detection for mandala and portal pivots
- Manual X/Y pivot placement and center-on-region control
- Recursive Mirror Tunnel with echo count, scale, rotation, and alpha-decay controls
- Performance presets: Slow Drift, Portal 3·6·9, Chaos, Hypnosis, Inversion Storm, and Bass Bloom
- Microphone-driven audio reactivity using local Web Audio analysis
- Local audio-file playback and frequency-band analysis
- Bass-to-pulse, mids-to-middle-motion, and highs-to-core/hue mappings
- Audio smoothing, input gain, and kinetic sensitivity controls
- Live WebM motion recording at 24/30/60 fps with maximum-duration control
- Single-frame PNG export from the kinetic performance renderer
- Original authored paint layers remain untouched throughout performance mode
- Motion always snapshots the current authored artwork immediately before preview begins
- Stale startup snapshots are invalidated after drawing/content changes
- Restored and imported projects no longer disappear when kinetic motion begins
- Existing Kinetic Expansion features remain non-destructive
- Ghost Trails with adjustable temporal memory and new-frame mix
- Kaleidoscope Lens with 3–18 radial slices, alternating mirrors, and signed lens spin
- Orbit Pivot with elliptical and Figure-8 motion paths
- Adjustable X/Y pivot travel radius and orbit frequency
- Scene Sequencer for automatically advancing through existing kinetic performance presets
- Dream Cycle, Energy Run, Storm Ride, and Meditation Loop scene sets
- Ordered or shuffled scene playback with adjustable scene duration
- Composer presets: Ghost Mandala, Orbit Bloom, Infinite Dream, and Calm Drift
- WebM and PNG export automatically capture the visible Composer output when trails or kaleidoscope optics are active
- Additive runtime preserves the v0.9.15 live-source protection and authored paint layers
- One-click Slow Trails mode with long temporal memory and Slow Drift base motion
- Kaleidoscope quick buttons for 8, 12, and 16 mirrored slices
- Orbit quick paths for Circle, Ellipse, and Figure 8
- Quick WebM capture with 10, 12, 20, and 30 second duration choices
- Capture automatically uses Composer output when Trails or Kaleidoscope are active and falls back to the base kinetic recorder otherwise
- Black Stage toggle for a checker-free black void behind transparent kinetic artwork
- One-click MIND MELT combination: Hypnosis + Ghost Trails + Kaleido 12 + Figure-8 Orbit + Black Stage
- Reset action turns off Mind Melt add-ons while preserving the underlying kinetic motion state
- Additive control layer leaves authored artwork untouched
- Sticky Draw toggle: click once for pen down, move the cursor to draw, click again for pen up
- Sticky strokes keep the existing brush engine, symmetry modes, layers, autosave, and one-step undo behavior
- Sticky Draw safely lifts on tool/layer changes, pan activation, pointer cancel, or interaction with controls outside the canvas
- Leaving and re-entering the canvas suspends and resumes Sticky Draw without connecting an accidental line across the gap
- Polyline mode for click-only precision drawing with live segment preview
- Enter or double-click commits a polyline; Backspace removes the last point; Escape cancels and restores the untouched layer
- Sticky Draw and Polyline are mutually exclusive alternative-input modes
- Keyboard access: Shift+D toggles Sticky Draw and Shift+P toggles Polyline
- ARIA pressed states and a live on-canvas mode indicator make input state explicit
- Public runtime API:
window.domistikaAccessibleInputV0919 - Designed as an accessibility feature for people and alternative-input operators rather than a device-specific accommodation
- Vanilla JavaScript and modern browser APIs
- Layered HTML Canvas 2D rendering
- Pointer Events with stylus pressure and tilt support
- IndexedDB autosave
- CSS and Canvas mask compositing
- Triangle-mesh affine image warping
- Parametric hypotrochoid and epitrochoid rendering
- Canvas pixel processing and browser-native filter compositing
- Temporal canvas feedback for kinetic motion trails
- Radial clip-and-transform compositing for kaleidoscope optics
- Web Audio API analysis for audio-reactive kinetic performance
- MediaRecorder and Canvas Capture Stream for process and motion videos
- Three.js with a WebGL2 context for the 3D reference lab
- Vite production builds
- GitHub Actions deployment to GitHub Pages
npm install
npm run devProduction validation:
npm run check
npm run buildThe included workflow builds and deploys the site on every push to main.
In the repository settings, open Pages and set Source to GitHub Actions if it is not selected automatically.
- Installable offline PWA
- Reference-board persistence
- Brush-pack import and export
- Palette-pack import and export
- SVG export for vector-friendly tools
- Keyboard and accessibility customization
- Workspace backup and restore bundle
- Text and typography tools
- Perspective guides and snapping
- Selection edge smoothing and anti-alias controls
- Rulers, angle guides, and measurement overlays
- Reusable shape and composition templates
- GPU-assisted compositing and effects
- Large-canvas tiling
- Community brush packs
- Optional peer-to-peer collaboration
- Accessibility and low-vision drawing modes
MIT. See LICENSE.