Commit Graph

129 Commits

Author SHA1 Message Date
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
Dimitrie Stefanescu 0a39db0236 feat: disposes of loaders on complete/cancel 2025-02-10 15:53:29 +00:00
Alexandru Popovici cff48b98c9 Comment Bubbles WASD Fix (#3920)
* feat(viewer-lib): Added  property to PointQueryResult which tells if the requested point is in frustum when projecting and unprojecting

* feat(frontend-2): Updated the comment bubbles screen location computation step to account for their anchor's inclusion in the camera's frustum
2025-02-03 17:10:24 +02:00
Mike Tasset 003497844f Merge branch 'main' into mike/web-2526-update-loadobjectsasync-to-use-the-loader 2025-02-03 13:51:07 +01:00
Mike 8be048b913 Fix: Remove debounce on selection click (#3902) 2025-02-03 10:24:16 +01:00
Dimitrie Stefanescu 1f9f3f9897 feat(viewer): adds loading progress basics 2025-01-29 15:26:16 +00:00
Mike Tasset 5560582758 Fix: Change loadObjectAsync to new loader 2025-01-28 13:11:15 +01:00
Alexandru Popovici b4deaded0f PassReader updates for View Modes (#3828)
* feat(viewer-lib): Updates to the PassReader extension along with underlying viewer library updates
Implemented reading framebuffer contents for framebuffers with multiple attachements. The current version of three.js that we are using does not support this. Because we still need to drag along WebGL 1.0 support, only attachement 0 can be read for now, which does not bother us.
DepthNormalPass now specifies it's MRT output target as the outputTarget
PassReader's read function is now overloaded and it can take a pass name as a string or a GPass | GPass[]
Had to add a small type augmentation since the current version of types-three library does a poor job when it comes to WebGLMultipleRenderTargets
Updated PassReader extension in frontend and updated the call to read in order to make sure depth reading works in other view modes that write depth. The only view mode that does not draw to depth is Shaded mode

* fix(viewer-lib): Fixed the classic sandbox compile error

* fix(frontend-2): Updated depth reading to work with MRT depth from our view mode pipelines
2025-01-16 13:59:13 +02:00
andrewwallacespeckle 0fd75348aa feat(viewer): disable disconnect-on-blur in development mode (#3807)
* feat(viewer): disable disconnect-on-blur in development mode

* typo
2025-01-14 09:57:56 +00:00