Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Oct 15, 2025

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update
Chickensoft.GameTools 2.1.14 -> 2.1.19 age confidence nuget patch
Chickensoft.GoDotTest 2.0.19 -> 2.0.27 age confidence nuget patch
Chickensoft.GodotTestDriver 3.1.44 -> 3.1.56 age confidence nuget patch
DotNext.Threading (source) 5.25.2 -> 5.26.1 age confidence nuget minor
Godot.NET.Sdk (source) 4.5.0 -> 4.5.1 age confidence msbuild-sdk patch
GodotSharp (source) 4.5.0 -> 4.5.1 age confidence nuget patch
SpacetimeDB.ClientSDK (source) 1.5.0 -> 1.11.1 age confidence nuget minor
SpacetimeDB.Runtime (source) 1.5.0 -> 1.11.1 age confidence nuget minor
dotnet-sdk 9.0.306 -> 9.0.308 age confidence dotnet-sdk patch

Release Notes

chickensoft-games/GoDotTest (Chickensoft.GoDotTest)

v2.0.27

Compare Source

What's Changed

Full Changelog: chickensoft-games/GoDotTest@2.0.26...2.0.27

v2.0.26

Compare Source

What's Changed

  • fix: tests marked both passed and failed when a [Failure] method exists by @​wlsnmrk in #​198

Full Changelog: chickensoft-games/GoDotTest@2.0.25...2.0.26

v2.0.25

Compare Source

What's Changed

  • chore(deps): update dependency jetbrains.annotations to 2025.2.4 by @​renovate[bot] in #​196

Full Changelog: chickensoft-games/GoDotTest@2.0.24...2.0.25

v2.0.24

Compare Source

What's Changed

Full Changelog: chickensoft-games/GoDotTest@2.0.23...2.0.24

v2.0.23

Compare Source

What's Changed

Full Changelog: chickensoft-games/GoDotTest@2.0.22...2.0.23

v2.0.22

Compare Source

What's Changed

Full Changelog: chickensoft-games/GoDotTest@2.0.21...2.0.22

v2.0.21

Compare Source

What's Changed

Full Changelog: chickensoft-games/GoDotTest@2.0.20...2.0.21

v2.0.20

Compare Source

What's Changed

Full Changelog: chickensoft-games/GoDotTest@2.0.19...2.0.20

chickensoft-games/GodotTestDriver (Chickensoft.GodotTestDriver)

v3.1.56

Compare Source

What's Changed

  • chore(deps): update dependency chickensoft.godottest to 2.0.27 by @​renovate[bot] in #​76

Full Changelog: chickensoft-games/GodotTestDriver@3.1.55...3.1.56

v3.1.55

Compare Source

What's Changed

  • chore(deps): update dependency chickensoft.godottest to 2.0.26 by @​renovate[bot] in #​75

Full Changelog: chickensoft-games/GodotTestDriver@3.1.54...3.1.55

v3.1.54

Compare Source

What's Changed

  • chore(deps): update dependency chickensoft.godottest to 2.0.25 by @​renovate[bot] in #​74

Full Changelog: chickensoft-games/GodotTestDriver@3.1.53...3.1.54

v3.1.53

Compare Source

What's Changed

  • chore(deps): update dependency chickensoft.godottest to 2.0.24 by @​renovate[bot] in #​73

Full Changelog: chickensoft-games/GodotTestDriver@3.1.52...3.1.53

v3.1.52

Compare Source

What's Changed

Full Changelog: chickensoft-games/GodotTestDriver@3.1.51...3.1.52

v3.1.51

Compare Source

What's Changed

  • chore(deps): update dependency chickensoft.godottest to 2.0.23 by @​renovate[bot] in #​71

Full Changelog: chickensoft-games/GodotTestDriver@3.1.50...3.1.51

v3.1.50

Compare Source

What's Changed

  • chore(deps): update dependency chickensoft.godottest to 2.0.22 by @​renovate[bot] in #​70

Full Changelog: chickensoft-games/GodotTestDriver@3.1.49...3.1.50

