@audiotool/nexus - v0.0.12
    Preparing search index...
    Warning

    The package should be considered "early alpha" and can change significantly between releases, even between minor version numbers.

    • updated networking code to work better in node.js: Connection no longer hangs on creation, and termination after nexus.stop() is faster.
    • added type exports for logged in / logged out variants of logged in status: type LoginStatus = LoggedInStatus | LoggedOutStatus
    • AudiotoolClient.createSyncedDocument changed it's signature: mode: "online" is no longer needed - the document is always online and synced:

      const client = ...
      const nexus = await nexus.createSyncedDocument({project})
    • new function createOfflineDocument, allowing you to create offline documents without any network calls:

      const nexus = createOfflineDocument()
      
    • enable creating multiple synced documents at once
    • enable stopping an old document from syncing so it can be thrown away: SyncedDocument.stop. This will flush all existing modifications to the backend, then prohibit from using anything in the document other than SyncedDocument.queryEntities.
    • improved link formatting in docs
    • fixed bug in project synchronization logic that resulted in exceptions in certain situations
    • internal restructuring in preparation for open sourcing
    • validator wasm got a perf boost, reducing load time of projects

    Change README file shown on npm.

    • improved load time of package drastically by fetching wasm from CDN when running the package in the browser
    • added tests for bun, node.js, and browser, preparing for CI tests
    • restructure repo preparing to open source
    • wrote document Overview, giving a high level introduction of the package's functionality, and absorbing previous pages "Transaction Management", "Queries and Navigation", "Events and Changes", and "Core Concepts"
    • rename "API Wrappers" to "API", rewrote, absorbed "Presets"
    • improved docs of various typescript elements

    A few exports were moved around, otherwise no change.

    We're now on npm! 🥳

    Install the package with:

    npm install @audiotool/nexus
    
    • refactored and simplified authentication. Managing User Login, documenting the API getLoginStatus
    • updated the API bindings to the newest version, some change slipped through the last time

    This is a big update with lots of changes! Existing apps will sadly break, but we hope these updates will make writing nexus apps more fun and easy to use!

    Here's a summary:

    • the ability to self host your app!
    • the new gakki soundfontplayer & audio region repitching: Gakki, FOO.
    • a major revision of the entire API structure - hopefully the last one!
    Note

    You must update your package to keep your app working, older versions won't work anymore.

    The biggest changes in the API revision are:

    • The DesktopPlacement message is gone. It's content (x/y position and display_name) is now directly inside the messages that DesktopPlacement used to point to: t.create("tonematrix", {positionX: 2, positionY: 3, displayName: "foo"})
    • The Stagebox message is gone - the MixerMaster (formerly: MixerOut) contains the stagebox's x/y positions directly
    • Mixer strips don't have to point to the MixerMaster (formerly: MixerOut) anymore:
      • Channels, Group and Aux strips don't have to be connected to the master anymore, they're implicitly connected
      • MixerStripCable renamed to MixerStripGrouping, and is used purely for grouping strips

    These changes address the issue where API users:

    • forget to add DesktopPlacement -> device not visible on the desktop
    • forget to add Stagebox -> stagebox not visible on the desktop
    • forget to add a MixerStripCable -> mixer strip not shown, nothing audible

    Now you can forget all these things for good!

    Further, the SDK itself got an update in documentation & package names:

    • new top level package names: api-types -> api, entity-types -> entities
    • removed Type suffix for entity names: TonematrixType -> Tonematrix
    • removed entity messages from api exports, confusing
    • grouped entities at entities
    • created an overview of all entities, see Entities Overview

    Other important changes:

    Other important changes
    • PatternRegions on the timeline no longer have to have a pointer to the pattern device - the device is only referenced through the PatternTrack itself; the pattern index through the pattern_index field in the region.
    • Beatbox8, Beatbox9, Machiniste: pattern step duration is set to an enum rather than tick duration
    • Hundreds of fields got better documentation and names, and dozens got more sensible validity ranges.
    • CentroidChannels can now properly be ordered using order_among_channels, a float-based ordering similar to tracks
    • Rasselbock effects are ordered similarly: in an array of floats
    • WaveshaperAnchors can no longer generate an invalid waveshaper - 1 anchor point is always implicitly present
    • expanded subscription capabilities for event manager, see NexusEventManager:

      • nexus.events.onCreate("*", ...) to subscribe to any entity being created
      • nexus.events.onRemove("*", ...) to subscribe to any entity being removed
      • nexus.events.onCreate("...", () => {
        return () => console.debug("removed")
        })
        to subscribe to the removal of an entity that was just created
    • added better "presets" API wrapper to more easily access presets. See Presets

    • Added default values & validity ranges to the documentation of fields in the "constructor types", the second argument e.g. for t.create("foo", {...}).

      This means you can now hover the parameter to see it's validity range:

      hover-example

    • Document what pointer fields point to by linking to all locations. See e.g. DesktopAudioCable.fromSocket

    • Remove default from required pointers; confusing because required pointers' default values will result in a transaction error

    • Fix incorrect example in Core Concepts

    • Add documentation pages:

      • Events and Changes
      • Presets
    • fix a bug in the validator that would cause the removal of certain entities to result in a transaction errors when it shouldn't have
    • Expose new Ticks constants & conversion methods to more easily work with time units
    • add links to EntityQuery to Queries and Navigation docs, links to TransactionBuilder to Transaction Management docs
    • started versioning package so we can communicate changes here
    • remove setPAT & hasPAT from AudiotoolClient. Instead, pass the PAT directly to createAudiotoolClient. They relied on localStorage, making them harder to run on platforms other than the web. Users should manage the PAT themselves, and pass in when creating the client. For websites, you could use e.g. localStorage.
    • improve error message if calling nexus.createTransaction() before calling nexus.start()
    • added instructions on how to get started with vite in Getting Started
    • generate documentation on the target type of each entity (e.g. Heisenberg "is" DesktopPlaceable, NoteTrackPlayer), which was missing. Added distinction between entity & objects.
    • typos, wording, consistency

    First release!