Commit Graph

239 Commits

Author SHA1 Message Date
Iain Sproat 08ffa1c10b Merge pull request #4761 from specklesystems/iain/duplicate-workspace-join-request
fix(server/workspaces): gracefully handle duplicate workspace join requests
2025-05-19 12:22:24 +01:00
Daniel Gak Anagrov e67c27914c feat(workspaces): backfill workspace tracking (#4749)
* added a chron job that updates all workspaces properties to mixpanel
2025-05-19 11:54:52 +02:00
Iain Sproat 29c7e538cb make it idempotent, not an error 2025-05-19 10:08:26 +01:00
Iain Sproat 765adeecd6 fix(server/workspaces): handle duplicate join request 2025-05-16 17:44:17 +01:00
Iain Sproat a20684c2bd missing await 2025-05-16 16:32:00 +01:00
Iain Sproat 43839e9372 fix(server/workspaces): gracefully handle duplicate workspace join requests 2025-05-16 16:12:55 +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 5ff030224b fix(server): fallback to viewer if no seat found (#4748) 2025-05-15 12:04:56 +03: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
Kristaps Fabians Geikins 4db1531064 feat: "workspace" project visibility (#4704)
* WIP new visi

* test fixes

* visibility seems to work

* authz policies & authorizeResolver updated

* various test fixes

* users tests

* frontend changes

* minor adjustments

* shared test fix

* test fixes

* force rerun CI
2025-05-14 15:20:26 +03:00
Iain Sproat f8b0ce34b3 tests(server): do not run Workspace SSO tests if not enabled 2025-05-13 14:27:14 +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
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
Kristaps Fabians Geikins 5df39ce4ce feat(server): allow activeUser.query to retrieve implicitly accessible projects (#4593) 2025-04-25 09:13:13 +03:00
Chuck Driesler 9dfd36431f fix(invites): projectinvitablecollaborators should only return members (#4493) 2025-04-18 11:04:07 +02: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
Kristaps Fabians Geikins 62cc07b072 feat(server): add new workspace disclaimer fields to user meta (#4434)
* feat(server): add new workspace disclaimer fields to user meta

* unrelated tests fix
2025-04-16 12:47:33 +03:00
Chuck Driesler cebae959ae feat(authz): Workspace.canInvite and Project.canInvite (#4419) 2025-04-16 09:01:53 +01:00
Gergő Jedlicska 61ca128ce2 gergo/multiCurrency (#4379)
* feat(gatekeeper): support multiple currencies

* feat(helm): add new currency based prices to helm chart

* chore(env): add example currency based pricing values

* fix(ci): update price ids to the proper values

* feat(helm): rename price ids to fit multi currency

* feat(gatekeeper): currency input for checkout session

* Updated prices in the FE

* chore(gatekeeper): remove old checkout session flow

* Updated prices in the FE

* Fix FE

* Fix pipeline

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-04-11 17:37:47 +02:00
Chuck Driesler 7cddc87deb fix(workspaces): use new roles for project moves on new plans (#4316)
* chore(workspaces): move project role mapping in tests

* fix(workspaces): new world move project to workspace

* chore(workspaces): adjust move project tests

* fix(workspaces): that's on me
2025-04-08 15:32:05 +01:00
Gergő Jedlicska a3644a50c5 gergo/web 2931 introduce missing workspace plans (#4323)
* fix(gatekeeper): missing priceId-s should stop the server from booting

* feat(shared): add all new workspace plans

* feat(billing): add new world plans

* feat(ci): use stripe sandbox id-s from test env vars

* chore(ci): remove defunct stripe context

* chore(server-env): fix server env example

* feat(gatekeeper): add missing plans to graphql schema

* test(gatekeeper): update plan upgrade tests to match implementation

* fix(ci): update ci .env source

* fix(ci): we do need some secrets from stripe

* fix(ci): run gql schema introspect with the test env

* fix(frontend): format new plan names

* chore(ci): temp disable gql schema checks

* feat(helm): add unlimited seat prices env vars

* feat(helm): add unlimited seat prices to values

* feat(gatekeeper): do not load priceId-s as a side effect, load with module init
2025-04-07 15:24:57 +02:00
Kristaps Fabians Geikins 820a1e2ebf feat(server): workspace roles taken into account in project queries (#4319)
* Workspace.projects fixed

* Query.project tested & fixed

* personalOnly flag added

* withProjectRoleOnly flag

* authorizeResolver implicit workspace roles

* minor cleanup

* reorg + support for throwing auth errors

* global error mapping

* undo special borkage

* CR fixes

* more CR fixes

* shared tests fix

* minor adjustment

* tests fix

* see if removing cached roles fixes it?

* more fixes

* clean up debugging garbage
2025-04-07 12:52:07 +03:00
Kristaps Fabians Geikins e3d3c1446b feat: enable domain discoverability on workspace creation (#4235)
* frontend changes implemented

* WIP BE

* backend seems to work

* CR fixes
2025-04-07 12:34:45 +03:00
Chuck Driesler 35e99d6ee7 feat(workspaces): emit who will be added to workspace for a given project move (#4332)
* wip

* feat(workspaces): preflight service wip

* feat(workspaces): move project to workspace dry run

* fix(workspaces): add tests and refine query

* chore(workspaces): gqlgen
2025-04-07 10:27:08 +01:00
Chuck Driesler 855185245e feat(workspaces): consolidate workspace role/seat reporting (#4315)
* feat(workspaces: shuffle seat type counts around

* fix(workspaces): use new counts

* fix(workspaces): better field placement

* Updated FE

* chore(workspaces): fix tests

* fix(workspaces): use correct flags

* fix(workspaces): correct another test

* fix(workspaces): use correct model count function

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-04-04 10:27:49 +01:00
Chuck Driesler 6cea72e4f8 feat(workspaces): add query for fetching usage (#4306)
* WIP can create project

* WIP can create project more work

* complete body, stencil tests

* feat(shared): move workspace plan types into shared

* test progress wip

* feat(shared): add more logic to canCreateWorkspaceProject

* a few more tests, as a treat

* chore(authz): round out tests

* fixed loaders, new GQL checks, dataLoaders in auth loaders

* fix(authz): get workspace limits loader

* chore(authz): update loaders

* frontend fixed up to snuff

* fix(authz): fix workspace plans for tests

* fix(authz): classic

* feat(workspaces): emit plan usage from BE

* fix(authz): 0 counts

* fix(workspaces): fix counts for 0

* chore(workspaces): gqlgen

* fix(workspaces): update fragment to use new fields

* fix(workspaces): count regional projects correctly

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2025-04-03 09:06:34 +01:00
Gergő Jedlicska f501cc4ad5 gergo/web 2888 workspace project cancreate (#4294)
* WIP can create project

* WIP can create project more work

* complete body, stencil tests

* feat(shared): move workspace plan types into shared

* test progress wip

* feat(shared): add more logic to canCreateWorkspaceProject

* a few more tests, as a treat

* chore(authz): round out tests

* fixed loaders, new GQL checks, dataLoaders in auth loaders

* fix(authz): get workspace limits loader

* chore(authz): update loaders

* frontend fixed up to snuff

* fix(authz): fix workspace plans for tests

* fix(authz): classic

* fix(authz): 0 counts

---------

Co-authored-by: Chuck Driesler <chuck@speckle.systems>
Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2025-04-01 16:38:20 +01:00
Alessandro Magionami 4a7d37e3d7 Merge pull request #4300 from specklesystems/alessandro/web-2874-return-user-counts-by-role-and-seat-type
Alessandro/web 2874 return user counts by role and seat type
2025-03-31 18:50:15 +02:00
Alessandro Magionami de1054720b feat(workspaces): member by role counts 2025-03-31 17:15:36 +02:00
Alessandro Magionami 99d9c9a2ad feat(workspaces): seats by type counts in workspace 2025-03-31 16:43:00 +02:00
Alessandro Magionami f70072d069 Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2906-list-invitable-workspace-members-in-a-project 2025-03-31 15:11:17 +02:00
Chuck Driesler b1da1d97a2 fix(workspaces): domain compliance by slug (#4295) 2025-03-31 13:36:22 +01:00
Alessandro Magionami d7ced64168 chore(workspaces): code review changes 2025-03-31 14:32:29 +02:00
Alessandro Magionami 0187cef785 chore(workspaces): code review changes 2025-03-31 12:09:52 +02:00
Alessandro Magionami 6c99ddb215 feat(workspaces): fix tests 2025-03-31 10:52:05 +02:00
Alessandro Magionami 34bebce186 Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2906-list-invitable-workspace-members-in-a-project 2025-03-31 09:38:36 +02:00
Alessandro Magionami 9b106b49a1 feat(workspaces): resolver for invitable collaborators 2025-03-31 09:38:17 +02:00
Alessandro Magionami bbef398cd3 feat(workspaces): repository functions for invitable collaborators 2025-03-31 09:37:52 +02:00
Chuck Driesler 7be2e39913 chore(tests): dramatically reduce scope/time of multi-region tests (#4282)
* chore(tests): limit multiregion ci to multiregion tests

* fix(multiregion): unsure if this works

* fix(multiregion): ope we got deleted
2025-03-28 00:28:38 +00:00
Kristaps Fabians Geikins c54d15fd93 feat: authz frontend foundation + reworked errors (#4275)
* feat: authz frontend foundation + reworked errors

* lint fixes

* test fix

* fixed noCache() util
2025-03-27 16:13:35 +02:00
Kristaps Fabians Geikins 20789281e1 chore: back to 1 extra region in tests (#4277)
* chore: back to 1 extra region in tests

* chore: back to 1 extra region in tests

* commenting out multiple multiregion tests
2025-03-27 15:28:00 +02:00
Alessandro Magionami a38bbd4066 feat(workspaces): add viewers count 2025-03-26 10:24:14 +01:00
Alessandro Magionami 3102a75d3b Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2867-expose-used-and-available-seats 2025-03-26 09:21:12 +01:00
Alessandro Magionami 5d6d0769fd Merge pull request #4236 from specklesystems/alessandro/web-2803-downscale-workspace-subscription
Alessandro/web 2803 downscale workspace subscription
2025-03-26 09:14:41 +01:00