Commit Graph

200 Commits

Author SHA1 Message Date
John Detter aa6a7a4a06 Disconnect is now working correctly 2025-04-11 23:36:09 +01:00
rekhoff 2832aeef77 Minor changes to connection closure. 2025-04-11 08:20:01 -07:00
daniel.andersen 311a45472b Working! 2025-04-06 20:41:02 +02:00
james gilles 3543132c7d Fix for unsubscribe bug + regression tests (#264)
## Description of Changes

This PR fixes one issue and adds regression tests for it, plus another
issue. These regression tests are run on CI. You can also run them
locally -- run a local spacetime instance and then
`tools~/run-regression-tests.sh ../SpacetimeDB`).

### Issue 1: Unsubscribe is non-functional

See
https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk/issues/279.
This was a coding mistake made during the rush to 1.0. It was easily
fixed.

### Issue 2: Indexes not tracking deletes

This was recently discovered by the BitCraft team.

The problem was introduced in
https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk/commit/cefc727b7693fe97e3dd848fef2bb17bf20c8be6
which introduced `RemoteTableHandle<EventContext,
Row>.IndexBase<Column>`. This class stores a `Dictionary<Column,
List<Row>>` to allow fast filtering. It relies on `List<Row>.Remove` to
remove elements from a list when a row delete is received.
`List<Row>.Remove` relies on `Row.Equals` to determine when elements are
equal.

`Row.Equals` formerly was not implemented for `[SpacetimeDB.Type]`s or
for generated Row types. So, this didn't work.

Now it does: it was fixed by
https://github.com/clockworklabs/SpacetimeDB/pull/239 . So all this PR
does to address this issue is add a regression test.

## API

 - [x] This is an API breaking change to the SDK

