Remove the 15k-line auto-generated CHANGELOG.md and its conventional-changelog
tooling. The bump-android-version script now derives Play Store fastlane
changelogs from git log between tags instead of parsing CHANGELOG.md.
- Use execFileSync with argv to avoid shell injection
- Filter merge commits with --no-merges
- Handle breaking-change prefix (feat!:) in regex
- Truncate at line boundaries for 500-char Play Store limit
- Remove conventional-changelog-cli and @conventional-changelog/git-client deps
- Remove release.changelog script from package.json
* fix(build): ensure plugin-api is built before plugin builds
The github-issue-provider plugin build was failing in CI because
plugin-api/dist/ didn't exist when tsc --noEmit ran. The dist/ directory
is gitignored and only built during the prepare lifecycle, which may not
run reliably in all CI contexts. Adding plugin-api:build to the
plugins:build script ensures the type declarations are always available.
Also improved error logging in build-all.js to show stderr on failure.
https://claude.ai/code/session_01StB1pMk1g2k79AywyksoyZ
* fix(build): remove tsc --noEmit from github-issue-provider build
The github-issue-provider was the only plugin running tsc --noEmit as
part of its build command. In CI, TypeScript module resolution fails for
the file: dependency on plugin-api due to npm workspace hoisting
interference. All other plugins (ai-productivity-prompts,
procrastination-buster, sync-md) skip type-checking during build and
rely on esbuild to strip type-only imports.
Align with existing plugin pattern by separating build from typecheck.
Also improve error logging in build-all.js to capture stdout on failure.
https://claude.ai/code/session_01StB1pMk1g2k79AywyksoyZ
---------
Co-authored-by: Claude <noreply@anthropic.com>
The dependabot minimatch bump (3.1.2 → 3.1.4) cascaded into updating
app-builder-lib's nested minimatch from 10.1.1 to 10.2.3. In 10.2.3,
partial directory matching for glob patterns like `dir/**/*` against
bare directory names changed behavior, preventing electron-builder's
file walker from descending into the `electron/` directory. This caused
"electron/main.js" to be missing from the asar archive.
Pin app-builder-lib's minimatch to 10.1.1 via npm overrides until the
regression is resolved upstream.
Install capacitor-plugin-safe-area to read native safe area insets and
inject them as CSS variables, working around Capacitor 7's broken
adjustMarginsForEdgeToEdge and Android WebView's unreliable
env(safe-area-inset-*) values.
- Add _initSafeAreaInsets() to GlobalThemeService
- Remove broken adjustMarginsForEdgeToEdge: 'auto' from capacitor config
- Clamp context menu trigger Y to safe area top
- Fix light mode status bar color to match theme (#f8f8f7)
The updateAllSimpleCounters reducer was using adapter.upsertMany() which
doesn't preserve the order of items passed to it. Now explicitly sets
the ids array after upserting to maintain the desired order. Also marks
form as dirty when moving items for consistency with removeItem().
Fixes#6232
WebCrypto (crypto.subtle) is unavailable on Android/iOS Capacitor apps
due to insecure contexts. This adds @noble/ciphers as a pure JavaScript
fallback for AES-GCM encryption when WebCrypto is not available.
- Add @noble/ciphers dependency (Cure53 audited, ~4-6KB tree-shaken)
- Update DerivedKeyInfo to support both CryptoKey and raw bytes
- Add fallback encrypt/decrypt functions using gcm from @noble/ciphers
- Legacy PBKDF2 data still requires WebCrypto with clear error message
Move plugin build from pree2e hook to Playwright global setup to ensure
plugins are built before dev server starts. Previously, plugins:build and
ng serve ran concurrently, causing tests to start before manifests were
available and resulting in 404 errors during the retry window.
Replace two-phase execution (non-supersync then supersync with
--workers=3) with single-phase execution using --workers=6.
Benefits:
- Simpler script (one line vs. complex phase logic)
- No server overload (0 ECONNREFUSED errors)
- Better parallelism (2x faster than --workers=3)
- 98% test pass rate (355/362 passed)
Testing showed:
- Default 12 workers: 95 ECONNREFUSED errors (nginx overload)
- --workers=6: 0 connection errors, all tests passed
- Total duration: 18.8 minutes
The two-phase approach was designed to prevent ng serve from
crashing. With Docker nginx, --workers=6 provides optimal balance
between parallelism and server capacity.
Note: e2e:supersync script keeps --workers=3 (uses ng serve).