Commit Graph

448 Commits

Author SHA1 Message Date
Kristaps Fabians Geikins b29331705e chore(server): get rid of duplicate gql TS types (#5065) 2025-07-14 11:31:12 +03: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 c2a28f8674 fix(#5018): avatar can be removed (#5022)
* fix: avatar can be removed
* feat: added tests for activeUser updates
2025-07-10 11:45:32 +02: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
Chuck Driesler c35b2ce8c2 fix(embeds): private embed pagination (#5040)
* feat(tokens): create embed-specific tokens

* fix(tokens): repo functions and policy sketch

* chore(authz): embed token policies and tests

* chore(authz): fine

* chore(gql): lint descriptions

* fix(embedTokens): better api surface, repo structure

* chore(embedTokens): test fixes

* fix(embeds): check resource access

* fix(embeds): use resource access util

* fix(embedTokens): paginate tokens, emit policy checks

* fix(embeds): better query typing

* chore(embeds): rename property
2025-07-08 13:17:26 +01:00
Chuck Driesler aa29a09ebc feat(tokens): create embed-specific tokens (#5013)
* feat(tokens): create embed-specific tokens

* fix(tokens): repo functions and policy sketch

* chore(authz): embed token policies and tests

* chore(authz): fine

* chore(gql): lint descriptions

* fix(embedTokens): better api surface, repo structure

* chore(embedTokens): test fixes

* fix(embeds): check resource access

* fix(embeds): use resource access util
2025-07-07 12:02:38 +01:00
Iain Sproat 556c2791b3 feat(file imports): large file uploads now work on docker compose (#5037) 2025-07-07 11:00:55 +01:00
Kristaps Fabians Geikins 7e01c6f769 feat(fe2): improved file import error handling (#5016)
* WIP error dialog

* import error reporting

* dialog content memoization

* dialog work

* more cleanup

* apollo cache adjustments

* add jobId to uploads table

* fix showing old pending version state

* feat(fe2): prevent user from leaving page if active uploads (#5017)

* feat(fe2): prevent user leaving if active uploads

* fixxes
2025-07-02 11:01:41 +03:00
andrewwallacespeckle 2fddcd78b7 feat(server+fe): Implement LimitedWorkspace for PendingWorkspaceCollaborator (#4984) 2025-06-27 09:35:37 +01:00
Chuck Driesler 2ef38a3962 fix(regions): respect region during project move to workspace (#4985) 2025-06-25 12:54:24 +01:00
Gergő Jedlicska 01bb883bc4 fix(gatekeeper): add missing feature from access check api 2025-06-19 16:15:29 +02: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 2be1592341 feat: show historical model uploads (#4954)
* ensure modelId is always filled

* BE seems fine

* frontendd

* pagination fix

* table max height

* lint fix

* unset tiny limit

* test fix
2025-06-18 10:56:33 +03:00
Iain Sproat 4738b97091 feat(server/fileuploads): use a presigned url to upload large files (#4901) 2025-06-17 17:38:47 +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
Daniel Gak Anagrov 460245a71b fix(versions): object history hidden when quering by project (#4884) 2025-06-04 10:44:08 +02:00
Daniel Gak Anagrov 23b61769b7 feat(fileupload): added eventBus and mixpanel monitoring 2025-06-02 08:22:20 +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
Chuck Driesler 780d001a1e feat(embed): expose embed feature access at project level (#4796)
* feat(embed): expose embed feature access at project level

* fix(embeds): use switch
2025-05-22 12:22:06 +01: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
andrewwallacespeckle a4278e5863 Merge branch 'main' into andrew/specklecon-banner-dismissable 2025-05-21 11:40:40 +02: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
Kristaps Fabians Geikins 9998ed2586 feat: personal project limits (#4759)
* base limits cleanup

* history limit tests

* canCreatePersonal & tests

* canInvite block

* WIP model check

* fix tests

* shared tests fix

* lodash import fix

* lint fix

* help update

* hopefully fixing test

* CR comment
2025-05-20 14:56:05 +03:00
andrewwallacespeckle c571d51d27 feat: add speckleConBannerDismissed to activeUser.meta 2025-05-20 13:55:32 +02: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
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 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
Chuck Driesler 19ea8b2879 fix(authz): expose canInvite gql queries (#4712) 2025-05-12 21:10:47 +01:00
Kristaps Fabians Geikins b406d0e32d chore(server): node16 & export maps support for server (#4698)
* chore(server): node16 & export maps support for server

* moar cleanup

* lint fixc
2025-05-12 14:27:34 +03:00
Chuck Driesler b6ec9dca5b fix(authz): canPublish and canLoad policies (#4673) 2025-05-06 14:27:20 +01:00
Chuck Driesler 848f04d861 feat(automate): create test automations without functions (#4657)
* feat(automate): test automations without functions (almost)

* fix(automate): drop function select from test automation creation

* fix(automate): partial test automation panel

* feat(automate): environment configuration in test automation

* fix(automate): closer fit rows

* fix(automate): create test automation runs without functions
2025-05-06 10:48:21 +01: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
Chuck Driesler c060d6097d fix(workspaces): include name and id on discoverableworkspacecollaborator (#4629)
* fix(workspaces): show more info for discoverable workspace members

* chore(workspaces): something silly with gqlgen

* Update FE

* Fix FE

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-04-30 13:52:12 +01: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
Kristaps Fabians Geikins 9a18a6e1c2 feat(server): ProjectCollaborator.workspaceRole (#4598) 2025-04-25 11:02:37 +03:00
Kristaps Fabians Geikins 5df39ce4ce feat(server): allow activeUser.query to retrieve implicitly accessible projects (#4593) 2025-04-25 09:13:13 +03:00
Alessandro Magionami 3afe6a917b Merge pull request #4545 from specklesystems/alessandro/web-3127-sort-projects-in-the-project-selection-step
Alessandro/web 3127 sort projects in the project selection step
2025-04-23 14:54:54 +02:00
Kristaps Fabians Geikins 89391d92ab feat(server): get workspace seat usage w/o a subscription (#4574)
* feat(server): get workspace seat usage w/o a subscription

* minor cleanup
2025-04-23 15:26:02 +03:00
Alessandro Magionami 10d7bd106a Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-3127-sort-projects-in-the-project-selection-step 2025-04-23 11:05:10 +02:00
Chuck Driesler 7663321557 fix(authz): add canDelete policy for automations (#4554)
* fix(authz): add canDelete policy for automations

* fix(authz): use asOperation
2025-04-23 10:02:59 +01:00
Chuck Driesler 5c68f8a1da feat(automate): ability to delete automations (#4228)
* feat(automate): delete automation be

* feat(automate): delete automations fe

* fix(automate): delete modal, update cache

* chore(automate): minor formatting

* fix(automate): delete blobs w automations

* chore(automate): repair blob test

* fix(automate): make sure to return

* fix(automate): do soft delete

* fix(automate): include deleted filter in project automation queries
2025-04-22 20:22:44 +01:00
Alessandro Magionami 7c8d0a7b31 Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-3127-sort-projects-in-the-project-selection-step 2025-04-22 18:16:29 +02:00