v3.1.49

Compare Source

What's Changed

Full Changelog: chickensoft-games/GodotTestDriver@3.1.48...3.1.49

v3.1.48

Compare Source

What's Changed

  • chore(deps): update dependency chickensoft.godottest to 2.0.21 by @​renovate[bot] in #​68

Full Changelog: chickensoft-games/GodotTestDriver@3.1.47...3.1.48

v3.1.47

Compare Source

What's Changed

Full Changelog: chickensoft-games/GodotTestDriver@3.1.46...3.1.47

v3.1.46

Compare Source

What's Changed

  • chore(deps): update dependency chickensoft.godottest to 2.0.20 by @​renovate[bot] in #​64

Full Changelog: chickensoft-games/GodotTestDriver@3.1.45...3.1.46

v3.1.45

Compare Source

What's Changed

Full Changelog: chickensoft-games/GodotTestDriver@3.1.44...3.1.45

clockworklabs/SpacetimeDB (SpacetimeDB.Runtime)

v1.11.1: - Bug Fixes + Performance Improvements

Hello again everyone! This is likely going to be our last release before the holidays. We will potentially have one more release before the end of the year but for now we hope you are all happy with these improvements 🙂

Typescript

This release includes several bug fixes and performance improvements related to Typescript:

  • SpacetimeDB now processes sourcemaps included in Typescript modules, so stacktraces in both new and existing modules now show the filenames and line numbers from your source code, not from the bundled JS file.
  • The UTF-8 processing of the TextEncoder and TextDecoder classes is now implemented in native code, meaning string de/serialization will now have less overhead.
  • useTable in a React client now works when specifying columns with camelcase names.
  • Generated client code is now compatible with the noImplicitOverride Typescript configuration option.

What's Changed

Full Changelog: clockworklabs/SpacetimeDB@v1.11.0...v1.11.1

⛄ 🎄 🎁 Happy Holidays everyone! 🎁 🎄 ⛄

v1.11.0: - Typed Query Builder

Today we've released query builders for Rust and TypeScript modules. The purpose of the query builder API is so that you can write views that will take advantage of the unique performance guarantees of SpacetimeDB's query engine, particularly for realtime subscription updates.

The query builder also now allows you to iterate or scan a table in a view, something that previously wasn't possible using only the index accessors exposed by ViewContext and AnonymousViewContext.

The query builder exposes the following query operators:

  • .where()
    Used for filtering. Equivalent to a WHERE condition in SQL.
  • .leftSemijoin()
    Equivalent to an inner join in sql where a row is return from the lhs only if it matches with a row on the rhs.
  • .rightSemijoin()
    Equivalent to an inner join in sql where a row is return from the rhs only if it matches with a row on the lhs.

Examples (Rust)

use spacetimedb::{Identity, Query, Table, ViewContext, AnonymousViewContext};

#[spacetimedb::table(name = player_state)]
pub struct PlayerState {
    #[unique]
    player_id: u64,
    online: bool,
}

#[spacetimedb::table(name = player_internal)]
pub struct Player {
    #[auto_inc]
    #[primary_key]
    id: u64,
    #[unique]
    identity: Identity,
    name: String,
    #[index(btree)]
    age: u8,
}

#[spacetimedb::table(name = moderator_internal)]
pub struct Moderator {
    #[unique]
    player_id: u64,
}

/// Returns all players.
/// Equivalent to `SELECT * FROM player_internal`.

#[spacetimedb::view(name = player, public)]
fn player(ctx: &AnonymousViewContext) -> Query<Player> {
    ctx.from.player_internal().build()
}

/// Returns the caller's player.
/// Equivalent to `SELECT * FROM player_internal WHERE "identity" = :sender`.

#[spacetimedb::view(name = my_player, public)]
fn my_player(ctx: &ViewContext) -> Query<Player> {
    ctx.from.player_internal().r#where(|p| p.identity.eq(ctx.sender)).build()
}

