Skip to content

Latest commit

 

History

History
270 lines (206 loc) · 25.2 KB

File metadata and controls

270 lines (206 loc) · 25.2 KB

InkkSlinger UI Framework

Is It Usable Yet? (tm sign here)

Evidence Pass (2026-03-07)

Check Result Evidence
Solution build Pass (Release, 0 errors, 0 warnings) dotnet build InkkSlinger.sln -c Release -v minimal
Test suite Pass (855/855) dotnet test InkkSlinger.Tests/InkkSlinger.Tests.csproj -c Release -v minimal
Current failing test areas None Latest full release test run (2026-03-07)
WPF control coverage Broad but incomplete (74/77) TODO.md -> ## WPF Control Coverage
Open tracked work 4 unchecked TODO items (3 bounty controls + 1 non-bounty input parity item) TODO.md
Explicit unsupported behavior Touch/stylus/tablet input pipeline is unsupported until InkCanvas/InkPresenter are implemented TODO.md (## WPF Control Coverage + input parity notes)

Honest Verdict

Not yet production-ready as a general-purpose framework claim.

Conditionally usable for production only when your app stays inside the currently implemented/tested surface area and you accept the known gaps above.

If the bar is "ship a targeted app on this stack," that can be reasonable.
If the bar is "framework-level broad production readiness," the current open parity/coverage gaps mean not yet.

.NET MonoGame WPF Parity

InkkSlinger is a custom UI framework for MonoGame/DesktopGL with one primary objective:

achieve practical WPF parity as closely as possible across APIs, behavior, composition model, and authoring workflow.

This repository is framework-first. The files in Views/ are validation/demo surfaces used to exercise framework features and regressions, not the end product.

Why This Exists

WPF provides a strong UI model, but it is not directly available inside game-oriented rendering pipelines like MonoGame/DesktopGL.

This project closes that gap by bringing WPF-style composition into a real-time loop:

  • build desktop-style UI in a MonoGame host
  • preserve familiar WPF-like authoring patterns
  • validate behavior through parity-focused tests

For Who This Is

Me.

This framework is unapologetically opinionated. It exists to satisfy a very specific bar for architecture, behavior, and authoring feel.

Vision

Bring a WPF-like development model into a game/render-loop environment by implementing:

  • dependency properties and metadata-driven behavior
  • routed events and focus/input semantics
  • measure/arrange style layout composition
  • resources, styles, triggers, and templating
  • MVVM-style binding primitives
  • timeline/storyboard-driven animation
  • broad control coverage with regression tests

WPF Parity Position

Parity is treated as a long-running engineering target, not a marketing claim. The implementation is broad and deep, but intentionally explicit about gaps.

Parity Summary

This matrix is compiled from TODO.md completed work, concrete type coverage under UI/, and the current regression suite.

Area Implemented Parity Surface Evidence Status
Dependency property system Core DP registration, metadata callbacks/options, value source layering UI/Core/DependencyProperties/DependencyObject.cs, UI/Core/DependencyProperties/DependencyProperty.cs, UI/Core/DependencyProperties/FrameworkPropertyMetadata.cs Implemented
Routed event model Routed event registration/dispatch + routed args types UI/Events/Core/EventManager.cs, UI/Events/Core/RoutedEvent.cs, UI/Events/Args/* Implemented
Input + focus pipeline Input snapshots/delta, dispatch state, focus management integrated into root update UI/Input/Core/InputManager.cs, UI/Input/Core/FocusManager.cs, UI/Managers/Root/Services/UiRootInputPipeline.cs Implemented
UI dispatcher/phase model Deferred operations + strict frame phase ordering UI/Core/Threading/Dispatcher.cs, UI/Managers/Root/Services/UiRootFrameState.cs, InkkSlinger.Tests/DispatcherPhaseOrderTests.cs Implemented (tested)
Layout framework Measure/arrange across framework elements and panels UI/Controls/Base/FrameworkElement.cs, UI/Managers/Layout/LayoutManager.cs, UI/Controls/Panels/* Implemented
Visual tree utilities Tree traversal + hit-test support for input/render decisions UI/Managers/Tree/VisualTreeHelper.cs Implemented
Resource dictionaries Local/tree/app resource resolution with dictionary change notifications UI/Resources/Core/ResourceDictionary.cs, UI/Resources/Core/ResourceResolver.cs, UI/Resources/Types/ResourceDictionaryChangedEventArgs.cs Implemented
Application resource bootstrapping App.xml load path into UiApplication with implicit theme/style availability at host startup Game1.cs (LoadApplicationResourcesFromFile), App.xml, InkkSlinger.Tests/AppXmlResourcesTests.cs Implemented (tested)
Style system Style, Setter, implicit/explicit style application, BasedOn support UI/Styling/Core/Style.cs, UI/Styling/Core/Setter.cs, TODO.md (Completed Milestones) Implemented
Trigger framework Property/data/multi-data/event triggers + condition evaluation UI/Styling/Triggers/Trigger.cs, UI/Styling/Triggers/DataTrigger.cs, UI/Styling/Triggers/MultiDataTrigger.cs, UI/Styling/Triggers/EventTrigger.cs Implemented
Trigger action runtime SetValueAction + storyboard action family in trigger execution path UI/Styling/Actions/SetValueAction.cs, UI/Styling/Actions/StoryboardActions.cs, UI/Xaml/Core/XamlLoader.cs (BuildTriggerAction) Implemented
Framework services Core Freezable semantics (Freeze, CanFreeze, clone paths) across brushes/transforms/geometries/effects with immutable-sharing style/template assignment behavior UI/Core/Freezable.cs, UI/Resources/Types/Brush.cs, UI/Geometry/Core/Transform.cs, UI/Geometry/Core/Geometry.cs, UI/Styling/Effects/Effects.cs, UI/Styling/Core/StyleValueCloneUtility.cs, InkkSlinger.Tests/*Freezable*Tests.cs Implemented (tested)
Control templating ControlTemplate, template binding, template trigger engine UI/Templating/Core/ControlTemplate.cs, UI/Templating/Core/TemplateBinding.cs, UI/Templating/Core/TemplateTriggerEngine.cs Implemented
Data templating DataTemplate, selector, resolver pipeline UI/Templating/Data/DataTemplate.cs, UI/Templating/Data/DataTemplateSelector.cs, UI/Templating/Data/DataTemplateResolver.cs Implemented
Binding core Path, Source, ElementName, RelativeSource, modes and update triggers UI/Binding/Core/Binding.cs, UI/Binding/Core/BindingExpression.cs, UI/Binding/Core/BindingOperations.cs, UI/Binding/Types/BindingEnums.cs Implemented
Binding lifecycle robustness Rebind behavior on source/data-context/tree changes TODO.md (Completed Milestones: binding lifecycle robustness) Implemented
Routed commanding core RoutedCommand, command bindings, editing command catalog, can-execute/execute pipeline UI/Commanding/RoutedCommand.cs, UI/Commanding/CommandManager.cs, UI/Commanding/CommandBinding.cs, UI/Commanding/EditingCommands.cs, InkkSlinger.Tests/CommandingTests.cs Implemented (tested)
Gesture-to-command bridge Declarative InputBindings/KeyBinding/MouseBinding routing plus imperative InputGestureService.Register(...) keyboard/mouse registration, including menu-mode key routing integration UI/Input/Core/InputGestureService.cs, UI/Input/Types/KeyBinding.cs, UI/Input/Types/MouseBinding.cs, UI/Controls/Base/UIElement.cs, UI/Managers/Root/Services/UiRootInputPipeline.cs, InkkSlinger.Tests/CommandingTests.cs, InkkSlinger.Tests/MenuParityInputTests.cs Implemented (tested)
XAML/XML loader Runtime object graph construction, attached properties, handlers, bindings, templates, triggers UI/Xaml/Core/XamlLoader.cs Implemented
XAML diagnostics Element/attribute error reporting with contextual diagnostics UI/Xaml/Core/XamlLoader.cs, TODO.md (Completed Milestones: better diagnostics) Implemented
XML schema/tooling Authoring schemas for framework + x: namespace support Schemas/InkkSlinger.UI.xsd, Schemas/Xaml2006.xsd, TODO.md (Completed Milestones) Implemented
Name scope + source gen x:Name mapping via runtime scope + incremental generator UI/Core/Naming/NameScope.cs, InkkSlinger.XamlNameGenerator/XNameGenerator.cs, InkkSlinger.Tests/XNameSourceGeneratorTests.cs Implemented (tested)
Animation timeline system Timelines/storyboards, begin/stop/pause/resume/seek, handoff modes UI/Animation/Timelines/*, UI/Animation/Core/AnimationManager.cs, UI/Animation/Types/AnimationPrimitives.cs Implemented
Keyframe/easing support Double/color/point/thickness/int/object keyframes + easing/key-spline support UI/Animation/KeyFrames/*, UI/Animation/Easing/Easing.cs, UI/Animation/Types/* Implemented
Geometry and shapes Shape primitives + geometry/transform model + path markup parsing UI/Controls/Primitives/Shape.cs, UI/Geometry/Core/Geometry.cs, UI/Geometry/Core/Transform.cs, UI/Geometry/Parsing/PathMarkupParser.cs Implemented
Text layout primitives Shared text layout, wrapping, text rendering integration UI/Text/Core/TextLayout.cs, UI/Text/Types/TextWrapping.cs, UI/Rendering/Text/FontStashTextRenderer.cs Implemented
Text editing pipeline Selection/edit/clipboard buffer + textbox parity checks, plus rich document editing/undo/layout integration UI/Text/Editing/TextEditingBuffer.cs, UI/Text/Editing/TextSelection.cs, UI/Text/Editing/TextClipboard.cs, UI/Controls/Inputs/RichTextBox.cs, UI/Controls/Inputs/RichTextBox.FormattingEngine.cs, UI/Controls/Inputs/RichTextBox.Navigation.cs, UI/Controls/Inputs/RichTextBox.ListOperations.cs, UI/Controls/Inputs/RichTextBox.TableOperations.cs, InkkSlinger.Tests/TextEditingBufferTests.cs, InkkSlinger.Tests/TextPipelineParityTests.cs, InkkSlinger.Tests/RichTextDocumentTests.cs Implemented (tested)
Scrolling primitives ScrollViewer, ScrollBar, visibility and owner-scrolling behavior UI/Controls/Scrolling/ScrollViewer.cs, UI/Controls/Scrolling/ScrollBar.cs, InkkSlinger.Tests/ScrollViewerViewerOwnedScrollingTests.cs Implemented (tested)
Virtualization Virtualizing panel infrastructure for large item collections UI/Controls/Panels/VirtualizingStackPanel.cs, UI/Controls/Scrolling/VirtualizationEnums.cs, TODO.md (WPF Parity Gaps: virtualization checked) Implemented
Rendering invalidation Dirty region tracking + conditional draw scheduling UI/Rendering/DirtyRegions/DirtyRegionTracker.cs, UI/Managers/Root/Services/UiRootFrameState.cs, InkkSlinger.Tests/DirtyRegionTrackingTests.cs, InkkSlinger.Tests/ConditionalDrawTests.cs Implemented (tested)
Retained rendering + redraw scheduling Retained render-list sync, dirty-region tracking, and conditional draw scheduling UI/Managers/Root/Services/UiRootRetainedTree.cs, UI/Managers/Root/Services/UiRootDraw.cs, UI/Rendering/DirtyRegions/DirtyRegionTracker.cs, InkkSlinger.Tests/RenderQueueTests.cs, InkkSlinger.Tests/DirtyRegionTrackingTests.cs, InkkSlinger.Tests/ConditionalDrawTests.cs, InkkSlinger.Tests/RetainedRenderSyncRegressionTests.cs, InkkSlinger.Tests/RedrawSchedulingRegressionTests.cs, InkkSlinger.Tests/DirtyBoundsEdgeRegressionTests.cs Implemented (tested)
Render queue and invalidation correctness Queue ordering and invalidation semantics in root draw/update pipeline UI/Managers/Root/UiRoot.cs, InkkSlinger.Tests/RenderQueueTests.cs, InkkSlinger.Tests/InvalidationFlagsTests.cs Implemented (tested)
Adorner infrastructure Adorner base/layer/decorator + anchored/handles authoring helpers (AnchoredAdorner, HandlesAdornerBase) with clipping/tracking coverage UI/Controls/Adorners/*, InkkSlinger.Tests/AdornerClippingTests.cs, InkkSlinger.Tests/AdornerParityDepthTests.cs Implemented (tested)
Control breadth snapshot 74 implemented controls out of 77 tracked WPF controls TODO.md (## WPF Control Coverage, computed: 74/77) Broad
Container/windowing primitives Window, Popup, ContextMenu, ToolTip, UserControl, Viewbox UI/Controls/Containers/*, UI/Controls/Items/ContextMenu.cs, InkkSlinger.Tests/ContextMenuEdgeParityTests.cs Implemented (tested)
Item and data controls ListBox, ListView, TreeView, Menu, DataGrid families UI/Controls/Items/*, UI/Controls/DataGrid/*, TODO.md (Current Workstream Snapshot) Implemented (ongoing depth)
Runtime telemetry/diagnostics UiRoot frame/draw/layout telemetry snapshot surfaces UI/Managers/Root/UiRootTypes.cs, UI/Diagnostics/*, InkkSlinger.Tests/UiRootTelemetryTests.cs Implemented (tested)
Regression safety net 142 focused test files covering core pipeline/regressions InkkSlinger.Tests/*Tests.cs (142 files) Implemented

Implemented Foundations

  • Dependency property system (DependencyObject, DependencyProperty, metadata/value-source model)
  • Routed event infrastructure (EventManager, routed args and routing strategies)
  • Input/focus pipeline integrated with UI update loop
  • Layout system across base elements and panel/control composition
  • XML markup loading via XamlLoader
  • Resources, styles, setters, triggers, and visual state primitives
  • Binding primitives (Path, Source, ElementName, RelativeSource)
  • Templates (ControlTemplate, DataTemplate, selectors/resolvers)
  • Storyboards, timelines, keyframes, easing, and animation manager
  • Virtualization primitives (VirtualizingStackPanel and scrolling infrastructure)
  • Transform-based ScrollViewer content scrolling for plain panel hosts by default, with attached-property opt-out (ScrollViewer.UseTransformContentScrolling="False")
  • Dirty-region-aware rendering with retained-list synchronization and conditional draw scheduling in UiRoot/UI/Rendering
  • Tooling support via schemas and x:Name source generation

Not Yet Implemented / Out of Scope (For Now)

This matrix is compiled from a full pass over TODO.md, UI/ source limitations (not supported guards), schema coverage, and missing-type checks.

Area Gap / Limitation Evidence State
Control coverage InkCanvas TODO.md (## WPF Control Coverage) Not implemented (bounty #3)
Control coverage InkPresenter TODO.md (## WPF Control Coverage) Not implemented (bounty #3)
Control coverage MediaElement TODO.md (## WPF Control Coverage) Not implemented (bounty #5)
Parity track Advanced adorner/layout composition depth TODO.md (## WPF Parity Gaps) Implemented
Parity track Windowing/popup edge parity and interaction depth TODO.md (## WPF Parity Gaps) Implemented
Data/view layer WPF CollectionView stack (current item/filter/sort/group) with CollectionViewSource UI/Binding/Collections/*, UI/Controls/Base/ItemsControl.cs, UI/Xaml/Core/XamlLoader.cs, InkkSlinger.Tests/CollectionViewCoreTests.cs, InkkSlinger.Tests/XamlCollectionViewParserTests.cs Implemented (tested)
XAML binding parser Unrecognized binding attributes are rejected UI/Xaml/Core/XamlLoader.cs (BuildBindingElement), InkkSlinger.Tests/XamlBindingParserTests.cs Implemented (tested)
XAML binding parser Unrecognized binding keys are rejected UI/Xaml/Core/XamlLoader.cs (ParseBinding), InkkSlinger.Tests/XamlBindingParserTests.cs Implemented (tested)
XAML RelativeSource parser Mixed positional/named syntax, strict mode/key validation, and Binding.RelativeSource property-element parsing UI/Xaml/Core/XamlLoader.cs (ApplyRelativeSource, ApplyBindingRelativeSourcePropertyElement), InkkSlinger.Tests/XamlBindingParserTests.cs, InkkSlinger.Tests/RelativeSourcePreviousDataTests.cs Implemented (tested)
XAML resources DynamicResource markup support across attribute-based dependency/attached properties, style setters, trigger setters, and trigger actions UI/Xaml/Core/XamlLoader.cs, UI/Styling/Core/Style.cs, UI/Templating/Core/TemplateTriggerEngine.cs, UI/Styling/Actions/SetValueAction.cs Implemented
XAML language Practical markup-extension core (x:Static, x:Type, x:Null, x:Reference + existing binding/resource/template forms) UI/Xaml/Core/XamlLoader.cs, InkkSlinger.Tests/XamlMarkupExtensionTests.cs Implemented
XAML language Compile-time metadata extensions core (x:Class, x:FieldModifier, x:ClassModifier) InkkSlinger.XamlNameGenerator/XNameGenerator.cs, UI/Xaml/Core/XamlLoader.cs, InkkSlinger.Tests/XNameSourceGeneratorTests.cs, InkkSlinger.Tests/XamlCompileDirectiveCompatibilityTests.cs Implemented (project scope)
XAML tooling Project compile-time XML/code-behind generation (InitializeComponent + named-field wiring) InkkSlinger.XamlNameGenerator/XNameGenerator.cs, Views/*.xml, Views/*.xml.cs Implemented (project scope)
Resources/XAML Full merged-dictionary authoring + WPF merge edge semantics (ResourceDictionary.MergedDictionaries, Source chaining, cycle safety, reverse merge precedence) UI/Resources/Core/ResourceDictionary.cs, UI/Xaml/Core/XamlLoader.cs, InkkSlinger.Tests/ResourceDictionaryMergedSemanticsTests.cs, InkkSlinger.Tests/XamlResourceDictionarySourceTests.cs Implemented (tested)
Styling/XAML Trigger actions support SetValueAction, BeginStoryboard, StopStoryboard, PauseStoryboard, ResumeStoryboard, SeekStoryboard, RemoveStoryboard, SetStoryboardSpeedRatio, and SkipStoryboardToFill UI/Xaml/Core/XamlLoader.cs (BuildTriggerAction) Implemented
Styling API MultiTrigger UI/Styling/Triggers/MultiTrigger.cs, InkkSlinger.Tests/MultiTriggerTests.cs Implemented (tested)
Styling API EventSetter UI/Styling/Core/EventSetter.cs, UI/Xaml/Core/XamlLoader.cs, UI/Styling/Core/Style.cs, InkkSlinger.Tests/EventSetterTests.cs Implemented (tested)
Commanding/Input API Declarative InputBinding model with KeyGesture + MouseGesture (KeyBinding/MouseBinding) UI/Input/Types/InputBinding.cs, UI/Input/Types/KeyBinding.cs, UI/Input/Types/KeyGesture.cs, UI/Input/Types/MouseBinding.cs, UI/Input/Types/MouseGesture.cs, UI/Controls/Base/UIElement.cs Implemented
Commanding API RoutedUICommand surface UI/Commanding/RoutedUICommand.cs, InkkSlinger.Tests/CommandingTests.cs (RoutedUICommand_Xaml_MenuHeaderAndGestureAndExecution_IntegrateEndToEnd) Implemented (tested)
Commanding API ICommandSource ecosystem parity across controls UI/Commanding/ICommandSource.cs, UI/Commanding/CommandTargetResolver.cs, UI/Commanding/CommandSourceExecution.cs, InkkSlinger.Tests/CommandingTests.cs, InkkSlinger.Tests/RichTextCommandingTests.cs, InkkSlinger.Tests/DocumentViewerCommandingTests.cs, InkkSlinger.Tests/MenuParityInputTests.cs Implemented (tested)
Container behavior UserControl supports custom ControlTemplate (WPF-strict template path; content is surfaced through ContentPresenter) UI/Controls/Containers/UserControl.cs, InkkSlinger.Tests/UserControlTemplateParityTests.cs Implemented (tested)
Geometry path parser Path commands S/s, T/t, A/a are supported with flattened-geometry output UI/Geometry/Parsing/PathMarkupParser.cs, InkkSlinger.Tests/PathMarkupParserParityTests.cs Implemented (tested)
Text pipeline Virtual wrapped text layout optimization is enabled for wrapped layouts with finite positive width and guarded by resize/input regressions UI/Controls/Inputs/TextBox.cs (CanUseVirtualWrappedLayout), InkkSlinger.Tests/ViewportResizeInputRegressionTests.cs, InkkSlinger.Tests/InputDispatchOptimizationTests.cs Implemented (tested)
Layout parity Core layout rounding parity (UseLayoutRounding-style behavior) for measure/arrange slot rounding with inherited DP semantics UI/Controls/Base/FrameworkElement.cs, UI/Controls/Base/UIElement.cs, InkkSlinger.Tests/UseLayoutRoundingTests.cs Implemented (core scope)
Input stack Touch/stylus/tablet pipelines No corresponding types under UI/Input; explicitly unsupported until InkCanvas/InkPresenter are implemented Unsupported until InkCanvas/InkPresenter
Accessibility Internal UI automation/AutomationPeer layer with tree sync, attached automation metadata, pattern providers, and coalesced automation events UI/Automation/*, UI/Managers/Root/UiRoot.cs, UI/Managers/Root/Services/UiRootFrameState.cs, UI/Managers/Root/Services/UiRootInputPipeline.cs Implemented (internal runtime scope)
Rendering parity Pixel-identical WPF rendering/composition fidelity Framework targets MonoGame parity behavior, not WPF pixel-clone output Out of scope

Bounty note: if nobody picks up the open bounties for InkCanvas, InkPresenter, and MediaElement, I will implement them myself after I finish the rest of the current priority queue.

UI Architecture Map

The following reflects UI-FOLDER-MAP.md (generated 2026-03-07):

  • UI/Animation: timelines, keyframes, easing, animation orchestration
  • UI/Binding: bindings, expressions, operations, command helpers
  • UI/Commanding: routed command infrastructure and shared editing command definitions
  • UI/Controls: base layer + buttons, containers, data grid, inputs (including split rich-text editing modules), items, panels, primitives, scrolling, selection, adorners
  • UI/Core: dependency properties, naming, dispatcher
  • UI/Events: routed event core, args, routing strategy
  • UI/Geometry: geometry and transform primitives + path parsing
  • UI/Input: focus/input managers and input state snapshots
  • UI/Layout: shared layout types (Thickness, alignment, orientation, etc.)
  • UI/Managers: layout manager, visual tree helper, UiRoot services and diagnostics
  • UI/Rendering: draw pipeline, dirty regions, text renderer
  • UI/Resources: dictionaries and resolution/application resources
  • UI/Styling: styles, setters, visual states, triggers, trigger actions
  • UI/Templating: control/data templates and trigger engine
  • UI/Text: text layout, flow-document model/editing/serialization, and rich document layout engine
  • UI/Xaml: runtime XML loading

Runtime Model

At runtime, the framework generally flows as:

  1. Input update and routing
  2. Animation update
  3. Layout pass when required
  4. UI tree update
  5. Conditional draw pass based on invalidation/redraw reasons
  6. If draw is scheduled: dirty-region or full-frame composition; otherwise host-level draw suppression

This keeps behavior deterministic while reducing unnecessary redraw work for large trees.

Markup Model

  • Markup files use .xml (WPF-inspired structure with x: support)
  • x:Name is supported and mapped to generated members
  • Schemas for editor assistance:
    • Schemas/InkkSlinger.UI.xsd
    • Schemas/Xaml2006.xsd

Build and Test

Prerequisite:

  • .NET SDK 10.x recommended
dotnet restore InkkSlinger.sln
dotnet build InkkSlinger.sln -c Release -v minimal
dotnet test InkkSlinger.Tests/InkkSlinger.Tests.csproj -c Release -v minimal

Test Environment

Primary validation machine for current development/testing:

  • OS: Windows 10 Pro (10.0.19045, 64-bit)
  • CPU: Intel Core i7-5600U @ 2.60GHz (2 cores / 4 logical processors)
  • RAM: 12 GB
  • GPU: Intel HD Graphics 5500

Running the Host Application

Mode Command
Current host mode dotnet run --project InkkSlinger.csproj

Current default launch surface is ControlsCatalogView. Legacy per-demo CLI mode switches were removed from host startup wiring.

Runtime Configuration

Environment-variable runtime switches were removed from the codebase. Runtime behavior is now controlled directly by in-code defaults and properties (for example Game1 and UiRoot setup).

Clipboard Interop Notes

  • TextClipboard maintains app-local plain/rich payloads and performs external clipboard sync for plain text.
  • On Windows runtime builds, external plain-text reads use a native Win32 clipboard path first, with PowerShell fallback only if native read fails.
  • Rich payloads (XamlPackage/Xaml/custom flow-doc format) remain app-local and are intentionally cleared when external plain text changes, preventing stale rich payload reuse.

Notes

  • The framework tracks parity gaps in TODO.md.
  • Usage is permission-based. See LICENSE and USAGE-PERMISSION-POLICY.md.

License and Usage

This repository is source-available under a permission-based model:

  • Default: permitted for non-commercial use under LICENSE
  • Commercial use: subscription, one-time perpetual option, or written waiver/grant (see LICENSE and USAGE-PERMISSION-POLICY.md)
  • If you make money from a product using InkkSlinger, assume commercial use
  • Significant contributors may be granted a free lifetime commercial license at maintainer discretion

Contributing and Governance

  • Contributing guide: CONTRIBUTING.md
  • Governance model: GOVERNANCE.md

Commercial License FAQ

  • See COMMERCIAL-LICENSE-FAQ.md for scenario-based examples