purgetss 7.7.0 → 7.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
  - 23,300+ utility classes for styling Titanium views
18
18
  - Parses XML files to generate a clean `app.tss` with only the classes your project uses
19
19
  - Customizable defaults via `config.cjs`, with JIT classes for arbitrary values
20
- - `brand` command for Titanium icons and branding assets, including Android launcher variants, optional Android 12+ splash artwork, and legacy `default.png` fallback generation
20
+ - `brand` command for Titanium icons and branding assets, focused on the modern Titanium icon pipeline: Android adaptive icons, iOS icon variants, optional Android 12+ splash artwork, and a minimal `default.png` compatibility fallback
21
21
  - Icon font support: Font Awesome, Material Icons, Material Symbols, Framework7-Icons
22
22
  - `build-fonts` command generates `fonts.tss` with class definitions and fontFamily selectors
23
23
  - `shades` command generates color shades from any hex color
@@ -384,6 +384,8 @@ Button: {
384
384
  - `brand` regenerates `app/assets/android/default.png` in Alloy projects, or `Resources/android/default.png` in Classic projects, so older Android splash paths still have a fallback.
385
385
  - `cleanup-legacy` no longer removes `default.png`.
386
386
  - Branding help and docs now spell out the difference between Android launcher icons, Android 12+ `splash_icon.png`, and legacy Android splash assets.
387
+ - `--notes` is explicit that `tiapp.xml` is not auto-edited and that apps with an existing custom Android theme should merge splash snippets into that theme instead of replacing it.
388
+ - `brand` does not try to manage older Android splash theme assets such as `background.png` or `background.9.png`; if a project still depends on them, that remains manual by design.
387
389
 
388
390
  See the full release notes in [CHANGELOG.md](./CHANGELOG.md).
389
391
 
package/bin/purgetss CHANGED
@@ -273,18 +273,25 @@ The recommended workflow is: put files in ${chalk.cyan('purgetss/brand/')}, then
273
273
  CLI flags always win over config values.
274
274
 
275
275
  Generates:
276
- ${chalk.yellow('DefaultIcon.png')} / ${chalk.yellow('DefaultIcon-ios.png')} Root icons (alpha + flattened)
277
- ${chalk.yellow('DefaultIcon-Dark.png')} / ${chalk.yellow('DefaultIcon-Tinted.png')} iOS 18+ variants (Apple HIG specs)
278
- ${chalk.yellow('iTunesConnect.png')} / ${chalk.yellow('MarketplaceArtwork.png')} App Store + Play Store artwork
276
+ ${chalk.yellow('DefaultIcon.png')}/${chalk.yellow('DefaultIcon-ios.png')} Root icons (alpha + flattened)
277
+ ${chalk.yellow('DefaultIcon-Dark.png')}/${chalk.yellow('DefaultIcon-Tinted.png')} iOS 18+ variants (Apple HIG specs)
278
+ ${chalk.yellow('iTunesConnect.png')}/${chalk.yellow('MarketplaceArtwork.png')} App Store + Play Store artwork
279
279
  ${chalk.yellow('mipmap-*/ic_launcher_{foreground,background,monochrome}.png')} Android adaptive × 5
280
- ${chalk.yellow('mipmap-*/ic_launcher.png')} Android legacy × 5
281
- ${chalk.yellow('mipmap-anydpi-v26/ic_launcher.xml')} Adaptive icon binder
282
- ${chalk.yellow('drawable-*/splash_icon.png')} Android 12+ splash icon (with ${chalk.cyan('--splash')})
283
- ${chalk.yellow('app/assets/android/default.png')} Android <12 legacy splash fallback
280
+ ${chalk.yellow('mipmap-*/ic_launcher.png')} Android legacy × 5
281
+ ${chalk.yellow('mipmap-anydpi-v26/ic_launcher.xml')} Adaptive icon binder
282
+ ${chalk.yellow('drawable-*/splash_icon.png')} Android 12+ splash icon (with ${chalk.cyan('--splash')})
283
+ ${chalk.yellow('app/assets/android/default.png')} Android <12 compatibility fallback
284
284
 
285
285
  Android dark/light mode is handled by the ${chalk.yellow('monochrome')} adaptive layer
286
286
  (Android 13+ tints it from the wallpaper + theme). No separate dark file exists.
287
287
 
288
+ Scope:
289
+ ${chalk.green('brand')} targets the modern Titanium icon pipeline: iOS app icons,
290
+ Android adaptive icons, and optional Android 12+ splash artwork.
291
+ Older Android splash themes such as ${chalk.yellow('background.png')} / ${chalk.yellow('background.9.png')}
292
+ are outside the normal scope of this command and should be managed manually
293
+ if a project still depends on them.
294
+
288
295
  Examples:
289
296
  ${chalk.cyan('purgetss brand')} # uses purgetss/brand/logo.svg + config
290
297
  ${chalk.cyan('purgetss brand')} logo.svg # explicit logo path
@@ -1,4 +1,4 @@
1
- // PurgeTSS v7.7.0
1
+ // PurgeTSS v7.7.1
2
2
  // Created by César Estrada
3
3
  // https://purgetss.com
4
4
 
@@ -13,15 +13,7 @@ module.exports = {
13
13
  }
14
14
  },
