Marrow Engine v1.1.0 is here to deliver a significantly more intuitive developer experience by introducing refinements to the CLI tool and streammlining the consle outputs for readability. This update aims to reduce the friction in the development workflow, ensuring the developer can more effectiviely navigate commands and interpret system feedback as they build their project. Of course beyond these core improvements, you the usually bug fixes and improvements to the make the overall engine peformance feel more responisive and reliable.

Commands

The all new Marrow Engine CLI now features a standard suite of commands for launching, building, and previewing your project, mirroring the common workflow found in most modern frameworks. To help you get started, a help command was included to list all available options and descriptions, which will is written to output the following:

Marrow Engine v1.1.0

USAGE
   - marrow [command]

COMMANDS
   - dev        Start the development server
   - preview    Start the production server
   - build      Compile for production
   - lint       Lint source files
   - fmt        Format source files
                fmt | fmt src/components/Card.tsx
   - help       Show this help message

Documentation: https://marrow-engine.docs.sudovanilla.org

By default, Marrow will run the help command if nothing is specificied.

Recommended to use the following as a task in your deno.json file:

{
  "tasks": {
    "marrow": "deno run -A @sudovanilla/marrow-engine"
  }
}

Then to run deno task marrow [COMMAND], so to start the server would simply be deno task marrow dev.

Outputs

Introducing a more cohesive visual experience with revamped cosnole outputs that bring standardized coloring and formatting acorss all commands and actions. The build process has gotten now a more significant overhaul and now provides more data for every processed file, including specific route, file type, size, and duration of the transformation. Upon completion of the build, the console will display the summary highlighting the total build time and final footprint of your build dirctory.

For example, this is what the build output will look like when running marrow build:

Marrow Engine v1.1.0 - Building to ./dist...
--------------------------------------------------------------------------
    Route                          Type              Size         Time
--------------------------------------------------------------------------
    /                              TSX                1.12kb      1.4ms
    /about                         MD                 3.54kb      4.51ms
    /catalog                       TSX                9.52kb      143.6ms
    /system                        TSX                2.52kb      3.2ms
    /assets/images/logo.png        PNG                98.4kb      188.5ms
--------------------------------------------------------------------------
Build Complete | Total Size: 115.2kb | Time: 344.2ms

Originally in v1.0.0, only the pages that were built was outputted, although other files like your static assets, in ./public were being processed as well. This update will now display all updates being processed. Not only that, Marrow Engine will ignore a list of files that are excluded during the build process; common files you won't want in your builds like .DS_Store and what not.

Configuration File

When setting up a Marrow Engine project, you are now required to have a marrow.config.ts file in the root directory, that'll handle the configuration for your website or app. Similiar to how Astro works, you'll import defineConfig as the configuration, you can also view all the new options that were added here:

import { defineConfig } from "@sudovanilla/marrow-engine"
import DefaultLayout from "@layouts/layout.tsx"

export default defineConfig({
    dirs: {
        build: "./dist",
        pages: "./src/content",
        public: "./public",
        src: "./src",
    },
    markdown: {
        theme: "github-dark"
    },
    layouts: {
        "default": DefaultLayout,
    },
    redirects: {
        "/old-page": "/new-page",
        "/old": "/new"
    },
    server: {
        port: 4321,
        hostname: "192.168.1.113"
    }
})

The configuration options are also now documented inside your IDE, when you hover over an option, it'll display brief detail about that option and indicate what the default is.

Other Improvements

When you run into an error like seeing the default 404 error page or face a 500 server internal error, you'll no longer be blasted with the default white theme. The error page has been rebuilt to include a dark mode now, if the device theme or client-browser theme is set to dark, using the light-dark CSS function.

Builds will now minify content such as style tags, Markdown content, and all TSX files in your build. This is to help shrink down the file sizes in final builds and require less downloading on the client-side.

This is the first debut of the Marrow Engine. Built on top of the Deno runtime already, this initial release provides native, first-class support for TypeScript and TSXS, allowing you to develop components and layouts with zero manual transpilation. For those looking to also deploy in a containerized environments, the engine is compatible with the official Deno OCI image for seamless Docker deployments.

