Skip to content

Releases: kwhorne/elyra-framework

Elyra Framework 0.3.1

Choose a tag to compare

@kwhorne kwhorne released this 14 Jul 11:13

A feature-rich point release: Elyra gains a built-in AI SDK plus the last of the Electron-parity desktop features.

Added

AI SDK (ai feature)

A new Laravel-inspired elyra-ai crate, re-exported as elyra::ai. Keys stay in the Rust backend.

  • Agents — anonymous (ai.chat().instructions(…).prompt(…)) and named (impl Agent + ai.prompt(&agent, …)).
  • ToolsTool trait with an automatic tool-use loop across both providers.
  • Sub-agents — an Agent used as a tool (sub_agent / AgentTool); delegates run in isolation.
  • Structured outputprompt_as::<T>() via serde + schemars.
  • Streamingstream() yields StreamChunks (SSE), ideal for piping to the event bus.
  • Imagesai.image(prompt).landscape().generate() (OpenAI gpt-image-1).
  • Embeddingsai.embeddings([...]).generate().
  • Vector store (RAG) — in-memory VectorStore + cosine_similarity, portable across the sqlx Any driver.
  • AiProvider binds an env-configured Ai client into the container.

Default provider Anthropic (claude-sonnet-5); images gpt-image-1; embeddings text-embedding-3-small. See docs/ai.md.

Single-instance & deep-linking

  • App::single_instance() — later launches focus the running window and forward their command line on elyra:second-instance, then exit (portable loopback rendezvous + handshake).
  • App::deep_link("myapp") — launch URL via deepLink.initial(), later URLs on elyra:deep-link (macOS open-URL event; Windows/Linux scheme registration). See docs/single-instance.md.

Notes

Everything is compiled, clippy-clean, and tested (21 suites; SQLite locally, MySQL/Postgres in CI, runtime typechecked with TypeScript 7). AI live calls are exercised only with ELYRA_AI_LIVE=1 and keys — they were not run in CI or during development (no keys present), so the live provider path is documented as unverified. RAG ranks in-process by design (the Any driver has no pgvector).

Full changelog: https://github.com/kwhorne/elyra-framework/blob/main/CHANGELOG.md · MIT licensed.

Elyra Framework 0.3.0

Choose a tag to compare

@kwhorne kwhorne released this 14 Jul 08:29

A big step toward being a Rust + Svelte alternative to Electron. On top of the core (typed IPC, events, database/models, codegen, About + auto-update), 0.3.0 adds the native desktop APIs apps actually need.

Added

System integration (system)

Native file dialogs (dialog.open/save), open in OS (shell.openExternal), clipboard (clipboard.readText/writeText), notifications (notify), and standard paths.

UI components (@elyra/runtime)

Themed, dependency-free alert / confirm / prompt dialogs, toast() notifications, a ⌘K command palette (registerCommands), and contextMenu().

Windows

Frontend window control (appWindow: minimize/maximize/fullscreen/close/focus/…) with live state, native file drop (onFileDrop), and opt-in window-state persistence (App::persist_window_state).

Native app menu

App::menu(…) adds custom submenus (with accelerators) that emit elyra:menu (onMenu). Rendered on macOS.

Global shortcuts (shortcuts)

App::global_shortcut("CmdOrCtrl+Shift+P")onShortcut.

Settings store

A persistent key-value store (get/set/delete/all/clear), also Store in the container.

Autostart (autostart)

Launch at login: autostart.enable() / disable() / isEnabled().

Sidecar processes (sidecar)

Spawn + stream child processes: sidecar.spawn/write/kill with stdout/stderr/exit on onSidecar.

Notes

Everything is compiled, clippy-clean, and tested (SQLite locally; MySQL/Postgres in CI; runtime typechecked with TypeScript 7). GUI/OS integrations are launch-smoked; visual or side-effecting steps are documented as unverified. Native menu bars on Windows/Linux, single-instance, and deep-linking are planned next.