/// Returns only online players.
/// Equivalent to:
/// ```sql
/// SELECT q.*
/// FROM player_state p JOIN player_internal q ON p.player_id = q.id
/// WHERE p.online
/// ```

#[spacetimedb::view(name = online_player, public)]
fn online_player(ctx: &AnonymousViewContext) -> Query<Player> {
    ctx.from
        .player_state()
        .r#where(|p| p.online.eq(true))
        .right_semijoin(ctx.from.player_internal(), |(p, q)| p.player_id.eq(q.id))
        .build()
}

/// Returns only the caller's player if online.
/// Equivalent to:
/// ```sql
/// SELECT q.*
/// FROM player_state p JOIN player_internal q ON p.player_id = q.id
/// WHERE p.online AND q.identity = :sender
/// ```

#[spacetimedb::view(name = my_online_player, public)]
fn my_online_player(ctx: &ViewContext) -> Query<Player> {
    ctx.from
        .player_state()
        .r#where(|p| p.online.eq(true))
        .right_semijoin(ctx.from.player_internal(), |(p, q)| p.player_id.eq(q.id))
        .r#where(|p| p.identity.eq(ctx.sender))
        .build()
}

/// Returns the moderators.
/// Equivalent to:
/// ```sql
/// SELECT p.* FROM player_internal p JOIN moderator_internal m ON p.id = m.player_id
/// ```

#[spacetimedb::view(name = moderator, public)]
fn moderator(ctx: &AnonymousViewContext) -> Query<Player> {
    ctx.from
        .player_internal()
        .left_semijoin(ctx.from.moderator_internal(), |(p, m)| p.id.eq(m.player_id))
        .build()
}

Examples (TypeScript)

import { schema, table, t, type RowObj } from 'spacetimedb/server';

const playerState = table('playerState', {
  playerId: t.u64().unique(),
  online: t.bool(),
});

const playerInternal = table('playerInternal', {
  id: t.u64().primaryKey().autoInc(),
  identity: t.identity().unique(),
  name: t.string(),
  age: t.u8().index('btree'),
});

const spacetimedb = schema(playerState, playerInternal);

spacetimedb.view(
  { name: 'my_online_player', public: true },
  t.array(playerInternal.row()),
  ctx => {
    return ctx.from.playerState
      .where(p => p.online.eq(true))
      .rightSemijoin(ctx.from.playerInternal, (p, q) => p.playerId.eq(q.id))
      .where(p => p.identity.eq(ctx.sender))
      .build();
  }
);

Bug Fixes

  • Fixes an issue with the --delete-data=on-conflict flag of spacetimedb publish
  • Fixes an issue where databases were returning 400/500 errors after publishing with -c
  • Fixes an issue where on_insert and on_delete were not firing correctly for per-client (ViewContext) views

What's Changed

New Contributors

Full Changelog: clockworklabs/SpacetimeDB@v1.10.0...v1.11.0

v1.10.0: - Procedures and HTTP Requests

Today we have an absolute game changer for SpacetimeDB. SpacetimeDB 1.10 introduces the ability for databases to perform HTTP requests to external services right from within your module! This is one of our most-requested features, and we're very excited to share it with you all.

SpacetimeDB Reducers are extremely powerful. They are atomic, transactional, pure, retryable, and replayable. The challenge was: in order to maintain these properties and guarantees, they need to be isolated from the outside world and can't be allowed to cause any observable side effects.

However, HTTP requests are inherently side-effecting, and are too useful not to have. It turns out the solution is pretty simple: keep reducers side effect free, and introduce a new kind of database function with weaker guarantees and more powers. Enter a new type of SpacetimeDB function: Procedures.

Examples

Just like a reducer, a procedure is a function defined in your module which runs inside the database. Unlike a reducer, procedures don't correspond 1-to-1 with transactions. Instead, you explicitly manage transactions inside the body of your procedure:

#[spacetimedb::procedure]
fn find_highest_level_player(ctx: &mut ProcedureContext) {
    let highest_level_player = ctx.with_tx(|ctx| {
        ctx.db.player().iter().max_by_key(|player| player.level)
    });
    match highest_level_player {
        Some(player) => log::info!("Congratulations to {}", player.id),
        None => log::warn!("No players..."),
    }
}