15
15
  brand: {
16
- logos: {
17
- // Optional overrides. If omitted, PurgeTSS auto-discovers files from purgetss/brand/:
18
- // primary: './docs/logo.svg',
19
- // androidLauncher: './docs/app-icon.svg',
20
- // androidSplash: './docs/splash.svg',
21
- // monochrome: './docs/logo-mono.svg',
22
- // iosDark: './docs/logo-dark.svg',
23
- // iosTinted: './docs/logo-tinted.svg'
24
- },
16
+ logos: {}, // empty = auto-discovers from purgetss/brand/
25
17
  padding: {
26
18
  ios: '4%', // iOS aesthetic. Range: 2% bold — 8% conservative. No launcher mask.
27
19
  androidLegacy: '10%', // legacy ic_launcher.png padding
@@ -31,15 +23,14 @@ module.exports = {
31
23
  splash: false, // also generate splash_icon.png × 5
32
24
  notification: false // also generate ic_stat_notify.png × 5
33
25
  },
26
+ ios: {
27
+ dark: true, // generate iOS 18+ Dark appearance icon
28
+ tinted: true, // generate iOS 18+ Tinted appearance icon
29
+ darkBackground: null // null = transparent per Apple HIG
30
+ },
34
31
  colors: {
35
32
  background: '#FFFFFF' // Android adaptive bg + iOS/marketplace flatten
36
33
  },
37
- // Optional iOS overrides:
38
- // ios: {
39
- // dark: false,
40
- // tinted: false,
41
- // darkBackground: '#111111'
42
- // },
43
34
  confirmOverwrites: true // prompt before overwriting files (set false to skip)
44
35
  },
45
36
  images: {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "purgetss",
4
- "version": "7.7.0",
4
+ "version": "7.7.1",
5
5
  "main": "src/index.js",
6
6
  "bin": {
7
7
  "purgetss": "bin/purgetss"
@@ -23,15 +23,7 @@ import { projectsConfigJS, projectsPurge_TSS_Brand_Folder } from '../../shared/c
23
23
  import { logger } from './branding-logger.js'
24
24
 
25
25
  const BRAND_BLOCK = ` brand: {
26
- logos: {
27
- // Optional overrides. If omitted, PurgeTSS auto-discovers files from purgetss/brand/:
28
- // primary: './docs/logo.svg',
29
- // androidLauncher: './docs/app-icon.svg',
30
- // androidSplash: './docs/splash.svg',
31
- // monochrome: './docs/logo-mono.svg',
32
- // iosDark: './docs/logo-dark.svg',
33
- // iosTinted: './docs/logo-tinted.svg'
34
- },
26
+ logos: {}, // empty = auto-discovers from purgetss/brand/
35
27
  padding: {
36
28
  ios: '4%', // iOS aesthetic. Range: 2% bold — 8% conservative. No launcher mask.
37
29
  androidLegacy: '10%', // legacy ic_launcher.png padding
@@ -41,15 +33,14 @@ const BRAND_BLOCK = ` brand: {
41
33
  splash: false, // also generate splash_icon.png × 5
42
34
  notification: false // also generate ic_stat_notify.png × 5
43
35
  },
36
+ ios: {
37
+ dark: true, // generate iOS 18+ Dark appearance icon
38
+ tinted: true, // generate iOS 18+ Tinted appearance icon
39
+ darkBackground: null // null = transparent per Apple HIG
40
+ },
44
41
  colors: {
45
42
  background: '#FFFFFF' // Android adaptive bg + iOS/marketplace flatten
46
43
  },
47
- // Optional iOS overrides:
48
- // ios: {
49
- // dark: false,
50
- // tinted: false,
51
- // darkBackground: '#111111'
52
- // },
53
44
  confirmOverwrites: true // prompt before overwriting files (set false to skip)
54
45
  },
55
46
  `
@@ -84,6 +84,10 @@ function printFullNotes(opts) {
84
84
  logger.section('Configuration reminders')
85
85
  console.log(' The tool does NOT auto-edit tiapp.xml. Snippets below are optional —')
86
86
  console.log(' paste only what you need, after reviewing.')
87
+ console.log(' If your app already uses a custom Android theme, merge these changes')
88
+ console.log(' into that theme instead of replacing it blindly.')
89
+ console.log(' brand is designed around the modern Titanium icon pipeline, not around')
90
+ console.log(' older Android splash themes such as background.png / background.9.png.')
87
91
  console.log()
88
92
  console.log(` ${chalk.yellow('⚠')} ${chalk.yellow('tiapp.xml <application> tag may be self-closing')}`)
89
93
  console.log(' If yours looks like:')
@@ -114,14 +118,18 @@ function printFullNotes(opts) {
114
118
  console.log(' If you want the Android 12+ splash to use splash_icon instead of')
115
119
  console.log(' ic_launcher, add a custom theme and point')
116
120
  console.log(code(' <item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_icon</item>'))
121
+ console.log(' If you still see a brief flash during splash exit, the artifact may')
122
+ console.log(' come from Titanium or the system splash transition rather than from')
123
+ console.log(' the generated PNG assets themselves.')
117
124
  }
118
125
 
119
126
  console.log()
120
127
  console.log(` ${num(withSplash ? '4.' : '3.')} ${chalk.cyan('Android <12 legacy splash')}`)
121
- console.log(' PurgeTSS brand now regenerates app/assets/android/default.png as')
122
- console.log(' a legacy fallback splash for Titanium projects.')
123
- console.log(' If your app uses a custom windowBackground / background.9.png theme,')
124
- console.log(' that custom theme still takes precedence.')
128
+ console.log(' PurgeTSS brand still regenerates app/assets/android/default.png as')
129
+ console.log(' a compatibility fallback while Titanium continues to recognize it.')
130
+ console.log(' It is not the primary modern path. If your app uses a custom')
131
+ console.log(' windowBackground / background.9.png theme, that custom theme still')
132
+ console.log(' takes precedence and should be managed manually.')
125
133
 
126
134
  if (withNotification) {
127
135
  const colorsDir = projectType === 'classic'