meteocat 2.2.7 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ labels: bug
6
6
  assignees: ""
7
7
  ---
8
8
 
9
- **IMPORTANT: Please search the issues, including closed issues before opening a new issue.
9
+ **IMPORTANT: Please search the issues (including closed ones) *and* check the [Wiki - Troubleshooting](https://github.com/figorr/meteocat/wiki/Troubleshooting) page before opening a new issue.
10
10
  The template is mandatory; failure to use it will result in issue closure.**
11
11
 
12
12
  ---
@@ -9,46 +9,56 @@ jobs:
9
9
  runs-on: ubuntu-latest
10
10
  permissions:
11
11
  contents: write
12
+
12
13
  steps:
14
+ # Paso 1: Checkout del repositorio completo
13
15
  - name: Checkout repository
14
16
  uses: actions/checkout@v4
15
17
  with:
16
18
  token: ${{ secrets.GITHUB_TOKEN }}
17
19
  ref: master
20
+ fetch-depth: 0
21
+
22
+ # Paso 2: Obtener la versión del release recién publicado
23
+ - name: Get release version
24
+ id: release-version
25
+ run: |
26
+ version="${GITHUB_REF#refs/tags/v}"
27
+ echo "Release version: $version"
28
+ echo "version=$version" >> $GITHUB_OUTPUT
18
29
 
30
+ # Paso 3: Actualizar hacs.json con la última versión de Home Assistant
19
31
  - name: Get latest Home Assistant version
20
32
  id: ha-version
21
33
  run: |
22
34
  latest=$(curl -s https://api.github.com/repos/home-assistant/core/releases/latest | jq -r .tag_name)
23
- # quitamos prefijo "v" si existe
24
35
  latest_clean=${latest#v}
25
- echo "Latest HA version: $latest_clean"
26
- echo "version=$latest_clean" >> $GITHUB_OUTPUT
36
+ echo "ha_version=$latest_clean" >> $GITHUB_OUTPUT
27
37
 
28
38
  - name: Update hacs.json
29
39
  run: |
30
- ha_version="${{ steps.ha-version.outputs.version }}"
31
- echo "Updating hacs.json with HA version: $ha_version"
40
+ ha_version="${{ steps.ha-version.outputs.ha_version }}"
32
41
  jq --arg ver "$ha_version" '.homeassistant = $ver' hacs.json > tmp.json && mv tmp.json hacs.json
33
- cat hacs.json
34
42
 
35
43
  - name: Commit updated hacs.json
36
44
  run: |
37
45
  git config user.name "github-actions[bot]"
38
46
  git config user.email "github-actions[bot]@users.noreply.github.com"
39
47
  git add hacs.json
40
- if git commit -m "chore: update hacs.json with latest Home Assistant version"; then
48
+ if git commit -m "chore: update hacs.json with latest Home Assistant version [skip ci]"; then
41
49
  git push origin master
42
50
  else
43
51
  echo "No changes to commit"
44
52
  fi
45
53
 
54
+ # Paso 4: Crear zip de la integración con nombre fijo meteocat.zip
46
55
  - name: Zip integration
47
56
  run: |
48
57
  cd custom_components/meteocat
49
- zip -r meteocat.zip ./
50
- mv meteocat.zip $GITHUB_WORKSPACE/
58
+ zip -r "$GITHUB_WORKSPACE/meteocat.zip" ./
59
+ echo "Zip created at $GITHUB_WORKSPACE/meteocat.zip"
51
60
 
61
+ # Paso 5: Subir meteocat.zip al release de GitHub
52
62
  - name: Upload meteocat.zip to release
53
63
  uses: softprops/action-gh-release@v2.2.1
54
64
  with:
@@ -11,27 +11,29 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
 
13
13
  steps:
14
- # Paso 1: Configurar el repositorio
14
+ # Paso 1: Checkout completo (necesario para semantic-release y tags)
15
15
  - name: Checkout repository
16
16
  uses: actions/checkout@v3
17
+ with:
18
+ fetch-depth: 0
17
19
 
18
- # Paso 2: Configurar Node.js (requerido para semantic-release)
20
+ # Paso 2: Configurar Node.js
19
21
  - name: Set up Node.js
20
22
  uses: actions/setup-node@v3
21
23
  with:
22
- node-version: 20.8.1 # Versión compatible con semantic-release
24
+ node-version: 20.8.1
23
25
 
24
- # Paso 3: Instalar dependencias necesarias
26
+ # Paso 3: Instalar dependencias
25
27
  - name: Install dependencies
26
28
  run: npm ci
27
-
29
+
28
30
  # Paso 4: Configurar el autor de Git
29
31
  - name: Configure Git author
30
32
  run: |
31
33
  git config user.name "semantic-release-bot"
32
34
  git config user.email "jdcuartero@yahoo.es"
33
35
 
34
- # Paso 5: Ejecutar semantic-release
36
+ # Paso 5: Ejecutar semantic-release (se encargará de actualizar versiones, changelog, y release)
35
37
  - name: Run semantic-release
36
38
  env:
37
39
  GITHUB_TOKEN: ${{ secrets.WORKFLOW_TOKEN }}
@@ -56,8 +56,8 @@ jobs:
56
56
  repo-token: ${{ secrets.GITHUB_TOKEN }}
57
57
  only-labels: "logs required"
58
58
  days-before-stale: 7
59
- days-before-close: 7
59
+ days-before-close: 1
60
60
  stale-issue-message: >-
61
61
  This issue has been marked as *requiring logs*, but no activity has been detected for 7 days.
62
- Since logs were not provided, this issue will now be closed.
62
+ Since logs were not provided, this issue will now be closed in 1 day.
63
63
  stale-issue-label: "stale"
@@ -0,0 +1,96 @@
1
+ name: Sync to GitLab
2
+
3
+ on:
4
+ release:
5
+ types: [published] # Se dispara al publicarse un release en GitHub
6
+ workflow_dispatch: # Permite ejecución manual desde la interfaz
7
+
8
+ jobs:
9
+ sync:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ # Paso 1: Checkout completo
14
+ - name: Checkout repository
15
+ uses: actions/checkout@v3
16
+ with:
17
+ fetch-depth: 0
18
+
19
+ # Paso 2: Configurar Git
20
+ - name: Configure Git
21
+ run: |
22
+ git config user.name "github-bot"
23
+ git config user.email "bot@github.com"
24
+
25
+ # Paso 3: Añadir remoto de GitLab
26
+ - name: Add GitLab remote
27
+ env:
28
+ GL_REMOTE_URL: ${{ secrets.GL_REMOTE_URL }}
29
+ GL_TOKEN: ${{ secrets.GL_TOKEN }}
30
+ run: |
31
+ git remote add gitlab "https://oauth2:${GL_TOKEN}@${GL_REMOTE_URL#https://}"
32
+
33
+ # Paso 4: Comprobar divergencias en master
34
+ - name: Check for diverging commits
35
+ run: |
36
+ git fetch gitlab master
37
+ if ! git merge-base --is-ancestor gitlab/master master; then
38
+ echo "❌ GitLab master tiene commits que GitHub no tiene. Revisar antes de sincronizar."
39
+ exit 1
40
+ fi
41
+
42
+ # Paso 5: Push de commits y tags a GitLab
43
+ - name: Push commits and tags to GitLab
44
+ run: |
45
+ git push gitlab master
46
+ git push gitlab --tags
47
+
48
+ # Paso 6: Crear release en GitLab si no existe
49
+ - name: Create GitLab release
50
+ env:
51
+ GL_REMOTE_URL: ${{ secrets.GL_REMOTE_URL }}
52
+ GL_TOKEN: ${{ secrets.GL_TOKEN }}
53
+ RELEASE_TAG: ${{ github.ref_name }}
54
+ run: |
55
+ PROJECT_PATH=$(echo $GL_REMOTE_URL | sed -E 's#https://[^/]+/(.*)\.git#\1#')
56
+ PROJECT_PATH_ENCODED=$(python3 -c "import urllib.parse; print(urllib.parse.quote('''$PROJECT_PATH''', safe=''))")
57
+
58
+ EXISTING=$(curl -s --header "PRIVATE-TOKEN: $GL_TOKEN" "https://gitlab.com/api/v4/projects/$PROJECT_PATH_ENCODED/releases/$RELEASE_TAG")
59
+
60
+ if echo "$EXISTING" | grep -q 'tag_name'; then
61
+ echo "Release ya existe en GitLab: $RELEASE_TAG"
62
+ else
63
+ echo "Creando release en GitLab: $RELEASE_TAG"
64
+ curl -s --request POST "https://gitlab.com/api/v4/projects/$PROJECT_PATH_ENCODED/releases" \
65
+ --header "PRIVATE-TOKEN: $GL_TOKEN" \
66
+ --header "Content-Type: application/json" \
67
+ --data "{
68
+ \"name\": \"Release $RELEASE_TAG\",
69
+ \"tag_name\": \"$RELEASE_TAG\",
70
+ \"description\": \"Release sincronizado desde GitHub\"
71
+ }"
72
+ fi
73
+
74
+ # Paso 7: Subir meteocat.zip como asset al release de GitLab
75
+ - name: Upload meteocat.zip to GitLab release
76
+ env:
77
+ GL_REMOTE_URL: ${{ secrets.GL_REMOTE_URL }}
78
+ GL_TOKEN: ${{ secrets.GL_TOKEN }}
79
+ RELEASE_TAG: ${{ github.ref_name }}
80
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
81
+ run: |
82
+ PROJECT_PATH=$(echo $GL_REMOTE_URL | sed -E 's#https://[^/]+/(.*)\.git#\1#')
83
+ PROJECT_PATH_ENCODED=$(python3 -c "import urllib.parse; print(urllib.parse.quote('''$PROJECT_PATH''', safe=''))")
84
+
85
+ ASSET_NAME="meteocat.zip"
86
+ ZIP_URL="https://github.com/${GITHUB_REPOSITORY}/releases/download/$RELEASE_TAG/meteocat.zip"
87
+
88
+ echo "Subiendo $ASSET_NAME al release de GitLab desde $ZIP_URL"
89
+ curl --request POST "https://gitlab.com/api/v4/projects/$PROJECT_PATH_ENCODED/releases/$RELEASE_TAG/assets/links" \
90
+ --header "PRIVATE-TOKEN: $GL_TOKEN" \
91
+ --header "Content-Type: application/json" \
92
+ --data "{
93
+ \"name\": \"$ASSET_NAME\",
94
+ \"url\": \"$ZIP_URL\"
95
+ }"
96
+
package/.releaserc CHANGED
@@ -9,15 +9,29 @@
9
9
  "changelogFile": "CHANGELOG.md"
10
10
  }
