Releases: PSModule/GoogleFonts
v1.1.0
🚀 [Feature]: Install-GoogleFont is faster on repeats and bulk installs (#210)
Install-GoogleFont now finishes repeated runs and large batches significantly faster by skipping already-installed fonts, deduplicating overlapping selections, reusing cached download files, and increasing download concurrency to match available processor capacity by default.
Changed: Repeated installs skip unnecessary work
When -Force is not used, rows that are already installed at the selected scope are skipped before download and install work starts, so reruns avoid network and disk overhead while still reporting skip reasons through verbose output.
Changed: Bulk and wildcard selections process each font file once
Selections are resolved and deduplicated by URL before processing, which prevents duplicate download/install work from overlapping wildcard patterns and repeated names in the same invocation.
Changed: Download throughput scales with host capacity
The download phase now uses parallel work with a default throttle based on Environment::ProcessorCount, so larger hosts use more available network and CPU capacity without requiring callers to change existing command usage.
Changed: Download cache reuse cuts repeat transfer cost
Downloaded font assets are reused when the same URL is requested again and -Force is not used, reducing repeated CDN requests across retries and reruns.
Fixed: Download progress rendering no longer slows bulk runs
Progress rendering is suppressed during web requests and restored afterward, keeping transfer-heavy runs faster while preserving normal progress behavior outside the function scope.
Technical Details
- Updated src/functions/public/Install-GoogleFont.ps1 to add pre-download installed-font detection, URL-based deduplication, cache-aware download flow, parallel download throttling defaults, and scoped progress preference suppression/restoration.
- Updated .github/PSModule.yml to align module workflow behavior for this feature branch validation path.
- Implementation plan progress: tasks listed in #205, #206, #207, #208, and #209 are completed in this PR.