@maccesar/titools 5.1.0 → 5.2.0
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 +44 -12
- package/agents/ti-pro.md +4 -0
- package/commands/ti-audit.md +4 -0
- package/lib/config.js +2 -0
- package/package.json +1 -1
- package/skills/purgetss/SKILL.md +4 -4
- package/skills/purgetss/references/EXAMPLES.md +3 -3
- package/skills/purgetss/references/adopting-purgetss.md +2 -2
- package/skills/purgetss/references/animation-advanced.md +2 -2
- package/skills/purgetss/references/arbitrary-values.md +8 -5
- package/skills/purgetss/references/class-categories.md +5 -5
- package/skills/purgetss/references/class-index-properties.md +6 -6
- package/skills/purgetss/references/class-index.md +2 -2
- package/skills/purgetss/references/cli-commands.md +2 -2
- package/skills/purgetss/references/dynamic-component-creation.md +2 -2
- package/skills/purgetss/references/grid-layout.md +1 -1
- package/skills/purgetss/references/migration-guide.md +34 -4
- package/skills/purgetss/references/multi-density-images.md +6 -6
- package/skills/purgetss/references/platform-modifiers.md +21 -0
- package/skills/purgetss/references/ui-ux-design.md +1 -1
- package/skills/purgetss/references/version-history.md +9 -4
- package/skills/ti-admob-unified/SKILL.md +44 -0
- package/skills/ti-admob-unified/agents/openai.yaml +4 -0
- package/skills/ti-admob-unified/assets/example/app.js +1003 -0
- package/skills/ti-admob-unified/assets/example/lib/ads.js +618 -0
- package/skills/ti-admob-unified/assets/example/library-usage.js +104 -0
- package/skills/ti-admob-unified/references/api-reference.md +592 -0
- package/skills/ti-admob-unified/references/banners.md +435 -0
- package/skills/ti-admob-unified/references/contributing.md +228 -0
- package/skills/ti-admob-unified/references/dependencies.md +85 -0
- package/skills/ti-admob-unified/references/fullscreen.md +223 -0
- package/skills/ti-admob-unified/references/game-monetization.md +17 -0
- package/skills/ti-admob-unified/references/getting-started.md +275 -0
- package/skills/ti-admob-unified/references/index.md +30 -0
- package/skills/ti-admob-unified/references/integration.md +85 -0
- package/skills/ti-admob-unified/references/library.md +189 -0
- package/skills/ti-admob-unified/references/mediation.md +132 -0
- package/skills/ti-admob-unified/references/migration.md +255 -0
- package/skills/ti-admob-unified/references/module-changelog.md +54 -0
- package/skills/ti-admob-unified/references/module-license.txt +21 -0
- package/skills/ti-admob-unified/references/privacy.md +254 -0
- package/skills/ti-admob-unified/references/roadmap.md +146 -0
- package/skills/ti-admob-unified/references/source-notes.md +33 -0
- package/skills/ti-admob-unified/references/source-snapshot.json +440 -0
- package/skills/ti-admob-unified/references/third-party-notices.md +22 -0
- package/skills/ti-game/SKILL.md +10 -1
- package/skills/ti-game/references/api.md +10 -2
- package/skills/ti-game/references/debugging-performance.md +6 -0
- package/skills/ti-game/references/examples.md +11 -1
- package/skills/ti-game/references/patterns.md +24 -2
- package/skills/ti-game/references/physics.md +502 -0
- package/skills/ti-game/references/project-setup.md +23 -1
- package/skills/ti-game/references/recipes-action.md +46 -14
- package/skills/ti-game/references/recipes-adventure-effects.md +12 -1
- package/skills/ti-game/references/roadmap.md +2 -2
- package/skills/ti-game/references/tilemaps.md +2 -1
- package/skills/ti-game-assets/SKILL.md +53 -0
- package/skills/ti-game-assets/agents/openai.yaml +4 -0
- package/skills/ti-game-assets/references/alpha.md +26 -0
- package/skills/ti-game-assets/references/art-direction.md +37 -0
- package/skills/ti-game-assets/references/integration.md +49 -0
- package/skills/ti-game-assets/references/manifest.example.json +429 -0
- package/skills/ti-game-assets/references/manifest.md +39 -0
- package/skills/ti-game-assets/references/offline-audio.md +33 -0
- package/skills/ti-game-assets/references/prompts.md +33 -0
- package/skills/ti-game-assets/references/repeating-textures.md +17 -0
- package/skills/ti-game-assets/references/responsible-ads.md +31 -0
- package/skills/ti-game-assets/references/sound-assets.md +42 -0
- package/skills/ti-game-assets/references/vector-sources.md +21 -0
- package/skills/ti-game-assets/scripts/alpha_tools.py +160 -0
- package/skills/ti-game-assets/scripts/requirements.txt +1 -0
- package/skills/ti-game-assets/scripts/validate_manifest.py +267 -0
- package/skills/ti-synthengine/SKILL.md +37 -13
- package/skills/ti-synthengine/references/api.md +397 -31
- package/skills/ti-synthengine/references/audio-engine.md +235 -14
- package/skills/ti-synthengine/references/examples.md +396 -17
- package/skills/ti-synthengine/references/guide.md +331 -12
- package/skills/ti-synthengine/references/recipes.md +212 -22
- package/skills/ti-synthengine/references/recommendations.md +53 -16
- package/skills/ti-synthengine/references/sound-design.md +359 -15
- package/skills/ti-synthengine/references/source-notes.md +121 -0
- package/skills/ti-synthengine/references/source-snapshot.json +105 -0
- package/skills/ti-synthengine/references/stats-performance.json +2992 -0
- package/skills/ti-synthengine/references/stats-performance.md +38 -0
- package/skills/ti-synthengine/references/troubleshooting.md +61 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Migration Guide
|
|
2
2
|
|
|
3
|
-
This guide summarizes the official PurgeTSS changelog: `CHANGELOG.md` in the package repository and the docs changelog page (`src/pages/changelog.md`, published at <https://purgetss.com/changelog>). It walks through the upgrade-relevant changes from v7.2.6 through v7.
|
|
3
|
+
This guide summarizes the official PurgeTSS changelog: `CHANGELOG.md` in the package repository and the docs changelog page (`src/pages/changelog.md`, published at <https://purgetss.com/changelog>). It walks through the upgrade-relevant changes from v7.2.6 through v7.18.0, flags breaking changes, and links each section to the reference files that cover the new surface area in depth.
|
|
4
4
|
|
|
5
5
|
Changelog source of truth: [CHANGELOG.md](https://github.com/macCesar/purgetss/blob/main/CHANGELOG.md).
|
|
6
6
|
|
|
@@ -9,6 +9,7 @@ Changelog source of truth: [CHANGELOG.md](https://github.com/macCesar/purgetss/b
|
|
|
9
9
|
<!-- TOC-START -->
|
|
10
10
|
## Contents
|
|
11
11
|
|
|
12
|
+
- [Upgrade to v7.18.0](#upgrade-to-v7180)
|
|
12
13
|
- [Upgrade to v7.17.x](#upgrade-to-v717x)
|
|
13
14
|
- [Upgrade to v7.16.x](#upgrade-to-v716x)
|
|
14
15
|
- [Upgrade to v7.15.0](#upgrade-to-v7150)
|
|
@@ -33,6 +34,35 @@ Changelog source of truth: [CHANGELOG.md](https://github.com/macCesar/purgetss/b
|
|
|
33
34
|
|
|
34
35
|
<!-- TOC-END -->
|
|
35
36
|
|
|
37
|
+
## Upgrade to v7.18.0
|
|
38
|
+
|
|
39
|
+
v7.18.0 fixes the defects an audit of the CLI found, and removes three things that never worked. Full release notes in [`version-history.md`](./version-history.md).
|
|
40
|
+
|
|
41
|
+
### Removed
|
|
42
|
+
|
|
43
|
+
- **The `(Npx)` check.** `w-(100px)` is valid again and generates `width: '100px'`, explicit pixels. A unitless `w-(100)` still follows `ti.ui.defaultunit`. The pre-validator now catches four patterns. See [`arbitrary-values.md`](./arbitrary-values.md#class-syntax-pre-validation).
|
|
44
|
+
- **`snap-magnet` and `snap-magnet-false`.** The animation module never read `snap.magnet`.
|
|
45
|
+
- **`init --all`.** Declared in 7.0.0, never implemented. The root `purgetss --all` is unaffected.
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- **Stacked modifiers** such as `ios:tablet:bg-red-500` are generated, with every condition in one bracket. See [`platform-modifiers.md`](./platform-modifiers.md#combining-a-platform-and-a-device).
|
|
50
|
+
- **Icon classes written only with a modifier** (`android:ms-home`) are generated.
|
|
51
|
+
- **`bg-from-(#hex)`** writes a gradient instead of a literal `{value1}`.
|
|
52
|
+
- **Font Awesome Pro/Beta:** `purgetss build` no longer fails with `ENOENT`, and `icon-library --module` / `--styles` build the files instead of printing a placeholder.
|
|
53
|
+
- **`icon-library --vendor`** accepts `materialsymbols`; an unknown value stops the command before it writes anything.
|
|
54
|
+
- **The nine `*-keyboard-type-appearance*` classes are gone.** They assigned an appearance constant to `keyboardType`; use `keyboard-appearance-*`.
|
|
55
|
+
- **`images --width`** accepts 1 to 1024; above 1024 it used to write some densities and then fail at the 4096 px cap.
|
|
56
|
+
- **`images`** detects Alloy from `app/views/`, like every other command.
|
|
57
|
+
- **`swap()`** reads the source view's position from `rect` when it has no `top`/`left`.
|
|
58
|
+
|
|
59
|
+
### What to review
|
|
60
|
+
|
|
61
|
+
- Replace any `snap-magnet`, `*-keyboard-type-appearance*` or `init --all` in your project or scripts.
|
|
62
|
+
- Anything you rewrote from `(Npx)` to a unitless value to get past the check now uses `dp` instead of pixels; restore the `px` if pixels are what you meant.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
36
66
|
## Upgrade to v7.17.x
|
|
37
67
|
|
|
38
68
|
v7.17.0 and v7.17.1 change two things an existing project can trip over: unknown keys in `images:` now abort the run, and the notification icon has a new filename. Full release notes in [`version-history.md`](./version-history.md).
|
|
@@ -328,11 +358,11 @@ Five patterns are now caught and reported with file + line + suggested fix:
|
|
|
328
358
|
| Whitespace inside parentheses | `wh-( 200 )` | `wh-(200)` |
|
|
329
359
|
| Redundant `px` unit | `top-(10px)` | `top-(10)` |
|
|
330
360
|
|
|
331
|
-
All offenders are reported in a single run. Generic unknown classes — typos, vendor utilities not enabled, custom classes not declared yet — continue to flow into `// Unused or unsupported classes`. See [`arbitrary-values.md` → Class syntax pre-validation](./arbitrary-values.md#class-syntax-pre-validation).
|
|
361
|
+
v7.18.0 removed the redundant-`px` pattern (see [Upgrade to v7.18.0](#upgrade-to-v7180)). All offenders are reported in a single run. Generic unknown classes — typos, vendor utilities not enabled, custom classes not declared yet — continue to flow into `// Unused or unsupported classes`. See [`arbitrary-values.md` → Class syntax pre-validation](./arbitrary-values.md#class-syntax-pre-validation).
|
|
332
362
|
|
|
333
363
|
### Added — `purgetss images --width <n>` (v7.8.0)
|
|
334
364
|
|
|
335
|
-
Pins Android `mdpi` (= iPhone `@1x`) to `<n>` pixels wide. Larger scales derive as ×1.5, ×2, ×3, ×4 from that base. Range `[1, 8192]
|
|
365
|
+
Pins Android `mdpi` (= iPhone `@1x`) to `<n>` pixels wide. Larger scales derive as ×1.5, ×2, ×3, ×4 from that base. Range `[1, 8192]` (v7.18.0 narrowed it to `[1, 1024]`). Most useful for SVG sources from vector editors (Affinity, Illustrator) with disproportionate viewBoxes. CLI-only — width is per-asset, not a project-wide setting. See [`multi-density-images.md`](./multi-density-images.md#pinning-the-output-width-with---width).
|
|
336
366
|
|
|
337
367
|
### Fixed in v7.8.0
|
|
338
368
|
|
|
@@ -498,7 +528,7 @@ v7.4.0 is the **Animation module expansion**. Nine new methods bring the Animati
|
|
|
498
528
|
### Added
|
|
499
529
|
|
|
500
530
|
- **New methods**: `transition`, `pulse`, `sequence`, `swap`, `shake`, `snapTo`, `reorder`, `undraggable`, `detectCollisions`.
|
|
501
|
-
- **New utility classes**: `snap-back`, `snap-center`, `snap-magnet`, `keep-z-index
|
|
531
|
+
- **New utility classes**: `snap-back`, `snap-center`, `snap-magnet`, `keep-z-index` (`snap-magnet` was removed in v7.18.0).
|
|
502
532
|
- **Delta-based drag for transformed views** — drag math now works correctly when the view already has a 2D transform applied.
|
|
503
533
|
- **Position normalization** and **property inheritance** from the Animation object — reduces boilerplate when sequencing multiple animations on the same view.
|
|
504
534
|
|
|
@@ -156,20 +156,20 @@ The pinned width drives the scale for every density:
|
|
|
156
156
|
|
|
157
157
|
### Validation
|
|
158
158
|
|
|
159
|
-
`--width` accepts integers in `[1,
|
|
159
|
+
`--width` accepts integers in `[1, 1024]` (v7.18.0; earlier versions accepted up to 8192 and then failed on the 4096 px cap). Out-of-range values are rejected immediately and the command exits without writing anything:
|
|
160
160
|
|
|
161
161
|
```bash
|
|
162
162
|
purgetss images logo.svg --width 0
|
|
163
|
-
# Invalid --width '0'. Must be an integer between 1 and
|
|
163
|
+
# Invalid --width '0'. Must be an integer between 1 and 1024.
|
|
164
164
|
|
|
165
165
|
purgetss images logo.svg --width 9000
|
|
166
|
-
# Invalid --width '9000'. Must be an integer between 1 and
|
|
166
|
+
# Invalid --width '9000'. Must be an integer between 1 and 1024.
|
|
167
167
|
|
|
168
168
|
purgetss images logo.svg --width abc
|
|
169
|
-
# Invalid --width 'NaN'. Must be an integer between 1 and
|
|
169
|
+
# Invalid --width 'NaN'. Must be an integer between 1 and 1024.
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
-
Passing validation does not guarantee a run: every output is capped at 4096 px per side, and
|
|
172
|
+
Passing validation does not guarantee a run: every output is capped at 4096 px per side, width and height, and the height follows the source's aspect ratio. A source taller than it is wide can still abort at `xxxhdpi` with `… exceeds the 4096px cap`.
|
|
173
173
|
|
|
174
174
|
### The hint message for unflagged SVGs
|
|
175
175
|
|
|
@@ -531,7 +531,7 @@ Classic projects have no PurgeTSS build step: generate the images, then run `ti
|
|
|
531
531
|
| --- | --- |
|
|
532
532
|
| `--format <ext>` | Convert all outputs to: `webp`, `jpeg`, `png`, `avif`, `gif`, `tiff`. Default: keep source format. |
|
|
533
533
|
| `--quality <n>` | Quality `0–100` for `webp`, `jpeg`, `avif` and `tiff`. PNG and GIF ignore it. Default `85`. |
|
|
534
|
-
| `--width <n>` | (v7.8.0) Pin `mdpi` / `@1x` output width to `n` pixels; validated to `[1,
|
|
534
|
+
| `--width <n>` | (v7.8.0) Pin `mdpi` / `@1x` output width to `n` pixels; validated to `[1, 1024]`, because `xxxhdpi` renders at 4× and outputs are capped at 4096 px. Other densities derive from this base (×1.5 / ×2 / ×3 / ×4). Most useful for SVG sources with non-standard viewBoxes. CLI-only — no `config.cjs` equivalent because width is per-asset. |
|
|
535
535
|
| `--opacity <n>` | (v7.10.0) Multiply the alpha channel of every generated density by `n/100`. Range `[0, 100]`. Combine with `--format jpeg` and the alpha is flattened on white instead of producing a transparent JPEG. CLI-only. |
|
|
536
536
|
| `--padding <n>` | (v7.10.0) Shrink the rendered image inside each density canvas by `n%` symmetric borders. Range `[0, 40]`. CLI-only. |
|
|
537
537
|
| `--output <relpath>` | (v7.10.0) Override the basename and subpath relative to each platform's `images/` root. Lets a source from outside `purgetss/images/` (e.g. `purgetss/brand/`) write into a custom output folder like `images/logos/`. CLI-only. |
|
|
@@ -43,6 +43,27 @@ You can set different background colors and font sizes per platform and device,
|
|
|
43
43
|
'.tablet:bg-green-500[formFactor=tablet]': { backgroundColor: '#22c55e' }
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
+
## Combining a platform and a device
|
|
47
|
+
|
|
48
|
+
Since v7.18.0, stack one platform modifier and one device modifier, in either order. Both conditions go in a single bracket, because Alloy's styler keeps only the last `[...]` of a selector.
|
|
49
|
+
|
|
50
|
+
```xml
|
|
51
|
+
<View class="ios:tablet:bg-red-500 tablet:ios:mt-4" />
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```tss
|
|
55
|
+
'.ios:tablet:bg-red-500[platform=ios formFactor=tablet]': { backgroundColor: '#ef4444' }
|
|
56
|
+
'.tablet:ios:mt-4[formFactor=tablet platform=ios]': { top: 16 }
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
A platform modifier that contradicts a platform-scoped class generates nothing and leaves a comment in `app.tss`:
|
|
60
|
+
|
|
61
|
+
```tss
|
|
62
|
+
// Conflicting modifiers, class not generated: '.android:status-bar-dark' (platform is already ios)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Before v7.18.0, a stacked class was not generated, and `tablet:` on an iOS-only class produced `[platform=ios][formFactor=tablet]`, which Alloy read as tablet-only on both platforms.
|
|
66
|
+
|
|
46
67
|
## Community-Discovered Patterns
|
|
47
68
|
|
|
48
69
|
The following guidance comes from community experience combining platform modifiers with platform-specific Titanium constants.
|
|
@@ -169,7 +169,7 @@ The catalog below collects real-world UI patterns verified against Titanium's co
|
|
|
169
169
|
```
|
|
170
170
|
|
|
171
171
|
> **⚠️ Input Padding**
|
|
172
|
-
> Padding utilities (`p-`, `px-`, `py-`) set the `padding` property, which the Titanium API defines only on `TextField` and `TextArea` (Android and iOS; `TextArea` honors left and right only) and `Ti.UI.Android.CardView` (apidoc 13_4_1_GA).
|
|
172
|
+
> Padding utilities (`p-`, `px-`, `py-`) set the `padding` property, which the Titanium API defines only on `TextField` and `TextArea` (Android and iOS; `TextArea` honors left and right only) and `Ti.UI.Android.CardView` (apidoc 13_4_1_GA). They are NOT for `Button` (especially iOS/Mac) and NOT on container views (`View`, `Window`, `ScrollView`, `TableView`). Use margins on children to simulate internal spacing on containers.
|
|
173
173
|
|
|
174
174
|
## Buttons
|
|
175
175
|
|
|
@@ -8,7 +8,12 @@ When in doubt about whether a class, flag, or config key exists in the user's in
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## v7.18.0
|
|
12
|
+
- **`(Npx)` is valid again.** The redundant-`px` check is gone: `w-(100px)` generates `width: '100px'`, explicit pixels; unitless values follow `ti.ui.defaultunit`. The pre-validator catches 4 patterns. See [arbitrary-values.md](arbitrary-values.md).
|
|
13
|
+
- Stacked modifiers (`ios:tablet:`, either order) generate one bracket, `[platform=ios formFactor=tablet]`; a contradicting modifier leaves a comment in `app.tss`. See [platform-modifiers.md](platform-modifiers.md).
|
|
14
|
+
- Removed: `snap-magnet` / `snap-magnet-false`, the nine `*-keyboard-type-appearance*` classes, and `init --all`.
|
|
15
|
+
- Fixed: `bg-from-(#hex)`, icon classes written only with a modifier, Font Awesome Pro/Beta in `build` and `icon-library -m/-s`, `icon-library --vendor=materialsymbols` (unknown vendors now abort), `images --width` limited to 1–1024, one `detectProjectType()`, `swap()` falling back to `rect`.
|
|
16
|
+
- The `padding` block in `utilities.tss` is no longer labeled Android-only.
|
|
12
17
|
- The comment above the opt-in pieces in the generated config now names each consumer instead of claiming both are inert without hand-edited XML. Only `splash_icon` is.
|
|
13
18
|
|
|
14
19
|
## v7.17.1
|
|
@@ -108,7 +113,7 @@ When in doubt about whether a class, flag, or config key exists in the user's in
|
|
|
108
113
|
|
|
109
114
|
## v7.8.0
|
|
110
115
|
- `purgetss images --width <n>` pins Android `mdpi` / iPhone `@1x` to `<n>` pixels for SVG sources with disproportionate viewBoxes (Affinity, Illustrator). CLI-only.
|
|
111
|
-
- Class syntax pre-validation emits `Class Syntax Error` blocks for 5 patterns: inverted negative (`top-(-10)` → `-top-(10)`), brackets (`top-[10px]` → `top-(10px)`), empty parens (`wh-()`), whitespace in parens, redundant `px` unit. Generic unknown classes still flow into `// Unused or unsupported classes`.
|
|
116
|
+
- Class syntax pre-validation emits `Class Syntax Error` blocks for 5 patterns: inverted negative (`top-(-10)` → `-top-(10)`), brackets (`top-[10px]` → `top-(10px)`), empty parens (`wh-()`), whitespace in parens, redundant `px` unit (removed in v7.18.0). Generic unknown classes still flow into `// Unused or unsupported classes`.
|
|
112
117
|
|
|
113
118
|
## v7.7.0
|
|
114
119
|
- `brand:` config restructured into grouped sections: `brand.logos`, `brand.padding`, `brand.android`, `brand.ios`, `brand.colors`. Old projects keep working; new configs use grouped form. See [app-branding.md](app-branding.md).
|
|
@@ -129,7 +134,7 @@ When in doubt about whether a class, flag, or config key exists in the user's in
|
|
|
129
134
|
|
|
130
135
|
## v7.5.1
|
|
131
136
|
- Fix: `dist/purgetss.ui.js` shipped in v7.5.0 without `pulse()`, the latest `transition()` improvements, and delta-based drag for transformed views; rebuilt from the template. Re-run `purgetss module` to get them.
|
|
132
|
-
- Fix: `snap-back`, `snap-center`, `snap-magnet`, and `keep-z-index` classes are now generated in `utilities.tss
|
|
137
|
+
- Fix: `snap-back`, `snap-center`, `snap-magnet`, and `keep-z-index` classes are now generated in `utilities.tss` (`snap-magnet` was removed in v7.18.0).
|
|
133
138
|
- Font Awesome updated to 7.2.0.
|
|
134
139
|
|
|
135
140
|
## v7.5.0
|
|
@@ -140,7 +145,7 @@ When in doubt about whether a class, flag, or config key exists in the user's in
|
|
|
140
145
|
|
|
141
146
|
## v7.4.0
|
|
142
147
|
- Animation module: 9 new methods (`transition`, `pulse`, `sequence`, `swap`, `shake`, `snapTo`, `reorder`, `undraggable`, `detectCollisions`). 15 methods total. See [animation-system.md](animation-system.md).
|
|
143
|
-
- New utility classes: `snap-back`, `snap-center`, `snap-magnet`, `keep-z-index
|
|
148
|
+
- New utility classes: `snap-back`, `snap-center`, `snap-magnet`, `keep-z-index` (`snap-magnet` removed in v7.18.0).
|
|
144
149
|
- Delta-based drag for transformed views; property inheritance from Animation object.
|
|
145
150
|
|
|
146
151
|
## v7.3.1
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ti-admob-unified
|
|
3
|
+
description: "Use when a Titanium app declares ti.admob.unified or its mediation complements, imports require('ti.admob.unified'), or asks to integrate/configure AdMob banners, interstitials, rewarded or app-open ads, UMP/ATT, privacy options, lifecycle, ad frequency or AppLovin, Meta, InMobi, Unity and Liftoff mediation with this module. Applies to Alloy and Classic on Android/iOS."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ti.admob.unified — ads, privacy and providers
|
|
7
|
+
|
|
8
|
+
Integrate César's unified Titanium module using its official documentation and maintained application library. The local **1.0.0** contract is preparing for its first public release; do not claim a public release or usable production demand from these snapshots. Sources are pinned to **`5b4cbf9347a51c4f959dc262ac1500f82f28b4a0`**, copied 2026-10-11. See `references/source-snapshot.json` for paths/hashes and [references/source-notes.md](references/source-notes.md) for provenance and update checks. Check the installed build and current sources when behavior differs.
|
|
9
|
+
|
|
10
|
+
## Required workflow
|
|
11
|
+
|
|
12
|
+
Read the relevant references before proposing calls or configuration. Do not infer this API from old `ti.admob`, `ti.android.admob` or raw Google SDK examples.
|
|
13
|
+
|
|
14
|
+
| Task | Read first |
|
|
15
|
+
| --- | --- |
|
|
16
|
+
| Install artifacts, app IDs, platform settings, first test request | [references/getting-started.md](references/getting-started.md) |
|
|
17
|
+
| Ownership, navigation, layout, refresh, Alloy/Classic integration | [references/integration.md](references/integration.md), [references/library.md](references/library.md) |
|
|
18
|
+
| Exact factories/methods/options/events/constants/payloads | [references/api-reference.md](references/api-reference.md) |
|
|
19
|
+
| Consent-first startup, ATT, privacy options, request eligibility | [references/privacy.md](references/privacy.md) |
|
|
20
|
+
| Fixed/adaptive banners, real reserved layout and pause/cleanup | [references/banners.md](references/banners.md) |
|
|
21
|
+
| Interstitial/rewarded/app-open load/show, rewards and cleanup | [references/fullscreen.md](references/fullscreen.md) |
|
|
22
|
+
| Select/install providers, publisher accounts, mappings, diagnostics | [references/mediation.md](references/mediation.md), [references/dependencies.md](references/dependencies.md) |
|
|
23
|
+
| Replace legacy modules or internal builds | [references/migration.md](references/migration.md) |
|
|
24
|
+
| Unsupported formats, extending providers, license/distribution | [references/roadmap.md](references/roadmap.md), [references/contributing.md](references/contributing.md), [references/third-party-notices.md](references/third-party-notices.md) |
|
|
25
|
+
| Game experience and frequency decisions | [references/game-monetization.md](references/game-monetization.md), plus fullscreen/privacy |
|
|
26
|
+
|
|
27
|
+
Cite factual guidance with `[source: references/<file>.md]`. If the relevant source is unavailable, mark the claim `FROM_MEMORY (unverified):` and do not invent a method or provider setting.
|
|
28
|
+
|
|
29
|
+
## Integration invariants
|
|
30
|
+
|
|
31
|
+
- Inspect `tiapp.xml`, installed artifacts, project type and existing ad owner before adding another boundary. Use `ti-guides`/`ti-howtos`, Alloy or UI skills as applicable.
|
|
32
|
+
- Prefer the official copy-ready `assets/example/lib/ads.js`: copy unchanged to Alloy `app/lib/ads.js` or Classic `Resources/lib/ads.js`. Its documentation imports `require('lib/ads')`; preserve its path and provenance. `assets/example/library-usage.js` and `assets/example/app.js` are official integration evidence, not navigation templates to paste wholesale.
|
|
33
|
+
- Follow the documented UMP → request eligibility → initialization sequence. `canRequestAds()` is the gate, not ATT status or a guessed personalization flag. Resolve requested ATT separately; do not request it without an actual use case. Preserve privacy options and named-listener cleanup.
|
|
34
|
+
- Application IDs and ad-unit IDs are different. Use documented test IDs during development; do not switch to production IDs as an incidental fix.
|
|
35
|
+
- Native activity/app lifecycle and SDK banner refresh belong to the module/Google. The app owns tab/window coverage and reserved layout. Do not add refresh timers or duplicate background handlers for banners.
|
|
36
|
+
- Separate loading from deliberate fullscreen presentation. Do not show from a load callback. Coordinate game clock/audio/inputs and ad ownership; handle no-fill, failed presentation, actual close and destroyed screens without repeated ads or late navigation.
|
|
37
|
+
- Install only selected mediation complements on each target platform. All application calls use `ti.admob.unified`. Configure provider accounts and AdMob mappings; neither a packaged adapter nor `ready` diagnostics nor a Google test ad proves provider delivery. Do not invent placeholder keys, manual provider initializers or an `enableMediation` option.
|
|
38
|
+
- Consult the roadmap before suggesting native ads, rewarded interstitial or a network outside the distributed set. Supporting several formats does not justify enabling all of them in a game.
|
|
39
|
+
|
|
40
|
+
## Acceptance
|
|
41
|
+
|
|
42
|
+
Report separately: source/contract review, configuration/build/linking, Google test-ad behavior, each selected provider's own test delivery, and physical-device lifecycle/layout/visual acceptance. Use Ad Inspector as documented and re-check current Google/provider setup guidance before live configuration. A reported impression or passing stand-in test does not certify visible creative content or consent propagation. Do not click production ads to test delivery. No account creation, credentials, live ad activation or publishing is implied by ordinary integration work.
|
|
43
|
+
|
|
44
|
+
For games, use `ti-game` for native pause/cleanup and `ti-game-assets` for audiovisual assets. Respect the existing game's presentation policy; defaults and quotas are product choices to measure, not optimal values certified by this module.
|