Skip to content

Releases: Danroyal001/dartvel_dev

Dartvel 0.9.3

Choose a tag to compare

@Danroyal001 Danroyal001 released this 29 Sep 20:04

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.

This release has Linux binaries only (amd64 and arm64). GitHub Actions is billing-locked on Danroyal001, so they were built by hand; macOS and Windows binaries need those hosts and are added when the release workflow runs for v0.9.3.

Highlights:

  • Security: Studio never renders for a signed-out visitor. A signed-out request for <mount>/index.html used to get Studio's screens (never its data). Every Studio document path now redirects to sign-in without the Studio grant. Upgrade and redeploy if Studio is enabled.

  • Studio lists every page the application has. Pages lists compiled routes from the route manifest alongside stored pages (marked Code, Studio or Override). A compiled page opens read-only as its content or captured structure; Edit this page creates an override that takes the route over when deployed, and Restore compiled page deletes it. dartvel admin generate opens DVStudioInApp over the project's own routes and models, and the router generates dartvelPagePreview.

  • Data models are designed in Studio. A model's name, key, fields and their types, rules (smallest, largest, shortest, longest, pattern, unique), relations, indexes and who may use its data are created and edited in Studio's Data section, stored as a definition beside its records and served at once. Designed models have an instant data API at /_dartvel/data/<Model> governed by access policies, and on dartvel dev can be written to lib/models as @DVModel declarations.

  • Upstream Shelf adapter: package:dartvel_shelf/shelf.dart provides fromShelf() to mount existing Shelf pipelines, cascading handlers, and middlewares directly on Dartvel's high-performance native server runtime.

  • Native WebSockets: package:dartvel_shelf/web_socket.dart provides webSocketHandler and wsHandler backed by Axum and tungstenite with event-driven native frame delivery callbacks (aw_register_ws_wakeup_handler), eliminating polling latency and multiplying throughput.

  • Streaming response and request body backpressure: A bounded queue with native stream acknowledgements pauses fast Dart producers when native buffers fill, preventing unbounded native memory growth when clients read slowly.

  • Native static file serving: Native static asset handling streams via tower-http ServeFile, with full support for byte ranges (Range, 206, 416), HEAD, conditional requests (Last-Modified, If-Modified-Since, weak ETag, If-None-Match), and canonical path traversal protection.

Packages on pub.dev and npm: dartvel_core, dartvel_flutter, dartvel_cli, dartvel_dev 0.9.3; dartvel_shelf 0.9.2; dartvel_generator 1.4.2 unchanged. CHANGELOG.

Dartvel 0.9.2

Choose a tag to compare

@Danroyal001 Danroyal001 released this 28 Sep 21:59

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.

This release has Linux binaries only (amd64 and arm64). GitHub Actions is unavailable, so they were built by hand; macOS and Windows binaries need those hosts and are added when the CLI release workflow runs for v0.9.2.

Highlights:

  • A web page shows its own text and a loading bar before Flutter starts. The text the build writes for crawlers is the page until the first frame, so the largest contentful paint is text rather than the splash. A thin bar across the top follows the compiled app, the renderer and the fonts as they arrive and completes on the first frame (role="progressbar", still under reduced motion; dartvel.splash.progress: false turns it off). main.dart.js is preloaded.
  • DvDefaultLoading is that loading bar on every platform, for deferred pages and page data, and DV.progress shows it for an application's own work.
  • Adopt Dartvel without changing routers: besides go_router, mount Dartvel pages into auto_route (dartvelAutoRoutes) or Flutter's Navigator 1.0 (dartvelOnGenerateRoute) and 2.0 (dartvelPageFor), with Dartvel's guards, back through Dartvel's stack first, and the web address bar following. dartvel init names the router an app uses.
  • The specification gains a Brownfield section (Dartvel inside an existing native app), measured against Expo's.

Packages on pub.dev and npm: dartvel_core, dartvel_flutter, dartvel_cli, dartvel_dev 0.9.2; dartvel_shelf 0.9.1 and dartvel_generator 1.4.2 unchanged. CHANGELOG.