Being able to run code in the database without a transaction opens a lot of possibilities for new APIs we could expose. The first of these, releasing today, is HTTP requests:

#[spacetimedb::procedure]
fn get_request(ctx: &mut ProcedureContext) {
    match ctx.http.get("https://example.invalid") {
        Ok(response) => {
            let (response, body) = response.into_parts();
            log::info!(
                "Got response with status {} and body {}",
                response.status,
                body.into_string_lossy(),
            )
        },
        Err(error) => log::error!("Request failed: {error:?}"),
    }
}

Take a look at the documentation on the new procedure APIs for more details,
and join us on Discord to let us know what other side effects you want APIs for!

As of this release, only Rust and TypeScript modules can define procedures. We're hard at work adding support to C# modules, and will be releasing them soon. We'll also be cleaning up the new APIs in response to your feedback, so for now procedures are unstable and subject to breaking changes.

TypeScript fixes

In this release, we've also fixed quite a few issues which were reported in the new TypeScript SDK.

  • This issue by exporting the SubscriptionHandle type with the REMOTE_MODULE type applied.
  • This issue by converting to camelCase for column names in code generation.
  • Fixes an issue where onMyReducer callbacks were passing arguments as variadic params, while the types indicated they would be passed as an object. onMyReducer((ctx, argA, argB, argC) => {}) vs onMyReducer((ctx, { argA, argB, argC}) => {})`
  • Fixes an issue where the table type name was used instead of the table name in code generation for constructing tables.
  • Fixes issue with ScheduleAt being used in non-table types.
  • Fixes issue where template projects do not use the correct lifecycle reducer setup
  • Fixes an issue where .insert() returns incorrect objects
  • Fixes an issue where .update() causes error with .autoInc() field

We intend for TypeScript modules and clients to rapidly approach stability. The most invasive breaking changes have already been made.

What's Changed

New Contributors

Full Changelog: clockworklabs/SpacetimeDB@v1.9.0...v1.10.0

v1.9.0: - Project Collaborators

Today we have a long overdue feature we're releasing, project collaborators! 👯

Project Collaborators

Now you can invite other members of your team to join your projects that you deploy to Maincloud.

image

In order to add collaborators, navigate to your project on the website and go to Settings > Collaborators, and then press Add People to add a new collaborator to your project.

Depending on the role you assign the user, they will be able to perform actions that were previously only possible for the database owner to run, including updating the module, viewing logs, and editing tables.

TypeScript (Beta) - API Update

We also have the first major update to our TypeScript API. This change dramatically improves usability in a few key areas and fixes some critical bugs in the TypeScript and React SDKs.

[!IMPORTANT]
This update also comes with a few breaking changes to the TypeScript API, which are detailed below. In general, we will try to minimize the number of changes to the existing API, but while TypeScript is in Beta we will be making a few important changes until we stabilize the API completely.

TypeScript Modules

TypeScript modules only get a modest change from the previous API:

  • Table accessor names and index accessor names are converted to camelCase on the ctx, so if your table name is foo_bar, the accessor changes from ctx.db.foo_bar to ctx.db.fooBar. This allows you to use whatever table name you want for your tables without running afoul of TypeScript linters.
  • Infer<> now also does InferTypeOfRow<> if applicable which means you can forget about InferTypeOfRow and just use Infer in all cases to get the type of a type builder.
TypeScript SDK

The TypeScript SDK has now been unified with the API of server modules. Code generation now uses the same types and functions that you use on the server. The eventual goals is to allow you to use your actual server types in your TypeScript client without needing to do any code generation. This leads to the following changes:

  • All types exported by generated files are now TypeBuilders, meaning that if you were previously using a type from a generated file, you will now have to do const x: Infer<typeof MyType> instead of const x: MyType. This may seem like an inconvenience, but it vastly improves a lot of the other APIs and is very flexible to extend and is inspired by the very powerful Zod library.
  • We no longer generate and export MyTypeVariants for sum types (these are now accessed by Infer<typeof MyType.variants.myVariant>)
  • Your module_bindings now export a tables object with references to all the TableDefs
  • Your module_bindings now export a reducers object with references to all the ReducerDefs
  • On the client my_table.iter() now returns IterableIterator instead of an Array
  • MyType.getTypeScriptAlgebraicType() has been replaced with MyType.algebraicType
  • Reducers are now called with the same format on the server and clients. e.g. ctx.reducers.createPlayer(argA, argB) -> ctx.reducers.createPlayer({ argA, argB })
  • Reducer callbacks now also take arguments the same way: ctx.reducers.onCreatePlayer(ctx, argA, argB) -> ctx.reducers.onCreatePlayer(ctx, { argA, argB }) & ctx.reducers.removeOnCreatePlayer(ctx, argA, argB) -> ctx.reducers.removeOnCreatePlayer(ctx, { argA, argB })
  • count() now returns a bigint instead of a number to match the server API e.g. myTable.count(): number -> myTable.count(): bigint. This may be changed in the future as it is unlikely that you will have a table with more than 2^53 rows.

Notable things that did not change:

  • MyType.serialize(writer: BinaryWriter, value: Infer<typeof MyType>) and MyType.deserialize(reader: BinaryReader): Infer<typeof MyType> are still supported exactly as before.
  • The MyType.MyVariant(...) constructor function on sum types is still present, but implemented with the private MyType.create('MyVariant', ...). We could choose to move away from this API later if we didn't like the variants polluting the namespace

[!WARNING]
You will need to regenerate your module bindings for your TypeScript clients with the latest version of the spacetime CLI tool.

React SDK

The React SDK gets a major improvement in both usability and correctness.

  • useSpacetimeDB() no longer takes type parameters
  • useSpacetimeDB() now returns a ConnectionState. All fields on the ConnectionState are not React state and will cause a rerender any time they change
  • useTable() now takes a TableDef parameter and type params are inferred
  • useTable() now just returns a tuple with the first element being an Array instead of a object with { rows }
  • Added a useReducer() React hook

So now you can write this in your React client:

  import { reducers, tables } from "./module_bindings";

  const { identity, isActive: connected } = useSpacetimeDB();
  const setName = useReducer(reducers.setName);
  const sendMessage = useReducer(reducers.sendMessage);
  const [onlineUsers] = useTable(tables.user, where(eq('online', true)));

The API for using a view is the same as using a table:

  const [myViewRows] = useTable(tables.myView);

What's Changed


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot enabled auto-merge (squash) October 15, 2025 17:28
@renovate renovate bot force-pushed the renovate/all-deps branch from d6465c6 to ee343d7 Compare October 16, 2025 00:41
@renovate renovate bot changed the title chore(deps): update all dependencies to 4.5.1 chore(deps): update all dependencies Oct 16, 2025
@renovate renovate bot force-pushed the renovate/all-deps branch 4 times, most recently from 67f7f77 to 5788ea6 Compare October 22, 2025 19:25
@renovate renovate bot force-pushed the renovate/all-deps branch 4 times, most recently from afec45b to 5ef36e7 Compare November 9, 2025 01:54
@renovate renovate bot force-pushed the renovate/all-deps branch 6 times, most recently from be108db to d488155 Compare November 14, 2025 04:04
@renovate renovate bot force-pushed the renovate/all-deps branch 6 times, most recently from 254efa9 to 83aab41 Compare November 21, 2025 21:46
@renovate renovate bot force-pushed the renovate/all-deps branch 6 times, most recently from 896693b to 0dd493a Compare December 3, 2025 06:50
@renovate renovate bot force-pushed the renovate/all-deps branch from 0dd493a to 321dc26 Compare December 9, 2025 16:13
@renovate renovate bot force-pushed the renovate/all-deps branch from 321dc26 to cc38327 Compare December 18, 2025 22:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant