@maccesar/titools 5.2.0 → 5.2.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/CONTRIBUTING.md +69 -0
- package/README.md +80 -72
- package/agents/ti-pro.md +1 -1
- package/commands/ti-audit.md +2 -2
- package/docs/examples.md +91 -0
- package/docs/knowledge-index.md +57 -0
- package/lib/downloader.js +1 -1
- package/package.json +4 -2
- package/skills/purgetss/references/multi-density-images.md +1 -1
- package/skills/ti-admob-unified/SKILL.md +21 -7
- package/skills/ti-admob-unified/assets/example/app.js +229 -25
- package/skills/ti-admob-unified/assets/example/lib/ads.js +30 -2
- package/skills/ti-admob-unified/assets/example/library-usage.js +33 -1
- package/skills/ti-admob-unified/references/api-reference.md +39 -16
- package/skills/ti-admob-unified/references/banners.md +9 -9
- package/skills/ti-admob-unified/references/contributing.md +14 -9
- package/skills/ti-admob-unified/references/dependencies.md +31 -25
- package/skills/ti-admob-unified/references/fullscreen.md +43 -28
- package/skills/ti-admob-unified/references/game-monetization.md +138 -7
- package/skills/ti-admob-unified/references/getting-started.md +75 -31
- package/skills/ti-admob-unified/references/index.md +5 -2
- package/skills/ti-admob-unified/references/integration.md +8 -6
- package/skills/ti-admob-unified/references/library.md +41 -10
- package/skills/ti-admob-unified/references/mediation-parity.md +17 -0
- package/skills/ti-admob-unified/references/mediation.md +22 -9
- package/skills/ti-admob-unified/references/migration.md +11 -7
- package/skills/ti-admob-unified/references/module-changelog.md +41 -11
- package/skills/ti-admob-unified/references/privacy.md +35 -8
- package/skills/ti-admob-unified/references/production.md +67 -0
- package/skills/ti-admob-unified/references/rewarded-interstitial.md +101 -0
- package/skills/ti-admob-unified/references/roadmap.md +28 -31
- package/skills/ti-admob-unified/references/source-notes.md +51 -4
- package/skills/ti-admob-unified/references/source-snapshot.json +249 -45
- package/skills/ti-admob-unified/references/third-party-notices.md +4 -4
- package/skills/ti-game/SKILL.md +23 -6
- package/skills/ti-game/references/api.md +34 -30
- package/skills/ti-game/references/debugging-performance.md +18 -9
- package/skills/ti-game/references/examples.md +103 -20
- package/skills/ti-game/references/input.md +101 -0
- package/skills/ti-game/references/patterns.md +39 -15
- package/skills/ti-game/references/physics.md +80 -52
- package/skills/ti-game/references/project-setup.md +118 -56
- package/skills/ti-game/references/recipes-action.md +107 -8
- package/skills/ti-game/references/recipes-adventure-effects.md +41 -9
- package/skills/ti-game/references/roadmap.md +10 -3
- package/skills/ti-game/references/source-notes.md +81 -0
- package/skills/ti-game/references/tilemaps.md +12 -4
- package/skills/ti-synthengine/SKILL.md +81 -95
- package/skills/ti-synthengine/assets/example/README.md +84 -0
- package/skills/ti-synthengine/assets/example/app.js +1178 -0
- package/skills/ti-synthengine/assets/example/lib/sequenceOwner.js +83 -0
- package/skills/ti-synthengine/assets/example/lib/sequenceScore.js +25 -0
- package/skills/ti-synthengine/references/advanced-examples.md +174 -0
- package/skills/ti-synthengine/references/android-sim80-correction-evidence.zip +0 -0
- package/skills/ti-synthengine/references/android-sim80-correction.json +162 -0
- package/skills/ti-synthengine/references/api.md +434 -380
- package/skills/ti-synthengine/references/audio-engine.md +157 -230
- package/skills/ti-synthengine/references/bypass-physical-recheck-evidence.zip +0 -0
- package/skills/ti-synthengine/references/examples.md +123 -253
- package/skills/ti-synthengine/references/frontier-android-evidence.zip +0 -0
- package/skills/ti-synthengine/references/frontier-ipad-evidence.zip +0 -0
- package/skills/ti-synthengine/references/frontier-physical-validation.json +1918 -0
- package/skills/ti-synthengine/references/guide.md +188 -156
- package/skills/ti-synthengine/references/performance-review-evidence.zip +0 -0
- package/skills/ti-synthengine/references/performance-review.json +1146 -0
- package/skills/ti-synthengine/references/physical-validation.json +1457 -0
- package/skills/ti-synthengine/references/recipes-interaction.md +549 -0
- package/skills/ti-synthengine/references/recipes.md +423 -599
- package/skills/ti-synthengine/references/recommendations.md +63 -113
- package/skills/ti-synthengine/references/sound-design.md +134 -258
- package/skills/ti-synthengine/references/source-notes.md +93 -105
- package/skills/ti-synthengine/references/source-snapshot.json +379 -32
- package/skills/ti-synthengine/references/stats-performance.md +64 -20
- package/skills/ti-synthengine/references/studio-validation.json +6202 -0
- package/skills/ti-synthengine/references/troubleshooting.md +109 -121
- package/skills/ti-synthengine/references/unified-bypass-performance.json +22425 -0
- package/skills/ti-synthengine/references/unified-validation.json +314 -0
- package/AGENTS-VERCEL-RESEARCH.md +0 -175
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Contributing to TiTools
|
|
2
|
+
|
|
3
|
+
TiTools distributes thirteen Titanium SDK skills, a research agent and slash
|
|
4
|
+
commands through an npm CLI and a Claude Code marketplace plugin. Product
|
|
5
|
+
content lives in `skills/`, `agents/` and `commands/`; CLI source lives in
|
|
6
|
+
`bin/` and `lib/`. Both channels use this source tree.
|
|
7
|
+
|
|
8
|
+
## Development
|
|
9
|
+
|
|
10
|
+
Use Node.js 18 or newer. Install dependencies with `npm ci`.
|
|
11
|
+
|
|
12
|
+
Run the tests that cover a change first:
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
node --test test/manifest.test.js
|
|
16
|
+
npm run lint
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Tests use Node's built-in runner. Asset-helper checks additionally require the
|
|
20
|
+
Python dependencies in `skills/ti-game-assets/scripts/requirements.txt`.
|
|
21
|
+
Scripts under `scripts/` maintain reference navigation, fences and snapshots;
|
|
22
|
+
they are repository tooling and are not installed as CLI commands.
|
|
23
|
+
|
|
24
|
+
## Skill and command changes
|
|
25
|
+
|
|
26
|
+
- A skill's directory and frontmatter `name` must match, using kebab-case.
|
|
27
|
+
- Descriptions explain when to load the skill, stay within 1,024 characters and
|
|
28
|
+
begin with "Use when". Skill names have a 64-character limit.
|
|
29
|
+
- Register new public skills in `lib/config.js`, the `ti-pro` agent and the
|
|
30
|
+
`ti-audit` applicability list. Update the README and add at least two requests
|
|
31
|
+
to [the public examples](docs/examples.md).
|
|
32
|
+
- Keep entry points concise and put detail in linked references. Preserve
|
|
33
|
+
operational prerequisites, defaults, platform differences and cleanup.
|
|
34
|
+
- Verify factual guidance against official documentation and implementation;
|
|
35
|
+
identify source revisions and distinguish source/host checks from device
|
|
36
|
+
acceptance. Preserve declared source-mirror transformations and raw assets.
|
|
37
|
+
- Slash commands belong under `commands/`, where both channels can serve them.
|
|
38
|
+
- CLI modules use ESM imports with explicit `.js` extensions. Use asynchronous
|
|
39
|
+
child processes inside spinners so the UI remains responsive.
|
|
40
|
+
|
|
41
|
+
## Public repository boundaries
|
|
42
|
+
|
|
43
|
+
Commit product source, public guides, tests, reusable maintenance scripts and
|
|
44
|
+
GitHub/marketplace configuration. Keep personal scratch notes, assistant/editor
|
|
45
|
+
workspace files, session state and unpublished audit conversations local.
|
|
46
|
+
|
|
47
|
+
The ignored `.agents/`, `.claude/`, `docs/project/` and root assistant instruction
|
|
48
|
+
files are private workspace material. `.claude-plugin/` and `.github/workflows/`
|
|
49
|
+
are public product infrastructure. A leading dot does not make a tracked path
|
|
50
|
+
private. The npm `files` allowlist is intentionally narrower than the repository.
|
|
51
|
+
|
|
52
|
+
The supported installation methods are npm and the Claude Code marketplace,
|
|
53
|
+
as described in the README. The obsolete standalone shell installer is retired.
|
|
54
|
+
|
|
55
|
+
## Release checklist
|
|
56
|
+
|
|
57
|
+
The `.github/workflows/publish.yml` workflow publishes with npm trusted
|
|
58
|
+
publishing (OIDC). Do not publish manually from a maintainer machine.
|
|
59
|
+
|
|
60
|
+
1. Run `npm test` and the required lint checks for a release.
|
|
61
|
+
2. Add the release entry to `CHANGELOG.md`.
|
|
62
|
+
3. Bump `package.json`, its lockfile and `.claude-plugin/plugin.json` together.
|
|
63
|
+
4. Commit the release and tag that commit `vX.Y.Z`.
|
|
64
|
+
5. Push `main` and the version tag. The tag triggers `publish.yml`.
|
|
65
|
+
6. Verify the workflow and the npm registry version; a tag alone does not prove publication.
|
|
66
|
+
7. Verify the plugin manifest on the default branch, which is also used by marketplace updates.
|
|
67
|
+
|
|
68
|
+
Do not include private workspace files merely to obtain a clean working tree.
|
|
69
|
+
Review the staged paths and actual npm payload before publishing.
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ The reference files are maintained against official documentation whenever an of
|
|
|
12
12
|
|
|
13
13
|
Without TiTools, assistants rely on general training data. That data can be outdated or too generic for Titanium work. With TiTools, the assistant can look up Alloy architecture, memory cleanup patterns, PurgeTSS utility classes, and platform-specific APIs.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
The optional knowledge index helps assistants discover the installed reference documents. See [skills and the knowledge index](docs/knowledge-index.md).
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -115,20 +115,12 @@ All three platforms use the Agent Skills open standard: a `SKILL.md` file with Y
|
|
|
115
115
|
|
|
116
116
|
The knowledge index is a compressed documentation map that gets injected into your project's instruction files. It tells the AI where Titanium reference docs are, so it can pull accurate information from the installed references instead of relying on general training data.
|
|
117
117
|
|
|
118
|
-
###
|
|
118
|
+
### Reference discovery
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
| Knowledge index | 100% |
|
|
125
|
-
|
|
126
|
-
Per Vercel's evaluation:
|
|
127
|
-
- No decision point: information is present without needing to invoke skills
|
|
128
|
-
- Consistent availability: available in every turn, not async-loaded
|
|
129
|
-
- No ordering issues: avoids "read docs first vs explore project first"
|
|
130
|
-
|
|
131
|
-
For details, see `AGENTS-VERCEL-RESEARCH.md`.
|
|
120
|
+
Skills provide task-specific workflows; the knowledge index makes their reference
|
|
121
|
+
locations discoverable from your project's instruction files. Load the relevant
|
|
122
|
+
references before relying on an API, platform requirement or module contract.
|
|
123
|
+
See [how the index works](docs/knowledge-index.md).
|
|
132
124
|
|
|
133
125
|
### What gets generated
|
|
134
126
|
|
|
@@ -178,9 +170,9 @@ The knowledge index is based on the latest Titanium SDK documentation. If your p
|
|
|
178
170
|
| ti-expert | Architecture and implementation | Starting point for most tasks |
|
|
179
171
|
| purgetss | Alloy styling + asset automation | Utility classes; Alloy/Classic branding, images, colors, fonts and modules |
|
|
180
172
|
| ti-ui | UI/UX patterns | Complex layouts, ListViews, platform UI |
|
|
181
|
-
| ti-game | 2D games with the `ti.game` module | Sprites, physics, tile
|
|
173
|
+
| ti-game | 2D games with the `ti.game` module | Sprites, physics, tile maps, HUDs, camera, focused keyboard/mouse/gamepad actions, Apple Metal/Catalyst |
|
|
182
174
|
| ti-game-assets | Visual and sound assets | Image generation/editing, synthesis variants, stereo placement, alpha cleanup, manifests, parallax and complete exports |
|
|
183
|
-
| ti-synthengine | Sound design with `ti.synthengine` | Tones, chords, retro/UI effects, alarms, sweeps, patterns, ADSR envelopes, resonant filters, FM, detune, binaural positioning, engine statistics, mixing and troubleshooting |
|
|
175
|
+
| ti-synthengine | Sound design with `ti.synthengine` | Tones, chords, retro/UI effects, alarms, sweeps, patterns, ADSR envelopes, resonant filters, FM, detune, binaural positioning, held voices, native sequences, master effects, voice LFOs, engine statistics, mixing and troubleshooting |
|
|
184
176
|
| ti-admob-unified | Advertising, privacy and mediation | Official `ti.admob.unified` guides, copy-ready library, banners/fullscreen, UMP/ATT and selected-provider configuration |
|
|
185
177
|
| ti-api | Complete Titanium API reference | Looking up properties, methods, events |
|
|
186
178
|
| ti-guides | SDK fundamentals | tiapp.xml, Hyperloop, distribution, JDK/Xcode compatibility, release notes |
|
|
@@ -191,8 +183,8 @@ The knowledge index is based on the latest Titanium SDK documentation. If your p
|
|
|
191
183
|
Notes:
|
|
192
184
|
- The first eight (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-game-assets`, `ti-synthengine`, `ti-admob-unified`) are specialist workflow skills reflecting TiTools' Titanium conventions and native-module contracts.
|
|
193
185
|
- `ti-reuse-first` runs before the others. It asks whether a thing needs to exist and what already does it — a search order that stops at the first rung that holds — and sweeps an existing `app/` for near-identical controllers, single-listener events, wrappers around one call, and layout recomputed in JavaScript. It is deliberately two-sided: it says when adding a module or a Widget is the right answer, so the bias does not simply invert.
|
|
194
|
-
- `ti-game` documents the `ti.game` native module (2D sprite engine
|
|
195
|
-
- `ti-synthengine` translates
|
|
186
|
+
- `ti-game` documents the `ti.game` native module (2D sprite engine using OpenGL ES 2.0 on Android and Metal on iPhone, iPad and Mac Catalyst). Its API reference was verified against the module source and records the reviewed upstream commit and fork documentation snapshot; it applies to Alloy and Classic projects alike and does not depend on PurgeTSS.
|
|
187
|
+
- `ti-synthengine` translates sound requests into checked JavaScript for the public Android/iOS `ti.synthengine` 1.0.0 release. Its nineteen-method contract covers timed/held voices, identified native sequences, global tempo, selective categories/sends, master effects, live spatial/noise/filter controls and diagnostics. Two curated recipe guides cover retro cues and interactive instruments. Complete official-source mirrors, validation reports, bundled examples and raw evidence retain provenance; reversible errata correct source prose against native behavior. The clean reviewed commit, platform differences and scoped listening/performance acceptance are explicit in source notes.
|
|
196
188
|
- `ti-game-assets` treats images and sounds as essential game assets. It coordinates integrated `image_gen` artwork with `ti-synthengine` sound design, variants and stereo placement, and ships Pillow helpers for conservative alpha cleanup and per-world visual/audio manifests.
|
|
197
189
|
- The latter five are documentation-mirror skills, audited against official sources via the internal `titools-skill-auditor`. See [Where the references come from](#where-the-references-come-from).
|
|
198
190
|
- `purgetss` reference files are audited against the official PurgeTSS documentation and against the package source (the CLI and the generated `utilities.tss`), but its workflow conventions are opinionated.
|
|
@@ -228,14 +220,14 @@ In addition to skills, this repository includes sub-agents for Claude Code. Sub-
|
|
|
228
220
|
|
|
229
221
|
### ti-pro
|
|
230
222
|
|
|
231
|
-
Deep-dive research specialist that can combine the complete
|
|
223
|
+
Deep-dive research specialist that can combine the complete 13-skill TiTools catalog.
|
|
232
224
|
|
|
233
225
|
| Aspect | Details |
|
|
234
226
|
| ---------------- | ------------------------------------------------ |
|
|
235
227
|
| Location | `~/.claude/agents/ti-pro.md` |
|
|
236
228
|
| Model | Sonnet (comprehensive analysis) |
|
|
237
|
-
| Tools | Read
|
|
238
|
-
| Preloaded Skills | All
|
|
229
|
+
| Tools | Read, Grep, Glob, Bash |
|
|
230
|
+
| Preloaded Skills | All 13 skills registered in `lib/config.js` |
|
|
239
231
|
|
|
240
232
|
When to use the agent vs skills:
|
|
241
233
|
|
|
@@ -460,7 +452,7 @@ Key rules:
|
|
|
460
452
|
|
|
461
453
|
### ti-game
|
|
462
454
|
|
|
463
|
-
2D game development with the `ti.game` native module — a sprite engine rendered with OpenGL ES 2.0
|
|
455
|
+
2D game development with the `ti.game` native module — a sprite engine rendered with OpenGL ES 2.0 on Android and Metal on iPhone, iPad and Mac Catalyst, with a mostly shared JS API. Works in Alloy and Classic projects.
|
|
464
456
|
|
|
465
457
|
When it activates:
|
|
466
458
|
- `tiapp.xml` declares `ti.game`, or any file calls `require('ti.game')`
|
|
@@ -478,6 +470,7 @@ When it activates:
|
|
|
478
470
|
- Native `TileLayer` maps with visible-cell rendering, Tiled GIDs, solid/one-way cells, live edits and A* integration
|
|
479
471
|
- Collision-shape overlays plus the expandable performance HUD and opt-in `performance` telemetry event
|
|
480
472
|
- Drag & drop, pinch, rotate, multitouch controls
|
|
473
|
+
- Focused keyboard/mouse/gamepad actions, input contexts, canvas focus and native text-field ownership
|
|
481
474
|
|
|
482
475
|
Example prompts:
|
|
483
476
|
```
|
|
@@ -524,41 +517,71 @@ Raster drawing generation/editing uses integrated `image_gen`. Authored SVG/proc
|
|
|
524
517
|
|
|
525
518
|
### ti-admob-unified
|
|
526
519
|
|
|
527
|
-
Integrate
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
520
|
+
Integrate public **ti.admob.unified 1.0.0** in Alloy or Classic with its official
|
|
521
|
+
[repository](https://github.com/macCesar/ti.admob.unified),
|
|
522
|
+
[Android downloads](https://github.com/macCesar/ti.admob.unified/releases/tag/android-1.0.0)
|
|
523
|
+
and [iOS downloads](https://github.com/macCesar/ti.admob.unified/releases/tag/ios-1.0.0).
|
|
524
|
+
Install the core ZIP for each target and only the mediation complements you use.
|
|
525
|
+
Requires Titanium SDK 13.4.1.GA, iOS 15+, Android API 24+ and compile SDK 36;
|
|
526
|
+
this Apple module does not support Mac Catalyst.
|
|
527
|
+
|
|
528
|
+
The skill covers consent-first UMP/ATT, synchronous tracking-status queries,
|
|
529
|
+
standard/adaptive banners, interstitial, rewarded, rewarded interstitial and
|
|
530
|
+
app-open ads. It includes the unchanged copy-ready integration library and
|
|
531
|
+
AppLovin, Meta, InMobi, Unity and Liftoff setup/dependency/parity guides.
|
|
532
|
+
Rewarded interstitial guidance includes an accurate reward introduction,
|
|
533
|
+
visible Skip, SDK-reported rewards and cancellation tied to the presentation
|
|
534
|
+
context. Loading an ad alone does not authorize showing it.
|
|
535
|
+
|
|
536
|
+
The [skill entry point](skills/ti-admob-unified/SKILL.md) routes exact API,
|
|
537
|
+
installation, lifecycle and [production guidance](skills/ti-admob-unified/references/production.md)
|
|
538
|
+
for app IDs, units, app-ads.txt, privacy options and AdMob/store readiness.
|
|
539
|
+
[Source notes](skills/ti-admob-unified/references/source-notes.md) record reviewed
|
|
540
|
+
source `0348432`, platform ZIP hashes and native-backed corrections.
|
|
541
|
+
|
|
542
|
+
A packaged adapter or Google test ad does not prove provider delivery or
|
|
543
|
+
production eligibility. Keep configuration/linking, each selected provider's
|
|
544
|
+
test delivery and physical-device visual/lifecycle acceptance separate. Game
|
|
545
|
+
frequency and pause/audio/input ownership remain application policies.
|
|
532
546
|
|
|
533
547
|
### ti-synthengine
|
|
534
548
|
|
|
535
|
-
|
|
549
|
+
Sound design and synthesis with the public native `ti.synthengine` 1.0.0 release for Android and iOS. Read the [skill entry point](skills/ti-synthengine/SKILL.md) for task routing, exact API references and current source provenance.
|
|
550
|
+
|
|
551
|
+
Public repository: [macCesar/TiSynthEngine](https://github.com/macCesar/TiSynthEngine).
|
|
552
|
+
Download [Android 1.0.0](https://github.com/macCesar/TiSynthEngine/releases/tag/android-1.0.0)
|
|
553
|
+
and [iOS 1.0.0](https://github.com/macCesar/TiSynthEngine/releases/tag/ios-1.0.0),
|
|
554
|
+
copy the ZIPs into the Titanium app root and follow the [installation guide](skills/ti-synthengine/references/guide.md).
|
|
555
|
+
Requires Titanium SDK 13.2.0.GA+, Android compile API35+, and iOS 15+; the Apple package also supports Mac Catalyst.
|
|
536
556
|
|
|
537
557
|
When it activates:
|
|
538
558
|
- `tiapp.xml` declares `ti.synthengine`, or code calls `require('ti.synthengine')`
|
|
539
|
-
-
|
|
540
|
-
-
|
|
541
|
-
-
|
|
559
|
+
- Generated UI/game cues, instruments, alarms, chords, percussion, sweeps or binaural headphone placement
|
|
560
|
+
- Sustained voices, simultaneous native sequences, shared tempo, selective effects/sends, priorities or live voice controls
|
|
561
|
+
- Rejected calls, startup glitches, voice/queue diagnostics, render-load measurements or source/artifact compatibility questions
|
|
542
562
|
|
|
543
563
|
Example prompts:
|
|
544
564
|
```
|
|
545
565
|
"Create a short sci-fi laser that sweeps left to right with ti.synthengine."
|
|
546
|
-
"
|
|
547
|
-
"
|
|
548
|
-
"
|
|
549
|
-
"
|
|
550
|
-
"
|
|
566
|
+
"Build a playable xylophone without retriggering a bar on every touchmove."
|
|
567
|
+
"Move a held spatial motor and change its noise clock and low-pass cutoff without restarting it."
|
|
568
|
+
"Run music and a victory cue as independent native sequences, then cancel only the cue."
|
|
569
|
+
"Apply reverb to music while keeping UI dry, and change the global tempo."
|
|
570
|
+
"Explain what the Android Sim80 headphone result proves about performance."
|
|
551
571
|
```
|
|
552
572
|
|
|
553
573
|
Key rules:
|
|
554
|
-
-
|
|
555
|
-
-
|
|
556
|
-
-
|
|
557
|
-
- `
|
|
558
|
-
-
|
|
559
|
-
-
|
|
560
|
-
-
|
|
561
|
-
- Start after
|
|
574
|
+
- Read constants and exact ranges from the API; strict option dictionaries reject invalid fields or conflicting pitch sources
|
|
575
|
+
- Timed tone/chord `duration` includes release. Native sequence intervals and note lengths are separate; held voices release through their IDs
|
|
576
|
+
- Schedule successive sounds with `playSequence`, retain positive accepted IDs and cancel the owner's sequence. `stopAll()` is global panic
|
|
577
|
+
- `setTempo` drives beat-based transport and synchronized modulation; millisecond sequences keep fixed timing
|
|
578
|
+
- `bus`/`applyTo` select processed categories; explicit `effectSend` overrides that selection. One shared chain and final limiter remain global
|
|
579
|
+
- Held spatial position, noise clock and one-pole cutoff support compatible 10 ms updates. A stereo voice cannot become spatial through an update
|
|
580
|
+
- Omit both spatial coordinates for stereo; zero coordinates enable binaural center. Do not combine binaural coordinates with stereo pan fields
|
|
581
|
+
- Start after layout, keep one lifecycle owner, handle Boolean acceptance and sequence IDs, release held notes on cancellation and shut down during teardown
|
|
582
|
+
- Current platform metadata, zero-envelope and diagnostic differences are documented. Host checks and a short accepted listening scene do not establish complete physical maximum-load acceptance
|
|
583
|
+
|
|
584
|
+
The [retro recipes](skills/ti-synthengine/references/recipes.md) and [interaction/instrument recipes](skills/ti-synthengine/references/recipes-interaction.md) preserve acoustic intent, overlap budgets and cleanup. [Source notes](skills/ti-synthengine/references/source-notes.md) identify the reviewed native commit and evidence limits.
|
|
562
585
|
|
|
563
586
|
---
|
|
564
587
|
|
|
@@ -627,7 +650,7 @@ Codebase analysis (using agent):
|
|
|
627
650
|
4. Mention constraints. "Build a settings screen. Must work offline and sync when connected."
|
|
628
651
|
5. Reference existing code. "Here's my current controller. How can I improve memory management?"
|
|
629
652
|
|
|
630
|
-
|
|
653
|
+
See [example prompts](docs/examples.md) for requests covering every public skill.
|
|
631
654
|
|
|
632
655
|
---
|
|
633
656
|
|
|
@@ -862,13 +885,18 @@ This pattern is documented across four bundled TiTools skills: `ti-ui`, `ti-expe
|
|
|
862
885
|
| Skill | SKILL.md | References |
|
|
863
886
|
| --------- | ----------------------------- | ----------------------------------------------------- |
|
|
864
887
|
| ti-reuse-first | Reuse Before You Write | 5 files (the ladder, Alloy reuse, indirection, PurgeTSS reuse, diagnostics) |
|
|
865
|
-
| ti-expert | Architecture + Implementation |
|
|
866
|
-
| purgetss | Setup + Critical Rules |
|
|
888
|
+
| ti-expert | Architecture + Implementation | 27 files (patterns, feedback surfaces, file type association, sharing, testing, security, etc.) |
|
|
889
|
+
| purgetss | Setup + Critical Rules | 39 files (Classic compatibility, grid, animations, icons, class-index, SVG pipeline, etc.) |
|
|
867
890
|
| ti-ui | UI Rules + Platform Diffs | 14 files (layouts, lists, gestures, etc.) |
|
|
868
|
-
| ti-game | Native 2D Game Workflow |
|
|
891
|
+
| ti-game | Native 2D Game Workflow | 12 files (API, input, source notes, setup, physics, patterns, recipes, tile maps, debugging, roadmap) |
|
|
869
892
|
| ti-game-assets | Visual and Sound Assets | 10 guides and a manifest example; alpha and contract validation scripts |
|
|
870
|
-
| ti-admob-unified | Unified Advertising |
|
|
871
|
-
| ti-synthengine | Native Sound Synthesis |
|
|
893
|
+
| ti-admob-unified | Unified Advertising | 20 Markdown references including production, rewarded interstitial, mediation parity, integration library guidance, provenance and game monetization; source/hash checks and official example assets |
|
|
894
|
+
| ti-synthengine | Native Sound Synthesis | 12 Markdown references (9 official parts, 2 curated recipe guides, maintenance notes), complete validation reports/evidence and a reversible source hash manifest |
|
|
895
|
+
| ti-api | Titanium API | 20 references for core/platform APIs and native modules |
|
|
896
|
+
| ti-guides | SDK Fundamentals | 16 references for setup, configuration, CLI and distribution |
|
|
897
|
+
| ti-howtos | Native Integrations | 18 references for platform features and integration workflows |
|
|
898
|
+
| alloy-guides | Alloy MVC | 11 references for controllers, views, models, styling and widgets |
|
|
899
|
+
| alloy-howtos | Alloy CLI and Debugging | 6 references for commands, configuration and practical workflows |
|
|
872
900
|
|
|
873
901
|
---
|
|
874
902
|
|
|
@@ -952,28 +980,8 @@ Note: `titools remove` can remove the knowledge index blocks from your project f
|
|
|
952
980
|
|
|
953
981
|
## Contributing
|
|
954
982
|
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
3. Test with your preferred AI coding assistant
|
|
958
|
-
4. Submit a pull request
|
|
959
|
-
|
|
960
|
-
### Guidelines
|
|
961
|
-
- Keep SKILL.md concise (<500 lines)
|
|
962
|
-
- Use progressive disclosure (details in references)
|
|
963
|
-
- Include concrete examples
|
|
964
|
-
- Test with real sessions
|
|
965
|
-
|
|
966
|
-
---
|
|
967
|
-
|
|
968
|
-
## Legacy installation (not recommended)
|
|
969
|
-
|
|
970
|
-
The bash installer is maintained for backward compatibility but NPM installation is recommended.
|
|
971
|
-
|
|
972
|
-
```bash
|
|
973
|
-
curl -fsSL https://raw.githubusercontent.com/macCesar/titools/main/install.sh | bash
|
|
974
|
-
```
|
|
975
|
-
|
|
976
|
-
Use this only if you cannot use NPM for any reason.
|
|
983
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development, skill registration,
|
|
984
|
+
public repository boundaries and the release workflow.
|
|
977
985
|
|
|
978
986
|
---
|
|
979
987
|
|
package/agents/ti-pro.md
CHANGED
|
@@ -33,7 +33,7 @@ When invoked, research complex topics by consulting the applicable skills from t
|
|
|
33
33
|
- `ti-ui` - UI/UX patterns, layouts, gestures
|
|
34
34
|
- `ti-game-assets` - Visual and sound asset contracts, raster generation, alpha/export validation, synthesis variants and stereo coordination when assets are involved
|
|
35
35
|
- `ti-game` - Native `ti.game` architecture and API when the module is declared
|
|
36
|
-
- `ti-synthengine` - Native
|
|
36
|
+
- `ti-synthengine` - Native synthesis, held voices, identified sequences/tempo, selective processing, live controls and platform/evidence limits when the module is declared or requested
|
|
37
37
|
- `ti-admob-unified` - Official unified advertising/privacy/mediation module contract and provider setup when declared or requested
|
|
38
38
|
- `ti-api`, `ti-guides`, `ti-howtos` - Exact Titanium APIs, SDK fundamentals and native integrations
|
|
39
39
|
- `alloy-guides`, `alloy-howtos` - Alloy MVC, CLI, configuration and compiler workflows when the project is Alloy
|
package/commands/ti-audit.md
CHANGED
|
@@ -23,11 +23,11 @@ Project-type audit:
|
|
|
23
23
|
Native-module audit:
|
|
24
24
|
|
|
25
25
|
10. If the project declares `ti.game`, invoke `ti-game` — check for sprites moved from timers instead of native properties, levels sized from `Ti.Platform.displayCaps` instead of the `resize` event, sprites added one by one instead of in one array, and timers or sounds left running when the window closes.
|
|
26
|
-
11. If the project declares `ti.synthengine`, invoke `ti-synthengine` — check
|
|
26
|
+
11. If the project declares `ti.synthengine`, invoke `ti-synthengine` — check exact option/pitch/envelope contracts, Boolean acceptance and positive sequence IDs, native successive-note scheduling, per-owner sequence cancellation, held-note release/cancellation and compatible live updates. Check shared tempo versus millisecond timing, category/send selection, overlap/priority budgets, one lifecycle owner, delayed startup and teardown. Consult current source notes before assuming platform metadata/envelopes or rejection diagnostics match; separate host/load reports from scoped physical listening acceptance.
|
|
27
27
|
|
|
28
28
|
12. If the project has game art/sound inventories or asset-generation/export workflows, invoke `ti-game-assets` — check contracts per set, master provenance/transparency, protected alpha cleanup, frame/pivot alignment, complete derived exports, parallax layers, sound variants and semantic event bindings. Consult `ti-game` and `ti-synthengine` equally in their applicable domains; do not require module installation or new sounds for an image-only task.
|
|
29
29
|
|
|
30
|
-
13. If the project declares `ti.admob.unified`/mediation complements or
|
|
30
|
+
13. If the project declares `ti.admob.unified`/mediation complements or uses this module, invoke `ti-admob-unified` — verify public release/platform requirements, consent/request eligibility/initialization, ATT status versus permission, test IDs, independent banner lifecycle and deliberate fullscreen ownership. Check rewarded interstitial's reward introduction, visible Skip, reward-event credit and pending-context cancellation. Use the production guide for app IDs, app-ads.txt, privacy entry points and account readiness. Separate linking, Google test ads, selected-provider delivery and physical acceptance; preserve game frequency and pause/audio/input policy.
|
|
31
31
|
|
|
32
32
|
If a conditional skill does not apply, record it as `not applicable` with the detected reason instead of inventing findings from it.
|
|
33
33
|
|
package/docs/examples.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Example prompts
|
|
2
|
+
|
|
3
|
+
Use these requests as starting points with an assistant that has TiTools installed.
|
|
4
|
+
Mention the framework, module and platform involved. Conditional skills apply
|
|
5
|
+
when the project uses that technology; an image request does not require adding
|
|
6
|
+
an audio or advertising module.
|
|
7
|
+
|
|
8
|
+
## Reuse and simplification — ti-reuse-first
|
|
9
|
+
|
|
10
|
+
- "Find whether this Alloy project already has a suitable confirmation panel before adding another one."
|
|
11
|
+
- "Review these repeated controller wrappers and explain which can be simplified without changing behavior."
|
|
12
|
+
|
|
13
|
+
## Architecture — ti-expert
|
|
14
|
+
|
|
15
|
+
- "Organize this Alloy screen so navigation, data access and view state have clear owners."
|
|
16
|
+
- "Review this controller for timer, listener and window lifecycle leaks."
|
|
17
|
+
|
|
18
|
+
## PurgeTSS — purgetss
|
|
19
|
+
|
|
20
|
+
- "Style this Alloy layout with the PurgeTSS classes supported by the installed version."
|
|
21
|
+
- "Prepare responsive images for this Classic Titanium project using the supported PurgeTSS asset workflow."
|
|
22
|
+
|
|
23
|
+
## Native UI — ti-ui
|
|
24
|
+
|
|
25
|
+
- "Build a ListView with reusable templates and predictable row heights."
|
|
26
|
+
- "Check this window's safe-area, orientation and gesture handling on Android and iOS."
|
|
27
|
+
|
|
28
|
+
## Native games — ti-game
|
|
29
|
+
|
|
30
|
+
- "Build a platformer using native velocity, gravity and collision events instead of a JavaScript frame loop."
|
|
31
|
+
- "Map keyboard and gamepad input to named actions while keeping native text-field focus usable."
|
|
32
|
+
|
|
33
|
+
## Visual and sound assets — ti-game-assets
|
|
34
|
+
|
|
35
|
+
- "Prepare a consistent sprite sheet, animation frames and three-layer parallax set for this game."
|
|
36
|
+
- "Create three related pickup sound variants and an asset manifest with export and listening checks."
|
|
37
|
+
|
|
38
|
+
## Native synthesis — ti-synthengine
|
|
39
|
+
|
|
40
|
+
- "Install the public TiSynthEngine 1.0.0 Android/iOS packages and start audio after the window layout settles."
|
|
41
|
+
- "Move a held spatial motor, process only music with reverb, and stop one native sequence without cancelling unrelated sounds."
|
|
42
|
+
|
|
43
|
+
Use the [synthesis skill](../skills/ti-synthengine/SKILL.md) for exact options,
|
|
44
|
+
public downloads and scoped performance evidence. Native sequence scheduling,
|
|
45
|
+
held-voice ownership and historical/private artifacts have distinct contracts.
|
|
46
|
+
|
|
47
|
+
## Advertising — ti-admob-unified
|
|
48
|
+
|
|
49
|
+
- "Install public ti.admob.unified 1.0.0 on Android/iOS and configure consent-first startup with the official integration library."
|
|
50
|
+
- "Offer a rewarded interstitial at a natural transition with a clear reward, a visible Skip option and cancellation when the screen changes."
|
|
51
|
+
- "Check selected mediation providers and production readiness, including app IDs, app-ads.txt and privacy options, without treating Google test ads as provider acceptance."
|
|
52
|
+
|
|
53
|
+
Use the [public Android](https://github.com/macCesar/ti.admob.unified/releases/tag/android-1.0.0)
|
|
54
|
+
and [iOS](https://github.com/macCesar/ti.admob.unified/releases/tag/ios-1.0.0)
|
|
55
|
+
packages and the [module skill](../skills/ti-admob-unified/SKILL.md). A synchronous
|
|
56
|
+
ATT query is separate from UMP eligibility; Android's ATT convention is not
|
|
57
|
+
permission for general tracking. Real account/provider delivery needs its own
|
|
58
|
+
validation beyond the module's publication.
|
|
59
|
+
|
|
60
|
+
## Exact Titanium APIs — ti-api
|
|
61
|
+
|
|
62
|
+
- "Verify the supported properties and event payloads for this Titanium ListView implementation."
|
|
63
|
+
- "Check this platform-specific API call against the SDK version used by the project."
|
|
64
|
+
|
|
65
|
+
## SDK fundamentals — ti-guides
|
|
66
|
+
|
|
67
|
+
- "Check this tiapp.xml and explain the relevant build and platform requirements."
|
|
68
|
+
- "Set up the CommonJS modules and assets for a maintainable Classic Titanium project."
|
|
69
|
+
|
|
70
|
+
## Native integrations — ti-howtos
|
|
71
|
+
|
|
72
|
+
- "Implement location permissions and lifecycle handling for this Android/iOS app."
|
|
73
|
+
- "Review this camera and file-sharing flow, including its required platform configuration."
|
|
74
|
+
|
|
75
|
+
## Alloy MVC — alloy-guides
|
|
76
|
+
|
|
77
|
+
- "Separate the controller, XML view and TSS responsibilities on this Alloy screen."
|
|
78
|
+
- "Explain how this model collection, binding and cleanup should work."
|
|
79
|
+
|
|
80
|
+
## Alloy tools — alloy-howtos
|
|
81
|
+
|
|
82
|
+
- "Generate an Alloy controller and place its files according to the documented project structure."
|
|
83
|
+
- "Diagnose this Alloy compilation error and check the relevant CLI and configuration options."
|
|
84
|
+
|
|
85
|
+
## Combining skills
|
|
86
|
+
|
|
87
|
+
"Review an Alloy game that uses PurgeTSS, ti.game and ti.synthengine. Start with
|
|
88
|
+
existing components, then check scene input, native audio ownership and cleanup
|
|
89
|
+
using the appropriate references."
|
|
90
|
+
|
|
91
|
+
See [how the knowledge index works](knowledge-index.md) for reference discovery.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Skills and the knowledge index
|
|
2
|
+
|
|
3
|
+
TiTools provides task-oriented skills and reference documents for Titanium SDK,
|
|
4
|
+
Alloy and related native modules. A skill describes when its workflow applies;
|
|
5
|
+
its references supply the details needed for that task.
|
|
6
|
+
|
|
7
|
+
The optional knowledge index helps an assistant find the available references
|
|
8
|
+
from the consuming project's instruction files. It is navigation, not a copy
|
|
9
|
+
of every reference and not a promise about an assistant's answer accuracy.
|
|
10
|
+
|
|
11
|
+
## Generate an index
|
|
12
|
+
|
|
13
|
+
From a Titanium project containing `tiapp.xml`, run:
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
titools sync
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Select the applicable instruction files, such as `AGENTS.md`, `CLAUDE.md` or
|
|
20
|
+
`GEMINI.md`. TiTools maintains a delimited index block rather than replacing the
|
|
21
|
+
project's other instructions. Re-running sync updates that block.
|
|
22
|
+
|
|
23
|
+
Do not run project sync from the TiTools source repository. Installing skills
|
|
24
|
+
and generating an index in a consuming app are separate operations.
|
|
25
|
+
|
|
26
|
+
## Choose the relevant skills
|
|
27
|
+
|
|
28
|
+
The catalog contains thirteen public skills:
|
|
29
|
+
|
|
30
|
+
| Task | Skill |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| Reuse and simplification | `ti-reuse-first` |
|
|
33
|
+
| Architecture and implementation | `ti-expert` |
|
|
34
|
+
| PurgeTSS styling and assets | `purgetss` |
|
|
35
|
+
| Titanium UI | `ti-ui` |
|
|
36
|
+
| Native game behavior | `ti-game` |
|
|
37
|
+
| Visual and sound asset production | `ti-game-assets` |
|
|
38
|
+
| Native synthesis | `ti-synthengine` |
|
|
39
|
+
| Unified advertising | `ti-admob-unified` |
|
|
40
|
+
| Exact Titanium APIs | `ti-api` |
|
|
41
|
+
| SDK fundamentals | `ti-guides` |
|
|
42
|
+
| Native integrations | `ti-howtos` |
|
|
43
|
+
| Alloy MVC | `alloy-guides` |
|
|
44
|
+
| Alloy CLI and debugging | `alloy-howtos` |
|
|
45
|
+
|
|
46
|
+
Conditional scopes depend on the app. A Titanium project does not automatically
|
|
47
|
+
need PurgeTSS, games, synthesis or advertising. The `ti-pro` research agent can
|
|
48
|
+
combine the relevant references for questions that cross those boundaries.
|
|
49
|
+
|
|
50
|
+
## Keep references current
|
|
51
|
+
|
|
52
|
+
Update the installed TiTools package and use `titools update` to refresh installed
|
|
53
|
+
content. Use `titools status` and `titools doctor` to inspect installation health.
|
|
54
|
+
An index cannot establish which native module binary is installed: check that
|
|
55
|
+
module's release and artifact contract separately.
|
|
56
|
+
|
|
57
|
+
See [example prompts](examples.md) and the [CLI documentation](../README.md).
|
package/lib/downloader.js
CHANGED
|
@@ -99,7 +99,7 @@ export async function downloadRepoArchive(destDir, ref = 'main') {
|
|
|
99
99
|
|
|
100
100
|
/**
|
|
101
101
|
* Download a single file from GitHub raw content
|
|
102
|
-
* @param {string} filePath - Path in repository (e.g., '
|
|
102
|
+
* @param {string} filePath - Path in repository (e.g., 'docs/knowledge-index.md')
|
|
103
103
|
* @param {string} destPath - Local destination path
|
|
104
104
|
* @param {string} ref - Git ref (branch, tag, commit)
|
|
105
105
|
* @returns {Promise<void>}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maccesar/titools",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.1",
|
|
4
4
|
"description": "Titanium SDK skills and agents for AI coding assistants, including native game and sound synthesis modules",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -63,7 +63,9 @@
|
|
|
63
63
|
"skills/",
|
|
64
64
|
"agents/",
|
|
65
65
|
"commands/",
|
|
66
|
-
"
|
|
66
|
+
"CONTRIBUTING.md",
|
|
67
|
+
"docs/examples.md",
|
|
68
|
+
"docs/knowledge-index.md"
|
|
67
69
|
],
|
|
68
70
|
"publishConfig": {
|
|
69
71
|
"access": "public"
|
|
@@ -360,7 +360,7 @@ If your source images live elsewhere (e.g. next to your design files in `docs/sc
|
|
|
360
360
|
|
|
361
361
|
```bash
|
|
362
362
|
purgetss images ./docs/screenshots/home-hero.png
|
|
363
|
-
purgetss images /
|
|
363
|
+
purgetss images /path/to/design/banner.svg
|
|
364
364
|
```
|
|
365
365
|
|
|
366
366
|
When the source is outside `purgetss/images/`, subdirectory preservation uses the directory of the source file as the root instead. Processing that external source in Classic does not bootstrap unrelated PurgeTSS folders or config.
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
---
|
|
2
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."
|
|
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, rewarded interstitial 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
4
|
---
|
|
5
5
|
|
|
6
6
|
# ti.admob.unified — ads, privacy and providers
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Use the public **ti.admob.unified 1.0.0** module through its official
|
|
9
|
+
[repository](https://github.com/macCesar/ti.admob.unified),
|
|
10
|
+
[Android release](https://github.com/macCesar/ti.admob.unified/releases/tag/android-1.0.0)
|
|
11
|
+
and [iOS release](https://github.com/macCesar/ti.admob.unified/releases/tag/ios-1.0.0).
|
|
12
|
+
Reviewed released source: `034843299b2984253988e0ffccb9f6a1c91682c9` (2026-10-24).
|
|
13
|
+
The core supports banners, interstitial, rewarded, rewarded interstitial and
|
|
14
|
+
app-open formats; install only the mediation complements the app uses.
|
|
15
|
+
Requires **Titanium 13.4.1.GA**, iOS 15+, Android API 24+ (compile SDK 36).
|
|
16
|
+
Apple packages target iOS, not Mac Catalyst. See [source notes](references/source-notes.md)
|
|
17
|
+
and the [snapshot](references/source-snapshot.json) for provenance and validation
|
|
18
|
+
boundaries. Public module availability does not establish production ad eligibility.
|
|
9
19
|
|
|
10
20
|
## Required workflow
|
|
11
21
|
|
|
@@ -19,9 +29,12 @@ Read the relevant references before proposing calls or configuration. Do not inf
|
|
|
19
29
|
| Consent-first startup, ATT, privacy options, request eligibility | [references/privacy.md](references/privacy.md) |
|
|
20
30
|
| Fixed/adaptive banners, real reserved layout and pause/cleanup | [references/banners.md](references/banners.md) |
|
|
21
31
|
| Interstitial/rewarded/app-open load/show, rewards and cleanup | [references/fullscreen.md](references/fullscreen.md) |
|
|
22
|
-
|
|
|
32
|
+
| Rewarded interstitial introduction, visible Skip, rewards and cancellation | [references/rewarded-interstitial.md](references/rewarded-interstitial.md), [references/fullscreen.md](references/fullscreen.md) |
|
|
33
|
+
| Production IDs, app-ads.txt, store/AdMob readiness and final-build checks | [references/production.md](references/production.md) |
|
|
34
|
+
| Select/install providers, publisher accounts, mappings, diagnostics | [references/mediation.md](references/mediation.md), [references/dependencies.md](references/dependencies.md), [references/mediation-parity.md](references/mediation-parity.md) |
|
|
23
35
|
| Replace legacy modules or internal builds | [references/migration.md](references/migration.md) |
|
|
24
36
|
| 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) |
|
|
37
|
+
| Official docs index and release history | [references/index.md](references/index.md), [references/module-changelog.md](references/module-changelog.md) |
|
|
25
38
|
| Game experience and frequency decisions | [references/game-monetization.md](references/game-monetization.md), plus fullscreen/privacy |
|
|
26
39
|
|
|
27
40
|
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.
|
|
@@ -30,12 +43,13 @@ Cite factual guidance with `[source: references/<file>.md]`. If the relevant sou
|
|
|
30
43
|
|
|
31
44
|
- 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
45
|
- 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
|
|
46
|
+
- Follow UMP → optional foreground ATT → `canRequestAds()` → initialization/loading. A UMP error can retain prior eligibility; check the gate. `getTrackingAuthorizationStatus()` reads ATT without prompting or initializing. Android reports `applicable:false`; its `authorized:true` convention does not grant general tracking permission. The library defers ATT to `resumed` when needed. Preserve privacy options and named-listener cleanup.
|
|
34
47
|
- 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
|
|
48
|
+
- Preserve banners during Android's `_closeFromActivityForcedToDestroy` event; ordinary close still destroys the owner. Each banner manager has independent coverage/background state. 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.
|
|
49
|
+
- Separate preloading from deliberate presentation. Loading alone never authorizes showing. An explicit pending Show intent must expire with its presentation context. Coordinate game clock/audio/inputs, no-fill, show failure, close and destroyed screens. Raw `load()`/`show()` are void; manager Boolean returns describe its attempt, not delivery. A stale-size rejection reloads but does not queue manager presentation. `autoReload` is a live close policy that loads another ad, never presents it.
|
|
50
|
+
- Rewarded interstitial requires an accurate reward introduction and a visible Skip option. Present only while that introduction remains valid; credit only `rewarded`, not close/impression/click. Cancel pending introductions on background, lost eligibility, navigation or another fullscreen. Reward handling may need to survive screen changes for an already-presented ad.
|
|
37
51
|
- 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,
|
|
52
|
+
- Consult the roadmap before suggesting native ads, deferred ironSource or a network outside the distributed set. Supporting several formats does not justify enabling all of them in a game.
|
|
39
53
|
|
|
40
54
|
## Acceptance
|
|
41
55
|
|