The framework emphasizes a structured development experience where pages will be automatically routed as long as they reside with src/pages directory. Styling already has support to handle CSS modules, that also supports secure hashing following this documentation, to be improved on as development continues. Beyond the core architecture, this version already includes support for configuration flexibility, enabling you to customize the network port, implementation for custom middleware, and apply layouts to Markdown pages.

Read more about SudoVanilla taking step in future development: https://sudovanilla.org/blog/marrow-engine--sudovanillas-very-own-framework-engine--and-its-future-ecosystem

  • Fixed SSR search for production deployments
  • Applied link to whitelabel
  • Removed package.json from source
  • Added "Mismatch Extension" warning
  • Added magic number file detection
  • Added search function
  • Added sorting function
  • Added image popup dialog
  • Added grid view, regular files will show first as list, then images in a grid
  • Re-integrated Nekoma player via Embed container
  • Moved breadcrumbs to page title, hides on root
  • TITLE will now default to "Directory Viewer"
  • Updated @std/fs ^1.0.20 -> ^1.0.23
  • Updated @std/path ^1.1.3 -> ^1.1.4
  • Updated @preact/signals-core ^1.12.1 -> ^1.14.1
  • Updated preact ^10.28.0 -> ^10.29.1
  • Updated preact-render-to-string ^6.6.3 -> ^6.6.7
  • Added embed for release notes(tags)
  • Added Banner parameter for release notes(tags)
  • Added title to Login page
  • Fixed CSS for Releases page
  • Removed invalid logo and background if not set for repository
  • Releases page will now sort by date
  • Bug fixes

This release overhauls the entire presentation player provided by Nekoma. The presentation page, visible in the live demo, has always been updated.

  • Show play button when the video ends, if Loop is not enabled.

  • Updated Position parameters to have the options of Left, Center, or Right for the Play button.

  • Videos will only play when visible in the viewport, the amount is must be in the viewport can be set the developer. It is 25%(0.25) by default.

  • Fixed the Play Again button for the Nekoma player.

  • Added new array parameters for the Fallback player.

This update focuses on optimizations and bug fixes.

  • Fixed fullscreen function for iOS
  • Fixed fullsreen button to properly swap icons when exiting fullscreen with the ESC key
  • Fixed big play button if fullscreen button is disabled
  • Updated Video parameter to add option to add multiple sources(*1) with an array
  • Updated debug log to consider parameters that were updated and added
  • Added new parameter, Preload, allowing the developer to set the preload for the video tag
  • Added new parameter, Metadata(*2), to correct information in media notifications on devices
  • Added loading screen on load, disappears once video is ready to play
  • Added tooltip for Play/Pause button
  • Removed video tag for simulated storyboard
  • Removed Picture-in-Picture button for iOS

(*1) - How to add to use the new array option for the Video parameter:

<Nekoma
    Video={[
        {
            Source: "./intro.mp4",
            Type: "video/mp4"
        },
        {
            Source: "./intro.mov",
            Type: "video/quicktime"
        },
        {
            Source: "./intro.webm",
            Type: "video/webm"
        }
    ]}
/>

(*2) - New Metadata parameter:

<Nekoma
    Video="./pets-vlog.webm"
    Metadata={[{
        Title: "Pets Blog #2",
        Artist: "The Pets Channel",
        Album: "Pets Blog",
        Artwork: [
            {
                Source: "https://example.org/vlog/pets-blog/22-96x96.png",
                Sizes: "96x96"
            },
            {
                Source: "https://example.org/vlog/pets-blog/22-256x256.png",
                Sizes: "256x256"
            },
            {
                Source: "https://example.org/vlog/pets-blog/22-512x512.png",
                Sizes: "512x512"
            }
        ]
    }]}
/>

Bug Fixes

  • When creating a new report, the child item will be in an array by default on creation. Before it would cause issues with mapping in Astro, leading to internal server error.
  • Fixed close button on dialogs

Minor Changes

  • user-select set to all for reports on status page for type, date, and message.
  • Converted the tags head, header, and footer into their own component.
  • Added icons for archives, fonts, and 3d models.
  • Added JSON viewer for non-Mozilla Firefox browsers.
  • Added react-jsx to compiler options with import source for preact

Open Graph

