Ship HDF EFFECT to PRO only, and clean the build for Play

Rename LIGHT GLOW to HDF EFFECT and gate it behind PRO: LITE renders the
chip greyed out with a PRO tag and cannot open its slider; restoration of
older settings that carry hdf > 0 still blocks export in LITE.

Play/licence pass:
- drop unused permissions (ACTIVITY_RECOGNITION, READ_MEDIA_AUDIO/VIDEO,
  SYSTEM_ALERT_WINDOW) and requestLegacyExternalStorage
- rename the Leica sims to LC STREETLIFE CLASSIC/VIVID, drop the brand from
  comments; fix app name text, canvaskit copyright, LICENSE owner
- remove expo-image-picker and expo-sensors (no JS import), delete dead
  exports (computeMatrixTint, cinemaSeasonName, base64 helpers,
  formatCoordinate)
- versionCode 3 / versionName 1.2.1, drop the personal email from About
- add docs/privacy-policy.html for the Play listing

Size: R8 + shrinkResources + bundle compression + ABI trim, 161 MB -> 76 MB.
This commit is contained in:
2026-09-15 11:36:52 +07:00
parent 42756ac7c3
commit 27a9dfb65f
25 changed files with 177 additions and 172 deletions
+9 -3
View File
@@ -16,9 +16,10 @@ export const IS_PRO = IS_PRO_BUILD;
//
// What LITE owns outright: the eight film sims, the bundled recipes, its own
// recipes up to LITE_RECIPE_LIMIT, its own watermark text (in one face), the
// plain frames, one favorite and every parameter. What needs PRO: the three
// printed frames, the GPS stamp, the platform's other fonts, the next recipe
// past the limit, and the second favorite.
// plain frames, one favorite and every parameter except the HDF effect.
// What needs PRO: the three printed frames, the GPS stamp, the HDF effect,
// the platform's other fonts, the next recipe past the limit, and the second
// favorite.
// Frames on the LITE side: the plain export only. The three printed looks are
// PRO (the artwork/card geometry is the paid half of the FRAME tab).
@@ -47,6 +48,7 @@ export const LITE_MARK = {
export interface Look {
frame: FrameId;
gpsWm: boolean;
hdf: number;
}
// The first PRO feature a look is using, or null when it is LITE-clean. One
@@ -54,5 +56,9 @@ export interface Look {
export function proLookInUse(look: Look): string | null {
if (PRO_FRAMES.includes(look.frame)) return 'A PRO frame';
if (look.gpsWm) return 'The GPS watermark';
// A LITE build can no longer reach the HDF row (paramDefs marks it PRO and
// the panel greys the chip out), but a session or recipe stored before the
// gate existed still carries a value: it is caught here, at the render.
if (look.hdf > 0) return 'The HDF effect';
return null;
}