diff --git a/src/bonsaiviewer/modules/connectors/Discovery.cpp b/src/bonsaiviewer/modules/connectors/Discovery.cpp index 26d14ba5e1..c60ddac38e 100644 --- a/src/bonsaiviewer/modules/connectors/Discovery.cpp +++ b/src/bonsaiviewer/modules/connectors/Discovery.cpp @@ -20,6 +20,7 @@ #include "Discovery.h" +#include #include #include #include @@ -27,7 +28,6 @@ #include #include #include -#include namespace bonsaiviewer::modules::connectors { @@ -78,20 +78,15 @@ bool parseManifest(const QString& folder, ConnectorManifest& out) { } // namespace -QString userConnectorsDir() { - // GenericDataLocation maps to the platform's per-user data root: - // Linux -> ~/.local/share - // macOS -> ~/Library/Application Support - // Win -> %APPDATA% (Roaming) - // matching the Bonsai Viewer connector protocol docs. - const QString base = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); - return QDir(base).filePath("IfcOpenShell/BonsaiViewer/connectors"); +QString bundledConnectorsDir() { + // Connectors ship alongside the executable in a "connectors" subdirectory. + return QDir(QCoreApplication::applicationDirPath()).filePath("connectors"); } std::vector discoverConnectors() { std::vector result; QSet seen_ids; - QDir dir(userConnectorsDir()); + QDir dir(bundledConnectorsDir()); if (!dir.exists()) return result; const QFileInfoList entries = dir.entryInfoList( QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); diff --git a/src/bonsaiviewer/modules/connectors/Discovery.h b/src/bonsaiviewer/modules/connectors/Discovery.h index 620aa590bd..6932dde740 100644 --- a/src/bonsaiviewer/modules/connectors/Discovery.h +++ b/src/bonsaiviewer/modules/connectors/Discovery.h @@ -35,15 +35,16 @@ struct ConnectorManifest { // otherwise a bare name for PATH lookup at launch }; -// Scans the per-user connectors directory per the connector protocol docs. +// Scans the connectors directory bundled alongside the executable. // First match wins for any given id; duplicates and malformed manifests // are skipped with a qWarning. Returned in discovery order so first-wins // is observable to callers. std::vector discoverConnectors(); -// Per-user connectors directory (platform-specific). Exposed for tests and -// for "open user connectors dir" affordances. -QString userConnectorsDir(); +// Connectors directory bundled next to the executable +// (/connectors). Exposed for tests and for +// "open connectors dir" affordances. +QString bundledConnectorsDir(); } // namespace bonsaiviewer::modules::connectors