Dodeclusters
Circle-based vector graphics editor
Install / Use
/learn @pier-bezuhoff/DodeclustersREADME
Dodeclusters ֍
Circle-based vector graphics editor

Features
♾️ Infinite canvas, infinite zoom, infinite precision<sup>*</sup>
⬤ Powerful circle geometry instrumentation: treating points, circles and straight lines uniformly
💬 Simple & intuitive design with interactive tips & brief descriptions
💯 Cross-platform (mobile + desktop + browser)
🌲 Dynamic expression-dependency tree
📜 Undo/redo history & auto-save
💾 Custom YAML-derived file format + Safe SVG export
✌ Smart gestures: drag-and-drop, swipe coloring & swipe selection, keyboard shortcuts
🌘 Light/dark mode (WIP, for now as a URL argument ?theme=light or ?theme=dark)
*: objects are related via dynamic expressions and child nodes' formulae are recalculated when moving parents or zooming in/out
Built with Compose Multiplatform, targeting
- [x] Desktop (Windows, Linux)
- [x] Android 7.0+ (SDK 24+)
- [x] Web (via Wasm)
- [ ] macOS/iOS if ever get an Apple dev account (have to notarize/staple binaries), for now only works as a web app
End goal
Combine interactive designs ~ Geogebra
with vector graphics editor ~ Inkscape
and specific type of animations ~ Möbius transformations and possibly Lie sphere geometry
[!NOTE] This project is in beta, beware of bugs and breaking changes
Installation
Live deployed here from the github-pages branch.
Executables for Linux, Window and Android can be found in the assets attached to the latest release or on Google Drive.
Windows
- From the latest release go to
assetsand downloadwindows.zip - Unarchive it
- In folder
com.pierbezuhoff.dodeclustersfind filecom.pierbezuhoff.dodeclusters.exe - Run it! That's it~ (it is bundled with JVM)
Linux
- From the latest release go to
assetsand downloadlinux.zip - Unarchive it
- Go into folder
com.pierbezuhoff.dodeclusters/bin, you'll find executable filecom.pierbezuhoff.dodeclusters chmod +xit and you can run it as./com.pierbezuhoff.dodeclusters(bundled with JVM)
Android
You can find the apk in the assets attached to the latest release.
[!NOTE] Bundled binaries are likely behind web version
Keyboard shortcuts
Ctrl + A: quickly select/deselect everythingDelete,Backspace: delete selected objectsCtrl + V: duplicate selected objectsCtrl + +,Ctrl + =;Ctrl + -; mouse wheel: enlarge/shrink selected objects or zoom in/outCtrl + Z: undo ↶Ctrl + Y: redo ↷Esc: cancel any ongoing constructionsO: open existing fileS: save fileM: go to Drag mode (~ Move)L: go to MuLtiselect modeR: go to Regions modeT: open Transform toolsC: open Create toolsEnter: confirm & conclude current action
Build and run via Gradle
[!IMPORTANT] Requires JDK 17 (later versions may work too)
Run desktop app
./gradlew :composeApp:run
Run web app (dev)
./gradlew :composeApp:wasmJsBrowserDevelopmentRun
Package for Windows/macOS/Linux
Build platform-dependent package (e.g. run thru Github Actions using corresponding OS):
./gradlew composeApp:createDistributable
output directory: composeApp/build/compose/binaries/main/app/
Same + use ProGuard to minify:
./gradlew composeApp:createReleaseDistributable
output directory: composeApp/build/compose/binaries/main-release/app/
Individually:
./gradlew packageReleaseMsi./gradlew packageReleaseDmg+ notarize/register (requires Apple dev acc)./gradlew packageReleaseDeb
output directory:composeApp/build/compose/binaries/main-release/app/
Package for web browser
./gradlew wasmJsBrowserDistribution
output directory: composeApp/build/dist/wasmJs/productionExecutable/
Package development version for web
./gradlew wasmJsBrowserDevelopmentExecutableDistribution
output directory: composeApp/build/dist/wasmJs/developmentExecutable/
Generate debug .apk for Android
./gradlew assembleDebug
output directory: composeApp/build/outputs/apk/debug/
Web Wasm compatibility
To run applications built with Kotlin/Wasm in a browser, you need a browser supporting wasm garbage collection feature:
- For Chrome and Chromium-based browsers (Edge, Brave etc.), it should just work since version 119.
- For Firefox 120+ it should just work.
- For Safari it should work starting from version 18.2.
[!NOTE] Safari 18.2 is available for iOS 18.2, iPadOS 18.2, visionOS 2.2, macOS 15.2, macOS Sonoma, and macOS Ventura. On iOS and iPadOS, Safari 18.2 is bundled with the operating system. To get it, update your device to version 18.2 or later. Safari release notes
For more information see https://kotl.in/wasm_help/.
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
