ArtSpace.Illustration 0.4.1-alpha.1

This is a prerelease version of ArtSpace.Illustration.
dotnet add package ArtSpace.Illustration --version 0.4.1-alpha.1
                    
NuGet\Install-Package ArtSpace.Illustration -Version 0.4.1-alpha.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ArtSpace.Illustration" Version="0.4.1-alpha.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ArtSpace.Illustration" Version="0.4.1-alpha.1" />
                    
Directory.Packages.props
<PackageReference Include="ArtSpace.Illustration" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ArtSpace.Illustration --version 0.4.1-alpha.1
                    
#r "nuget: ArtSpace.Illustration, 0.4.1-alpha.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ArtSpace.Illustration@0.4.1-alpha.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ArtSpace.Illustration&version=0.4.1-alpha.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ArtSpace.Illustration&version=0.4.1-alpha.1&prerelease
                    
Install as a Cake Tool

<div align="center">

ArtSpace

Vector illustration. One C# engine. Desktop and browser.

A local-first illustration editor built with Uno Platform and SkiaSharp, with an Illustrator-style dark workspace and nine reusable .NET libraries.

Open ArtSpace · Getting started · Path editing · Opacity masks and gradients

Build Pages MIT

</div>


An editable illustration workspace

ArtSpace shares its C# document model, transaction engine, geometry, custom controls and workbench between native desktop hosts and real Uno WebAssembly. JavaScript is confined to file transfer, local recovery, input adaptation and opt-in read-only diagnostics. There is no separate JavaScript editor hidden beneath an HTML mock-up.

The compact dark shell combines menus, appearance controls, toolbox, rulers, pasteboard, artboards, layers/properties/history and status bar. The original Alpine Echoes sample is editable vector artwork across three artboards.

Version: 0.4.1-alpha.1. This is an independent functional alpha, not complete or pixel-identical Adobe Illustrator parity. The feature matrix distinguishes implemented behavior and remaining compatibility boundaries.

New in 0.4.1

Responsive selection and panels: retained inspector sections and values, visible-panel-only refreshes, incremental layer rows, indexed selection and lazy drag transactions. Plain clicks no longer serialize the document or construct a snapping index. Focused edits and section expansion survive ordinary updates. Implementation and reproducible measurements.

New in 0.4

Editable alpha and luminance masks: create, release, invert, disable, select source/content independently and retain nested mask relationships through undo, cloning, clipboard and symbols. The Transparency section exposes mode and source editing.

SVG paints and affine fidelity: import/export linear/radial gradient fills with stop opacity, coordinates, focus, radius, spread and local inheritance. Preserve nested group scaling/skew instead of silently changing only nominal bounds. Supported SVG opacity masks retain source artwork and finite regions.

Lower repeated rendering cost: retain gradient shaders with exact invalidation and correct native ownership; compute affine rectangle bounds without managed arrays. Five-sample CPU benchmark results and pixel-equivalence checks are retained by CI.

Read the workflow, API and compatibility guide.

Capabilities

Area Implemented workflows
Drawing Primitives, pen/cubic paths, pencil, fixed-width brush, text, artboards and slices
Editing Selection, marquee, transforms, duplication, grouping, order, alignment, distribution, clipboard and transactional undo/redo
Contours Native/imported/expanded/compound/glyph paths, multiple anchors, tangent editing, exact cubic insertion, reconnecting removal, segment cutting and smooth/corner conversion
Geometry Shape/stroke expansion, offsets, Boolean union/subtract/intersect/exclude and compound paths with nonzero/even-odd rules
Appearance Multiple fills/strokes, linear/radial gradients, opacity, blends, shadows, vector clipping and editable alpha/luminance masks
Text Basic wrapping, tracking/alignment and Create Outlines using the same glyph runs as painting
Reuse Bounded editable blends/repeats and linked local symbols/components
Files Native JSON, supported SVG interchange, SVG/PNG export and IndexedDB/native recovery
Performance Retained geometry/text/gradient caches, selection snapshots, indexed stationary-target snapping and conservative nested-leaf culling

Build and run

The pinned stack is .NET SDK 10.0.401, Uno SDK 6.7.30 and SkiaSharp 3.119.2 matched to the Uno native runtime. Keep managed/native Skia ABI families aligned; a standalone major dependency bump is not a validated runtime migration.

git clone https://github.com/wieslawsoltes/ArtSpace.git
cd ArtSpace
python3 scripts/fetch-assets.py

dotnet run --project tests/ArtSpace.Tests -c Release
dotnet run --project src/ArtSpace.App -f net10.0-desktop \
  -p:ArtSpaceDesktopOnly=true

Publish the browser application:

dotnet workload install wasm-tools --skip-manifest-update
dotnet publish src/ArtSpace.App -f net10.0-browserwasm -c Release \
  -o artifacts/publish -p:WasmShellWebAppBasePath=/ArtSpace/
python3 scripts/collect-site.py artifacts/publish artifacts/site
python3 scripts/serve-site.py --directory artifacts/site

Open http://127.0.0.1:4173/ArtSpace/. HTTP(S) is required; file:// is not supported. The asset script retrieves pinned Inter files and their SIL OFL notice. Font binaries are not committed.

Download

Every release ships a self-contained, single-file desktop app — no .NET install needed:

