Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 3 additions & 16 deletions .github/workflows/doctests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,8 @@ name: basecamp Doc-Tests
# basecamp-modules-bundle.test.yaml — the bundle twin: builds THIS commit as the
# real portable bundle (inspector-enabled #bin-bundle-dir-inspector) and runs
# the identical Modules-view walk against it.
# basecamp-crossversion-accounts.test.yaml / -chat.test.yaml — cross-version
# compatibility: build one component fresh from source (#install-portable),
# download the latest released counterpart(s) from the package manager,
# assemble them into a user-dir, launch the portable bundle against it, and
# drive the app (accounts: create mnemonics; chat: confirm the Waku node
# initializes). accounts checks both directions (fresh module + released UI,
# and fresh UI + released module); chat is three packages (chat_ui,
# chat_module, delivery_module) so it checks all three directions, each with
# one side fresh and the other two released. These need network at runtime
# and exercise the live ecosystem.
# (accounts/wallet cross-version specs are disabled — those packages are no
# longer published in the catalog.)
# All specs run into one --report HTML (a dropdown switches between them).
#
# ──────────────────────────────────────────────────────────────────────────────
Expand Down Expand Up @@ -148,10 +140,6 @@ jobs:
# single --report HTML (a dropdown switches between them):
# basecamp-modules / basecamp-modules-bundle — the Modules-view walk
# against the dev app (#app) and the portable bundle.
# basecamp-crossversion-accounts — cross-version compatibility:
# a freshly-built component (#install-portable) driven against the
# latest released counterpart downloaded from the package manager
# (both directions). Needs network at runtime (catalog download).
# basecamp-fullapi-ui — hermetic full-API check: a ui_qml plugin
# consumes the full_api contract via an interface dependency and
# drives every method type + receives typed events, all from local
Expand All @@ -164,7 +152,6 @@ jobs:
nix run github:logos-co/logos-doctest -- run \
doctests/basecamp-modules.test.yaml \
doctests/basecamp-modules-bundle.test.yaml \
doctests/basecamp-crossversion-accounts.test.yaml \
doctests/basecamp-fullapi-ui.test.yaml \
doctests/basecamp-fullapi-ui-qml.test.yaml \
doctests/basecamp-shortcut-bridge.test.yaml \
Expand Down Expand Up @@ -195,7 +182,7 @@ jobs:

- name: Verify markdown generation
run: |
for spec in basecamp-modules basecamp-modules-bundle basecamp-crossversion-accounts basecamp-fullapi-ui basecamp-fullapi-ui-qml basecamp-shortcut-bridge; do
for spec in basecamp-modules basecamp-modules-bundle basecamp-fullapi-ui basecamp-fullapi-ui-qml basecamp-shortcut-bridge; do
nix run github:logos-co/logos-doctest -- generate \
"doctests/${spec}.test.yaml" \
--release-for logos-basecamp=${{ steps.commit.outputs.sha }} \
Expand Down
15 changes: 15 additions & 0 deletions app/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,21 @@ int main(int argc, char *argv[])
// Set logos mode to Local for testing
//LogosModeConfig::setMode(LogosMode::Local);

// Kill the per-file .qmlc disk cache under QStandardPaths::CacheLocation
// for every QQmlEngine in this process. It must be set before Qt is up:
// Qt reads the env var when the first engine is constructed, and no later.
//
// Rationale: basecamp's own QML modules and the design system are STATIC-
// embedded via qt_add_qml_module — nothing on disk to cache, so this flag
// is a no-op for them. The load-bearing effect is on plugin QML under
// Contents/plugins/<name>/qml/, which ships with nix-frozen mtimes; Qt's
// (path, mtime + content-hash) cache key can reuse stale .qmlc across app
// upgrades when a bundled plugin's Q_PROPERTY / signal signatures change
// between releases. Disabling disk cache costs ~30-100ms of QML parse on
// the first activation of each plugin per session and makes cross-version
// plugin upgrades physically immune to that class of staleness
qputenv("QML_DISABLE_DISK_CACHE", "1");

// Create QApplication first
QApplication app(argc, argv);
app.setOrganizationName("Logos");
Expand Down
Loading
Loading