Daniel Gak Anagrov
51f0b31fde
feat: record delete workspace activity ( #5646 )
2025-10-06 10:29:21 +01:00
Chuck Driesler
d555bd9e57
feat(sso): allow sso session duration overrides ( #5289 )
...
* feat(sso): allow secret sso session overrides
* fix(sso): better timeout config
* chore(sso): fix test definitions
2025-09-11 20:03:56 +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
Mike
08eb1f7a1d
Feat: Bashboards in app ( #5333 )
2025-09-01 14:24:17 +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
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
Chuck Driesler
d2f2d7bcfd
feat(automate): allow function authors to regenerate function tokens ( #5057 )
...
* feat(automate): expose function regeneration endpoint
* chore(automate): remember to call the function
* fix(automate): use correct auth code action
* fix(automate): token regenerate policy
* fix(automate): expose function regen token policy
* feat(automate): workspace automation settings tab
* feat(automate): function token regeneration dialog
* fix(automate): improve gql usage in vue components
* chore(authz): tests for automate function policies
* fix(automate): use paginated query
* fix(automate): resolve initial result
2025-07-17 11:24:58 +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
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
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
Daniel Gak Anagrov
11948b40de
feat(gatekeeper): track seat updates ( #4865 )
2025-06-05 12:41:05 +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
andrewwallacespeckle
71e732b52e
Throw WorkspacesModuleDisabledError when FF is off
2025-05-29 14:11:45 +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
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
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
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
f1ae0916c6
feat(server): improved user/server profile mp tracking ( #4540 )
...
* user tracking
* server profile tracking
* style
2025-04-23 15:19:24 +03:00
Chuck Driesler
cb7243cfbe
feat(authz): Project.canCreateModel and Project.canMoveToWorkspace policies ( #4342 )
...
* feat(authz): Project.canCreateModel policy
* feat(authz): Project.canMoveToWorkspace policy
* fix(authz): expose policies as permissions objects
* chore(authz): actually use the policies lol
* chore(authz): add tests for new policies
* fix(authz): skip affected test
* fix(authz): pr comments
* fix(authz): better errors, better tests
* chore(authz): remove references to deleted error
2025-04-08 15:29:12 +01: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
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
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
Kristaps Fabians Geikins
a6a4ceee86
feat: true-myth result structures & other auth policy improvements ( #4262 )
...
* fixing up typing
* better dynamic loader mechanism
* buildReqLoaders cleanup
* added caching to loaders
* ensuring all loaders are async
* fe2 plugins error handling fix
* feat(shared): true-myth result structures & other auth policy improvements
* moving workspaceCore loaders to correct place
2025-03-25 17:49:02 +01:00
Gergő Jedlicska
968d2f2520
auth/lib ( #4242 )
...
* wip
* wip
* feat(authz): wip policy shape
* wip
* fix(authz): canReadProject with latest pattern
* wip
* feat(shared): simplify authz checks and policies
* feat(shared): port role weights into shared
* test(shared): some more tests for authz
* test(shared): more query project tests
* typo!
* feat(shared): ff loading refinements
* feat(shared): example authorization policy integration
* authz loaders init
* chore(authz): naming etc
* wip
* fix(authz): authz error objects
Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com >
Co-authored-by: Gergő Jedlicska <gjedlicska@users.noreply.github.com >
* fix(authz): use correct role weights
* chore(authz): use codes from errors in tests
* chore(authz): wow
* chore(authz): fix more tests, add more tests
* chore(authz): fix some tests, add some tests (again)
* fix(authz): fix tests again
* fix(server): you need to await !!!! otherwise it crashes the server.
---------
Co-authored-by: Charles Driesler <chuck@speckle.systems >
Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com >
Co-authored-by: Gergő Jedlicska <gjedlicska@users.noreply.github.com >
2025-03-21 16:37:36 +01:00
Chuck Driesler
66da283a79
Revert "feat(authz): shared authz pipeline ( #4151 )" ( #4241 )
...
This reverts commit cb8aa31b66 .
2025-03-21 15:41:17 +01:00
Chuck Driesler
cb8aa31b66
feat(authz): shared authz pipeline ( #4151 )
...
* wip
* wip
* feat(authz): wip policy shape
* wip
* fix(authz): canReadProject with latest pattern
* wip
* feat(shared): simplify authz checks and policies
* feat(shared): port role weights into shared
* test(shared): some more tests for authz
* test(shared): more query project tests
* typo!
* feat(shared): ff loading refinements
* feat(shared): example authorization policy integration
* authz loaders init
* chore(authz): naming etc
* wip
* fix(authz): authz error objects
Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com >
Co-authored-by: Gergő Jedlicska <gjedlicska@users.noreply.github.com >
* fix(authz): use correct role weights
* chore(authz): use codes from errors in tests
* chore(authz): wow
* chore(authz): fix more tests, add more tests
* chore(authz): fix some tests, add some tests (again)
* fix(authz): fix tests again
---------
Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com >
Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com >
Co-authored-by: Gergő Jedlicska <gjedlicska@users.noreply.github.com >
2025-03-21 14:45:36 +01:00
Kristaps Fabians Geikins
e24c26e3d2
feat: getting rid of defaultProjectRole setting ( #4221 )
...
* feat: getting rid of defaultProjectRole setting
* get stdout reporting in CI
* yarn lock fix
* fix package.json
* better CI test output
* pinning mocha-multi
2025-03-20 12:58:30 +02:00
Kristaps Fabians Geikins
b55e197d00
chore(server): refactor seat updated to be its own event ( #4214 )
...
* chore(server): refactor seat updated to be its own event
* minor cleanup
* test fix
2025-03-19 12:17:27 +02:00
Kristaps Fabians Geikins
d903e8ffc4
feat(server): support editor -> viewer seat downgrades ( #4181 )
...
* new seat based project role checks implemented
* everything done
* minor bugfix
2025-03-14 14:21:25 +02:00
Kristaps Fabians Geikins
28b49107b7
feat(server): upgrade workspace seat type ( #4158 )
...
* feat(server): upgrade workspace seat type
* test/lint fixes
2025-03-11 12:41:18 +02:00
Iain Sproat
ce08e5e02d
refactor(server): logging directory renamed to observability ( #4077 )
2025-02-28 08:43:54 +00:00
Alessandro Magionami
fd68c6ef2a
feat(workspaces): user workspace join requests ( #4023 )
...
* feat(workspaces): user workspace join requests
* chore(workspaces): return limited workspace
* chore(workspaces): fix tests
* chore(workspaces): add index for userId
* chore(shared): fix totalcount on getpaginateditems
* chore(workspaces): add workspace core resolvers to throw specific error
2025-02-25 12:19:21 +01:00
Gergő Jedlicska
26fbe78998
feat(workspaces): remove regular workspace metrics tracking ( #4008 )
2025-02-17 21:30:42 +01:00
Gergő Jedlicska
bf80347abf
gergo/web 2664 workspace backend powered metrics ( #3985 )
...
* feat(workspaces): delete workspace emit event
* feat(workspaces): move workspace group metrics to the backend
* Removed FE mixpanel group update
* Remove fragment
* test(gatekeeper): add unittest to new gatekeeper service
---------
Co-authored-by: Mike Tasset <mike.tasset@gmail.com >
2025-02-17 09:50:16 +01:00
Chuck Driesler
35b59ca4f2
chore(workspaces): drop defaultLogoIndex ( #3898 )
2025-01-28 08:56:13 +01:00
Alessandro Magionami
6d0f08b7b5
feat(workspaces): approve join request ( #3833 )
...
* feat(workspaces): approve join request
* chore(workspaces): add missing dep to resolver call
* chore(workspaces): use commandFactory
2025-01-16 16:46:59 +01:00
Alessandro Magionami
7bf3c5df74
chore(workspaces): fix graphql enum
2025-01-14 17:58:51 +01:00
Alessandro Magionami
bb73ecbe3c
feat(workspaces): list workspace join requests for admin
2025-01-14 12:02:57 +01:00
Chuck Driesler
a784a72365
feat(workspaces): add workspaceRole to LimitedUser type ( #3721 )
...
* feat(workspaces): add workspaceRole to LimitedUser type
* fix(users): require workspace access for query
2025-01-09 15:11:18 +01:00
Alessandro Magionami
b1e483462c
feat(workspaces): create workspace_join_requests table and domain types
2024-12-20 10:44:58 +01:00
Gergő Jedlicska
2a72631e8b
feat(gatekeeper): expire trail workspace plans ( #3669 )
2024-12-11 17:22:04 +01:00
Chuck Driesler
c1eeb20d5a
fix(sso): fallback resolver ( #3667 )
2024-12-10 15:29:34 +01:00