OS x64 Arm64
Windows ArtSpace-<version>-win-x64.zip ArtSpace-<version>-win-arm64.zip
macOS ArtSpace-<version>-osx-x64.tar.gz ArtSpace-<version>-osx-arm64.tar.gz
Linux ArtSpace-<version>-linux-x64.tar.gz ArtSpace-<version>-linux-arm64.tar.gz

Extract and run ArtSpace (ArtSpace.exe on Windows). Builds are not code-signed yet: on macOS clear the quarantine flag with xattr -d com.apple.quarantine ArtSpace; on Windows choose More info → Run anyway in SmartScreen. Verify downloads against SHA256SUMS.txt.

The libraries below are published to NuGet.org, e.g. dotnet add package ArtSpace.Workbench.

Reusable libraries

Package Responsibility
ArtSpace.Core Document, appearance, affine geometry and managed editable contours
ArtSpace.Layout Constraints, layout and reference/indexed snapping
ArtSpace.Documents Validated native schemas, clipboard and SVG subset
ArtSpace.Editing Selection, transactions, history and linked components
ArtSpace.Skia Cached paths/text/shaders, compositing, culling, hit testing, glyph paths and raster export
ArtSpace.Illustration Expansion, offsets, compounds, clipping/opacity-mask commands, blends and repeats
ArtSpace.Controls Custom menus, panels, fields, resize grips, vector icons and layer rows
ArtSpace.Editor Embeddable Uno drawing surface and direct-manipulation gestures
ArtSpace.Workbench Application workspace, properties, command routing and storage workflows

The first six packages do not depend on Uno. Hosts own lifetime, fonts and an IWorkspaceStorage implementation. OpacityMaskOperations, PathOperations and PathEditing are reusable independently of the shell.

using ArtSpace.Documents;
using ArtSpace.Editing;
using ArtSpace.Workbench;

var session = new EditorSession(IllustrationSample.Create());
window.Content = new StudioWorkbench(session, storage);

Skia consumers need compatible native assets for the executing platform. Tagged releases publish all nine packages, with symbols, to NuGet.org.

Verification and performance

The repository contains 211 registered engine cases, five additional benchmark boundary checks and 18 browser scenarios. Tests exercise actual pointer, keyboard and file-picker input against the published Uno app. Diagnostics enabled by ?test=1 are read-only, not an editing API.

npm ci
npx playwright install chromium
npx playwright test # after starting the local static server

dotnet run --project tests/ArtSpace.Tests -c Release --no-build -- --benchmark

Build validates the engine/benchmarks, Windows/Linux/macOS compilation, browser publication/acceptance and all nine packages. Pages deploys successful main-branch artifacts, verifies build-info.json and tests the public application. Release runs for v* tags or a supplied manual version: it repeats the engine and browser gates, publishes self-contained single-file desktop executables for Windows, macOS and Linux (x64 and arm64) plus browser/source/package archives and SHA256SUMS.txt. Tags attach them to a GitHub Release and publish the packages to NuGet.org with Trusted Publishing (OIDC, no stored API key) from the protected nuget environment; manual runs are dry runs that only upload workflow artifacts. Workflow results establish which commit passed.

Rendering uses Uno SKCanvasElement and its shared Skia composition path, not an extra application-owned CPU framebuffer. Hardware acceleration depends on the host/browser/driver; path operations remain CPU-side. CI Chromium and benchmark surfaces use software graphics. CPU allocations/timings are not whole-app frame rates or physical-GPU certification. See clipping/performance and the 0.4 guide.

Compatibility

Native saves use schema 3. ArtSpace 0.4 reads schemas 1–3 and upgrades older documents when saving. Previous releases reject schema 3 rather than silently dropping new mask/paint/affine semantics. Preserve an original copy for older-version workflows. Autosave is local recovery, not durable backup.

Supported SVG gradients and masks are not full SVG/Illustrator roundtripping. Opacity-mask import currently requires user-space units; inverted masks retain native/PNG output but SVG export is explicitly rejected. General filters, image/use content, gradient strokes, stylesheet cascade and linear-light paint interpolation remain outside the supported subset.

Advanced shaping, variable-font workflows, gradient meshes, full live effects, image tracing, pressure/pattern brushes, AI/EPS/PDF interchange, CMYK/ICC production, multiple documents and arbitrary floating docking remain unfinished. Direct contour editing works on one object's contours at a time; rational curves are approximated on editing. See the complete feature matrix.

Documentation and license

Getting started · Architecture · Contours/outlines · Clipping/performance · Opacity/gradients · Contributing

ArtSpace is MIT-licensed, derived from the author's MIT VectorSpace snapshot 587f780f2803f6b3aa59dfb5411da2c2fe601dfa. Attribution is retained in third-party notices.

Adobe Illustrator is a design and interaction reference. ArtSpace contains no Adobe source code, proprietary artwork, logos or product icons and is not affiliated with or endorsed by Adobe.

Responsive selection and panels

Selection and property-editing performance is described in UI performance, including retained controls, change routing, lazy drag transactions and reproducible browser measurements.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on ArtSpace.Illustration:

Package Downloads
ArtSpace.Workbench

Reusable ArtSpace workbench, layers, inspector, tool palette, prototype and document workflows.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.1-alpha.1 0 9/29/2026