Dartvel 0.9.1

Choose a tag to compare

@Danroyal001 Danroyal001 released this 28 Sep 20:47
3724b2a

Self-contained dartvel binaries. You don't need a Dart or Flutter SDK to run the CLI itself; dartvel build still needs Flutter for the target you are building.

This release has only the linux-amd64 binary for now. GitHub Actions is unavailable, so it was built by hand. The other platforms will be added when the CLI release workflow runs for v0.9.1.

Highlights:

  • Studio has its own sign-in at <admin.path>/login. It is a Flutter page of the Studio app, and it signs in against the application's own accounts, asking for the second factor when the account has one. Studio no longer depends on the application's /login. A signed-out visit to a Studio page is sent to the sign-in. Studio's data and API are still refused to strangers, and opening Studio still needs the Studio.access grant.
  • One page renderer for dartvel build web and the web-server binary. dvRenderRoutePage in dartvel_core renders a route's head, structured data, icon, captured semantics document and minified HTML. The static build calls it at build time and the binary calls it on request, so both serve the same bytes. Before this, the binary sent a crawler no links, headings or code blocks, and the pages it served were not minified.
  • HEAD on a server-rendered page answers as GET does.
  • The PWA service worker leaves Studio and API reads to the browser.
  • Signing in with a from= path that the router does not serve now loads that path from the server.
  • The semantics capture gives each route 120 seconds and three tries.

Packages: dartvel_core, dartvel_shelf, dartvel_flutter, dartvel_cli and dartvel_dev 0.9.1 are on pub.dev; dartvel_dev and dartvel_cli 0.9.1 are on npm. dartvel_generator stays at 1.4.2. See CHANGELOG.md for the full list.

Dartvel 0.9.0

Choose a tag to compare

@Danroyal001 Danroyal001 released this 28 Sep 13:46

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.

This release currently has Linux binaries only. GitHub Actions is unavailable, so they were built by hand. macOS and Windows binaries are added when the CLI release workflow runs for v0.9.0.

