diff --git a/.circleci/config.yml b/.circleci/config.yml index 3825180bb..fa45bea27 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.1 orbs: snyk: snyk/snyk@2.0.3 - codecov: codecov/codecov@4.0.0 + codecov: codecov/codecov@4.1.0 workflows: test-build: diff --git a/README.md b/README.md index c388b4abe..e929eabad 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,9 @@ What is Speckle? Check our [![YouTube Video Views](https://img.shields.io/youtub Give Speckle a try in no time by: -- [![speckle](https://img.shields.io/badge/https://-app.speckle.systems-0069ff?style=flat-square&logo=hackthebox&logoColor=white)](https://app.speckle.systems) ⇒ creating an account -- [![create a droplet](https://img.shields.io/badge/Create%20a%20Droplet-0069ff?style=flat-square&logo=digitalocean&logoColor=white)](https://marketplace.digitalocean.com/apps/speckle-server?refcode=947a2b5d7dc1) ⇒ deploying an instance in 1 click +- [![app.speckle.systems](https://img.shields.io/badge/https://-app.speckle.systems-0069ff?style=flat-square&logo=hackthebox&logoColor=white)](https://app.speckle.systems) ⇒ Create an account at app.speckle.systems +- [![Deploy on your own infrastructure with docker compose](https://img.shields.io/badge/https://-speckle.guide-0069ff?style=flat-square&logo=hackthebox&logoColor=white)](<[https://](https://speckle.guide/dev/server-manualsetup.html)>) ⇒ Deploy on your own infrastructure with Docker Compose +- [![Deploy on your own infrastructure with docker compose](https://img.shields.io/badge/https://-speckle.guide-0069ff?style=flat-square&logo=hackthebox&logoColor=white)](<[https://](https://speckle.guide/dev/server-setup-k8s.html)>) ⇒ Deploy on your own infrastructure with Kubernetes ## Resources diff --git a/package.json b/package.json index 5a491c5bc..9fa9db991 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "dev:kind:helm:ci": "tilt ci --file ./.circleci/deployment/Tiltfile.helm --context kind-speckle-server --timeout 10m", "dev": "yarn workspaces foreach -pivW -j unlimited run dev", "dev:no-server": "yarn workspaces foreach --exclude @speckle/server -pivW -j unlimited run dev", - "dev:minimal": "yarn workspaces foreach -pivW -j unlimited --include '{@speckle/server,@speckle/frontend,@speckle/shared}' run dev", - "gqlgen": "yarn workspaces foreach -pivW -j unlimited --include '{@speckle/server,@speckle/frontend,@speckle/frontend-2}' run gqlgen", + "dev:minimal": "yarn workspaces foreach -pivW -j unlimited --include '{@speckle/server,@speckle/frontend-2}' run dev", + "gqlgen": "yarn workspaces foreach -pivW -j unlimited --include '{@speckle/server,@speckle/frontend,@speckle/frontend-2,@speckle/dui3}' run gqlgen", "dev:server": "yarn workspace @speckle/server dev", "dev:frontend": "yarn workspace @speckle/frontend dev", "dev:frontend-2": "yarn workspace @speckle/frontend-2 dev", @@ -65,35 +65,32 @@ "zx": "^8.1.2" }, "resolutions": { - "@babel/traverse": ">=7.23.2", + "@aws-sdk/client-sts/fast-xml-parser": ">=4.2.5", + "@aws-sdk/client-s3/fast-xml-parser": ">=4.2.5", + "@bull-board/express/express": ">=4.19.2", + "@datadog/datadog-ci/ws": "^7.5.10", "@microsoft/api-extractor/semver": "^7.5.4", "@rushstack/node-core-library/semver": "^7.5.4", "@typescript-eslint/eslint-plugin": "^7.12.0", "@typescript-eslint/parser": "^7.12.0", - "typescript-eslint": "^7.12.0", "@types/react": "file:./packages/frontend-2/type-augmentations/stubs/types__react", - "axios": ">=1.6.0", "core-js": "3.22.4", "core-js-compat/semver": "^7.5.4", "eslint": "^9.4.0", "eslint-config-prettier": "^9.1.0", - "express": ">=4.19.2", - "fast-xml-parser": ">=4.2.5", "graphql": "^15.3.0", "levelup/bl": ">=1.2.3", "levelup/semver": ">=5.7.2", + "mocha/serialize-javascript": ">=6.0.2", "prettier": "^2.8.7", - "serialize-javascript": ">=6.0.2", + "puppeteer-core/ws": "^8.17.1", + "request/tough-cookie": ">=4.1.3", + "rollup-plugin-terser/serialize-javascript": ">=6.0.2", "simple-update-notifier/semver": "^7.5.4", - "tough-cookie": ">=4.1.3", "tslib": "^2.3.1", "typescript": "^5.2.2", - "undici": "^5.28.4", - "wait-on": ">=7.2.0", - "word-wrap": "npm:@aashutoshrathi/word-wrap@^1.2.4", - "xml2js": ">=0.5.0", - "puppeteer-core/ws": "^8.17.1", - "@datadog/datadog-ci/ws": "^7.5.10" + "typescript-eslint": "^7.12.0", + "wait-on": ">=7.2.0" }, "config": { "commitizen": { diff --git a/packages/frontend-2/components/projects/Dashboard.vue b/packages/frontend-2/components/projects/Dashboard.vue index 52f4c5a83..e294c1926 100644 --- a/packages/frontend-2/components/projects/Dashboard.vue +++ b/packages/frontend-2/components/projects/Dashboard.vue @@ -18,10 +18,6 @@ -
- Test error -
-
([ } ]) -const route = useRoute() const { activeUser, isGuest } = useActiveUser() const { triggerNotification } = useGlobalToast() const areQueriesLoading = useQueryLoading() @@ -160,8 +155,6 @@ const { onResult: onUserProjectsUpdate } = useSubscription( onUserProjectsUpdateSubscription ) -const showErrorTest = computed(() => route.query.showErrorButton === '1') - const projects = computed(() => projectsPanelResult.value?.activeUser?.projects) const showEmptyState = computed(() => { const isFiltering = @@ -340,8 +333,4 @@ const clearSearch = () => { selectedRoles.value = [] updateSearchImmediately() } - -const testError = () => { - throw new Error('what duhh hell') -} diff --git a/packages/frontend-2/components/viewer/compare-changes/Panel.vue b/packages/frontend-2/components/viewer/compare-changes/Panel.vue index 725aab0c2..dccf00e71 100644 --- a/packages/frontend-2/components/viewer/compare-changes/Panel.vue +++ b/packages/frontend-2/components/viewer/compare-changes/Panel.vue @@ -66,7 +66,7 @@ import { ChevronLeftIcon } from '@heroicons/vue/24/solid' import { VisualDiffMode } from '@speckle/viewer' import { useInjectedViewerState } from '~~/lib/viewer/composables/setup' import { uniqBy, debounce } from 'lodash-es' -import type { SpeckleObject } from '~~/lib/common/helpers/sceneExplorer' +import type { SpeckleObject } from '~~/lib/viewer/helpers/sceneExplorer' import { useMixpanel } from '~~/lib/core/composables/mp' defineEmits<{ diff --git a/packages/frontend-2/components/viewer/explorer/Explorer.vue b/packages/frontend-2/components/viewer/explorer/Explorer.vue index db9277dc1..87f04d706 100644 --- a/packages/frontend-2/components/viewer/explorer/Explorer.vue +++ b/packages/frontend-2/components/viewer/explorer/Explorer.vue @@ -53,8 +53,7 @@ class="bg-foundation rounded-lg" > { if (!worldTree.value) return [] // eslint-disable-next-line vue/no-side-effects-in-computed-properties expandLevel.value = -1 - const nodes = [] const rootNodes = worldTree.value._root.children as ExplorerNode[] + + const results: Record = {} + const unmatchedNodes: ExplorerNode[] = [] + for (const node of rootNodes) { const objectId = ((node.model as Record).id as string) .split('/') .reverse()[0] as string - const resourceItem = resourceItems.value.find((res) => res.objectId === objectId) + const resourceItemIdx = resourceItems.value.findIndex( + (res) => res.objectId === objectId + ) + const resourceItem = + resourceItemIdx !== -1 ? resourceItems.value[resourceItemIdx] : null + const raw = node.model?.raw as Record if (resourceItem?.modelId) { // Model resource @@ -140,9 +150,24 @@ const rootNodes = computed(() => { raw.name = 'Object' raw.type = 'Single Object' } - nodes.push(node.model as ExplorerNode) + + const res = node.model as ExplorerNode + if (resourceItem) { + ;(results[resourceItemIdx] = results[resourceItemIdx] || []).push(res) + } else { + unmatchedNodes.push(res) + } } - return nodes + const nodes = [ + ...flatten(sortBy(Object.entries(results), (i) => i[0]).map((i) => i[1])), + ...unmatchedNodes + ] + + return nodes.map( + (n): TreeItemComponentModel => ({ + rawNode: markRaw(n) + }) + ) }) diff --git a/packages/frontend-2/components/viewer/explorer/Filters.vue b/packages/frontend-2/components/viewer/explorer/Filters.vue index f73b27bf9..741610108 100644 --- a/packages/frontend-2/components/viewer/explorer/Filters.vue +++ b/packages/frontend-2/components/viewer/explorer/Filters.vue @@ -70,7 +70,7 @@ refreshColorsIfSetOrActiveFilterIsNumeric() " > - {{ filter.key }} + {{ getPropertyName(filter.key) }}
@@ -82,11 +82,11 @@
@@ -95,13 +95,13 @@ diff --git a/packages/frontend-2/components/viewer/explorer/StringFilterItem.vue b/packages/frontend-2/components/viewer/explorer/StringFilterItem.vue index c9c64aa2c..f1b02bd4a 100644 --- a/packages/frontend-2/components/viewer/explorer/StringFilterItem.vue +++ b/packages/frontend-2/components/viewer/explorer/StringFilterItem.vue @@ -2,10 +2,11 @@