{"id":50032396,"url":"https://github.com/zacharyfmarion/ori-studio","last_synced_at":"2026-05-26T23:01:45.557Z","repository":{"id":358476511,"uuid":"1241536821","full_name":"zacharyfmarion/ori-studio","owner":"zacharyfmarion","description":"Rust/WASM port of TreeMaker 5.0.1 model engine","archived":false,"fork":false,"pushed_at":"2026-05-20T02:17:15.000Z","size":12231,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-20T05:17:08.007Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zacharyfmarion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-17T14:11:28.000Z","updated_at":"2026-05-20T01:59:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zacharyfmarion/ori-studio","commit_stats":null,"previous_names":["zacharyfmarion/treemaker-rs","zacharyfmarion/ori-studio"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/zacharyfmarion/ori-studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacharyfmarion%2Fori-studio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacharyfmarion%2Fori-studio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacharyfmarion%2Fori-studio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacharyfmarion%2Fori-studio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zacharyfmarion","download_url":"https://codeload.github.com/zacharyfmarion/ori-studio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zacharyfmarion%2Fori-studio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33542350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-20T22:00:15.877Z","updated_at":"2026-05-26T23:01:45.551Z","avatar_url":"https://github.com/zacharyfmarion.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ori Studio\n\n[![CI](https://github.com/zacharyfmarion/ori-studio/actions/workflows/ci.yml/badge.svg)](https://github.com/zacharyfmarion/ori-studio/actions/workflows/ci.yml)\n[![Web](https://img.shields.io/badge/Web-oristudio.pages.dev-brightgreen.svg)](https://oristudio.pages.dev/)\n[![Latest Release](https://img.shields.io/github/v/release/zacharyfmarion/ori-studio?display_name=tag)](https://github.com/zacharyfmarion/ori-studio/releases)\n[![treemaker-core on crates.io](https://img.shields.io/crates/v/treemaker-core.svg)](https://crates.io/crates/treemaker-core)\n[![treemaker-core docs](https://docs.rs/treemaker-core/badge.svg)](https://docs.rs/treemaker-core)\n\nOri Studio is an origami design environment for turning a tree structure into a\ncrease pattern. It combines a modern web and desktop interface with a Rust and\nWebAssembly port of the model engine from Robert J. Lang's TreeMaker 5.0.1.\n\nThe app is built for interactive design work: create or open TreeMaker projects,\ninspect the underlying tree, run optimization passes, build crease patterns,\nexport compatible files, and preview folded results. The original TreeMaker\nbehavior remains the parity reference for the engine, while the shared frontend\nis evolving into a pane-based design workspace for browser and desktop use.\n\nTry the hosted app at [oristudio.pages.dev](https://oristudio.pages.dev/).\nSigned Apple Silicon DMGs are published from local notarized builds on\n[GitHub Releases](https://github.com/zacharyfmarion/ori-studio/releases).\n\n## Applications\n\n- `apps/web`: the shared React and Vite frontend used by the browser app and the\n  Tauri shell.\n- `apps/tauri`: the Tauri v2 desktop wrapper for native menus, dialogs, window\n  metadata, and packaging.\n\n## Exposed Packages and Crates\n\n### Rust crates\n\n- [`treemaker-core`](https://docs.rs/treemaker-core): the native Rust engine API\n  for TreeMaker model files, optimization, feasibility checks, crease-pattern\n  generation, FOLD conversion, and simulation preparation.\n- [`treemaker-cli`](https://crates.io/crates/treemaker-cli): the `treemaker`\n  command-line tool for inspecting, checking, optimizing, and exporting models.\n- [`treemaker-wasm`](https://docs.rs/treemaker-wasm): `wasm-bindgen` bindings\n  that expose the engine to browser and Node workflows.\n- [`treemaker-fold`](https://docs.rs/treemaker-fold): generic FOLD data\n  structures and geometry helpers for origami applications.\n- [`treemaker-flatfold`](https://docs.rs/treemaker-flatfold): flat-foldability\n  and layer-order solving for FOLD crease patterns.\n- `treemaker-sequence`: early research primitives for target-state resolution\n  and future folding-sequence planning over FOLD crease patterns.\n\nThe main TreeMaker engine entry point is\n[`Tree`](https://docs.rs/treemaker-core/latest/treemaker_core/struct.Tree.html).\n\n### npm workspace packages\n\n- `@treemaker/web`: the private workspace package for the shared Ori Studio web\n  app.\n- `@treemaker/tauri`: the private workspace package for the desktop shell.\n- `@treemaker/origami-simulator`: the private workspace package that adapts\n  Origami Simulator-style folding utilities for FOLD inputs.\n\n## Engine Capability\n\nVersion `0.1.0` supports the TreeMaker 5.0.1 model engine surface:\n\n- Read TreeMaker v3, v4, and v5 files.\n- Write canonical v5 files and export v4 files.\n- Inspect summaries and crease-pattern status.\n- Run the ALM scale, edge-strain, and strain optimizers.\n- Build polygons, vertices, creases, facets, fold directions, and facet order.\n- Use the engine from native Rust, a CLI, or WebAssembly.\n\nThe parity baseline is the public TreeMaker 5.0.1 source with its distributable\nALM optimizer. CFSQP and RFSQP are not included because the public TreeMaker\n5.0.1 source does not include redistributable source for those optimizer\nbackends.\n\n## Getting Started\n\nInstall dependencies:\n\n```sh\nnpm ci\n```\n\nRun the web app:\n\n```sh\nnpm run dev:web\n```\n\nRun the desktop app:\n\n```sh\nnpm run dev:desktop\n```\n\nUse the Rust API:\n\n```sh\ncargo add treemaker-core\n```\n\nInstall the command-line tool:\n\n```sh\ncargo install treemaker-cli\n```\n\nUse the WebAssembly bindings:\n\n```toml\ntreemaker-wasm = \"0.1\"\n```\n\n## Confidence\n\nThe engine is tested against a C++ oracle built from the vendored TreeMaker\n5.0.1 source. CI checks the Rust workspace, web client, generated WebAssembly\nbindings used by the web client, and oracle parity suite. An external corpus\nharness is available for private/user `.tmd`, `.tmd4`, and `.tmd5` collections,\nbut no real-user corpus files are committed to this repository.\n\n## Development\n\nUseful local checks:\n\n```sh\ncargo fmt --check\ncargo clippy --workspace --all-targets -- -D warnings\ncargo test --workspace\nnpm run lint:web\nnpm run typecheck:web\nnpm run test:web\nwasm-pack build crates/treemaker-wasm --target bundler\nwasm-pack test --node crates/treemaker-wasm\n```\n\nRoadmaps live in [`WEB_ROADMAP.md`](WEB_ROADMAP.md) and\n[`PRODUCT_ROADMAP.md`](PRODUCT_ROADMAP.md). Release steps live in\n[`RELEASE.md`](RELEASE.md). Porting notes live in [`PORTING.md`](PORTING.md).\n\n## License\n\nThis project is `GPL-2.0-or-later` because it includes a direct Rust port of\nTreeMaker's GPL model code. See [`LICENSING.md`](LICENSING.md) for the full\nlicensing guide, including optimizer backend notes and dependency inventory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzacharyfmarion%2Fori-studio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzacharyfmarion%2Fori-studio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzacharyfmarion%2Fori-studio/lists"}