Open-source developer tool · Starlit Digital

loom

Understand a UI layout before you translate it.

loom analyzes interface structure across SwiftUI, WinUI XAML, Qt and JUCE. Inspect a layout, generate a reviewable scaffold, and compare what changed—all from the command line.

Local analysis. Readable reports. Native behavior stays an engineering decision.

Version 1.0.00BSD — same as our brammacOS · Linux · Windows release archives

Why loom?

Carry the layout intent.
See the gaps.

Moving a screen between frameworks means more than renaming controls. Spacing, hierarchy, native components and accessibility can change along the way. loom brings common layout constructs into a shared model so you can inspect differences and review the target’s remaining contracts.

INSPECT

Make structure visible

Read common SwiftUI, XAML, QML, Qt Designer, Qt C++ and JUCE constructs as normalized reports or an ASCII layout tree. Unsupported components remain explicit review boundaries.

GENERATE

Start with a scaffold

Produce reviewable XAML, SwiftUI or JUCE output and target contracts. Review behavior, actions, state and accessibility before integrating generated code.

COMPARE

Check the translation

Compare structural parity and profile-based visual metrics. Bundle analysis, graphs, contracts and reports for a handoff another developer can inspect.

A first useful result

Install. Inspect. Review.

The source install includes loom’s pattern catalog. It needs Go 1.25 or later, Bash and Make. The sample uses public fixture layouts; you do not need to point loom at a private project to try it.

01 · GET IT

Install the full tool

Clone the repository and run make build. Add $HOME/.local/bin to PATH. Prefer a binary? Release archives are available for macOS, Linux and Windows.

02 · INSPECT

Read the sample

Run loom inspect:ascii examples/sampleapp/mainwindow.xaml from the checkout. You get a layout tree before generating or changing files.

03 · REVIEW

Generate and compare

Write a scaffold into a fresh temporary directory, then compare the supplied SwiftUI and XAML layouts. Reports identify work to review; they do not certify a finished port. This sample comparison reports warnings and exits with status 1 because the layouts differ.

A runnable workflow

See the source.
Review the target.

This macOS/Linux shell example uses the bundled sample and a fresh output directory. Inspecting and comparing read the source; generation writes the requested file.

For the CLI alone, clone the Starlit Digital repository, then run go install ./cmd/loom from its root. That does not install the pattern catalog. Use the full source install for catalog validation and the complete sample workflow.

git clone https://github.com/Starlit-Digital/loom.git
cd loom
make build
# Add $HOME/.local/bin to PATH if needed.

loom inspect:ascii examples/sampleapp/mainwindow.xaml

output_dir=$(mktemp -d)
loom generate:xaml examples/sampleapp/contentview.swift \
  --output "$output_dir/generated.xaml"

loom inspect:parity examples/sampleapp/contentview.swift \
  --target examples/sampleapp/mainwindow.xaml \
  --from swiftui --to winui3 --json

Go further

A report for each
translation decision.

Once the sample makes sense, point loom at your own layouts. Use individual commands for focused questions, or a project manifest to assemble a review bundle.

VISUAL METRICS

Compare more than hierarchy

inspect:visual-parity compares profile-normalized metrics and semantic roles. Font inspection supplies intrinsic material metrics. These reports are not screenshot-based pixel comparisons.

NATIVE CONTRACTS

Keep behavior explicit

generate:contracts reports state, action, collection and accessibility work. patterns:transfer helps plan how source layout intent maps to a target.

REVIEW BUNDLES

Hand off the evidence

project:build writes manifest-directed analysis, component graphs, scaffolds, contracts and comparison reports. It builds a review bundle, not a compiled native application.

Know the boundary

A starting point
you can inspect.

loom parses common constructs, with conservative heuristics for some C++ and Designer inputs. Generated output is scaffold code. A good report does not prove that a target screen renders, behaves or meets accessibility requirements correctly.

Review generated outputNative controls, application state, actions, platform integration and unsupported components still need engineering review and runtime testing.
Explicit file writesGeneration writes requested artifacts. Existing outputs require explicit overwrite admission. Start in a fresh output directory and review the diff before integrating.
Versioned evidenceThe 1.0.0 release provides macOS, Linux and Windows archives and records native smoke/checksum evidence. That release history does not certify later source edits or your application.