Engiware

by Green Pipe Partners LLC
5
4
3
2
1
Score: 50/100

Description

Engineering component packages and image-first, on-demand 3D previews for Obsidian.

Reviews

No reviews yet.

Stats

0
stars
65
downloads
0
forks
25
days
23
days
23
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
10
commits

Latest Version

24 days ago

Changelog

Engiware 0.6.2 — shared standalone Engispark runtime

  • Use @greenpipepartners/engispark 0.2.0 from its versioned GitHub Release. The package loader, native binding evaluator, SVG/DOM renderer and native-view CSS are shared with the standalone browser player.
  • The independent source is https://github.com/GreenPipePartners/engispark; the hosted player is https://greenpipepartners.github.io/engispark/.
  • Bundle the shared library and its stylesheet into the plugin for offline use. Engispark package bytes and native Ignition export resources remain compatible.

This public release also includes the work developed since 0.4.0: interactive SVG samples and native Ignition extraction, termination guides and ferruled-wire capacity inspection, literal family identities, and assembly-sized Engibook archives. The development milestones below describe those additions.

Engiware 0.6.1 — animate the component's own SVG lamp

  • Render native ia.shapes.svg Drawing resources and indexed Perspective property paths such as props.elements[32].elements[0].fill.paint.
  • The revised DC OK Engispark reuses the Engibook's existing 1606-XLE240E-panel.svg, cropped to the operator face. One Boolean drives the original lamp's fill and outline; all 510 SVG paths, 306 transforms and 32 labels remain intact.
  • Engispark 0.2.0 records the source SVG hash and the original Excalidraw lamp element 861f0e79. The original SVG is included in its artwork inventory.
  • [email protected] adds bounded SVG element rendering; 0.1.0 packages remain readable. SVG scripts, external resources and unsupported attributes are rejected before rendering.

Engiware 0.6.0 — native Perspective Engispark pilot

  • Open .engispark packages or embed an engispark code block in an Engibook note.
  • Sample view reads the enclosed Ignition project ZIP's native view.json; flex layout, labels, checkbox, indirect tag/property bindings and map transforms drive the sample directly. The initial profile is [email protected].
  • The 1606-XLE240E sample has one Boolean reference: true → green / DC OK, false → red / DC NOT OK. Each sample has its own resettable in-memory tag store.
  • Extract Ignition files exports the original Designer project ZIP and native tag JSON byte-for-byte, plus import instructions. Existing different exports are not overwritten.
  • Inventory hashes, bounded archives and explicit profile checks run before displaying a sample. Closing, unloading or replacing a card releases its state and listeners. Engibook packaging validates package: references.

This is a local prototype release. The basic profile runs in the Obsidian renderer; the Node-hosted Gateway/Fluxy service and Python 3 scripting runtime are follow-on work. See ENGISPARK.md for the supported native subset and package contract.

Engiware 0.5.3 — explicit wire-gauge limits

  • Termination details state Maximum ferruled wire: … AWG, alongside the mm² maximum and remaining ferrule conditions.
  • max_ferruled_wire_awg records the largest permitted conductor. awg_limit_basis distinguishes manufacturer ferrule ratings from conservative area-derived limits; unknown and N/A remain explicit.
  • wireEndFromAwg() constructs an AWG-specific request. Sized checks account for AWG's reversed numbering, reject conflicting AWG/area declarations, and enforce the limit at both ends. Aught sizes use 1/0 through 4/0.

Engiware 0.5.2 — ferruled conductor capacity

  • Select a termination vector to inspect its single-ferrule maximum area, collar, crimped-envelope and barrel-length conditions, and manufacturer evidence.
  • Additive [email protected] metadata keeps electrical ratings independent of geometric eligibility. Earlier GLBs remain viewable; missing, malformed, provisional and unknown ratings cannot authorize sized wire routing.
  • Sized resolution checks both ends and physical-clamp occupancy. Copper conductors require one ferrule per clamp; bare ends and twin ferrules are excluded by this profile. Lug seats, crimp barrels and connectors retain explicit interface types.