11
11
  ],
12
- "@semantic-release/npm",
13
- "@semantic-release/github",
12
+ [
13
+ "@semantic-release/exec",
14
+ {
15
+ "prepareCmd": "bash ./scripts/update_version.sh ${nextRelease.version}"
16
+ }
17
+ ],
14
18
  [
15
19
  "@semantic-release/git",
16
20
  {
17
- "assets": ["CHANGELOG.md", "package.json", "pyproject.toml"],
18
- "message": "v${nextRelease.version}\n\n${nextRelease.notes}"
21
+ "assets": [
22
+ "pyproject.toml",
23
+ "custom_components/meteocat/manifest.json",
24
+ "custom_components/meteocat/version.py",
25
+ "custom_components/meteocat/__init__.py",
26
+ "CHANGELOG.md",
27
+ "package.json",
28
+ "package-lock.json"
29
+ ],
30
+ "message": "chore(release): v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
19
31
  }
20
- ]
32
+ ],
33
+ "@semantic-release/npm",
34
+ "@semantic-release/github"
21
35
  ],
22
36
  "repositoryUrl": "https://github.com/figorr/meteocat"
23
37
  }
package/AUTHORS.md CHANGED
@@ -10,3 +10,4 @@
10
10
 
11
11
  ## Contributors