Originally /og will look for only the title, description, and image of the site's open graph data. This has been extended to fetch more information such as payments, articles, books, videos, audio, and more.

The following was added:

Root:

  • Type
  • Video
  • Audio

Embed Discovery:

  • Embed
  • EmbedUrl

Music

  • music:duration
  • music:album
  • music:musician
  • music:release_date
  • music:creator

Articles and Books

  • article:published_time
  • article:modified_time
  • article:section
  • book:isbn

Profiles

  • profile:first_name
  • profile:last_name
  • profile:username
  • profile:gender

Payments

  • payment:amount
  • payment:currency

Metadata

More files were added to the fetch list:

  • ai.txt
  • llms-full.txt
  • tdmrep.json
  • ror.xml
  • /.well-known/ai-plugin.json
  • sitemap-0.xml
  • sitemap-index.xml
  • sitemap.xml.gz
  • rss.xml
  • atom.xml
  • buyers.json
  • trust.txt
  • .well-known/security.txt
  • .well-known/keybase.txt
  • .well-known/pki-validation
  • .well-known/mta-sts.txt
  • .well-known/assetlinks.json
  • .well-known/apple-app-site-association
  • .well-known/openid-configuration
  • .well-known/gpc.json
  • .well-known/dnt-policy.txt
  • .well-known/autoconfig/mail/config-v1.1.xml
  • autodiscover/autodiscover.xml
  • mail/config-v1.1.xml
  • .well-known/host-meta
  • .well-known/webfinger
  • .well-known/atproto-did
  • .well-known/nodeinfo
  • openapi.json
  • swagger.json
  • .well-known/openapi.json
  • .well-known/swagger.json

Images

Just like with scripts, the /images endpoint works the same way. It'll fetch all image tags found on the site.

Example

/images?url=https://deno.com
  • Added HTML string parameter for Dropdown
  • Added Icon string parameter for Dropdown items
  • Added KB (Keyboard Shortcut) text for Dropdown items
  • Changed Label to Text for Context items
  • Changed z-index for Tooltip to 99
  • Changed z-index for Context to 100
  • Fixed package export for NPM publishing
  • Added email option, is optional
  • Website is now optional
  • If email is present in config.json, a console warning is displayed
  • Added GitHub CSS to about.md
  • Adjusted Matrix logo to use white scheme
  • Adjusted avatar, borders, and other elements

Introducing Verabase, a new mini components library built for SudoVanilla projects and more. The project is new and is limited to only tooltip, dropdown, and context menu. There are no plans to make this a full-on components library.

Verabase was built to only handle small things.

Currently available to integrate:

  • Context Menu
  • Dropdown Menu
  • Tooltip

Introducing Zinnia

Zinnia is a deno server built to fetch information from websites such as metadata, favicon, open graph, scripts, and more.

Zinnia will expand to retrieve more data from websites like snapping screenshots, domain registrar, and more.

This release introduces fetching the following:

  • Favicon as base64
  • Open Graph
  • Metadata
    • robots.txt
    • sitemap.xml
    • security.txt
    • crossdomain.xml
    • sellers.json
    • manifest.json
    • ads.txt
    • app-ads.txt
    • llms.txt
    • humans.txt
    • opensearch.xml
  • All scripts
  • All new design and layout
  • Added GitHub CSS for release pages
  • Homepage now has a Home.md file that can be overridden in Docker Volume. Add title, description, links, or anything else in Markdown.
  • Replaced WYSI editor with markdown-wysiwyg
  • Integrated Neofi as login page
  • Integrated Nanohint for tooltips
  • Integrated Gushdrop for dropdowns

New Clarity Option

The Clarify option is for adding additional context to a video, which will appear in the upper-right corner of the video. End-users can click on it to expand to see the additional context provided. https://zorn.docs.sudovanilla.org/configuration/clarify/

Minor Changes

  • Style was adjusted for "Buffering..." text, big play button, and other minor aspects of the video player.  - Fallback style was adjusted to fit better on smaller screens.  - Picture in Picture button is hidden on QtWebEngine browsers.  - Removed transitions and animations for reduced motion.

Dedicated Package Page