Highlights:

  • Placement follows call sites: a module source reaches more platforms, through a carrier per target (the placement matrix is in NEW_SPEC.md).
    • A Dart package that needs dart:io carries its asynchronous calls from the browser to a generated backend route, behind the policy the application names in dartvel.modules.<id>.backendPolicy (DV-MODULE-021 without one: the call runs with the server's authority).
    • C and Rust compile to WebAssembly for the browser when the module is generated; functions of numbers are real there, and stay synchronous.
    • npm packages and WebAssembly binaries run on the Linux, macOS and Windows desktops in the Node dartvel build copies into the bundle.
    • A Swift package that imports no Apple framework runs on Linux, Windows and the backend; one that does names the import that blocks it.
  • DVBox.threePane: one pane per panel of a tri-fold, with a live demo on the UI docs page.

Packages on pub.dev and npm: dartvel_core, dartvel_flutter, dartvel_cli, dartvel_dev, dartvel_shelf 0.9.0; dartvel_generator 1.4.2. CHANGELOG.

Dartvel v0.8.0

Choose a tag to compare

@Danroyal001 Danroyal001 released this 28 Sep 10:14

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.

This release currently has Linux binaries only. GitHub Actions is unavailable, so they were built by hand. macOS and Windows binaries are added when the CLI release workflow runs for v0.8.0.

Highlights:

  • dartvel add wraps a package from any ecosystem as a module: a Dart package (pub:, git:, path:), an npm package (npm:), a C library or Rust crate (c:, cargo:), a WebAssembly binary (wasm:), a JVM library (maven:, jar:) and a Swift package or CocoaPod (swift:, pod:). Each is reached as DV.Modules.<id>, declares what every operation does on a device, in a browser and on the backend, is checked against its registry's digest and pinned in dartvel.module.lock. dartvel build refuses a call it can see that cannot run where it is building (DV-MODULE-013/014); dartvel inspect modules is new.
  • A link to a heading opens the page at that heading (/docs/ui#layouts), on the web and in native apps.
  • Password managers save and fill the prebuilt sign-in and sign-up pages, and only a password the server accepted is offered for saving.
  • Studio: a formula bar, a command palette (Ctrl/Cmd+K) and Ctrl/Cmd+D.

Packages on pub.dev and npm: dartvel_core, dartvel_flutter, dartvel_cli, dartvel_dev 0.8.0; dartvel_shelf 0.8.1; dartvel_generator 1.4.1. CHANGELOG.

Dartvel v0.7.1

Choose a tag to compare

@Danroyal001 Danroyal001 released this 28 Sep 00:56

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.

This release currently has Linux binaries only. GitHub Actions is unavailable, so they were built by hand. macOS and Windows binaries are added when the CLI release workflow runs for v0.7.1.

A fix release:

  • Esc on a web page reaches the browser again. Every page reported Esc as handled, so the browser never saw it and Esc pressed in the page did not close the find bar. Esc now goes to the browser unless the page has something open to close (a dialog, a menu, the selection menu).
  • A dialog opened over a page keeps its keys. Keyboard scrolling took focus back from any focus scope, so a dialog's Esc went to the page beneath.

Packages on pub.dev and npm: dartvel_core, dartvel_flutter, dartvel_cli, dartvel_dev 0.7.1; dartvel_shelf 0.8.0 and dartvel_generator 1.4.0 are unchanged. CHANGELOG.

Dartvel v0.7.0

Choose a tag to compare

@Danroyal001 Danroyal001 released this 27 Sep 17:58

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.

This release currently has Linux binaries only. GitHub Actions was unavailable when it was cut, so they were built by hand. macOS and Windows binaries are added when the CLI release workflow runs for v0.7.0.

Highlights:

  • DV.Cache is four calls: get, set, has and delete. delete takes a key, a DVCacheTag or DVCache.all; dartvel.cache in pubspec.yaml names the store and DV.Cache.withAdapter(adapter) switches it in code. The lock, housekeeping and tag inspection moved to the framework's DVCacheRuntime.
  • Every data model gets a public page unless it opts out (generatePublicPages defaults to true). Accounts, sessions, credentials, audit records and tenant-scoped models are left out; sensitive fields are shown only to a viewer the new viewSensitive policy admits, and a record the view policy refuses answers 404.
  • Webhooks: deliveries as CloudEvents 1.0.2 or signed the Standard Webhooks way, configured under dartvel.webhooks, and an AsyncAPI 3.0 document at /api/asyncapi.json. DV-WEBHOOK-008 to 010 are registered diagnostics.
  • DV.Platform.Tray.show(icon:) takes a generated DVAssetRef, so a renamed icon is a compile error.
  • Change capture and offline data models are declared rather than wired, and application-facing Dart uses primary constructors.
  • Breaking: the SDK floor is Dart 3.13.0 and Flutter 3.47.0.

What changed, including the breaking changes and their migrations: CHANGELOG. Packages on pub.dev: dartvel_core, dartvel_flutter, dartvel_cli, dartvel_dev 0.7.0; dartvel_shelf 0.8.0; dartvel_generator 1.4.0.

Dartvel v0.6.0

Choose a tag to compare

@Danroyal001 Danroyal001 released this 25 Sep 12:21

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.

This release currently has Linux binaries only. GitHub Actions was unavailable when it was cut, so they were built by hand. macOS and Windows binaries are added when the CLI release workflow runs for v0.6.0.

What changed, including the breaking changes: CHANGELOG. Packages on pub.dev: dartvel_core, dartvel_flutter, dartvel_cli, dartvel_dev 0.6.0; dartvel_shelf 0.7.0; dartvel_generator 1.3.1.

Dartvel v0.5.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 00:11

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.

Dartvel v0.4.1

Choose a tag to compare

@github-actions github-actions released this 11 Sep 11:44

Self-contained dartvel binaries. No Dart or Flutter SDK needed to run the CLI itself; dartvel build still needs Flutter for the target you are building.