12
12
 
13
+ - mcasellas [GitHub](https://github.com/mcasellas)
package/CHANGELOG.md CHANGED
@@ -1,3 +1,42 @@
1
+ # [3.0.0](https://github.com/figorr/meteocat/compare/v2.3.0...v3.0.0) (2025-09-14)
2
+
3
+
4
+ ### Features
5
+
6
+ * change unique_id to use town_id ([3a048ce](https://github.com/figorr/meteocat/commit/3a048ce48a0e1f3ee7642c28bbe7ac6e6e3fc298))
7
+
8
+
9
+ ### BREAKING CHANGES
10
+
11
+ * Entities now use town_id instead of region_id in their unique_id.
12
+ This change enables multiple integration entries that share the same region_id but different towns.
13
+
14
+ Recommended upgrade path:
15
+ 1. Uninstall the existing integration (v2.x).
16
+ 2. Restart Home Assistant.
17
+ 3. Install v3.0.0 and reconfigure the integration.
18
+
19
+ If you update directly without uninstalling first, old entities will remain as 'unavailable' and new entities will be created (possibly with a suffix like '2').
20
+ In that case, you may need to manually remove the old entities and update your automations or dashboards.
21
+
22
+ ## [2.3.0](https://github.com/figorr/meteocat/compare/v2.2.7...v2.3.0) (2025-09-10)
23
+
24
+
25
+ ### Features
26
+
27
+ * download and save town and station json files during setup ([7b98c22](https://github.com/figorr/meteocat/commit/7b98c22d5ca43d4cbf80895e11c02594208f7470))
28
+ * include options documentation ([a85ef74](https://github.com/figorr/meteocat/commit/a85ef7492eb8ed4af99b8d0f50b8e77ff7f7976a))
29
+ * include options image ([dbb047a](https://github.com/figorr/meteocat/commit/dbb047a6bdf32af03fec8351c9a608593b369e3b))
30
+ * include regenerate assets files option ([f2ce357](https://github.com/figorr/meteocat/commit/f2ce357c8ce6371d97523870f4bf6a9cba6a151c))
31
+ * recover assets files ([f493b33](https://github.com/figorr/meteocat/commit/f493b33e54e10994b6b08232f37dd5bb35f4a9b7))
32
+ * regenerate assets option translation ([317ce9f](https://github.com/figorr/meteocat/commit/317ce9fecc03f88b8b8072b41b357846fb075dcc))
33
+ * safe remove keeping common entry files ([6cefe04](https://github.com/figorr/meteocat/commit/6cefe04289b1b74fe30d615e7056bd643d845b89))
34
+ * **storage:** moving the API downloaded files to the new folder meteocat_files ([06c68e3](https://github.com/figorr/meteocat/commit/06c68e36b5669efc8fe3174a71e41624e9728b07))
35
+ * update .gitignore ([fac7772](https://github.com/figorr/meteocat/commit/fac7772a1093f2165e1b33098631096138617a6d))
36
+ * update README ([9855939](https://github.com/figorr/meteocat/commit/98559398e6bae30e8e9c9ff2b2fe27409a3930bd))
37
+ * update repo files structure ([0778679](https://github.com/figorr/meteocat/commit/0778679d218a89e89bb18791f1245c5c9f7b188f))
38
+
39
+
1
40
  ## [2.2.7](https://github.com/figorr/meteocat/compare/v2.2.6...v2.2.7) (2025-08-29)
2
41
 
3
42
 
package/README.md CHANGED
@@ -2,8 +2,13 @@
2
2
  ![Meteocat Banner](images/banner.png)
3
3
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
4
4
  [![Python version compatibility](https://img.shields.io/pypi/pyversions/meteocat)](https://pypi.org/project/meteocat)
5
- [![pipeline status](https://gitlab.com/figorr/meteocat/badges/master/pipeline.svg)](https://gitlab.com/figorr/meteocat/commits/master)
6
-
5
+ [![hacs_badge](https://img.shields.io/badge/HACS-Default-orange.svg)](https://github.com/hacs/integration)
6
+ [![Validate](https://github.com/figorr/meteocat/actions/workflows/validate.yaml/badge.svg)](https://github.com/figorr/meteocat/actions/workflows/validate.yaml)
7
+ [![Release](https://github.com/figorr/meteocat/actions/workflows/release.yml/badge.svg)](https://github.com/figorr/meteocat/actions/workflows/release.yml)
8
+ ![GitHub all releases](https://img.shields.io/github/downloads/figorr/meteocat/total)
9
+ ![GitHub release](https://img.shields.io/github/downloads/figorr/meteocat/latest/total)
10
+ ![Latest release](https://img.shields.io/github/v/release/figorr/meteocat?label=latest)
11
+ [![Breaking Changes](https://img.shields.io/badge/Breaking%20Changes-critical?logo=data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjIuODggMTExLjU0Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzFhMWExYTt9LmNscy0ye2ZpbGw6I2ZmZWYxMTtmaWxsLXJ1bGU6ZXZlbm9kZDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmNhdXRpb248L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIuMzUsODQuNDIsNDUuMjgsMTAuMmwuMTctLjI3aDBBMjMsMjMsMCwwLDEsNTIuNSwyLjY5LDE3LDE3LDAsMCwxLDYxLjU3LDBhMTYuNywxNi43LDAsMCwxLDkuMTEsMi42OSwyMi43OSwyMi43OSwwLDAsMSw3LDcuMjZxLjE5LjMyLjM2LjYzbDQyLjIzLDczLjM0LjI0LjQ0aDBhMjIuNDgsMjIuNDgsMCwwLDEsMi4zNywxMC4xOSwxNy42MywxNy42MywwLDAsMS0yLjE3LDguMzUsMTUuOTQsMTUuOTQsMCwwLDEtNi45Myw2LjZjLS4xOS4xLS4zOS4xOC0uNTguMjZhMjEuMTksMjEuMTksMCwwLDEtOS4xMSwxLjc1djBIMTcuNjFjLS4yMiwwLS40NCwwLS42NSwwYTE4LjA3LDE4LjA3LDAsMCwxLTYuMi0xLjE1QTE2LjQyLDE2LjQyLDAsMCwxLDMsMTA0LjI0YTE3LjUzLDE3LjUzLDAsMCwxLTMtOS41NywyMywyMywwLDAsMSwxLjU3LTguNzQsNy42Niw3LjY2LDAsMCwxLC43Ny0xLjUxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTksODguNzUsNTIuMTIsMTQuMTZjNS4yNC04LjI1LDEzLjU0LTguNDYsMTguODcsMGw0Mi40Myw3My42OWMzLjM5LDYuODEsMS43MSwxNi05LjMzLDE1Ljc3SDE3LjYxQzEwLjM1LDEwMy44LDUuNjcsOTcuNDMsOSw4OC43NVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01Ny41Nyw4Mi42OUE1LjQ4LDUuNDgsMCwwLDEsNjEsODEuMTFhNS42Niw1LjY2LDAsMCwxLDQuNDIsMS42Niw1LjUzLDUuNTMsMCwwLDEsMS42MiwzLjU0QTUuNiw1LjYsMCwwLDEsNjcsODcuNzJhNiw2LDAsMCwxLS40MiwxLjM0LDUuNTMsNS41MywwLDAsMS0yLjkyLDIuODQsNS43OSw1Ljc5LDAsMCwxLTQuNTctLjEsNS41MSw1LjUxLDAsMCwxLTIuODEtMi45NCw1LjMxLDUuMzEsMCwwLDEtLjM2LTEuMjcsNS45LDUuOSwwLDAsMS0uMDYtMS4zMmgwYTYuNDUsNi40NSwwLDAsMSwuNTctMiw0LjYsNC42LDAsMCwxLDEuMTQtMS41NlptOC4xNS0xMC4yNGMtLjE5LDQuNzktOC4zMSw0LjgtOC40OSwwLS44Mi04LjIxLTIuOTItMjcuNy0yLjg2LTM1LjQyLjA3LTIuMzgsMi0zLjc4LDQuNTYtNC4zMmExMS4xOSwxMS4xOSwwLDAsMSwyLjQ5LS4yNCwxMS43NywxMS43NywwLDAsMSwyLjUuMjVjMi42MS41NSw0LjY1LDIsNC42NSw0LjQ0di4yNEw2NS43Miw3Mi40NVoiLz48L3N2Zz4=&logoColor=white)](#-breaking-changes---upgrade-to-3x)
7
12
 
8
13
  This is a project to obtain meteorological data from the Meteocat API inside the Home Assistant environment.
9
14
 
@@ -17,8 +22,39 @@ Commercial use of this project or the data obtained from the API is not allowed
17
22
 
18
23
  This is a personal project.
19
24
 
20
- Authors:
21
- - Figorr
25
+ **Authors:**
26
+ - [Figorr](https://github.com/figorr)
27
+
28
+ **Contributors:**
29
+ - [mcasellas](https://github.com/mcasellas) – contributed [c505f27](https://github.com/figorr/meteocat/commit/c505f27)
30
+
31
+ ## ⚠️ Breaking changes - Upgrade to 3.0.0 or later coming from prior versions
32
+
33
+ Version **3.0.0 and later** introduces a **breaking change** in how entities are identified.
34
+
35
+ ### ⚠️ What this affects
36
+ - This affects any update **from a version prior to 3.0.0** to **any version 3.x or later**.
37
+ - Entities now use **`town_id`** instead of `region_id` in their `unique_id`.
38
+ - This change allows multiple integration entries that share the same `region_id` but different towns.
39
+
40
+ ### ✅ Recommended upgrade procedure
41
+ To avoid issues with duplicated or unavailable entities:
42
+
43
+ 1. **Uninstall** the existing integration (v2.x).
44
+ 2. **Restart** Home Assistant.
45
+ 3. **Install v3.0.0 or later** and configure the integration again.
46
+
47
+ ### 🚨 If you update directly
48
+ If you update without uninstalling first:
49
+
50
+ - Old entities will remain as **Unavailable**.
51
+ - New entities will be created (sometimes with a suffix like `2`).
52
+ - You may need to manually **remove old entities** and update your automations, dashboards, or scripts to point to the new entities.
53
+
54
+ ### 📑 Additional notes
55
+
56
+ - This change affects all entity types, including **sensors, diagnostic sensors, and alerts**.
57
+ - Always backup your **Home Assistant configuration** before performing major upgrades.
22
58
 
23
59
  ## Installation
24
60
 
@@ -31,7 +67,6 @@ Authors:
31
67
  1. Click `+ Add Integration`
32
68
  1. Search for `Meteocat` and follow the configuration instructions
33
69
 
34
-
35
70
  #### HACS - Install from the store
36
71
  1. Go to `HACS`
37
72
  1. Search for `Meteocat` and add it to HACS
@@ -80,11 +115,67 @@ To change units select one of the entities and open the more info dialog and cli
80
115
 
81
116
  ![Entity more info settings dialog](images/change_units.png)
82
117
 
118
+ ## Options
119
+
120
+ Once the integration is installed, you can reconfigure some parameters without having to remove and reinstall Meteocat.
121
+
122
+ Go to:
123
+ `Settings > Devices & Services > Meteocat > Configure`
124
+
125
+ You will see three available options:
126
+
127
+ - **Update API Key and limits**
128
+ Allows you to change the API Key and update all API plan limits at the same time.
129
+
130
+ - **Update limits only**
131
+ Allows you to adjust only the API plan limits, keeping the same API Key.
132
+
133
+ - **Regenerate assets**
134
+ If for any reason some files in the `assets` folder (`towns.json`, `stations.json`, `variables.json`, `symbols.json`, or `stations_<town_id>.json`) are missing or outdated, you can regenerate them directly from the options menu.
135
+ > ℹ️ If the Meteocat API is not available at that moment, the integration will still start, and you can retry regeneration later.
136
+
137
+ ### Accessing the Options Menu
138
+
139
+ You can access the Options Menu in two ways, both inside the integration:
140
+
141
+ - **Setup Options**
142
+
143
+ ![Setup Options menu](images/setup_options.png)
144
+
145
+ - **System Options**
146
+
147
+ ![System Options menu](images/system_options.png)
148
+
149
+ Once inside, you will see the following options:
150
+
151
+ ![Available Options](images/options.png)
152
+
153
+
154
+ ## Uninstallation
155
+
156
+ To correctly uninstall the integration:
157
+
158
+ - If you are upgrading due to **breaking changes**, remove all configured entries from
159
+ **Settings > Devices & Services > Integrations**, restart Home Assistant, and reinstall the new version.
160
+ - If you want to **completely remove Meteocat**, after removing the entries and restarting, also uninstall the integration from **HACS > Integrations**.
161
+
162
+ 👉 For detailed steps with screenshots, check the [Uninstallation Guide](https://github.com/figorr/meteocat/wiki/Uninstallation).
163
+
164
+ # Documentation
165
+
166
+ For more detailed information about:
167
+ - Installation and configuration
168
+ - Usage examples
169
+ - Extra attributes in sensors
170
+ - Known issues and troubleshooting
171
+
172
+ please visit the [📖 Meteocat Wiki](https://github.com/figorr/meteocat/wiki).
173
+
83
174
  # Contributing
84
175
 
85
- 1. [Check for open features/bugs](https://gitlab.com/figorr/meteocat/issues)
86
- or [initiate a discussion on one](https://gitlab.com/figorr/meteocat/issues/new).
87
- 2. [Fork the repository](https://gitlab.com/figorr/meteocat/forks/new).
176
+ 1. [Check for open features/bugs](https://github.com/figorr/meteocat/issues)
177
+ or [initiate a discussion on one](https://github.com/figorr/meteocat/issues/new/choose).
178
+ 2. [Fork the repository](https://github.com/figorr/meteocat/fork).
88
179
  3. Install the dev environment: `make init`.
89
180
  4. Enter the virtual environment: `pipenv shell`
90
181
  5. Code your new feature or bug fix.