mirror of
https://github.com/actualbudget/actual.git
synced 2026-04-29 01:59:56 -05:00
* Simplify desktop client browser build * [AI] Move browser build orchestration into vite config and lage Moves loot-core worker build, public/ staging (migrations, default-db, sql-wasm, data-file-index), and build-stats wiring from the deleted packages/desktop-client/bin/build-browser shell script into a lootCoreBackend vite plugin in packages/desktop-client/vite.config.mts. Adds a build:browser target to lage.config.js so bin/package-browser runs as a single `lage build:browser --to=@actual-app/web` call, with crdt + loot-core built via lage's ^build dependency before the desktop-client build. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Refactor e2e-test workflow and update desktop-client configurations * [AI] Move plugins-service staging into desktop-client vite config Declares plugins-service as a workspace devDependency of @actual-app/web so lage's ^build edge picks it up automatically in the build:browser pipeline, and moves the cross-package file staging (production copy + dev serving) into vite.config.mts, mirroring the lootCoreBackend pattern. Drops the plugins-service shell wrapper script and simplifies its package.json scripts to invoke vite build directly. Updates root start:browser to run plugins-service watch in parallel with the dev server instead of pre-building once. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * [AI] Sync tsconfig project references for plugins-service edge Follow-up to the plugins-service workspace edge: adds the ../plugins-service project reference in packages/desktop-client/tsconfig.json via yarn sync:tsconfig-references. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Release notes * [AI] Ignore .venv/ so lage's git hasher skips Electron CI's Python venv Electron CI provisions a Python virtualenv at the repo root for setuptools. With browser builds now routed through lage, lage's git hash-object pass walks untracked-not-ignored files and fails on the venv's broken lib64 symlink ("fatal: Unable to hash .../.venv/lib64"). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * [AI] Bake Weblate translations back into VRT/e2e bundle build-web set download-translations: false and relied on bin/package-browser's ad-hoc git clone + git pull. That path is fragile inside the playwright container, so vite's import.meta.glob('/locale/*.json') frequently produced an empty languages map and the bundle shipped with no en.json. VRTs then rendered source-code English and diffed against snapshots authored from Weblate strings. Route translation provisioning back through actions/checkout (download-translations: true) in build-web and vrt-update-generate, and add --skip-translations to bin/package-browser (mirroring bin/package-electron) so the in-script git pull is bypassed when CI has already staged the locale dir. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * [AI] Skip translation cloning in build-web bundle for VRT determinism bin/package-browser used to unconditionally clone actualbudget/translations before vite ran, baking Weblate en.json into the build artifact. With the e2e-test pipeline now serving that artifact via serve-build.mjs, VRT screenshots ended up rendering Weblate strings — drifting from the snapshots, which were authored against source-code English (master VRTs ran on vite dev without a locale dir). Pass --skip-translations to bin/package-browser from build-web so the bundle ships with no locale chunks. download-translations stays 'false' across the e2e-test and vrt-update-generate workflows, matching the prior behavior. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
46 lines
1.0 KiB
JavaScript
46 lines
1.0 KiB
JavaScript
const BUILD_OUTPUT_GLOBS = ['lib-dist/**', 'dist/**', 'build/**', '@types/**'];
|
|
|
|
/** @type {import('lage').ConfigOptions} */
|
|
module.exports = {
|
|
pipeline: {
|
|
typecheck: {
|
|
type: 'npmScript',
|
|
dependsOn: ['^typecheck'],
|
|
},
|
|
test: {
|
|
type: 'npmScript',
|
|
options: {
|
|
outputGlob: [
|
|
'coverage/**',
|
|
'**/test-results/**',
|
|
'**/playwright-report/**',
|
|
],
|
|
},
|
|
},
|
|
build: {
|
|
type: 'npmScript',
|
|
dependsOn: ['^build'],
|
|
cache: true,
|
|
options: {
|
|
outputGlob: BUILD_OUTPUT_GLOBS,
|
|
},
|
|
},
|
|
// Not cached: the script stages files into public/ and build-stats/ that
|
|
// fall outside BUILD_OUTPUT_GLOBS, so a cache hit would skip the side
|
|
// effects.
|
|
'build:browser': {
|
|
type: 'npmScript',
|
|
dependsOn: ['^build'],
|
|
cache: false,
|
|
},
|
|
},
|
|
cacheOptions: {
|
|
cacheStorageConfig: {
|
|
provider: 'local',
|
|
outputGlob: BUILD_OUTPUT_GLOBS,
|
|
},
|
|
},
|
|
npmClient: 'yarn',
|
|
concurrency: 2,
|
|
};
|