From dc27500237c57516c86df1e3f70472c9910bf937 Mon Sep 17 00:00:00 2001 From: Spythere Date: Wed, 10 Dec 2025 13:55:39 +0100 Subject: [PATCH 01/10] chore: updated regex for production host flag --- src/App.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.vue b/src/App.vue index 4d3eb1d..a550561 100644 --- a/src/App.vue +++ b/src/App.vue @@ -71,7 +71,7 @@ export default defineComponent({ isUpdateCardOpen: false, isWelcomeCardOpen: false, - isOnProductionHost: location.hostname == 'stacjownik-td2.web.app' + isOnProductionHost: /(stacjownik-td2)(\.web\.app|\.spythere\.eu)/.test(location.hostname) }), created() { From b08e39ae1a43061fcab49eadac01fd1214114a37 Mon Sep 17 00:00:00 2001 From: Spythere Date: Wed, 10 Dec 2025 13:59:16 +0100 Subject: [PATCH 02/10] chore(workflow): separated job steps for ssh & scp commands --- .github/workflows/vps-deploy.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/vps-deploy.yml b/.github/workflows/vps-deploy.yml index c33f793..7972e51 100644 --- a/.github/workflows/vps-deploy.yml +++ b/.github/workflows/vps-deploy.yml @@ -14,7 +14,7 @@ jobs: run: | mkdir -p ~/.ssh echo "${{ secrets.VPS_SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa - - name: Send files to the web server and remove old assets - run: | - ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} -p 2022 "rm -rf /var/www/stacjownik/assets" - scp -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa -P 2022 -r ./dist/* ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }}:/var/www/stacjownik \ No newline at end of file + - name: Clear old assets + run: ssh -o StrictHostKeyChecking=no -v -i ~/.ssh/id_rsa ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} -p 2022 "rm -rf /var/www/$PROJECT_NAME/assets" + - name: Send new files + run: scp -o StrictHostKeyChecking=no -v -i ~/.ssh/id_rsa -P 2022 -r ./dist/* ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }}:/var/www/$PROJECT_NAME \ No newline at end of file From ce053a5a82d3398b08c403f7a642475c49687bd8 Mon Sep 17 00:00:00 2001 From: Spythere Date: Thu, 11 Dec 2025 01:37:16 +0100 Subject: [PATCH 03/10] chore(app): added card with information about scheduled migration to new hosting --- public/images/icon-loading.svg | 60 ++++++++++++++ src/App.vue | 21 +++++ src/components/App/MigrateInfoCard.vue | 108 +++++++++++++++++++++++++ src/components/Global/Card.vue | 1 + 4 files changed, 190 insertions(+) create mode 100755 public/images/icon-loading.svg create mode 100644 src/components/App/MigrateInfoCard.vue diff --git a/public/images/icon-loading.svg b/public/images/icon-loading.svg new file mode 100755 index 0000000..b0f7e8d --- /dev/null +++ b/public/images/icon-loading.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/App.vue b/src/App.vue index a550561..29c48dc 100644 --- a/src/App.vue +++ b/src/App.vue @@ -7,6 +7,11 @@ + + @@ -47,9 +52,11 @@ import UpdateCard from './components/App/UpdateCard.vue'; import StorageManager from './managers/storageManager'; import AppFooter from './components/App/AppFooter.vue'; import AppWelcomeCard from './components/App/AppWelcomeCard.vue'; +import MigrateInfoCard from './components/App/MigrateInfoCard.vue'; const STORAGE_VERSION_KEY = 'app_version'; const WELCOME_CARD_SEEN_KEY = 'welcome_card_seen'; +const MIGRATE_INFO_CARD_SEEN_KEY = 'migrate_info_card_seen'; export default defineComponent({ components: { @@ -59,6 +66,7 @@ export default defineComponent({ AppFooter, UpdateCard, AppWelcomeCard, + MigrateInfoCard, Tooltip }, @@ -70,6 +78,7 @@ export default defineComponent({ isUpdateCardOpen: false, isWelcomeCardOpen: false, + isMigrateInfoCardOpen: false, isOnProductionHost: /(stacjownik-td2)(\.web\.app|\.spythere\.eu)/.test(location.hostname) }), @@ -91,6 +100,7 @@ export default defineComponent({ this.setupOfflineHandling(); this.checkAppVersion(); this.handleQueries(); + this.handleMigrateInfo(); this.apiStore.setupAPIData(); }, @@ -159,6 +169,12 @@ export default defineComponent({ this.apiStore.connectToAPI(); }, + handleMigrateInfo() { + if (StorageManager.getBooleanValue(MIGRATE_INFO_CARD_SEEN_KEY) === true) return; + + this.isMigrateInfoCardOpen = true; + }, + loadLang() { const storageLang = StorageManager.getStringValue('lang'); @@ -180,6 +196,11 @@ export default defineComponent({ closeWelcomeCard() { this.isWelcomeCardOpen = false; StorageManager.setBooleanValue(WELCOME_CARD_SEEN_KEY, true); + }, + + closeMigrateInfoCard() { + this.isMigrateInfoCardOpen = false; + // StorageManager.setBooleanValue(MIGRATE_INFO_CARD_SEEN_KEY, true); } } }); diff --git a/src/components/App/MigrateInfoCard.vue b/src/components/App/MigrateInfoCard.vue new file mode 100644 index 0000000..39aff53 --- /dev/null +++ b/src/components/App/MigrateInfoCard.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/components/Global/Card.vue b/src/components/Global/Card.vue index 1244ab7..820624e 100644 --- a/src/components/Global/Card.vue +++ b/src/components/Global/Card.vue @@ -81,6 +81,7 @@ export default defineComponent({ background-color: #1a1a1a; box-shadow: 0 0 15px 10px #0e0e0e; + border-radius: 1em; overflow: auto; } From b72ee13bdb86e83783e09f2743eca93c3e3238a1 Mon Sep 17 00:00:00 2001 From: Spythere Date: Thu, 11 Dec 2025 01:43:01 +0100 Subject: [PATCH 04/10] chore(workflow): added project name env to vps deploy --- .github/workflows/vps-deploy.yml | 7 ++++++- src/App.vue | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/vps-deploy.yml b/.github/workflows/vps-deploy.yml index 7972e51..f4d54c4 100644 --- a/.github/workflows/vps-deploy.yml +++ b/.github/workflows/vps-deploy.yml @@ -1,8 +1,13 @@ name: Build & Deploy to VPS -'on': + +on: push: branches: - master + +env: + PROJECT_NAME: stacjownik + jobs: build_and_deploy: runs-on: ubuntu-latest diff --git a/src/App.vue b/src/App.vue index 29c48dc..ec5869a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -170,6 +170,7 @@ export default defineComponent({ }, handleMigrateInfo() { + if (location.hostname != 'stacjownik-td2.web.app') return; if (StorageManager.getBooleanValue(MIGRATE_INFO_CARD_SEEN_KEY) === true) return; this.isMigrateInfoCardOpen = true; From 6b4231496ed8d5fd1aa24cfc5cd021d89dc21334 Mon Sep 17 00:00:00 2001 From: Spythere Date: Thu, 11 Dec 2025 01:53:10 +0100 Subject: [PATCH 05/10] chore(app): displaying migration card only on web.app domain --- src/App.vue | 2 +- src/components/App/MigrateInfoCard.vue | 8 ++++---- src/components/Global/Card.vue | 6 ------ 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/App.vue b/src/App.vue index ec5869a..8e206a7 100644 --- a/src/App.vue +++ b/src/App.vue @@ -201,7 +201,7 @@ export default defineComponent({ closeMigrateInfoCard() { this.isMigrateInfoCardOpen = false; - // StorageManager.setBooleanValue(MIGRATE_INFO_CARD_SEEN_KEY, true); + StorageManager.setBooleanValue(MIGRATE_INFO_CARD_SEEN_KEY, true); } } }); diff --git a/src/components/App/MigrateInfoCard.vue b/src/components/App/MigrateInfoCard.vue index 39aff53..f4861ea 100644 --- a/src/components/App/MigrateInfoCard.vue +++ b/src/components/App/MigrateInfoCard.vue @@ -17,9 +17,9 @@

- https://stacjownik-td2.spythere.eu/ + + https://stacjownik-td2.spythere.eu/ +

@@ -66,7 +66,7 @@ function toggleCard() { From 1cd93f09c41182f043f36720db37bf6a982a2b1b Mon Sep 17 00:00:00 2001 From: Spythere Date: Fri, 12 Dec 2025 15:07:08 +0100 Subject: [PATCH 06/10] chore(migrate info): completed english translation; opening card on query --- src/App.vue | 4 ++++ src/components/App/MigrateInfoCard.vue | 30 +++++++------------------- src/locales/en.json | 8 +++++++ src/locales/pl.json | 7 ++++++ 4 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/App.vue b/src/App.vue index 8e206a7..40398b5 100644 --- a/src/App.vue +++ b/src/App.vue @@ -111,6 +111,10 @@ export default defineComponent({ if (query.get('welcomeCard') == '1') { this.isWelcomeCardOpen = true; } + + if (query.get('migrateCard') == '1') { + this.isMigrateInfoCardOpen = true; + } }, async checkAppVersion() { diff --git a/src/components/App/MigrateInfoCard.vue b/src/components/App/MigrateInfoCard.vue index f4861ea..cc9146e 100644 --- a/src/components/App/MigrateInfoCard.vue +++ b/src/components/App/MigrateInfoCard.vue @@ -3,40 +3,23 @@

loading -

Uwaga!

+

{{ t('migrate-info.header-text') }}

-

- Ze względu na coraz większe zainteresowanie Stacjownikiem oraz innymi aplikacjami mojego - autorstwa - - z dniem 1 stycznia 2026r. Stacjownik zostaje permamentnie przeniesiony na nową - dedykowaną domenę: - -

+

- https://stacjownik-td2.spythere.eu/ + {{ t('migrate-info.paragraph-2-link-text') }}

- Obecna strona nie będzie otrzymywać już przyszłych aktualizacji, a po Nowym Roku będzie - jedynie przenosić na powyższy adres. + {{ t('migrate-info.paragraph-3-text') }}

-

- "Po co psujesz? Przecież było dobrze tyle czasu!" -
- Zmiana podyktowana jest głównie wzrostem zainteresowania stroną i przekraczaniem darmowego - limitu obecnego hostingu Google'a, który wymusza płatność za każde użycie serwisu ponad - określoną wartość (lub w przeciwnym wypadku blokuje do niego dostęp). Przenosząc stronę na - dedykowaną domenę (która jest już wykupiona i utrzymywana dzięki pomocy - Wspierających), pozbędę się niepotrzebnego wydatku dla - wielkiej korporacji, która w każdej chwili może mi wyłączyć aplikację. -

+

@@ -47,8 +30,11 @@ From 47f824bef05815b60002b5e693ccdc964ee65416 Mon Sep 17 00:00:00 2001 From: Spythere Date: Sat, 13 Dec 2025 00:19:20 +0100 Subject: [PATCH 10/10] fix(migrate): translation correction --- src/locales/en.json | 2 +- src/locales/pl.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 5526516..f669f0d 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -27,7 +27,7 @@ "tooltip-content": "Information about migration of\nStacjownik site!", "header-text": "Attention!", "paragraph-1-html": "Due to the growing interest in Stacjownik and other applications I have made, as of January 1, 2026, Stacjownik will be permanently moved to a new dedicated domain:", - "paragraph-2-link-text": "https://stacjownik-td2.spythere.eu/", + "paragraph-2-link-text": "https://stacjownik-td2.spythere.eu", "paragraph-3-text": "This website will no longer receive future updates and after the New Year it will only redirect to the address above.", "paragraph-4-italic-text": "\"Why are you messing this up? It's been fine for so long!\"", "paragraph-4-html": "\"Why are you messing this up? It's been fine for so long!\"
The change is mainly caused by the growing website interest and exceeding the free limit plan of the current Google hosting, which forces additional fees for each use of the service above a certain threshold (or otherwise blocks access to it). By moving the site to a dedicated domain (which has already been purchased and is maintained with the financial help of Supporters), I will get rid of unnecessary expenses for a large corporation that can shut down my application at any given time." diff --git a/src/locales/pl.json b/src/locales/pl.json index efa9a99..730f678 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -27,7 +27,7 @@ "tooltip-content": "Informacja o migracji\nstrony Stacjownika!", "header-text": "Uwaga!", "paragraph-1-html": "Ze względu na coraz większe zainteresowanie Stacjownikiem oraz innymi aplikacjami mojego autorstwa z dniem 1 stycznia 2026r. Stacjownik zostaje permamentnie przeniesiony na nową dedykowaną domenę:", - "paragraph-2-link-text": "https://stacjownik-td2.spythere.eu/", + "paragraph-2-link-text": "https://stacjownik-td2.spythere.eu", "paragraph-3-text": "Obecna strona nie będzie otrzymywać już przyszłych aktualizacji, a po Nowym Roku będzie jedynie przenosić na powyższy adres.", "paragraph-4-html": "\"Po co psujesz? Przecież było dobrze tyle czasu!\"
Zmiana podyktowana jest głównie wzrostem zainteresowania stroną i przekraczaniem darmowego limitu obecnego hostingu Google'a, który wymusza płatność za każde użycie serwisu ponad określoną wartość (lub w przeciwnym wypadku blokuje do niego dostęp). Przenosząc stronę na dedykowaną domenę (która jest już wykupiona i utrzymywana dzięki pomocy Wspierających), pozbędę się niepotrzebnego wydatku dla wielkiej korporacji, która w każdej chwili może mi wyłączyć aplikację." },