Commit Graph

235 Commits

Author SHA1 Message Date
Daniel Gak Anagrov 51f0b31fde feat: record delete workspace activity (#5646) 2025-10-06 10:29:21 +01:00
Kristaps Fabians Geikins d394e1cd9b fix: various presentations mode fixes related to resetting (#5635)
* better workspace feature flag ops

* user activity is correctly tracked

* more fixes
2025-10-03 12:39:59 +03:00
Gergő Jedlicska 85e127f690 Gergo/workspace scoping (#5546)
* fix(workspaces): project.workspace should be behind a token scope

* fix(workspace): add limited workspace resolver to projects

* Update FE

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-09-24 16:51:43 +02:00
Daniel Gak Anagrov 2c122a138d feat(workspaces): apply prepared transactions to workspaces (#5383)
* feat(multiregion): replace user replication

* chore(multiregion): optimise replication

* maybe it's this

* postgres is fun

* once more

* chore(multiregion): only replicate test user creation during multiregion tests

* feat: improved replicate_query logic

* fix: minor

* fix: starting issue

* feat: included user create and delete specs to multiregion

* feat: removed console logs

* fix: user defaults

* fix: multiregion test helper

* fix: update scenarios for users

* refactor(multiregion): swap replicateQuery concept to asMultiregionOperation (#5301)

feat(multiregion): introduced asMultregionOperator, refactor test to user builder classes

* chore: renamings

* fix: remove comments

* feat: remove user replication

* refactor: simplified spec usages

* chore: comments

* chore: branches and favs

* chore: more tests

* chore: more tests

* fix linting

* fix tests

* feat: dropping replication

* refactor: moved project delete to service

* fix: comment

* feat: updateStreamFactory and updateProjectFacotry

* deleteProjectFactory + replicateFactory

* deleteWorkspaceFactory

* fix: selector

* fix: tests

* fix tests, finished createStreamFactory

* feat: simplify changes

* fix: remove comment

* fix: minor strucutres

* fix: moveProjectToRegion

* fix: moved branch creation outside of multiregion scope

* fix: branch creation

* fix: tests

* fix: ci tests

* fix: removed log form test

* fix: on specs, no random regionKeys

* review fixes

* feat: workspace replciation

* fix: mr comments

* feat: removed test

* fix: worksapce test creation

* fix: mr issues

* updated mutations

* feat: drop workspace random defaults

---------

Co-authored-by: Charles Driesler <chuck@speckle.systems>
2025-09-11 10:08:26 +02:00
Daniel Gak Anagrov 399c998fd7 feat(multiregion): apply prepared transactions to projects (#5322)
* feat(multiregion): replace user replication

* chore(multiregion): optimise replication

* maybe it's this

* postgres is fun

* once more

* chore(multiregion): only replicate test user creation during multiregion tests

* feat: improved replicate_query logic

* fix: minor

* fix: starting issue

* feat: included user create and delete specs to multiregion

* feat: removed console logs

* fix: user defaults

* fix: multiregion test helper

* fix: update scenarios for users

* refactor(multiregion): swap replicateQuery concept to asMultiregionOperation (#5301)

feat(multiregion): introduced asMultregionOperator, refactor test to user builder classes

* chore: renamings

* fix: remove comments

* feat: remove user replication

* refactor: simplified spec usages

* chore: comments

* chore: branches and favs

* chore: more tests

* chore: more tests

* fix linting

* fix tests

* feat: dropping replication

* refactor: moved project delete to service

* fix: comment

* feat: updateStreamFactory and updateProjectFacotry

* deleteProjectFactory + replicateFactory

* deleteWorkspaceFactory

* fix: selector

* fix: tests

* fix tests, finished createStreamFactory

* feat: simplify changes

* fix: remove comment

* fix: minor strucutres

* fix: moveProjectToRegion

* fix: moved branch creation outside of multiregion scope

* fix: branch creation

* fix: tests

* fix: ci tests

* fix: removed log form test

* fix: on specs, no random regionKeys

* review fixes

* fix: mr comments

* feat: removed test

---------

Co-authored-by: Charles Driesler <chuck@speckle.systems>
2025-09-04 13:07:19 +02:00
Gergő Jedlicska 6982023dca feat(gatekeeper): add per workspace feature flags (#5303)
* feat(gatekeeper): add per workspace feature flags

* feat(workspaces): add admin api for granting and removing access to
workspace features

* fix(workspaces): use the correct constant name

* fix(workspaces): more test type fixes

* fix(shared): fix tests and types

* fix(workspaces): properly use exhaustive switch statement

* fix(workspaces): add new workspace plan feature to switch

* fix(workspaces): use regular integer, its fine for now...

* fix(workspaces): feature flag retention post checkout

* fix(gatekeeper): fix upsert plan tests
2025-08-26 10:23:02 +01:00
Mike 24b6f1f329 Feat: Improved workspace switcher (#5058) 2025-07-24 12:31:43 +02:00
Kristaps Fabians Geikins 4b06f42db7 chore(server): run TS files directly (no compilation) (#5134)
* sort of works

* type fixes

* added option to run old way too
2025-07-23 11:20:40 +02:00
Daniel Gak Anagrov e5fb1361c6 fix: getting all user projects on deletion and user filter (#5112)
* fix: getting all user projects on deletion and user filter
2025-07-21 10:07:46 +02:00
Kristaps Fabians Geikins bde148f286 chore(server): migrating fully to ESM (#5042)
* wip

* some extra fixes

* stuff kinda works?

* need to figure out mocks

* need to figure out mocks

* fix db listener

* gqlgen fix

* minor gqlgen watch adjustment

* lint fixes

* delete old codegen file

* converting migrations to ESM

* getModuleDIrectory

* vitest sort of works

* added back ts-vitest

* resolve gql double load

* fixing test timeout configs

* TSC lint fix

* fix automate tests

* moar debugging

* debugging

* more debugging

* codegen update

* server works

* yargs migrated

* chore(server): getting rid of global mocks for Server ESM (#5046)

* got rid of email mock

* got rid of comment mocks

* got rid of multi region mocks

* got rid of stripe mock

* admin override mock updated

* removed final mock

* fixing import.meta.resolve calls

* another import.meta.resolve fix

* added requested test

* nyc ESM fix

* removed unneeded deps + linting

* yarn lock forgot to commit

* tryna fix flakyness

* email capture util fix

* sendEmail fix

* fix TSX check

* sender transporter fix + CR comments

* merge main fix

* test fixx

* circleci fix

* gqlgen bigint fix

* error formatter fix

* more error formatting improvements

* esmloader added to Dockerfile

* more dockerfile fixes

* bg jobs fix
2025-07-14 10:26:19 +03:00
Daniel Gak Anagrov ba3d9ade22 feat(activity): moved project roles to activity (#5019)
* feat: moved project roles to activity
* fix: added previous project role filed on activity
* fix: remvoke does not get logged as an actvity for every project in a workspace when removed from workspace
* fix: on delete user account, emit also seat and project event

Co-authored-by: Charles Driesler <chuck@speckle.systems>
2025-07-10 11:44:54 +02:00
Daniel Gak Anagrov 7de0229b76 fix: avoid workpaces to turn free when susbscription is present (#5015) 2025-07-01 13:08:24 +02:00
Daniel Gak Anagrov a4ab20c938 feat(activity): add workspace billing events and seats to activity (#4944)
* feat: improved gatekeeper eventsfor workspace history
* feat: userId on seat assign
* feat: record workspace seat events
* feat: workspace removals as activity
* feat: emit role and seat events on create workspace
* fix: reordered events for workspace creation
2025-06-30 16:49:36 +02:00
andrewwallacespeckle 2fddcd78b7 feat(server+fe): Implement LimitedWorkspace for PendingWorkspaceCollaborator (#4984) 2025-06-27 09:35:37 +01:00
Chuck Driesler 2f36e518a0 fix(multiregion): make move region job safe for replication (#4907)
* chore(multiregion): failing test for move project region

* fix(multiregion): unblock replication after regional move

* fix(regions): try-catch replication

* fix(regions): cache roles within job

* fix(regions): toggle region key in target db
2025-06-25 15:47:34 +01:00
Chuck Driesler 2ef38a3962 fix(regions): respect region during project move to workspace (#4985) 2025-06-25 12:54:24 +01:00
andrewwallacespeckle c89fe339ec refactor: fix pagination with stable resolveKey, use reactive default… (#4951)
* refactor: fix pagination with stable resolveKey, use reactive defaultRoles, and remove email permission check

* Changes from call

* More changes from call

* WIP fixing team composite cursor

* paginated items fix

* minor rename

* composite cursor tools improved

* fe undoing debugging stuff

* extra fixes

* invitable collabs fix

---------

Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2025-06-19 10:28:31 +03:00
Gergő Jedlicska 794bd7c7e9 gergo/web 3616 add auth policy for turning on the exclusive workspace (#4956)
* feat(shared): rename user workspaces loader

* feat(gatekeeper): intoduce the enterprise plan

* chore(server): remove more "magic strings"

* refactor(shared): extract user is workspace admin to an auth fragment

* feat(shared): add can createWorkspacePolicy

* feat(workspaces): WIP block workspace creation

* feat(server): add can create workspace checks

* feat(workspaces): enforce canCreateWorkspace policy on the workspace
creation mutation

* feat(shared): allow workspace admins and guests to create workspaces
even if they are part of an exclusive workspace

* test(shared): use test fake properly

* fix(server): eligble workspace typing fixes

* test(shared): fix more workspace fakes

* fix(workspacesCore): add missing loader

* fix(shared): use proper exhaustive switch cases, they stop bugs from
happening

* feat(shared): introduce workspacePlanHasAccessToFeature function with tests

* chore(workspaces): fix more PR comments

* fix(workspaces): naming

* fix(workspaces): some more

* feat(shared): generalize workspace feature access policy

* feat(workspaces): allow toggling the isExclusive option for workspace
update
2025-06-18 12:43:27 +02:00
Gergő Jedlicska 4a2d85d68c feat(server): web 3485 prevent accounts from creating new workspaces (#4913)
* feat(shared): rename user workspaces loader

* feat(gatekeeper): intoduce the enterprise plan

* chore(server): remove more "magic strings"

* refactor(shared): extract user is workspace admin to an auth fragment

* feat(shared): add can createWorkspacePolicy

* feat(workspaces): WIP block workspace creation

* feat(server): add can create workspace checks

* feat(workspaces): enforce canCreateWorkspace policy on the workspace
creation mutation

* feat(shared): allow workspace admins and guests to create workspaces
even if they are part of an exclusive workspace

* test(shared): use test fake properly

* fix(server): eligble workspace typing fixes

* test(shared): fix more workspace fakes

* fix(workspacesCore): add missing loader

* fix(shared): use proper exhaustive switch cases, they stop bugs from
happening

* feat(shared): introduce workspacePlanHasAccessToFeature function with tests

* chore(workspaces): fix more PR comments

* fix(workspaces): naming

* fix(workspaces): some more
2025-06-18 08:58:26 +01:00
Kristaps Fabians Geikins cfa0b249d1 feat: seat type selection in invite flows (#4908)
* backend seems to work

* bigger menu support

* FE nearly done

* merge fix

* ui changes

* workspace invite disclaimer

* project disclaimer

* project invite viewer -> editor flow

* extra minor fixes

* Change project role input label

* extra test assertions

---------

Co-authored-by: Benjamin Ottensten <benjamin.ottensten@gmail.com>
2025-06-13 09:45:58 +03:00
Gergő Jedlicska 72ecb9197b feat(gatekeeper): intoduce the enterprise plan (#4882)
* feat(gatekeeper): intoduce the enterprise plan

* chore(server): remove more "magic strings"

* test(shared): fix plan tests with enterprise case

* Small change to format plan name

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-06-05 11:07:59 +02:00
Gergő Jedlicska 8f37710c9e feat(workspaces): expose the can read memeber email policy (#4863) 2025-05-30 17:07:07 +02:00
Chuck Driesler 0eb8d1f352 feat(workspaces): add workspace level default seat property (#4851)
* feat(workspaces): default workspace seat field

* chore(workspaces): add tests for default seat type
2025-05-30 12:30:20 +01:00
Gergő Jedlicska c76ed87580 feat(workspaces): allow reading emails of invited users (#4828)
* feat(workspaces): allow reading emails of invited users

* feat(workspaces): expose workspace member email in workspace team query
to ws admins

* feat(workspaces): add email to join requests view for admins

* chore(workspaces): fix join request type
2025-05-30 11:01:06 +02:00
Daniel Gak Anagrov 0b04719834 feat: moved workspaces Create and Upgrade mixpanel events to backend (#4816) 2025-05-28 13:30:55 +02:00
Chuck Driesler 0f5c22329b Chuck/web 3465 auto join discoverable workspace setting (#4791)
* feat(workspaces): enable toggle for auto-join discoverable workspaces

* fix(workspaces): include auto-join flag on LimitedWorkspace

* chore(workspaces): gqlgen
2025-05-22 10:11:05 +01:00
Chuck Driesler 9724a3daef feat(workspaces): sort discoverable workspaces by member count (#4779)
* fix(workspaces): order discoverable workspaces by team size

* fix(workspaces): emit workspace admins from LimitedWorkspace

* chore(workspaces): drop some comments
2025-05-21 10:04:44 +01:00
Daniel Gak Anagrov fa5f2eb1f5 feat(workspaces): added GQL fitlering capabilities to activeUser workspaces
*  added filtering mechanism for getWorkspaces completed or not completed workspaces
* added filtering mechanism to filter workspaces of active user by string hitting on slug or name
2025-05-19 16:30:56 +02:00
Iain Sproat 185734d851 Merge pull request #4050 from specklesystems/iain/ratelimiter-should-respect-configuration
fix(ratelimiter): do not check rates if rate limiter disabled
2025-05-19 14:27:28 +01:00
Iain Sproat 43b0190720 Merge branch 'main' into iain/ratelimiter-should-respect-configuration 2025-05-19 13:37:26 +01:00
Chuck Driesler 969ca64a1b feat(workspaces): toggle embedded viewer branding (#4762)
* feat(viewer): embedded viewer option to hide speckle branding

* chore(viewer): can edit embed options policy

* chore(embeds): tests for new policy and gql
2025-05-19 13:19:38 +01:00
Chuck Driesler a8ae414bde chore(workspaces): drop legacy join() (#4752)
* fix(workspaces): drop legacy discoverable workspace join

* fix(workspaces): one more reference
2025-05-15 13:22:42 +01:00
Kristaps Fabians Geikins a25df23688 fix(server): seats sometimes not created on role create (#4740)
* core fix

* fix migration

* minor update
2025-05-14 15:45:14 +03:00
Chuck Driesler 19ea8b2879 fix(authz): expose canInvite gql queries (#4712) 2025-05-12 21:10:47 +01:00
Kristaps Fabians Geikins d995a9837e Revert "Revert "feat(server): workspace project invites as implicit workspace invites"" (#4672)
* Revert "Revert "feat(server): workspace project invites as implicit workspace…"

This reverts commit 220015ece6.

* fix invites leak
2025-05-07 14:08:40 +03:00
Kristaps Fabians Geikins 220015ece6 Revert "feat(server): workspace project invites as implicit workspace invites…" (#4671)
This reverts commit 22bd90d304.
2025-05-06 16:21:12 +03:00
Kristaps Fabians Geikins 22bd90d304 feat(server): workspace project invites as implicit workspace invites (#4634) 2025-05-06 14:20:29 +03:00
Kristaps Fabians Geikins 211922b6a6 chore: get rid of all old workspace plan code (#4624)
* first batch of changes

* tests fix

* FE fixed

* renaming constants

* test fixes

* moar test fixes

* another test fix

* reenable app rover check

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
2025-04-30 19:18:32 +02:00
Chuck Driesler 76b84e2068 fix(workspaces): wrapper type on limited workspace team (#4635) 2025-04-30 16:42:57 +01:00
Kristaps Fabians Geikins c6dcf18bdb feat(server): workspace project invite auto-accept (for existing wp members) (#4622)
* WIP ts

* DI fix & tests moved to TS

* auto-accept seems to work

* CR comments
2025-04-30 17:39:07 +03:00
Alessandro Magionami 437ee6d20b feat(core): add project field on invites (#4588)
* feat(core): add project field on invites

* chore(workspaces): add workspaceSlug on invite
2025-04-29 13:06:35 +03:00
Kristaps Fabians Geikins cf833a7719 fix(server): project role updates after workspace role/seat changes (#4599)
* fix(workspaces): workspace role sync

* role changes fixed + validated

* seat changes validated

* fix tests

---------

Co-authored-by: Charles Driesler <chuck@speckle.systems>
2025-04-29 10:49:37 +03:00
Mike d6d8de41dc Feat: Increase invite limit from 10 to 200 (#4618) 2025-04-28 16:43:58 +02:00
Iain Sproat 413937c0fa Merge branch 'main' into iain/ratelimiter-should-respect-configuration 2025-04-28 08:16:19 +01:00
Kristaps Fabians Geikins 9a18a6e1c2 feat(server): ProjectCollaborator.workspaceRole (#4598) 2025-04-25 11:02:37 +03:00
Chuck Driesler 3e0f609bb2 fix(automate): improve search for test automations (#4515) 2025-04-22 14:33:46 +01:00
Kristaps Fabians Geikins e70097cf3e chore(server): fixed/improved commandFactory (#4470)
* chore(server): fixed/improved commandFactory

* further improved API
2025-04-22 09:10:44 +03:00
Kristaps Fabians Geikins 0cc19dbdf5 fix(fe2): not being able to remove member from workspace (#4468)
* fix(fe2): not being able to remove member from workspace

* minor comment

* withTransaction refactor
2025-04-17 10:44:55 +03:00
Kristaps Fabians Geikins 93bc55630b fix(server): prevent creating project contributor invite to viewer se… (#4462)
* fix(server): prevent creating project contributor invite to viewer seat member

* undo regionConfig change

* moar cleanup
2025-04-17 05:00:33 +01:00
Iain Sproat 1e040c4cd4 Merge branch 'main' into iain/web-2732-observability-for-improved-reliability-workspaces 2025-04-16 14:51:59 +01:00