Commit Graph

267 Commits

Author SHA1 Message Date
Kristaps Fabians Geikins 0c837715a3 feat: support group delete (#5215)
* backend implemented

* added create to group, but search seems busted

* group search fixed

* moar group retrieval fixes

* more recalculations

* support group delete

* delete confirm dialogs
2025-08-13 10:14:44 +03:00
Kristaps Fabians Geikins ea5dadbdb2 feat: move view into group dialog (#5211)
* looking into dialog premature closing

* fixed group select

* rover update

* tests
2025-08-12 13:32:38 +03:00
Kristaps Fabians Geikins 0f5096fb2e feat: copy link to view + load original version (#5202)
* frontend nearly there

* backend adjustment sort of there

* WIP url busted issue

* does it work?

* how about now

* loading seems to work now
2025-08-11 16:02:35 +03:00
Kristaps Fabians Geikins f87edcb50f feat: saved view update dialog (#5196)
* view update BE foundation

* WIP update service call

* a bunch of tests

* WIP edit view dialog

* fix for auto submit

* frontend works
2025-08-08 13:27:15 +03:00
Kristaps Fabians Geikins 21e8ec3e27 feat: saved view delete (#5192)
* canUpdate auth policy

* delete mutation WIP

* backend works

* frontend working

* minor adjustments

* test fix

* switch to new empty state

* beefing up coverage

* cr fix
2025-08-07 12:13:39 +03:00
Charles Driesler b76b4a5d29 Merge branch 'main' into oguzhan/acc-connector 2025-08-05 16:21:49 +01:00
Jedd Morgan 392a285423 feat(file-import): Proposed changes for file type handling with various FF (#5181)
* Proposed-changes

* Reverted changes to acceptedFileExtensions

* revert docker yml changes

* and again

* reverted yarn lock
2025-08-05 15:30:57 +01:00
Charles Driesler a4b0f1eee5 Merge branch 'main' into oguzhan/acc-connector 2025-08-05 11:46:37 +01:00
Charles Driesler 9c637c27a4 Merge branch 'main' into oguzhan/acc-connector 2025-08-05 11:45:44 +01:00
Kristaps Fabians Geikins 9545ff6147 fix(shared): parseFeatureFlags should ignore empty string values (#5179)
* fix(shared): parseFeatureFlags should ignore empty string values

* updated values.yaml

* updated values.yaml

* tests fix
2025-08-05 12:54:53 +03:00
Kristaps Fabians Geikins a6287fc06d feat(fe2 & server): saved views foundation (list & view) + bits n bobs (#5163)
* init db migration

* WIP store view

* create service call

* WIP insertion

* insert sort of works

* moving code arounmd

* creation tests

* avoid duplicate entries

* fixes from main

* basic group retrieval works

* group filtering works

* WIP view listing

* filter by acl

* fixes + WIP single group retrieval

* wip pivot

* more pivot query fixes

* tests fixed after pivot

* views list tests

* fixing test command

* business plan only checks

* more tests for coverage

* .dts import fix

* cli fix

* anutha one

* auth policy tests for business plan access

* WIP saved views panel base

* BE listing adjustments

* WIP group rendering

* group render done

* WIP post create cache updates

* listing fine?

* my vs theirs

* auto open

* minor fixes

* click load omg

* nicely loading views

* type fix

* less spammy loading

* another type fix:

* more lint fix

* test fix

* codecov disable

* moar coverage

* fix sidebar flashin

* more test coverage

* more test cvoverage

* minor adfjustments

* adj

* saved view wipe fixes

* CSR viewer

* more improvements

* extra feature flag checks

* lint fix

* feature flags fix

* more test fixes
2025-08-05 11:52:50 +03:00
Charles Driesler 5669675dc7 chore(acc): fix build 2025-08-05 00:59:17 +01:00
Charles Driesler e989ae871c Merge branch 'main' into oguzhan/acc-connector 2025-08-05 00:52:34 +01:00
Charles Driesler 6da00d524c fix(acc): policy and usage in FE 2025-08-05 00:52:16 +01:00
Charles Driesler 4b96a9faeb fix(acc): getter gql and more 2025-08-04 23:05:39 +01:00
Kristaps Fabians Geikins 3ff32d639d feat(server): allow running migrations w/o having to build (#5178)
* feat(server): allow running migrations w/o having to build

* package.json fix

* avoid string mutation

* CLI for purging test DB
2025-08-04 13:40:28 +03:00
Chuck Driesler e894477cd3 fix(acc): env variables and repo functions 2025-07-25 21:18:43 +01:00
Gergő Jedlicska d0cd330a61 feat(authPolicies): add demo project as a publicly loadable override (#5137) 2025-07-24 11:04:53 +02:00
Iain Sproat d0e3377978 feat(file uploads): large file uploads API is always available (#5103) 2025-07-23 13:36:27 +01:00
Daniel Gak Anagrov 6d33b4989c feat(file_upload): update observability metrics (#5079)
* feat: added count of background jobs
* feat: added repository function to count background jobs
* feat: addapted metrics to new queueing system
* feat: added duration to fileuploads
2025-07-21 10:51:14 +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
Mike 0a57689469 Feat: Add private embeds to the pricing table (#5092) 2025-07-16 18:28:02 +02:00
Iain Sproat 875a1a1783 feat(previews): retry errored previews if feature flag enabled (#4498) 2025-07-16 15:30:19 +01:00
Kristaps Fabians Geikins d68f7943cc feat(ui-components): proper LayoutMenu mount on body support + fixes (#5069) 2025-07-14 15:34:52 +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
Gergő Jedlicska a5d624166b feat(backgroundjobs): add new background jobs module for file imports (#5041)
* feat(backgroundjobs): add new background jobs module for file imports
queueing

* fix(fileuploads): a merge gone wrong

* feat(backgroundjobs): rename rhino queue env var

* test(backgroundjob): use deep equal claude

* fix(fileuploads): sync PR review

* feat(backgroundjobs): add origin server url to the background jobs table

* test(backgroundjobs): make tests pass
2025-07-10 18:04:16 +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
Jedd Morgan c4778bfa42 feat(file-import): experimental ifc openshell importer (#5028)
* first pass

* second pass

* undo local changes

* Refactors env vars to feature flags, adds helm chart values

* fix documentation of feature flag

* fix typo

* adjusted speckleifc pinned version

* renamed enableLegacyIfcImporter helm ff to legacyIfcImporterEnabled

* Added experimental ifcimporter to next-gen file importer

* Fix next-gen import service redis url fallbakcs

* add missing server url envvar

---------

Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com>
2025-07-04 17:01:25 +01:00
Iain Sproat d80fe58c1f feat(server/fileuploads): remove experimental next gen REST API (#5034) 2025-07-03 18:59:17 +01:00
Iain Sproat 96c7394864 chore(server/previews): handle case where project deleted while preview generated (#4612) 2025-07-01 15:25:20 +01:00
Kristaps Fabians Geikins 290fdb3e6d feat(server): dev-only endpoint for monitoring bull queues (#5000)
* feat(server): dev-only endpoint for monitoring bull queues

* cr comments
2025-06-30 16:12:45 +03:00
Kristaps Fabians Geikins 5ef0e67ac7 fix: making pg LISTEN/NOTIFY skip pool (#5007) 2025-06-30 14:54:12 +03:00
Kristaps Fabians Geikins c57262aa44 chore: log listen/notify connection strings (#5006)
* chore: log listen/notify connection strings

* re-adding multiRegionConfig alias

* CR comments

* type fix
2025-06-30 11:59:28 +03:00
Iain Sproat febe2a9e4e fix(file imports): ensure correct server url is used by parser (#4987) 2025-06-26 09:08:39 +01:00
Iain Sproat 4784fdec4f chore(file imports): metrics for next gen file importer (#4977) 2025-06-25 09:36:28 +01: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
Chuck Driesler 85e600aa98 feat(viewer): include selected object application ids in viewer state (#4802)
* feat(viewer): include selected object application ids in viewer state

* fix(viewer): selected object application ids as map

* fix(viewer): drop legacy key
2025-06-09 17:10:28 +01:00
Gergő Jedlicska 941c5c6d8c fix(shared): remove duplicate policy implementation for reading project (#4898)
3d data
2025-06-06 11:51:44 +02: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
Kristaps Fabians Geikins 406d7fe9cf feat(auth): allow admins w/ override to receive (#4869)
* feat(auth): allow admins w/ override to receive

* minor fix
2025-06-02 12:38:35 +03:00
Kristaps Fabians Geikins 4412e7a798 fix(fe2): cors OPTIONS reqs sometimes returning redirects (#4860)
* fix(fe2): cors OPTIONS reqs sometimes returning redirects

* path parsing fix

* test fix
2025-06-02 10:22:40 +03: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 06e19fbd50 feat(gatekeeper): add updatedAt field to workspace plans (#4786)
* feat(gatekeeper): add updatedAt field to workspace plans

* fix: lint error

* fix: added updatedAt test

* fix: shared test
2025-05-26 11:35:53 +02:00
Alexandru Popovici 0ef0a13979 Pro Measurement Tools (#4452)
* feat(viewer-lib): WIP on area measurement

* feat(viewer-lib): WIP on area measurement. Basics are working. Needs more bling

* feat(viewer-lib): Implemented polygon triangulation for measured area

* chore(shared): Updated MeasurementType

* Add Area control to measure panel

* feat(viewer-lib): Real time updates of the fill polygon and area value

* feat(viewer-lib): Added pole of innacessibility as area label anchor using the polylabel libraryh

* feat(viewer-lib): Fixed fill polygon material

* feat(viewer-lib): Changed the surface normal indicator from the faulty disc to a outlined rectangle. Looks and works much better now

* fix(viewer-lib): Measurements get clipped by sections planes

* faet(viewer-lib): Measurements can now optionally define their own snapping method. Area measurement snaps to first point in screen space. Generic vertex snap still applies if enabled

* fix(viewer-lib): Forgot to project the measured point

* feat(viewer-lib): Double click auto-finishes the area measurmenet by instantly joining with the first point. Right clikc removes current area measurement point so you can 'undo'

* fix(viewer-lib: Fixed a stupid bug relatedto text because somebody thought that making it 'async' would be sooooo cool...

* fix(frontend): Prevent zoom on double click when using area measurement

* chore(viewer-lib): Refined and fomralized a bit now that the general idea of a measurement has got more complex

* chore(viewer-lib): Moved state switching a bit

* chore(viewer-lib): Replaced the old disc normal indicator with the new one and made it standard. Added an option to the gizmo's style that determines the pixels size of the normal indicator

* chore(viewer-lib): Documented the area measurement tool

* chore(viewer-lib): Some updates:
- Implemented proper bounds getter for area measurement
- Got rid of the static vector buffers in Measurement and replaced them with consts where needed
- Reduced the min click timing from 250ms to 150ms
- Other small adjustments

* feat(viewer-lib): Added the option to chain measurements

* chore(frontend-2): Added toggle for measurement chaining

* chore(viewer-lib): Perpendicular measurement chaining now align on the same line as requested

* feat(viewer-lib): Implemented point (coordinate) measurement:
- Added support for billboard offseting in NDC in the shader via vec2 offset uniform. Not a dream come true, but required mostly because of how troika works
- SpeckleText background now follows text anchoring
- Implemented new POINT measurement type

* chore(viewer-lib): Separated label position calculation. We now update only the label transform each frame, instead of updating the entire label redunantly

* chore(viewer-lib): Offsets are now constants. Removed redundant vector and matrix creation

* chore(frontend-2): Placeholder radio button for point measurement type. Fixed compile errors

* fix(viewer-lib): Fixes WEB-3105. Export all measurement types

* updated icons

* Update description

---------

Co-authored-by: andrewwallacespeckle <andrew@speckle.systems>
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-05-26 12:10:19 +03:00
Gergő Jedlicska 2e86a723c6 feat(fileimport-service): add next gen file importer (#4697)
* feat(fileimport-service): add next gen file importer

* feat(fileimports): integrate server and fileimporter

* chore(dui3): remove leftover artifacts

* fix(server): test typing fixes

* fix(fileimports): test and pr comment fixes

* feat(fileimports: moare test fixes

* fix(fileimports): tests and yarn dedupe
2025-05-23 10:27:00 +02:00
Gergő Jedlicska 34cb632011 feat(full-stack): handle v2 automation result schema in the app (#4797)
* feat(full-stack): handle v2 automation result schema in the app

* fix(automate): lost length in merge

---------

Co-authored-by: Charles Driesler <chuck@speckle.systems>
2025-05-23 10:26:36 +02:00