Support for Linux packages was missing it's own dedicated pages for each package in Rexi, in this update the page has been added. For packages their metadata will be shown such as filename, version, architecture, build date, upload date, and Checksum. Below that are installation instructions to add the repo. If the repo only shows generic packages, which are not DEB or RPM files, then a download package link will be shown instead. A download link will added to the file name in the metadata.

URL pattern uses the uid of the package metadata instead of the package name, as only the package filename is available which I don't find ideal, the URL pattern will look like this:

https://rexi.example.org/package/:repo/:uid

At the moment, Rexi has only been setup to support one repo, currently adding repositories from your OpenRepo instance is not yet supported.

Configuration Update

  • Show "Powered By Rexi" - You can disable the "Powered by Rexi" text in the footer by setting a boolean(true or false) for the option Global.PoweredBy in the configuration file, enabled by default.
  • Footer Links - The links in the footer can be updated by adding custom links using the new Links.Footer option in the configuration file, link to Rexi's documentation and source is shown by default is nothing is set.

New Dialogs

  • Login - Both Zot and Verdaccio have a way to login to them using the appropriate CLI tool. This dialog shows login instructions for both cases. The button for "Login" in the header can be disabled setting a boolean (true or false) for the option Global.Login in the configuration file, disabled by default.
  • Register - Verdaccio has a way to register using the appropriate CLI tool. This dialog shows instructions for Verdaccio only. The button for "Register" in the header can be disabled setting a boolean (true or false) for the option Global.Register in the configuration file, disabled by default.

Minor Changes

  • Added theme toggle button using cookies to avoid client-side JavaScript.
  • Updated dark theme styling, in addition to adding a theme toggle button.
  • Updated font to be swapped to over to the Ubuntu Font Family.
  • Fixed filter for OCI Images page.

Introducing Rexi, built from the ground up to bring Zot (OCI), Verdaccio (JS), and OpenRepo (Linux) together into one simple to use frontend experience. Each image and package are given a clean, readable layout along with straight-forward installation steps, so that developers can get what they need and get back to work.

Instead of jumping between your registries and websites where your artifacts are hosted, Rexi gives you a single place to check for container vulnerabilities, or to verify private packages. By pulling metadata and version history automatically, this turns your storage backends into a more practical, high-performance, portal that expands alongside your infrastructure.

Built as a frontend alternative and replacement for SudoVanilla registries.

Fetch the image directly by using the raw query parameter for favicons.

Example:

/?raw=true&url=https://codeberg.org

Neofi is a modern, sleek template designed to streamline the creation of login and registration pages for websites built on the Astro Web Framework. Built to be server-first and and ensuring it's lightweight client-side, mobile-responsive, and fast-loading. The template provide a flexible foundation for developers to quickly implement secure, customizable authentication flows. Neofi is currently in use on SudoVanilla projects such as Logment, Pebble Key, Ubikute Relay, and Scoutlyx.

Neofi was created because the last few projects are all using the same login page layout and design, Neofi should hopefully streamline that part of their development.

Available to install now from the SudoVanilla JS Registry: https://js.registry.sudovanilla.org/-/web/detail/@SudoVanilla/Neofi

  • Add Author and Label to post metadata

Introducing Ubikute Relay v0.5, this release features substantial enhancements across both the frontend interface and the API to deliver a better experience.

Frontend

The frontend was redesigned to be more user friendly on the dashboard side of things to easily modify the database such as reports, sites, and the status page settings. The interface has been greatly improved for a slicker look.

The dashboard now includes a sidebar with quick access to sites, reports, and settings. Lists of reports have been revamped to more easy to read and manage.

API

The API has been rewritten for improved optimization and enhanced security, making for a faster and safer data exchange within the system. This also hopes to address previous security vulnerabilities in older versions by implementing a mandatory API key requirement for all modifications to the API.

Additionally, reports and their sub-reports are now correctly bundled during creation, editing, and deletion operations.

Please refer to the Ubikute Relay Documentation for detailed API usage instructions.

Docker

Ubikute Relay has transitioned from using a separated OCI images for it’s frontend and API to a unified, single OCI image. This consolidation is a result of both the frontend and API being full capable of, and meant for, execution within the Deno runtime environment.