The interface IDbConnection was changed; however, this changed part of
the interface is `internal`, so this should be entirely invisible to
users.

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/239 (merged)

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [x] Added a repro for both issues
- [x] Added the repro to CI
- [x] Fixed both issues
2025-03-28 20:15:51 +00:00
Zeke Foppa d4267b3904 Bump versions to 1.1.0 (#282)
## Description of Changes
Bumped version numbers to 1.1.0.

## API

 - [ ] This is an API breaking change to the SDK

No, this just updates to the latest version.

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/2518

## Testsuite
SpacetimeDB branch name: bfops/bump-version

## Testing
- [x] Existing CI passes (when pointed at the corresponding SpacetimeDB
branch)

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-03-28 00:04:47 +00:00
rekhoff 89c019c14f Bump package version to 1.0.1 (#272)
Updates package version to 1.0.1

## API

 - [ ] This is an API breaking change to the SDK

## Requires SpacetimeDB PRs
No specific PR needed

## Testsuite

SpacetimeDB branch name: release/v1.0.1

## Testing

- [X] Confirmed Unity sees version as 1.0.1 after change
2025-03-14 16:38:42 -05:00
Zeke Foppa 23c2dc083f Update DLLs to 1.0.1 (#269)
## Description of Changes
I don't know if the DLLs need updating, but updated the DLLs just in
case.

## API

Incorporate any chances in SpacetimeDB 1.0.1. There should be no
breaking changes.

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
SpacetimeDB branch name: release/v1.0.1

## Testing
None. Will test in release.

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-03-14 04:18:02 +00:00
rekhoff 4d3f0a0edc Resolved 404 and references to deprecated tutorial repos. (#268)
## Description of Changes
Updated two README docs:
* README.md - Updated links to point to Blackholio repo and tutorial
docs.
* README.dotnet.md - Updated to point to new URL paths for C# SDK
Quickstart and Reference docs.

## API

 - [ ] This is an API breaking change to the SDK

## Requires SpacetimeDB PRs
N/A - Docs only change

## Testsuite
N/A - Docs only change

SpacetimeDB branch name: master

## Testing

- [X] Clicked on each new link and confirm the browser can locate the
new locations.

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
Co-authored-by: John Detter <no-reply@boppygames.gg>
2025-03-13 18:53:03 -07:00
rekhoff 9523ba3d27 Adds tests of GenericEqualityComparer (#271)
Adds an additional test of the `GenericEqualityComparer` function for
`Integer`, `String`, `Byte Array`, `Identity`, `User` and `TaggedEnum` type
comparisons.

This PR resolves additional checks as reported in by [Issue
230](https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk/issues/230)
that where not-yet covered elsewhere.

## API

 - [ ] This is an API breaking change to the SDK

## Requires SpacetimeDB PRs
No other PR are needed for this to work.

## Testsuite
SpacetimeDB branch name: master

## Testing
- [X] Locally ran `dotnet test` against the `tests.csproj` project and
it passed all tests
2025-03-13 16:50:18 -07:00
John Detter bbdb0fd6d8 Minor Version Bump to 1.0.1 (#261)
## Description of Changes
*Describe what has been changed, any new features or bug fixes*

I've already pushed this out to nuget here:
<https://www.nuget.org/packages/SpacetimeDB.ClientSDK>

- We want to update our REAME on nuget.org because the README that we
released as part of 1.0.1 was very much out of date.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

NA

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [x] The README is updated.

Co-authored-by: John Detter <no-reply@boppygames.gg>
2025-03-12 04:15:32 +00:00
Zeke Foppa 421256a77f Relax the version constraint on SpacetimeDB nuget package (#270)
## Description of Changes
Relaxed this version number from `1.0.0` to `1.0.*`

## API
No breaking changes.

## Requires SpacetimeDB PRs
None

## Testsuite

SpacetimeDB branch name: master

## Testing
Existing CI should run `dotnet test` and confirm that this is not
broken.

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-03-11 20:57:10 -07:00
Zeke Foppa 60761bb952 Bump versions to 1.0.0 (#253)
## Description of Changes
This just bumps our package versions to be 1.0.0.

## API

No breaking changes

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/2283

## Testsuite
SpacetimeDB branch name: bfops/bump-version

## Testing
Existing CI only.

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
Co-authored-by: John Detter <no-reply@boppygames.gg>
Co-authored-by: John Detter <4099508+jdetter@users.noreply.github.com>
2025-03-04 09:10:52 -06:00
james gilles e21566a4e2 Update README (#260)
## Description of Changes
Just link to the existing docs.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs

## Testsuite

SpacetimeDB branch name: master

## Testing
2025-03-03 23:39:37 -06:00
rekhoff 25689c14bd Update C# server and client quickstart examples to match tutorial document. (#258)
# Description of Changes
Update the C# server and client SDK quickstart-chat example to match the
code presented in the tutorial, as of
https://github.com/clockworklabs/spacetime-docs/pull/170 .
Also renamed the directory from `quickstart` to `quickstart-chat` in
order to be more specific.

# 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

## Requires SpacetimeDB PRs
SpacetimeDB branch name: master
com.clockworklabs.spacetimedbsdk: master

# 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] Ran `quickstart-chat` C# server and C# client locally and:
  - Set my name.
  - Sent a message.
  - Restarted and viewed the message backlog.
  - Sent a few more messages.
- Exited, deleted my local token, restarted and connected as a new
identity.
  - Set my new identity's name.
  - Sent a message as my new identity.

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
Co-authored-by: John Detter <no-reply@boppygames.gg>
Co-authored-by: james gilles <jameshgilles@gmail.com>
2025-03-03 13:35:30 -08:00
joshua-spacetime df1dcf2b04 Fix comment for SubscribeToAllTables (#259)
## Description of Changes

Adds closing `</summary>` to end of comment.

## API

No breaking changes

## Requires SpacetimeDB PRs

N/A

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing

Just fixing a comment. No tests required.
2025-02-28 10:39:09 -08:00
joshua-spacetime b1a9f96baf Fix comment for SubscribeToAllTables (#256)
## Description of Changes

Updates comment on `SubscribeToAllTables` since undefined behavior is not possible anymore.

No code changes made in this patch.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs

N/A

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing

No code changes made in this patch.
2025-02-26 13:00:46 -08:00
james gilles 083531e319 SubscribeMulti + UnsubscribeMulti, multiplicities (#249)
## Description of Changes
Add SubscribeMulti and UnsubscribeMulti from upstream.
Fix unsubscribe bug found by testing against Bitcraft: Calling
`UnsubscribeThen` with any (non-null) callback would result in an
exception incorrectly telling the user that `Unsubscribe` had been
called twice.
Multiplicity support is implemented with unit tests + manual testing of
quickstart-chat.
Also, rows in the client cache are now looked up by primary key if
available, which I suspect is going to be a large performance boost.

## API

 - [x] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: jgilles/final-cs-codegen-changes

## Testing
*Write instructions for a test that you performed for this PR*

- [x] unit tests
- [ ] Working with Ryan to add a test suite.
- [x] blackholio
2025-02-25 16:24:26 -05:00
Zeke Foppa b80a2b99bc CI - Update release branch check (#246)
## Description of Changes
This updates the CI check protecting the release branch, as part of
https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk/issues/226
(see that ticket for more details).

Once this is merged, it will need to be cherrypicked into our release
branch in order to take effect there.

The check itself has also been renamed. I have already updated the
branch protection rules to look for the new name.

## API

No code changes.

## Requires SpacetimeDB PRs
None

## Testsuite
SpacetimeDB branch name: master

## Testing
The previous behavior was well-tested, and I've just changed some
strings here, so I have not done further testing. It does pass on this
branch though.

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-02-13 10:29:41 -08:00
Noa 03861217b3 Switch to Bearer auth (#236)
## Description of Changes

Switches to Bearer authentication, which is the more proper auth schema
to use with tokens.

## API

 - [ ] This is an API breaking change to the SDK

## Requires SpacetimeDB PRs
- https://github.com/clockworklabs/SpacetimeDB/pull/2181

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

---------

Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com>
Co-authored-by: rekhoff <r.ekhoff@clockworklabs.io>
Co-authored-by: James Gilles <jameshgilles@gmail.com>
2025-02-11 15:13:26 -05:00
Zeke Foppa 076d4ecbb1 Strip trailing / from URIs before connecting (#238)
## Description of Changes
We were not stripping `/` from the end of URIs provided to `Connect`. We
manually append `/...` to the provided addresses, so if we don't start
by stripping trailing `/`s, we end up with `//` in the URI and we get
errors.

Addresses part of
https://github.com/clockworklabs/SpacetimeDB/issues/1551.

## API

No breaking  changes. This fixes an error case.

## Requires SpacetimeDB PRs
None

## Testsuite
SpacetimeDB branch name: master

## Testing
- [x] Tested the quickstart chat client with a host containing a
trailing `/`
```
# start a server, publish the module, send some input
# I also updated one line in `client.csproj` to use `Net8.0` because I no longer have `Net7.0` installed

$ cd examples~/quickstart/client

$ dotnet run
[I] SpacetimeDBClient: Connecting to ws://localhost:3000 quickstart-chat
C200098E is online
Connected
C2007471: hello
C2007471: godo
C2007471: asdf

$ sed -i 's/localhost:3000/localhost:3000\//' Program.cs

$ dotnet run
[I] SpacetimeDBClient: Connecting to ws://localhost:3000 quickstart-chat
C2000601 is online
Connected
C2007471: hello
C2007471: godo
C2007471: asdf

$ git diff
diff --git a/examples~/quickstart/client/Program.cs b/examples~/quickstart/client/Program.cs
index 9eb43b1..289e736 100644
--- a/examples~/quickstart/client/Program.cs
+++ b/examples~/quickstart/client/Program.cs
@@ -7,8 +7,8 @@ using System.Threading;
 using SpacetimeDB;
 using SpacetimeDB.Types;
 
-const string HOST = "http://localhost:3000";
-const string DBNAME = "chatqs";
+const string HOST = "http://localhost:3000/";
+const string DBNAME = "quickstart-chat";
 
 // our local client SpacetimeDB identity
 Identity? local_identity = null;
diff --git a/examples~/quickstart/client/client.csproj b/examples~/quickstart/client/client.csproj
index 48917cc..ab7ce44 100644
--- a/examples~/quickstart/client/client.csproj
+++ b/examples~/quickstart/client/client.csproj
@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>net7.0</TargetFramework>
+    <TargetFramework>net8.0</TargetFramework>
     <CheckEolTargetFramework>false</CheckEolTargetFramework>
     <ImplicitUsings>disable</ImplicitUsings>
     <Nullable>enable</Nullable>
```

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-02-11 19:42:41 +00:00
Noa c6eded9ade Adjust http api usage for glowup (#242)
## Description of Changes
Companion PR for the http api glowup.

## API

Not a breaking change; this catches us up to being compatible with a
breakage introduced by
- https://github.com/clockworklabs/SpacetimeDB/pull/2225.

## Requires SpacetimeDB PRs
- https://github.com/clockworklabs/SpacetimeDB/pull/2225

## Testsuite
SpacetimeDB branch name: master

## Testing
Existing CI passes (it was failing without this change since it couldn't
connect).

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-02-11 19:21:17 +00:00
james gilles 498b25f825 Emit Event.UnknownTransaction rather than throwing on unknown reducer (#244)
## Description of Changes
as described

## API

no breaks

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/2241

## Testsuite

SpacetimeDB branch name: jgilles/unknown_reducer

## Testing

see SpacetimeDB PR
2025-02-11 13:21:06 -05:00
Phoebe Goldman 96d52c1a7b Rename Address to ConnectionId (#239)
## Description of Changes

Companion to [Rename `Address` to
`ConnectionId`](https://github.com/clockworklabs/SpacetimeDB/pull/2220).
See that PR's description for more.

Like all the SDKs, this PR does not change the SDK's behavior; the SDK
still generates a connection ID locally and passes it through the HTTP
API. This is not exposed to users, and can be changed in a follow-up.

Also, use `/usr/bin/env bash` instead of `/bin/bash` in tools, for
portability reasons.

## API

 - [x] This is an API breaking change to the SDK

`Address` is renamed to `ConnectionId`.

## Requires SpacetimeDB PRs

- https://github.com/clockworklabs/SpacetimeDB/pull/2220
- 
## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: phoebe/rename-address-to-connection-id

## Testing

- [x] Pretty much just automated testing.
- [x] @kazimuth will need to update and run Blackholio.

---------

Co-authored-by: James Gilles <jameshgilles@gmail.com>
2025-02-10 00:29:18 +00:00
Zeke Foppa f966144f3a Update DLLs (#241)
## Description of Changes
This seems to fix the unity testsuite, which otherwise is failing when
pointed at master.

## API

No breaking changes.

## Requires SpacetimeDB PRs
None

## Testsuite
This is meant to fix pointing at master.

SpacetimeDB branch name: master

## Testing
- [x] Unity testsuite now passes

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-02-07 15:21:32 -08:00
james gilles 9f58828caa Rework event contexts in C# (#240)
## Description of Changes
https://github.com/clockworklabs/SpacetimeDB/pull/2226

## API

 - [x] This is an API breaking change to the SDK

callbacks are better

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/2226

## Testsuite

SpacetimeDB branch name: jgilles/csharp-better-events

## Testing

- [x] quickstart
- [x] blackholio
2025-02-07 22:03:55 +00:00
james gilles b4aa612239 Make Timestamp and TimeDuration special types (#233)
## Description of Changes

C# part of https://github.com/clockworklabs/SpacetimeDB/pull/1836
Needs to be rebased onto
https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk/pull/220
once that is merged.

## API

 - [x] This is an API breaking change to the SDK

ScheduleAt is now constructed in slightly different ways.

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: phoebe/timestamp-special-type

## Testing
Will need an update to blackholio as well.
2025-02-07 14:17:45 -05:00
Ingvar Stepanyan fed2a9db3e Fix handling of multi-tables (#229)
## Description of Changes

Unfortunately, none of our tests currently cover this, but while working
on the V9 upgrade, I noticed that this code still relies on `type(Row)`
as a unique table identifier.

That no longer holds with multi-tables as several tables can share the
same `Row` type. In that case, subscription updates would be grouped
incorrectly and always applied to the same first table that uses `Row`
for its data storage.

This PR fixes that by using the table handle itself as a key (compared
by reference).

If transaction updates are already grouped uniquely by table, it should
be possible to simplify this code much further, but I'm not sure if such
guarantee exists, so leaving that untouched.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [x] I did `dotnet test`, but as mentioned in the description, this
requires adding tests for multi-table subscriptions, which I'm afraid I
won't have time to do, so have to leave to follow-up devs.

---------

Co-authored-by: james gilles <jameshgilles@gmail.com>
2025-02-06 17:54:12 +00:00
Ingvar Stepanyan cefc727b76 Rewrite C# codegen to the new Lang infra + fixes (#220)
## Description of Changes

This is the companion PR for
https://github.com/clockworklabs/SpacetimeDB/pull/2184, please see the
other PR for full description.

On the client side main changes are:

- Regenerate .NET and Unity test client bindings and test snapshot.
- Remove `IDatabaseRow` since V9 multi-tables splits data types from
actual table definitions, so those "table data types" are no longer
special. Just using `IStructuralReadWrite` in its place now.
- Add base index classes as mentioned in the other PR.
- As a sub-improvement, the non-unique index class actually does
indexing instead of iterating over the entire table like we did before.
- Remove internal-but-not-really `InternalInvokeValueDeleted` and
`InternalInvokeValueInserted` methods in favour of private events.

## API

 - [x] This is an API breaking change to the SDK

Removes some technically-visible but internal APIs.

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/2184

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: ingvar/csharp-new-codegen

## Testing
*Write instructions for a test that you performed for this PR*

- [x] Manually tested Blackholio

---------

Co-authored-by: James Gilles <jameshgilles@gmail.com>
2025-02-05 16:48:15 -05:00
Ingvar Stepanyan f4cc0b33d6 Improve CI caching (#228)
## Description of Changes

Use SpacetimeDB commit hash in the cache key and skip
rebuild/reinstallation altogether if we got an exact hit.

This saves 6-8 minutes off CI time on reruns.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [x] CI testing forth and back until it worked correctly.
2025-02-05 13:01:49 -05:00
Zeke Foppa 82ad0a069f Bump version to 1.0.0-rc4 (#225)
## Description of Changes
Corresponding change to
https://github.com/clockworklabs/SpacetimeDB/pull/2177. See that PR for
more details.

~~Note that this PR only bumps the versions, but does **not** update the
DLLs. This is because SpacetimeDB will likely have further changes, so
the DLLs will just need to be updated again (in principle, they should
be updated every time we push to SpacetimeDB `master`, which isn't
really feasible. For this reason, users should not use `staging` without
having their own copy of the SpacetimeDB repo as well).~~

## API

 - [ ] This is an API breaking change to the SDK

No breaking changes.

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/2177

## Testsuite
SpacetimeDB branch name: master

## Testing
- [x] CI passes with that branch name
- [x] The branch name has been changed back to `master` after that PR
merges and CI still passes

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-01-29 10:51:26 -08:00
Zeke Foppa aa6cb5b5cf Revert DLLs to 1.0.0-rc3 (#224)
## Description of Changes
Revert DLLs, which I should have done in
https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk/pull/223.

See that PR for background on why it was necessary.

## API

 - [ ] This is an API breaking change to the SDK

Kinda, but it's a revert.

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
SpacetimeDB branch name: master

## Testing
I would have liked to say that the current CI is sufficient as I did in
the last PR, but now I no longer feel confident.. Currently the repo is
in a somewhat inconsistent state, though, so I think we should merge
this right now as it will not make it _less_ consistent.

I'm very open to suggestions about how to test this properly.

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-01-27 21:14:55 +00:00
Zeke Foppa 76194c2849 Revert trunk branch versions to 1.0.0-rc3 (no hotfix) (#223)
## Description of Changes
Remove the `-hotfix*` part of the version in our trunk branch.

It was a (my) mistake to merge a `-hotfix*` version change. Hotfixes
are, by definition, cherry-picked changes that are going to be released
directly to users without merging.

The consequence of merging this change was that the `SDK Tests` CI job
started failing on SpacetimeDB PRs (e.g. see failures on
https://github.com/clockworklabs/SpacetimeDB/pull/2137), because it
checks out this repo, which then tried to use the `-hotifx3` version of
SpacetimeDB. But the `master` branch of SpacetimeDB is at `1.0.0-rc3`
(no hotfix), because the hotfix was correctly released from a branch
without merging in that repo.

Although this PR reverts the version change, we do still have a tag
`v1.0.0-rc3-hotfix3` that we can use to release the hotfix version (by
`git push -f origin v1.0.0-rc3-hotfix3:master`) if/when desired.

## API

 - [ ] This is an API breaking change to the SDK

No

## Requires SpacetimeDB PRs
Should work with `master`.

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
I claim that the CI tests passing with `master` show that this is
correct. The original version change itself passed CI because it was
pointing at a non-`master` branch for testing. I claim it would have
failed if it were tested against SpacetimeDB `master`.

Generally, this might point to a bug in how we've done this CI: We
should probably only allow a PR to merge in this repo if it tests
successfully against SpacetimeDB `master`, even if we want to point it
at other branches to test in the meantime.

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-01-27 10:22:51 -08:00
Zeke Foppa 27be3019bb Bump version to 1.0.0-rc3-hotfix3 (#222)
## Description of Changes
Bump the version and include the DLLs from the corresponding NuGet
packages / SpacetimeDB version.

## API

 - [ ] This is an API breaking change to the SDK

I believe not?

## Requires SpacetimeDB PRs
I believe this requires tag `v1.0.0-rc3-hotfix3`

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: v1.0.0-rc3-hotfix3

## Testing
Only automated testing, since this itself is just a version bump.

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-01-24 21:27:04 +00:00
james gilles 6578f0563b Implement new subscription API (#219)
## Description of Changes

As proposed. No upstream codegen changes needed :)

## API

 - [x] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*
The subscription API is slightly different.

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/2111

## Testsuite

SpacetimeDB branch name: jsdt/subscribe-sdk-3

## Testing
So far I have performed manual testing with the chat example. Working on
updating the unity and unit tests.

- [ ] Describe a test for this PR that you have completed
2025-01-23 16:22:29 -05:00
Ingvar Stepanyan 62e16c6333 Unify CI handling of SpacetimeDB branch (#215)
## Description of Changes

This unifies various CI task into a single config that checks out the
referenced SpacetimeDB branch only once and using the same PR parsing
code (previously used only in Unity), and then runs all the builds and
tests against it. That is, .NET test, server module and Unity tests are
now all consistently overridden to point to the same SpacetimeDB.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing

- [x] Lots of CI testing and tweaking until all of existing CI tests
started working again; ensured .NET tests are executed as expected
against the specified branch name.
2025-01-23 10:40:38 -05:00
Ingvar Stepanyan 3d530ee248 Upgrade to new regenerated client-api bindings (#218)
## Description of Changes

Looks like client API bindings haven't been regenerated in a while, and
this is a necessary precursor to the new subscription work. This PR
fixes the generation script, regenerates the bindings and updates
affected code.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: v1.0.0-rc3

## Testing
*Write instructions for a test that you performed for this PR*

- [x] Ran regular `dotnet test`.
- [x] Checked Unity tests via CI.
2025-01-16 17:29:27 +00:00
Phoebe Goldman 749825aa2f SubscribeToAllTables, which hides "SELECT * FROM *" (#211)
## Description of Changes

Per out-of-band discussion, add
`SubscriptionBuilder.SubscribeToAllTables`, which abstracts over
`SubscriptionBuilder.Subscribe(["SELECT * FROM *"])`.

In the future, we will change the implementation of this method, so that
it uses "legacy subscriptions" while `SubscriptionBuilder.Subscribe`
moves to using "mutable subscriptions." At that time, no other interface
will be provided for using "legacy subscriptions."
`SubscribeToAllTables` may also at some point be rewritten in terms of
"mutable subscriptions" somehow.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs

N/a

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [x] @cloutiertyler will use this in the new tutorial and report back.

---------

Co-authored-by: Ingvar Stepanyan <ingvar@clockworklabs.io>
Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com>
Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
2025-01-14 23:43:10 +00:00
Ingvar Stepanyan 0017af7991 Disable PR comment for meta file check if not a PR (#216)
## Description of Changes

Looks like the .meta check hard-fails on push events if
`enable_pr_comment` is `true`, instead of just ignoring it...

I hope this fix works, but hard to tell without merging first.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [x] This is a PR that changes CI configuration, so see CI
2025-01-14 19:48:20 +00:00
Ingvar Stepanyan 2487c94967 Add CI check for Unity meta files (#209)
## Description of Changes

Adds CI check to prevent issues like #208.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [ ] Describe a test for this PR that you have completed
2025-01-14 19:25:45 +00:00
Phoebe Goldman 39e7ebbb9a Revise WithCredentials to WithToken (#212)
## Description of Changes

`WithCredentials` was designed for our old auth model, where tokens were
always issued by the SpacetimeDB host alongside an `Identity`, and
therefore the bearer always knew their `Identity`.

In our new auth model, a client may have a valid auth-able JWT but not
know what `Identity` it will result in,
as the `Identity` is computed based on the hash of some of the token's
contents, and this hashing algorithm is not included in our client SDKs.
As such, this PR revises `WithCredentials` to `WithToken`, which just
accepts the token.

## API

 - [x] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

`WithCredentials` is renamed and its signature changes.

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [ ] @cloutiertyler should test this with the Unity tutorial, if
possible.

---------

Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com>
2025-01-14 18:43:34 +00:00
Zeke Foppa 11896cb70b Bump version to RC3 and update DLLs (#210)
## Description of Changes
Bump package version to `1.0.0-rc3` and do a preliminary upgrade of the
DLLs.

I believe the DLLs might need updating again once the BSATN.Runtime
package is pushed to NuGet (because then it will be fetched from NuGet).

## API

Not API breaking.

## Requires SpacetimeDB PRs
https://github.com/clockworklabs/SpacetimeDB/pull/2094

## Testsuite
SpacetimeDB branch name: release/v1.0.0-rc3

## Testing
- [x] Existing CI is successful (pointed at the RC3 SpacetimeDB branch).

---------

Co-authored-by: Zeke Foppa <bfops@users.noreply.github.com>
2025-01-14 18:13:04 +00:00
Ingvar Stepanyan 006087fb43 Add delegates for events (#201)
## Description of Changes

This is a requested DX improvement to make sure that IDE shows
reasonable argument names instead of `arg0`...`argN`.

Fixes
https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk/issues/200.

## API

 - [x] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

Potentially breaking in obscure edge cases, if someone already had
`Action<...> myCallback;` that they passed to those APIs as C# won't
cast it automatically to our custom delegate type.

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run against a specific SpacetimeDB branch in the
testsuite, specify that here. This can be a branch name or a link to a
PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [x] `dotnet test`
2025-01-14 14:28:29 +00:00
Ingvar Stepanyan bb6d624b6a Update Unity tests (#207)
## Description of Changes

Updates Unity tests to include fix from
https://github.com/clockworklabs/SpacetimeDBCircleGame/pull/10.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [ ] Describe a test for this PR that you have completed
2025-01-07 11:49:56 -08:00
joshua-spacetime d6d78b38b9 fix(202): RemoteQuery should not SELECT * (#203)
Fixes #202.

Because SELECT * is ambiguous if the query is a join

## Description of Changes

Bug Fix

Previously `RemoteQuery` would implicitly `SELECT *`. This was wrong
because you can use `RemoteQuery` to issue join queries.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: v1.0.0-rc1

## Testing
*Write instructions for a test that you performed for this PR*

- [ ] Describe a test for this PR that you have completed
2025-01-06 15:11:28 -08:00
Ingvar Stepanyan a90e0f98e1 Fix CI (#205)
## Description of Changes

(this is a reopening of #204 which targeted wrong branch)

I don't know when or why this broke (or, rather, how it worked before),
but we're installing .NET 7 but packing BSATN.Runtime that multi-targets
.NET Standard 2.1 + .NET 8. The latter part, as you'd expect, fails on
CI.

~~This change tells `dotnet pack` to only pack for .NET Standard 2.1
since that's the one we're interested in on the client - .NET 8 support
is only for C# server modules.~~ _Narrator: that didn't work out._

This change bumps .NET SDK to 8.0 because I still don't know how it
worked before with .NET 7, and this seems like the more sensible
solution anyway.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [ ] Describe a test for this PR that you have completed
2025-01-06 20:03:19 +00:00
Tyler Cloutier fa2baa6cac Update pull_request_template.md 2024-12-13 20:40:46 -05:00
Tyler Cloutier d8277ff8fd Updated DLLs I think 2024-12-13 20:14:02 -05:00
Tyler Cloutier 1a21af8526 Bump versions 2024-12-13 19:29:15 -05:00
Tyler Cloutier 844713f577 Updating unity-tests (#197)
## Description of Changes
This bumps the unity-test submodule
 
## API

No API Change

## Requires SpacetimeDB PRs

No special PRs, should work with latest master of SpacetimeDB.

## Testsuite
*If you would like to run the your SDK changes in this PR against a
specific SpacetimeDB branch, specify that here. This can be a branch
name or a link to a PR.*

SpacetimeDB branch name: master

## Testing
I opened up this commit of CircleGame in Unity on my own machine and ran
the tests. They seemed to work fine.
2024-12-13 10:54:43 -05:00
Ingvar Stepanyan 9b7f20cedb Migrate C# and Unity tests to the new API (#194)
## Description of Changes

Counterpart to https://github.com/clockworklabs/SpacetimeDB/pull/2033.

Also updated test settings to make sure that sum type variants
implemented via subclassing are shown as expected.

## API

 - [ ] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*

## Requires SpacetimeDB PRs
*List any PRs here that are required for this SDK change to work*

## Testsuite
*If you would like to run against a specific SpacetimeDB branch in the
testsuite, specify that here. This can be a branch name or a link to a
PR.*

SpacetimeDB branch name: master

## Testing
*Write instructions for a test that you performed for this PR*

- [ ] Describe a test for this PR that you have completed
2024-12-12 12:03:44 -05:00