Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ionic-team/ionic-cli
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: develop
Choose a base ref
...
head repository: ionic-team/ionic-cli
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: major-8.0
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 1 commit
  • 31 files changed
  • 3 contributors

Commits on Jun 18, 2026

  1. feat(v8): foundation for the major 8.0 release (#5128)

    * chore(release): adopt Lerna 5 with GitHub Releases and add v8 breaking-change docs
    
    - Bump root lerna devDependency 3.13.3 -> 5.6.2 (matches ionic-framework)
    - publish:ci passes --create-release github so Lerna creates a GitHub Release
      per published tag; cd.yml provides GH_TOKEN (built-in token, contents: write)
    - Add BREAKING.md (+ BREAKING_ARCHIVE/ convention) seeding the v8 removed-command log
    - Add .github/RELEASING.md major-release runbook
    
    * fix(cli): make build, lint, and tests run on Windows and macOS
    
    Pre-existing cross-platform issues surfaced while validating the Lerna 5
    upgrade; none are caused by the release tooling:
    
    - discover: pin netmask 2.0.2 and @types/netmask 2.0.5 — the untracked
      dependency tree had drifted to netmask 2.1.x, whose bundled types declare
      'broadcast: string | undefined' and broke the build (TS2322)
    - replace the Unix-only 'lint': 'true' no-op with cross-platform 'exit 0' in
      all packages ('true' is not a cmd.exe builtin, so npm run lint failed on Windows)
    - angular/cordova tests: normalize path separators in assertions and return the
      floating expect().resolves promises (fixes Windows path failures and the
      resulting jest-worker 'Call retries were exceeded' crash)
    
    * docs(release): correct publish:testing guidance in runbook
    
    publish:testing is NOT a dry run — lerna publish runs npm publish (testing
    dist-tag); --no-push only suppresses git. It also only runs from 'stable' due
    to the allowBranch guard. Replace the §4 'dry run' step with a safe,
    non-publishing 'lerna version --no-push --no-git-tag-version --allow-branch'
    smoke test, and document the bump-from-commits behavior.
    
    * ci: pin actions to commit SHAs and bump to latest
    
    Security-harden workflows by pinning actions to immutable commit SHAs
    (version in trailing comment), and update from v3:
    
    - actions/checkout  v3 -> v6.0.3
    - actions/setup-node v3 -> v6.4.0
    - actions/cache      v3 -> v5.0.5 (v3 cache backend was retired by GitHub)
    
    * chore(deps): upgrade to TypeScript 5.9.3 and jest 29
    
    Upgrade the TypeScript toolchain across all packages:
    
    - typescript    ~4.8.0  -> ~5.9.3
    - ts-jest       ~26.3.0 -> ^29.4.11
    - jest/jest-cli ^26.x   -> ^29.7.0  (stays on 29 to keep Node 16 support)
    - @types/jest   ^26.x   -> ^29.5.14
    - @types/node   ~16.0.0 -> ^16.18.126 (16.0.3 conflicted with TS 5.9 libs)
    - tslib         ^2.0.1  -> ^2.8.1
    
    Required code/config changes:
    - jest.config.base.js: migrate ts-jest globals -> transform API, tsConfig -> tsconfig, explicit testEnvironment: node
    - utils-array reduce(): annotate accumulator T|U + cast awaited result (TS 5.9 Awaited/NonNullable inference)
    - tests: drop async from async-done callbacks (utils-fs), convert to async()+expect.assertions (utils-subprocess), spyOn().and.callFake -> jest.spyOn().mockImplementation (utils-network), legacyFakeTimers for timer-mock assertions (cli-framework-output)
    
    Validated: build + lint + full test suite green.
    
    * docs(release): make the runbook smoke-test command cross-shell
    
    The step-4 lerna version command used a bash-only backslash continuation and
    $(git branch --show-current), which fail in PowerShell/cmd. Use a single-line
    command with --allow-branch "*" (quoted so bash doesn't glob-expand it) so it
    runs identically in PowerShell, cmd, bash, and zsh. Also scope the cleanup to
    'git checkout -- packages' so it only discards lerna's version writes.
    
    * Update .github/RELEASING.md
    
    Co-authored-by: Shane <shane@shanessite.net>
    
    * fix(discover): let netmask float and handle nullable broadcast
    
    netmask was pinned to an exact 2.0.2 to dodge a TS2322 build break. The
    break originates from netmask >= 2.1, which ships its own bundled type
    declarations (broadcast: string | undefined) that shadow @types/netmask
    entirely — so pinning @types/netmask alone does not fix it.
    
    Instead, restore the caret (^2.0.2) so the runtime can receive 2.x
    patches, drop the now-shadowed @types/netmask dev dependency, and handle
    the nullable broadcast in computeBroadcastAddress (broadcast is absent
    for /31 and /32 blocks; fall back to the network address).
    
    Validated: discover build + tests green with netmask 2.1.1.
    
    * docs(release): refresh Node guidance for the jest 29 toolchain
    
    The pre-publish validation note referenced a "bundled jest 26 worker"
    caveat that is stale on this branch (it ships jest 29). jest 29 supports
    newer Node than 26 did, so drop the caveat and state the validated
    matrix: Node 18 to match CI, with the suite also green on Node 16 and 24.
    
    * ci: block publishing BREAKING.md with unfilled <TODO placeholders
    
    The v8 BREAKING.md entries are seeded placeholders that each removal PR
    fills in. Add a guard to the stable publish pipeline that fails if any
    <TODO marker remains, so the "each removal PR fills it in" contract is
    enforced rather than risking placeholders shipping to users at 8.0.0.
    
    * docs: add pull request template
    
    Mirror the Ionic Framework PR template so contributors get a consistent
    structure: issue reference, current/new behavior, a breaking-change
    checkbox with migration guidance, and an other-information section. The
    breaking-change note points at this repo's BREAKING.md and the
    Conventional Commits footer format used by the publish pipeline.
    
    * Update .github/RELEASING.md
    
    Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
    
    * Update .github/RELEASING.md
    
    Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
    
    * feat!: require Node >= 18
    
    Enforce the supported runtime through package.json rather than leaving it
    to documentation. Set engines.node to ">=18.0.0" across the monorepo: the
    root workspace, every published @ionic/* package, and the previously unset
    @ionic/discover and cli-scripts manifests.
    
    Align the rest of the toolchain with the new baseline — drop Node 16.x
    from the CI matrix (now 18.x and 20.x) and update the release runbook so
    the recommended and minimum Node versions no longer disagree.
    
    BREAKING CHANGE: Node 16 is no longer supported. The Ionic CLI and its
    @ionic/* packages now require Node 18 or newer.
    
    * docs(release): correct the discover drift-guard note
    
    The step-3 drift guard still described the old netmask@2.0.2 +
    @types/netmask@2.0.5 pins. That approach was replaced: netmask floats at
    ^2.0.2 (resolving to 2.1.x) using its own bundled types, @types/netmask
    was dropped, and computeBroadcastAddress handles the nullable broadcast.
    Update the note to match.
    
    * docs(release): point to source files for Node versions
    
    Stop hardcoding specific Node versions in the runbook. Reference the
    authoritative sources instead — `engines.node` in package.json for the
    minimum and the `node:` matrix in ci.yml (plus `node-version` in cd.yml)
    for the versions CI exercises — so the doc stays correct when CI's Node
    versions change without a separate edit.
    
    ---------
    
    Co-authored-by: Shane <shane@shanessite.net>
    Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
    3 people authored Jun 18, 2026
    Configuration menu
    Copy the full SHA
    cc6cc41 View commit details
    Browse the repository at this point in the history
Loading