Field definitions, metadata, stability & inspecting.

Field definitions, metadata, more stability and faster module resolution.

February 19, 2024
·
2 min read
·
by Roel Berger

Another weekly update, we've been working diligently, I'm quite excited about this release: good stuff.

New Features

  • Web Enhancements: Users can now explore cells with multiple streams and inspect all stream and module sources. This comes with basic syntax highlighting and links for a better understanding and navigation experience. The home page now also shows some guideline if you're not yet a sponsor.
  • Core Updates: We've introduced metadata definitions on streams with a technical design that supports field definitions. These can be resolved statically or dynamically, ensuring that metadata is defined and resolved accurately. Also support for markdown was added.
  • CLI Improvements: A new command, graffe describe <stream>, has been added to describe metadata and fields, enhancing the command-line interface utility for more detailed stream analysis.

Important Changes

  • Compatibility Adjustments: We've made a change to not prioritize .ts files if a .js file exists in the cell, along with a transition from the graffe.ts to graffe.json(c) manifests for cell definition systems.
  • Output Formatting: All data commands in the CLI now default to table output instead of JSON, with improved support for chunking, enhancing readability and usability.
  • Error Handling: Error behavior and the functionality to exit with code from worker threads have been made more consistent across the platform.

Performance Improvements

  • Module Caching: Immutable modules are now cached upon first use on graffe.app, significantly speeding up module resolution on the graffe service by an average of 50% or more per cached module requested. This improvement is especially beneficial for streams with many dependencies.
  • Tags Resolution: We've achieved a 10x speed improvement in tags resolution, leading to much faster loads for exploring cells.
  • CLI Optimization: Updating Deno to 1.40.5 has reduced the command size by 19%, and support for URL-style requests has been added for enhanced usability.

Developer Experience

  • Caching in Dev Flows: To ensure a smoother development experience, caching has been disabled in development flows.

These updates are part of our ongoing effort to enhance the platform's functionality and user experience. We believe these changes will significantly benefit our users, streamlining workflows and improving efficiency across the board.

Get started

Make sure to BECOME AN INSIDER (opens in a new tab), then you can use graffe and thanks to your sponsoring make it available to all of humanity!

And join our community (opens in a new tab) for updates.

Detailed Changelog

  • feature(web): Exploring cells with multiple streams.
  • feature(web): Inspect all stream and module sources (with basic syntax highlighting and links).
  • feature(core): Metadata definitions on streams technical design
  • feature(core): Field definitions and resolving them (static and dynamic (stream-link-aware)).
  • feature(core): Metadata definitions and resolving them.
  • feature(cli): New command to describe metadata and fields graffe describe <stream>.
  • feature(web): Show fields and metadata on stream viewers.
  • feature (cosmos): support for returning markdown files, so these can be used for more detailed cell documentation next to the metadata.
  • improve(cosmos): Immutable modules are now cached on first use on graffe.app, speeding up module resolution on avg 50% or more per module requested, big impact for streams with many dependencies.
  • improve(cosmos): Tags resolution was sped up 10x (causing much faster loads for exploring cells).
  • improve(cli): bump Deno to 1.40.5, reduces graffe command 19% in size.
  • improve(cli): Support for URL-style requests, eg: https://graffe.app/@graffe/test/stream (opens in a new tab)
  • breaking(cosmos): Don't prioritize .ts files anymore if a .js exists in the cell. Might have some fallout.
  • breaking(core): change cell definition system from graffe.ts to graffe.json(c) manifests, schema: https://graffe.app/schema/graffe.json (opens in a new tab)
  • breaking(cli): All data commands now default to table output instead of json, with better support for chunking.
  • fix(cli): More consistent error behavior and functionality to exit with code from worker threads.
  • fix(all): Aligned all modules with the new graffe cell manifest
  • improve(dev) Caching disabled in dev flows.

Screencast

Demoing some of the new features and improvements.