Logment is a new, performance-focused release notes and changelog software to help individuals publish product and proejct updates to their users. Built on the Astro Web Framework and Deno runtime.

At the moment, Logment is currently a barebones solution, meaning it currently comes with very basic functions, but have plans for future expansion on features and improvements. You can keep track of development on Logment by viewing the kanboard.

Introducing Pebble Key, a barebones CMS built on Astro and Deno.

It's brand spanking new, so a lot of feature you'll usually see in other CMS are missing, hence why it's barebones(for now).

  • Adjustments to user interface
    • Increase top-bottom padding for entries
    • Added style to breadcrumbs
    • Added supported for light mode
    • Other minor CSS changes
  • Entries will now sort by A-Z
  • Moved breadcrumbs from footer to header, on right side
  • Updated head title
  • Added options
    • POWEREDBY - Toggle the "Powered by" text in footer
    • README - Toggle _readme.md renders on page
    • ICONS - Toggle icons in entries
    • SUBPATH - Toggle breadcrumbs

Storyboard

image

You can now add a storyboard properly to Zorn, by using the Storyboard option and connecting it to a .vtt file. (Example). This uses spritesheets for thumbnails.

Clip

You can now start the video at a specific time using the Clip option and setting the second. Or you can set it in the URL.

Option example:

<Zorn Clip{[{Start: "248"}]}/>

URL example:

/z#50

Smarter TypeScript

image

Zorn now uses interface in it's codebase to add requirements, descriptions, deprecated warnings, and more to provide a better experience for developers. Only applies to supported IDEs and code editors.

Minor Changes

Other changes have been applied such as bug fixes, optimizations, and other improvements.

Introducing ButterflyVu v0.5, which has been completely redesigned and refactored from the inside and out. Smaller, faster, and more efficient compared to previous versions; making it better for your users, deployments, and more.

New Documentation

All documentation for ButterflyVu have been rewritten to adjust to this release. You can view them at https://butterflyvu.sudovanilla.org/.

Customization

  • Toggles are new options available in the configuration files to toggle certain parts of the interfaces on and off such as search, whitelabel, and more.
  • Backgrounds for the sidebar and page are now possible, you can also set the position.
  • Colors an now be adjusted for variables like branding, meta, and more. They all must be in the HSL format, not including alpha. (E.x. "224, 50%, 50%")

All New Splash

The splash is built to be treated as the homepage of your documentation to quickly showcase and present introduction. With the all new splash in ButterflyVu a smooth gradient glow is shown from above coming down onto the main heading, quick actions, and then so-on. Explore the new ButterflyVu documentation to see it in action.

No More Client-Side JavaScript

With no client-side JavaScript, your documentation will now load even faster and be more efficient for your users, reduce bandwidth overall, improved SEO and accessibility out of box, and more. You also get easier content cashing and offline distribution, quicker CI/CD deployments allowing for lower hosting costs, faster contentful paint on slower networks, and other improvements that comes with this perk. All basic functions such as search, are now being processed server-side.

To also make there are no client-side JavaScript included with ButterflyVu, support for Zorn has been completely removed. With plans to add MDX support back in a later release, this could be used to integrate Zorn back into ButterflyVu while also overriding the deno.json file, but would add JavaScript client-side due to Zorn's full reliance on it.

Open Graph

In this release finally comes built-in Open Graph image support for all pages and documents, better late than never. Ensuring that every page has a slick, professional-looking embed preview including specific logo, image, title, and category; when it's shared across platforms. The Open Graph image is also fully customizable so it's tailored to your product and branding.

All New Search-Indexing

Pagefind has been completely dropped in favor to ButterflyVu very own built-in search solution, which is processed with server-side rendering which allows for zero JavaScript client-side. Making it fast for users browsing your documentation. Searches are now built as an index during each build of the documentation, being converted into a JSON file.

Other Changes

  • You can now add table of contents to your documents by adding showToc: true to your Markdown file.
  • OCI image is built using denoland/deno:alpine
  • OCI image support now available for arm64
  • You can now add a custom footer slot to the bottom of the sidebar
  • CSS modules are now used to generate random class names.
  • Previous support for MDX, Prism, and SSG have been removed temporary. Plans to add back in later releases.

Documentation | Source Code | OCI Image