Commit Graph

137 Commits

Author SHA1 Message Date
Mike ed875f0134 Feat: Enable embedding private/workspace projects (#5047) 2025-07-15 13:25:12 +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
andrewwallacespeckle bf8cd3a650 Move composable 2025-06-18 10:13:04 +02:00
andrewwallacespeckle 98f009eee6 fix(fe): Never show users own activity 2025-06-17 13:25:17 +02: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
andrewwallacespeckle 4fc16d2f8c fix(fe): prevent limits dialog flash during version switches 2025-06-04 14:02:35 +02:00
Kristaps Fabians Geikins 596312ab0e feat(frontend): personal project limit disclaimers & prompts (#4822)
* ProjectsAdd wrapper

* WorkspaceMoveProject wrapper added

* move wrapper finalized

* passing through location

* more cleanup

* model add wrapper

* permissions cleanup

* add invite wrapper

* vue-tippy bugfix

* ViewerLimitsDialog prep

* upgrade limit alert prep

* limit alerts

* movemanager fix

* new add flow

* slug update fix

* add model flow

* invites?

* some extra fixes

* move unmount fix?

* more fixes

* vue-tsc update

* style: remove h-32 for smaller screens

* vue-tsc parser fix

* prep for new viewer limits dialog

* updated viewer dialogs

* comment variant cleanup

* CR comments

---------

Co-authored-by: michalspeckle <michal@speckle.systems>
2025-05-28 12:12:18 +03:00
Mike 74864813e2 Fix: Sync ative measurement tool with state (#4817) 2025-05-28 10:53:27 +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
Mike cc60140967 Feat: Disable Speckle branding on embeds (#4801) 2025-05-22 17:02:04 +02:00
Alexandru Popovici b50076ee29 Explode + Outlines (#4792)
* fix(viewer-lib): Implemented event for explode extension that allows section outline to sync up

* chore(sandbox): Fixed compile error
2025-05-22 10:03:31 +03:00
Alexandru Popovici a385823b2d feat(viewer): objectloader2 integration (#4267)
* feat(viewer-sandbox): Made a sandbox function that will only invoke the object-loader loading objects

* first pass of creating an objectloader2

* updated build + added vitest

* try to get viewer sandbox to use new code

* sandbox type fix

* refactor a bit

* can download root

* intermediate commit for downloader/caching queue

* can download stuff!

* refactor files

* intro isBase and fix isString

* move single download to downloader

* fix download

* PR feedback

* some intermediate commit

* do clean up and download better

* clean up promises and linting

* can generate values while downloading and caching

* add a finish method

* remove unused functions

* remove asBase

* add temporary docs

* add more docs with mermaid

* add more test models

* add response validation

* add tests and redo options

* add test for download batch

* fix downloader tests and change Item to have clearer Base items

* add tests and refactor a little

* use fetch in downloader as an option

* use optional in-memory indexdb instead of monkey patching the global one

* more refactors for options for objectloader2

* add tests for objectloader2

* adjust single download

* benchmark loading and adjust ol2 batches

* download more!

* adjust to use hash privates

* refactored again with renaming

* cleanup

* make setupCacheDb throw instead

* use BatchedPool for downloads!

* fix tests

* adjust timings and add adaptive waiting

* Only wait if queue wasn't empty and queue size was full

* fix tests

* fix file names and some private usage

* fix interval and private usage

* rename vars

* use params for methods

* fix params for constructors and tests

* fix params for constructors and tests again

* using dexie

* faster settings but doesn't end well

* fixed end, optimized and removed logs

* fix tests

* fix types?

* update lock with WSL

* add e2e small model test

* fix/update yarn.lock

* Remove unused eslint ignore to fix pre-commit

* prettier fixes

* fix real DB usage

* rename methods to better match OL1

* rename methods to better match OL1 again

* add extra header collection

* add headers correctly

* test getTotalObjectCount

* feat(viewer-lib): Replaced old object loader with Adam's  objectloder2

* fix(viewer-lib): Removed the old object loader. Removed unneeded pause time in speckle loader

* Testing

* only deferred if not downloaded....don't save everything

* Lockfile

* pool isn't adjustable, adjust download buckets, dexie read is faster

* chore

* fix(viewer-lib): Fixed compiler errors

* fix getObject access with real indexeddb...adjust buffer for deferred access

* Fix disposal and pausing

* don't index item!

* fix dockerfiles to use OL2

* fix Dockerfile

* Fix dockerfile

* defer correctly and use record to add/lookup/remove to

* delete stuff correctly

* chore(sandbox): Enabled viewer loading

* use objects instead of arrays to avoid findIndex

* remove extra count

* add a found cache to avoid some db hits

* order matters for deferment

* move found map to deferment

* change option numbers

* 2 level cache with expiry

* defer everything, use loader to track what is requested....expire only found items

* add deferment disposal

* oops mismerge

* chore(sandbox): Default stream

* Beta version of CachePump and CacheReader

* Clean up initialization

* More clean up

* chore(objectloader2): Fixed CI compiler error

* chore(objectloader2): Fixed prettier

* add cachePump tests

* add cacheReader tests

* fixed more tests

* fixed final tests

* moving stuff around and lock return value

* try to move stuff out of objectloader2

* use a factory

* rename factory

* formatting

* eslist fixes

* try allocating no strings

* add comments

* small refactor and add another test

* fix deferment expiration and have test

* use byte size for max memory cache size

* fix deferment manager tests

* saved comment

* fix(viewer-sandbox): Fixed compiler error

* ignore tshy

* chore(frontend): Attempt to make viewer loading sequential

---------

Co-authored-by: Adam Hathcock <adam@hathcock.uk>
Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com>
2025-05-21 10:05:50 +03:00
Mike aaa4e1ab71 Feat: Add embed option to disable title link (#4778) 2025-05-20 22:25:03 +02:00
Alexandru Popovici 12545c6f16 Oriented Section Tool (#4230)
* feat(viewer-lib): WIP on the new OrientedSectionTool

* feat(viewer-lib): Added proper face pulling for the oriented section box

* feat(viewer-lib): Several updates on the oriented sectioning tool
- Implemented section planes calculation and propagation
- Unified obb computation from all gizmos
- Implemented proper setBox function
- Updated the viewer-core to work with OBB instead of AABB for it's clipping volume
- Updated the intersections to work with OBB for their intersting bounds
- Added extension methods to Box3 and OBB

* feat(viewer-lib): Better way of handling gizmo input events overlapping

* fix(viewer-lib): Updated clippingVolume occurences to OBB

* feat(viewer-lib): Section outlines now work with oriented section tool!

* feat(viewer-lib): Integrated new section tool with the frontend and API
- Defined an archtype for SectionTool which all section tools can derive from
- The old section tool is renamed to AxisAlignedSectionTool
- Replaced the old section tool with the oriented one in the frontend

* fix(viewer-lib): Fixed compile errors

* feat(viewer-lib): Some updates:
- Section tool outline, the visible box, is now rendered as before however it's correctly being RTE'd. And we can also make it thinner/thicker now
- Fixed the issue where the scale controls had 'exponential' growth. It's now linear like the translate one

* feat(viewer-lib): Implemented highlghting the box face when clicking on it to extend/retract it

* fix(viewer-lib): A bunch of fixes for the oriented section tool

* feat(viewer-lib): Some updates:
- Documented new OrientedSectionTool code
- Fixed som issues related to section box reseting
- Hid the translation and rotation gizmos that we aren't using
- Tidied up a bit

* feat(viewer-lib): Set the translate and rotate gizmos in local space so the rotation will affect them as wll

* chore(viewer-lib): Purged the old section tool

* chore(viewer-lib): Updated section box data type. Updated LegacyViewer section box data handling. Updated frontend to use new data type. Still not working doe

* fix(viewer-lib): Fixed an issue where comments with section boxes did not enable section outlines at startup

* chore(frontend): Fixed ci compiler error

* fix(viewer-lib): Fixes WEB-1593
2025-05-19 11:30:50 +03:00
andrewwallacespeckle 9b2e9f2d11 Update ui.ts 2025-05-13 10:09:30 +02:00
Mike 26489fb420 Fix: Allow selecting of the default color (#4701) 2025-05-12 16:14:28 +02:00
andrewwallacespeckle 91cc940ff6 Only show white border on dark mode pen mode 2025-05-09 15:25:58 +02:00
Alexandru Popovici 900c18bbcf View Modes 1.5 (#4625)
* feat(viewer-lib): Adding outline rendering support for all/any pipeline:
- Implemented EdgesPipeline as a standalone pipeline. Can be used as is, but it's mostly used by other pipelines to add outline rendering support
- Moved the MRT/non-MRT versions for edge generation inside the EdgesPipeline. This removed a lot of redundant pipelines
- Added optional outline rendering support for all relevant pipelines

* feat(viewer-lib): Added optional edges to the TAA pipeline.

* chore(viewer-lib): Renamed some of the pipelines to be more consistent with the names given by the frontend. Cleaned up older stuff

* chore(viewer-lib): ViewportPass makes sure it requests renders until matcap texture finished loading

* chore(frontend-2): Updated the frontend with the new view mode type changes

* feat(viewer-lib): Some updates on view modes:Added support for outline thickness and color. Removed the background texture option from edges pass

* feat(viewer-lib): Handles WEB-3147:
- Outlines are now displayable on top of any dom element.
- There is one asterisk. Pure black colored outlines (0) do not blend properly because of some browser weirdness

* feat(viewer-lib): All pipelines besides pen now draw the outlines of transparent objects with a bunch of downsides

* chore(viewer-lib): Fixed sandbox errors

* feat(viewer-lib): Updated ViewModes extension to work with pipeline options. Defined EdgesPipelineOptions

* chore(viewer-lib): Fixed sandbox compile errors

* chore(sandbox): Viewer load not object loader only

* chore(viewer-lib): Fixed linting issues.  are now optional when setting view modes

* feat(fe): View mode menu changes with no integration

* feat(fe): Frontend view mode menu integration

* fix(viewer-lib): Fixed the false gradient generated at the edges of the screen when in pen mode

* fix(fe): Better naming. Parse line weight to number

* chore(viewer-lib): A few updates:
- ViewModes now caches it's current options so it can properly determine when to do a full pipeline change and when to just update options
- Default pipeline options are now exported by the viewer
- Default pipeline options have edges enabled

* feat(fe): Design changes. Remove unneeded watch. Fix shortcuts

* feat(fe): use dark mode colours. add colour controls

* fix(fe): shortcuts and colours

* fix(fe): reactive defaultColor

* feat(fe): New descriptions. New hex colours.

* feat(fe): add mixpanel. watch darkmode

* fix(fe): fix dark mode watch

---------

Co-authored-by: andrewwallacespeckle <andrew@speckle.systems>
2025-05-09 15:06:18 +03:00
Iain Sproat 920099c39f chore(readable code): use TIME_MS for readable durations
- we recently added TIME_MS helper; this applies it to existing durations
2025-04-18 17:51:43 +01:00
Kristaps Fabians Geikins b287702145 feat: version checks + generally improved auth error messaging (#4384)
* foundation for new version checks

* canUpdate policy

* can req render

* canReceive

* BE implemented

* FE checks implemented?

* test fix

* improved auth error messaging

* fix lint
2025-04-14 10:43:48 +01:00
Kristaps Fabians Geikins b6c21fd506 feat: comment read/write auth policies in BE & FE (#4368)
* webhooks perm minor fix

* tryna get fileimport service to work

* new comment policies - shared

* BE done?

* checks implemented in FE

* lint fix

* tests fix

* readme fix
2025-04-10 15:14:34 +03:00
andrewwallacespeckle be4503cf5b typo fix 2025-03-14 13:22:35 +00:00
andrewwallacespeckle 425fdb27f2 centralise thread context state and clear on unmount 2025-03-14 13:11:23 +00:00
andrewwallacespeckle 0df66079b4 Track active context thread with useActiveThreadContext 2025-03-14 12:37:40 +00:00
andrewwallacespeckle f4e7f10af8 Merge branch 'main' into andrew/improve-ux-federated-comments 2025-03-14 11:44:23 +00:00
Kristaps Fabians Geikins 50fd05afe8 feat(fe2): more viewer debugging improvements (#4193) 2025-03-14 12:47:58 +02:00
andrewwallacespeckle de620c90be destructure ViewerRoute utilities 2025-03-14 09:46:44 +00:00
andrewwallacespeckle 49ee7e005c remove redundant route handling in thread context 2025-03-14 09:44:26 +00:00
andrewwallacespeckle 3f457d4f6c remove redundant resource deduplication 2025-03-14 09:42:53 +00:00
andrewwallacespeckle ab0253a1c6 Merge branch 'main' into andrew/improve-ux-federated-comments 2025-03-14 09:36:22 +00:00
Kristaps Fabians Geikins c49a76f87f feat(fe2): better viewer activity observability (#4190) 2025-03-14 10:43:07 +02:00
andrewwallacespeckle e385d93cf8 Removes redundant typeof r 2025-03-13 15:07:49 +00:00
andrewwallacespeckle cef55cd66a use proper resource parsing in federated context 2025-03-13 15:02:18 +00:00
andrewwallacespeckle 8c4cbbd77b properly restore viewer state when returning from thread context 2025-03-13 14:55:59 +00:00
andrewwallacespeckle 180398feca move thread context click handling into composable. better naming 2025-03-13 14:44:38 +00:00
andrewwallacespeckle 3fdfaa7455 testing updates 2025-03-13 09:40:15 +00:00
andrewwallacespeckle f58916ffce Fix ListItem Stasuses 2025-03-13 09:26:36 +00:00
andrewwallacespeckle f1142beb93 Tidyups 2025-03-12 14:57:00 +00:00
andrewwallacespeckle ee0cc27772 Updates to use serialization 2025-03-12 14:53:09 +00:00
andrewwallacespeckle 7ec901b984 Add indicator to discussion panel 2025-03-12 11:21:23 +00:00
andrewwallacespeckle 18eb9e29e8 Go back navigation 2025-03-12 11:06:35 +00:00
andrewwallacespeckle 21be27d220 WIP 2025-03-11 18:04:36 +00:00
Mike b7f8c9dd63 Fix: Various viewer UI styling improvements (#4145) 2025-03-10 17:25:16 +01:00
Mike b1c22abe96 Feat: Viewer (comments/embeds) improvements (#4133) 2025-03-07 13:58:33 +01:00
Kristaps Fabians Geikins 1d2a594f0a chore: upgrade TS 5.2 -> 5.7.3 & ESLint to 9.20.1 (#4032)
* chore: upgrade TS 5.2 -> 5.7.3

* vite dts fix

* lint fix

* resolutions fix

* ui comp build fix

* precommit fix?

* latest eslint version

* autoloader fix

* undo unnecessary viewer change

* eslint fixes fe2 + trying disabled type linting

* lint fixes
2025-02-20 14:18:18 +02:00
andrewwallacespeckle 91cb011ded feat(fe2): New user onboarding flow (#3932)
* CodeInput. verify-email page

* middleware

* Loading toast

* Countdown only for registration

* Improve middleware

* Fix middleware breaking auth flow

* Remove old notifications

* Remove old onboarding. New segmentation

* Remove skip button

* Block verify email when verified

* useUserEmails composable. Cancel addition

* Move user emails queries

* Fix fragments etc

* redirect updates

* HeaderWithEmptyPage

* Check env before enforcing

* Join workspace

* Updates

* Fix console warnings on login

* Fix register console warnings

* Working cache updates

* Verify secondary email

* Force onboarding off

* EMAIL WIP

* useIsJustRegistered state

* Improve isRequired

* Uneeded change

* Improved slots

* Updates from CR

* CR comments

* Only show message if forced

* Update onboarding middleware

* Update loading bar

* ref > computed to fix onboarding

* Resend tooltip. Better errors

* Add other to form.

* Email changes

* Updates to emails

* Remove force email FF

* Remove FF's

* Hide header on embed

* Update graphql.ts

* Re-add FF

* Update graphql.ts

* GQL Fragments

* Fix build
2025-02-14 10:20:14 +00:00
Dimitrie Stefanescu 80b4e52f20 Merge pull request #3958 from specklesystems/dim/viewer-hotfix
fix: uncorrects the correct disposal
2025-02-11 10:44:00 +00:00
Dimitrie Stefanescu cacc7aaabe fix: uncorrects the correct disposal 2025-02-11 09:56:07 +00:00
Dimitrie Stefanescu 10bda8b26a Merge pull request #3903 from specklesystems/mike/web-2526-update-loadobjectsasync-to-use-the-loader
Fix: Change loadObjectAsync to new loader
2025-02-10 19:56:30 +00:00
Dimitrie Stefanescu 1b529fb5ac feat: progress starts at 0, vs 1 2025-02-10 16:43:56 +00:00