From 76a1f5218a7105ca830456902e00272357a5c013 Mon Sep 17 00:00:00 2001
From: Dannon Baker <dannon.baker@gmail.com>
Date: Thu, 25 Jul 2024 15:58:09 -0400
Subject: [PATCH] Prefer relative imports for subpaths, alias for parents.

---
 client/src/api/configTemplates.ts                 |  2 +-
 client/src/api/datasetCollections.ts              |  4 ++--
 client/src/api/datasets.ts                        |  5 +++--
 client/src/api/datatypes.ts                       |  2 +-
 client/src/api/dbKeys.ts                          |  2 +-
 client/src/api/fileSources.ts                     |  2 +-
 client/src/api/forms.ts                           |  2 +-
 client/src/api/groups.ts                          |  2 +-
 client/src/api/histories.archived.ts              |  2 +-
 client/src/api/histories.export.ts                |  3 ++-
 client/src/api/histories.ts                       |  2 +-
 client/src/api/index.ts                           |  2 +-
 client/src/api/jobs.ts                            |  2 +-
 client/src/api/notifications.broadcast.ts         |  2 +-
 client/src/api/notifications.preferences.ts       |  2 +-
 client/src/api/notifications.ts                   |  2 +-
 client/src/api/objectStores.ts                    |  4 ++--
 client/src/api/pages.ts                           |  2 +-
 client/src/api/quotas.ts                          |  2 +-
 client/src/api/remoteFiles.ts                     |  4 ++--
 client/src/api/roles.ts                           |  2 +-
 client/src/api/schema/__mocks__/fetcher.ts        |  2 +-
 client/src/api/schema/mockFetcher.test.ts         |  3 +--
 client/src/api/tags.ts                            |  2 +-
 client/src/api/users.ts                           |  2 +-
 client/src/api/workflows.ts                       |  2 +-
 client/src/components/AboutGalaxy.vue             |  8 ++++----
 client/src/components/ActivityBar/ActivityBar.vue |  4 ++--
 client/src/components/Citation/CitationsList.vue  |  4 ++--
 client/src/components/ClientError.vue             |  2 +-
 .../Collections/ListCollectionCreator.vue         |  4 ++--
 .../ListDatasetCollectionElementView.vue          |  2 +-
 .../Collections/PairCollectionCreator.vue         |  2 +-
 .../components/Collections/PairedElementView.vue  |  2 +-
 .../Collections/common/CollectionEditView.vue     |  6 +++---
 client/src/components/Common/ExportRDMForm.vue    |  3 +--
 .../src/components/Common/ExportRecordDetails.vue |  2 +-
 client/src/components/Common/FilterMenu.vue       | 14 +++++++-------
 .../src/components/Common/FilterMenuDropdown.vue  |  3 +--
 .../PersistentTaskProgressMonitorAlert.test.ts    |  2 +-
 client/src/components/Dataset/DatasetList.vue     |  2 +-
 .../DatasetInformation/DatasetAttributes.vue      |  5 +++--
 .../DatasetInformation/DatasetDetails.vue         |  2 +-
 .../DatasetInformation/DatasetError.vue           |  2 +-
 .../DatasetInformation/DatasetHashes.vue          |  2 +-
 .../DatasetInformation/DatasetInformation.vue     |  4 ++--
 .../DatasetInformation/DatasetSource.vue          |  2 +-
 .../DatasetInformation/DatasetSources.vue         |  2 +-
 client/src/components/DragGhost.vue               |  2 +-
 .../FileSources/Instances/CreateInstance.vue      |  2 +-
 client/src/components/FilesDialog/FilesDialog.vue |  2 +-
 client/src/components/FilesDialog/FilesInput.vue  |  3 +--
 client/src/components/FilesDialog/model.ts        |  3 ++-
 client/src/components/FilesDialog/utilities.ts    |  3 +--
 .../Form/Elements/FormData/FormData.vue           |  2 +-
 .../FormSelectMany/worker/__mocks__/selectMany.ts |  7 +++++--
 client/src/components/Form/FormInputs.vue         |  4 ++--
 client/src/components/Grid/GridHistory.vue        |  9 +++++----
 client/src/components/Grid/GridInvocation.vue     | 14 +++++++-------
 client/src/components/Grid/GridList.vue           |  4 ++--
 client/src/components/Grid/GridPage.vue           |  7 ++++---
 client/src/components/Grid/GridVisualization.vue  |  7 ++++---
 .../History/Archiving/HistoryArchive.vue          |  2 +-
 .../History/Archiving/HistoryArchiveWizard.vue    |  4 ++--
 .../History/Content/Collection/JobStateSummary.js |  2 +-
 .../components/History/Content/ContentItem.vue    |  2 +-
 .../History/Content/Dataset/DatasetActions.vue    |  2 +-
 .../components/History/Content/SelectedItems.js   |  2 +-
 .../HistoryOperations/HistoryOperations.vue       |  2 +-
 .../CurrentHistory/SelectPreferredStore.test.ts   |  3 +--
 .../src/components/History/HistoryPublished.vue   |  2 +-
 .../src/components/History/HistoryScrollList.vue  |  2 +-
 client/src/components/History/Index.vue           |  6 +++---
 .../History/Multiple/MultipleViewList.vue         |  2 +-
 .../InteractiveTools/InteractiveTools.vue         |  3 ++-
 .../components/JobInformation/JobInformation.vue  |  2 +-
 .../components/JobParameters/JobParameters.vue    |  3 ++-
 .../LibraryFolderDataset/LibraryDataset.test.js   |  3 ++-
 .../LibraryFolder/TopToolbar/FolderTopBar.vue     |  5 +++--
 .../import-to-history/import-collection.js        |  2 +-
 .../import-to-history/import-dataset.js           |  4 ++--
 client/src/components/Login/LoginForm.vue         |  2 +-
 client/src/components/Login/LoginIndex.vue        |  4 ++--
 .../Broadcasts/BroadcastsOverlay.vue              |  2 +-
 .../Notifications/Categories/Categories.test.ts   |  4 ++--
 .../Notifications/NotificationActions.test.ts     |  3 ++-
 .../Notifications/NotificationsList.vue           |  2 +-
 .../ObjectStore/Instances/CreateForm.vue          |  2 +-
 .../ObjectStore/Instances/UpgradeForm.vue         |  2 +-
 .../ObjectStore/ObjectStoreSelectButton.vue       |  2 +-
 .../ObjectStore/ShowSelectedObjectStore.test.js   |  2 +-
 .../ObjectStore/ShowSelectedObjectStore.vue       |  2 +-
 .../src/components/Panels/Common/ToolSearch.vue   |  3 +--
 client/src/components/Panels/InvocationsPanel.vue |  2 +-
 .../components/Panels/Menus/PanelViewMenuItem.vue |  2 +-
 client/src/components/Panels/MultiviewPanel.vue   |  2 +-
 .../src/components/Panels/NotificationsPanel.vue  |  2 +-
 client/src/components/Panels/SettingsPanel.vue    |  2 +-
 client/src/components/Panels/ToolPanel.vue        |  2 +-
 .../src/components/Panels/VisualizationPanel.vue  |  2 +-
 .../SelectionDialog/BasicSelectionDialog.vue      |  5 +++--
 .../SelectionDialog/DatasetCollectionDialog.vue   |  5 +++--
 .../SelectionDialog/SelectionDialog.vue           |  6 ++----
 client/src/components/Sharing/UserSharing.vue     |  2 +-
 .../components/Tool/Buttons/ToolOptionsButton.vue |  3 +--
 client/src/components/Tool/ToolForm.vue           |  2 +-
 client/src/components/Tool/ToolSuccess.vue        |  4 ++--
 .../ToolsView/ToolsSchemaJson/ToolsJson.test.js   |  5 +++--
 .../Toolshed/InstalledList/Details.test.js        |  3 ++-
 .../components/Toolshed/InstalledList/Details.vue |  4 ++--
 .../Toolshed/InstalledList/Index.test.js          |  3 ++-
 .../components/Toolshed/InstalledList/Index.vue   |  3 ++-
 .../Toolshed/InstalledList/Monitor.test.js        |  3 ++-
 .../components/Toolshed/InstalledList/Monitor.vue |  4 ++--
 .../Toolshed/RepositoryDetails/Index.test.js      |  2 +-
 .../Toolshed/RepositoryDetails/Index.vue          |  3 +--
 .../Toolshed/SearchList/Categories.test.js        |  3 ++-
 .../components/Toolshed/SearchList/Categories.vue |  2 +-
 .../Toolshed/SearchList/Repositories.test.js      |  3 ++-
 .../Toolshed/SearchList/Repositories.vue          |  4 ++--
 .../User/DiskUsage/DiskUsageSummary.vue           |  2 +-
 .../DiskUsage/Management/Cleanup/categories.ts    |  6 +++---
 .../User/UserPreferredObjectStore.test.js         |  3 +--
 .../Workflow/Editor/Actions/actions.test.ts       |  2 +-
 .../Workflow/Editor/Actions/mockData.ts           |  3 +--
 .../Workflow/Editor/Actions/workflowActions.ts    |  4 ++--
 .../Workflow/Editor/Comments/FrameComment.vue     |  2 +-
 .../Workflow/Editor/Comments/FreehandComment.vue  |  2 +-
 .../Workflow/Editor/Comments/WorkflowComment.vue  |  7 +++----
 .../Workflow/Editor/Comments/useResizable.ts      |  3 +--
 .../Workflow/Editor/Forms/FormDefault.vue         |  7 +++----
 .../Workflow/Editor/Forms/FormOutput.vue          |  3 ++-
 .../Workflow/Editor/Forms/FormSection.vue         |  3 ++-
 .../components/Workflow/Editor/Forms/FormTool.vue |  5 ++---
 client/src/components/Workflow/Editor/Index.vue   |  8 ++++----
 client/src/components/Workflow/Editor/Node.vue    | 12 ++++++------
 .../src/components/Workflow/Editor/NodeInput.vue  | 12 ++++++------
 .../src/components/Workflow/Editor/NodeOutput.vue |  2 +-
 .../Editor/Tools/useSelectionOperations.ts        |  5 ++---
 .../Workflow/Editor/Tools/useToolLogic.ts         | 15 +++++++--------
 .../components/Workflow/Editor/WorkflowGraph.vue  |  8 ++++----
 .../Workflow/Editor/composables/multiSelect.ts    |  3 +--
 .../Editor/composables/viewportBoundingBox.ts     |  3 +--
 .../components/Workflow/Editor/modules/linting.ts |  2 +-
 .../Workflow/Editor/modules/terminals.test.ts     |  2 +-
 .../components/Workflow/HistoryInvocations.vue    |  2 +-
 .../src/components/Workflow/Import/TrsImport.vue  |  6 +++---
 .../src/components/Workflow/Import/TrsSearch.vue  |  4 ++--
 .../Export/InvocationExportPluginCard.vue         |  4 ++--
 .../BioComputeObjectExportPlugin.ts               |  2 +-
 .../Export/Plugins/DefaultFileExportPlugin.ts     |  2 +-
 .../Export/Plugins/ROCrateExportPlugin.ts         |  2 +-
 .../src/components/Workflow/List/WorkflowCard.vue |  8 ++++----
 .../components/Workflow/List/WorkflowList.test.ts |  3 +--
 .../src/components/Workflow/List/WorkflowList.vue |  7 ++++---
 .../Workflow/Published/WorkflowPublished.vue      |  2 +-
 .../src/components/Workflow/Run/WorkflowRun.vue   |  6 +++---
 .../Workflow/StoredWorkflowInvocations.vue        |  4 ++--
 client/src/components/Workflow/WorkflowCreate.vue |  3 ++-
 client/src/components/Workflow/WorkflowImport.vue |  6 +++---
 .../WorkflowInvocationState/InvocationMessage.vue |  2 +-
 .../WorkflowInvocationOverview.test.js            |  3 ++-
 .../WorkflowInvocationOverview.vue                |  8 ++++----
 .../WorkflowInvocationState.test.ts               |  2 +-
 .../WorkflowInvocationState.vue                   |  6 +++---
 client/src/components/admin/DataTables.vue        |  2 +-
 client/src/components/admin/DataTypes.vue         |  2 +-
 .../admin/Dependencies/ContainerIndex.vue         |  3 ++-
 .../admin/Dependencies/ResolutionIndex.vue        |  3 ++-
 .../components/admin/Dependencies/UnusedIndex.vue |  3 ++-
 .../Notifications/NotificationsManagement.vue     |  2 +-
 client/src/components/admin/SanitizeAllow.vue     |  2 +-
 .../src/components/providers/DatasetProvider.js   |  2 +-
 client/src/components/providers/storeProviders.js |  2 +-
 client/src/composables/datasetPermissions.ts      |  3 ++-
 client/src/composables/filter/filter.worker.js    |  2 +-
 .../composables/persistentProgressMonitor.test.ts |  4 ++--
 .../composables/shortTermStorageMonitor.test.ts   |  3 ++-
 client/src/composables/taskMonitor.test.ts        |  3 ++-
 client/src/onload/globalInits/index.js            |  3 ++-
 client/src/stores/activitySetup.ts                |  4 ++--
 client/src/stores/activityStore.test.ts           |  2 +-
 client/src/stores/collectionElementsStore.test.ts |  3 ++-
 client/src/stores/entryPointStore.test.js         |  3 ++-
 client/src/stores/historyStore.ts                 |  7 ++++---
 .../src/stores/objectStoreInstancesStore.test.ts  |  2 +-
 .../src/stores/objectStoreTemplatesStore.test.ts  |  2 +-
 client/src/stores/userStore.ts                    | 10 +++-------
 client/src/stores/workflowConnectionStore.test.ts |  4 ++--
 client/src/stores/workflowConnectionStore.ts      |  2 +-
 client/src/stores/workflowStepStore.test.ts       |  3 +--
 client/src/stores/workflowStepStore.ts            |  2 +-
 client/src/stores/workflowStore.ts                |  3 ++-
 client/src/utils/data.js                          |  4 ++--
 client/src/utils/upload-queue.js                  |  4 ++--
 client/src/utils/upload-queue.test.js             |  3 +--
 client/src/utils/url.ts                           |  4 ++--
 client/src/utils/utils.ts                         |  3 ++-
 client/src/utils/webhooks.js                      |  2 +-
 199 files changed, 351 insertions(+), 338 deletions(-)

diff --git a/client/src/api/configTemplates.ts b/client/src/api/configTemplates.ts
index b3060169b736..91592425c4c6 100644
--- a/client/src/api/configTemplates.ts
+++ b/client/src/api/configTemplates.ts
@@ -1,4 +1,4 @@
-import { type components } from "@/api/schema/schema";
+import { type components } from "./schema/schema";
 
 export type Instance =
     | components["schemas"]["UserFileSourceModel"]
diff --git a/client/src/api/datasetCollections.ts b/client/src/api/datasetCollections.ts
index bc788a35f030..4af22c0705f9 100644
--- a/client/src/api/datasetCollections.ts
+++ b/client/src/api/datasetCollections.ts
@@ -1,5 +1,5 @@
-import { type CollectionEntry, type DCESummary, type HDCADetailed, type HDCASummary, isHDCA } from "@/api";
-import { fetcher } from "@/api/schema";
+import { type CollectionEntry, type DCESummary, type HDCADetailed, type HDCASummary, isHDCA } from "./";
+import { fetcher } from "./schema";
 
 const DEFAULT_LIMIT = 50;
 
diff --git a/client/src/api/datasets.ts b/client/src/api/datasets.ts
index c6f4e8a9465a..79a723456128 100644
--- a/client/src/api/datasets.ts
+++ b/client/src/api/datasets.ts
@@ -1,10 +1,11 @@
 import axios from "axios";
 import { type FetchArgType } from "openapi-typescript-fetch";
 
-import { type HDADetailed } from "@/api";
-import { type components, fetcher } from "@/api/schema";
 import { withPrefix } from "@/utils/redirect";
 
+import { type HDADetailed } from "./";
+import { type components, fetcher } from "./schema";
+
 export const datasetsFetcher = fetcher.path("/api/datasets").method("get").create();
 
 type GetDatasetsApiOptions = FetchArgType<typeof datasetsFetcher>;
diff --git a/client/src/api/datatypes.ts b/client/src/api/datatypes.ts
index fde4da5b529b..16b0bc6f3014 100644
--- a/client/src/api/datatypes.ts
+++ b/client/src/api/datatypes.ts
@@ -1,4 +1,4 @@
-import { fetcher } from "@/api/schema";
+import { fetcher } from "./schema";
 
 export const datatypesFetcher = fetcher.path("/api/datatypes").method("get").create();
 
diff --git a/client/src/api/dbKeys.ts b/client/src/api/dbKeys.ts
index ec1525137883..89bfc7f3ecad 100644
--- a/client/src/api/dbKeys.ts
+++ b/client/src/api/dbKeys.ts
@@ -3,6 +3,6 @@
  * but now it is used to get the list of more generic "dbkeys".
  */
 
-import { fetcher } from "@/api/schema";
+import { fetcher } from "./schema";
 
 export const dbKeysFetcher = fetcher.path("/api/genomes").method("get").create();
diff --git a/client/src/api/fileSources.ts b/client/src/api/fileSources.ts
index 68935db4573f..52dc791fa9ba 100644
--- a/client/src/api/fileSources.ts
+++ b/client/src/api/fileSources.ts
@@ -1,4 +1,4 @@
-import { type components } from "@/api/schema";
+import { type components } from "./schema";
 
 export type FileSourceTemplateSummary = components["schemas"]["FileSourceTemplateSummary"];
 export type FileSourceTemplateSummaries = FileSourceTemplateSummary[];
diff --git a/client/src/api/forms.ts b/client/src/api/forms.ts
index 04f19169d5a1..3e836acbaf39 100644
--- a/client/src/api/forms.ts
+++ b/client/src/api/forms.ts
@@ -1,4 +1,4 @@
-import { fetcher } from "@/api/schema";
+import { fetcher } from "./schema";
 
 export const deleteForm = fetcher.path("/api/forms/{id}").method("delete").create();
 export const undeleteForm = fetcher.path("/api/forms/{id}/undelete").method("post").create();
diff --git a/client/src/api/groups.ts b/client/src/api/groups.ts
index 6def92076885..9317c1119e79 100644
--- a/client/src/api/groups.ts
+++ b/client/src/api/groups.ts
@@ -1,6 +1,6 @@
 import axios from "axios";
 
