mirror of
https://github.com/clockworklabs/SpacetimeDB.git
synced 2026-05-10 09:40:23 -04:00
docs/staging
90 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
dd3f7666bc |
Fix template global.json under Windows (#4357)
# Description of Changes Make the `global.json` files under `templates` into literal copies of the root one, instead of symlinks. The symlinks were causing template breakage when the CLI was built under windows. # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [x] Changing a template's global.json causes `cargo ci global-json-policy` to fail - [x] Making a template's global.json into a symlink also causes `cargo ci global-json-policy` to fail --------- Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
098afaf1a5 |
[TS] Improve autogen autocompletion and typing (#4309)
# Description of Changes All types are now defined and exported in `module_bindings/types.ts`, meanings there's only one module you need to import from to access types. # Expected complexity level and risk 2 # Testing n/a, no change in behavior. |
||
|
|
0590ab00f8 |
Rust docs updated for name to accessor (#4344)
# Description of Changes - Updated all markdown files that call out `#[spacetimedb::table(name` to `#[spacetimedb::table(accessor` - Updated the LLM details on the same change # API and ABI breaking changes N/A # Expected complexity level and risk 1 - Small rework in documentation to use the new # Testing - [x] Did a small double check on name vs accessor locally - [x] Codex tested all the LLM answers |
||
|
|
d0b9254ba7 |
Fix CI error stemming from cargo update (#4341)
# Description of Changes Now we only `cargo update` the dependencies of the module, not of `spacetimedb-cli`. --------- Signed-off-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com> |
||
|
|
96ba4ea742 |
Pinning C++ and Unreal to 1.12.0 (#4328)
# Description of Changes A few small changes to pin the version: - Updated the CMakeLists back from 2.0.0 to 1.12.0 - Updated the Unreal Blackholio tutorial documentation to target the 1.12.0 branch and not master - Updated the Unreal Blackholio tutorial to call out 2.0 is coming soon - Disabled the upgrade-version tool code path for C++ upgrades, but left logic in place for the near future # API and ABI breaking changes N/A # Expected complexity level and risk 1 - Docs change, config change, and blocking update path for C++ # Testing - [x] Reviewed the docs - [x] Tested update command locally - [x] Tested `spacetime init` for `basic-cpp` and successfully built |
||
|
|
e03b7d7516 |
Updated C# Name attribute to Accessor (#4306)
# Description of Changes Implementation of #4295 Convert existing `Name` attribute to `Accessor` to support new Canonical Case conversation of 2.0 # API and ABI breaking changes Yes, in C# modules, we no longer use the attribute name `Name`, it should now be `Accessor` # Expected complexity level and risk 1 # Testing - [X] Build and tested locally - [X] Ran regression tests locally |
||
|
|
e4098f98d9 |
Rust: macro change name -> accessor (#4264)
## Description of Changes
This PR primarily affects the `bindings-macro` and `schema` crates to
review:
### Core changes
1. Replaces the `name` macro with `accessor` for **Tables, Views,
Procedures, and Reducers** in Rust modules.
2. Extends `RawModuleDefV10` with a new section for:
* case conversion policies
* explicit names
New sections are not validated in this PR so not functional.
3. Updates index behavior:
* Index names are now always **system-generated** for clients. Which
will be fixed in follow-up PR when we start validating RawModuleDef with
explicit names.
* The `accessor` name for an index is used only inside the module.
## Breaking changes (API/ABI)
1. **Rust modules**
* The `name` macro must be replaced with `accessor`.
2. **Client bindings (all languages)**
* Index names are now system-generated instead of using explicitly
provided names.
**Complexity:** 3
A follow-up PR will reintroduce explicit names with support for case
conversion.
---------
Co-authored-by: rekhoff <r.ekhoff@clockworklabs.io>
Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
Co-authored-by: clockwork-labs-bot <bot@clockworklabs.com>
|
||
|
|
4c962b9170 |
spacetime.json config implementation (#4199)
# Description of Changes
This PR implements support for the `spacetime.json` configuration file
that can be used to set up common `generate` and `publish` targets. An
example of `spacetime.json` could look like this:
```
{
"dev_run": "pnpm dev",
"generate": [
{ "out-dir": "./foobar", "module-path": "region-module", "language": "c-sharp" },
{ "out-dir": "./global", "module-path": "global-module", "language": "c-sharp" },
],
"publish": {
"database": "bitcraft",
"module-path": "spacetimedb",
"server": "local",
"children": [
{ "database": "region-1", "module-path": "region-module", server: "local" },
{ "database": "region-2", "module-path": "region-module", server: "local" }
]
}
}
```
With this config, running `spacetime generate` without any arguments
would generate bindings for two targets: `region-module` and
`global-module`. `spacetime publish` without any arguments would publish
three modules, starting from the parent: `bitcraft`, `region-1`, and
`region-2`. On top of that, the command `pnpm dev` would be executed
when using `spacetime dev`.
It is also possible to pass additional command line arguments when
calling the `publish` and `generate` commands, but there are certain
limitations. There is a special case when passing either a module path
to generate or a module name to publish. Doing that will filter out
entries in the config file that do not match. For example, running:
```
spacetime generate --project-path global-module
```
would only generate bindings for the second entry in the `generate`
list.
In a similar fashion, running:
```
spacetime publish region-1
```
would only publish the child database with the name `region-1`
Passing other existing arguments is also possible, but not all of the
arguments are available for multiple configs. For example, when running
`spacetime publish --server maincloud`, the publish command would be
applied to all of the modules listed in the config file, but the
`server` value from the command line arguments would take precedence.
Running with arguments like `--bin-path` would, however, would throw an
error as `--bin-path` makes sense only in a context of a specific
module, thus this wouldn't work: `spacetime publish --bin-path
spacetimedb/target/debug/bitcraft.wasm`. I will throw an error unless
there is only one entry to process, thus `spacetime publish --bin-path
spacetimedb/target/debug/bitcraft.wasm bitcraft` would work, as it
filters the publish targets to one entry.
# API and ABI breaking changes
None
# Expected complexity level and risk
3
The config file in itself is not overly complex, but when coupled with
the CLI it is somewhat tricky to get right. There are also some changes
that I had to make to how clap arguments are validated - because the
values can now come from both the config file and the clap config, we
can't use some of the built-in validations like `required`, or at least
I haven't found a clean way to do so.
# Testing
I've added some automated tests, but more tests and manual testing is
coming.
---------
Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
Co-authored-by: bradleyshep <148254416+bradleyshep@users.noreply.github.com>
Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
Co-authored-by: = <cloutiertyler@gmail.com>
Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
|
||
|
|
c044d96a7a |
[TS] schema() takes an object (#4273)
# Description of Changes Implements the rest of the casing proposal. # Expected complexity level and risk <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [ ] <!-- maybe a test you want to do --> - [ ] <!-- maybe a test you want a reviewer to do, so they can check it off when they're satisfied. --> |
||
|
|
626e2090ac |
Typescript v2 API (#4271)
# Description of Changes This update the typescript sdk to use the v2 protocol. The main user-facing API change is removing the existing reducer callbacks, and instead having reducers return a `Promise`. # API and ABI breaking changes The reducer functions `conn.reducers.onX` and `conn.reducers.removeOnX` no longer exist, and reducers now return `Promise<void>`. # Expected complexity level and risk 2.5. # Testing This has mostly been tested manually. I'm still updating some of the unit tests (I commented out the ones that used reducer callbacks). --------- Co-authored-by: Phoebe Goldman <phoebe@goldman-tribe.org> Co-authored-by: = <cloutiertyler@gmail.com> |
||
|
|
7677b5478f |
[TS] Export reducers, etc from a module (#4220)
# Description of Changes Haven't changed `schema()` to accept an object yet, maybe that's for a followup? Now everything exported from the module must be exported from the typescript module. # Expected complexity level and risk <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [ ] <!-- maybe a test you want to do --> - [ ] <!-- maybe a test you want a reviewer to do, so they can check it off when they're satisfied. --> |
||
|
|
e50b5f3930 |
LLM Oneshot Prompts, Oneshotted Apps, and Cursor Rules (C#/Rust/TS) (#4032)
# Description of Changes This PR introduces an **LLM One-Shot App Generation** benchmarking framework and comprehensive **Cursor rules for SpacetimeDB development**. **Cursor Rules (`docs/.cursor/rules/`):** - `spacetimedb.mdc` - General SpacetimeDB concepts and architecture - `spacetimedb-csharp.mdc` - C# module and client patterns - `spacetimedb-rust.mdc` - Rust module development - `spacetimedb-typescript.mdc` - TypeScript SDK usage **LLM One-Shot Framework (`tools/llm-oneshot/`):** - Benchmarking tool to measure how well AI can one-shot SpacetimeDB apps - Composable prompt system with 12 cumulative feature levels (basic chat → full-featured with threading, permissions, presence, etc.) - Support for 4 tech stacks: TypeScript+SpacetimeDB, TypeScript+PostgreSQL, Rust+SpacetimeDB, C#+SpacetimeDB - Additional Cursor rules for deployment, grading, and frontend patterns **Sample One-Shotted Apps:** - Multiple chat-app implementations (TypeScript, Rust, C#/MAUI) - Multiple paint-app implementations (TypeScript, Rust, C#/MAUI) # API and ABI breaking changes None - this is a documentation and tooling addition only. # Expected complexity level and risk **1** - Trivial addition of documentation, tooling, and example applications. No changes to core SpacetimeDB functionality. The `tools/llm-oneshot/` folder is entirely self-contained and the Cursor rules in `docs/` are purely informational. # Testing - [ ] Verified Cursor rules load correctly in IDE - [ ] Ran one-shot generation with various prompt levels to validate rules work - [ ] Sample apps compile and deploy correctly |
||
|
|
a78b056fcc |
Reorganize types generated for typescript clients (#4258)
NOTE: Cherry-picking https://github.com/clockworklabs/SpacetimeDB/pull/4127 from the `2.0-breaking-changes` branch. ## Original PR Description This changes generated types in ts client bindings. We currently generate a few different types of types: reducer args, procedure args, rows, and user defined types. To avoid potential conflicts between these types (for example, if a user defined a type called `FooRow`, and also had a tabled named `foo`, we would end up with two types named `FooRow`), this puts each set of types in a different file and namespace. We also stopped exporting the `xxxRow` types, because there is always another type generated for those. We now have a `types` directory, which has an `index.ts` with user defined types, along with `reducers.ts` and `procedures.ts` for the types generated for reducer/procedure parameters. ``` import type * as Types from './module_bindings/types'; var currentMessages: Types.Message[] = []; ``` or ``` import { type Message } from './module_bindings/types'; var currentMessages: Message[] = []; ``` This has a couple other changes: - For procedure and reducer types, this adds a suffix of `Args`, since we may want types for the return values in the future. - For all of the types, instead of exposing the schema object, we are now giving the typescript type (e.g. `export type Message = __Infer<typeof MessageRow>;`). I couldn't think of a reason for users to want the schema object, so this should save users from needing to do all of the `Infer` boilerplate. This is a breaking change for v2. 2. This only changes typescript, and it should generally make thing easier to use. --------- Co-authored-by: Jeffrey Dallatezza <jeffreydallatezza@gmail.com> |
||
|
|
2d656d49b6 |
Block procedures from requesting private ip ranges (#4243)
# Description of Changes Blocks procedures from requesting private ip ranges after dns resolution. Adds a new cargo feature to `spacetimedb-standalone` permitting loopback http requests in test environments only. # API and ABI breaking changes None # Expected complexity level and risk 2. I may have missed a range. # Testing - [x] Unit tests for IP address matching - [x] Smoketests for blocking a private IP address |
||
|
|
52b6c66fa1 |
Add C++ Bindings (#3544)
# Description of Changes This adds C++ server bindings (/crate/bindings-cpp) to allow writing C++ 20 modules. - Emscripten WASM build system integration with CMake - Macro-based code generation (SPACETIMEDB_TABLE, SPACETIMEDB_REDUCER, etc) - All SpacetimeDB types supported (primitives, Timestamp, Identity, Uuid, etc) - Product types via SPACETIMEDB_STRUCT - Sum types via SPACETIMEDB_ENUM - Constraints marked with FIELD* macros # API and ABI breaking changes None # Expected complexity level and risk 2 - Doesn't heavily impact any other areas but is complex macro C++ structure to support a similar developer experience, did have a small impact on init command # Testing - [x] modules/module-test-cpp - heavily tested every reducer - [x] modules/benchmarks-cpp - tested through the standalone (~6x faster than C#, ~6x slower than Rust) - [x] modules/sdk-test-cpp - [x] modules/sdk-test-procedure-cpp - [x] modules/sdk-test-view-cpp - [x] Wrote several test modules myself - [x] Quickstart smoketest [Currently in progress] - [ ] Write Blackholio C++ server module --------- Signed-off-by: Jason Larabie <jason@clockworklabs.io> Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> Co-authored-by: Ryan <r.ekhoff@clockworklabs.io> Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com> |
||
|
|
d3f59480e2 |
Bump Rust to 1.93.0 (#4180)
# Description of Changes Required in order to bump rolldown to its latest version, which I'm planning to do afterwards. I also figure we may as well do this before releasing a major version. # Expected complexity level and risk 2 # Testing n/a |
||
|
|
21cf6afe54 |
CI - Merge xtask-smoketest into cargo ci smoketests (#4185)
# Description of Changes Just merging two CI packages into one. # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing - [x] CI passes - [x] `cargo ci smoketests prepare` still just builds the binaries --------- Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Signed-off-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Co-authored-by: = <cloutiertyler@gmail.com> Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com> Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Co-authored-by: Tyler Cloutier <cloutiertyler@aol.com> |
||
|
|
9686139dbc |
Translate smoketests from Python to Rust (#4102)
# Description of Changes
This PR translates all of our Python smoketests into Rust tests which
can be run from `cargo run`
## Motivation
The purpose of this fivefold:
1. All developers on the team are familiar with Rust
2. It simplifies our devops because we can drop Python as a dependency
to run the tests
3. You can now run all tests in the repo through the single `cargo test`
interface
4. Because we use the `SpacetimeDbGuard` and `cargo test`/`cargo
nextest` we can easily parallelize the smoke tests
5. The smoketests can now use machinery imported from SpacetimeDB crates
(e.g. `bsatn` etc.)
IMPORTANT NOTE!
There are several ways to implement the smoke tests in Rust (none are
great):
1. A separate xtask specifically for the smoke tests
- This doesn't solve the problem of the CLI tests which also use the
`guard` crate
- Idiosyncratic way to run the smoke tests as opposed to cargo test
- Does NOT resolve the cargo within cargo problem because we still have
to build the test modules with cargo
2. A `build.rs` script in `guard` which first builds the executables as
a compile step for compiling guard
- Deadlocks on a cargo lock file conflict (Outer cargo compiles guard →
runs build.rs, inner cargo tries to acquire the build directory lock,
outer cargo holds the directory lock, deadlock)
- If you fix the deadlock by using different target dirs, it still looks
stuck on building guard because it's actually compiling all of
spacetimedb-standalone and spacetimedb-cli.
- Still technically runs cargo inside of cargo.
3. Add `spacetimedb-cli` and `spacetimedb-standalone` as an artifact
dependency of the guard crate
- Has good and clear output but requires +nightly when running the
smoketests and CLI tests, otherwise won't do the right thing. See
https://github.com/rust-lang/cargo/issues/9096
4. Compile the executables at runtime during the tests themselves where
the first test takes a lock while the executables are building using
cargo within cargo
- Makes the tests look like they're taking a long time when they're just
waiting for the build to complete
- Requires relatively complex locking machinery across
binaries/tests/processes
5. A two step solution where the developer has to build the binaries
before calling the smoke tests
- Very error prone
None of these are good. `xtask` is not bad, but doesn't enable us to run
other integration tests in other crates (e.g. the CLI)
(3) is the correct solution and has the best user experience, but it
requires nightly and I don't want to introduce that for all of our
tests.
I have chosen to do a combination of (1) and (4). You will now run the
smoketests with `cargo smoketest`. If you run `cargo test --all` (or use
`guard`) without doing `cargo smoketest` it will fall back to (4) which
compiles the executables at runtime. Running `cargo build` is the **only
way** to ensure that the executables are not stale because of the
internal fingerprint checking. Everything else is fragile not robust.
NOTE! There is no way to avoid cargo within cargo and have the smoke
tests be run as cargo tests because the modules under test must be
compiled with cargo.
# API and ABI breaking changes
Note that this is a BREAKING CHANGE to `cargo test --all`. The
smoketests are now part of `cargo test --all` unless you specifically
exclude them.
# Expected complexity level and risk
3, this is partially AI translated. We need to carefully review to
ensure the semantics have not regressed.
# Testing
<!-- Describe any testing you've done, and any testing you'd like your
reviewers to do,
so that you're confident that all the changes work as expected! -->
- [ ] <!-- maybe a test you want to do -->
- [ ] <!-- maybe a test you want a reviewer to do, so they can check it
off when they're satisfied. -->
---------
Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
Signed-off-by: Zeke Foppa <196249+bfops@users.noreply.github.com>
Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com>
Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com>
|
||
|
|
0977098ea1 |
Fix for cargo ci dlls missing some .meta files (#4178)
# Description of Changes This patches a regression introduced in [#4033](https://github.com/clockworklabs/SpacetimeDB/pull/4033) where cargo ci dlls stopped copying the Unity .meta files that live outside the package skeleton tree: 1. `overlay_unity_meta_skeleton` now copies any `sdks/csharp/unity-meta-skeleton~/spacetimedb.<pkg>.meta` file into `sdks/csharp/packages/` before overlaying nested content. 2. Added support for a `version.meta` template inside each skeleton package; it’s renamed to match the single restored version directory (e.g. `1.11.2.meta`). 3. Added the missing `version.meta` templates for both `spacetimedb.bsatn.runtime` and `spacetimedb.runtime`, based on the historical GUIDs Unity already knows about. Together this restores the `spacetimedb.bsatn.runtime.meta` and `<version>.meta` files that Unity requires to keep those folders visible when developers run `cargo ci dlls` on a clean checkout. # API and ABI breaking changes None. This only affects the CI helper responsible for syncing Unity metadata. # Expected complexity level and risk 2 — localized changes to the CI helper and skeleton assets. Primary risk is forgetting a template or mis-copying a GUID; the code paths themselves are straightforward. # Testing - [X] Ran `cargo check -p ci` - [X] Ran `cargo ci dlls` on a clean tree, verifying that: * `sdks/csharp/packages/spacetimedb.bsatn.runtime.meta` exists * The restored version directory (e.g. `sdks/csharp/packages/spacetimedb.bsatn.runtime/1.11.2.meta`) exists - [X] Locally launched Unity with a SpacetimeDB project and had no errors/issues. |
||
|
|
72ae889c94 |
templates/basic-rs properly uses workspace versions (#4170)
# Description of Changes Replaced the specific versions in `templates/basic-rs` with relative paths into the repo. This was split out of https://github.com/clockworklabs/SpacetimeDB/pull/4102. # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing - [x] Upgrade version check still passes --------- Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
6772f0c171 |
Make global.json global again (#4166)
# Description of Changes We have had several `global.json` files introduced that aren't symlinks to the root `global.json`. This PR fixes that drift, and adds a CI check. # API and ABI breaking changes None. # Expected complexity level and risk 2 # Testing - [x] `cargo ci global-json-policy` succeeds - [x] `cargo ci global-json-policy` fails if you add a new `global.json` file somewhere - [x] Rest of CI passes, confirming that templates are still working properly --------- Signed-off-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> |
||
|
|
3d3c99f8db |
Shrink JsWorkerRequest & use the right HashMap/Set (#4150)
# Description of Changes This PR shrinks `JsWorkerRequest` so that it is (almost) as small as the call reducer request. To do that, a bunch of trivial changes had to be done to auth code, that mostly revolves around `String` -> `Box<str>`. This should help the auth code, but that is incidental. The main goal was to improve throughput through the request tx/rx channel for V8, which is taking quite a bit of time in flamegraphs. I also noticed while making this change that the wrong hash map was being used in a bunch of places, so I fixed all of those. A follow up PR will shrink the reply side to fit within a cache line. Yet another follow up PR will change the channel to replace flume with `fibre::spsc`. # API and ABI breaking changes None # Expected complexity level and risk 2, fairly trivial changes. # Testing Covered by existing tests. |
||
|
|
65718da1bc |
Add spacetime login --no-browser (#4142)
# Description of Changes Addresses https://github.com/clockworklabs/SpacetimeDB/issues/4131. I did not thread the new option into other commands such as `spacetime init` (they just retain the previous behavior). I think this is a relatively niche use case, and it's easy to work around either way (by just using `spacetime login` first) so I'd wait until someone asks us to thread it through to other places. # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing - [x] Ran `spacetime login --no-browser` and saw that it didn't open a browser - [x] Ran `spacetime login` and saw that it still opened a browser --------- Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> |
||
|
|
504b13ba4a |
Small docs improvement (#4071)
# Description of Changes
Two documentation improvements:
1. **Reducers documentation**: Clarified that using global/static
variables in reducers is **undefined behavior**, not just "values won't
persist". Added six specific reasons why this is undefined:
- Fresh execution environments
- Module updates
- Concurrent execution
- Crash recovery
- Non-transactional updates
- Replay safety
2. **Access permissions documentation**: Replaced the "Combining Both
Techniques" example that used indexes on Option fields (which
SpacetimeDB doesn't support) with a working example that filters by a
required `department` field instead.
# API and ABI breaking changes
None. Documentation only.
# Expected complexity level and risk
1 - Documentation changes only.
# Testing
- [ ] Verify the reducers warning is clear and accurate
- [ ] Verify the access permissions example compiles and makes sense
---------
Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com>
Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
|
||
|
|
7e202db606 |
Fix the upgrade version tool (#4085)
# Description of Changes <!-- Please describe your change, mention any related tickets, and so on here. --> This fixes 2 issues with the upgrade version tool: 1. The typescript bindings need to be updated otherwise the typescript test in CI will fail 2. The snapshots need to be updated When the version upgrade tool check in CI runs, snapshot changes are accepted automatically via the `--accept-snapshots` cli argument. When you are running this tool locally without `--accept-snapshots` you will be asked to manually review the snapshot changes before doing a final test to make sure the snapshots are correct. # API and ABI breaking changes <!-- If this is an API or ABI breaking change, please apply the corresponding GitHub label. --> None # Expected complexity level and risk 1 - this just updates the version upgrade tool <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [x] Version bump 1.12.0 worked: https://github.com/clockworklabs/SpacetimeDB/pull/4084 - [x] CI passes --------- Signed-off-by: John Detter <4099508+jdetter@users.noreply.github.com> Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com> |
||
|
|
cd1ec90d16 |
Templates naming standarization (#4042)
# Description of Changes This PR renames the templates to always use shorthand for the language, specify a framework (or console) if necessary, and shorten the naming in general # Expected complexity level and risk 1 # Testing I've tested generating templates manually --------- Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> |
||
|
|
d8d63e2d29 |
Reduce Test Suite test concurrency to reduce test flakes (#3979)
# Description of Changes <!-- Please describe your change, mention any related tickets, and so on here. --> This PR started as an experiment to see if restricting the amount of test job threads would reduce the flakiness in the `Test Suite` CI job. I have tested several values here (`1`, `2` and `10`) and I believe 2 is very stable. I'm also very confused with this change because it seems like somehow the `Test Suite` CI job is now faster than it was before: Before: <img width="502" height="57" alt="image" src="https://github.com/user-attachments/assets/d944041c-8ccc-4382-a8a7-06e7ff5cba12" /> After: <img width="481" height="46" alt="image" src="https://github.com/user-attachments/assets/49b89143-b201-4a1a-820c-13e5b3feda76" /> It's possible that having less test threads means less cpu contention on the github runners, but I'm not completely sure. It could also somehow be less lock contention in SpacetimeDB. I have looked at the output of the `Test Suite` job and it does appear that all tests are running. # API and ABI breaking changes <!-- If this is an API or ABI breaking change, please apply the corresponding GitHub label. --> None # Expected complexity level and risk 0 - this only updates our workflow and has no impact on the code. <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [x] CI is passing and `Test Suite` is less flakey --------- Signed-off-by: John Detter <4099508+jdetter@users.noreply.github.com> |
||
|
|
1fd3394972 |
Add cargo ci dlls command for building C# DLLs and NuGet packages (#4033)
# Description of Changes * Added a new `cargo ci dlls` subcommand to build/pack the in-repo C# NuGet packages and the C# SDK. * `cargo ci dlls` restores `sdks/csharp/SpacetimeDB.ClientSDK.csproj` using the freshly built local package outputs as to populate `sdks/csharp/packages/**`. * Added a Unity `.meta` skeleton under `sdks/csharp/unity-meta-skeleton~/**` and overlays those `.meta` files onto the latest restored versioned package directory to keep Unity GUIDs stable and import settings consistent. * Unity-specific import fixes are captured in the skeleton overlay (notably: preventing Unity from importing incompatible TFMs like `net8.0`, and marking analyzer DLLs with the `RoslynAnalyzer` label so Unity can recognize them). # How to use (local) ```bash # Build/pack + restore local packages into sdks/csharp/packages/** cargo ci dlls ``` # API and ABI breaking changes N/A # Expected complexity level and risk 2 - Local developer tooling + file overlay into restore output; no runtime/SDK API behavior changes. # Testing - [x] `cargo check -p ci` - [x] Ran `cargo ci dlls` and verified the output under `sdks/csharp/packages/**` and the various NuGet package locations. - [x] Tested a Unity project importing the SpacetimeDB SDK after generating output and confirmed no errors. --------- Signed-off-by: Ryan <r.ekhoff@clockworklabs.io> Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com> |
||
|
|
3b9497e318 |
Empty commit basically (#4088)
Empty commit to fix llm benchmark. --------- Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> |
||
|
|
b5a7b37660 |
Fixes C# benchmark test failures caused by table naming convention mismatches (#4059)
# Description of Changes
Adds TypeScript as a third language for LLM benchmark tests alongside
Rust and C#, and fixes table naming convention mismatches.
**TypeScript Support:**
- Added `Lang::TypeScript` variant with camelCase naming conventions
- Created TypeScript project template (`templates/typescript/server/`)
with package.json, tsconfig.json, and index.ts
- Added TypeScript publisher that uses `spacetime build` and `spacetime
publish`
- Created 22 TypeScript task prompts and golden answer files for all
benchmark tests
- Updated prompt discovery to find `tasks/typescript.txt` files
**Table Naming Fix:**
- Standardized on singular table names across all languages:
- Rust: `user` (snake_case singular)
- C#: `User` (PascalCase singular)
- TypeScript: `user` (camelCase singular)
- Updated `table_name()` helper to convert singular names to appropriate
case per language
- Updated all spec.rs files to use `table_name("user", lang)` instead of
hardcoded `"users"`
**CI/Hashing Improvements:**
- Added `compute_processed_context_hash()` for language-specific hash
computation after tab filtering
- Updated CI check to verify both `rustdoc_json` and `docs` modes for
Rust
- Fixed `--hash-only` mode to skip golden builds
# API and ABI breaking changes
None - these are internal benchmark tooling changes only.
# Expected complexity level and risk
**Complexity: 2**
The changes add a new language following existing patterns for Rust and
C#. The table naming fixes are straightforward find-and-replace style
updates. Low risk since this only affects the benchmark tooling, not the
core SpacetimeDB codebase.
# Testing
- [x] `cargo build -p xtask-llm-benchmark` compiles successfully
- [x] All 22 TypeScript golden modules build and publish successfully
- [x] Rust and C# benchmarks unaffected by changes
---------
Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com>
|
||
|
|
6273d8e8dc |
fix: docs llm test. make tables that we sql query public (#4058)
# Description of Changes <!-- Please describe your change, mention any related tickets, and so on here. --> in the llm tests we run to see if docs update break llms. we are making sql queries to tables that we did not set to public what means the sql query will fail # API and ABI breaking changes <!-- If this is an API or ABI breaking change, please apply the corresponding GitHub label. --> # Expected complexity level and risk 1 <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> Run /update-llm-benchmark and see if it fixes the sql query issues. Signed-off-by: Boegie19 <34578426+Boegie19@users.noreply.github.com> |
||
|
|
73881e38f7 |
Further misc docs changes (#4029)
# Description of Changes Major documentation overhaul focusing on tables, column types, and indexes. **Quickstart Guides:** - Updated React, TypeScript, Rust, and C# quickstarts with table/reducer examples - Fixed CLI syntax (positional `--database` argument) - Improved template consistency across languages **Tables Documentation:** - Added "Why Tables" section explaining table-oriented design philosophy (tables as fundamental unit, system tables, data-oriented design principles) - Added "Physical and Logical Independence" section explaining how subscription queries use the relational model independently of physical storage - Added brief sections linking to related pages (Visibility, Constraints, Schedule Tables) - Renamed "Scheduled Tables" to "Schedule Tables" throughout (tables store schedules; reducers are scheduled) **Column Types:** - Split into dedicated page with unified type reference table - Added "Representing Collections" section (Vec/Array vs table tradeoffs) - Added "Binary Data and Files" section for Vec<u8> storage patterns - Added "Type Performance" section (smaller types, fixed-size types, column ordering for alignment) - Added complete example struct demonstrating all type categories - Renamed "Structured" category to "Composite" **Indexes:** - Complete rewrite with textbook-style documentation - Added "When to Use Indexes" guidance - Documented single-column and multi-column index syntax (field-level and table-level) - Comprehensive range query examples with correct TypeScript `Range` class syntax - Explained multi-column index prefix matching semantics - Added index-accelerated deletion examples - Included index design guidelines **Styling:** - Added CSS for table border radius and row separators - Created Check component for green checkmarks in tables # API and ABI breaking changes None. Documentation only. # Expected complexity level and risk 1 - Documentation changes only, no code changes. # Testing - [ ] Verify docs build without errors - [ ] Review rendered pages for formatting issues - [ ] Confirm code examples are syntactically correct --------- Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Signed-off-by: John Detter <4099508+jdetter@users.noreply.github.com> Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com> |
||
|
|
38ee9e89ba |
CI - Fix hint for fixing llm benchmarks (#4040)
# Description of Changes I believe that local users do not have API tokens for OpenAI, so the existing hint was not helpful. Apparently the correct path is to post `/update-llm-benchmark` on the PR and let the CI take care of it. # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing None --------- Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
eb11d67f91 |
Fix LLM benchmark Rust wrong struct name (#4043)
# Description of Changes <!-- Please describe your change, mention any related tickets, and so on here. --> Fix LLM benachmarks in rust since they used Result instead of ResultRow in the request to the LLM making it always fail. 1. see the answer's file there it is ResultRow. 2. Result is a keyword so it will always fail # API and ABI breaking changes <!-- If this is an API or ABI breaking change, please apply the corresponding GitHub label. --> # Expected complexity level and risk <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> 1 # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> Run /update-llm-benchmark to see if more passes. --------- Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com> Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
3c8836b1a3 |
Templates rework (#3879)
# Description of Changes We would like to move all of the templates to a central directory # API and ABI breaking changes None # Expected complexity level and risk 2 # Testing --------- Co-authored-by: spacetimedb-bot <spacetimedb-bot@users.noreply.github.com> |
||
|
|
b00ba57ed0 |
Fix CI hash save in llm quick fix summary file (#3963)
# Description of Changes Previously the run file was used with ci-check, and whatever summary hash was not used. I have updated the `ensure_mode` to always update the hash in the summary file. # API and ABI breaking changes <!-- If this is an API or ABI breaking change, please apply the corresponding GitHub label. --> # Expected complexity level and risk <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [ ] <!-- maybe a test you want to do --> - [ ] <!-- maybe a test you want a reviewer to do, so they can check it off when they're satisfied. --> |
||
|
|
b75bf6decf |
LLM Benchmarking (#3486)
# Description of Changes Introduce a new **LLM benchmarking app** and supporting code. * **CLI:** `llm` with subcommands `run`, `routes list`, `diff`, `ci-check`. * **Runner:** executes globally numbered tasks; filters by `--lang`, `--categories`, `--tasks`, `--providers`, `--models`. * **Providers/clients:** route layer (`provider:model`) with HTTP LLM Vendor clients; env-driven keys/base URLs. * **Evaluation:** deterministic scorers (hash/equality, JSON shape/count, light schema/reducer parity) with clear failure messages. * **Results:** stable JSON schema; single-file HTML viewer to inspect/filter/export CSV. * **Build & guards:** build script for compile-time setup; * **Docs:** `DEVELOP.md` includes `cargo llm …` usage. This PR is the initial addition of the app and its modules (runner, config, routes, prompt/segmentation, scorers, schema/types, defaults/constants/paths/hashing/combine, publishers, spacetime guard, HTML stats viewer). ### How it works 1. **Pick what to run** * Choose tasks (`--tasks 0,7,12`), or a language (`--lang rust|csharp`), or categories (`--categories basics,schema`). * Optionally limit vendors/models (`--providers …`, `--models …`). 2. **Resolve routes** * Read env (API keys + base URLs) and build the active set (e.g., `openai:gpt-5`). 3. **Build context** * Start Spacetime * Publish golden answer modules * Prepare prompts and send to LLM model * Attempt to publish LLM module 4. **Execute calls** * Run the selected tasks within each test against selected models and languages. 5. **Score outputs** * Apply deterministic scorers (hash/equality, JSON shape/count, simple schema/reducer checks). * Record the score and any short failure reason. 6. **Update results file** * Write/update the single results JSON with task/route outcomes, timings, and summaries. # API and ABI breaking changes None. New application and modules; no existing public APIs/ABIs altered. # Expected complexity level and risk **4/5.** New CLI, routing, evaluation, and artifact format. * External model APIs may rate-limit/timeout; concurrency tunable via `LLM_BENCH_CONCURRENCY` / `LLM_BENCH_ROUTE_CONCURRENCY`. # Testing I ran the full test matrix and generated results for every task against every vendor, model, and language (rust + C#). I also tested the CI check locally using [act](https://github.com/nektos/act). **Please verify** * [ ] `llm run --tasks 0,1,2` (explicit `run`) * [ ] `llm run --lang rust --categories basics` (filters) * [ ] `llm run --categories basics,schema` (multiple categories) * [ ] `llm run --lang csharp` (language switch) * [ ] `llm run --providers openai,anthropic --models "openai:gpt-5 anthropic:claude-sonnet-4-5"` (provider/model limits) * [ ] `llm run --hash-only` (dry integrity) * [ ] `llm run --goldens-only` (test goldens only) * [ ] `llm run --force` (skip hash check) * [ ] `llm ci-check` * [ ] Stats viewer loads the JSON; filtering and CSV export work * [ ] CI works as intended --------- Signed-off-by: bradleyshep <148254416+bradleyshep@users.noreply.github.com> Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Tyler Cloutier <cloutiertyler@aol.com> Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Co-authored-by: spacetimedb-bot <spacetimedb-bot@users.noreply.github.com> Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com> |
||
|
|
70628fb51e |
cargo ci on windows (#3859)
# Description of Changes Make `cargo ci` work properly on Windows, in preparation for https://github.com/clockworklabs/SpacetimeDB/pull/3702. # API and ABI breaking changes No. CI-only. # Expected complexity level and risk 2. Not trivial, but not complicated. # Testing - [x] CI output seems to be genuinely running the tests, and it's passing on Windows - [x] Make a change to `crates/bindings-csharp` and see that `cargo ci test` fails - [x] I can manually run a minimal `cargo ci smoketests` invocation on a Windows machine --------- Signed-off-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Co-authored-by: Kasama <robertoaall@gmail.com> Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
f49945cc6a |
Fix CLI reference generation (#3403)
# Description of Changes Add back the instructions for regenerating CLI docs, which were removed in https://github.com/clockworklabs/SpacetimeDB/pull/3343. I also made a script for it. This also fixes the CI checking this file, which was silently broken in the same PR. I have **not** verified that this works in Git Bash in Windows. # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing - [x] CI passes - [x] CI fails if I change the CLI reference - [x] CLI reference looks visually reasonable on a local `pnpm dev` --------- Signed-off-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
5ac65739e5 |
add initial cargo ci (#3409)
# Description of Changes This changes the ci runs to execute `cargo ci` instead of running commands directly from the github workflow. The goal here is to unify the commands under `cargo ci` so that it's easier and more intuitive to run locally # API and ABI breaking changes There are no API/ABI changes. <!-- If this is an API or ABI breaking change, please apply the corresponding GitHub label. --> # Expected complexity level and risk Complexity: 1 It is not a complex change as it is mostly localized to the ci runs and is easily reversible if something goes wrong. The biggest risk here is to have future CI runs break, which can be remediated by reverting these changes. <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [x] run `cargo ci` and its subcommands locally - [x] run the github workflow against this branch to check if the CI jobs are working properly. --------- Signed-off-by: Zeke Foppa <196249+bfops@users.noreply.github.com> Signed-off-by: Roberto Pommella Alegro <robertoaall@gmail.com> Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com> |
||
|
|
ce543854e9 |
Unifies server module library and client SDK for TypeScript (and fixes several bugs) (#3559)
# Description of Changes This PR is a very large change to the workings of the TypeScript SDK and as such requires a higher bar of testing than other PRs. However, it does several important things: 1. Unifies the API of the server and client so they not only have the same API, but they actually implement it with the same TypeScript types. This fixes several inconsistencies between them and fixes several small bugs as well. 2. Closes https://github.com/clockworklabs/SpacetimeDB/issues/3365 3. Closes https://github.com/clockworklabs/SpacetimeDB/issues/3431 4. Closes https://github.com/clockworklabs/SpacetimeDB/issues/3435 5. Subsumes the work done in https://github.com/clockworklabs/SpacetimeDB/pull/3447 6. Derives all type information on the client from a single `RemoteModule` type which vastly cleans up the correctness of type checking on the client and helped me to find several small bugs It accomplishes this by changing code generation of TypeScript on the client to code generation approximately what a developer would manually write in their module. The ultimate goal would be to allow the developer to use the types and functions that they define on in their module directly on the client without needing to do any code generation at all, provided they are using TypeScript on the server and client. https://github.com/clockworklabs/SpacetimeDB/issues/3365 is resolved by `.build()`ing the `DbConnection` inside a React `useEffect` rather than doing it directly in line with the render of the provider. In order to do that we needed to not expose the `DbConnection` directly to developers by returning a different type from `useSpacetimeDB`. `useSpacetimeDB` now returns a `ConnectionState` object which is stored as React state and updates when any of the fields change. This change also resolves https://github.com/clockworklabs/SpacetimeDB/issues/3431. https://github.com/clockworklabs/SpacetimeDB/issues/3435 was the issue that initially lead me down the rabbit hole of unifying the server and the client because it was nearly impossible to track down all the various type functions and how they connect to the values that we code generate on the server. After several hours of attempting this, I decided to clean up the types a bit to be more uniform. Implementing the unification between the client and the server also necessitated fully implemented parts of the API that were fully implemented on the server, but were broken or missing on the client. # API and ABI breaking changes [Unification] -> Means that this is breaking behavior for the client SDK, but that the new behavior is identical to the server's existing behavior ## Breaking changes: - Table accessor names and index accessor names are converted to camelCase on the `ctx`, so `ctx.db.foo_bar` is now `ctx.db.fooBar` - [Unification] On the client `my_table.iter()` returns `IterableIterator` instead of an `Array` - [Unification] `module_bindings` now export `TypeBuilder`s for all types instead of a `type MyType` and object `MyType`, so instead of using `MyType` as a type directly, you need to infer the type `MyType` -> `Infer<typeof MyType>`. - [Unification] We no longer generate and export `MyTypeVariants` for sum types (these are now accessed by `Infer<typeof MyType.variants.myVariant>`) - [Unification] `MyType.getTypeScriptAlgebraicType()` has been replaced with `MyType.algebraicType` - `useSpacetimeDB()` no longer takes type parameters - `useTable()` now takes a `TableDef` parameter and type params are inferred - `useTable()` now just returns an `Array` directly instead of a object with `{ rows }` - [Unification] `ctx.reducers.createPlayer(argA, argB)` -> `ctx.reducers.createPlayer({ argA, argB })` - [Unification] `ctx.reducers.onCreatePlayer(ctx, argA, argB)` -> `ctx.reducers.onCreatePlayer(ctx, { argA, argB })` - [Unification] `ctx.reducers.removeOnCreatePlayer(ctx, argA, argB)` -> `ctx.reducers.removeOnCreatePlayer(ctx, { argA, argB })` - [Unification] `myTable.count(): number` -> `myTable.count(): bigint` ## Additive changes: - `Infer<>` now also does `InferTypeOfRow<>` if applicable - Added a `useReducer()` React hook - `module_bindings` now exports a `tables` object with references to all the `TableDef`s - `module_bindings` now exports a `reducers` object with references to all the `ReducerDef`s - Added a new `MyType.create('MyVariant', ...)` function in addition to the `MyType.MyVariant(...)` constructors (this is private) ## 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 # Expected complexity level and risk 4 - This is a deep reaching an complex change for the SDK. For the server, it is much less deep reaching since it reuses much of the same machinery, although it does require thorough testing there as some of the code was modified. This change is fully localized to TypeScript and does not touch the host (or other languages) at all, and therefore only impacts a beta aspect of SpacetimeDB. # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [ ] Added regression test for https://github.com/clockworklabs/SpacetimeDB/issues/3435 - [x] Manually tested `test-app` and `test-react-router-app` - [ ] Add test cases for camelCase-ing --------- Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Co-authored-by: Noa <coolreader18@gmail.com> |
||
|
|
647be7e9c0 |
spacetime init rewrite (#3366)
This is a draft of the new functionality for `spacetime init`. In order to run it with built-in templates you have to set the path to the config file: ``` export SPACETIMEDB_CLI_TEMPLATES_FILE=crates/cli/.init-templates.json ``` In the future it will fetch the list from GH. A few notes: * the previous functionality of `spacetime init` does not work at the moment * the code needs a bit more cleanup and tests before merging * there is a bit of a mix in how we generate empty server and client projects. For Rust we use the existing way of generating. For TypeScript we clone an empty project from the repo. I wanted to play with both ways of doing things, and I'm still not sure which is better. Generation in Rust means that the generated code will match the CLI version and not necessarily whatever is in Git. On the other hand, for the builtin templates we will be fetching the newest version from GH, which I guess might also not what we want, ie. we probably want only stable templates. More discussion is needed here * we use `spacetimedb` directory for the server files * I don't particularly like the inability to disable interactive mode easily. We discussed disabling it by default if all of the required arguments are passed, but I don't think it's feature proof. For example, if someone relies on a non-interactive mode, and we add a new required argument, instead of printing a message `missing --foo`, we will automatically launch interactive mode, which is harder to debug. That's why I think I'd prefer to implement `--non-interactive` argument * it's kind of hard to keep the legacy behaviour. If you don't pass any arguments, we go into interactive mode. In the legacy version, we would print required arguments. If someone passes `--lang` or `--project-path` explicitly, I guess we could run the legacy workflow, but not sure if it's worth it, as the command was marked as unstable anyway * the project path defaults to the project name, but I think we should probably replace change whitespaces to dashes, or at least ask for the project path with the project name being the default (or both) --------- Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Signed-off-by: John Detter <4099508+jdetter@users.noreply.github.com> Co-authored-by: = <cloutiertyler@gmail.com> Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Co-authored-by: Tyler Cloutier <cloutiertyler@aol.com> Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com> |
||
|
|
bb43213245 |
Typescript module API (#3327)
# Description of Changes Currently based on #3361 Implements most of the TS module API (not yet a function for type aliases). # Expected complexity level and risk <!-- How complicated do you think these changes are? Grade on a scale from 1 to 5, where 1 is a trivial change, and 5 is a deep-reaching and complex change. This complexity rating applies not only to the complexity apparent in the diff, but also to its interactions with existing and future code. If you answered more than a 2, explain what is complex about the PR, and what other components it interacts with in potentially concerning ways. --> # Testing <!-- Describe any testing you've done, and any testing you'd like your reviewers to do, so that you're confident that all the changes work as expected! --> - [x] Extremely basic module stuff works - [ ] <!-- maybe a test you want a reviewer to do, so they can check it off when they're satisfied. --> --------- Signed-off-by: Noa <coolreader18@gmail.com> Co-authored-by: Tyler Cloutier <cloutiertyler@aol.com> Co-authored-by: = <cloutiertyler@gmail.com> Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
b34f37b3bd |
Misc cleanups in tools/upgrade-version (#3370)
# Description of Changes * Make sure the user provides at least one of `--rust-and-cli`, `--typescript`, or `--csharp`, since providing none of them is a no-op as of #3308 * Do a semver-parsing of the arg before doing anything, and use that parsed version everywhere * Consolidate some version strings that we were computing in a few places # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing - [x] Running `cargo bump-versions 1.5.0 --typescript --rust-and-cli --csharp` only shows a diff in the change dates --------- Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
1aa4084762 |
CI - Clean up several scripts and call sites related to codegen (#3363)
# Description of Changes * Small cleanups in `tools/check-diff.sh` * Use `tools/check-diff.sh` wherever appropriate * Simplify the `sdks/csharp/tools~/gen-*.sh` files after the repo merge # API and ABI breaking changes None. # Expected complexity level and risk 1 # Testing - [x] CI still passes Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
e3d2dfdfa0 |
Fix Rust dep versions (#3369)
# Description of Changes It turns out that cargo automatically uses the latest semver-compatible versions of dependencies, which is not what we expected. tl;dr specifying `1.5.0` actually means `>=1.5.0 <2.0.0`, but we actually intend `1.5.*`. This PR updates our `upgrade-version` tool, and re-runs it to fix the dep versions. # API and ABI breaking changes None. # Expected complexity level and risk 1 # Testing - [x] I ran `cargo bump-versions 1.5.0 --rust-and-cli` to regenerate the other committed files. --------- Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
c7d825c1d0 |
Fix tools/publish-crates.sh (#3268)
# Description of Changes Fixes two problems introduced in #3185: 1. The `--directories` option on `find-publish-list.py` was not printing directories 2. The `publish-crates.sh` script was using an undefined variable. # API and ABI breaking changes No breaking changes # Expected complexity level and risk 1 # Testing This was used to publish crates in the release yesterday. Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
77a219aca6 |
Integrate tools/upgrade-version into cargo and expand (#3308)
# Description of Changes
`tools/upgrade-version` can now be run via just `cargo bump-versions`.
By default, it does nothing. You must now specify at least one of:
`--rust-and-cli`, `--typescript`, or `--csharp`.
This also now bumps the `StdbModule.csproj` version in
`demo/Blackholio`. I'm not sure if that's desired or not, but it was
still at `1.0.0` which doesn't seem quite right.
# API and ABI breaking changes
None
# Expected complexity level and risk
2
# Testing
- [x] `cargo bump-versions 1.5.0 --rust-and-cli`
```
diff --git a/Cargo.lock b/Cargo.lock
index 941b9d66d..3800e547f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -436,3 +436,3 @@ dependencies = [
"anyhow",
- "spacetimedb 1.4.0",
+ "spacetimedb 1.5.0",
]
@@ -1023,3 +1023,3 @@ dependencies = [
name = "connect_disconnect_client"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -3089,3 +3089,3 @@ dependencies = [
"log",
- "spacetimedb 1.4.0",
+ "spacetimedb 1.5.0",
]
@@ -3414,3 +3414,3 @@ dependencies = [
"log",
- "spacetimedb 1.4.0",
+ "spacetimedb 1.5.0",
]
@@ -3897,3 +3897,3 @@ dependencies = [
"log",
- "spacetimedb 1.4.0",
+ "spacetimedb 1.5.0",
]
@@ -4382,3 +4382,3 @@ dependencies = [
"log",
- "spacetimedb 1.4.0",
+ "spacetimedb 1.5.0",
]
@@ -5077,3 +5077,3 @@ dependencies = [
"paste",
- "spacetimedb 1.4.0",
+ "spacetimedb 1.5.0",
]
@@ -5082,3 +5082,3 @@ dependencies = [
name = "sdk-unreal-test-harness"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5456,3 +5456,3 @@ dependencies = [
"log",
- "spacetimedb 1.4.0",
+ "spacetimedb 1.5.0",
]
@@ -5479,3 +5479,3 @@ dependencies = [
name = "spacetimedb"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5488,6 +5488,6 @@ dependencies = [
"scoped-tls",
- "spacetimedb-bindings-macro 1.4.0",
- "spacetimedb-bindings-sys 1.4.0",
- "spacetimedb-lib 1.4.0",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-bindings-macro 1.5.0",
+ "spacetimedb-bindings-sys 1.5.0",
+ "spacetimedb-lib 1.5.0",
+ "spacetimedb-primitives 1.5.0",
"trybuild",
@@ -5497,3 +5497,3 @@ dependencies = [
name = "spacetimedb-auth"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5504,3 +5504,3 @@ dependencies = [
"spacetimedb-jsonwebtoken",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
]
@@ -5509,3 +5509,3 @@ dependencies = [
name = "spacetimedb-bench"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5537,7 +5537,7 @@ dependencies = [
"spacetimedb-execution",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-paths",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-primitives 1.5.0",
"spacetimedb-query",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-schema",
@@ -5570,3 +5570,3 @@ dependencies = [
name = "spacetimedb-bindings-macro"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5576,3 +5576,3 @@ dependencies = [
"quote",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-primitives 1.5.0",
"syn 2.0.101",
@@ -5591,5 +5591,5 @@ dependencies = [
name = "spacetimedb-bindings-sys"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-primitives 1.5.0",
]
@@ -5598,3 +5598,3 @@ dependencies = [
name = "spacetimedb-cli"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5634,5 +5634,5 @@ dependencies = [
"spacetimedb-jsonwebtoken",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-paths",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-primitives 1.5.0",
"spacetimedb-schema",
@@ -5659,3 +5659,3 @@ dependencies = [
name = "spacetimedb-client-api"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5696,3 +5696,3 @@ dependencies = [
"spacetimedb-jsonwebtoken",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-paths",
@@ -5713,3 +5713,3 @@ dependencies = [
name = "spacetimedb-client-api-messages"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5727,5 +5727,5 @@ dependencies = [
"smallvec",
- "spacetimedb-lib 1.4.0",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-lib 1.5.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"strum",
@@ -5736,3 +5736,3 @@ dependencies = [
name = "spacetimedb-codegen"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5745,4 +5745,4 @@ dependencies = [
"spacetimedb-data-structures",
- "spacetimedb-lib 1.4.0",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-lib 1.5.0",
+ "spacetimedb-primitives 1.5.0",
"spacetimedb-schema",
@@ -5753,3 +5753,3 @@ dependencies = [
name = "spacetimedb-commitlog"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5773,4 +5773,4 @@ dependencies = [
"spacetimedb-paths",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"tempfile",
@@ -5785,3 +5785,3 @@ dependencies = [
name = "spacetimedb-core"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5863,3 +5863,3 @@ dependencies = [
"spacetimedb-jwks",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-memory-usage",
@@ -5868,5 +5868,5 @@ dependencies = [
"spacetimedb-physical-plan",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-primitives 1.5.0",
"spacetimedb-query",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-schema",
@@ -5905,3 +5905,3 @@ dependencies = [
name = "spacetimedb-data-structures"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5919,3 +5919,3 @@ dependencies = [
name = "spacetimedb-datastore"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5939,7 +5939,7 @@ dependencies = [
"spacetimedb-execution",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-metrics",
"spacetimedb-paths",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-schema",
@@ -5954,3 +5954,3 @@ dependencies = [
name = "spacetimedb-durability"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5961,3 +5961,3 @@ dependencies = [
"spacetimedb-paths",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-sats 1.5.0",
"thiserror 1.0.69",
@@ -5969,3 +5969,3 @@ dependencies = [
name = "spacetimedb-execution"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5974,6 +5974,6 @@ dependencies = [
"spacetimedb-expr",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-physical-plan",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-sql-parser",
@@ -5984,3 +5984,3 @@ dependencies = [
name = "spacetimedb-expr"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -5991,6 +5991,6 @@ dependencies = [
"pretty_assertions",
- "spacetimedb 1.4.0",
- "spacetimedb-lib 1.4.0",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb 1.5.0",
+ "spacetimedb-lib 1.5.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-schema",
@@ -6002,3 +6002,3 @@ dependencies = [
name = "spacetimedb-fs-utils"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6064,3 +6064,3 @@ dependencies = [
name = "spacetimedb-lib"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6082,7 +6082,7 @@ dependencies = [
"serde_json",
- "spacetimedb-bindings-macro 1.4.0",
+ "spacetimedb-bindings-macro 1.5.0",
"spacetimedb-memory-usage",
"spacetimedb-metrics",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"thiserror 1.0.69",
@@ -6092,3 +6092,3 @@ dependencies = [
name = "spacetimedb-memory-usage"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6102,3 +6102,3 @@ dependencies = [
name = "spacetimedb-metrics"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6112,3 +6112,3 @@ dependencies = [
name = "spacetimedb-paths"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6128,3 +6128,3 @@ dependencies = [
name = "spacetimedb-pg"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6139,3 +6139,3 @@ dependencies = [
"spacetimedb-client-api-messages",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"thiserror 1.0.69",
@@ -6146,3 +6146,3 @@ dependencies = [
name = "spacetimedb-physical-plan"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6153,4 +6153,4 @@ dependencies = [
"spacetimedb-expr",
- "spacetimedb-lib 1.4.0",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-lib 1.5.0",
+ "spacetimedb-primitives 1.5.0",
"spacetimedb-schema",
@@ -6174,3 +6174,3 @@ dependencies = [
name = "spacetimedb-primitives"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6186,3 +6186,3 @@ dependencies = [
name = "spacetimedb-query"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6194,5 +6194,5 @@ dependencies = [
"spacetimedb-expr",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-physical-plan",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-primitives 1.5.0",
"spacetimedb-sql-parser",
@@ -6229,3 +6229,3 @@ dependencies = [
name = "spacetimedb-sats"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6254,6 +6254,6 @@ dependencies = [
"smallvec",
- "spacetimedb-bindings-macro 1.4.0",
+ "spacetimedb-bindings-macro 1.5.0",
"spacetimedb-memory-usage",
"spacetimedb-metrics",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-primitives 1.5.0",
"thiserror 1.0.69",
@@ -6263,3 +6263,3 @@ dependencies = [
name = "spacetimedb-schema"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6280,5 +6280,5 @@ dependencies = [
"spacetimedb-data-structures",
- "spacetimedb-lib 1.4.0",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-lib 1.5.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-sql-parser",
@@ -6293,3 +6293,3 @@ dependencies = [
name = "spacetimedb-sdk"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6312,5 +6312,5 @@ dependencies = [
"spacetimedb-data-structures",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-metrics",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-testing",
@@ -6323,3 +6323,3 @@ dependencies = [
name = "spacetimedb-snapshot"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6340,6 +6340,6 @@ dependencies = [
"spacetimedb-fs-utils",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-paths",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-schema",
@@ -6356,6 +6356,6 @@ dependencies = [
name = "spacetimedb-sql-parser"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
"derive_more",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"sqlparser",
@@ -6366,3 +6366,3 @@ dependencies = [
name = "spacetimedb-standalone"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6390,3 +6390,3 @@ dependencies = [
"spacetimedb-datastore",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-paths",
@@ -6407,3 +6407,3 @@ dependencies = [
name = "spacetimedb-subscription"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6412,5 +6412,5 @@ dependencies = [
"spacetimedb-expr",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-physical-plan",
- "spacetimedb-primitives 1.4.0",
+ "spacetimedb-primitives 1.5.0",
"spacetimedb-query",
@@ -6420,3 +6420,3 @@ dependencies = [
name = "spacetimedb-table"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6436,6 +6436,6 @@ dependencies = [
"spacetimedb-data-structures",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-memory-usage",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-schema",
@@ -6446,3 +6446,3 @@ dependencies = [
name = "spacetimedb-testing"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6462,3 +6462,3 @@ dependencies = [
"spacetimedb-data-structures",
- "spacetimedb-lib 1.4.0",
+ "spacetimedb-lib 1.5.0",
"spacetimedb-paths",
@@ -6473,3 +6473,3 @@ dependencies = [
name = "spacetimedb-update"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6498,3 +6498,3 @@ dependencies = [
name = "spacetimedb-vm"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6508,5 +6508,5 @@ dependencies = [
"spacetimedb-execution",
- "spacetimedb-lib 1.4.0",
- "spacetimedb-primitives 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-lib 1.5.0",
+ "spacetimedb-primitives 1.5.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-schema",
@@ -6589,3 +6589,3 @@ dependencies = [
name = "sqltest"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6608,4 +6608,4 @@ dependencies = [
"spacetimedb-datastore",
- "spacetimedb-lib 1.4.0",
- "spacetimedb-sats 1.4.0",
+ "spacetimedb-lib 1.5.0",
+ "spacetimedb-sats 1.5.0",
"spacetimedb-vm",
@@ -6927,3 +6927,3 @@ dependencies = [
name = "test-client"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
@@ -6939,3 +6939,3 @@ dependencies = [
name = "test-counter"
-version = "1.4.0"
+version = "1.5.0"
dependencies = [
diff --git a/Cargo.toml b/Cargo.toml
index b3c6d3222..f84eff4df 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -94,3 +94,3 @@ debug = true
[workspace.package]
-version = "1.4.0"
+version = "1.5.0"
edition = "2021"
@@ -100,34 +100,34 @@ rust-version = "1.88.0"
[workspace.dependencies]
-spacetimedb = { path = "crates/bindings", version = "1.4.0" }
-spacetimedb-auth = { path = "crates/auth", version = "1.4.0" }
-spacetimedb-bindings-macro = { path = "crates/bindings-macro", version = "1.4.0" }
-spacetimedb-bindings-sys = { path = "crates/bindings-sys", version = "1.4.0" }
-spacetimedb-cli = { path = "crates/cli", version = "1.4.0" }
-spacetimedb-client-api = { path = "crates/client-api", version = "1.4.0" }
-spacetimedb-client-api-messages = { path = "crates/client-api-messages", version = "1.4.0" }
-spacetimedb-codegen = { path = "crates/codegen", version = "1.4.0" }
-spacetimedb-commitlog = { path = "crates/commitlog", version = "1.4.0" }
-spacetimedb-core = { path = "crates/core", version = "1.4.0" }
-spacetimedb-data-structures = { path = "crates/data-structures", version = "1.4.0" }
-spacetimedb-datastore = { path = "crates/datastore", version = "1.4.0" }
-spacetimedb-durability = { path = "crates/durability", version = "1.4.0" }
-spacetimedb-execution = { path = "crates/execution", version = "1.4.0" }
-spacetimedb-expr = { path = "crates/expr", version = "1.4.0" }
-spacetimedb-lib = { path = "crates/lib", default-features = false, version = "1.4.0" }
-spacetimedb-memory-usage = { path = "crates/memory-usage", version = "1.4.0", default-features = false }
-spacetimedb-metrics = { path = "crates/metrics", version = "1.4.0" }
-spacetimedb-paths = { path = "crates/paths", version = "1.4.0" }
-spacetimedb-pg = { path = "crates/pg", version = "1.4.0" }
-spacetimedb-physical-plan = { path = "crates/physical-plan", version = "1.4.0" }
-spacetimedb-primitives = { path = "crates/primitives", version = "1.4.0" }
-spacetimedb-query = { path = "crates/query", version = "1.4.0" }
-spacetimedb-sats = { path = "crates/sats", version = "1.4.0" }
-spacetimedb-schema = { path = "crates/schema", version = "1.4.0" }
-spacetimedb-standalone = { path = "crates/standalone", version = "1.4.0" }
-spacetimedb-sql-parser = { path = "crates/sql-parser", version = "1.4.0" }
-spacetimedb-table = { path = "crates/table", version = "1.4.0" }
-spacetimedb-vm = { path = "crates/vm", version = "1.4.0" }
-spacetimedb-fs-utils = { path = "crates/fs-utils", version = "1.4.0" }
-spacetimedb-snapshot = { path = "crates/snapshot", version = "1.4.0" }
-spacetimedb-subscription = { path = "crates/subscription", version = "1.4.0" }
+spacetimedb = { path = "crates/bindings", version = "1.5.0" }
+spacetimedb-auth = { path = "crates/auth", version = "1.5.0" }
+spacetimedb-bindings-macro = { path = "crates/bindings-macro", version = "1.5.0" }
+spacetimedb-bindings-sys = { path = "crates/bindings-sys", version = "1.5.0" }
+spacetimedb-cli = { path = "crates/cli", version = "1.5.0" }
+spacetimedb-client-api = { path = "crates/client-api", version = "1.5.0" }
+spacetimedb-client-api-messages = { path = "crates/client-api-messages", version = "1.5.0" }
+spacetimedb-codegen = { path = "crates/codegen", version = "1.5.0" }
+spacetimedb-commitlog = { path = "crates/commitlog", version = "1.5.0" }
+spacetimedb-core = { path = "crates/core", version = "1.5.0" }
+spacetimedb-data-structures = { path = "crates/data-structures", version = "1.5.0" }
+spacetimedb-datastore = { path = "crates/datastore", version = "1.5.0" }
+spacetimedb-durability = { path = "crates/durability", version = "1.5.0" }
+spacetimedb-execution = { path = "crates/execution", version = "1.5.0" }
+spacetimedb-expr = { path = "crates/expr", version = "1.5.0" }
+spacetimedb-lib = { path = "crates/lib", default-features = false, version = "1.5.0" }
+spacetimedb-memory-usage = { path = "crates/memory-usage", version = "1.5.0", default-features = false }
+spacetimedb-metrics = { path = "crates/metrics", version = "1.5.0" }
+spacetimedb-paths = { path = "crates/paths", version = "1.5.0" }
+spacetimedb-pg = { path = "crates/pg", version = "1.5.0" }
+spacetimedb-physical-plan = { path = "crates/physical-plan", version = "1.5.0" }
+spacetimedb-primitives = { path = "crates/primitives", version = "1.5.0" }
+spacetimedb-query = { path = "crates/query", version = "1.5.0" }
+spacetimedb-sats = { path = "crates/sats", version = "1.5.0" }
+spacetimedb-schema = { path = "crates/schema", version = "1.5.0" }
+spacetimedb-standalone = { path = "crates/standalone", version = "1.5.0" }
+spacetimedb-sql-parser = { path = "crates/sql-parser", version = "1.5.0" }
+spacetimedb-table = { path = "crates/table", version = "1.5.0" }
+spacetimedb-vm = { path = "crates/vm", version = "1.5.0" }
+spacetimedb-fs-utils = { path = "crates/fs-utils", version = "1.5.0" }
+spacetimedb-snapshot = { path = "crates/snapshot", version = "1.5.0" }
+spacetimedb-subscription = { path = "crates/subscription", version = "1.5.0" }
diff --git a/LICENSE.txt b/LICENSE.txt
index 7c5f3cfff..d6571c196 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -7,3 +7,3 @@ Parameters
Licensor: Clockwork Laboratories, Inc.
-Licensed Work: SpacetimeDB 1.4.0
+Licensed Work: SpacetimeDB 1.5.0
The Licensed Work is
@@ -23,3 +23,3 @@ Additional Use Grant: You may make use of the Licensed Work provided your
-Change Date: 2030-09-22
+Change Date: 2030-09-29
diff --git a/crates/cli/src/subcommands/project/rust/Cargo._toml b/crates/cli/src/subcommands/project/rust/Cargo._toml
index d2a3da80f..2bd500e78 100644
--- a/crates/cli/src/subcommands/project/rust/Cargo._toml
+++ b/crates/cli/src/subcommands/project/rust/Cargo._toml
@@ -11,3 +11,3 @@ crate-type = ["cdylib"]
[dependencies]
-spacetimedb = "1.4"
+spacetimedb = "1.5"
log = "0.4"
diff --git a/licenses/BSL.txt b/licenses/BSL.txt
index 125fcf25a..e35adb65f 100644
--- a/licenses/BSL.txt
+++ b/licenses/BSL.txt
@@ -7,3 +7,3 @@ Parameters
Licensor: Clockwork Laboratories, Inc.
-Licensed Work: SpacetimeDB 1.4.0
+Licensed Work: SpacetimeDB 1.5.0
The Licensed Work is
@@ -23,3 +23,3 @@ Additional Use Grant: You may make use of the Licensed Work provided your
-Change Date: 2030-09-03
+Change Date: 2030-09-29
```
- [x] `cargo bump-versions 1.5.0 --typescript`
```
diff --git a/crates/bindings-typescript/package.json b/crates/bindings-typescript/package.json
index 2a3ac1d8b..e313ce262 100644
--- a/crates/bindings-typescript/package.json
+++ b/crates/bindings-typescript/package.json
@@ -2,3 +2,3 @@
"name": "spacetimedb",
- "version": "1.4.0",
+ "version": "1.5.0",
"description": "API and ABI bindings for the SpacetimeDB TypeScript module library",
```
- [x] `cargo bump-versions 1.5.0 --csharp`
```
diff --git a/crates/bindings-csharp/BSATN.Codegen/BSATN.Codegen.csproj b/crates/bindings-csharp/BSATN.Codegen/BSATN.Codegen.csproj
index 1b4193828..f9d87e31b 100644
--- a/crates/bindings-csharp/BSATN.Codegen/BSATN.Codegen.csproj
+++ b/crates/bindings-csharp/BSATN.Codegen/BSATN.Codegen.csproj
@@ -4,3 +4,3 @@
<AssemblyName>SpacetimeDB.BSATN.Codegen</AssemblyName>
- <Version>1.4.0</Version>
+ <Version>1.5.0</Version>
<Title>SpacetimeDB BSATN Codegen</Title>
diff --git a/crates/bindings-csharp/BSATN.Runtime/BSATN.Runtime.csproj b/crates/bindings-csharp/BSATN.Runtime/BSATN.Runtime.csproj
index 4ca49e0a0..781699c02 100644
--- a/crates/bindings-csharp/BSATN.Runtime/BSATN.Runtime.csproj
+++ b/crates/bindings-csharp/BSATN.Runtime/BSATN.Runtime.csproj
@@ -4,3 +4,3 @@
<AssemblyName>SpacetimeDB.BSATN.Runtime</AssemblyName>
- <Version>1.4.0</Version>
+ <Version>1.5.0</Version>
<Title>SpacetimeDB BSATN Runtime</Title>
diff --git a/crates/bindings-csharp/Codegen/Codegen.csproj b/crates/bindings-csharp/Codegen/Codegen.csproj
index e701d4b44..d5a60956c 100644
--- a/crates/bindings-csharp/Codegen/Codegen.csproj
+++ b/crates/bindings-csharp/Codegen/Codegen.csproj
@@ -4,3 +4,3 @@
<AssemblyName>SpacetimeDB.Codegen</AssemblyName>
- <Version>1.4.0</Version>
+ <Version>1.5.0</Version>
<Title>SpacetimeDB Module Codegen</Title>
diff --git a/crates/bindings-csharp/Runtime/Runtime.csproj b/crates/bindings-csharp/Runtime/Runtime.csproj
index 361f7db4d..a5492c4d3 100644
--- a/crates/bindings-csharp/Runtime/Runtime.csproj
+++ b/crates/bindings-csharp/Runtime/Runtime.csproj
@@ -4,3 +4,3 @@
<AssemblyName>SpacetimeDB.Runtime</AssemblyName>
- <Version>1.4.0</Version>
+ <Version>1.5.0</Version>
<Title>SpacetimeDB Module Runtime</Title>
diff --git a/crates/cli/src/subcommands/project/csharp/StdbModule._csproj b/crates/cli/src/subcommands/project/csharp/StdbModule._csproj
index 65e514c72..63ebb94a8 100644
--- a/crates/cli/src/subcommands/project/csharp/StdbModule._csproj
+++ b/crates/cli/src/subcommands/project/csharp/StdbModule._csproj
@@ -10,3 +10,3 @@
<ItemGroup>
- <PackageReference Include="SpacetimeDB.Runtime" Version="1.4.*" />
+ <PackageReference Include="SpacetimeDB.Runtime" Version="1.5.*" />
</ItemGroup>
diff --git a/demo/Blackholio/server-csharp/StdbModule.csproj b/demo/Blackholio/server-csharp/StdbModule.csproj
index cd429eb32..5fbfde1b9 100644
--- a/demo/Blackholio/server-csharp/StdbModule.csproj
+++ b/demo/Blackholio/server-csharp/StdbModule.csproj
@@ -15,3 +15,3 @@
<ItemGroup>
- <PackageReference Include="SpacetimeDB.Runtime" Version="1.0.0" />
+ <PackageReference Include="SpacetimeDB.Runtime" Version="1.5.*" />
</ItemGroup>
diff --git a/sdks/csharp/SpacetimeDB.ClientSDK.csproj b/sdks/csharp/SpacetimeDB.ClientSDK.csproj
index 27ba3ab72..14c04bfe4 100644
--- a/sdks/csharp/SpacetimeDB.ClientSDK.csproj
+++ b/sdks/csharp/SpacetimeDB.ClientSDK.csproj
@@ -18,4 +18,4 @@
<RepositoryUrl>https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk</RepositoryUrl>
- <AssemblyVersion>1.4.0</AssemblyVersion>
- <Version>1.4.0</Version>
+ <AssemblyVersion>1.5.0</AssemblyVersion>
+ <Version>1.5.0</Version>
<DefaultItemExcludes>$(DefaultItemExcludes);*~/**</DefaultItemExcludes>
@@ -27,3 +27,3 @@
<ItemGroup>
- <PackageReference Include="SpacetimeDB.BSATN.Runtime" Version="1.4.*" />
+ <PackageReference Include="SpacetimeDB.BSATN.Runtime" Version="1.5.*" />
diff --git a/sdks/csharp/examples~/quickstart-chat/server/StdbModule.csproj b/sdks/csharp/examples~/quickstart-chat/server/StdbModule.csproj
index 633b214b7..29344f061 100644
--- a/sdks/csharp/examples~/quickstart-chat/server/StdbModule.csproj
+++ b/sdks/csharp/examples~/quickstart-chat/server/StdbModule.csproj
@@ -16,3 +16,3 @@
<ItemGroup>
- <PackageReference Include="SpacetimeDB.Runtime" Version="1.4.*" />
+ <PackageReference Include="SpacetimeDB.Runtime" Version="1.5.*" />
</ItemGroup>
diff --git a/sdks/csharp/examples~/regression-tests/server/StdbModule.csproj b/sdks/csharp/examples~/regression-tests/server/StdbModule.csproj
index 65e514c72..63ebb94a8 100644
--- a/sdks/csharp/examples~/regression-tests/server/StdbModule.csproj
+++ b/sdks/csharp/examples~/regression-tests/server/StdbModule.csproj
@@ -10,3 +10,3 @@
<ItemGroup>
- <PackageReference Include="SpacetimeDB.Runtime" Version="1.4.*" />
+ <PackageReference Include="SpacetimeDB.Runtime" Version="1.5.*" />
</ItemGroup>
diff --git a/sdks/csharp/package.json b/sdks/csharp/package.json
index 4585de204..025dfc6c1 100644
--- a/sdks/csharp/package.json
+++ b/sdks/csharp/package.json
@@ -3,3 +3,3 @@
"displayName": "SpacetimeDB SDK",
- "version": "1.4.0",
+ "version": "1.5.0",
"description": "The SpacetimeDB Client SDK is a software development kit (SDK) designed to interact with and manipulate SpacetimeDB modules..",
```
---------
Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
|
||
|
|
ad1bd5821d |
tools/upgrade-version works properly on Windows (#3232)
# Description of Changes Fixed how the multi-line regexps worked on Windows (with `\r\n` line endings). # API and ABI breaking changes None # Expected complexity level and risk 1 # Testing - [x] `cargo run -- 1.4.1` works properly on Linux still - [x] Applying the same diff and running on Windows, now updates the license files properly. Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |
||
|
|
726345206f |
CI - License checks (#3197)
# Description of Changes - Checks that all `LICENSE`/`LICENSE.txt` files are symlinks to something in `licenses/` - Checks that all license symlinks are valid - Adds Tyler as a codeowner for `LICENSE` # API and ABI breaking changes None. # Expected complexity level and risk 2 # Testing - [x] new CI fails on this PR (because https://github.com/clockworklabs/SpacetimeDB/pull/3193 isn't merged yet) - [x] new CI passes on a test PR with https://github.com/clockworklabs/SpacetimeDB/pull/3193 merged in (https://github.com/clockworklabs/SpacetimeDB/pull/3198) --------- Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com> |