Engiware 0.5.1 — local library vector review

Keeps labels selectable when a small component's outward arrow extends beyond the viewport. Dense terminal labels are spaced with screen-space leader lines; physical anchor positions, directions, routing eligibility and model bounds are unchanged. Reviewed against the library-wide component and panel vector rollout.

Engiware 0.5.0 — local termination-anchor pilot

Adds Show terminations to models carrying the draft [email protected] profile. Meshless GLB nodes provide entry points, outward directions, stable terminal IDs and evidence metadata. The on-demand overlay uses those frames for targets, arrows and selectable labels. Provisional points are marked in amber and explicitly excluded from routing lookup. Helpers start hidden, leave physical model bounds intact and are disposed with the viewer.

The initial review asset is AB_1492-J4_1.1.0-draft.1.engibook. This local build retains the 0.4.2 package-size support below; no public release is implied.

Engiware 0.4.2

Supports full-panel Engibooks with 1 GiB archive / 2 GiB expanded limits and up to 1 GiB per member. The importer, file picker, package view, and Python packager use the same limits. Format v1/v2 inventories, SHA-256 validation, version handling, and the 512-entry limit continue to apply.

Engiware 0.4.0

Adds standardized, versioned Engibooks and a configurable component library.

  • Name packages providerCode_partNumber_engibookVersion.engibook, for example AB_1606-XLE240E_1.0.0.engibook. Preserve hyphens inside part numbers.
  • Deploy all content versions to the stable providerCode_partNumber note and asset ID. Content versions use semantic-version ordering.
  • Add Deployment directory in Engiware settings, defaulting to EngiLib. Support nested library folders and a blank setting for the vault root, with asset links adjusted for the chosen directory.
  • A newer content version replaces packaged destination files, including local edits. Files absent from the new inventory remain in place.
  • Reject downgrades and different package contents reusing a version number. Resume interrupted deployments using a temporary import record; commit the installed version after the assets and entry note.
  • Add format v2 metadata, a versioned demonstration, and a read-only-to-vault Python packager. Legacy format v1 imports remain supported.

Requires Obsidian 1.8.7 or later. Update through Community plugins or BRAT. For manual installation, download the three release files into your vault's .obsidian/plugins/engiware/ directory, reload Obsidian, and enable Engiware.

The original MIT-licensed GPP_Demo-Component_1.0.0.engibook is available from the repository. Import it through Engiware: Import .engibook.

README file from

Github

Engiware

Packaged engineering components and lightweight, expandable 3D previews for Obsidian.

Keep component notes, manuals, scaled drawings, schematics, and models together. Engiware imports a single .engibook package into ordinary vault files and shows component images that expand into optional 3D views.

Install

Requires Obsidian 1.8.7 or later.

Community directory

Open Settings → Community plugins → Browse, search for Engiware, then select Install and Enable. You can also open the Engiware listing and select Add to Obsidian.

The listing is published under Green Pipe Partners LLC. Version 0.4.0 passed Obsidian's automated review with no warnings or recommendations, verified artifact attestations, and a byte-for-byte reproducible build.

New listings can take time to reach the in-app catalogue: Obsidian mirrors its community directory to the app's catalogue on an hourly schedule. If Engiware does not appear in Browse yet, fully quit and reopen Obsidian after the catalogue sync to refresh the app's cached list.

BRAT

In BRAT, choose Add beta plugin and enter:

https://github.com/GreenPipePartners/obsidian-engiware

Then enable Engiware under Settings → Community plugins.

Manual installation

Create <vault>/.obsidian/plugins/engiware/ and download these three files from the latest release into that folder:

Reload Obsidian and enable Engiware. All runtime dependencies are bundled.

Try the demonstration

Download GPP_Demo-Component_1.0.0.engibook, then run Engiware: Import .engibook from the command palette and select it. You can also copy an .engibook into a vault, open it, and choose Deploy and open.

The demo contains an original 40 × 80 × 30 mm model, a scaled SVG front view, an illustrative contact schematic, a guide, and a preview image, all MIT-licensed.

Component packages

Engibooks use {provider_code}_{part_number}_{engibook_version}.engibook. Underscores separate the fields; hyphens within a part number are preserved. For example, AB_1606-XLE240E_1.0.0.engibook uses AB for Allen-Bradley.

With 0.4.1+, shared families can use literal balanced brace groups, such as AB_5069-L3{xx}ER{M}_1.0.0.engibook. Use the note's associated_part_numbers list to enumerate exact members and keep their SKU-specific specifications separate. See shared component families.

The content version is independent of the plugin version. All versions of that part deploy to the stable ID AB_1606-XLE240E. The default layout is:

EngiLib/
├── AB_1606-XLE240E.md
└── Assets/AB_1606-XLE240E/
    ├── schematic/
    ├── manuals/
    ├── 2d_scaled_component/
    ├── 3d_rendered/
    ├── asset-provenance.json
    └── engibook.json

Choose the folder under Settings → Engiware → Deployment directory. It defaults to EngiLib; nested folders are supported, and an empty value uses the vault root. The setting applies to subsequent imports. Asset links are adjusted for the chosen location, including PDF anchors and the image/GLB paths.

The extracted note and assets work as native vault files. Obsidian can link, index, edit, and sync them. PDF files open in the native viewer; editable .excalidraw.md drawings use the separate Excalidraw community plugin.

Engiware validates the inventory and hashes before deployment. A newer content version replaces the files listed in its package, including local edits. Files absent from the new inventory stay in place. Identical packages can be reimported without rewriting files; older versions and conflicting reuse of a version number are rejected. Interrupted deployments can be resumed by importing the package again. The installed version is committed after the assets and note.

New versioned packages use format v2, supported by Engiware 0.4.0+. Legacy v1 packages can still be imported. The archive is a snapshot; editing extracted files does not rewrite it.

See Engibook format and packaging to create your own packages.

Sample a Perspective view

Engiware 0.6.2 embeds a native Perspective view as an interactive utility. The 1606-XLE240E pilot uses the existing 2D component SVG: one Boolean changes its actual DC OK lamp between green and red.

The runtime is maintained independently at https://github.com/GreenPipePartners/engispark. Try the same package in the standalone player at https://greenpipepartners.github.io/engispark/. Engiware bundles the versioned @greenpipepartners/engispark library and shared CSS, so embedded samples also work offline.

```engispark
package: EngiLib/Assets/AB_1606-XLE240E/schematic/AB_1606-XLE240E-DC-OK_0.2.0.engispark
```

Select Sample view, then toggle DC OK signal. Reset sample restores the packaged value. Opening the .engispark file directly starts the sample too. Extract Ignition files writes the enclosed native project ZIP, native tag JSON and README under <deployment directory>/Exports/ for Designer import.

The preview evaluates the exact view.json from the import ZIP. The current native profile covers SVG Drawings, flex containers, labels, checkboxes, direct/indirect tag bindings, indexed view-property bindings, bidirectional writes and scalar map transforms. Unsupported native behavior produces an explicit compatibility error. See Engispark format and runtime for boundaries and rebuild steps.

Expand an image into 3D

Models with [email protected] nodes expose Show terminations in the expanded viewer. Guides start hidden. Select a terminal label to inspect its connection kind, evidence status, entry position, outward direction and routing eligibility. Amber ? labels identify provisional locations. The overlay is generated from meshless GLB nodes and does not change physical model bounds. Existing GLBs continue to display normally.

Termination metadata may additionally carry [email protected]. The inspector states Maximum ferruled wire: … AWG, its manufacturer or conservative area-derived basis, the maximum copper area in mm², collar, applicable crimped-envelope/barrel-length limits, and manufacturer evidence. Ratings are independently verified, provisional, unknown, or N/A. A geometric frame's eligibility does not establish its conductor capacity.

wireEndFromAwg() creates AWG-specific requests. checkWireCapacity() checks the explicit largest-conductor gauge, preparation and recorded limits; resolveWireTerminations() checks both ends, including shared physical-clamp occupancy and geometric eligibility. Bare ends, twin ferrules, unknown ratings, missing required ferrule dimensions and ineligible frames cannot authorize a sized route. The earlier no-wire resolveTermination() call is geometry-only inspection.

Add an engiware code block to a note:

```engiware
model: EngiLib/Assets/GPP_Demo-Component/3d_rendered/model.glb
image: EngiLib/Assets/GPP_Demo-Component/3d_rendered/preview.svg
title: Demo component
height: 420
```
Field Meaning
model Vault path to a self-contained GLB
image Vault path to a preview image
title Optional title; defaults to the model filename
height Optional inline image height, 180–800 CSS pixels; default 420

Reading view and Live Preview display an ordinary image. Click Expand, or focus the image and press Enter/Space, to initialize the optional viewer. Drag to orbit, scroll or pinch to zoom, and right-drag to pan. Reset view fits the camera to the model without changing its geometry, axes, or scale.

Image, Esc, or closing the modal releases its 3D resources.

If the normal graphics attempt fails, the expanded image stays visible with a Try 3D anyway? confirmation. Choose Keep Image, or Try 3D anyway to allow the browser's available WebGL 2 implementation, including software rendering where supported. The retry uses reduced quality (640 px, up to 10 fps, no antialiasing) and may be slow. No model is read or decoded while the confirmation is open. The choice applies to that attempt; it does not change your saved settings. If WebGL 2 is still unavailable, the image remains usable with an explanation. No hardware-vendor configuration is required.

Performance settings

Under Settings → Engiware:

  • Image-only mode: expand images without initializing any 3D renderer.
  • 3D render size: cap the longest rendered edge at 640, 960, or 1280 pixels.
  • Interaction frame limit: 10–30 fps, with 20 fps as the default.

On Obsidian 1.13 or later, these controls also appear in the global settings search. Earlier supported versions render the same controls in Engiware's tab.

Views render on demand with no idle animation loop. Closing or switching to the image cancels pending work and disposes graphics resources. The renderer lowers resolution and the interaction frame limit after slow draws, and shows a warning if they remain slow. It keeps the 3D view available until you switch back to the image. Graphics errors or a lost WebGL context still return to the image. GLBs must embed their resources; external texture downloads and external compression decoders are not used.

Privacy and file access

Engiware works offline, makes no network requests, and includes no telemetry, accounts, payments, or advertisements. The import command reads the local .engibook or .zip file you explicitly select, including a file outside the vault. It writes extracted files only into the current vault through Obsidian's public Vault API. Preview images and models are read from the vault. During an import, Engiware checks the immediate children of the package's destination folders and their parents for file/folder and case-insensitive name collisions before writing any package contents. These checks are scoped to the component's destination paths.

Development and support

Development checks require Node.js 22.18+ and Python 3.10+ (the packager uses only Python's standard library). Python is not needed to install or use the plugin.

npm ci
npm run verify

See CONTRIBUTING.md for development and release instructions. Builds and tests are self-contained. Runtime checks have been performed on Obsidian 1.13.7 for Linux, including graphics confirmation and retry, simulated slow draws and no-WebGL image fallback, PDF/Excalidraw compatibility, configurable deployment paths, versioned replacement, interrupted-upgrade resumption, import conflicts, cancellation, and resource cleanup. Mobile runtime testing is still pending; the plugin uses browser-compatible APIs.

Report bugs or request features in GitHub issues.

License

Copyright © 2026 Green Pipe Partners LLC. MIT. See third-party notices for Three.js and fflate attribution.