Full changelog: https://github.com/kwhorne/elyra-framework/blob/main/CHANGELOG.md · MIT licensed.

Elyra Framework 0.2.0

Choose a tag to compare

@kwhorne kwhorne released this 13 Jul 20:04

Second release of Elyra Framework. Builds on 0.1.0 with codegen fidelity, richer models, real cross-database testing, and a full dependency refresh.

Added

  • Models — relation auto-hydration. Declare a relation on a field (#[model(has_many(Book, fk = "author_id"))] books: Vec<Book>) and a generated with_<field> batch hydrator fills it in one query — no more joining a HashMap by hand. Works for has_many (Vec<T>) and has_one/belongs_to (Option<T>; belongs_to targets must be Clone).
  • Models — non-i64 primary keys. A single-column key may now be any type (e.g. String), marked #[model(id)]; app-supplied, included in the INSERT, and find takes that key type. The i64 autoincrement path is unchanged. Composite keys remain unsupported.
  • Models — column-aware belongs_to. Owners are looked up against the related model's actual PK column (<T>::PK) and the child FK is read by column name, so relations work when the owner's PK column is renamed.
  • Codegen — serde attributes. Types export through specta-serde: rename/rename_all, tagged & untagged enums (as discriminated unions), flatten (as intersections), and skip are now reflected in the generated TypeScript. Elyra's numeric policy (i64/floats → number) still applies on top.
  • Database tests in CI. Model CRUD runs against real MySQL 8 and Postgres 16 service containers, covering per-driver placeholders (? vs $n) and key retrieval (last_insert_id vs RETURNING). Opt-in locally via ELYRA_TEST_MYSQL_URL / ELYRA_TEST_POSTGRES_URL.

Changed

  • Updater: UpdaterConfig::auto_check now defaults to false — the startup check (and its toast) is opt-in via .auto_check(true).
  • Dependencies: refreshed to latest — sqlx 0.9 (dynamic SQL wrapped in AssertSqlSafe), ureq 3, ed25519-dalek 3, tray-icon 0.24 + muda 0.19.
  • Tooling: CI typechecks the runtime with TypeScript 7 on Node 24; @msgpack/msgpack bumped to ^3.1.3.
  • Docs: clarified that code signing, notarization, and binary distribution are the application's responsibility, not the framework's.

Full changelog: https://github.com/kwhorne/elyra-framework/blob/main/CHANGELOG.md · Licensed under MIT.

Elyra Framework 0.1.0

Choose a tag to compare

@kwhorne kwhorne released this 13 Jul 19:06

First public release of Elyra Framework — a Rust + Svelte 5 framework for hyper-responsive desktop apps. Laravel's ergonomics (container, providers, middleware, a typed bridge), but compiled, binary, and without runtime overhead.

Highlights

  • Binary IPC — MessagePack over an elyra://localhost custom protocol; no JSON in the hot path.
  • #[command] async fn dispatched through a middleware pipeline, with a container and providers.
  • EventBus + channel() — batched Rust→frontend push over a long-poll; the UI thread never blocks.
  • Typed bridgerata codegen turns specta types into TypeScript + a typed api.* facade.
  • Windows, tray, updater — multi-window, system tray, and an ed25519-verified updater.
  • Built-in UI components — a themed About dialog (App::about) and an auto-update toast (App::updater), each wired from one builder call.
  • Data — one Database over SQLite / MySQL / Postgres, rata migrate, and #[derive(Model)] Active Record with a query builder and relations.
  • Ratatosk (rata)new, dev, codegen, build, bundle, migrate.

Quick start

rata new myapp
cd myapp
(cd app && npm install && npm run build)
rata codegen
cargo run

See the documentation and the full changelog.

Verification

Compiled, clippy-clean, and tested (SQLite for the database layer). GUI/OS integrations are launch-smoked; visual or side-effecting steps (bundling, notarization, live self-update) are documented as unverified.

Licensed under MIT.