Skip to content

Modernize the project - #650

Open
kklem0 wants to merge 50 commits into
ionic-team:mainfrom
sssf-code:main
Open

Modernize the project#650
kklem0 wants to merge 50 commits into
ionic-team:mainfrom
sssf-code:main

Conversation

@kklem0

@kklem0 kklem0 commented Jul 29, 2026

Copy link
Copy Markdown

Modernize the project, if you're interested of merging this, we will fix the small things including the temporary name. For now install it with pnpm add -D sssf-capacitor-assets for testing.

ZaLiTHkA and others added 30 commits March 23, 2025 14:51
source: ionic-team#612

note: `@ionic/eslint-config@0.4.0` already depends on `@typescript-eslint/eslint-plugin@^5.58.0`.
source: ionic-team#633

..but personally, I believe this just "fixes" the notification icon generation that someone else started adding a long time ago. :/ either way, that's where these changes come from.
kklem0 and others added 20 commits July 17, 2026 13:05
…roken tests

- npm audit: 29 vulnerabilities (9 high) -> 0; drop overrides that pinned vulnerable @xmldom/xmldom
- fix ESM-only breakage that broke jest and CI: yargs 18 -> 17, replace node-fetch with global fetch
- upgrade jest 27 -> 30, ts-jest 29, TypeScript 5.9, sharp 0.35, husky 9, trapeze 7.1.4
- remove unused np, @types/{plist->kept,rimraf,slice-ansi,node-fetch} dev deps
- declare phantom deps exposed by pnpm strict layout (kleur, @ionic/utils-*, cli-framework-output)
- pin xcode to apache/cordova-node-xcode@4a9fd34 (4.0.0-dev, no uuid); remove unused 'replace' via pnpm override removal; mergexml gone with trapeze 7.1.4
- CI: pnpm + Node 22/24 matrix; weekly workflow now audits, builds and tests before pushing
- engines >=20.3.0, .nvmrc 24, packageManager pnpm@10.11.1, CONTRIBUTING uses pnpm
…4.0.0)

BREAKING CHANGE: engines.node raised from >=20.3.0 to >=22.12.0 (Node 20 is EOL).

- commander 15, yargs 18, node-html-parser 8 — require(esm) is guaranteed on
  the new Node floor; tsconfig module node16 -> nodenext to model it
- packageManager pnpm@11.13.1; lockfile rebuilt under pnpm 11's 24h
  minimumReleaseAge supply-chain gate
- xcode stays pinned to apache/cordova-node-xcode@4a9fd34 (4.0.0-dev, drops
  uuid@7); blockExoticSubdeps deliberately disabled for it — re-enable and
  switch to a version range once xcode@4 is published to npm
- GitHub Actions checkout/setup-node v4 -> v7
- remove stale changeset left over from PR ionic-team#605

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
iOS: generate iOS 18+ dark and tinted 1024px icon variants registered
via asset-catalog appearances (Xcode 16 format), with optional explicit
ios/icon-dark.png and ios/icon-tinted.png sources. Verified with
Xcode 26 actool (zero errors/warnings).

Android: adaptive icons gain a <monochrome> layer (Android 13+ themed
icons; Android 16 QPR2 force-themes without it) and a spec-compliant
full-bleed background; foreground inset moved to the 66dp safe zone
(19.4%). Notification icon generation is now wired up (was dead code)
with xxxhdpi corrected 144->96px. Fixed android/icon-foreground and
icon-background loading with the wrong asset kind, and the default dark
splash generated at landscape dimensions. Dropped obsolete ldpi icons;
legacy icon padding now scales with density. Verified with a real
Capacitor 8 gradle build and APK inspection.

PWA: icons are genuine PNGs (previously PNG bytes in .webp-named files)
in the modern set 192/512/1024 plus a separate safe-zone-padded
maskable icon and an apple-touch-icon.png. Manifest MIME types fixed,
manifest cleanup no longer deletes user-managed files, apple splash
device list refreshed through iPhone 17 / M4 iPad Pro, and the broken
Apple HIG scraper removed (node-html-parser dependency dropped).
--pwaTags works again with point-based media queries. The previously
skipped PWA splash test is re-enabled now that sizes are deterministic.

Test fixtures refreshed to the Capacitor 8 template
(compileSdk 36, minSdk 24).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Scaffolds a fresh Capacitor app from @capacitor/app@latest, generates
assets with the built CLI, and verifies the real toolchains accept the
output: Gradle assembleDebug plus AAPT2 APK inspection on Android
(monochrome adaptive icon layer, 6 notification icons, no ldpi), and
Xcode actool compilation of the appearances-based asset catalog on iOS.
Both verification scripts were validated verbatim against local builds.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Drops the Node 22 matrix leg from CI and aligns the E2E workflow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Minor bump for the asset modernization. Engines remain >=22.12; CI
tests on Node 24 only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds release.yml: on v* tags (or dispatch on a tag ref), verifies the
tag matches package.json, builds, lints, tests, then publishes with
OIDC — no NPM_TOKEN secret, provenance attached automatically.

The weekly update workflow now tags its version bump and dispatches
the release workflow (GITHUB_TOKEN tag pushes cannot trigger workflows
directly), so npm tracks main automatically. README documents the npm
install path alongside github:#main.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
CONTRIBUTING.md described local `pnpm changeset publish`, which the
trusted-publisher-only setup no longer permits; it now documents the
tag-driven CI release. README gains --androidFlavor and --pwaTags in
the flags list.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
AGENTS.md carries the repo guidance for AI coding agents: architecture
map, commands, platform asset rules, testing conventions, release and
versioning policy, and dependency constraints. CLAUDE.md imports it via
@AGENTS.md; copilot-instructions.md and GEMINI.md point to it. Tools
like Cursor and Codex read AGENTS.md natively.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants