Boost what matters

Feature Requests

Submit feature requests and boost what you want to see next.

Feature Requests
#5213
Requested

LTS Maincloud

## Summary While Maincloud is not technically on a bleeding edge or nightly release cycle, the latest version is deployed immediately after a new SpacetimeDB release. Your only option to not upgrade to latest is to use Standalone or lock in an Enterprise deal for a private node. Each of these have issues: - Standalone -> Free, but doesn't scale - Enterprise -> Potentially costly, and overkill for most The logical conclusion for a vast majority of users is to use shared hosting, a-la Maincloud. It even comes with `SLA / Uptime Guarantees` if you're a Pro subscriber. ## The Issue I have no doubt that a lot of effort goes into this, but deploying new SpacetimeDB versions to Maincloud without any issue or bugs is a tall order- in fact, it's an impossible order. The new version is being deployed to thousands of modules, all on various runtime versions, and some functionality will be tested live for the very first time in unexpected ways. We can have 1,000 different smoke tests, but they will never handle all of the edge-cases. This has, and will continue to lead to disruptions to Maincloud customers. If your app or game has paying customers, this type of disruption is not acceptable. Playing devils advocate- some would even argue that these types of disruptions indicate that Maincloud is not a production-ready environment. ## Proposal Similar to [#5204](https://github.com/clockworklabs/SpacetimeDB/issues/5204) and its related [feature request](<https://spacetimedb.com/features/requests/38>) I would love to see a LTS Maincloud instance that is fixed to a specific stable build. `spacetime publish <module_name> --lts` This would prevent new Maincloud version deploys (and bugs) from disrupting production applications deployed on LTS Maincloud, giving potential start-ups and businesses peace of mind knowing their backend infra is stable. ## Challenges I acknowledge this comes with many challenges, so I am looking for feedback and replies in the github thread: - Does current maincloud transition to LTS or Latest? - Maincloud will need module migration tool to go from server to server - Can you only migrate your module from LTS to Latest and not the other way around? - At what interval is the LTS version updated? What type of key milestones indicate a version bump? - What type of deploy/patches are allowed on LTS? Bugfixes only? What about QoL? - What should be the default Maincloud publish functionality, LTS or Latest? Happy to hear your thoughts. Let's have a discussion.

354,100TeV
from 7 boosters
#5205
Requested

Improved SpacetimeAuth Web UX

# Improved SpacetimeAuth Web UX ## Summary I’d like to request improvements to the SpacetimeAuth web login experience, especially for apps using third-party providers like Google and Discord. ## Issues ### 1. Extra authorization step The current identity-provider flow appears to require these steps: 1) Click login button on app 2) Click “Login with Google/Discord/etc.” 3) Click authorize with the provider 4) Click “Authorize Application” That fourth step is confusing for new users because they feel they already authorized the login provider. Ideally, third-party auth would only require selecting the provider and approving the provider login. If the extra step is required for technical reasons, the page should more clearly explain what is being authorized and why. ### 2. Login screen polish Play testers said the SpacetimeAuth login page looked somewhat “sketchy,” especially when only Google and Discord providers are available and email login is not enabled. A few CSS/layout improvements would help it feel more trustworthy and consistent with the polish of the main SpacetimeDB website. ### 3. Embedded login option It would be super helpful to support embedding the provider selection directly inside an app, similar to Firebase Auth, instead of requiring a redirect away from the page. ### 4. Role management Role management would still be useful, but it is lower priority for me because I already implemented a custom solution. ## Impact These changes would reduce login friction and improve trust for users trying apps built on SpacetimeDB, and prevent losing new players in the onboarding process.

55,421TeV
from 3 boosters
#5200
Requested

Secret or env special table

## Summary Current state requires you to create your own `Secrets` table. You publish, and then use the CLI to SQL insert into your secrets table. Example of the table below: ```csharp [Table(Public = false, Accessor = "Secrets")] public partial struct Secrets { [PrimaryKey] public string Key; public string Secret; } ``` ## The Issue The problem here is mainly around visibility, but also it's a bit clunky and unintuitive to set up. SpacetimeDB is supposed to about developer experience after all, right? - You can read your secret after setting it (goes against industry standard) - All collaborators can read private tables in maincloud, meaning your secrets can be read - You are required to set up the table correctly (whoops I set it to public) - You need to use the CLI to `INSERT INTO Secrets (Key, Secret) VALUES ('my-key-value', 'my-secret-value')` which not super enjoyable ## Proposal I am proposing that secrets mimic Cloudflare worker secrets, and you interact with them similarly to how Wrangler CLI interacts with them in that environment. In SpacetimeDB, there should be no need to declare your `Secrets` private table- it should just exist. Instead, you simply run a CLI command, or newly created `/v1/database/:name_or_identity/secrets PUT/DELETE` routes, which allows you to upsert (insert or update) a secret for a particular key. ```powershell PS E:\chippy> spacetime secret <module-name-or-identity> <put|delete> <key-value> Enter a secret value: *********************** - Creating the secret for <module-name-or-identity> ✨ Success! Uploaded secret <key-value> ``` Secrets would be PUT or DELETE only, and never able to be read via the HTTP /v1/sql routes. As planned it *could* be printed in a console log within a reducer, but that's a fairly intentional way to leak the secret. I'd leave all that nitty gritty implementation to the pros, but that's the idea. I am a heavy user of secrets in my modules, and this extra layer of accidental leak-proofing would be greatly appreciated.

33,070TeV
from 5 boosters