-import { type components, fetcher } from "@/api/schema";
+import { type components, fetcher } from "./schema";
 
 type GroupModel = components["schemas"]["GroupModel"];
 export async function getAllGroups(): Promise<GroupModel[]> {
diff --git a/client/src/api/histories.archived.ts b/client/src/api/histories.archived.ts
index 9109c2d97e95..7dd75ce2ccda 100644
--- a/client/src/api/histories.archived.ts
+++ b/client/src/api/histories.archived.ts
@@ -1,6 +1,6 @@
 import { type FetchArgType } from "openapi-typescript-fetch";
 
-import { type components, fetcher } from "@/api/schema";
+import { type components, fetcher } from "./schema";
 
 export type ArchivedHistorySummary = components["schemas"]["ArchivedHistorySummary"];
 export type ArchivedHistoryDetailed = components["schemas"]["ArchivedHistoryDetailed"];
diff --git a/client/src/api/histories.export.ts b/client/src/api/histories.export.ts
index 40d19f026077..e8a80beb996a 100644
--- a/client/src/api/histories.export.ts
+++ b/client/src/api/histories.export.ts
@@ -1,4 +1,3 @@
-import { type components, fetcher } from "@/api/schema";
 import {
     type ExportRecord,
     ExportRecordModel,
@@ -6,6 +5,8 @@ import {
 } from "@/components/Common/models/exportRecordModel";
 import { DEFAULT_EXPORT_PARAMS } from "@/composables/shortTermStorage";
 
+import { type components, fetcher } from "./schema";
+
 type ModelStoreFormat = components["schemas"]["ModelStoreFormat"];
 
 const _getExportRecords = fetcher.path("/api/histories/{history_id}/exports").method("get").create();
diff --git a/client/src/api/histories.ts b/client/src/api/histories.ts
index ef0aeaa5df0b..a5f74fc21b81 100644
--- a/client/src/api/histories.ts
+++ b/client/src/api/histories.ts
@@ -1,4 +1,4 @@
-import { fetcher } from "@/api/schema";
+import { fetcher } from "./schema";
 
 export const historiesFetcher = fetcher.path("/api/histories").method("get").create();
 export const archivedHistoriesFetcher = fetcher.path("/api/histories/archived").method("get").create();
diff --git a/client/src/api/index.ts b/client/src/api/index.ts
index b27d9746a0f3..07ed94efe262 100644
--- a/client/src/api/index.ts
+++ b/client/src/api/index.ts
@@ -1,6 +1,6 @@
 /** Contains type alias and definitions related to Galaxy API models. */
 
-import { type components } from "@/api/schema";
+import { type components } from "./schema";
 
 /**
  * Contains minimal information about a History.
diff --git a/client/src/api/jobs.ts b/client/src/api/jobs.ts
index ccc4023e9e66..a8acd03581f4 100644
--- a/client/src/api/jobs.ts
+++ b/client/src/api/jobs.ts
@@ -1,4 +1,4 @@
-import { type components, fetcher } from "@/api/schema";
+import { type components, fetcher } from "./schema";
 
 export type JobDestinationParams = components["schemas"]["JobDestinationParams"];
 
diff --git a/client/src/api/notifications.broadcast.ts b/client/src/api/notifications.broadcast.ts
index cbea28ada102..3c41df223ae9 100644
--- a/client/src/api/notifications.broadcast.ts
+++ b/client/src/api/notifications.broadcast.ts
@@ -1,4 +1,4 @@
-import { type components, fetcher } from "@/api/schema";
+import { type components, fetcher } from "./schema";
 
 type BroadcastNotificationResponse = components["schemas"]["BroadcastNotificationResponse"];
 
diff --git a/client/src/api/notifications.preferences.ts b/client/src/api/notifications.preferences.ts
index 8509d7cd2691..ee9cd508de63 100644
--- a/client/src/api/notifications.preferences.ts
+++ b/client/src/api/notifications.preferences.ts
@@ -1,4 +1,4 @@
-import { type components, fetcher } from "@/api/schema";
+import { type components, fetcher } from "./schema";
 
 type UserNotificationPreferences = components["schemas"]["UserNotificationPreferences"];
 
diff --git a/client/src/api/notifications.ts b/client/src/api/notifications.ts
index b5724618e3a5..f38439e4afed 100644
--- a/client/src/api/notifications.ts
+++ b/client/src/api/notifications.ts
@@ -1,4 +1,4 @@
-import { type components, fetcher } from "@/api/schema";
+import { type components, fetcher } from "./schema";
 
 export type BaseUserNotification = components["schemas"]["UserNotificationResponse"];
 
diff --git a/client/src/api/objectStores.ts b/client/src/api/objectStores.ts
index 8380b03e3086..15330874db54 100644
--- a/client/src/api/objectStores.ts
+++ b/client/src/api/objectStores.ts
@@ -1,5 +1,5 @@
-import { fetcher } from "@/api/schema";
-import { type components } from "@/api/schema/schema";
+import { fetcher } from "./schema";
+import { type components } from "./schema/schema";
 
 export type UserConcreteObjectStore = components["schemas"]["UserConcreteObjectStoreModel"];
 
diff --git a/client/src/api/pages.ts b/client/src/api/pages.ts
index 89e89d2e8940..285f3f763ddd 100644
--- a/client/src/api/pages.ts
+++ b/client/src/api/pages.ts
@@ -1,4 +1,4 @@
-import { fetcher } from "@/api/schema";
+import { fetcher } from "./schema";
 
 /** Page request helper **/
 const deletePageById = fetcher.path("/api/pages/{id}").method("delete").create();
diff --git a/client/src/api/quotas.ts b/client/src/api/quotas.ts
index f164fcf80632..1e9abf1b9ff4 100644
--- a/client/src/api/quotas.ts
+++ b/client/src/api/quotas.ts
@@ -1,4 +1,4 @@
-import { fetcher } from "@/api/schema";
+import { fetcher } from "./schema";
 
 export const deleteQuota = fetcher.path("/api/quotas/{id}").method("delete").create();
 export const purgeQuota = fetcher.path("/api/quotas/{id}/purge").method("post").create();
diff --git a/client/src/api/remoteFiles.ts b/client/src/api/remoteFiles.ts
index b9efeeb3eb6c..8ab8209c5483 100644
--- a/client/src/api/remoteFiles.ts
+++ b/client/src/api/remoteFiles.ts
@@ -1,5 +1,5 @@
-import { type components } from "@/api/schema";
-import { fetcher } from "@/api/schema/fetcher";
+import { type components } from "./schema";
+import { fetcher } from "./schema/fetcher";
 
 /** The browsing mode:
  * - `file` - allows to select files or directories contained in a source (default)
diff --git a/client/src/api/roles.ts b/client/src/api/roles.ts
index 4667ca53a2b5..c06d665decd3 100644
--- a/client/src/api/roles.ts
+++ b/client/src/api/roles.ts
@@ -1,4 +1,4 @@
-import { fetcher } from "@/api/schema";
+import { fetcher } from "./schema";
 
 const getRoles = fetcher.path("/api/roles").method("get").create();
 export async function getAllRoles() {
diff --git a/client/src/api/schema/__mocks__/fetcher.ts b/client/src/api/schema/__mocks__/fetcher.ts
index ffb5b7e2fd1a..25e3e1052f6e 100644
--- a/client/src/api/schema/__mocks__/fetcher.ts
+++ b/client/src/api/schema/__mocks__/fetcher.ts
@@ -1,4 +1,4 @@
-import { type paths } from "@/api/schema";
+import { type paths } from "./..";
 
 jest.mock("@/api/schema", () => ({
     fetcher: mockFetcher,
diff --git a/client/src/api/schema/mockFetcher.test.ts b/client/src/api/schema/mockFetcher.test.ts
index e4eddd5a3f58..8c5358928910 100644
--- a/client/src/api/schema/mockFetcher.test.ts
+++ b/client/src/api/schema/mockFetcher.test.ts
@@ -1,5 +1,4 @@
-import { fetcher } from "@/api/schema";
-
+import { fetcher } from "./";
 import { mockFetcher } from "./__mocks__/fetcher";
 
 jest.mock("@/api/schema");
diff --git a/client/src/api/tags.ts b/client/src/api/tags.ts
index 34e9c70b8d36..453fd45d76d8 100644
--- a/client/src/api/tags.ts
+++ b/client/src/api/tags.ts
@@ -1,4 +1,4 @@
-import { type components, fetcher } from "@/api/schema";
+import { type components, fetcher } from "./schema";
 
 type TaggableItemClass = components["schemas"]["TaggableItemClass"];
 
diff --git a/client/src/api/users.ts b/client/src/api/users.ts
index 2b3fca5b279d..febc4fac7661 100644
--- a/client/src/api/users.ts
+++ b/client/src/api/users.ts
@@ -1,4 +1,4 @@
-import { fetcher } from "@/api/schema";
+import { fetcher } from "./schema";
 
 export const createApiKey = fetcher.path("/api/users/{user_id}/api_key").method("post").create();
 export const deleteUser = fetcher.path("/api/users/{user_id}").method("delete").create();
diff --git a/client/src/api/workflows.ts b/client/src/api/workflows.ts
index 4d676cefcc94..38e0f4a0f500 100644
--- a/client/src/api/workflows.ts
+++ b/client/src/api/workflows.ts
@@ -1,4 +1,4 @@
-import { type components, fetcher } from "@/api/schema";
+import { type components, fetcher } from "./schema";
 
 export type StoredWorkflowDetailed = components["schemas"]["StoredWorkflowDetailed"];
 
diff --git a/client/src/components/AboutGalaxy.vue b/client/src/components/AboutGalaxy.vue
index 8dad39ed35b1..510c2fc4761d 100644
--- a/client/src/components/AboutGalaxy.vue
+++ b/client/src/components/AboutGalaxy.vue
@@ -8,10 +8,10 @@ import { RouterLink } from "vue-router";
 import { useConfig } from "@/composables/config";
 import { getAppRoot } from "@/onload/loadConfig";
 
-import Heading from "@/components/Common/Heading.vue";
-import ExternalLink from "@/components/ExternalLink.vue";
-import License from "@/components/License/License.vue";
-import UtcDate from "@/components/UtcDate.vue";
+import Heading from "./Common/Heading.vue";
+import ExternalLink from "./ExternalLink.vue";
+import License from "./License/License.vue";
+import UtcDate from "./UtcDate.vue";
 
 const { config, isConfigLoaded } = useConfig();
 
diff --git a/client/src/components/ActivityBar/ActivityBar.vue b/client/src/components/ActivityBar/ActivityBar.vue
index cde4d7b190ad..75f78589e1b4 100644
--- a/client/src/components/ActivityBar/ActivityBar.vue
+++ b/client/src/components/ActivityBar/ActivityBar.vue
@@ -11,18 +11,18 @@ import { type Activity, useActivityStore } from "@/stores/activityStore";
 import { useEventStore } from "@/stores/eventStore";
 import { useUserStore } from "@/stores/userStore";
 
-import InvocationsPanel from "../Panels/InvocationsPanel.vue";
-import VisualizationPanel from "../Panels/VisualizationPanel.vue";
 import ActivityItem from "./ActivityItem.vue";
 import InteractiveItem from "./Items/InteractiveItem.vue";
 import NotificationItem from "./Items/NotificationItem.vue";
 import UploadItem from "./Items/UploadItem.vue";
 import AdminPanel from "@/components/admin/AdminPanel.vue";
 import FlexPanel from "@/components/Panels/FlexPanel.vue";
+import InvocationsPanel from "@/components/Panels/InvocationsPanel.vue";
 import MultiviewPanel from "@/components/Panels/MultiviewPanel.vue";
 import NotificationsPanel from "@/components/Panels/NotificationsPanel.vue";
 import SettingsPanel from "@/components/Panels/SettingsPanel.vue";
 import ToolPanel from "@/components/Panels/ToolPanel.vue";
+import VisualizationPanel from "@/components/Panels/VisualizationPanel.vue";
 
 // require user to long click before dragging
 const DRAG_DELAY = 50;
diff --git a/client/src/components/Citation/CitationsList.vue b/client/src/components/Citation/CitationsList.vue
index 7aa5b137ff97..c307785687a4 100644
--- a/client/src/components/Citation/CitationsList.vue
+++ b/client/src/components/Citation/CitationsList.vue
@@ -2,12 +2,12 @@
 import { BButton, BCard, BCollapse, BNav, BNavItem } from "bootstrap-vue";
 import { onMounted, onUpdated, ref } from "vue";
 
-import { getCitations } from "@/components/Citation/services";
 import { useConfig } from "@/composables/config";
 
 import { type Citation } from ".";
+import { getCitations } from "./services";
 
-import CitationItem from "@/components/Citation/CitationItem.vue";
+import CitationItem from "./CitationItem.vue";
 
 const outputFormats = Object.freeze({
     CITATION: "bibliography",
diff --git a/client/src/components/ClientError.vue b/client/src/components/ClientError.vue
index b5404f0dbafc..993f4c62bf75 100644
--- a/client/src/components/ClientError.vue
+++ b/client/src/components/ClientError.vue
@@ -6,7 +6,7 @@
 // (AdminRequired), but could be used for other client errors that need to be
 // presented to the user interrupting the normal flow and context of the app.
 
-import Alert from "@/components/Alert.vue";
+import Alert from "./Alert.vue";
 
 const props = defineProps<{
     error: Error;
diff --git a/client/src/components/Collections/ListCollectionCreator.vue b/client/src/components/Collections/ListCollectionCreator.vue
index 5798187943f2..cf66ee3b4adb 100644
--- a/client/src/components/Collections/ListCollectionCreator.vue
+++ b/client/src/components/Collections/ListCollectionCreator.vue
@@ -12,8 +12,8 @@ import type { HDCADetailed, HistoryItemSummary } from "@/api";
 import STATES from "@/mvc/dataset/states";
 import localize from "@/utils/localization";
 
-import CollectionCreator from "@/components/Collections/common/CollectionCreator.vue";
-import DatasetCollectionElementView from "@/components/Collections/ListDatasetCollectionElementView.vue";
+import CollectionCreator from "./common/CollectionCreator.vue";
+import DatasetCollectionElementView from "./ListDatasetCollectionElementView.vue";
 
 library.add(faSortAlphaDown, faUndo);
 
diff --git a/client/src/components/Collections/ListDatasetCollectionElementView.vue b/client/src/components/Collections/ListDatasetCollectionElementView.vue
index e7b41e4158de..d3b5598bd238 100644
--- a/client/src/components/Collections/ListDatasetCollectionElementView.vue
+++ b/client/src/components/Collections/ListDatasetCollectionElementView.vue
@@ -3,7 +3,7 @@ import { onMounted, ref, watch } from "vue";
 
 import localize from "@/utils/localization";
 
-import ClickToEdit from "@/components/Collections/common/ClickToEdit.vue";
+import ClickToEdit from "./common/ClickToEdit.vue";
 
 interface Props {
     element: any;
diff --git a/client/src/components/Collections/PairCollectionCreator.vue b/client/src/components/Collections/PairCollectionCreator.vue
index 2520a3a022f8..8b7fac3d3f99 100644
--- a/client/src/components/Collections/PairCollectionCreator.vue
+++ b/client/src/components/Collections/PairCollectionCreator.vue
@@ -6,7 +6,7 @@ import type { HDCADetailed, HistoryItemSummary } from "@/api";
 import STATES from "@/mvc/dataset/states";
 import localize from "@/utils/localization";
 
-import CollectionCreator from "@/components/Collections/common/CollectionCreator.vue";
+import CollectionCreator from "./common/CollectionCreator.vue";
 
 interface Props {
     initialElements: Array<any>;
diff --git a/client/src/components/Collections/PairedElementView.vue b/client/src/components/Collections/PairedElementView.vue
index 364832a22db2..d2c5edd778ab 100644
--- a/client/src/components/Collections/PairedElementView.vue
+++ b/client/src/components/Collections/PairedElementView.vue
@@ -6,7 +6,7 @@ import { onMounted, ref, watch } from "vue";
 
 import localize from "@/utils/localization";
 
-import ClickToEdit from "@/components/Collections/common/ClickToEdit.vue";
+import ClickToEdit from "./common/ClickToEdit.vue";
 
 library.add(faUnlink);
 
diff --git a/client/src/components/Collections/common/CollectionEditView.vue b/client/src/components/Collections/common/CollectionEditView.vue
index 7ee33362431d..a2ca8a8ed070 100644
--- a/client/src/components/Collections/common/CollectionEditView.vue
+++ b/client/src/components/Collections/common/CollectionEditView.vue
@@ -20,9 +20,9 @@ import { errorMessageAsString } from "@/utils/simple-error";
 
 import { type HistoryContentBulkOperationPayload, updateHistoryItemsBulk } from "./services";
 
-import ChangeDatatypeTab from "@/components/Collections/common/ChangeDatatypeTab.vue";
-import DatabaseEditTab from "@/components/Collections/common/DatabaseEditTab.vue";
-import SuitableConvertersTab from "@/components/Collections/common/SuitableConvertersTab.vue";
+import ChangeDatatypeTab from "./ChangeDatatypeTab.vue";
+import DatabaseEditTab from "./DatabaseEditTab.vue";
+import SuitableConvertersTab from "./SuitableConvertersTab.vue";
 import Heading from "@/components/Common/Heading.vue";
 import FormDisplay from "@/components/Form/FormDisplay.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
diff --git a/client/src/components/Common/ExportRDMForm.vue b/client/src/components/Common/ExportRDMForm.vue
index 6fee693d46a1..2751d8697456 100644
--- a/client/src/components/Common/ExportRDMForm.vue
+++ b/client/src/components/Common/ExportRDMForm.vue
@@ -8,12 +8,11 @@ import {
     createRemoteEntry,
     type FilterFileSourcesOptions,
 } from "@/api/remoteFiles";
+import { fileSourcePluginToItem } from "@/components/FilesDialog/utilities";
 import { useToast } from "@/composables/toast";
 import localize from "@/utils/localization";
 import { errorMessageAsString } from "@/utils/simple-error";
 
-import { fileSourcePluginToItem } from "../FilesDialog/utilities";
-
 import ExternalLink from "@/components/ExternalLink.vue";
 import FilesInput from "@/components/FilesDialog/FilesInput.vue";
 
diff --git a/client/src/components/Common/ExportRecordDetails.vue b/client/src/components/Common/ExportRecordDetails.vue
index 58ad35898ff2..3460f19f6af9 100644
--- a/client/src/components/Common/ExportRecordDetails.vue
+++ b/client/src/components/Common/ExportRecordDetails.vue
@@ -14,7 +14,7 @@ import { computed } from "vue";
 import type { ColorVariant } from ".";
 import { type ExportRecord } from "./models/exportRecordModel";
 
-import Heading from "@/components/Common/Heading.vue";
+import Heading from "./Heading.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 
 library.add(faCheckCircle, faClock, faExclamationCircle, faExclamationTriangle, faLink);
diff --git a/client/src/components/Common/FilterMenu.vue b/client/src/components/Common/FilterMenu.vue
index 66a5e4c823f4..2d95f2b6b769 100644
--- a/client/src/components/Common/FilterMenu.vue
+++ b/client/src/components/Common/FilterMenu.vue
@@ -9,13 +9,13 @@ import { computed, ref, set } from "vue";
 import type Filtering from "@/utils/filtering";
 import { type Alias, type ErrorType, getOperatorForAlias, type ValidFilter } from "@/utils/filtering";
 
-import DelayedInput from "@/components/Common/DelayedInput.vue";
-import FilterMenuBoolean from "@/components/Common/FilterMenuBoolean.vue";
-import FilterMenuDropdown from "@/components/Common/FilterMenuDropdown.vue";
-import FilterMenuInput from "@/components/Common/FilterMenuInput.vue";
-import FilterMenuMultiTags from "@/components/Common/FilterMenuMultiTags.vue";
-import FilterMenuObjectStore from "@/components/Common/FilterMenuObjectStore.vue";
-import FilterMenuRanged from "@/components/Common/FilterMenuRanged.vue";
+import DelayedInput from "./DelayedInput.vue";
+import FilterMenuBoolean from "./FilterMenuBoolean.vue";
+import FilterMenuDropdown from "./FilterMenuDropdown.vue";
+import FilterMenuInput from "./FilterMenuInput.vue";
+import FilterMenuMultiTags from "./FilterMenuMultiTags.vue";
+import FilterMenuObjectStore from "./FilterMenuObjectStore.vue";
+import FilterMenuRanged from "./FilterMenuRanged.vue";
 
 library.add(faAngleDoubleUp, faQuestion, faSearch);
 
diff --git a/client/src/components/Common/FilterMenuDropdown.vue b/client/src/components/Common/FilterMenuDropdown.vue
index a251f40281ad..794bb5eba3ef 100644
--- a/client/src/components/Common/FilterMenuDropdown.vue
+++ b/client/src/components/Common/FilterMenuDropdown.vue
@@ -7,11 +7,10 @@ import { capitalize } from "lodash";
 import { computed, onMounted, ref, type UnwrapRef, watch } from "vue";
 
 import { type QuotaUsage } from "@/components/User/DiskUsage/Quota/model";
+import { fetch } from "@/components/User/DiskUsage/Quota/services";
 import { type FilterType, type ValidFilter } from "@/utils/filtering";
 import { errorMessageAsString } from "@/utils/simple-error";
 
-import { fetch } from "../User/DiskUsage/Quota/services";
-
 import QuotaUsageBar from "@/components/User/DiskUsage/Quota/QuotaUsageBar.vue";
 
 library.add(faQuestion);
diff --git a/client/src/components/Common/PersistentTaskProgressMonitorAlert.test.ts b/client/src/components/Common/PersistentTaskProgressMonitorAlert.test.ts
index 5a956d4888c2..2adbb79c0f7d 100644
--- a/client/src/components/Common/PersistentTaskProgressMonitorAlert.test.ts
+++ b/client/src/components/Common/PersistentTaskProgressMonitorAlert.test.ts
@@ -8,7 +8,7 @@ import {
     usePersistentProgressTaskMonitor,
 } from "@/composables/persistentProgressMonitor";
 
-import PersistentTaskProgressMonitorAlert from "@/components/Common/PersistentTaskProgressMonitorAlert.vue";
+import PersistentTaskProgressMonitorAlert from "./PersistentTaskProgressMonitorAlert.vue";
 
 type ComponentUnderTestProps = Partial<PropType<typeof PersistentTaskProgressMonitorAlert>>;
 
diff --git a/client/src/components/Dataset/DatasetList.vue b/client/src/components/Dataset/DatasetList.vue
index 999b2cef6ff8..07416a2e0bff 100644
--- a/client/src/components/Dataset/DatasetList.vue
+++ b/client/src/components/Dataset/DatasetList.vue
@@ -8,8 +8,8 @@ import { copyDataset, getDatasets } from "@/api/datasets";
 import { updateTags } from "@/api/tags";
 import { useHistoryStore } from "@/stores/historyStore";
 
+import DatasetName from "./DatasetName.vue";
 import DelayedInput from "@/components/Common/DelayedInput.vue";
-import DatasetName from "@/components/Dataset/DatasetName.vue";
 import SwitchToHistoryLink from "@/components/History/SwitchToHistoryLink.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 import StatelessTags from "@/components/TagsMultiselect/StatelessTags.vue";
diff --git a/client/src/components/DatasetInformation/DatasetAttributes.vue b/client/src/components/DatasetInformation/DatasetAttributes.vue
index a9fa7db9acd0..0688dee67c2e 100644
--- a/client/src/components/DatasetInformation/DatasetAttributes.vue
+++ b/client/src/components/DatasetInformation/DatasetAttributes.vue
@@ -7,11 +7,12 @@ import { BAlert, BButton, BTab, BTabs } from "bootstrap-vue";
 import { onMounted, ref } from "vue";
 
 import { fetchDatasetAttributes } from "@/api/datasets";
-import { setAttributes } from "@/components/DatasetInformation/services";
 import { useHistoryStore } from "@/stores/historyStore";
 import localize from "@/utils/localization";
 
-import Heading from "../Common/Heading.vue";
+import { setAttributes } from "./services";
+
+import Heading from "@/components/Common/Heading.vue";
 import FormDisplay from "@/components/Form/FormDisplay.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 
diff --git a/client/src/components/DatasetInformation/DatasetDetails.vue b/client/src/components/DatasetInformation/DatasetDetails.vue
index 4793da8d6982..656dd7c153b1 100644
--- a/client/src/components/DatasetInformation/DatasetDetails.vue
+++ b/client/src/components/DatasetInformation/DatasetDetails.vue
@@ -11,8 +11,8 @@ import { useConfig } from "@/composables/config";
 import { useUserStore } from "@/stores/userStore";
 import { stateIsTerminal } from "@/utils/utils";
 
+import DatasetInformation from "./DatasetInformation.vue";
 import DatasetStorage from "@/components/Dataset/DatasetStorage/DatasetStorage.vue";
-import DatasetInformation from "@/components/DatasetInformation/DatasetInformation.vue";
 import InheritanceChain from "@/components/InheritanceChain//InheritanceChain.vue";
 import JobDependencies from "@/components/JobDependencies/JobDependencies.vue";
 import JobDestinationParams from "@/components/JobDestinationParams/JobDestinationParams.vue";
diff --git a/client/src/components/DatasetInformation/DatasetError.vue b/client/src/components/DatasetInformation/DatasetError.vue
index 0e60ad136de4..c434666d80c4 100644
--- a/client/src/components/DatasetInformation/DatasetError.vue
+++ b/client/src/components/DatasetInformation/DatasetError.vue
@@ -20,7 +20,7 @@ import { useMarkdown } from "@/composables/markdown";
 import { useUserStore } from "@/stores/userStore";
 import localize from "@/utils/localization";
 
-import DatasetErrorDetails from "@/components/DatasetInformation/DatasetErrorDetails.vue";
+import DatasetErrorDetails from "./DatasetErrorDetails.vue";
 import FormElement from "@/components/Form/FormElement.vue";
 
 library.add(faBug);
diff --git a/client/src/components/DatasetInformation/DatasetHashes.vue b/client/src/components/DatasetInformation/DatasetHashes.vue
index fe115a623de8..0013272e8840 100644
--- a/client/src/components/DatasetInformation/DatasetHashes.vue
+++ b/client/src/components/DatasetInformation/DatasetHashes.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { type DatasetHash as DatasetHashType } from "@/api";
 
-import DatasetHash from "@/components/DatasetInformation/DatasetHash.vue";
+import DatasetHash from "./DatasetHash.vue";
 
 interface Props {
     hashes: DatasetHashType[];
diff --git a/client/src/components/DatasetInformation/DatasetInformation.vue b/client/src/components/DatasetInformation/DatasetInformation.vue
index b311f6eda8ee..5f52e1c8ca80 100644
--- a/client/src/components/DatasetInformation/DatasetInformation.vue
+++ b/client/src/components/DatasetInformation/DatasetInformation.vue
@@ -3,8 +3,8 @@ import { type HDADetailed } from "@/api";
 import { withPrefix } from "@/utils/redirect";
 import { bytesToString } from "@/utils/utils";
 
-import DatasetHashes from "@/components/DatasetInformation/DatasetHashes.vue";
-import DatasetSources from "@/components/DatasetInformation/DatasetSources.vue";
+import DatasetHashes from "./DatasetHashes.vue";
+import DatasetSources from "./DatasetSources.vue";
 import DecodedId from "@/components/DecodedId.vue";
 import UtcDate from "@/components/UtcDate.vue";
 
diff --git a/client/src/components/DatasetInformation/DatasetSource.vue b/client/src/components/DatasetInformation/DatasetSource.vue
index e45e822a2178..db2344edadf6 100644
--- a/client/src/components/DatasetInformation/DatasetSource.vue
+++ b/client/src/components/DatasetInformation/DatasetSource.vue
@@ -8,7 +8,7 @@ import { type DatasetTransform } from "@/api";
 import { copy } from "@/utils/clipboard";
 import localize from "@/utils/localization";
 
-import DatasetSourceTransform from "@/components/DatasetInformation/DatasetSourceTransform.vue";
+import DatasetSourceTransform from "./DatasetSourceTransform.vue";
 
 library.add(faCopy, faExternalLinkAlt);
 
diff --git a/client/src/components/DatasetInformation/DatasetSources.vue b/client/src/components/DatasetInformation/DatasetSources.vue
index 59c41f2b4748..49ff512a06c3 100644
--- a/client/src/components/DatasetInformation/DatasetSources.vue
+++ b/client/src/components/DatasetInformation/DatasetSources.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { type DatasetTransform } from "@/api";
 
-import DatasetSource from "@/components/DatasetInformation/DatasetSource.vue";
+import DatasetSource from "./DatasetSource.vue";
 
 interface Props {
     sources: {
diff --git a/client/src/components/DragGhost.vue b/client/src/components/DragGhost.vue
index bc15f7c46af9..a1d56a70a677 100644
--- a/client/src/components/DragGhost.vue
+++ b/client/src/components/DragGhost.vue
@@ -6,7 +6,7 @@ import { storeToRefs } from "pinia";
 import { useEventStore } from "stores/eventStore";
 import { computed } from "vue";
 
-import TextShort from "@/components/Common/TextShort.vue";
+import TextShort from "./Common/TextShort.vue";
 
 library.add(faPaperPlane);
 
diff --git a/client/src/components/FileSources/Instances/CreateInstance.vue b/client/src/components/FileSources/Instances/CreateInstance.vue
index 9b93e2d7c269..453780598562 100644
--- a/client/src/components/FileSources/Instances/CreateInstance.vue
+++ b/client/src/components/FileSources/Instances/CreateInstance.vue
@@ -6,7 +6,7 @@ import { useFileSourceTemplatesStore } from "@/stores/fileSourceTemplatesStore";
 
 import { useInstanceRouting } from "./routing";
 
-import CreateForm from "@/components/FileSources/Instances/CreateForm.vue";
+import CreateForm from "./CreateForm.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 
 interface Props {
diff --git a/client/src/components/FilesDialog/FilesDialog.vue b/client/src/components/FilesDialog/FilesDialog.vue
index f61c7c372c85..5b58a2adffdc 100644
--- a/client/src/components/FilesDialog/FilesDialog.vue
+++ b/client/src/components/FilesDialog/FilesDialog.vue
@@ -10,7 +10,6 @@ import {
     type RemoteEntry,
 } from "@/api/remoteFiles";
 import { UrlTracker } from "@/components/DataDialog/utilities";
-import { fileSourcePluginToItem, isSubPath } from "@/components/FilesDialog/utilities";
 import {
     type ItemsProvider,
     type ItemsProviderContext,
@@ -22,6 +21,7 @@ import { useFileSources } from "@/composables/fileSources";
 import { errorMessageAsString } from "@/utils/simple-error";
 
 import { Model } from "./model";
+import { fileSourcePluginToItem, isSubPath } from "./utilities";
 
 import SelectionDialog from "@/components/SelectionDialog/SelectionDialog.vue";
 
diff --git a/client/src/components/FilesDialog/FilesInput.vue b/client/src/components/FilesDialog/FilesInput.vue
index 965eaab51f5a..d29807539855 100644
--- a/client/src/components/FilesDialog/FilesInput.vue
+++ b/client/src/components/FilesDialog/FilesInput.vue
@@ -3,10 +3,9 @@ import { BFormInput } from "bootstrap-vue";
 import { computed } from "vue";
 
 import { type FileSourceBrowsingMode, type FilterFileSourcesOptions } from "@/api/remoteFiles";
+import { type SelectionItem } from "@/components/SelectionDialog/selectionTypes";
 import { filesDialog } from "@/utils/data";
 
-import { type SelectionItem } from "../SelectionDialog/selectionTypes";
-
 interface Props {
     value: string;
     mode?: FileSourceBrowsingMode;
diff --git a/client/src/components/FilesDialog/model.ts b/client/src/components/FilesDialog/model.ts
index ab01fbfec568..5c1a42e28c9d 100644
--- a/client/src/components/FilesDialog/model.ts
+++ b/client/src/components/FilesDialog/model.ts
@@ -1,9 +1,10 @@
 /**
  * Model to track selected URI for FilesDialog - mirroring DataDialog's model.
  */
-import { isSubPath } from "@/components/FilesDialog/utilities";
 import { type SelectionItem } from "@/components/SelectionDialog/selectionTypes";
 
+import { isSubPath } from "./utilities";
+
 interface ModelOptions {
     multiple?: boolean;
 }
diff --git a/client/src/components/FilesDialog/utilities.ts b/client/src/components/FilesDialog/utilities.ts
index f300d10349c6..fac50d04377a 100644
--- a/client/src/components/FilesDialog/utilities.ts
+++ b/client/src/components/FilesDialog/utilities.ts
@@ -1,6 +1,5 @@
 import { type BrowsableFilesSourcePlugin } from "@/api/remoteFiles";
-
-import { type SelectionItem } from "../SelectionDialog/selectionTypes";
+import { type SelectionItem } from "@/components/SelectionDialog/selectionTypes";
 
 export const isSubPath = (originPath: string, destinationPath: string) => {
     return subPathCondition(ensureTrailingSlash(originPath), ensureTrailingSlash(destinationPath));
diff --git a/client/src/components/Form/Elements/FormData/FormData.vue b/client/src/components/Form/Elements/FormData/FormData.vue
index b5f71c8cb2d1..ae5e2491ef7c 100644
--- a/client/src/components/Form/Elements/FormData/FormData.vue
+++ b/client/src/components/Form/Elements/FormData/FormData.vue
@@ -15,8 +15,8 @@ import { orList } from "@/utils/strings";
 import type { DataOption } from "./types";
 import { BATCH, SOURCE, VARIANTS } from "./variants";
 
-import FormSelection from "../FormSelection.vue";
 import FormSelect from "@/components/Form/Elements/FormSelect.vue";
+import FormSelection from "@/components/Form/Elements/FormSelection.vue";
 
 library.add(faCopy, faFile, faFolder, faCaretDown, faCaretUp, faExclamation, faLink, faUnlink);
 
diff --git a/client/src/components/Form/Elements/FormSelectMany/worker/__mocks__/selectMany.ts b/client/src/components/Form/Elements/FormSelectMany/worker/__mocks__/selectMany.ts
index a635e2bb63aa..b54c76bbc1a0 100644
--- a/client/src/components/Form/Elements/FormSelectMany/worker/__mocks__/selectMany.ts
+++ b/client/src/components/Form/Elements/FormSelectMany/worker/__mocks__/selectMany.ts
@@ -1,7 +1,10 @@
 import { reactive, ref, watch } from "vue";
 
-import { type SelectOption, type useSelectMany as UseSelectMany } from "../selectMany";
-import { main } from "../selectManyMain";
+import {
+    type SelectOption,
+    type useSelectMany as UseSelectMany,
+} from "@/components/Form/Elements/FormSelectMany/worker/selectMany";
+import { main } from "@/components/Form/Elements/FormSelectMany/worker/selectManyMain";
 
 jest.mock("@/components/Form/Elements/FormSelectMany/worker/selectMany", () => ({
     useSelectMany,
diff --git a/client/src/components/Form/FormInputs.vue b/client/src/components/Form/FormInputs.vue
index 1421a4b79ea3..370bf3fc004a 100644
--- a/client/src/components/Form/FormInputs.vue
+++ b/client/src/components/Form/FormInputs.vue
@@ -67,11 +67,11 @@
 <script>
 import { set } from "vue";
 
-import { matchCase } from "@/components/Form/utilities";
+import { matchCase } from "./utilities";
 
 import FormCard from "./FormCard.vue";
+import FormElement from "./FormElement.vue";
 import FormRepeat from "./FormRepeat.vue";
-import FormElement from "@/components/Form/FormElement.vue";
 
 export default {
     name: "FormNode",
diff --git a/client/src/components/Grid/GridHistory.vue b/client/src/components/Grid/GridHistory.vue
index 76229f380ea8..8f9a6bfe815c 100644
--- a/client/src/components/Grid/GridHistory.vue
+++ b/client/src/components/Grid/GridHistory.vue
@@ -3,14 +3,15 @@ import { library } from "@fortawesome/fontawesome-svg-core";
 import { faPlus } from "@fortawesome/free-solid-svg-icons";
 import { BNav, BNavItem } from "bootstrap-vue";
 
-import historiesGridConfig from "@/components/Grid/configs/histories";
-import historiesPublishedGridConfig from "@/components/Grid/configs/historiesPublished";
-import historiesSharedGridConfig from "@/components/Grid/configs/historiesShared";
 import { useUserStore } from "@/stores/userStore";
 
+import historiesGridConfig from "./configs/histories";
+import historiesPublishedGridConfig from "./configs/historiesPublished";
+import historiesSharedGridConfig from "./configs/historiesShared";
+
+import GridList from "./GridList.vue";
 import Heading from "@/components/Common/Heading.vue";
 import LoginRequired from "@/components/Common/LoginRequired.vue";
-import GridList from "@/components/Grid/GridList.vue";
 import HistoryArchive from "@/components/History/Archiving/HistoryArchive.vue";
 
 const userStore = useUserStore();
diff --git a/client/src/components/Grid/GridInvocation.vue b/client/src/components/Grid/GridInvocation.vue
index d8997096096f..4deec8bdd469 100644
--- a/client/src/components/Grid/GridInvocation.vue
+++ b/client/src/components/Grid/GridInvocation.vue
@@ -2,17 +2,17 @@
 import { storeToRefs } from "pinia";
 import { computed } from "vue";
 
-import invocationsGridConfig from "@/components/Grid/configs/invocations";
-import invocationsHistoryGridConfig from "@/components/Grid/configs/invocationsHistory";
-import invocationsWorkflowGridConfig from "@/components/Grid/configs/invocationsWorkflow";
 import { useUserStore } from "@/stores/userStore";
 
+import invocationsGridConfig from "./configs/invocations";
+import invocationsHistoryGridConfig from "./configs/invocationsHistory";
+import invocationsWorkflowGridConfig from "./configs/invocationsWorkflow";
 import type { GridConfig } from "./configs/types";
 
-import Heading from "../Common/Heading.vue";
-import UtcDate from "../UtcDate.vue";
-import WorkflowInvocationState from "../WorkflowInvocationState/WorkflowInvocationState.vue";
-import GridList from "@/components/Grid/GridList.vue";
+import GridList from "./GridList.vue";
+import Heading from "@/components/Common/Heading.vue";
+import UtcDate from "@/components/UtcDate.vue";
+import WorkflowInvocationState from "@/components/WorkflowInvocationState/WorkflowInvocationState.vue";
 
 interface Props {
     noInvocationsMessage?: string;
diff --git a/client/src/components/Grid/GridList.vue b/client/src/components/Grid/GridList.vue
index fb62592c7ec8..6f9f35547175 100644
--- a/client/src/components/Grid/GridList.vue
+++ b/client/src/components/Grid/GridList.vue
@@ -16,8 +16,6 @@ import {
     type RowData,
 } from "./configs/types";
 
-import HelpText from "../Help/HelpText.vue";
-import SwitchToHistoryLink from "../History/SwitchToHistoryLink.vue";
 import GridBoolean from "./GridElements/GridBoolean.vue";
 import GridDatasets from "./GridElements/GridDatasets.vue";
 import GridExpand from "./GridElements/GridExpand.vue";
@@ -26,6 +24,8 @@ import GridOperations from "./GridElements/GridOperations.vue";
 import GridText from "./GridElements/GridText.vue";
 import FilterMenu from "@/components/Common/FilterMenu.vue";
 import Heading from "@/components/Common/Heading.vue";
+import HelpText from "@/components/Help/HelpText.vue";
+import SwitchToHistoryLink from "@/components/History/SwitchToHistoryLink.vue";
 import SharingIndicators from "@/components/Indices/SharingIndicators.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 import StatelessTags from "@/components/TagsMultiselect/StatelessTags.vue";
diff --git a/client/src/components/Grid/GridPage.vue b/client/src/components/Grid/GridPage.vue
index 3508bba416ff..0426ee6b8290 100644
--- a/client/src/components/Grid/GridPage.vue
+++ b/client/src/components/Grid/GridPage.vue
@@ -3,13 +3,14 @@ import { library } from "@fortawesome/fontawesome-svg-core";
 import { faPlus } from "@fortawesome/free-solid-svg-icons";
 import { BNav, BNavItem } from "bootstrap-vue";
 
-import pagesGridConfig from "@/components/Grid/configs/pages";
-import pagesPublishedGridConfig from "@/components/Grid/configs/pagesPublished";
 import { useUserStore } from "@/stores/userStore";
 
+import pagesGridConfig from "./configs/pages";
+import pagesPublishedGridConfig from "./configs/pagesPublished";
+
+import GridList from "./GridList.vue";
 import Heading from "@/components/Common/Heading.vue";
 import LoginRequired from "@/components/Common/LoginRequired.vue";
-import GridList from "@/components/Grid/GridList.vue";
 
 const userStore = useUserStore();
 
diff --git a/client/src/components/Grid/GridVisualization.vue b/client/src/components/Grid/GridVisualization.vue
index 0ba424bd10ea..17a88c2da4a7 100644
--- a/client/src/components/Grid/GridVisualization.vue
+++ b/client/src/components/Grid/GridVisualization.vue
@@ -3,13 +3,14 @@ import { library } from "@fortawesome/fontawesome-svg-core";
 import { faPlus } from "@fortawesome/free-solid-svg-icons";
 import { BNav, BNavItem } from "bootstrap-vue";
 
-import visualizationsGridConfig from "@/components/Grid/configs/visualizations";
-import visualizationsPublishedGridConfig from "@/components/Grid/configs/visualizationsPublished";
 import { useUserStore } from "@/stores/userStore";
 
+import visualizationsGridConfig from "./configs/visualizations";
+import visualizationsPublishedGridConfig from "./configs/visualizationsPublished";
+
+import GridList from "./GridList.vue";
 import Heading from "@/components/Common/Heading.vue";
 import LoginRequired from "@/components/Common/LoginRequired.vue";
-import GridList from "@/components/Grid/GridList.vue";
 
 const userStore = useUserStore();
 
diff --git a/client/src/components/History/Archiving/HistoryArchive.vue b/client/src/components/History/Archiving/HistoryArchive.vue
index beef0282cb85..5de1a7d6ebf4 100644
--- a/client/src/components/History/Archiving/HistoryArchive.vue
+++ b/client/src/components/History/Archiving/HistoryArchive.vue
@@ -13,8 +13,8 @@ import { useToast } from "@/composables/toast";
 import { useHistoryStore } from "@/stores/historyStore";
 import localize from "@/utils/localization";
 
+import ArchivedHistoryCard from "./ArchivedHistoryCard.vue";
 import DelayedInput from "@/components/Common/DelayedInput.vue";
-import ArchivedHistoryCard from "@/components/History/Archiving/ArchivedHistoryCard.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 
 const router = useRouter();
diff --git a/client/src/components/History/Archiving/HistoryArchiveWizard.vue b/client/src/components/History/Archiving/HistoryArchiveWizard.vue
index 68b3e793a9ae..beb2388a90d7 100644
--- a/client/src/components/History/Archiving/HistoryArchiveWizard.vue
+++ b/client/src/components/History/Archiving/HistoryArchiveWizard.vue
@@ -12,8 +12,8 @@ import { useFileSources } from "@/composables/fileSources";
 import { useToast } from "@/composables/toast";
 import { useHistoryStore } from "@/stores/historyStore";
 
-import HistoryArchiveExportSelector from "@/components/History/Archiving/HistoryArchiveExportSelector.vue";
-import HistoryArchiveSimple from "@/components/History/Archiving/HistoryArchiveSimple.vue";
+import HistoryArchiveExportSelector from "./HistoryArchiveExportSelector.vue";
+import HistoryArchiveSimple from "./HistoryArchiveSimple.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 
 library.add(faArchive);
diff --git a/client/src/components/History/Content/Collection/JobStateSummary.js b/client/src/components/History/Content/Collection/JobStateSummary.js
index a95a04a93007..d9781353445a 100644
--- a/client/src/components/History/Content/Collection/JobStateSummary.js
+++ b/client/src/components/History/Content/Collection/JobStateSummary.js
@@ -4,7 +4,7 @@
  *
  * Logic stolen from job-state-model.js and hdca-li.js
  */
-import { STATES } from "../model/states";
+import { STATES } from "@/components/History/Content/model/states";
 
 const NON_TERMINAL_STATES = ["new", "waiting", "queued", "running", "resubmitted", "upload"];
 const ERROR_STATES = ["error", "failed", "deleted"];
diff --git a/client/src/components/History/Content/ContentItem.vue b/client/src/components/History/Content/ContentItem.vue
index cba8f0bdc4d3..ac2e4c229ea1 100644
--- a/client/src/components/History/Content/ContentItem.vue
+++ b/client/src/components/History/Content/ContentItem.vue
@@ -7,13 +7,13 @@ import { BBadge, BButton, BCollapse } from "bootstrap-vue";
 import { computed, ref } from "vue";
 import { useRoute, useRouter } from "vue-router/composables";
 
-import type { ItemUrls } from "@/components/History/Content/Dataset/index";
 import { updateContentFields } from "@/components/History/model/queries";
 import { useEntryPointStore } from "@/stores/entryPointStore";
 import { useEventStore } from "@/stores/eventStore";
 import { clearDrag } from "@/utils/setDrag";
 
 import { JobStateSummary } from "./Collection/JobStateSummary";
+import type { ItemUrls } from "./Dataset";
 import { HIERARCHICAL_COLLECTION_JOB_STATES, type StateMap, STATES } from "./model/states";
 
 import CollectionDescription from "./Collection/CollectionDescription.vue";
diff --git a/client/src/components/History/Content/Dataset/DatasetActions.vue b/client/src/components/History/Content/Dataset/DatasetActions.vue
index c16c88b70c2e..24bb1c4d41c5 100644
--- a/client/src/components/History/Content/Dataset/DatasetActions.vue
+++ b/client/src/components/History/Content/Dataset/DatasetActions.vue
@@ -13,7 +13,7 @@ import { absPath, prependPath } from "@/utils/redirect";
 
 import { type ItemUrls } from ".";
 
-import DatasetDownload from "@/components/History/Content/Dataset/DatasetDownload.vue";
+import DatasetDownload from "./DatasetDownload.vue";
 
 library.add(faBug, faChartBar, faInfoCircle, faLink, faRedo, faSitemap);
 
diff --git a/client/src/components/History/Content/SelectedItems.js b/client/src/components/History/Content/SelectedItems.js
index a93fa5904784..84ecef23f7dd 100644
--- a/client/src/components/History/Content/SelectedItems.js
+++ b/client/src/components/History/Content/SelectedItems.js
@@ -3,7 +3,7 @@
  * It allows to select individual items or perform a query selection.
  */
 
-import { HistoryFilters } from "../HistoryFilters";
+import { HistoryFilters } from "@/components/History/HistoryFilters";
 
 export default {
     props: {
diff --git a/client/src/components/History/CurrentHistory/HistoryOperations/HistoryOperations.vue b/client/src/components/History/CurrentHistory/HistoryOperations/HistoryOperations.vue
index 4ae704e4b8fa..c49a8e305b38 100644
--- a/client/src/components/History/CurrentHistory/HistoryOperations/HistoryOperations.vue
+++ b/client/src/components/History/CurrentHistory/HistoryOperations/HistoryOperations.vue
@@ -5,7 +5,7 @@ import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
 
 import type { HistorySummaryExtended } from "@/api";
 
-import DefaultOperations from "@/components/History/CurrentHistory/HistoryOperations/DefaultOperations.vue";
+import DefaultOperations from "./DefaultOperations.vue";
 
 library.add(faCheckSquare, faCompress);
 
diff --git a/client/src/components/History/CurrentHistory/SelectPreferredStore.test.ts b/client/src/components/History/CurrentHistory/SelectPreferredStore.test.ts
index 6bb0b9c67506..10a3e0624d73 100644
--- a/client/src/components/History/CurrentHistory/SelectPreferredStore.test.ts
+++ b/client/src/components/History/CurrentHistory/SelectPreferredStore.test.ts
@@ -4,10 +4,9 @@ import MockAdapter from "axios-mock-adapter";
 import flushPromises from "flush-promises";
 import { getLocalVue } from "tests/jest/helpers";
 
+import { setupSelectableMock } from "@/components/ObjectStore/mockServices";
 import { ROOT_COMPONENT } from "@/utils/navigation/schema";
 
-import { setupSelectableMock } from "../../ObjectStore/mockServices";
-
 import SelectPreferredStore from "./SelectPreferredStore.vue";
 
 setupSelectableMock();
diff --git a/client/src/components/History/HistoryPublished.vue b/client/src/components/History/HistoryPublished.vue
index a9284130f103..2c68bbd54a47 100644
--- a/client/src/components/History/HistoryPublished.vue
+++ b/client/src/components/History/HistoryPublished.vue
@@ -3,8 +3,8 @@ import { onMounted, ref } from "vue";
 
 import { historyFetcher } from "@/api/histories";
 
+import HistoryView from "./HistoryView.vue";
 import PublishedItem from "@/components/Common/PublishedItem.vue";
-import HistoryView from "@/components/History/HistoryView.vue";
 
 interface Props {
     id: string;
diff --git a/client/src/components/History/HistoryScrollList.vue b/client/src/components/History/HistoryScrollList.vue
index dad3c94eb05a..ef697e0c4c74 100644
--- a/client/src/components/History/HistoryScrollList.vue
+++ b/client/src/components/History/HistoryScrollList.vue
@@ -18,8 +18,8 @@ import localize from "@/utils/localization";
 
 import { HistoriesFilters } from "./HistoriesFilters";
 
-import TextSummary from "../Common/TextSummary.vue";
 import Heading from "@/components/Common/Heading.vue";
+import TextSummary from "@/components/Common/TextSummary.vue";
 import StatelessTags from "@/components/TagsMultiselect/StatelessTags.vue";
 import ScrollToTopButton from "@/components/ToolsList/ScrollToTopButton.vue";
 import UtcDate from "@/components/UtcDate.vue";
diff --git a/client/src/components/History/Index.vue b/client/src/components/History/Index.vue
index 5a192ef8bbb7..445438f0b3fb 100644
--- a/client/src/components/History/Index.vue
+++ b/client/src/components/History/Index.vue
@@ -6,9 +6,9 @@ import type { CollectionEntry } from "@/api";
 import { useHistoryStore } from "@/stores/historyStore";
 import { useUserStore } from "@/stores/userStore";
 
-import CurrentCollection from "@/components/History/CurrentCollection/CollectionPanel.vue";
-import HistoryNavigation from "@/components/History/CurrentHistory/HistoryNavigation.vue";
-import HistoryPanel from "@/components/History/CurrentHistory/HistoryPanel.vue";
+import CurrentCollection from "./CurrentCollection/CollectionPanel.vue";
+import HistoryNavigation from "./CurrentHistory/HistoryNavigation.vue";
+import HistoryPanel from "./CurrentHistory/HistoryPanel.vue";
 
 const userStore = useUserStore();
 const historyStore = useHistoryStore();
diff --git a/client/src/components/History/Multiple/MultipleViewList.vue b/client/src/components/History/Multiple/MultipleViewList.vue
index 6f71c4a51e2b..e2df35993322 100644
--- a/client/src/components/History/Multiple/MultipleViewList.vue
+++ b/client/src/components/History/Multiple/MultipleViewList.vue
@@ -16,8 +16,8 @@ import { useHistoryStore } from "@/stores/historyStore";
 import localize from "@/utils/localization";
 import { errorMessageAsString } from "@/utils/simple-error";
 
-import HistoryDropZone from "../CurrentHistory/HistoryDropZone.vue";
 import MultipleViewItem from "./MultipleViewItem.vue";
+import HistoryDropZone from "@/components/History/CurrentHistory/HistoryDropZone.vue";
 
 library.add(faCheckSquare, faPlus);
 
diff --git a/client/src/components/InteractiveTools/InteractiveTools.vue b/client/src/components/InteractiveTools/InteractiveTools.vue
index 9cdf6d27c571..ccaf9206dd20 100644
--- a/client/src/components/InteractiveTools/InteractiveTools.vue
+++ b/client/src/components/InteractiveTools/InteractiveTools.vue
@@ -72,7 +72,8 @@ import UtcDate from "components/UtcDate";
 import { getAppRoot } from "onload/loadConfig";
 import { mapActions, mapState } from "pinia";
 
-import { useEntryPointStore } from "../../stores/entryPointStore";
+import { useEntryPointStore } from "@/stores/entryPointStore";
+
 import { Services } from "./services";
 
 library.add(faExternalLinkAlt);
diff --git a/client/src/components/JobInformation/JobInformation.vue b/client/src/components/JobInformation/JobInformation.vue
index 085cf6fec0bb..6845367fbd1c 100644
--- a/client/src/components/JobInformation/JobInformation.vue
+++ b/client/src/components/JobInformation/JobInformation.vue
@@ -9,8 +9,8 @@ import { computed, ref } from "vue";
 
 import { invocationForJob } from "@/api/invocations";
 
-import DecodedId from "../DecodedId.vue";
 import CodeRow from "./CodeRow.vue";
+import DecodedId from "@/components/DecodedId.vue";
 
 const job = ref(null);
 const invocationId = ref(null);
diff --git a/client/src/components/JobParameters/JobParameters.vue b/client/src/components/JobParameters/JobParameters.vue
index 34ec57c38f18..feaebe9fc11d 100644
--- a/client/src/components/JobParameters/JobParameters.vue
+++ b/client/src/components/JobParameters/JobParameters.vue
@@ -50,7 +50,8 @@ import BootstrapVue from "bootstrap-vue";
 import { getAppRoot } from "onload/loadConfig";
 import Vue from "vue";
 
-import JobOutputs from "../JobInformation/JobOutputs";
+import JobOutputs from "@/components/JobInformation/JobOutputs";
+
 import JobParametersArrayValue from "./JobParametersArrayValue";
 
 Vue.use(BootstrapVue);
diff --git a/client/src/components/Libraries/LibraryFolder/LibraryFolderDataset/LibraryDataset.test.js b/client/src/components/Libraries/LibraryFolder/LibraryFolderDataset/LibraryDataset.test.js
index 48f4c85a6fcd..96e72db81077 100644
--- a/client/src/components/Libraries/LibraryFolder/LibraryFolderDataset/LibraryDataset.test.js
+++ b/client/src/components/Libraries/LibraryFolder/LibraryFolderDataset/LibraryDataset.test.js
@@ -5,7 +5,8 @@ import { createPinia } from "pinia";
 import { useUserStore } from "stores/userStore";
 import { getLocalVue } from "tests/jest/helpers";
 
-import { Services } from "../services";
+import { Services } from "@/components/Libraries/LibraryFolder/services";
+
 import LibraryDataset from "./LibraryDataset";
 import cannotManageDatasetResponse from "./testData/cannotManageDataset.json";
 import cannotModifyDatasetResponse from "./testData/cannotModifyDataset.json";
diff --git a/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue b/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue
index de3b1c052e5b..16e0f3fed836 100644
--- a/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue
+++ b/client/src/components/Libraries/LibraryFolder/TopToolbar/FolderTopBar.vue
@@ -127,8 +127,9 @@ import { getAppRoot } from "onload/loadConfig";
 import mod_utils from "utils/utils";
 import Vue from "vue";
 
-import SearchField from "../SearchField";
-import { Services } from "../services";
+import SearchField from "@/components/Libraries/LibraryFolder/SearchField";
+import { Services } from "@/components/Libraries/LibraryFolder/services";
+
 import mod_add_datasets from "./add-datasets";
 import { deleteSelectedItems } from "./delete-selected";
 import download from "./download";
diff --git a/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-collection.js b/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-collection.js
index 1642d31d89d3..ee81d5e3a9dd 100644
--- a/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-collection.js
+++ b/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-collection.js
@@ -5,7 +5,7 @@ import { Toast } from "composables/toast";
 import { getAppRoot } from "onload/loadConfig";
 import _ from "underscore";
 
-import mod_library_model from "../library-model";
+import mod_library_model from "@/components/Libraries/LibraryFolder/TopToolbar/library-model";
 
 var ImportCollectionModal = Backbone.View.extend({
     options: null,
diff --git a/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-dataset.js b/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-dataset.js
index 1af313f9ba2e..e1bd93167373 100644
--- a/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-dataset.js
+++ b/client/src/components/Libraries/LibraryFolder/TopToolbar/import-to-history/import-dataset.js
@@ -6,8 +6,8 @@ import { getAppRoot } from "onload/loadConfig";
 import _ from "underscore";
 import _l from "utils/localization";
 
-import { updateProgress } from "../delete-selected";
-import mod_library_model from "../library-model";
+import { updateProgress } from "@/components/Libraries/LibraryFolder/TopToolbar/delete-selected";
+import mod_library_model from "@/components/Libraries/LibraryFolder/TopToolbar/library-model";
 
 var ImportDatasetModal = Backbone.View.extend({
     options: null,
diff --git a/client/src/components/Login/LoginForm.vue b/client/src/components/Login/LoginForm.vue
index 4ad09ebb0d57..e00fb9d1e31a 100644
--- a/client/src/components/Login/LoginForm.vue
+++ b/client/src/components/Login/LoginForm.vue
@@ -20,7 +20,7 @@ import localize from "@/utils/localization";
 import { withPrefix } from "@/utils/redirect";
 import { errorMessageAsString } from "@/utils/simple-error";
 
-import NewUserConfirmation from "@/components/Login/NewUserConfirmation.vue";
+import NewUserConfirmation from "./NewUserConfirmation.vue";
 import ExternalLogin from "@/components/User/ExternalIdentities/ExternalLogin.vue";
 
 interface Props {
diff --git a/client/src/components/Login/LoginIndex.vue b/client/src/components/Login/LoginIndex.vue
index c74cc7a54fe9..c97806837dab 100644
--- a/client/src/components/Login/LoginIndex.vue
+++ b/client/src/components/Login/LoginIndex.vue
@@ -1,8 +1,8 @@
 <script setup lang="ts">
 import { ref } from "vue";
 
-import LoginForm from "@/components/Login/LoginForm.vue";
-import RegisterForm from "@/components/Login/RegisterForm.vue";
+import LoginForm from "./LoginForm.vue";
+import RegisterForm from "./RegisterForm.vue";
 
 interface Props {
     sessionCsrfToken: string;
diff --git a/client/src/components/Notifications/Broadcasts/BroadcastsOverlay.vue b/client/src/components/Notifications/Broadcasts/BroadcastsOverlay.vue
index ecbf47311545..2ce0c5876eb4 100644
--- a/client/src/components/Notifications/Broadcasts/BroadcastsOverlay.vue
+++ b/client/src/components/Notifications/Broadcasts/BroadcastsOverlay.vue
@@ -3,7 +3,7 @@ import { storeToRefs } from "pinia";
 
 import { useBroadcastsStore } from "@/stores/broadcastsStore";
 
-import BroadcastContainer from "@/components/Notifications/Broadcasts/BroadcastContainer.vue";
+import BroadcastContainer from "./BroadcastContainer.vue";
 
 const { activeBroadcasts } = storeToRefs(useBroadcastsStore());
 </script>
diff --git a/client/src/components/Notifications/Categories/Categories.test.ts b/client/src/components/Notifications/Categories/Categories.test.ts
index 1e3664fe8375..28c849ff75fd 100644
--- a/client/src/components/Notifications/Categories/Categories.test.ts
+++ b/client/src/components/Notifications/Categories/Categories.test.ts
@@ -6,8 +6,8 @@ import { setActivePinia } from "pinia";
 
 import { generateMessageNotification, generateNewSharedItemNotification } from "@/components/Notifications/test-utils";
 
-import MessageNotification from "@/components/Notifications/Categories/MessageNotification.vue";
-import SharedItemNotification from "@/components/Notifications/Categories/SharedItemNotification.vue";
+import MessageNotification from "./MessageNotification.vue";
+import SharedItemNotification from "./SharedItemNotification.vue";
 
 const localVue = getLocalVue(true);
 
diff --git a/client/src/components/Notifications/NotificationActions.test.ts b/client/src/components/Notifications/NotificationActions.test.ts
index ad06cb27a24a..e3638e8df7da 100644
--- a/client/src/components/Notifications/NotificationActions.test.ts
+++ b/client/src/components/Notifications/NotificationActions.test.ts
@@ -6,9 +6,10 @@ import { setActivePinia } from "pinia";
 import type Vue from "vue";
 
 import { type UserNotification } from "@/api/notifications";
-import { generateMessageNotification, generateNewSharedItemNotification } from "@/components/Notifications/test-utils";
 import { useNotificationsStore } from "@/stores/notificationsStore";
 
+import { generateMessageNotification, generateNewSharedItemNotification } from "./test-utils";
+
 import NotificationActions from "./NotificationActions.vue";
 
 const localVue = getLocalVue(true);
diff --git a/client/src/components/Notifications/NotificationsList.vue b/client/src/components/Notifications/NotificationsList.vue
index b9268e6c41f5..7c61b6f727ae 100644
--- a/client/src/components/Notifications/NotificationsList.vue
+++ b/client/src/components/Notifications/NotificationsList.vue
@@ -9,9 +9,9 @@ import { computed, ref } from "vue";
 import type { UserNotification } from "@/api/notifications";
 import { useNotificationsStore } from "@/stores/notificationsStore";
 
+import NotificationCard from "./NotificationCard.vue";
 import Heading from "@/components/Common/Heading.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import NotificationCard from "@/components/Notifications/NotificationCard.vue";
 import NotificationsPreferences from "@/components/User/Notifications/NotificationsPreferences.vue";
 
 library.add(faCog, faHourglassHalf, faRetweet);
diff --git a/client/src/components/ObjectStore/Instances/CreateForm.vue b/client/src/components/ObjectStore/Instances/CreateForm.vue
index 6da11a92e3d9..0f1f6a0351b7 100644
--- a/client/src/components/ObjectStore/Instances/CreateForm.vue
+++ b/client/src/components/ObjectStore/Instances/CreateForm.vue
@@ -8,11 +8,11 @@ import {
     type FormEntry,
     pluginStatusToErrorMessage,
 } from "@/components/ConfigTemplates/formUtil";
-import type { UserConcreteObjectStore } from "@/components/ObjectStore/Instances/types";
 import type { ObjectStoreTemplateSummary } from "@/components/ObjectStore/Templates/types";
 import { errorMessageAsString } from "@/utils/simple-error";
 
 import { create, test } from "./services";
+import type { UserConcreteObjectStore } from "./types";
 
 import InstanceForm from "@/components/ConfigTemplates/InstanceForm.vue";
 
diff --git a/client/src/components/ObjectStore/Instances/UpgradeForm.vue b/client/src/components/ObjectStore/Instances/UpgradeForm.vue
index 28aa658f3106..727465dbf944 100644
--- a/client/src/components/ObjectStore/Instances/UpgradeForm.vue
+++ b/client/src/components/ObjectStore/Instances/UpgradeForm.vue
@@ -3,9 +3,9 @@ import { BAlert } from "bootstrap-vue";
 import { computed, ref } from "vue";
 
 import { type FormEntry, upgradeForm, upgradeFormDataToPayload } from "@/components/ConfigTemplates/formUtil";
+import type { ObjectStoreTemplateSummary } from "@/components/ObjectStore/Templates/types";
 import { errorMessageAsString } from "@/utils/simple-error";
 
-import type { ObjectStoreTemplateSummary } from "../Templates/types";
 import { useInstanceRouting } from "./routing";
 import { update } from "./services";
 import type { UserConcreteObjectStore } from "./types";
diff --git a/client/src/components/ObjectStore/ObjectStoreSelectButton.vue b/client/src/components/ObjectStore/ObjectStoreSelectButton.vue
index d86661b707e5..940040900038 100644
--- a/client/src/components/ObjectStore/ObjectStoreSelectButton.vue
+++ b/client/src/components/ObjectStore/ObjectStoreSelectButton.vue
@@ -3,7 +3,7 @@ import { BButton } from "bootstrap-vue";
 
 import { type ConcreteObjectStoreModel } from "@/api";
 
-import ObjectStoreBadges from "@/components/ObjectStore/ObjectStoreBadges.vue";
+import ObjectStoreBadges from "./ObjectStoreBadges.vue";
 import ProvidedQuotaSourceUsageBar from "@/components/User/DiskUsage/Quota/ProvidedQuotaSourceUsageBar.vue";
 
 interface ObjectStoreSelectButtonProps {
diff --git a/client/src/components/ObjectStore/ShowSelectedObjectStore.test.js b/client/src/components/ObjectStore/ShowSelectedObjectStore.test.js
index 34135b89ab2a..52a49e37a154 100644
--- a/client/src/components/ObjectStore/ShowSelectedObjectStore.test.js
+++ b/client/src/components/ObjectStore/ShowSelectedObjectStore.test.js
@@ -6,8 +6,8 @@ import { mockFetcher } from "@/api/schema/__mocks__";
 
 import ShowSelectedObjectStore from "./ShowSelectedObjectStore";
 
+import DescribeObjectStore from "./DescribeObjectStore.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import DescribeObjectStore from "@/components/ObjectStore/DescribeObjectStore.vue";
 
 jest.mock("@/api/schema");
 
diff --git a/client/src/components/ObjectStore/ShowSelectedObjectStore.vue b/client/src/components/ObjectStore/ShowSelectedObjectStore.vue
index 3b1c4cdfd087..b887783bb20d 100644
--- a/client/src/components/ObjectStore/ShowSelectedObjectStore.vue
+++ b/client/src/components/ObjectStore/ShowSelectedObjectStore.vue
@@ -6,8 +6,8 @@ import { errorMessageAsString } from "@/utils/simple-error";
 
 import type { ConcreteObjectStoreModel } from "./types";
 
+import DescribeObjectStore from "./DescribeObjectStore.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import DescribeObjectStore from "@/components/ObjectStore/DescribeObjectStore.vue";
 
 interface ShowSelectObjectStoreProps {
     forWhat: string;
diff --git a/client/src/components/Panels/Common/ToolSearch.vue b/client/src/components/Panels/Common/ToolSearch.vue
index 70b776fc7fc9..25d174172492 100644
--- a/client/src/components/Panels/Common/ToolSearch.vue
+++ b/client/src/components/Panels/Common/ToolSearch.vue
@@ -4,13 +4,12 @@ import { storeToRefs } from "pinia";
 import { computed, type ComputedRef, onMounted, onUnmounted, type PropType, watch } from "vue";
 import { useRouter } from "vue-router/composables";
 
+import { type ToolSearchKeys } from "@/components/Panels/utilities";
 import { type Tool, type ToolSection, useToolStore } from "@/stores/toolStore";
 import { useUserStore } from "@/stores/userStore";
 import Filtering, { contains, type ValidFilter } from "@/utils/filtering";
 import _l from "@/utils/localization";
 
-import { type ToolSearchKeys } from "../utilities";
-
 import DelayedInput from "@/components/Common/DelayedInput.vue";
 import FilterMenu from "@/components/Common/FilterMenu.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
diff --git a/client/src/components/Panels/InvocationsPanel.vue b/client/src/components/Panels/InvocationsPanel.vue
index cd329d1a2ae1..81535a02e3bc 100644
--- a/client/src/components/Panels/InvocationsPanel.vue
+++ b/client/src/components/Panels/InvocationsPanel.vue
@@ -4,8 +4,8 @@ import { storeToRefs } from "pinia";
 
 import { useUserStore } from "@/stores/userStore";
 
-import InvocationScrollList from "../Workflow/Invocation/InvocationScrollList.vue";
 import ActivityPanel from "./ActivityPanel.vue";
+import InvocationScrollList from "@/components/Workflow/Invocation/InvocationScrollList.vue";
 
 const { currentUser, toggledSideBar } = storeToRefs(useUserStore());
 </script>
diff --git a/client/src/components/Panels/Menus/PanelViewMenuItem.vue b/client/src/components/Panels/Menus/PanelViewMenuItem.vue
index 087f0d19f282..c7d019881be7 100644
--- a/client/src/components/Panels/Menus/PanelViewMenuItem.vue
+++ b/client/src/components/Panels/Menus/PanelViewMenuItem.vue
@@ -6,7 +6,7 @@
 </template>
 
 <script>
-import { types_to_icons } from "../utilities";
+import { types_to_icons } from "@/components/Panels/utilities";
 
 export default {
     props: {
diff --git a/client/src/components/Panels/MultiviewPanel.vue b/client/src/components/Panels/MultiviewPanel.vue
index a71a31fda746..0ac820429016 100644
--- a/client/src/components/Panels/MultiviewPanel.vue
+++ b/client/src/components/Panels/MultiviewPanel.vue
@@ -15,9 +15,9 @@ import { localize } from "@/utils/localization";
 import { withPrefix } from "@/utils/redirect";
 import { errorMessageAsString } from "@/utils/simple-error";
 
+import ActivityPanel from "./ActivityPanel.vue";
 import FilterMenu from "@/components/Common/FilterMenu.vue";
 import HistoryList from "@/components/History/HistoryScrollList.vue";
-import ActivityPanel from "@/components/Panels/ActivityPanel.vue";
 
 const route = useRoute();
 const router = useRouter();
diff --git a/client/src/components/Panels/NotificationsPanel.vue b/client/src/components/Panels/NotificationsPanel.vue
index 606e87459074..2a3673dd3e68 100644
--- a/client/src/components/Panels/NotificationsPanel.vue
+++ b/client/src/components/Panels/NotificationsPanel.vue
@@ -9,9 +9,9 @@ import { computed } from "vue";
 import { useConfirmDialog } from "@/composables/confirmDialog";
 import { useNotificationsStore } from "@/stores/notificationsStore";
 
+import ActivityPanel from "./ActivityPanel.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 import NotificationCard from "@/components/Notifications/NotificationCard.vue";
-import ActivityPanel from "@/components/Panels/ActivityPanel.vue";
 
 library.add(faCheckDouble);
 
diff --git a/client/src/components/Panels/SettingsPanel.vue b/client/src/components/Panels/SettingsPanel.vue
index a30b7329b705..386ec690b5eb 100644
--- a/client/src/components/Panels/SettingsPanel.vue
+++ b/client/src/components/Panels/SettingsPanel.vue
@@ -6,9 +6,9 @@ import { ref } from "vue";
 
 import { useActivityStore } from "@/stores/activityStore";
 
+import ActivityPanel from "./ActivityPanel.vue";
 import ActivitySettings from "@/components/ActivityBar/ActivitySettings.vue";
 import DelayedInput from "@/components/Common/DelayedInput.vue";
-import ActivityPanel from "@/components/Panels/ActivityPanel.vue";
 
 const activityStore = useActivityStore();
 
diff --git a/client/src/components/Panels/ToolPanel.vue b/client/src/components/Panels/ToolPanel.vue
index a478b08f7c7a..28dd7deee409 100644
--- a/client/src/components/Panels/ToolPanel.vue
+++ b/client/src/components/Panels/ToolPanel.vue
@@ -10,11 +10,11 @@ import localize from "@/utils/localization";
 
 import { types_to_icons } from "./utilities";
 
-import LoadingSpan from "../LoadingSpan.vue";
 import FavoritesButton from "./Buttons/FavoritesButton.vue";
 import PanelViewMenu from "./Menus/PanelViewMenu.vue";
 import ToolBox from "./ToolBox.vue";
 import Heading from "@/components/Common/Heading.vue";
+import LoadingSpan from "@/components/LoadingSpan.vue";
 
 library.add(faCaretDown);
 
diff --git a/client/src/components/Panels/VisualizationPanel.vue b/client/src/components/Panels/VisualizationPanel.vue
index d9fbf144aa2c..3b3c07c6d188 100644
--- a/client/src/components/Panels/VisualizationPanel.vue
+++ b/client/src/components/Panels/VisualizationPanel.vue
@@ -9,10 +9,10 @@ import { useHistoryStore } from "@/stores/historyStore";
 import { absPath } from "@/utils/redirect";
 import { urlData } from "@/utils/url";
 
+import ActivityPanel from "./ActivityPanel.vue";
 import DelayedInput from "@/components/Common/DelayedInput.vue";
 import DataDialog from "@/components/DataDialog/DataDialog.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import ActivityPanel from "@/components/Panels/ActivityPanel.vue";
 
 interface Plugin {
     description: string;
diff --git a/client/src/components/SelectionDialog/BasicSelectionDialog.vue b/client/src/components/SelectionDialog/BasicSelectionDialog.vue
index 75a5fcf50e94..69f96e446858 100644
--- a/client/src/components/SelectionDialog/BasicSelectionDialog.vue
+++ b/client/src/components/SelectionDialog/BasicSelectionDialog.vue
@@ -2,10 +2,11 @@
 import { computed, onMounted, type Ref, ref } from "vue";
 
 import { type ApiResponse } from "@/api/schema";
-import { type SelectionItem } from "@/components/SelectionDialog/selectionTypes";
 import { errorMessageAsString } from "@/utils/simple-error";
 
-import SelectionDialog from "@/components/SelectionDialog/SelectionDialog.vue";
+import { type SelectionItem } from "./selectionTypes";
+
+import SelectionDialog from "./SelectionDialog.vue";
 
 interface Props {
     detailsKey?: string;
diff --git a/client/src/components/SelectionDialog/DatasetCollectionDialog.vue b/client/src/components/SelectionDialog/DatasetCollectionDialog.vue
index a0e079c964a9..3b36c1411bd6 100644
--- a/client/src/components/SelectionDialog/DatasetCollectionDialog.vue
+++ b/client/src/components/SelectionDialog/DatasetCollectionDialog.vue
@@ -2,11 +2,12 @@
 import axios from "axios";
 import { onMounted, ref } from "vue";
 
-import { type SelectionItem } from "@/components/SelectionDialog/selectionTypes";
 import { withPrefix } from "@/utils/redirect";
 import { errorMessageAsString } from "@/utils/simple-error";
 
-import SelectionDialog from "@/components/SelectionDialog/SelectionDialog.vue";
+import { type SelectionItem } from "./selectionTypes";
+
+import SelectionDialog from "./SelectionDialog.vue";
 
 interface HistoryItem {
     id: string;
diff --git a/client/src/components/SelectionDialog/SelectionDialog.vue b/client/src/components/SelectionDialog/SelectionDialog.vue
index 7a9c08ebaa0d..51ddb22ff8e5 100644
--- a/client/src/components/SelectionDialog/SelectionDialog.vue
+++ b/client/src/components/SelectionDialog/SelectionDialog.vue
@@ -6,11 +6,9 @@ import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
 import { BAlert, BButton, BLink, BModal, BPagination, BSpinner, BTable } from "bootstrap-vue";
 import { computed, ref, watch } from "vue";
 
-import { type ItemsProvider, SELECTION_STATES } from "@/components/SelectionDialog/selectionTypes";
+import { type FieldEntry, type ItemsProvider, SELECTION_STATES, type SelectionItem } from "./selectionTypes";
 
-import { type FieldEntry, type SelectionItem } from "./selectionTypes";
-
-import DataDialogSearch from "@/components/SelectionDialog/DataDialogSearch.vue";
+import DataDialogSearch from "./DataDialogSearch.vue";
 import StatelessTags from "@/components/TagsMultiselect/StatelessTags.vue";
 
 library.add(faCaretLeft, faCheck, faCheckSquare, faFolder, faMinusSquare, faSpinner, faSquare, faTimes);
diff --git a/client/src/components/Sharing/UserSharing.vue b/client/src/components/Sharing/UserSharing.vue
index f85b5c223913..8729ad9f4393 100644
--- a/client/src/components/Sharing/UserSharing.vue
+++ b/client/src/components/Sharing/UserSharing.vue
@@ -22,7 +22,7 @@ import { assertArray } from "@/utils/assertions";
 
 import type { Item, ShareOption } from "./item";
 
-import Heading from "../Common/Heading.vue";
+import Heading from "@/components/Common/Heading.vue";
 
 const props = defineProps<{
     item: Item;
diff --git a/client/src/components/Tool/Buttons/ToolOptionsButton.vue b/client/src/components/Tool/Buttons/ToolOptionsButton.vue
index 5e93551698d2..2d8a9820033b 100644
--- a/client/src/components/Tool/Buttons/ToolOptionsButton.vue
+++ b/client/src/components/Tool/Buttons/ToolOptionsButton.vue
@@ -8,10 +8,9 @@ import { storeToRefs } from "pinia";
 import Webhooks from "utils/webhooks";
 import { computed, ref } from "vue";
 
+import { copyId, copyLink, downloadTool, openLink } from "@/components/Tool/utilities";
 import { useUserStore } from "@/stores/userStore";
 
-import { copyId, copyLink, downloadTool, openLink } from "../utilities";
-
 library.add(faCaretDown, faLink, faDownload, faExternalLinkAlt, faCopy);
 
 const { currentUser } = storeToRefs(useUserStore());
diff --git a/client/src/components/Tool/ToolForm.vue b/client/src/components/Tool/ToolForm.vue
index 0268d65bad8e..44f00a6e1169 100644
--- a/client/src/components/Tool/ToolForm.vue
+++ b/client/src/components/Tool/ToolForm.vue
@@ -123,11 +123,11 @@ import { useJobStore } from "stores/jobStore";
 import { refreshContentsWrapper } from "utils/data";
 
 import { canMutateHistory } from "@/api";
+import ToolRecommendation from "@/components/ToolRecommendation";
 import { useConfigStore } from "@/stores/configurationStore";
 import { useHistoryStore } from "@/stores/historyStore";
 import { useUserStore } from "@/stores/userStore";
 
-import ToolRecommendation from "../ToolRecommendation";
 import { getToolFormData, submitJob, updateToolFormData } from "./services";
 import ToolCard from "./ToolCard";
 import { allowCachedJobs } from "./utilities";
diff --git a/client/src/components/Tool/ToolSuccess.vue b/client/src/components/Tool/ToolSuccess.vue
index 8ac04d5c4c4d..4b801410fddd 100644
--- a/client/src/components/Tool/ToolSuccess.vue
+++ b/client/src/components/Tool/ToolSuccess.vue
@@ -6,11 +6,11 @@ import { useRouter } from "vue-router/composables";
 import { useConfig } from "@/composables/config";
 import { useJobStore } from "@/stores/jobStore";
 
-import LoadingSpan from "../LoadingSpan.vue";
-import ToolRecommendation from "../ToolRecommendation.vue";
 import ToolSuccessMessage from "./ToolSuccessMessage.vue";
 import Webhook from "@/components/Common/Webhook.vue";
+import LoadingSpan from "@/components/LoadingSpan.vue";
 import ToolEntryPoints from "@/components/ToolEntryPoints/ToolEntryPoints.vue";
+import ToolRecommendation from "@/components/ToolRecommendation.vue";
 
 const { config } = useConfig(true);
 const jobStore = useJobStore();
diff --git a/client/src/components/ToolsView/ToolsSchemaJson/ToolsJson.test.js b/client/src/components/ToolsView/ToolsSchemaJson/ToolsJson.test.js
index f009126de465..2c9431ef4f3a 100644
--- a/client/src/components/ToolsView/ToolsSchemaJson/ToolsJson.test.js
+++ b/client/src/components/ToolsView/ToolsSchemaJson/ToolsJson.test.js
@@ -5,8 +5,9 @@ import MockAdapter from "axios-mock-adapter";
 import flushPromises from "flush-promises";
 import { getLocalVue } from "tests/jest/helpers";
 
-import testToolsListResponse from "../testData/toolsList";
-import testToolsListInPanelResponse from "../testData/toolsListInPanel";
+import testToolsListResponse from "@/components/ToolsView/testData/toolsList";
+import testToolsListInPanelResponse from "@/components/ToolsView/testData/toolsListInPanel";
+
 import ToolsJson from "./ToolsJson";
 
 const localVue = getLocalVue();
diff --git a/client/src/components/Toolshed/InstalledList/Details.test.js b/client/src/components/Toolshed/InstalledList/Details.test.js
index ade6e7612593..0ceaadd24f76 100644
--- a/client/src/components/Toolshed/InstalledList/Details.test.js
+++ b/client/src/components/Toolshed/InstalledList/Details.test.js
@@ -1,7 +1,8 @@
 import { createLocalVue, shallowMount } from "@vue/test-utils";
 import { getAppRoot } from "onload/loadConfig";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
+
 import Details from "./Details";
 
 jest.mock("app");
diff --git a/client/src/components/Toolshed/InstalledList/Details.vue b/client/src/components/Toolshed/InstalledList/Details.vue
index 1dc166b64756..4c1c7c8b6c48 100644
--- a/client/src/components/Toolshed/InstalledList/Details.vue
+++ b/client/src/components/Toolshed/InstalledList/Details.vue
@@ -17,9 +17,9 @@
 import LoadingSpan from "components/LoadingSpan";
 import { getAppRoot } from "onload/loadConfig";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
 
-import RepositoryDetails from "../RepositoryDetails/Index.vue";
+import RepositoryDetails from "@/components/Toolshed/RepositoryDetails/Index.vue";
 
 export default {
     components: {
diff --git a/client/src/components/Toolshed/InstalledList/Index.test.js b/client/src/components/Toolshed/InstalledList/Index.test.js
index 6888cb6995b7..d6e5daf3b47a 100644
--- a/client/src/components/Toolshed/InstalledList/Index.test.js
+++ b/client/src/components/Toolshed/InstalledList/Index.test.js
@@ -2,7 +2,8 @@ import { mount } from "@vue/test-utils";
 import { getAppRoot } from "onload/loadConfig";
 import { getLocalVue } from "tests/jest/helpers";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
+
 import Index from "./Index";
 
 jest.mock("app");
diff --git a/client/src/components/Toolshed/InstalledList/Index.vue b/client/src/components/Toolshed/InstalledList/Index.vue
index 6e2568ba6414..f7e0b5ed214c 100644
--- a/client/src/components/Toolshed/InstalledList/Index.vue
+++ b/client/src/components/Toolshed/InstalledList/Index.vue
@@ -57,7 +57,8 @@ import LoadingSpan from "components/LoadingSpan";
 import { getAppRoot } from "onload/loadConfig";
 import Vue from "vue";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
+
 import RepositoryDetails from "./Details";
 import Monitor from "./Monitor";
 
diff --git a/client/src/components/Toolshed/InstalledList/Monitor.test.js b/client/src/components/Toolshed/InstalledList/Monitor.test.js
index f0d05b78be32..48aa32b8e458 100644
--- a/client/src/components/Toolshed/InstalledList/Monitor.test.js
+++ b/client/src/components/Toolshed/InstalledList/Monitor.test.js
@@ -2,7 +2,8 @@ import { mount } from "@vue/test-utils";
 import { getAppRoot } from "onload/loadConfig";
 import { getLocalVue } from "tests/jest/helpers";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
+
 import Monitor from "./Monitor";
 
 jest.mock("app");
diff --git a/client/src/components/Toolshed/InstalledList/Monitor.vue b/client/src/components/Toolshed/InstalledList/Monitor.vue
index 0a2792d5904e..1f58169e0f4f 100644
--- a/client/src/components/Toolshed/InstalledList/Monitor.vue
+++ b/client/src/components/Toolshed/InstalledList/Monitor.vue
@@ -32,8 +32,8 @@
 import BootstrapVue from "bootstrap-vue";
 import Vue from "vue";
 
-import InstallationActions from "../RepositoryDetails/InstallationActions";
-import { Services } from "../services";
+import InstallationActions from "@/components/Toolshed/RepositoryDetails/InstallationActions";
+import { Services } from "@/components/Toolshed/services";
 
 Vue.use(BootstrapVue);
 
diff --git a/client/src/components/Toolshed/RepositoryDetails/Index.test.js b/client/src/components/Toolshed/RepositoryDetails/Index.test.js
index ba48a8ae6901..ed53fae07d7d 100644
--- a/client/src/components/Toolshed/RepositoryDetails/Index.test.js
+++ b/client/src/components/Toolshed/RepositoryDetails/Index.test.js
@@ -6,8 +6,8 @@ import { createPinia } from "pinia";
 import { getLocalVue } from "tests/jest/helpers";
 
 import { mockFetcher } from "@/api/schema/__mocks__";
+import { Services } from "@/components/Toolshed/services";
 
-import { Services } from "../services";
 import Index from "./Index";
 
 jest.mock("app");
diff --git a/client/src/components/Toolshed/RepositoryDetails/Index.vue b/client/src/components/Toolshed/RepositoryDetails/Index.vue
index 7f99ae9d7ce1..a755bf386a69 100644
--- a/client/src/components/Toolshed/RepositoryDetails/Index.vue
+++ b/client/src/components/Toolshed/RepositoryDetails/Index.vue
@@ -65,10 +65,9 @@ import { mapActions, mapState } from "pinia";
 import { useToolStore } from "stores/toolStore";
 import Vue from "vue";
 
+import { Services } from "@/components/Toolshed/services";
 import { useConfig } from "@/composables/config";
 
-import { Services } from "../services";
-
 import InstallationActions from "./InstallationActions.vue";
 import InstallationSettings from "./InstallationSettings.vue";
 import RepositoryTools from "./RepositoryTools.vue";
diff --git a/client/src/components/Toolshed/SearchList/Categories.test.js b/client/src/components/Toolshed/SearchList/Categories.test.js
index 6a158c3eef0c..5f75f259a926 100644
--- a/client/src/components/Toolshed/SearchList/Categories.test.js
+++ b/client/src/components/Toolshed/SearchList/Categories.test.js
@@ -1,6 +1,7 @@
 import { createLocalVue, mount } from "@vue/test-utils";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
+
 import Categories from "./Categories";
 
 jest.mock("../services");
diff --git a/client/src/components/Toolshed/SearchList/Categories.vue b/client/src/components/Toolshed/SearchList/Categories.vue
index b200c8c7ce53..1848051bd77e 100644
--- a/client/src/components/Toolshed/SearchList/Categories.vue
+++ b/client/src/components/Toolshed/SearchList/Categories.vue
@@ -19,7 +19,7 @@ import BootstrapVue from "bootstrap-vue";
 import LoadingSpan from "components/LoadingSpan";
 import Vue from "vue";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
 
 Vue.use(BootstrapVue);
 
diff --git a/client/src/components/Toolshed/SearchList/Repositories.test.js b/client/src/components/Toolshed/SearchList/Repositories.test.js
index 6a2a2f0cbae7..4dcbbef33a87 100644
--- a/client/src/components/Toolshed/SearchList/Repositories.test.js
+++ b/client/src/components/Toolshed/SearchList/Repositories.test.js
@@ -1,6 +1,7 @@
 import { createLocalVue, mount } from "@vue/test-utils";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
+
 import Repositories from "./Repositories";
 
 jest.mock("app");
diff --git a/client/src/components/Toolshed/SearchList/Repositories.vue b/client/src/components/Toolshed/SearchList/Repositories.vue
index fec8c8192b55..bb3016c35830 100644
--- a/client/src/components/Toolshed/SearchList/Repositories.vue
+++ b/client/src/components/Toolshed/SearchList/Repositories.vue
@@ -20,9 +20,9 @@ import BootstrapVue from "bootstrap-vue";
 import LoadingSpan from "components/LoadingSpan";
 import Vue from "vue";
 
-import { Services } from "../services";
+import { Services } from "@/components/Toolshed/services";
 
-import RepositoryDetails from "../RepositoryDetails/Index.vue";
+import RepositoryDetails from "@/components/Toolshed/RepositoryDetails/Index.vue";
 
 Vue.use(BootstrapVue);
 
diff --git a/client/src/components/User/DiskUsage/DiskUsageSummary.vue b/client/src/components/User/DiskUsage/DiskUsageSummary.vue
index d82ebb4f501e..d200252ac93a 100644
--- a/client/src/components/User/DiskUsage/DiskUsageSummary.vue
+++ b/client/src/components/User/DiskUsage/DiskUsageSummary.vue
@@ -12,7 +12,7 @@ import { bytesToString } from "@/utils/utils";
 import { type QuotaUsage } from "./Quota/model";
 import { fetch } from "./Quota/services";
 
-import QuotaUsageSummary from "@/components/User/DiskUsage/Quota/QuotaUsageSummary.vue";
+import QuotaUsageSummary from "./Quota/QuotaUsageSummary.vue";
 
 const { config, isConfigLoaded } = useConfig(true);
 const userStore = useUserStore();
diff --git a/client/src/components/User/DiskUsage/Management/Cleanup/categories.ts b/client/src/components/User/DiskUsage/Management/Cleanup/categories.ts
index 823b74707b4e..63ff72e31d69 100644
--- a/client/src/components/User/DiskUsage/Management/Cleanup/categories.ts
+++ b/client/src/components/User/DiskUsage/Management/Cleanup/categories.ts
@@ -1,7 +1,5 @@
 import { ref } from "vue";
 
-import localize from "@/utils/localization";
-
 import {
     cleanupDatasets,
     cleanupHistories,
@@ -11,7 +9,9 @@ import {
     fetchDiscardedDatasetsSummary,
     fetchDiscardedHistories,
     fetchDiscardedHistoriesSummary,
-} from "../services";
+} from "@/components/User/DiskUsage/Management/services";
+import localize from "@/utils/localization";
+
 import { type CleanupCategory } from "./model";
 
 export function useCleanupCategories() {
diff --git a/client/src/components/User/UserPreferredObjectStore.test.js b/client/src/components/User/UserPreferredObjectStore.test.js
index a5c1ed74052f..f537dd8be5c6 100644
--- a/client/src/components/User/UserPreferredObjectStore.test.js
+++ b/client/src/components/User/UserPreferredObjectStore.test.js
@@ -4,10 +4,9 @@ import MockAdapter from "axios-mock-adapter";
 import flushPromises from "flush-promises";
 import { getLocalVue } from "tests/jest/helpers";
 
+import { setupSelectableMock } from "@/components/ObjectStore/mockServices";
 import { ROOT_COMPONENT } from "@/utils/navigation";
 
-import { setupSelectableMock } from "../ObjectStore/mockServices";
-
 import UserPreferredObjectStore from "./UserPreferredObjectStore.vue";
 
 setupSelectableMock();
diff --git a/client/src/components/Workflow/Editor/Actions/actions.test.ts b/client/src/components/Workflow/Editor/Actions/actions.test.ts
index 78290cde330b..d995772370ae 100644
--- a/client/src/components/Workflow/Editor/Actions/actions.test.ts
+++ b/client/src/components/Workflow/Editor/Actions/actions.test.ts
@@ -1,12 +1,12 @@
 import { createPinia, setActivePinia } from "pinia";
 
+import { fromSimple, type Workflow } from "@/components/Workflow/Editor/modules/model";
 import { LazyUndoRedoAction, type UndoRedoAction, useUndoRedoStore } from "@/stores/undoRedoStore";
 import { useConnectionStore } from "@/stores/workflowConnectionStore";
 import { useWorkflowCommentStore } from "@/stores/workflowEditorCommentStore";
 import { useWorkflowStateStore } from "@/stores/workflowEditorStateStore";
 import { useWorkflowStepStore } from "@/stores/workflowStepStore";
 
-import { fromSimple, type Workflow } from "../modules/model";
 import {
     AddCommentAction,
     ChangeColorAction,
diff --git a/client/src/components/Workflow/Editor/Actions/mockData.ts b/client/src/components/Workflow/Editor/Actions/mockData.ts
index 414b56f716f9..5b80857d015a 100644
--- a/client/src/components/Workflow/Editor/Actions/mockData.ts
+++ b/client/src/components/Workflow/Editor/Actions/mockData.ts
@@ -1,8 +1,7 @@
+import { type Workflow } from "@/components/Workflow/Editor/modules/model";
 import { type FreehandWorkflowComment, type WorkflowComment } from "@/stores/workflowEditorCommentStore";
 import { type Step } from "@/stores/workflowStepStore";
 
-import { type Workflow } from "../modules/model";
-
 export function mockToolStep(id: number): Step {
     return {
         id,
diff --git a/client/src/components/Workflow/Editor/Actions/workflowActions.ts b/client/src/components/Workflow/Editor/Actions/workflowActions.ts
index 4418e0a3c519..30cb99536427 100644
--- a/client/src/components/Workflow/Editor/Actions/workflowActions.ts
+++ b/client/src/components/Workflow/Editor/Actions/workflowActions.ts
@@ -1,3 +1,5 @@
+import { type defaultPosition } from "@/components/Workflow/Editor/composables/useDefaultStepPosition";
+import { fromSimple, type Workflow } from "@/components/Workflow/Editor/modules/model";
 import { LazyUndoRedoAction, UndoRedoAction, type UndoRedoStore } from "@/stores/undoRedoStore";
 import { useConnectionStore } from "@/stores/workflowConnectionStore";
 import {
@@ -9,8 +11,6 @@ import { useWorkflowStateStore, type WorkflowStateStore } from "@/stores/workflo
 import { type Step, useWorkflowStepStore, type WorkflowStepStore } from "@/stores/workflowStepStore";
 import { ensureDefined } from "@/utils/assertions";
 
-import { type defaultPosition } from "../composables/useDefaultStepPosition";
-import { fromSimple, type Workflow } from "../modules/model";
 import { cloneStepWithUniqueLabel, getLabelSet } from "./cloneStep";
 
 export class LazySetValueAction<T> extends LazyUndoRedoAction {
diff --git a/client/src/components/Workflow/Editor/Comments/FrameComment.vue b/client/src/components/Workflow/Editor/Comments/FrameComment.vue
index e6a324625b4b..8ea30f73da89 100644
--- a/client/src/components/Workflow/Editor/Comments/FrameComment.vue
+++ b/client/src/components/Workflow/Editor/Comments/FrameComment.vue
@@ -8,12 +8,12 @@ import { BButton, BButtonGroup } from "bootstrap-vue";
 import { sanitize } from "dompurify";
 import { computed, onMounted, reactive, ref, watch } from "vue";
 
+import { LazyMoveMultipleAction } from "@/components/Workflow/Editor/Actions/workflowActions";
 import { AxisAlignedBoundingBox, type Rectangle } from "@/components/Workflow/Editor/modules/geometry";
 import { useWorkflowStores } from "@/composables/workflowStores";
 import type { FrameWorkflowComment, WorkflowComment, WorkflowCommentColor } from "@/stores/workflowEditorCommentStore";
 import type { Step } from "@/stores/workflowStepStore";
 
-import { LazyMoveMultipleAction } from "../Actions/workflowActions";
 import { brighterColors, darkenedColors } from "./colors";
 import { useResizable } from "./useResizable";
 import { selectAllText } from "./utilities";
diff --git a/client/src/components/Workflow/Editor/Comments/FreehandComment.vue b/client/src/components/Workflow/Editor/Comments/FreehandComment.vue
index 63a9aae99aa1..0aa5a93597dc 100644
--- a/client/src/components/Workflow/Editor/Comments/FreehandComment.vue
+++ b/client/src/components/Workflow/Editor/Comments/FreehandComment.vue
@@ -2,10 +2,10 @@
 import { curveCatmullRom, curveLinear, line } from "d3";
 import { computed } from "vue";
 
+import { vecSubtract } from "@/components/Workflow/Editor/modules/geometry";
 import { useWorkflowStores } from "@/composables/workflowStores";
 import type { FreehandWorkflowComment } from "@/stores/workflowEditorCommentStore";
 
-import { vecSubtract } from "../modules/geometry";
 import { colors } from "./colors";
 
 const props = defineProps<{
diff --git a/client/src/components/Workflow/Editor/Comments/WorkflowComment.vue b/client/src/components/Workflow/Editor/Comments/WorkflowComment.vue
index 067238aceafa..5ac4960bb01e 100644
--- a/client/src/components/Workflow/Editor/Comments/WorkflowComment.vue
+++ b/client/src/components/Workflow/Editor/Comments/WorkflowComment.vue
@@ -2,9 +2,6 @@
 import { type UseElementBoundingReturn } from "@vueuse/core";
 import { computed } from "vue";
 
-import { useWorkflowStores } from "@/composables/workflowStores";
-import type { WorkflowComment, WorkflowCommentColor } from "@/stores/workflowEditorCommentStore";
-
 import {
     ChangeColorAction,
     DeleteCommentAction,
@@ -12,7 +9,9 @@ import {
     LazyChangePositionAction,
     LazyChangeSizeAction,
     ToggleCommentSelectedAction,
-} from "../Actions/commentActions";
+} from "@/components/Workflow/Editor/Actions/commentActions";
+import { useWorkflowStores } from "@/composables/workflowStores";
+import type { WorkflowComment, WorkflowCommentColor } from "@/stores/workflowEditorCommentStore";
 
 import FrameComment from "./FrameComment.vue";
 import FreehandComment from "./FreehandComment.vue";
diff --git a/client/src/components/Workflow/Editor/Comments/useResizable.ts b/client/src/components/Workflow/Editor/Comments/useResizable.ts
index 58dab7a963a1..88b583e7a94c 100644
--- a/client/src/components/Workflow/Editor/Comments/useResizable.ts
+++ b/client/src/components/Workflow/Editor/Comments/useResizable.ts
@@ -1,10 +1,9 @@
 import { useEventListener } from "@vueuse/core";
 import { type Ref, watch } from "vue";
 
+import { vecSnap } from "@/components/Workflow/Editor/modules/geometry";
 import { useWorkflowStores } from "@/composables/workflowStores";
 
-import { vecSnap } from "../modules/geometry";
-
 /**
  * Common functionality required for handling a user resizable element.
  * `resize: both` needs to be set on the elements style, this composable
diff --git a/client/src/components/Workflow/Editor/Forms/FormDefault.vue b/client/src/components/Workflow/Editor/Forms/FormDefault.vue
index 8ac56fd941da..2ef844cfc305 100644
--- a/client/src/components/Workflow/Editor/Forms/FormDefault.vue
+++ b/client/src/components/Workflow/Editor/Forms/FormDefault.vue
@@ -66,19 +66,18 @@ import { storeToRefs } from "pinia";
 import { computed, ref, toRef, watch } from "vue";
 
 import type { DatatypesMapperModel } from "@/components/Datatypes/model";
+import { useStepProps } from "@/components/Workflow/Editor/composables/useStepProps";
+import { useUniqueLabelError } from "@/components/Workflow/Editor/composables/useUniqueLabelError";
 import WorkflowIcons from "@/components/Workflow/icons";
 import { useWorkflowStores } from "@/composables/workflowStores";
 import { useRefreshFromStore } from "@/stores/refreshFromStore";
 import type { Step } from "@/stores/workflowStepStore";
 
-import { useStepProps } from "../composables/useStepProps";
-import { useUniqueLabelError } from "../composables/useUniqueLabelError";
-
 import FormConditional from "./FormConditional.vue";
+import FormOutputLabel from "./FormOutputLabel.vue";
 import FormCard from "@/components/Form/FormCard.vue";
 import FormDisplay from "@/components/Form/FormDisplay.vue";
 import FormElement from "@/components/Form/FormElement.vue";
-import FormOutputLabel from "@/components/Workflow/Editor/Forms/FormOutputLabel.vue";
 
 const props = defineProps<{
     step: Step;
diff --git a/client/src/components/Workflow/Editor/Forms/FormOutput.vue b/client/src/components/Workflow/Editor/Forms/FormOutput.vue
index a0e41c37eb40..6cd6ef954fa9 100644
--- a/client/src/components/Workflow/Editor/Forms/FormOutput.vue
+++ b/client/src/components/Workflow/Editor/Forms/FormOutput.vue
@@ -79,7 +79,8 @@
 <script>
 import FormCard from "@/components/Form/FormCard";
 import FormElement from "@/components/Form/FormElement";
-import FormOutputLabel from "@/components/Workflow/Editor/Forms/FormOutputLabel";
+
+import FormOutputLabel from "./FormOutputLabel";
 
 const actions = [
     "RenameDatasetAction__newname",
diff --git a/client/src/components/Workflow/Editor/Forms/FormSection.vue b/client/src/components/Workflow/Editor/Forms/FormSection.vue
index fad55abd8254..532a5ff7fd2c 100644
--- a/client/src/components/Workflow/Editor/Forms/FormSection.vue
+++ b/client/src/components/Workflow/Editor/Forms/FormSection.vue
@@ -29,7 +29,8 @@
 
 <script>
 import FormElement from "@/components/Form/FormElement";
-import FormOutput from "@/components/Workflow/Editor/Forms/FormOutput";
+
+import FormOutput from "./FormOutput";
 
 export default {
     components: {
diff --git a/client/src/components/Workflow/Editor/Forms/FormTool.vue b/client/src/components/Workflow/Editor/Forms/FormTool.vue
index 67b5ae455c60..2e9adce2c7c0 100644
--- a/client/src/components/Workflow/Editor/Forms/FormTool.vue
+++ b/client/src/components/Workflow/Editor/Forms/FormTool.vue
@@ -59,12 +59,11 @@ import { storeToRefs } from "pinia";
 import Utils from "utils/utils";
 import { ref, toRef, watch } from "vue";
 
+import { useStepProps } from "@/components/Workflow/Editor/composables/useStepProps";
+import { useUniqueLabelError } from "@/components/Workflow/Editor/composables/useUniqueLabelError";
 import { useWorkflowStores } from "@/composables/workflowStores";
 import { useRefreshFromStore } from "@/stores/refreshFromStore";
 
-import { useStepProps } from "../composables/useStepProps";
-import { useUniqueLabelError } from "../composables/useUniqueLabelError";
-
 import FormConditional from "./FormConditional.vue";
 import FormSection from "./FormSection.vue";
 import Heading from "@/components/Common/Heading.vue";
diff --git a/client/src/components/Workflow/Editor/Index.vue b/client/src/components/Workflow/Editor/Index.vue
index 71983b2421d0..b2c91ae3fcc0 100644
--- a/client/src/components/Workflow/Editor/Index.vue
+++ b/client/src/components/Workflow/Editor/Index.vue
@@ -186,7 +186,7 @@ import { Toast } from "composables/toast";
 import { storeToRefs } from "pinia";
 import Vue, { computed, nextTick, onUnmounted, ref, unref, watch } from "vue";
 
-import { getUntypedWorkflowParameters } from "@/components/Workflow/Editor/modules/parameters";
+import { Services } from "@/components/Workflow/services";
 import { ConfirmDialog } from "@/composables/confirmDialog";
 import { useDatatypesMapper } from "@/composables/datatypesMapper";
 import { useUid } from "@/composables/utils/uid";
@@ -197,16 +197,18 @@ import { useScopePointerStore } from "@/stores/scopePointerStore";
 import { LastQueue } from "@/utils/lastQueue";
 import { errorMessageAsString } from "@/utils/simple-error";
 
-import { Services } from "../services";
 import { InsertStepAction, useStepActions } from "./Actions/stepActions";
 import { CopyIntoWorkflowAction, SetValueActionHandler } from "./Actions/workflowActions";
 import { defaultPosition } from "./composables/useDefaultStepPosition";
 import { fromSimple } from "./modules/model";
+import { getUntypedWorkflowParameters } from "./modules/parameters";
 import { getModule, getVersions, loadWorkflow, saveWorkflow } from "./modules/services";
 import { getStateUpgradeMessages } from "./modules/utilities";
 import reportDefault from "./reportDefault";
 
 import WorkflowAttributes from "./Attributes.vue";
+import FormDefault from "./Forms/FormDefault.vue";
+import FormTool from "./Forms/FormTool.vue";
 import WorkflowLint from "./Lint.vue";
 import MessagesModal from "./MessagesModal.vue";
 import WorkflowOptions from "./Options.vue";
@@ -217,8 +219,6 @@ import WorkflowGraph from "./WorkflowGraph.vue";
 import MarkdownEditor from "@/components/Markdown/MarkdownEditor.vue";
 import FlexPanel from "@/components/Panels/FlexPanel.vue";
 import ToolPanel from "@/components/Panels/ToolPanel.vue";
-import FormDefault from "@/components/Workflow/Editor/Forms/FormDefault.vue";
-import FormTool from "@/components/Workflow/Editor/Forms/FormTool.vue";
 
 library.add(faArrowLeft, faArrowRight);
 
diff --git a/client/src/components/Workflow/Editor/Node.vue b/client/src/components/Workflow/Editor/Node.vue
index 4af194ad89a6..3e08073c300a 100644
--- a/client/src/components/Workflow/Editor/Node.vue
+++ b/client/src/components/Workflow/Editor/Node.vue
@@ -155,7 +155,6 @@ import Vue, { computed, reactive, ref } from "vue";
 
 import { getGalaxyInstance } from "@/app";
 import { DatatypesMapperModel } from "@/components/Datatypes/model";
-import { useNodePosition } from "@/components/Workflow/Editor/composables/useNodePosition";
 import WorkflowIcons from "@/components/Workflow/icons";
 import type { GraphStep } from "@/composables/useInvocationGraph";
 import { useWorkflowStores } from "@/composables/workflowStores";
@@ -163,14 +162,15 @@ import type { TerminalPosition, XYPosition } from "@/stores/workflowEditorStateS
 import type { Step } from "@/stores/workflowStepStore";
 
 import { ToggleStepSelectedAction } from "./Actions/stepActions";
+import { useNodePosition } from "./composables/useNodePosition";
 import type { OutputTerminals } from "./modules/terminals";
 
+import DraggableWrapper from "./DraggablePan.vue";
+import NodeInput from "./NodeInput.vue";
+import NodeInvocationText from "./NodeInvocationText.vue";
+import NodeOutput from "./NodeOutput.vue";
+import Recommendations from "./Recommendations.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import DraggableWrapper from "@/components/Workflow/Editor/DraggablePan.vue";
-import NodeInput from "@/components/Workflow/Editor/NodeInput.vue";
-import NodeInvocationText from "@/components/Workflow/Editor/NodeInvocationText.vue";
-import NodeOutput from "@/components/Workflow/Editor/NodeOutput.vue";
-import Recommendations from "@/components/Workflow/Editor/Recommendations.vue";
 
 Vue.use(BootstrapVue);
 
diff --git a/client/src/components/Workflow/Editor/NodeInput.vue b/client/src/components/Workflow/Editor/NodeInput.vue
index 19b45f24fe1b..592c25d6f606 100644
--- a/client/src/components/Workflow/Editor/NodeInput.vue
+++ b/client/src/components/Workflow/Editor/NodeInput.vue
@@ -18,18 +18,18 @@ import {
 } from "vue";
 
 import { DatatypesMapperModel } from "@/components/Datatypes/model";
-import {
-    ConnectionAcceptable,
-    type InputTerminals,
-    type OutputCollectionTerminal,
-    terminalFactory,
-} from "@/components/Workflow/Editor/modules/terminals";
 import { useWorkflowStores } from "@/composables/workflowStores";
 import { getConnectionId } from "@/stores/workflowConnectionStore";
 import type { InputTerminalSource } from "@/stores/workflowStepStore";
 
 import { useRelativePosition } from "./composables/relativePosition";
 import { useTerminal } from "./composables/useTerminal";
+import {
+    ConnectionAcceptable,
+    type InputTerminals,
+    type OutputCollectionTerminal,
+    terminalFactory,
+} from "./modules/terminals";
 
 library.add(faChevronCircleRight, faMinusSquare);
 
diff --git a/client/src/components/Workflow/Editor/NodeOutput.vue b/client/src/components/Workflow/Editor/NodeOutput.vue
index 7f0e5c68ec06..a22c72f94baf 100644
--- a/client/src/components/Workflow/Editor/NodeOutput.vue
+++ b/client/src/components/Workflow/Editor/NodeOutput.vue
@@ -40,9 +40,9 @@ import { useTerminal } from "./composables/useTerminal";
 import { type CollectionTypeDescriptor, NULL_COLLECTION_TYPE_DESCRIPTION } from "./modules/collectionTypeDescription";
 import type { OutputTerminals } from "./modules/terminals";
 
+import ConnectionMenu from "./ConnectionMenu.vue";
 import DraggableWrapper from "./DraggablePan.vue";
 import StatelessTags from "@/components/TagsMultiselect/StatelessTags.vue";
-import ConnectionMenu from "@/components/Workflow/Editor/ConnectionMenu.vue";
 
 type ElementBounding = UnwrapRef<UseElementBoundingReturn>;
 
diff --git a/client/src/components/Workflow/Editor/Tools/useSelectionOperations.ts b/client/src/components/Workflow/Editor/Tools/useSelectionOperations.ts
index 5ba0b4e1e312..a9da296f472a 100644
--- a/client/src/components/Workflow/Editor/Tools/useSelectionOperations.ts
+++ b/client/src/components/Workflow/Editor/Tools/useSelectionOperations.ts
@@ -1,10 +1,9 @@
 import { computed, inject, type Ref, unref } from "vue";
 
+import { DeleteSelectionAction, DuplicateSelectionAction } from "@/components/Workflow/Editor/Actions/workflowActions";
+import { useMultiSelect } from "@/components/Workflow/Editor/composables/multiSelect";
 import { useWorkflowStores } from "@/composables/workflowStores";
 
-import { DeleteSelectionAction, DuplicateSelectionAction } from "../Actions/workflowActions";
-import { useMultiSelect } from "../composables/multiSelect";
-
 export function useSelectionOperations() {
     const { undoRedoStore } = useWorkflowStores();
     const { anySelected, selectedCommentsCount, selectedStepsCount, deselectAll } = useMultiSelect();
diff --git a/client/src/components/Workflow/Editor/Tools/useToolLogic.ts b/client/src/components/Workflow/Editor/Tools/useToolLogic.ts
index c9215b530d00..0f6e50ca4c3b 100644
--- a/client/src/components/Workflow/Editor/Tools/useToolLogic.ts
+++ b/client/src/components/Workflow/Editor/Tools/useToolLogic.ts
@@ -1,13 +1,8 @@
 import simplify from "simplify-js";
 import { ref, watch } from "vue";
 
-import { useWorkflowStores } from "@/composables/workflowStores";
-import { type BaseWorkflowComment } from "@/stores/workflowEditorCommentStore";
-import { assertDefined } from "@/utils/assertions";
-import { match } from "@/utils/utils";
-
-import { AddCommentAction } from "../Actions/commentActions";
-import { AddToSelectionAction, RemoveFromSelectionAction } from "../Actions/workflowActions";
+import { AddCommentAction } from "@/components/Workflow/Editor/Actions/commentActions";
+import { AddToSelectionAction, RemoveFromSelectionAction } from "@/components/Workflow/Editor/Actions/workflowActions";
 import {
     AxisAlignedBoundingBox,
     vecMax,
@@ -16,7 +11,11 @@ import {
     vecSnap,
     vecSubtract,
     type Vector,
-} from "../modules/geometry";
+} from "@/components/Workflow/Editor/modules/geometry";
+import { useWorkflowStores } from "@/composables/workflowStores";
+import { type BaseWorkflowComment } from "@/stores/workflowEditorCommentStore";
+import { assertDefined } from "@/utils/assertions";
+import { match } from "@/utils/utils";
 
 export function useToolLogic() {
     const comment = ref<BaseWorkflowComment | null>(null);
diff --git a/client/src/components/Workflow/Editor/WorkflowGraph.vue b/client/src/components/Workflow/Editor/WorkflowGraph.vue
index 917e3cb55ad4..ec2d009dbe80 100644
--- a/client/src/components/Workflow/Editor/WorkflowGraph.vue
+++ b/client/src/components/Workflow/Editor/WorkflowGraph.vue
@@ -84,13 +84,13 @@ import { maxZoom, minZoom } from "./modules/zoomLevels";
 
 import AdaptiveGrid from "./AdaptiveGrid.vue";
 import WorkflowComment from "./Comments/WorkflowComment.vue";
+import WorkflowNode from "./Node.vue";
 import BoxSelectPreview from "./Tools/BoxSelectPreview.vue";
 import InputCatcher from "./Tools/InputCatcher.vue";
 import ToolBar from "./Tools/ToolBar.vue";
-import WorkflowNode from "@/components/Workflow/Editor/Node.vue";
-import WorkflowEdges from "@/components/Workflow/Editor/WorkflowEdges.vue";
-import WorkflowMinimap from "@/components/Workflow/Editor/WorkflowMinimap.vue";
-import ZoomControl from "@/components/Workflow/Editor/ZoomControl.vue";
+import WorkflowEdges from "./WorkflowEdges.vue";
+import WorkflowMinimap from "./WorkflowMinimap.vue";
+import ZoomControl from "./ZoomControl.vue";
 
 const emit = defineEmits(["transform", "graph-offset", "onRemove", "scrollTo"]);
 const props = defineProps({
diff --git a/client/src/components/Workflow/Editor/composables/multiSelect.ts b/client/src/components/Workflow/Editor/composables/multiSelect.ts
index 81a64152fea8..cbc057d1b52c 100644
--- a/client/src/components/Workflow/Editor/composables/multiSelect.ts
+++ b/client/src/components/Workflow/Editor/composables/multiSelect.ts
@@ -1,11 +1,10 @@
 import { computed, type Ref } from "vue";
 
+import { ClearSelectionAction } from "@/components/Workflow/Editor/Actions/workflowActions";
 import { useWorkflowStores } from "@/composables/workflowStores";
 import { type Step } from "@/stores/workflowStepStore";
 import { ensureDefined } from "@/utils/assertions";
 
-import { ClearSelectionAction } from "../Actions/workflowActions";
-
 export function useMultiSelect(workflowId?: Ref<string> | string) {
     const { commentStore, stateStore, stepStore, undoRedoStore } = useWorkflowStores(workflowId);
 
diff --git a/client/src/components/Workflow/Editor/composables/viewportBoundingBox.ts b/client/src/components/Workflow/Editor/composables/viewportBoundingBox.ts
index 79aa9f265210..2cb346021cf3 100644
--- a/client/src/components/Workflow/Editor/composables/viewportBoundingBox.ts
+++ b/client/src/components/Workflow/Editor/composables/viewportBoundingBox.ts
@@ -1,10 +1,9 @@
 import { type UseElementBoundingReturn } from "@vueuse/core";
 import { type Ref, ref, unref, watch } from "vue";
 
+import { AxisAlignedBoundingBox } from "@/components/Workflow/Editor/modules/geometry";
 import { useAnimationFrameThrottle } from "@/composables/throttle";
 
-import { AxisAlignedBoundingBox } from "../modules/geometry";
-
 /**
  * Constructs a bounding box following the editors pan and zoom in
  * animation frame intervals.
diff --git a/client/src/components/Workflow/Editor/modules/linting.ts b/client/src/components/Workflow/Editor/modules/linting.ts
index 21d02cafff88..38e6545b0c3a 100644
--- a/client/src/components/Workflow/Editor/modules/linting.ts
+++ b/client/src/components/Workflow/Editor/modules/linting.ts
@@ -1,9 +1,9 @@
 import { type DatatypesMapperModel } from "@/components/Datatypes/model";
-import { type UntypedParameters } from "@/components/Workflow/Editor/modules/parameters";
 import { type useWorkflowStores } from "@/composables/workflowStores";
 import { type Step, type Steps } from "@/stores/workflowStepStore";
 import { assertDefined } from "@/utils/assertions";
 
+import { type UntypedParameters } from "./parameters";
 import { terminalFactory } from "./terminals";
 
 interface LintState {
diff --git a/client/src/components/Workflow/Editor/modules/terminals.test.ts b/client/src/components/Workflow/Editor/modules/terminals.test.ts
index 7b240e66c4c1..c1d01acae418 100644
--- a/client/src/components/Workflow/Editor/modules/terminals.test.ts
+++ b/client/src/components/Workflow/Editor/modules/terminals.test.ts
@@ -1,6 +1,7 @@
 import { createPinia, setActivePinia } from "pinia";
 
 import { testDatatypesMapper } from "@/components/Datatypes/test_fixtures";
+import { advancedSteps, simpleSteps } from "@/components/Workflow/Editor/test_fixtures";
 import { useUndoRedoStore } from "@/stores/undoRedoStore";
 import { useConnectionStore } from "@/stores/workflowConnectionStore";
 import { useWorkflowCommentStore } from "@/stores/workflowEditorCommentStore";
@@ -14,7 +15,6 @@ import {
     useWorkflowStepStore,
 } from "@/stores/workflowStepStore";
 
-import { advancedSteps, simpleSteps } from "../test_fixtures";
 import {
     ANY_COLLECTION_TYPE_DESCRIPTION,
     CollectionTypeDescription,
diff --git a/client/src/components/Workflow/HistoryInvocations.vue b/client/src/components/Workflow/HistoryInvocations.vue
index d6099bdeeeb6..c23ac6943da3 100644
--- a/client/src/components/Workflow/HistoryInvocations.vue
+++ b/client/src/components/Workflow/HistoryInvocations.vue
@@ -3,7 +3,7 @@ import { computed } from "vue";
 
 import { useHistoryStore } from "@/stores/historyStore";
 
-import GridInvocation from "../Grid/GridInvocation.vue";
+import GridInvocation from "@/components/Grid/GridInvocation.vue";
 
 interface HistoryInvocationProps {
     historyId: string;
diff --git a/client/src/components/Workflow/Import/TrsImport.vue b/client/src/components/Workflow/Import/TrsImport.vue
index 90f7948dbf8f..1a71e9842fc0 100644
--- a/client/src/components/Workflow/Import/TrsImport.vue
+++ b/client/src/components/Workflow/Import/TrsImport.vue
@@ -11,10 +11,10 @@ import { useUserStore } from "@/stores/userStore";
 
 import type { TrsSelection, TrsTool as TrsToolInterface } from "./types";
 
+import TrsServerSelection from "./TrsServerSelection.vue";
+import TrsTool from "./TrsTool.vue";
+import TrsUrlImport from "./TrsUrlImport.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import TrsServerSelection from "@/components/Workflow/Import/TrsServerSelection.vue";
-import TrsTool from "@/components/Workflow/Import/TrsTool.vue";
-import TrsUrlImport from "@/components/Workflow/Import/TrsUrlImport.vue";
 
 interface Props {
     isRun?: boolean;
diff --git a/client/src/components/Workflow/Import/TrsSearch.vue b/client/src/components/Workflow/Import/TrsSearch.vue
index 49fc6b0074e8..9cfcbfac620c 100644
--- a/client/src/components/Workflow/Import/TrsSearch.vue
+++ b/client/src/components/Workflow/Import/TrsSearch.vue
@@ -13,9 +13,9 @@ import { withPrefix } from "@/utils/redirect";
 
 import type { TrsSelection } from "./types";
 
+import TrsServerSelection from "./TrsServerSelection.vue";
+import TrsTool from "./TrsTool.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import TrsServerSelection from "@/components/Workflow/Import/TrsServerSelection.vue";
-import TrsTool from "@/components/Workflow/Import/TrsTool.vue";
 
 library.add(faQuestion, faTimes);
 
diff --git a/client/src/components/Workflow/Invocation/Export/InvocationExportPluginCard.vue b/client/src/components/Workflow/Invocation/Export/InvocationExportPluginCard.vue
index 2f2009350444..1cf1ec398e12 100644
--- a/client/src/components/Workflow/Invocation/Export/InvocationExportPluginCard.vue
+++ b/client/src/components/Workflow/Invocation/Export/InvocationExportPluginCard.vue
@@ -14,9 +14,9 @@ import { Toast } from "@/composables/toast";
 import { type InvocationExportPlugin } from "./model";
 
 import ActionButton from "./ActionButton.vue";
+import ExportButton from "./ExportButton.vue";
+import ExportToRemoteModal from "./ExportToRemoteModal.vue";
 import PersistentTaskProgressMonitorAlert from "@/components/Common/PersistentTaskProgressMonitorAlert.vue";
-import ExportButton from "@/components/Workflow/Invocation/Export/ExportButton.vue";
-import ExportToRemoteModal from "@/components/Workflow/Invocation/Export/ExportToRemoteModal.vue";
 
 library.add(faCloudUploadAlt, faDownload);
 
diff --git a/client/src/components/Workflow/Invocation/Export/Plugins/BioComputeObject/BioComputeObjectExportPlugin.ts b/client/src/components/Workflow/Invocation/Export/Plugins/BioComputeObject/BioComputeObjectExportPlugin.ts
index d95291d09920..805b3e601593 100644
--- a/client/src/components/Workflow/Invocation/Export/Plugins/BioComputeObject/BioComputeObjectExportPlugin.ts
+++ b/client/src/components/Workflow/Invocation/Export/Plugins/BioComputeObject/BioComputeObjectExportPlugin.ts
@@ -1,7 +1,7 @@
 import { library } from "@fortawesome/fontawesome-svg-core";
 import { faDatabase } from "@fortawesome/free-solid-svg-icons";
 
-import { type InvocationExportPlugin } from "../../model";
+import { type InvocationExportPlugin } from "@/components/Workflow/Invocation/Export/model";
 
 import SendForm from "./SendForm.vue";
 
diff --git a/client/src/components/Workflow/Invocation/Export/Plugins/DefaultFileExportPlugin.ts b/client/src/components/Workflow/Invocation/Export/Plugins/DefaultFileExportPlugin.ts
index a0fc9fd58598..667999b2c0b6 100644
--- a/client/src/components/Workflow/Invocation/Export/Plugins/DefaultFileExportPlugin.ts
+++ b/client/src/components/Workflow/Invocation/Export/Plugins/DefaultFileExportPlugin.ts
@@ -1,4 +1,4 @@
-import { type InvocationExportPlugin } from "../model";
+import { type InvocationExportPlugin } from "@/components/Workflow/Invocation/Export/model";
 
 export const DEFAULT_FILE_EXPORT_PLUGIN: InvocationExportPlugin = {
     id: "default-file",
diff --git a/client/src/components/Workflow/Invocation/Export/Plugins/ROCrateExportPlugin.ts b/client/src/components/Workflow/Invocation/Export/Plugins/ROCrateExportPlugin.ts
index d71e52624048..8c9896844ce5 100644
--- a/client/src/components/Workflow/Invocation/Export/Plugins/ROCrateExportPlugin.ts
+++ b/client/src/components/Workflow/Invocation/Export/Plugins/ROCrateExportPlugin.ts
@@ -1,4 +1,4 @@
-import { type InvocationExportPlugin } from "../model";
+import { type InvocationExportPlugin } from "@/components/Workflow/Invocation/Export/model";
 
 export const RO_CRATE_EXPORT_PLUGIN: InvocationExportPlugin = {
     id: "ro-crate",
diff --git a/client/src/components/Workflow/List/WorkflowCard.vue b/client/src/components/Workflow/List/WorkflowCard.vue
index 076ec2c271e6..0ef015055e32 100644
--- a/client/src/components/Workflow/List/WorkflowCard.vue
+++ b/client/src/components/Workflow/List/WorkflowCard.vue
@@ -10,13 +10,13 @@ import { copyWorkflow, updateWorkflow } from "@/components/Workflow/workflows.se
 import { Toast } from "@/composables/toast";
 import { useUserStore } from "@/stores/userStore";
 
+import WorkflowActions from "./WorkflowActions.vue";
+import WorkflowActionsExtend from "./WorkflowActionsExtend.vue";
+import WorkflowIndicators from "./WorkflowIndicators.vue";
+import WorkflowRename from "./WorkflowRename.vue";
 import AsyncButton from "@/components/Common/AsyncButton.vue";
 import TextSummary from "@/components/Common/TextSummary.vue";
 import StatelessTags from "@/components/TagsMultiselect/StatelessTags.vue";
-import WorkflowActions from "@/components/Workflow/List/WorkflowActions.vue";
-import WorkflowActionsExtend from "@/components/Workflow/List/WorkflowActionsExtend.vue";
-import WorkflowIndicators from "@/components/Workflow/List/WorkflowIndicators.vue";
-import WorkflowRename from "@/components/Workflow/List/WorkflowRename.vue";
 import WorkflowPublished from "@/components/Workflow/Published/WorkflowPublished.vue";
 import WorkflowInvocationsCount from "@/components/Workflow/WorkflowInvocationsCount.vue";
 import WorkflowRunButton from "@/components/Workflow/WorkflowRunButton.vue";
diff --git a/client/src/components/Workflow/List/WorkflowList.test.ts b/client/src/components/Workflow/List/WorkflowList.test.ts
index b4b71d02f185..f0069e1484ee 100644
--- a/client/src/components/Workflow/List/WorkflowList.test.ts
+++ b/client/src/components/Workflow/List/WorkflowList.test.ts
@@ -5,10 +5,9 @@ import flushPromises from "flush-promises";
 import { setActivePinia } from "pinia";
 
 import { mockFetcher } from "@/api/schema/__mocks__";
+import { generateRandomWorkflowList } from "@/components/Workflow/testUtils";
 import { useUserStore } from "@/stores/userStore";
 
-import { generateRandomWorkflowList } from "../testUtils";
-
 import WorkflowList from "./WorkflowList.vue";
 
 jest.mock("@/api/schema");
diff --git a/client/src/components/Workflow/List/WorkflowList.vue b/client/src/components/Workflow/List/WorkflowList.vue
index b730a12f002c..50b5162ee0c8 100644
--- a/client/src/components/Workflow/List/WorkflowList.vue
+++ b/client/src/components/Workflow/List/WorkflowList.vue
@@ -7,18 +7,19 @@ import { filter } from "underscore";
 import { computed, onMounted, ref, watch } from "vue";
 import { useRouter } from "vue-router/composables";
 
-import { helpHtml, WorkflowFilters } from "@/components/Workflow/List/WorkflowFilters";
 import { loadWorkflows } from "@/components/Workflow/workflows.services";
 import { Toast } from "@/composables/toast";
 import { useUserStore } from "@/stores/userStore";
 
+import { helpHtml, WorkflowFilters } from "./WorkflowFilters";
+
+import WorkflowCard from "./WorkflowCard.vue";
+import WorkflowListActions from "./WorkflowListActions.vue";
 import FilterMenu from "@/components/Common/FilterMenu.vue";
 import Heading from "@/components/Common/Heading.vue";
 import ListHeader from "@/components/Common/ListHeader.vue";
 import LoginRequired from "@/components/Common/LoginRequired.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import WorkflowCard from "@/components/Workflow/List/WorkflowCard.vue";
-import WorkflowListActions from "@/components/Workflow/List/WorkflowListActions.vue";
 
 library.add(faStar, faTrash);
 
diff --git a/client/src/components/Workflow/Published/WorkflowPublished.vue b/client/src/components/Workflow/Published/WorkflowPublished.vue
index d2c14b7d18b3..8c3064aabf2b 100644
--- a/client/src/components/Workflow/Published/WorkflowPublished.vue
+++ b/client/src/components/Workflow/Published/WorkflowPublished.vue
@@ -15,10 +15,10 @@ import type { Workflow } from "@/stores/workflowStore";
 import { assertDefined } from "@/utils/assertions";
 import { withPrefix } from "@/utils/redirect";
 
+import WorkflowInformation from "./WorkflowInformation.vue";
 import ActivityBar from "@/components/ActivityBar/ActivityBar.vue";
 import Heading from "@/components/Common/Heading.vue";
 import WorkflowGraph from "@/components/Workflow/Editor/WorkflowGraph.vue";
-import WorkflowInformation from "@/components/Workflow/Published/WorkflowInformation.vue";
 
 library.add(faBuilding, faDownload, faEdit, faPlay, faSpinner, faUser);
 
diff --git a/client/src/components/Workflow/Run/WorkflowRun.vue b/client/src/components/Workflow/Run/WorkflowRun.vue
index fbf47ec93a9d..89bf5e166097 100644
--- a/client/src/components/Workflow/Run/WorkflowRun.vue
+++ b/client/src/components/Workflow/Run/WorkflowRun.vue
@@ -15,10 +15,10 @@ import { errorMessageAsString } from "@/utils/simple-error";
 import { WorkflowRunModel } from "./model";
 import { getRunData } from "./services";
 
+import WorkflowRunForm from "./WorkflowRunForm.vue";
+import WorkflowRunFormSimple from "./WorkflowRunFormSimple.vue";
+import WorkflowRunSuccess from "./WorkflowRunSuccess.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
-import WorkflowRunForm from "@/components/Workflow/Run/WorkflowRunForm.vue";
-import WorkflowRunFormSimple from "@/components/Workflow/Run/WorkflowRunFormSimple.vue";
-import WorkflowRunSuccess from "@/components/Workflow/Run/WorkflowRunSuccess.vue";
 
 const historyStore = useHistoryStore();
 const historyItemsStore = useHistoryItemsStore();
diff --git a/client/src/components/Workflow/StoredWorkflowInvocations.vue b/client/src/components/Workflow/StoredWorkflowInvocations.vue
index 6d8bab09616c..d18291bf23ea 100644
--- a/client/src/components/Workflow/StoredWorkflowInvocations.vue
+++ b/client/src/components/Workflow/StoredWorkflowInvocations.vue
@@ -4,8 +4,8 @@ import { onMounted, ref } from "vue";
 
 import { type StoredWorkflowDetailed, workflowFetcher } from "@/api/workflows";
 
-import GridInvocation from "../Grid/GridInvocation.vue";
-import LoadingSpan from "../LoadingSpan.vue";
+import GridInvocation from "@/components/Grid/GridInvocation.vue";
+import LoadingSpan from "@/components/LoadingSpan.vue";
 
 interface Props {
     storedWorkflowId: string;
diff --git a/client/src/components/Workflow/WorkflowCreate.vue b/client/src/components/Workflow/WorkflowCreate.vue
index f207e9617a49..e3c685562d81 100644
--- a/client/src/components/Workflow/WorkflowCreate.vue
+++ b/client/src/components/Workflow/WorkflowCreate.vue
@@ -6,9 +6,10 @@ import { BFormInput } from "bootstrap-vue";
 import { ref } from "vue";
 import { useRouter } from "vue-router/composables";
 
-import { createWorkflow } from "@/components/Workflow/workflows.services";
 import { Toast } from "@/composables/toast";
 
+import { createWorkflow } from "./workflows.services";
+
 import AsyncButton from "@/components/Common/AsyncButton.vue";
 import Heading from "@/components/Common/Heading.vue";
 
diff --git a/client/src/components/Workflow/WorkflowImport.vue b/client/src/components/Workflow/WorkflowImport.vue
index b291ef8325b2..5fabf3196fbe 100644
--- a/client/src/components/Workflow/WorkflowImport.vue
+++ b/client/src/components/Workflow/WorkflowImport.vue
@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import { BTab, BTabs } from "bootstrap-vue";
 
-import FromFileOrUrl from "@/components/Workflow/Import/FromFileOrUrl.vue";
-import TrsImport from "@/components/Workflow/Import/TrsImport.vue";
-import TrsSearch from "@/components/Workflow/Import/TrsSearch.vue";
+import FromFileOrUrl from "./Import/FromFileOrUrl.vue";
+import TrsImport from "./Import/TrsImport.vue";
+import TrsSearch from "./Import/TrsSearch.vue";
 </script>
 
 <template>
diff --git a/client/src/components/WorkflowInvocationState/InvocationMessage.vue b/client/src/components/WorkflowInvocationState/InvocationMessage.vue
index 7c1561576f39..e7be15a3d517 100644
--- a/client/src/components/WorkflowInvocationState/InvocationMessage.vue
+++ b/client/src/components/WorkflowInvocationState/InvocationMessage.vue
@@ -5,9 +5,9 @@ import { useWorkflowInstance } from "@/composables/useWorkflowInstance";
 
 import type { InvocationMessageResponseModel } from "./invocationMessageModel";
 
+import WorkflowInvocationStep from "./WorkflowInvocationStep.vue";
 import GenericHistoryItem from "@/components/History/Content/GenericItem.vue";
 import JobInformation from "@/components/JobInformation/JobInformation.vue";
-import WorkflowInvocationStep from "@/components/WorkflowInvocationState/WorkflowInvocationStep.vue";
 
 type ReasonToLevel = {
     history_deleted: "cancel";
diff --git a/client/src/components/WorkflowInvocationState/WorkflowInvocationOverview.test.js b/client/src/components/WorkflowInvocationState/WorkflowInvocationOverview.test.js
index f4e069fb3cc7..ec25c28c18f9 100644
--- a/client/src/components/WorkflowInvocationState/WorkflowInvocationOverview.test.js
+++ b/client/src/components/WorkflowInvocationState/WorkflowInvocationOverview.test.js
@@ -2,7 +2,8 @@ import { createTestingPinia } from "@pinia/testing";
 import { shallowMount } from "@vue/test-utils";
 import { getLocalVue } from "tests/jest/helpers";
 
-import invocationData from "../Workflow/test/json/invocation.json";
+import invocationData from "@/components/Workflow/test/json/invocation.json";
+
 import WorkflowInvocationOverview from "./WorkflowInvocationOverview";
 
 const localVue = getLocalVue();
diff --git a/client/src/components/WorkflowInvocationState/WorkflowInvocationOverview.vue b/client/src/components/WorkflowInvocationState/WorkflowInvocationOverview.vue
index e5f192867512..b786b53d4761 100644
--- a/client/src/components/WorkflowInvocationState/WorkflowInvocationOverview.vue
+++ b/client/src/components/WorkflowInvocationState/WorkflowInvocationOverview.vue
@@ -15,12 +15,12 @@ import {
     runningCount as jobStatesSummaryRunningCount,
 } from "./util";
 
-import ExternalLink from "../ExternalLink.vue";
-import HelpText from "../Help/HelpText.vue";
-import InvocationGraph from "../Workflow/Invocation/Graph/InvocationGraph.vue";
+import InvocationMessage from "./InvocationMessage.vue";
+import ExternalLink from "@/components/ExternalLink.vue";
+import HelpText from "@/components/Help/HelpText.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
 import ProgressBar from "@/components/ProgressBar.vue";
-import InvocationMessage from "@/components/WorkflowInvocationState/InvocationMessage.vue";
+import InvocationGraph from "@/components/Workflow/Invocation/Graph/InvocationGraph.vue";
 
 function getUrl(path: string): string {
     return getRootFromIndexLink() + path;
diff --git a/client/src/components/WorkflowInvocationState/WorkflowInvocationState.test.ts b/client/src/components/WorkflowInvocationState/WorkflowInvocationState.test.ts
index 3b1a1b4cb6ea..c0b654c30a8c 100644
--- a/client/src/components/WorkflowInvocationState/WorkflowInvocationState.test.ts
+++ b/client/src/components/WorkflowInvocationState/WorkflowInvocationState.test.ts
@@ -4,7 +4,7 @@ import flushPromises from "flush-promises";
 import { PiniaVuePlugin, setActivePinia } from "pinia";
 import { getLocalVue } from "tests/jest/helpers";
 
-import invocationData from "../Workflow/test/json/invocation.json";
+import invocationData from "@/components/Workflow/test/json/invocation.json";
 
 import WorkflowInvocationState from "./WorkflowInvocationState.vue";
 
diff --git a/client/src/components/WorkflowInvocationState/WorkflowInvocationState.vue b/client/src/components/WorkflowInvocationState/WorkflowInvocationState.vue
index 603c51236c34..31fa9d30fae5 100644
--- a/client/src/components/WorkflowInvocationState/WorkflowInvocationState.vue
+++ b/client/src/components/WorkflowInvocationState/WorkflowInvocationState.vue
@@ -15,13 +15,13 @@ import localize from "@/utils/localization";
 import { cancelWorkflowScheduling } from "./services";
 import { isTerminal, jobCount, runningCount } from "./util";
 
-import Heading from "../Common/Heading.vue";
-import SwitchToHistoryLink from "../History/SwitchToHistoryLink.vue";
-import UtcDate from "../UtcDate.vue";
 import WorkflowInvocationExportOptions from "./WorkflowInvocationExportOptions.vue";
 import WorkflowInvocationInputOutputTabs from "./WorkflowInvocationInputOutputTabs.vue";
 import WorkflowInvocationOverview from "./WorkflowInvocationOverview.vue";
+import Heading from "@/components/Common/Heading.vue";
+import SwitchToHistoryLink from "@/components/History/SwitchToHistoryLink.vue";
 import LoadingSpan from "@/components/LoadingSpan.vue";
+import UtcDate from "@/components/UtcDate.vue";
 import InvocationReport from "@/components/Workflow/InvocationReport.vue";
 import WorkflowInvocationsCount from "@/components/Workflow/WorkflowInvocationsCount.vue";
 import WorkflowRunButton from "@/components/Workflow/WorkflowRunButton.vue";
diff --git a/client/src/components/admin/DataTables.vue b/client/src/components/admin/DataTables.vue
index 060501ff2539..feefae358c6b 100644
--- a/client/src/components/admin/DataTables.vue
+++ b/client/src/components/admin/DataTables.vue
@@ -16,9 +16,9 @@
 import axios from "axios";
 import { getAppRoot } from "onload/loadConfig";
 
-import Message from "../Message.vue";
 import DataManagerGrid from "./DataManagerGrid.vue";
 import DataTablesGrid from "./DataTablesGrid.vue";
+import Message from "@/components/Message.vue";
 
 export default {
     components: {
diff --git a/client/src/components/admin/DataTypes.vue b/client/src/components/admin/DataTypes.vue
index bda73d9a381a..bfd8398ca625 100644
--- a/client/src/components/admin/DataTypes.vue
+++ b/client/src/components/admin/DataTypes.vue
@@ -21,8 +21,8 @@
 import axios from "axios";
 import { getAppRoot } from "onload/loadConfig";
 
-import Message from "../Message.vue";
 import BaseGrid from "./BaseGrid.vue";
+import Message from "@/components/Message.vue";
 
 export default {
     components: {
diff --git a/client/src/components/admin/Dependencies/ContainerIndex.vue b/client/src/components/admin/Dependencies/ContainerIndex.vue
index 181b53d58b7d..75d34c0a5c71 100644
--- a/client/src/components/admin/Dependencies/ContainerIndex.vue
+++ b/client/src/components/admin/Dependencies/ContainerIndex.vue
@@ -95,7 +95,8 @@ import BootstrapVue from "bootstrap-vue";
 import _ from "underscore";
 import Vue from "vue";
 
-import { getContainerResolutionToolbox, resolveContainersWithInstall } from "../AdminServices";
+import { getContainerResolutionToolbox, resolveContainersWithInstall } from "@/components/admin/AdminServices";
+
 import ContainerResolutionDetails from "./ContainerResolutionDetails";
 import { DESCRIPTION } from "./ContainerResolver";
 import DependencyIndexMixin from "./DependencyIndexMixin";
diff --git a/client/src/components/admin/Dependencies/ResolutionIndex.vue b/client/src/components/admin/Dependencies/ResolutionIndex.vue
index c930c67cc2b1..18d6851b49e8 100644
--- a/client/src/components/admin/Dependencies/ResolutionIndex.vue
+++ b/client/src/components/admin/Dependencies/ResolutionIndex.vue
@@ -86,7 +86,8 @@ import BootstrapVue from "bootstrap-vue";
 import _ from "underscore";
 import Vue from "vue";
 
-import { getToolboxDependencies, installDependencies, uninstallDependencies } from "../AdminServices";
+import { getToolboxDependencies, installDependencies, uninstallDependencies } from "@/components/admin/AdminServices";
+
 import DependencyIndexMixin from "./DependencyIndexMixin";
 import ResolutionDetails from "./ResolutionDetails";
 
diff --git a/client/src/components/admin/Dependencies/UnusedIndex.vue b/client/src/components/admin/Dependencies/UnusedIndex.vue
index 3e6fc808aad2..ab2a4137ecf6 100644
--- a/client/src/components/admin/Dependencies/UnusedIndex.vue
+++ b/client/src/components/admin/Dependencies/UnusedIndex.vue
@@ -18,7 +18,8 @@
     </DependencyIndexWrapper>
 </template>
 <script>
-import { deletedUnusedPaths, getDependencyUnusedPaths } from "../AdminServices";
+import { deletedUnusedPaths, getDependencyUnusedPaths } from "@/components/admin/AdminServices";
+
 import DependencyIndexWrapper from "./DependencyIndexWrapper";
 
 export default {
diff --git a/client/src/components/admin/Notifications/NotificationsManagement.vue b/client/src/components/admin/Notifications/NotificationsManagement.vue
index ef06eba45f4d..879f2d4fe92c 100644
--- a/client/src/components/admin/Notifications/NotificationsManagement.vue
+++ b/client/src/components/admin/Notifications/NotificationsManagement.vue
@@ -5,7 +5,7 @@ import { useRouter } from "vue-router/composables";
 
 import { useConfig } from "@/composables/config";
 
-import BroadcastsList from "@/components/admin/Notifications/BroadcastsList.vue";
+import BroadcastsList from "./BroadcastsList.vue";
 import Heading from "@/components/Common/Heading.vue";
 
 const router = useRouter();
diff --git a/client/src/components/admin/SanitizeAllow.vue b/client/src/components/admin/SanitizeAllow.vue
index 94273472d656..1607d5933eda 100755
--- a/client/src/components/admin/SanitizeAllow.vue
+++ b/client/src/components/admin/SanitizeAllow.vue
@@ -108,8 +108,8 @@
 import axios from "axios";
 import { getAppRoot } from "onload/loadConfig";
 
-import Message from "../Message.vue";
 import BaseGrid from "./BaseGrid.vue";
+import Message from "@/components/Message.vue";
 
 export default {
     components: {
diff --git a/client/src/components/providers/DatasetProvider.js b/client/src/components/providers/DatasetProvider.js
index a22a4632617d..b050eb73c479 100644
--- a/client/src/components/providers/DatasetProvider.js
+++ b/client/src/components/providers/DatasetProvider.js
@@ -1,6 +1,6 @@
 import { fetchDatasetDetails } from "@/api/datasets";
-import { SingleQueryProvider } from "@/components/providers/SingleQueryProvider";
 
+import { SingleQueryProvider } from "./SingleQueryProvider";
 import { stateIsTerminal } from "./utils";
 
 export default SingleQueryProvider(fetchDatasetDetails, stateIsTerminal);
diff --git a/client/src/components/providers/storeProviders.js b/client/src/components/providers/storeProviders.js
index de7b602d610d..edf08e526756 100644
--- a/client/src/components/providers/storeProviders.js
+++ b/client/src/components/providers/storeProviders.js
@@ -4,7 +4,7 @@ import { mapActions, mapState } from "pinia";
 import { useDbKeyStore } from "stores/dbKeyStore";
 import { prependPath } from "utils/redirect";
 
-import { useDatatypeStore } from "../../stores/datatypeStore";
+import { useDatatypeStore } from "@/stores/datatypeStore";
 
 export const SimpleProviderMixin = {
     props: {
diff --git a/client/src/composables/datasetPermissions.ts b/client/src/composables/datasetPermissions.ts
index 738c5ac3452d..2defc917e2f0 100644
--- a/client/src/composables/datasetPermissions.ts
+++ b/client/src/composables/datasetPermissions.ts
@@ -1,9 +1,10 @@
 import { type AxiosResponse } from "axios";
 import { computed, type Ref, ref } from "vue";
 
-import { useToast } from "@/composables/toast";
 import { errorMessageAsString } from "@/utils/simple-error";
 
+import { useToast } from "./toast";
+
 interface InputOption {
     roleName: string;
     roleValue: number;
diff --git a/client/src/composables/filter/filter.worker.js b/client/src/composables/filter/filter.worker.js
index 470bf897de5b..0e22210b0a2c 100644
--- a/client/src/composables/filter/filter.worker.js
+++ b/client/src/composables/filter/filter.worker.js
@@ -1,4 +1,4 @@
-import { runFilter } from "@/composables/filter/filterFunction";
+import { runFilter } from "./filterFunction";
 
 let array = [];
 let filter = "";
diff --git a/client/src/composables/persistentProgressMonitor.test.ts b/client/src/composables/persistentProgressMonitor.test.ts
index 2a5f9c547dd0..592a8d045402 100644
--- a/client/src/composables/persistentProgressMonitor.test.ts
+++ b/client/src/composables/persistentProgressMonitor.test.ts
@@ -1,11 +1,11 @@
 import { ref } from "vue";
 
-import { type TaskMonitor } from "@/composables/genericTaskMonitor";
+import { type TaskMonitor } from "./genericTaskMonitor";
 import {
     type MonitoringData,
     type MonitoringRequest,
     usePersistentProgressTaskMonitor,
-} from "@/composables/persistentProgressMonitor";
+} from "./persistentProgressMonitor";
 
 // Mocks for dependencies
 jest.mock("@vueuse/core", () => ({
diff --git a/client/src/composables/shortTermStorageMonitor.test.ts b/client/src/composables/shortTermStorageMonitor.test.ts
index d2f3dfe66340..2165883c0b90 100644
--- a/client/src/composables/shortTermStorageMonitor.test.ts
+++ b/client/src/composables/shortTermStorageMonitor.test.ts
@@ -1,7 +1,8 @@
 import flushPromises from "flush-promises";
 
 import { mockFetcher } from "@/api/schema/__mocks__";
-import { useShortTermStorageMonitor } from "@/composables/shortTermStorageMonitor";
+
+import { useShortTermStorageMonitor } from "./shortTermStorageMonitor";
 
 jest.mock("@/api/schema");
 
diff --git a/client/src/composables/taskMonitor.test.ts b/client/src/composables/taskMonitor.test.ts
index 86fc4eab868c..83bb3cb6e005 100644
--- a/client/src/composables/taskMonitor.test.ts
+++ b/client/src/composables/taskMonitor.test.ts
@@ -1,7 +1,8 @@
 import flushPromises from "flush-promises";
 
 import { mockFetcher } from "@/api/schema/__mocks__";
-import { useTaskMonitor } from "@/composables/taskMonitor";
+
+import { useTaskMonitor } from "./taskMonitor";
 
 jest.mock("@/api/schema");
 
diff --git a/client/src/onload/globalInits/index.js b/client/src/onload/globalInits/index.js
index 763aed02ffbf..71bc57f9bec1 100644
--- a/client/src/onload/globalInits/index.js
+++ b/client/src/onload/globalInits/index.js
@@ -10,7 +10,8 @@
 import { make_popup_menus } from "ui/popupmenu";
 import { monitorInit } from "utils/installMonitor";
 
-import { prependInitialization } from "../initQueue";
+import { prependInitialization } from "@/onload/initQueue";
+
 // specific initialization functions
 import { addIframeClass, adjustIframeLinks } from "./iframesAreTerrible";
 import { init_refresh_on_change } from "./init_refresh_on_change";
diff --git a/client/src/stores/activitySetup.ts b/client/src/stores/activitySetup.ts
index 17551fc89e2b..85a944c2faa7 100644
--- a/client/src/stores/activitySetup.ts
+++ b/client/src/stores/activitySetup.ts
@@ -1,8 +1,8 @@
 /**
  * List of built-in activities
  */
-import { type Activity } from "@/stores/activityStore";
-import { type EventData } from "@/stores/eventStore";
+import { type Activity } from "./activityStore";
+import { type EventData } from "./eventStore";
 
 export const Activities = [
     {
diff --git a/client/src/stores/activityStore.test.ts b/client/src/stores/activityStore.test.ts
index e5fee99c70ea..6138e43d3125 100644
--- a/client/src/stores/activityStore.test.ts
+++ b/client/src/stores/activityStore.test.ts
@@ -1,6 +1,6 @@
 import { createPinia, setActivePinia } from "pinia";
 
-import { useActivityStore } from "@/stores/activityStore";
+import { useActivityStore } from "./activityStore";
 
 // mock Galaxy object
 jest.mock("./activitySetup", () => ({
diff --git a/client/src/stores/collectionElementsStore.test.ts b/client/src/stores/collectionElementsStore.test.ts
index a32f173e8733..fd6a00628dd3 100644
--- a/client/src/stores/collectionElementsStore.test.ts
+++ b/client/src/stores/collectionElementsStore.test.ts
@@ -3,7 +3,8 @@ import { createPinia, setActivePinia } from "pinia";
 
 import { type DCESummary, type HDCASummary } from "@/api";
 import { mockFetcher } from "@/api/schema/__mocks__";
-import { type DCEEntry, useCollectionElementsStore } from "@/stores/collectionElementsStore";
+
+import { type DCEEntry, useCollectionElementsStore } from "./collectionElementsStore";
 
 jest.mock("@/api/schema");
 
diff --git a/client/src/stores/entryPointStore.test.js b/client/src/stores/entryPointStore.test.js
index 9c3aa5d2c08a..d5c2de6cb30c 100644
--- a/client/src/stores/entryPointStore.test.js
+++ b/client/src/stores/entryPointStore.test.js
@@ -3,7 +3,8 @@ import MockAdapter from "axios-mock-adapter";
 import flushPromises from "flush-promises";
 import { createPinia, setActivePinia } from "pinia";
 
-import testInteractiveToolsResponse from "../components/InteractiveTools/testData/testInteractiveToolsResponse";
+import testInteractiveToolsResponse from "@/components/InteractiveTools/testData/testInteractiveToolsResponse";
+
 import { useEntryPointStore } from "./entryPointStore";
 
 describe("stores/EntryPointStore", () => {
diff --git a/client/src/stores/historyStore.ts b/client/src/stores/historyStore.ts
index c8a1e0d3cb9a..a44645f409ee 100644
--- a/client/src/stores/historyStore.ts
+++ b/client/src/stores/historyStore.ts
@@ -12,6 +12,9 @@ import { historyFetcher } from "@/api/histories";
 import { archiveHistory, unarchiveHistory } from "@/api/histories.archived";
 import { HistoryFilters } from "@/components/History/HistoryFilters";
 import { useUserLocalStorage } from "@/composables/userLocalStorage";
+import { rethrowSimple } from "@/utils/simple-error";
+import { sortByObjectProp } from "@/utils/sorting";
+
 import {
     cloneHistory,
     createAndSelectNewHistory,
@@ -23,9 +26,7 @@ import {
     secureHistoryOnServer,
     setCurrentHistoryOnServer,
     updateHistoryFields,
-} from "@/stores/services/history.services";
-import { rethrowSimple } from "@/utils/simple-error";
-import { sortByObjectProp } from "@/utils/sorting";
+} from "./services/history.services";
 
 const PAGINATION_LIMIT = 10;
 const isLoadingHistory = new Set();
diff --git a/client/src/stores/objectStoreInstancesStore.test.ts b/client/src/stores/objectStoreInstancesStore.test.ts
index e087f7a1ee05..633b4b7e2ff4 100644
--- a/client/src/stores/objectStoreInstancesStore.test.ts
+++ b/client/src/stores/objectStoreInstancesStore.test.ts
@@ -1,6 +1,6 @@
 import { type ObjectStoreTemplateType } from "@/api/objectStores";
-import { useObjectStoreInstancesStore } from "@/stores/objectStoreInstancesStore";
 
+import { useObjectStoreInstancesStore } from "./objectStoreInstancesStore";
 import { setupTestPinia } from "./testUtils";
 
 const type = "aws_s3" as ObjectStoreTemplateType;
diff --git a/client/src/stores/objectStoreTemplatesStore.test.ts b/client/src/stores/objectStoreTemplatesStore.test.ts
index 214e83fd6b7b..c105ab7afe8f 100644
--- a/client/src/stores/objectStoreTemplatesStore.test.ts
+++ b/client/src/stores/objectStoreTemplatesStore.test.ts
@@ -1,6 +1,6 @@
 import { type ObjectStoreTemplateType } from "@/api/objectStores";
-import { useObjectStoreTemplatesStore } from "@/stores/objectStoreTemplatesStore";
 
+import { useObjectStoreTemplatesStore } from "./objectStoreTemplatesStore";
 import { setupTestPinia } from "./testUtils";
 
 const s3 = "aws_s3" as ObjectStoreTemplateType;
diff --git a/client/src/stores/userStore.ts b/client/src/stores/userStore.ts
index 9e53f5f111ac..137fa35a6162 100644
--- a/client/src/stores/userStore.ts
+++ b/client/src/stores/userStore.ts
@@ -3,13 +3,9 @@ import { computed, ref } from "vue";
 
 import { type AnonymousUser, type User } from "@/api";
 import { useUserLocalStorage } from "@/composables/userLocalStorage";
-import { useHistoryStore } from "@/stores/historyStore";
-import {
-    addFavoriteToolQuery,
-    getCurrentUser,
-    removeFavoriteToolQuery,
-    setCurrentThemeQuery,
-} from "@/stores/users/queries";
+
+import { useHistoryStore } from "./historyStore";
+import { addFavoriteToolQuery, getCurrentUser, removeFavoriteToolQuery, setCurrentThemeQuery } from "./users/queries";
 
 interface Preferences {
     theme: string;
diff --git a/client/src/stores/workflowConnectionStore.test.ts b/client/src/stores/workflowConnectionStore.test.ts
index d2c40b72b4a2..6f2be4fc208c 100644
--- a/client/src/stores/workflowConnectionStore.test.ts
+++ b/client/src/stores/workflowConnectionStore.test.ts
@@ -6,8 +6,8 @@ import {
     type InputTerminal,
     type OutputTerminal,
     useConnectionStore,
-} from "@/stores/workflowConnectionStore";
-import { type NewStep, useWorkflowStepStore } from "@/stores/workflowStepStore";
+} from "./workflowConnectionStore";
+import { type NewStep, useWorkflowStepStore } from "./workflowStepStore";
 
 const workflowStepZero: NewStep = {
     input_connections: {},
diff --git a/client/src/stores/workflowConnectionStore.ts b/client/src/stores/workflowConnectionStore.ts
index 675a53cc253a..cf43458cad0a 100644
--- a/client/src/stores/workflowConnectionStore.ts
+++ b/client/src/stores/workflowConnectionStore.ts
@@ -1,9 +1,9 @@
 import { computed, del, ref, set } from "vue";
 
-import { useWorkflowStepStore } from "@/stores/workflowStepStore";
 import { pushOrSet } from "@/utils/pushOrSet";
 
 import { defineScopedStore } from "./scopedStore";
+import { useWorkflowStepStore } from "./workflowStepStore";
 
 interface InvalidConnections {
     [index: ConnectionId]: string | undefined;
diff --git a/client/src/stores/workflowStepStore.test.ts b/client/src/stores/workflowStepStore.test.ts
index 7b270eb4e05a..08f5195f3f5d 100644
--- a/client/src/stores/workflowStepStore.test.ts
+++ b/client/src/stores/workflowStepStore.test.ts
@@ -1,8 +1,7 @@
 import { createPinia, setActivePinia } from "pinia";
 
-import { type NewStep, type StepInputConnection, useWorkflowStepStore } from "@/stores/workflowStepStore";
-
 import { useConnectionStore } from "./workflowConnectionStore";
+import { type NewStep, type StepInputConnection, useWorkflowStepStore } from "./workflowStepStore";
 
 const stepInputConnection: StepInputConnection = {
     "1": {
diff --git a/client/src/stores/workflowStepStore.ts b/client/src/stores/workflowStepStore.ts
index 30a5f80cba00..74a9250aa4c5 100644
--- a/client/src/stores/workflowStepStore.ts
+++ b/client/src/stores/workflowStepStore.ts
@@ -1,10 +1,10 @@
 import { computed, del, ref, set } from "vue";
 
 import { type CollectionTypeDescriptor } from "@/components/Workflow/Editor/modules/collectionTypeDescription";
-import { type Connection, getConnectionId, useConnectionStore } from "@/stores/workflowConnectionStore";
 import { assertDefined } from "@/utils/assertions";
 
 import { defineScopedStore } from "./scopedStore";
+import { type Connection, getConnectionId, useConnectionStore } from "./workflowConnectionStore";
 import { useWorkflowStateStore } from "./workflowEditorStateStore";
 
 interface StepPosition {
diff --git a/client/src/stores/workflowStore.ts b/client/src/stores/workflowStore.ts
index 686e8009c148..28d641ff671b 100644
--- a/client/src/stores/workflowStore.ts
+++ b/client/src/stores/workflowStore.ts
@@ -3,7 +3,8 @@ import { defineStore } from "pinia";
 import { computed, ref, set } from "vue";
 
 import { getAppRoot } from "@/onload/loadConfig";
-import { type Steps } from "@/stores/workflowStepStore";
+
+import { type Steps } from "./workflowStepStore";
 
 export interface Workflow {
     name: string;
diff --git a/client/src/utils/data.js b/client/src/utils/data.js
index 23e958193bae..a7b75f7b5326 100644
--- a/client/src/utils/data.js
+++ b/client/src/utils/data.js
@@ -7,8 +7,8 @@ import { getAppRoot } from "onload/loadConfig";
 import { startWatchingHistory } from "store/historyStore/model/watchHistory";
 import Vue from "vue";
 
-import { uploadPayload } from "@/utils/upload-payload.js";
-import { uploadSubmit } from "@/utils/upload-submit.js";
+import { uploadPayload } from "./upload-payload.js";
+import { uploadSubmit } from "./upload-submit.js";
 
 import DataDialog from "components/DataDialog/DataDialog.vue";
 import DatasetCollectionDialog from "components/SelectionDialog/DatasetCollectionDialog.vue";
diff --git a/client/src/utils/upload-queue.js b/client/src/utils/upload-queue.js
index 854ae90de567..97593c5814b2 100644
--- a/client/src/utils/upload-queue.js
+++ b/client/src/utils/upload-queue.js
@@ -1,8 +1,8 @@
 /*
     galaxy upload utilities - requires FormData and XMLHttpRequest
 */
-import { uploadPayload } from "@/utils/upload-payload.js";
-import { sendPayload, uploadSubmit } from "@/utils/upload-submit.js";
+import { uploadPayload } from "./upload-payload.js";
+import { sendPayload, uploadSubmit } from "./upload-submit.js";
 
 export class UploadQueue {
     constructor(options) {
diff --git a/client/src/utils/upload-queue.test.js b/client/src/utils/upload-queue.test.js
index 473d578dd1da..7f08412aebd7 100644
--- a/client/src/utils/upload-queue.test.js
+++ b/client/src/utils/upload-queue.test.js
@@ -1,6 +1,5 @@
-import { sendPayload } from "@/utils/upload-submit.js";
-
 import { UploadQueue } from "./upload-queue.js";
+import { sendPayload } from "./upload-submit.js";
 
 jest.mock("@/utils/upload-submit.js");
 sendPayload.mockImplementation(() => jest.fn());
diff --git a/client/src/utils/url.ts b/client/src/utils/url.ts
index bc537c30382b..f2dcff4fa2ac 100644
--- a/client/src/utils/url.ts
+++ b/client/src/utils/url.ts
@@ -1,7 +1,7 @@
 import axios from "axios";
 
-import { withPrefix } from "@/utils/redirect";
-import { rethrowSimple } from "@/utils/simple-error";
+import { withPrefix } from "./redirect";
+import { rethrowSimple } from "./simple-error";
 
 export interface UrlDataOptions {
     url: string;
diff --git a/client/src/utils/utils.ts b/client/src/utils/utils.ts
index ae6c8e68972d..e4223380c515 100644
--- a/client/src/utils/utils.ts
+++ b/client/src/utils/utils.ts
@@ -8,7 +8,8 @@ import axios, { type AxiosError, type AxiosResponse } from "axios";
 import { getGalaxyInstance } from "@/app";
 import { NON_TERMINAL_STATES } from "@/components/WorkflowInvocationState/util";
 import { getAppRoot } from "@/onload/loadConfig";
-import _l from "@/utils/localization";
+
+import _l from "./localization";
 
 export function stateIsTerminal(result: Record<string, any>) {
     return !NON_TERMINAL_STATES.includes(result.state);
diff --git a/client/src/utils/webhooks.js b/client/src/utils/webhooks.js
index e9e8a59da7de..331bb4a27a7f 100644
--- a/client/src/utils/webhooks.js
+++ b/client/src/utils/webhooks.js
@@ -3,7 +3,7 @@ import Backbone from "backbone";
 import { getAppRoot } from "onload/loadConfig";
 import Utils from "utils/utils";
 
-import { rethrowSimple } from "@/utils/simple-error";
+import { rethrowSimple } from "./simple-error";
 
 let webhookData = undefined;