Skip to content

task: Upgrade Vite from v5 to v8 and Hugo from v0.125 to v0.161#987

Closed
nathanrod wants to merge 2 commits into
mainfrom
task/upgrade-vite8
Closed

task: Upgrade Vite from v5 to v8 and Hugo from v0.125 to v0.161#987
nathanrod wants to merge 2 commits into
mainfrom
task/upgrade-vite8

Conversation

@nathanrod
Copy link
Copy Markdown
Member

PR type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • Documentation content changes
  • Other... Please describe:

PR checklist

Please check if your PR fulfills the following requirements:

  • I have read the CONTRIBUTING.md doc
  • The Git workflow follows our guidelines: CONTRIBUTING.md#git
  • I have added necessary documentation (if appropriate)

Does this PR introduce a breaking change?

  • Yes
  • No

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR upgrades the frontend build/tooling for the ivpn-v3 Hugo theme (Vite v5→v8, Hugo v0.125→v0.161) and migrates Sass usage from legacy @import to the modern module system (@use/@forward), along with related template updates.

Changes:

  • Upgrade Vite/Vue tooling dependencies and adjust Vite build configuration for the newer bundler pipeline.
  • Update Hugo templates and language configuration keys to align with the newer Hugo version.
  • Migrate Sass stylesheets (theme + Vue SFC styles) to the modern Sass module API.

Reviewed changes

Copilot reviewed 139 out of 141 changed files in this pull request and generated 46 comments.

Show a summary per file
File Description
Dockerfile Update build image Node version and Hugo installer URL
src/config/_default/config.toml Update multilingual configuration keys
src/data/manifest.json Update built asset manifest entries/hashes
src/themes/ivpn-v3/assets/js/App.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/App.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/AccountFooter.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/AccountInfo.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/AccountMenu.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/AppsSection.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/BraintreeCc.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/Device.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/FlashBox.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/FooterNavigation.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/OpenvpnConfig.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/PopUp.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/PriceBox.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/SelectBillingCycle.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/SelectLocations.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/SelectLocationsMulti.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/SelectPaymentMethod.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/ServerList.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/SignupSection.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/Tabs.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/Voucher.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/WireguardKey.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/icons/cc/discover.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/icons/cc/visa.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/AddWireguardKey.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/ChangeBillingCycle.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/ChangeProduct.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/DeleteAccount.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/DeleteDevice.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/DeleteWireguardKey.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/DisableDeviceManagement.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/DowngradeAccount.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/LogoutDevices.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/SetAuthAccountID.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/SetPaymentMethod.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/components/popups/TotpEnable.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/styles/base.scss Switch to @forward for shared vars/mixins
src/themes/ivpn-v3/assets/js/styles/buttons.scss Switch to @forward for shared vars
src/themes/ivpn-v3/assets/js/styles/tabs.scss Update Sass imports and theme mixin usage
src/themes/ivpn-v3/assets/js/styles/vpn-configuration.scss Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Account.vue Convert Sass imports and update deprecated Sass color fn usage
src/themes/ivpn-v3/assets/js/views/Account/AddFunds.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/AddFunds/CC.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/AddFunds/Cash.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/AddFunds/GiftCard.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/AddFunds/Monero.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/ChangeProduct/ChangeProduct.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/DeviceManagement.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Payment.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Services/DnsService.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Settings.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Settings/Authentication.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Settings/Billing.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/ThankYouLight.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Upgrade/Upgrade.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/UpgradePayment.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Vouchers.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/Wireguard.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Account/WireguardConfig.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Login.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/OnePageCheckout.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/PasswordReset.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/PasswordResetCommit.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/js/views/Prices.vue Convert Sass imports to @use
src/themes/ivpn-v3/assets/scss/_tokens.scss New forwarding entrypoint for design tokens/mixins
src/themes/ivpn-v3/assets/scss/base.scss Switch theme base to @forward _tokens
src/themes/ivpn-v3/assets/scss/components/badge.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/blog-article.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/blog.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/breadcrumb.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/buttons.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/connection-status.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/content.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/cta.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/eof.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/features.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/footer.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/guides.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/heading.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/highlight.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/image.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/listing.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/logo.scss New component stub using tokens
src/themes/ivpn-v3/assets/scss/components/mobile-navigation.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/more.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/navbar.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/navigation.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/notice.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/pagination.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/price-box.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/products.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/search.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/select.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/servers.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/service-item.scss Convert legacy imports to @use
src/themes/ivpn-v3/assets/scss/components/sidebar.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/stances.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/submenu.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/suggest-an-edit.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/switch.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/tag.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/team.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/text-banner.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/components/upgrade-box.scss Convert legacy import to @use + add tokens
src/themes/ivpn-v3/assets/scss/components/video.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/anchors.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/blockquote.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/body.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/headings.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/hr.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/img.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/input.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/label.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/lists.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/pre.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/section.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/sup.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/table.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/text.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/elements/vue.scss Add tokens via @use
src/themes/ivpn-v3/assets/scss/mixins/breakpoint.scss Switch to module-system Sass built-ins (sass:map, sass:meta)
src/themes/ivpn-v3/assets/scss/mixins/container.scss Ensure grid tokens are available via @use
src/themes/ivpn-v3/assets/scss/pages.scss Convert theme imports to @use
src/themes/ivpn-v3/assets/scss/services.scss Switch to tokens entrypoint (_tokens)
src/themes/ivpn-v3/layouts/_default/baseof.html Update language variable usage and manifest lookup
src/themes/ivpn-v3/layouts/_default/list.json New JSON list output template
src/themes/ivpn-v3/layouts/pages/application.html Update manifest lookup
src/themes/ivpn-v3/layouts/pages/help-details.html Update manifest lookup
src/themes/ivpn-v3/layouts/pages/help.html Update manifest lookup
src/themes/ivpn-v3/layouts/pages/light.html Update manifest lookup
src/themes/ivpn-v3/layouts/pages/mobile-app.html Update HTML lang attr and manifest lookup
src/themes/ivpn-v3/layouts/pages/openvpn-config.html Update manifest lookup
src/themes/ivpn-v3/layouts/pages/servers.html Update manifest lookup
src/themes/ivpn-v3/layouts/partials/footer.html Update language prefix variable and manifest lookup
src/themes/ivpn-v3/layouts/partials/header.html Update language prefix variable
src/themes/ivpn-v3/package-lock.json Lockfile updates for Vite v8 and dependency graph changes
src/themes/ivpn-v3/package.json Bump Vite/plugin-vue/Sass versions and dependencies
src/themes/ivpn-v3/vite.config.js Update build config for Vite v8/Rolldown and Sass deprecation controls

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/themes/ivpn-v3/layouts/_default/baseof.html
Comment thread src/themes/ivpn-v3/layouts/_default/baseof.html
Comment thread src/themes/ivpn-v3/layouts/_default/list.json
Comment thread src/themes/ivpn-v3/layouts/pages/application.html
Comment thread src/themes/ivpn-v3/layouts/pages/servers.html
Comment thread src/themes/ivpn-v3/assets/js/views/Account/UpgradePayment.vue
Comment thread src/themes/ivpn-v3/assets/js/views/Account/Settings.vue
Comment thread src/themes/ivpn-v3/assets/js/views/Account/Settings/Billing.vue
Comment thread src/themes/ivpn-v3/assets/js/views/Account/Account.vue
Comment thread src/themes/ivpn-v3/assets/js/styles/buttons.scss
@nathanrod nathanrod closed this May 21, 2026
@github-project-automation github-project-automation Bot moved this to Done in ivpn.net May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants