sharp is a native C++ module that fails to compile in F-Droid's
build environment. It is only used by manual icon generation scripts,
so auto-install it on demand instead.
Closes#6637
App-state selectors crashed during test teardown when the feature store
was unregistered. Lighthouse resource count budgets increased for the
new deadline feature chunks (scripts 170→200, total 220→250).
Group individual loadComponent routes into fewer lazy chunks:
- Tag + project sub-routes share one chunk via context.routes.ts
using loadChildren with static component imports
- Standalone pages share one chunk via pages.routes.ts barrel
re-export with loadComponent importing from same module
- Use canActivateChild for FocusOverlayOpenGuard so it re-fires
when navigating between child routes within the same context
Lighthouse resource budgets updated to match new chunk count.
Add --ensure flag to load-env.js that skips generation if
env.generated.ts already exists, allowing ng serve to work in
fresh worktrees without running npm run env first.
Also make load-env.js idempotent by comparing content before
writing and removing the timestamp from generated output.
The previous two-tag approach (`currentTag` → `prevTag`) would resolve the
wrong changelog range during `npm version` since the new tag doesn't exist
yet. Simplified to a single `lastTag...HEAD` range which correctly captures
all commits since the last release.
Added try-catch with fallback to last 20 commits when no tags exist, and
a fallback message for empty changelogs.
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
Remove the flatten-with-white-background step from the icon generator.
macOS .icns natively supports PNG with alpha, so the flatten was
unnecessarily filling transparent areas outside the squircle mask
with white, causing visible borders in the Dock and Finder.
Split Sharp pipeline into two stages to fix edge pixel blending.
When chained directly, dest-in composite and flatten don't properly
preserve alpha channel data, causing edges to retain the original
icon color instead of blending with the white background.
Fixes#6323
Replace simple SVG rounded rect (circular arcs) with Apple's actual
continuous-corner shape reverse-engineered from UIBezierPath. This
produces the correct squircle with smooth curvature transitions.
- Add extract and merge modes to manage missing translations
- Implement functions to extract missing keys and merge WIP files
- Create usage documentation for the translation management script
The font budget was set to 260KB before the Material Icons to Material
Symbols upgrade. Material Symbols font is ~456KB, causing Lighthouse CI
to fail. Increase budget to 520KB to accommodate the larger font with
headroom for future updates.
iOS renders transparent pixels as white, causing a white frame around the
app icon. This fix generates a 1024x1024 RGB PNG (no alpha channel) from
the existing build/icons/sq2160x2160.png source.
Changes:
- Add tools/generate-ios-icon.js script using Sharp to resize and remove alpha
- Add npm script 'generate:ios-icon' for reproducible icon generation
- Update AppIcon-512@2x.png to RGB format (was RGBA)
- Install Sharp as dev dependency for image processing
Icon is now fully opaque with correct brand blue color and white checkmark.
- Update bump-android-version.js to handle RC/alpha/beta versions
- Pre-releases use versionCode suffix 0001-8999, stable uses 9000
- This ensures users can upgrade from RC to stable without uninstalling
- Skip Play Store upload for pre-release tags (GitHub only)
- Skip fastlane changelog generation for pre-releases
Fixes#5964
- Add getEnvOptional() method for accessing optional environment variables
- Separate REQUIRED_ENV_KEYS from OPTIONAL_ENV_KEYS in load-env.js
- Update UnsplashService to use getEnvOptional() instead of getEnv()
- ENV object now only contains actual values, not 'undefined' strings
- Cleaner separation between required and optional configuration
- Always read system environment variables first, then override with .env file
- Ensure all required keys are always present in generated types
- Pass environment variables correctly in Docker build
- Update .dockerignore to exclude build artifacts
- Fix dropbox-api.spec.ts tests by mocking fetch on globalThis instead of window
- Fix task-detail-item.component.scss hover states for light/dark themes
- Remove duplicate background property in dark theme mixin
- Update check-file.js to use stylelint for SCSS files