@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
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
</div>
|
|
8
8
|
|
|
9
|
-
TiTools is a Titanium SDK toolkit for AI coding assistants. It ships
|
|
9
|
+
TiTools is a Titanium SDK toolkit for AI coding assistants. It ships 13 skills — 8 specialist skills (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-game-assets`, `ti-synthengine`, `ti-admob-unified`) plus 5 documentation-mirror skills (`ti-api`, `ti-guides`, `ti-howtos`, `alloy-guides`, `alloy-howtos`) — a research agent, and reference files covering reuse and simplification, Titanium architecture, API reference, native how-tos, Alloy MVC, PurgeTSS styling and resource automation, UI/UX patterns, 2D games, and native sound synthesis.
|
|
10
10
|
|
|
11
11
|
The reference files are maintained against official documentation whenever an official source exists, so the assistant can retrieve current framework behavior instead of guessing from generic training data. As of v5.0.0 those sources are the Titanium SDK's own API definitions and the rewritten guides at [titaniumsdk.com](https://titaniumsdk.com). [Where the references come from](#where-the-references-come-from) has the detail.
|
|
12
12
|
|
|
@@ -36,7 +36,7 @@ The fastest way to get started with Claude Code. One command to add the marketpl
|
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
What you get:
|
|
39
|
-
- All
|
|
39
|
+
- All 13 TiTools skills (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-game-assets`, `ti-synthengine`, `ti-admob-unified`, `ti-api`, `ti-guides`, `ti-howtos`, `alloy-guides`, `alloy-howtos`)
|
|
40
40
|
- ti-pro research agent
|
|
41
41
|
- Session hook that auto-detects Titanium projects (`tiapp.xml`, Alloy, PurgeTSS, `ti.game`, `ti.synthengine`)
|
|
42
42
|
- Slash commands: `/ti-check`, `/ti-new-screen`, `/ti-audit`
|
|
@@ -70,7 +70,7 @@ claude # or gemini, or codex
|
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
What gets installed:
|
|
73
|
-
- The
|
|
73
|
+
- The 13 TiTools skills to `~/.agents/skills/`
|
|
74
74
|
- ti-pro agent for Claude Code
|
|
75
75
|
- Platform symlinks for Claude Code (Gemini CLI and Codex CLI auto-discover from `~/.agents/skills/` — no symlinks needed)
|
|
76
76
|
- Knowledge index in your project's `AGENTS.md`/`CLAUDE.md`/`GEMINI.md`
|
|
@@ -179,7 +179,9 @@ The knowledge index is based on the latest Titanium SDK documentation. If your p
|
|
|
179
179
|
| purgetss | Alloy styling + asset automation | Utility classes; Alloy/Classic branding, images, colors, fonts and modules |
|
|
180
180
|
| ti-ui | UI/UX patterns | Complex layouts, ListViews, platform UI |
|
|
181
181
|
| ti-game | 2D games with the `ti.game` module | Sprites, physics, tile layers, wall jumps, pathfinding, text/performance HUDs, particles, camera |
|
|
182
|
-
| ti-
|
|
182
|
+
| 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 |
|
|
184
|
+
| ti-admob-unified | Advertising, privacy and mediation | Official `ti.admob.unified` guides, copy-ready library, banners/fullscreen, UMP/ATT and selected-provider configuration |
|
|
183
185
|
| ti-api | Complete Titanium API reference | Looking up properties, methods, events |
|
|
184
186
|
| ti-guides | SDK fundamentals | tiapp.xml, Hyperloop, distribution, JDK/Xcode compatibility, release notes |
|
|
185
187
|
| ti-howtos | Native feature integration | Location, push, media, platform APIs |
|
|
@@ -187,10 +189,11 @@ The knowledge index is based on the latest Titanium SDK documentation. If your p
|
|
|
187
189
|
| alloy-howtos | Alloy CLI, configuration, debugging | alloy.jmk, config.json, custom XML tags |
|
|
188
190
|
|
|
189
191
|
Notes:
|
|
190
|
-
- The first
|
|
192
|
+
- 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.
|
|
191
193
|
- `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.
|
|
192
194
|
- `ti-game` documents the `ti.game` native module (2D sprite engine on OpenGL ES 2.0, Android and iOS). Its API reference was verified against the module source and tracks upstream `main` (the module ships features ahead of its manifest version); it applies to Alloy and Classic projects alike and does not depend on PurgeTSS.
|
|
193
|
-
- `ti-synthengine` translates aesthetic sound requests into strict, production-ready JavaScript for the cross-platform `ti.synthengine` 1.0.0 module.
|
|
195
|
+
- `ti-synthengine` translates aesthetic sound requests into strict, production-ready JavaScript for the cross-platform `ti.synthengine` 1.0.0 beta module. Eight references preserve official documentation, accompanied by raw statistics benchmark trials; curated recipes add retro effects, xylophone interaction, memory pads, polyphony and timer ownership. The reviewed source includes eleven public methods with optional diagnostics; feature detection remains necessary for older beta binaries. Maintenance notes and a hash manifest distinguish the reviewed working tree from its base commit and published packages, track preserved navigation and state audit limits.
|
|
196
|
+
- `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.
|
|
194
197
|
- 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).
|
|
195
198
|
- `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.
|
|
196
199
|
|
|
@@ -274,7 +277,7 @@ TiTools provides slash commands for common tasks. Both channels ship them: the p
|
|
|
274
277
|
These commands automatically invoke the relevant skills:
|
|
275
278
|
- `/ti-check` reads `tiapp.xml`, validates declared native modules, and reports project health
|
|
276
279
|
- `/ti-new-screen` uses `ti-expert` + `purgetss` to create properly structured files
|
|
277
|
-
- `/ti-audit` routes all
|
|
280
|
+
- `/ti-audit` routes all 13 skills: the reuse sweep first, core Titanium checks always, Alloy/PurgeTSS checks when detected, integration how-tos when used, `ti-game-assets` checks for game asset workflows, and `ti-game` / `ti-synthengine` / `ti-admob-unified` checks when those modules are declared
|
|
278
281
|
|
|
279
282
|
---
|
|
280
283
|
|
|
@@ -318,6 +321,8 @@ All skills include automatic project detection to ensure compatibility:
|
|
|
318
321
|
| ti-expert | Alloy vs Classic | Checks for `app/` (Alloy) vs `Resources/` (Classic) structure |
|
|
319
322
|
| ti-ui | Titanium projects | Checks for `tiapp.xml` (both Alloy and Classic) |
|
|
320
323
|
| ti-game | ti.game module | Checks for `<module>ti.game</module>` in `tiapp.xml` or `require('ti.game')` |
|
|
324
|
+
| ti-game-assets | Game art/sound workflows | Reads asset inventories, generation/export workflows and requested visual or sound assets; no module install required for drawings |
|
|
325
|
+
| ti-admob-unified | ti.admob.unified and mediation | Declared core/complement modules or requested ad/privacy/provider integration |
|
|
321
326
|
| ti-synthengine | ti.synthengine module | Checks for `<module>ti.synthengine</module>` in `tiapp.xml` or `require('ti.synthengine')` |
|
|
322
327
|
|
|
323
328
|
Why this matters:
|
|
@@ -333,11 +338,12 @@ Why this matters:
|
|
|
333
338
|
| --- | --- |
|
|
334
339
|
| Whether to build it at all | `ti-reuse-first`, first |
|
|
335
340
|
| Architecture and UI | `ti-expert`, `ti-ui`, `purgetss` when configured |
|
|
336
|
-
|
|
|
341
|
+
| Game assets | `ti-game-assets` for visual and sound creation, preparation and integration |
|
|
342
|
+
| Native modules | `ti-game`, `ti-synthengine`, `ti-admob-unified` when declared or requested |
|
|
337
343
|
| Exact SDK/API guidance | `ti-api`, `ti-guides`, `ti-howtos` |
|
|
338
344
|
| Alloy MVC and tooling | `alloy-guides`, `alloy-howtos` for Alloy projects |
|
|
339
345
|
|
|
340
|
-
All
|
|
346
|
+
All thirteen ship with TiTools; no second skill package is required.
|
|
341
347
|
|
|
342
348
|
---
|
|
343
349
|
|
|
@@ -502,14 +508,37 @@ Key rules:
|
|
|
502
508
|
|
|
503
509
|
---
|
|
504
510
|
|
|
511
|
+
### ti-game-assets
|
|
512
|
+
|
|
513
|
+
Create game art and sound assets as a coherent set: transparent HD masters or strict logical-grid pixel art, animation states, three-layer parallax, synthesized effects/music/ambience, related sound variants and screen-position stereo. `ti-game` owns native game behavior and `ti-synthengine` owns the sound contract; the asset skill coordinates both.
|
|
514
|
+
|
|
515
|
+
For the processing helpers and development tests, install Python dependencies in a virtual environment:
|
|
516
|
+
|
|
517
|
+
```bash
|
|
518
|
+
python3 -m venv /tmp/titools-assets-env
|
|
519
|
+
/tmp/titools-assets-env/bin/pip install -r skills/ti-game-assets/scripts/requirements.txt
|
|
520
|
+
TITOOLS_ASSETS_PYTHON=/tmp/titools-assets-env/bin/python npm test
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
Raster drawing generation/editing uses integrated `image_gen`. Authored SVG/procedural pipelines preserve editable sources and deterministically export PNG; offline synthesis can generate WAV. The bundled Python helpers validate alpha, SVG provenance, hashes and WAV headers/payloads. Cleaning writes new files and requires a reviewed protected region or an explicit defined-edge trial. Sound recipes remain source assets even without recorded audio files. Guides cover seamless texture/audio loops and responsible ad transitions through the separate `ti-admob-unified` skill. Technical checks, visual inspection and device listening are reported separately.
|
|
524
|
+
|
|
525
|
+
### ti-admob-unified
|
|
526
|
+
|
|
527
|
+
Integrate César's `ti.admob.unified` module in Alloy or Classic using its official documentation for installation, API, UMP/ATT, privacy options, banner layout, fullscreen lifecycle and mediation. The skill includes the official copy-ready application library and guides for AppLovin, Meta, InMobi, Unity and Liftoff. The module's first public 1.0.0 release is under preparation at this snapshot.
|
|
528
|
+
|
|
529
|
+
Source commit, per-file hashes and rebased links are recorded. Future updates use the maintainer auditor's source map and the read-only check `node scripts/verify-module-snapshot.mjs --source /path/to/ti.admob.unified`; new, changed or removed docs are reported before updating. Community guidance remains separate from official mirrors.
|
|
530
|
+
|
|
531
|
+
Installing an adapter does not configure a publisher account or prove delivery. The skill distinguishes build/linking, Google test ads, each provider's test delivery and physical-device acceptance; it preserves the game's selected frequency policy instead of enabling every format.
|
|
532
|
+
|
|
505
533
|
### ti-synthengine
|
|
506
534
|
|
|
507
|
-
Cross-platform sound design and synthesis with the native `ti.synthengine` 1.0.0 module for Android and iOS.
|
|
535
|
+
Cross-platform sound design and synthesis with the native `ti.synthengine` 1.0.0 beta module for Android and iOS.
|
|
508
536
|
|
|
509
537
|
When it activates:
|
|
510
538
|
- `tiapp.xml` declares `ti.synthengine`, or code calls `require('ti.synthengine')`
|
|
511
539
|
- The app needs generated UI feedback, game cues, retro/chiptune effects, alarms, chords, pads, noise percussion, sweeps, panning, or vibrato
|
|
512
540
|
- A synth call returns `false`, the first sound glitches, a pattern stops, a chord pumps, or output changes after a route switch
|
|
541
|
+
- The app needs voice/queue/rejection counters, optional render-load/output meters, or help interpreting host benchmark evidence
|
|
513
542
|
|
|
514
543
|
Example prompts:
|
|
515
544
|
```
|
|
@@ -527,6 +556,7 @@ Key rules:
|
|
|
527
556
|
- `playTone` accepts `note` or `frequency`, never both; `playChord` accepts `notes` or `frequencies`, never both
|
|
528
557
|
- `duration` includes attack, the full-level middle, and release, so explicit envelope times must intersect correctly
|
|
529
558
|
- Use `frequencyEnd` for sweeps, `panEnd` for stereo movement, and `lfoFreq`/`lfoDepth` for pitch vibrato
|
|
559
|
+
- Binaural headphone positioning uses `spatialX`/`spatialY` from -1 to 1, without pan fields. Omit both to keep stereo; check installed coordinate limits because older 1.0.0 builds lack this beta addition
|
|
530
560
|
- Curated recipes cover retro effects, playable xylophone gestures, four-pad memory cues, controlled waveform comparisons, layered chords and cancellable repetition
|
|
531
561
|
- Start after the first layout settles, keep one lifecycle owner, check Boolean returns, and call `shutdown()` on cleanup
|
|
532
562
|
|
|
@@ -627,7 +657,7 @@ Behavior depends on where you run it:
|
|
|
627
657
|
| With `--local` flag | Installs skills locally to `./.agents/skills/` in the current project |
|
|
628
658
|
|
|
629
659
|
What it does:
|
|
630
|
-
- Installs the
|
|
660
|
+
- Installs the 13 TiTools skills (global or local depending on context)
|
|
631
661
|
- Installs ti-pro agent for Claude Code
|
|
632
662
|
- Installs the `/ti-check`, `/ti-new-screen` and `/ti-audit` slash commands into `~/.claude/commands/`
|
|
633
663
|
- Detects installed AI platforms and lets you choose which to link (only Claude Code needs platform symlinks; Gemini CLI and Codex CLI auto-discover from `~/.agents/skills/`)
|
|
@@ -836,7 +866,9 @@ This pattern is documented across four bundled TiTools skills: `ti-ui`, `ti-expe
|
|
|
836
866
|
| purgetss | Setup + Critical Rules | 34 files (Classic compatibility, grid, animations, icons, class-index, SVG pipeline, etc.) |
|
|
837
867
|
| ti-ui | UI Rules + Platform Diffs | 14 files (layouts, lists, gestures, etc.) |
|
|
838
868
|
| ti-game | Native 2D Game Workflow | 9 files (API, setup, patterns, recipes, tile maps, debugging, roadmap) |
|
|
839
|
-
| ti-
|
|
869
|
+
| ti-game-assets | Visual and Sound Assets | 10 guides and a manifest example; alpha and contract validation scripts |
|
|
870
|
+
| ti-admob-unified | Unified Advertising | 11 official module guides, source/hash update checks, official example library and game integration guidance |
|
|
871
|
+
| ti-synthengine | Native Sound Synthesis | 10 Markdown references (8 official, curated recipes, maintenance notes), raw statistics trials and a source hash manifest |
|
|
840
872
|
|
|
841
873
|
---
|
|
842
874
|
|
package/agents/ti-pro.md
CHANGED
|
@@ -7,7 +7,9 @@ skills:
|
|
|
7
7
|
- purgetss
|
|
8
8
|
- ti-ui
|
|
9
9
|
- ti-game
|
|
10
|
+
- ti-game-assets
|
|
10
11
|
- ti-synthengine
|
|
12
|
+
- ti-admob-unified
|
|
11
13
|
- ti-api
|
|
12
14
|
- ti-guides
|
|
13
15
|
- ti-howtos
|
|
@@ -29,8 +31,10 @@ When invoked, research complex topics by consulting the applicable skills from t
|
|
|
29
31
|
- `ti-expert` - Architecture, patterns, conventions
|
|
30
32
|
- `purgetss` - Utility-first styling classes (optional add-on; use when the project already has it or the user asks about it)
|
|
31
33
|
- `ti-ui` - UI/UX patterns, layouts, gestures
|
|
34
|
+
- `ti-game-assets` - Visual and sound asset contracts, raster generation, alpha/export validation, synthesis variants and stereo coordination when assets are involved
|
|
32
35
|
- `ti-game` - Native `ti.game` architecture and API when the module is declared
|
|
33
36
|
- `ti-synthengine` - Native sound synthesis and strict `ti.synthengine` contract when the module is declared
|
|
37
|
+
- `ti-admob-unified` - Official unified advertising/privacy/mediation module contract and provider setup when declared or requested
|
|
34
38
|
- `ti-api`, `ti-guides`, `ti-howtos` - Exact Titanium APIs, SDK fundamentals and native integrations
|
|
35
39
|
- `alloy-guides`, `alloy-howtos` - Alloy MVC, CLI, configuration and compiler workflows when the project is Alloy
|
|
36
40
|
|
package/commands/ti-audit.md
CHANGED
|
@@ -25,6 +25,10 @@ Native-module audit:
|
|
|
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
26
|
11. If the project declares `ti.synthengine`, invoke `ti-synthengine` — check strict option names and types, mutually exclusive pitch fields, valid envelope intersections, checked Boolean results, one clear lifecycle owner, delayed startup after layout, app-owned timer cancellation, and `shutdown()` cleanup.
|
|
27
27
|
|
|
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
|
+
|
|
30
|
+
13. If the project declares `ti.admob.unified`/mediation complements or implements an ad flow through this module, invoke `ti-admob-unified` — verify official module APIs, consent/request eligibility/initialization, test IDs, banner layout and refresh ownership, deliberate fullscreen presentation, callback cleanup and selected-provider mappings. Separate linking, Google test ads, provider delivery and physical acceptance. In games preserve native pause/audio/input ownership and the existing frequency policy.
|
|
31
|
+
|
|
28
32
|
If a conditional skill does not apply, record it as `not applicable` with the detected reason instead of inventing findings from it.
|
|
29
33
|
|
|
30
34
|
Report findings grouped by severity: critical, warning, info.
|
package/lib/config.js
CHANGED
package/package.json
CHANGED
package/skills/purgetss/SKILL.md
CHANGED
|
@@ -329,7 +329,7 @@ purgetss create 'MyApp' -d -v fa
|
|
|
329
329
|
> ```
|
|
330
330
|
|
|
331
331
|
- **NEVER add `composite` class explicitly** - That's the default, use `horizontal`/`vertical` when needed
|
|
332
|
-
- **Arbitrary values use parentheses**: `w-(100)`, `bg-(#ff0000)` - NO square brackets
|
|
332
|
+
- **Arbitrary values use parentheses**: `w-(100)`, `bg-(#ff0000)` - NO square brackets. A unitless value is resolved through `ti.ui.defaultunit` (see [values-and-units.md](references/values-and-units.md)); `w-(100px)` is explicit pixels, valid again since v7.18.0 after stopping the build from v7.8.0 through v7.17.1
|
|
333
333
|
- **`mode: 'all'` required** in `config.cjs` for Ti Elements styling
|
|
334
334
|
- **Classes use `kebab-case`**: `.my-class`, IDs use `camelCase`: `#myId`
|
|
335
335
|
|
|
@@ -427,7 +427,7 @@ Load these only when needed:
|
|
|
427
427
|
- [CLI Commands](references/cli-commands.md) - All `purgetss` commands
|
|
428
428
|
- [Color Commands](references/color-commands.md) - `semantic`, `shades` and `color-module`: Light/Dark semantic colors, palettes in `config.cjs`, and the CommonJS color module
|
|
429
429
|
- [Adopting PurgeTSS](references/adopting-purgetss.md) - Moving an existing Alloy app from hand-written `.tss` files to utility classes: the style-priority trap, view-by-view workflow, and property-to-class translation tables
|
|
430
|
-
- [Migration Guide](references/migration-guide.md) - Upgrading between PurgeTSS versions (v7.2.6 → v7.
|
|
430
|
+
- [Migration Guide](references/migration-guide.md) - Upgrading between PurgeTSS versions (v7.2.6 → v7.18.0): breaking changes and what to review after each upgrade
|
|
431
431
|
- **[Values and Units](references/values-and-units.md)** - How `ti.ui.defaultunit` in `tiapp.xml` interprets the unitless numeric values PurgeTSS writes (foundational concept for spacing, sizes, typography)
|
|
432
432
|
|
|
433
433
|
### Customization
|
|
@@ -445,7 +445,7 @@ Load these only when needed:
|
|
|
445
445
|
- [Grid Layout System](references/grid-layout.md) - 12-column grid, responsive layouts
|
|
446
446
|
- [Smart Mappings](references/smart-mappings.md) - How gap, shadows, and grid work under the hood
|
|
447
447
|
- [Arbitrary Values](references/arbitrary-values.md) - Parentheses notation for custom values
|
|
448
|
-
- [Platform Modifiers](references/platform-modifiers.md) - ios:, android:, tablet:, handheld:
|
|
448
|
+
- [Platform Modifiers](references/platform-modifiers.md) - ios:, android:, tablet:, handheld:, and stacked `ios:tablet:` (v7.18.0)
|
|
449
449
|
- [Opacity Modifier](references/opacity-modifier.md) - Color transparency with /50 syntax
|
|
450
450
|
- [Titanium Resets](references/titanium-resets.md) - Default styles for Ti elements
|
|
451
451
|
- [iOS Large Titles](references/ios-large-titles.md) - Best practice for iOS Large Title navigation
|
|
@@ -471,7 +471,7 @@ Load these only when needed:
|
|
|
471
471
|
- [PurgeTSS UI in Classic](references/purgetss-ui-classic.md) - Native JavaScript setup, public exports, animation objects, cleanup, and platform notes
|
|
472
472
|
|
|
473
473
|
### Release Notes
|
|
474
|
-
- [Version History](references/version-history.md) - Release-by-release feature additions and behavior changes (v7.4.0 → v7.
|
|
474
|
+
- [Version History](references/version-history.md) - Release-by-release feature additions and behavior changes (v7.4.0 → v7.18.0)
|
|
475
475
|
|
|
476
476
|
> **💡 TEXT FONTS (Google Fonts, Roboto, etc.)**
|
|
477
477
|
> For text fonts, see [Custom Fonts](references/custom-fonts.md).
|
|
@@ -321,14 +321,14 @@ alloy compile
|
|
|
321
321
|
<View class="w-(100) bg-(#ff0000)" />
|
|
322
322
|
```
|
|
323
323
|
|
|
324
|
-
**PurgeTSS syntax for arbitrary values uses `()` not `[]
|
|
324
|
+
**PurgeTSS syntax for arbitrary values uses `()` not `[]`. A unitless value follows `ti.ui.defaultunit`; `w-(100px)` is explicit pixels (it stops the build only on v7.8.0 through v7.17.1).**
|
|
325
325
|
|
|
326
326
|
> **🚨 v7.8.0+ HARD-FAILS THE BUILD ON SQUARE BRACKETS**
|
|
327
327
|
> Since v7.8.0, the build stops with a structured `Class Syntax Error` block (file path + line number + `Fix:` suggestion) the moment it spots `top-[10px]`, `wh-[12]`, or any other square-bracket utility. Pre-v7.8.0, those classes silently dropped into the `// Unused or unsupported classes` block of `app.tss` — easy to miss. Now they're loud and actionable.
|
|
328
328
|
>
|
|
329
329
|
> v7.10.1 reworded the error message from `'Tailwind-style brackets "[ ]" are not supported'` to `'Square brackets "[ ]" are not supported'`. Same enforcement, less framing.
|
|
330
330
|
>
|
|
331
|
-
> See [Arbitrary Values → Class syntax pre-validation](arbitrary-values.md#class-syntax-pre-validation) for the full list of patterns the pre-validator catches (
|
|
331
|
+
> See [Arbitrary Values → Class syntax pre-validation](arbitrary-values.md#class-syntax-pre-validation) for the full list of patterns the pre-validator catches (4 since v7.18.0: inverted negative sign, square brackets, empty parentheses, and whitespace inside parentheses).
|
|
332
332
|
|
|
333
333
|
**Examples:**
|
|
334
334
|
- `w-(100)` - Custom width
|
|
@@ -434,7 +434,7 @@ module.exports = {
|
|
|
434
434
|
| `w-full` | Percentage-based | `w-screen` (Ti.UI.FILL) |
|
|
435
435
|
| `rounded-full` with `w-*`/`h-*` | Fixed 8×8 circle, conflicts on size | `rounded-full-12` |
|
|
436
436
|
| `composite` class | Already default | Omit it |
|
|
437
|
-
| `w-[100]
|
|
437
|
+
| `w-[100]` | Stops the build (v7.8.0+) | `w-(100)` |
|
|
438
438
|
| Manual `.tss` | Duplicates classes; its rules override `app.tss` | Use utility classes (`app.tss` itself is rewritten on every run) |
|
|
439
439
|
| `gap` on a `%`-width column | Total exceeds 100% | `gap-*` on an inner View, or explicit margins |
|
|
440
440
|
| ScrollView without `content-*` sizing | No/unexpected scroll | Add `content-w-screen` + `content-h-auto` |
|
|
@@ -103,7 +103,7 @@ Once the converted view looks right on both platforms, and the user agrees:
|
|
|
103
103
|
| `layout: 'vertical'` | `vertical` |
|
|
104
104
|
| `elevation: 4` | `elevation-1` (the scale is ×4: `elevation-4` is `16`) |
|
|
105
105
|
|
|
106
|
-
Spacing classes multiply by 4 (`mt-4` = 16), and the numbers are unitless: Titanium resolves them with `ti.ui.defaultunit` (see [values-and-units.md](values-and-units.md)). For a value off the scale use an arbitrary value
|
|
106
|
+
Spacing classes multiply by 4 (`mt-4` = 16), and the numbers are unitless: Titanium resolves them with `ti.ui.defaultunit` (see [values-and-units.md](values-and-units.md)). For a value off the scale use an arbitrary value: `h-(60)` keeps the default unit, while `h-(60px)` means explicit pixels and stops the build on v7.8.0 through v7.17.1 (see [arbitrary-values.md](arbitrary-values.md)). Colors in your brand palette belong in `config.cjs` (see [customization-deep-dive.md](customization-deep-dive.md)), not in arbitrary `bg-(#hex)` classes repeated across views.
|
|
107
107
|
|
|
108
108
|
### Platform and device conditionals
|
|
109
109
|
|
|
@@ -133,5 +133,5 @@ See [animation-system.md](animation-system.md).
|
|
|
133
133
|
| Keeping inline attributes (`backgroundColor="…"`) | They override every class | Move them into classes |
|
|
134
134
|
| Flexbox classes (`flex-row`, `justify-between`) | Classes don't exist | `horizontal` / `vertical` layouts |
|
|
135
135
|
| `p-*` on a `View` or `Window` | No effect: `padding` exists only on `TextField`, `TextArea` and Android `CardView` | Margins on the children |
|
|
136
|
-
| `w-[100]`
|
|
136
|
+
| `w-[100]` | Stops the build | `w-(100)` |
|
|
137
137
|
| Converting every view at once | Hard to find what broke | One view per step, tested on both platforms |
|
|
@@ -204,7 +204,7 @@ Control how draggable views behave when dropped. All are **off by default**.
|
|
|
204
204
|
| `snap-center` | `{ animationProperties: { snap: { center: true } } }` | Auto-centers on target |
|
|
205
205
|
| `snap-center-false` | `{ animationProperties: { snap: { center: false } } }` | Disables snap-center |
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
There is no magnet snap: `snap-magnet` and `snap-magnet-false` were generated from v7.5.1 through v7.17.1, but the runtime never read `snap.magnet`, and v7.18.0 removed them.
|
|
208
208
|
|
|
209
209
|
### keep-z-index
|
|
210
210
|
|
|
@@ -307,7 +307,7 @@ The callback is a new object containing selected native primitives plus PurgeTSS
|
|
|
307
307
|
|
|
308
308
|
### Position and drag state
|
|
309
309
|
|
|
310
|
-
`swap()`, `snapTo()`, and `reorder()` persist destinations with `applyProperties()` and update private origin fields. They fall back to rendered `rect` coordinates, so call them only after layout.
|
|
310
|
+
`swap()`, `snapTo()`, and `reorder()` persist destinations with `applyProperties()` and update private origin fields. They fall back to rendered `rect` coordinates, so call them only after layout. `swap()` has this fallback since v7.18.0; before, a source view with no `top`/`left` sent the target view to `top: undefined`.
|
|
311
311
|
|
|
312
312
|
Drag precedence is precise:
|
|
313
313
|
|
|
@@ -49,7 +49,7 @@ Example output:
|
|
|
49
49
|
|
|
50
50
|
### Detected patterns
|
|
51
51
|
|
|
52
|
-
The validator catches
|
|
52
|
+
The validator catches four narrow, actionable mistakes:
|
|
53
53
|
|
|
54
54
|
| Pattern | Offending input | Suggested fix | Notes |
|
|
55
55
|
| ----------------------------- | --------------- | ------------- | ---------------------------------------------------------------- |
|
|
@@ -57,13 +57,14 @@ The validator catches five narrow, actionable mistakes:
|
|
|
57
57
|
| Square-bracket notation | `top-[10]` | `top-(10)` | PurgeTSS uses parentheses, not square brackets, for arbitrary values (v7.10.1 reworded the error from `Tailwind-style brackets "[ ]"` to `Square brackets "[ ]" are not supported`) |
|
|
58
58
|
| Empty parentheses | `wh-()` | (flagged, no auto-fix) | Add a value such as `wh-(10)` |
|
|
59
59
|
| Whitespace inside parentheses | `wh-( 200 )` | `wh-(200)` | No spaces allowed between `(`, the value, and `)` |
|
|
60
|
-
|
|
60
|
+
|
|
61
|
+
From v7.8.0 through v7.17.1 there was a fifth pattern, "Redundant `px` unit", which rejected `top-(10px)` and suggested `top-(10)`. v7.18.0 removed it: its error text claimed unit-less values are pixels, but they resolve through `ti.ui.defaultunit`, so the suggested fix changed the size.
|
|
61
62
|
|
|
62
63
|
### Unknown classes are still silently dropped
|
|
63
64
|
|
|
64
|
-
The pre-validator only fires on the
|
|
65
|
+
The pre-validator only fires on the four patterns above. Any other unknown class — typos, custom utilities not yet declared, vendor classes that are not enabled in `config.cjs` — is **not** reported as a `Class Syntax Error`. Those classes continue to flow into the `// Unused or unsupported classes` comment block in `app.tss`, exactly like before. This keeps the validator focused on actionable mistakes and avoids noise while you sketch out class names.
|
|
65
66
|
|
|
66
|
-
> **Units
|
|
67
|
+
> **Units.** A unitless value such as `w-(100)` generates `width: 100`, which Titanium resolves through `ti.ui.defaultunit` (normally `dp`; see [values-and-units.md](values-and-units.md)). A value with a unit keeps it: `w-(100px)` generates `width: '100px'`, explicit pixels, and `rem`, `in` or `%` work the same way. On v7.8.0 through v7.17.1 a `px` suffix stops the purge; write `w-(100)` there only if `dp` is what you meant.
|
|
67
68
|
|
|
68
69
|
### v7.8.0 parser fix for negatives inside parentheses
|
|
69
70
|
|
|
@@ -182,9 +183,11 @@ You can set an arbitrary value for any of the following color properties:
|
|
|
182
183
|
- `bg-` (*hex-rgb-or-rgba-value*)
|
|
183
184
|
- `bg-disabled-` (*hex-rgb-or-rgba-value*)
|
|
184
185
|
- `bg-focused-` (*hex-rgb-or-rgba-value*)
|
|
186
|
+
- `bg-from-` (*hex-rgb-or-rgba-value*) — v7.18.0; earlier versions wrote a literal `{value1}`
|
|
185
187
|
- `bg-selected-` (*hex-rgb-or-rgba-value*)
|
|
186
188
|
- `bg-selected-from-` (*hex-rgb-or-rgba-value*)
|
|
187
189
|
- `bg-selected-to-` (*hex-rgb-or-rgba-value*)
|
|
190
|
+
- `bg-to-` (*hex-rgb-or-rgba-value*)
|
|
188
191
|
- `border-` (*hex-rgb-or-rgba-value*)
|
|
189
192
|
- `colors-` (*hex-rgb-or-rgba-value*)
|
|
190
193
|
- `content-scrim-` (*hex-rgb-or-rgba-value*)
|
|
@@ -236,7 +239,7 @@ You can set an arbitrary value for any of the following color properties:
|
|
|
236
239
|
|
|
237
240
|
## Spacing Properties
|
|
238
241
|
|
|
239
|
-
You can set arbitrary values for most size and dimension properties using unitless numbers or units such as `rem`, `in`, or `%`, directly in XML files or in `config.cjs`. A `px` suffix is rejected
|
|
242
|
+
You can set arbitrary values for most size and dimension properties using unitless numbers or units such as `px`, `rem`, `in`, or `%`, directly in XML files or in `config.cjs`. A `px` suffix is rejected on v7.8.0 through v7.17.1 (see above).
|
|
240
243
|
|
|
241
244
|
```xml
|
|
242
245
|
<Alloy>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PurgeTSS Class Categories
|
|
2
2
|
|
|
3
|
-
Every class family in `utilities.tss` (PurgeTSS 7.
|
|
3
|
+
Every class family in `utilities.tss` (PurgeTSS 7.18.0), grouped by the kind of value it sets. Generated by `.claude/skills/titools-skill-auditor/scripts/purgetss-class-index.mjs`; do not edit by hand. For the property-by-property table see [class-index-properties.md](./class-index-properties.md); for naming rules see [class-index.md](./class-index.md).
|
|
4
4
|
|
|
5
5
|
<!-- TOC-START -->
|
|
6
6
|
## Contents
|
|
@@ -288,7 +288,7 @@ Every class family in `utilities.tss` (PurgeTSS 7.17.1), grouped by the kind of
|
|
|
288
288
|
| `item-content-type-uttype-*` | 33 | `itemContentType` | `item-content-type-uttype-text`, `item-content-type-uttype-tiff`, `item-content-type-uttype-apple-protected-mpeg4-audio` |
|
|
289
289
|
| `keyboard-appearance`, `keyboard-appearance-dark`, `keyboard-appearance-light` | 3 | `keyboardAppearance` | — |
|
|
290
290
|
| `keyboard-dismiss-mode-none`, `keyboard-dismiss-mode-on-drag`, `keyboard-dismiss-mode-interactive` | 3 | `keyboardDismissMode` | — |
|
|
291
|
-
| `keyboard-type`, `keyboard-type-*` |
|
|
291
|
+
| `keyboard-type`, `keyboard-type-*` | 11 | `keyboardType` | `keyboard-type-decimal-pad`, `keyboard-type-numbers-punctuation`, `keyboard-type-url` |
|
|
292
292
|
| `kind-contacts-organization`, `kind-contacts-person` | 2 | `kind` | — |
|
|
293
293
|
| `large-title-display-mode-automatic`, `large-title-display-mode-always`, `large-title-display-mode-never` | 3 | `largeTitleDisplayMode` | — |
|
|
294
294
|
| `layer-type-web-view-none`, `layer-type-web-view-software`, `layer-type-web-view-hardware` | 3 | `layerType` | — |
|
|
@@ -301,7 +301,7 @@ Every class family in `utilities.tss` (PurgeTSS 7.17.1), grouped by the kind of
|
|
|
301
301
|
| `location-services-authorization-denied`, `location-services-authorization-restricted`, `location-services-authorization-unknown`, `location-services-authorization-always`, `location-services-authorization-when-in-use` | 5 | `locationServicesAuthorization` | `location-services-authorization-denied`, `location-services-authorization-unknown`, `location-services-authorization-when-in-use` |
|
|
302
302
|
| `lock-screen-setting-not-supported`, `lock-screen-setting-enabled`, `lock-screen-setting-disabled` | 3 | `lockScreenSetting` | — |
|
|
303
303
|
| `lockscreen-visibility-private`, `lockscreen-visibility-public`, `lockscreen-visibility-secret` | 3 | `lockscreenVisibility` | — |
|
|
304
|
-
| `login-keyboard-type`, `login-keyboard-type-*` |
|
|
304
|
+
| `login-keyboard-type`, `login-keyboard-type-*` | 11 | `loginKeyboardType` | `login-keyboard-type-decimal-pad`, `login-keyboard-type-numbers-punctuation`, `login-keyboard-type-url` |
|
|
305
305
|
| `login-return-key-type-*` | 12 | `loginReturnKeyType` | `login-return-key-type-continue`, `login-return-key-type-join`, `login-return-key-type-yahoo` |
|
|
306
306
|
| `media-type-music-all`, `media-type-music-any-audio`, `media-type-music-audiobook`, `media-type-music`, `media-type-music-podcast` | 5 | `mediaType` | `media-type-music-all`, `media-type-music-audiobook`, `media-type-music-podcast` |
|
|
307
307
|
| `media-types-*` | 18 | `mediaTypes` | `media-types-music-type-all`, `media-types-video-type-closed-caption`, `media-types-video-type` |
|
|
@@ -321,7 +321,7 @@ Every class family in `utilities.tss` (PurgeTSS 7.17.1), grouped by the kind of
|
|
|
321
321
|
| `outputs-audio-session-port-*` | 14 | `outputs` | `outputs-audio-session-port-linein`, `outputs-audio-session-port-builtinspeaker`, `outputs-audio-session-port-caraudio` |
|
|
322
322
|
| `over-scroll-mode-always`, `over-scroll-mode-if-content-scrolls`, `over-scroll-mode-never` | 3 | `overScrollMode` | — |
|
|
323
323
|
| `override-user-interface-style-unspecified`, `override-user-interface-style-light`, `override-user-interface-style-dark` | 3 | `overrideUserInterfaceStyle` | — |
|
|
324
|
-
| `password-keyboard-type`, `password-keyboard-type-*` |
|
|
324
|
+
| `password-keyboard-type`, `password-keyboard-type-*` | 11 | `passwordKeyboardType` | `password-keyboard-type-decimal-pad`, `password-keyboard-type-numbers-punctuation`, `password-keyboard-type-url` |
|
|
325
325
|
| `password-return-key-type-*` | 12 | `passwordReturnKeyType` | `password-return-key-type-continue`, `password-return-key-type-join`, `password-return-key-type-yahoo` |
|
|
326
326
|
| `physical-size-category-large`, `physical-size-category-normal`, `physical-size-category-small`, `physical-size-category-undefined`, `physical-size-category-xlarge` | 5 | `physicalSizeCategory` | `physical-size-category-large`, `physical-size-category-small`, `physical-size-category-xlarge` |
|
|
327
327
|
| `platform-w`, `platform-h`, `platform-wh`, `platform-w-inverted`, `platform-h-inverted`, `platform-wh-inverted`, `inverted-platform-w`, `inverted-platform-h` | 8 | `width`, `height` | `platform-w`, `platform-wh`, `platform-wh-inverted` |
|
|
@@ -650,7 +650,7 @@ Each sets one property to `true` or `false`. Most come as a pair, `name` and `na
|
|
|
650
650
|
- `show-vertical-scroll-indicator` / `show-vertical-scroll-indicator-false`
|
|
651
651
|
- `shows-controls` / `shows-controls-false`
|
|
652
652
|
- `smooth-scroll-on-tab-click` / `smooth-scroll-on-tab-click-false`
|
|
653
|
-
- `snap-back` / `snap-back-false` / `snap-center` / `snap-center-false` / `
|
|
653
|
+
- `snap-back` / `snap-back-false` / `snap-center` / `snap-center-false` / `keep-z-index` / `keep-z-index-false`
|
|
654
654
|
- `sorted` / `sorted-false`
|
|
655
655
|
- `split-track` / `split-track-false`
|
|
656
656
|
- `stopped` / `stopped-false`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PurgeTSS Class Index — Titanium Properties (A–Z)
|
|
2
2
|
|
|
3
|
-
Every Titanium property that has PurgeTSS utility classes, with the classes that set it. Generated from `utilities.tss` (PurgeTSS 7.
|
|
3
|
+
Every Titanium property that has PurgeTSS utility classes, with the classes that set it. Generated from `utilities.tss` (PurgeTSS 7.18.0) by `.claude/skills/titools-skill-auditor/scripts/purgetss-class-index.mjs`; do not edit by hand. For naming rules and verification commands see [class-index.md](./class-index.md); for classes grouped by kind of value see [class-categories.md](./class-categories.md).
|
|
4
4
|
|
|
5
5
|
> Before suggesting ANY class, verify it exists: `grep -E "PATTERN" ./purgetss/styles/utilities.tss`
|
|
6
6
|
|
|
@@ -78,10 +78,10 @@ A property set inside `font` or `animationProperties` is listed with its contain
|
|
|
78
78
|
| `animationProperties.close` | `opacity-to-0`, `opacity-to-100`, `toggle-visible` | 3 | Animation | — |
|
|
79
79
|
| `animationProperties.close` | `zoom-*` | 30 | Animation | — |
|
|
80
80
|
| `animationProperties.complete` | `zoom-*` | 30 | Animation | — |
|
|
81
|
-
| `animationProperties.keepZIndex` | `snap-back`, `snap-back-false`, `snap-center`, `snap-center-false`, `
|
|
81
|
+
| `animationProperties.keepZIndex` | `snap-back`, `snap-back-false`, `snap-center`, `snap-center-false`, `keep-z-index`, `keep-z-index-false` | 6 | Animation | — |
|
|
82
82
|
| `animationProperties.open` | `opacity-to-0`, `opacity-to-100`, `toggle-visible` | 3 | Animation | — |
|
|
83
83
|
| `animationProperties.open` | `zoom-*` | 30 | Animation | — |
|
|
84
|
-
| `animationProperties.snap` | `snap-back`, `snap-back-false`, `snap-center`, `snap-center-false`, `
|
|
84
|
+
| `animationProperties.snap` | `snap-back`, `snap-back-false`, `snap-center`, `snap-center-false`, `keep-z-index`, `keep-z-index-false` | 6 | Animation | — |
|
|
85
85
|
| `animationStyle` | `animation-style-*` | 14 | ListViewAnimationProperties, TableViewAnimationProperties, closeWindowParams | iOS only |
|
|
86
86
|
| `appSupportsShakeToEdit` | `app-supports-shake-to-edit`, `app-supports-shake-to-edit-false` | 2 | iOS | — |
|
|
87
87
|
| `arrowDirection` | `arrow-direction-*` | 11 | CameraOptionsType, PhotoGalleryOptionsType, MenuPopupShowParams, iPad.Popover | some variants platform-only |
|
|
@@ -388,7 +388,7 @@ A property set inside `font` or `animationProperties` is listed with its contain
|
|
|
388
388
|
| `keyboardDisplayRequiresUserAction` | `keyboard-display-requires-user-action`, `keyboard-display-requires-user-action-false` | 2 | WebView | — |
|
|
389
389
|
| `keyboardToolbarColor` | `keyboard-toolbar-*` | 245 | TextArea, TextField | — |
|
|
390
390
|
| `keyboardToolbarHeight` | `keyboard-toolbar-h-*` | 35 | TextArea, TextField | — |
|
|
391
|
-
| `keyboardType` | `keyboard-type`, `keyboard-type-*` |
|
|
391
|
+
| `keyboardType` | `keyboard-type`, `keyboard-type-*` | 11 | AlertDialog, SearchBar, TextArea, TextField | — |
|
|
392
392
|
| `keyboardVisible` | `keyboard-visible`, `keyboard-visible-false` | 2 | Ti.App | — |
|
|
393
393
|
| `kind` | `kind-contacts-organization`, `kind-contacts-person` | 2 | Ti.App.iOS.SearchableItemAttributeSet, Ti.Contacts.Person | — |
|
|
394
394
|
| `largeTitleDisplayMode` | `large-title-display-mode-automatic`, `large-title-display-mode-always`, `large-title-display-mode-never` | 3 | NavigationWindow, TabGroup, Window, iOS.SplitWindow | iOS only |
|
|
@@ -422,7 +422,7 @@ A property set inside `font` or `animationProperties` is listed with its contain
|
|
|
422
422
|
| `locationServicesEnabled` | `location-services-enabled`, `location-services-enabled-false` | 2 | Ti.Geolocation | — |
|
|
423
423
|
| `lockScreenSetting` | `lock-screen-setting-not-supported`, `lock-screen-setting-enabled`, `lock-screen-setting-disabled` | 3 | GetUserNotificationSettings | iOS only |
|
|
424
424
|
| `lockscreenVisibility` | `lockscreen-visibility-private`, `lockscreen-visibility-public`, `lockscreen-visibility-secret` | 3 | Ti.Android.NotificationChannel | Android only |
|
|
425
|
-
| `loginKeyboardType` | `login-keyboard-type`, `login-keyboard-type-*` |
|
|
425
|
+
| `loginKeyboardType` | `login-keyboard-type`, `login-keyboard-type-*` | 11 | AlertDialog | — |
|
|
426
426
|
| `loginReturnKeyType` | `login-return-key-type-*` | 12 | AlertDialog | — |
|
|
427
427
|
| `looping` | `looping`, `looping-false` | 2 | Ti.Media.Sound | — |
|
|
428
428
|
| `mainFrameOnly` | `main-frame-only`, `main-frame-only-false` | 2 | UserScriptParams | — |
|
|
@@ -503,7 +503,7 @@ A property set inside `font` or `animationProperties` is listed with its contain
|
|
|
503
503
|
| `pagingControlTimeout` | `paging-control-timeout-*` | 22 | ScrollableView | — |
|
|
504
504
|
| `paragraphSpacingAfter` | `paragraph-spacing-after-*` | 64 | ParagraphAttribute | — |
|
|
505
505
|
| `paragraphSpacingBefore` | `paragraph-spacing-before-*` | 64 | ParagraphAttribute | — |
|
|
506
|
-
| `passwordKeyboardType` | `password-keyboard-type`, `password-keyboard-type-*` |
|
|
506
|
+
| `passwordKeyboardType` | `password-keyboard-type`, `password-keyboard-type-*` | 11 | AlertDialog | — |
|
|
507
507
|
| `passwordMask` | `password-mask`, `password-mask-false` | 2 | TextField | — |
|
|
508
508
|
| `passwordReturnKeyType` | `password-return-key-type-*` | 12 | AlertDialog | — |
|
|
509
509
|
| `pathOnly` | `path-only`, `path-only-false` | 2 | PhotoGalleryOptionsType | — |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# PurgeTSS Class Index
|
|
2
2
|
|
|
3
3
|
<!-- GENERATED:counts START -->
|
|
4
|
-
**Generated from `utilities.tss` (PurgeTSS 7.
|
|
4
|
+
**Generated from `utilities.tss` (PurgeTSS 7.18.0): 23,332 unique classes, 403 first segments, 620 Titanium properties.** Counts grow with each Titanium SDK and icon-font release.
|
|
5
5
|
<!-- GENERATED:counts END -->
|
|
6
6
|
|
|
7
7
|
Before suggesting ANY class, verify it exists:
|
|
@@ -258,7 +258,7 @@ The rest of this document collects conventions, prohibitions, and insights surfa
|
|
|
258
258
|
|
|
259
259
|
## All First Segments (Alphabetical)
|
|
260
260
|
|
|
261
|
-
> **NOTE**: v7.4.0 introduced `snap-back`, `snap-back-false`, `snap-center`, `snap-center-false`, `snap-magnet`, `snap-magnet-false`, `keep-z-index`, and `keep-z-index-false`. The
|
|
261
|
+
> **NOTE**: v7.4.0 introduced `snap-back`, `snap-back-false`, `snap-center`, `snap-center-false`, `snap-magnet`, `snap-magnet-false`, `keep-z-index`, and `keep-z-index-false`. The runtime never read `snap.magnet`, and v7.18.0 removed `snap-magnet` and `snap-magnet-false`. v7.5.3 added `font-sans`, `font-serif`, and `font-mono`.
|
|
262
262
|
|
|
263
263
|
|
|
264
264
|
<!-- GENERATED:prefixes START -->
|
|
@@ -346,7 +346,7 @@ purgetss images background/ # re-process one subfolder
|
|
|
346
346
|
| `--ios` | Only emit iPhone scale variants. Mutually exclusive with `--android`. |
|
|
347
347
|
| `--format <ext>` | Convert all outputs to `webp`, `jpeg`, `png`, `avif`, `gif`, or `tiff`. Default: keep source format. |
|
|
348
348
|
| `--quality <n>` | Quality `0-100` for `webp`, `jpeg`, `avif` and `tiff`. PNG and GIF ignore it. Default `85`. |
|
|
349
|
-
| `--width <n>` | (v7.8.0) Pin Android `mdpi` (= iPhone `@1x`) to `<n>` pixels wide. Larger scales derive as ×1.5, ×2, ×3, ×4 from that base; height stays proportional to the source's aspect ratio. Integer in `[1,
|
|
349
|
+
| `--width <n>` | (v7.8.0) Pin Android `mdpi` (= iPhone `@1x`) to `<n>` pixels wide. Larger scales derive as ×1.5, ×2, ×3, ×4 from that base; height stays proportional to the source's aspect ratio. Integer in `[1, 1024]`. |
|
|
350
350
|
| `--opacity <n>` | (v7.10.0) Multiply alpha of every density by `n/100`. Integer in `[0, 100]`. With `--format jpeg`, alpha flattens on white. |
|
|
351
351
|
| `--padding <n>` | (v7.10.0) Shrink the rendered image inside each density canvas by `n%` symmetric borders. Integer in `[0, 40]`. |
|
|
352
352
|
| `--output <relpath>` | (v7.10.0) Override the basename and subpath relative to each platform's `images/` root. |
|
|
@@ -458,7 +458,7 @@ purgetss il [-v=fa,mi,ms,f7] [-m] [-s]
|
|
|
458
458
|
| `-m, --module` | Copy the matching CommonJS module into `app/lib/` (Alloy) or `Resources/lib/` (Classic). |
|
|
459
459
|
| `-s, --styles` | Alloy only: copy official `.tss` sources into `purgetss/styles/` for reference. Classic skips this output. |
|
|
460
460
|
|
|
461
|
-
Vendor aliases: `fa`/`fontawesome`, `mi`/`materialicons`, `ms`/`materialsymbol
|
|
461
|
+
Vendor aliases: `fa`/`fontawesome`, `mi`/`materialicons`, `ms`/`materialsymbol`/`materialsymbols` (v7.18.0), `f7`/`framework7`. An unknown value stops the command before it writes anything and lists the valid ones (v7.18.0).
|
|
462
462
|
|
|
463
463
|
Every installed module exposes `families.default`. Direct variant aliases are `solid`/`regular`/`brands` for Font Awesome; `regular`/`outlined`/`round`/`sharp`/`twoTone` for Material Icons; `outlined`/`rounded`/`sharp` for Material Symbols; and `fontFamily` for Framework7.
|
|
464
464
|
|
|
@@ -123,7 +123,7 @@ classes: [
|
|
|
123
123
|
// Arbitrary values use parentheses notation
|
|
124
124
|
classes: [
|
|
125
125
|
'w-(160)', // Custom width
|
|
126
|
-
'h-(12.5rem)', // Custom height with a unit
|
|
126
|
+
'h-(12.5rem)', // Custom height with a unit
|
|
127
127
|
'bg-(#3b82f6)', // Custom hex color
|
|
128
128
|
'm-(10dp)', // Custom margin with unit
|
|
129
129
|
'border-(2)' // Custom border width
|
|
@@ -265,7 +265,7 @@ function createFormField(fieldType, options) {
|
|
|
265
265
|
>
|
|
266
266
|
> - `$` is the controller instance, so `$.UI.create()` is not available in a plain `app/lib/` CommonJS module, and PurgeTSS does not scan `app/lib/` for classes.
|
|
267
267
|
> - Each class list is written out in full under `classes:`. A shared `baseClasses` array spread into `classes: [...baseClasses, ...]` is invisible to the scanner: spread elements are skipped and the array itself is not under a `classes:` key, so those classes would be purged from `app.tss`.
|
|
268
|
-
> - `px-4` sets `padding`, which exists only on `Ti.UI.TextField`, `Ti.UI.TextArea` (Android and iOS) and `Ti.UI.Android.CardView` (apidoc 13_4_1_GA).
|
|
268
|
+
> - `px-4` sets `padding`, which exists only on `Ti.UI.TextField`, `Ti.UI.TextArea` (Android and iOS) and `Ti.UI.Android.CardView` (apidoc 13_4_1_GA).
|
|
269
269
|
|
|
270
270
|
### Example 2: Dynamic List Items
|
|
271
271
|
|
|
@@ -83,7 +83,7 @@ The official source organizes the grid utilities into these categories. The stru
|
|
|
83
83
|
|
|
84
84
|
### Row Placement Utilities
|
|
85
85
|
|
|
86
|
-
The
|
|
86
|
+
The grid alignment classes PurgeTSS generates are:
|
|
87
87
|
|
|
88
88
|
| Class | Generated rule |
|
|
89
89
|
| -------------- | ----------------------------------------------- |
|