From b5e9532c05bb57fdee4aface2d0a15ba5f27a0d6 Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Wed, 15 Nov 2023 20:04:25 +1100 Subject: [PATCH 001/105] Update sire_url and repo_url to new name --- mkdocs.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 7d19a27..5fd27bb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,11 +1,11 @@ site_name: Hass Agent Documentation -site_url: https://hass-agent-beta.github.io/ -site_author: DrR0X-glitch +site_url: https://hass-agent.github.io/ +site_author: DrR0X site_description: >- Access your homeassistant from any windows machine - send notifications, collect data and automate repetitive tasks -repo_url: https://github.com/LAB02-Research/HASS.Agent/ -repo_name: LAB02Research/HASS.Agent +repo_url: https://github.com/hass-agent/hass-agent.github.io +repo_name: HASS.Agent Docs Repo copyright: > Copyright © 2023 DrR0x - From 45c705788baa48c71f452ef41a8841b97642ca19 Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Wed, 15 Nov 2023 20:05:04 +1100 Subject: [PATCH 002/105] Fixed index.md grammatical errors --- docs/contributing/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/contributing/index.md b/docs/contributing/index.md index 84f1cd3..cb3e23d 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -4,11 +4,11 @@ ## Low/No-code ways to help out -There are lots of ways to help out with HASS.Agent even if you can't code. Here are some of the ways you can contribute: +There are lots of ways to help out with HASS.Agent, even if you can't code. Here are some of the ways you can contribute: - Submitting Github issues whenever you find an error or problem with any aspect of HASS.Agent. Use [this](reporting-issues.md) guide for more info. - Helping other users of HASS.Agent with setup and usage. You can help other users in our discord server [here](https://discord.com/invite/nMvqzwrVBU). -- Adding and updating everything found here in the HASS.Agent Documentation. More info can be found [here](#helping-out-with-the-documentation). +- Adding and updating everything found here in the HASS.Agent Documentation. More info can be found [below](#helping-out-with-the-documentation). ## Programming / Developing @@ -20,7 +20,7 @@ If you are a programmer and want to help out check out these sections: ### C# and windows apps -If you have experience in C# and creating native windows applications, we could use your help with creating the HASS.Agent client and the Satellite service. If you would like to learn more, check out the dedicated section [here](hass-agent-app/index.md). +If you have experience in C# and creating native windows applications, we could use your help with creating the HASS.Agent client and Satellite service. If you would like to learn more, check out the dedicated section [here](hass-agent-app/index.md). ### Python and Homeassistant integrations From 7625303a8b14a6d66a24c77bcd9251b6e9aebe6a Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Wed, 15 Nov 2023 20:18:49 +1100 Subject: [PATCH 003/105] Remove beta from README links --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 84d5e7d..043a0cc 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@

- + HASS.Agent

View the documentation - here + here


@@ -15,7 +15,7 @@ ## Overview -This repository contains all the files used to create [HASS.Agent's documentation](https://hass-agent-beta.github.io/). +This repository contains all the files used to create [HASS.Agent's documentation](https://hass-agent.github.io/). ### Branches @@ -24,13 +24,13 @@ This repository contains all the files used to create [HASS.Agent's documentatio ## Deployed Documentation -The documentation is deployed here on github pages, you can view it [here](https://hass-agent-beta.github.io/). +The documentation is deployed here on github pages, you can view it [here](https://hass-agent.github.io/). ## Development / Contributing > Pleas do **not** submit pull requests to this repo. -If you would like to help out with development or translating of the HASS.Agent application check out our guide [here](https://hass-agent-beta.github.io/contributing/). +If you would like to help out with development or translating of the HASS.Agent application check out our guide [here](https://hass-agent.github.io/contributing/). ### Contributing to the documentation @@ -38,4 +38,4 @@ You can either submit github tickets with the info you want added to the documen ### Editing the docs yourself -Checkout [this](https://hass-agent-beta.github.io/contributing/#helping-out-with-the-documentation) page for information on contributing to the documentation. +Checkout [this](https://hass-agent.github.io/contributing/#helping-out-with-the-documentation) page for information on contributing to the documentation. From 77076ce1c8ff94e9317398b2885dec1095bf120c Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Wed, 15 Nov 2023 21:38:34 +1100 Subject: [PATCH 004/105] Add extra plugins and navtree for extra resources --- mkdocs.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index 5fd27bb..a0ea73d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -98,8 +98,11 @@ markdown_extensions: - footnotes - pymdownx.details - pymdownx.superfences + - pymdownx.tabbed: + alternate_style: true - pymdownx.mark - attr_list + - md_in_html - pymdownx.emoji: emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg # Page Tree @@ -119,3 +122,6 @@ nav: - Start Here: contributing/hass-agent-integration/index.md - Developing the Documentation: - Start Here: contributing/hass-agent-documentation/index.md + - Extra Resources: + - Info: contributing/developer-resources/index.md + - Version System: contributing/developer-resources/version-system.md From e0896103fec3aa8ef40e5bad4d5bd5bbe5af1a4d Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Wed, 15 Nov 2023 21:39:00 +1100 Subject: [PATCH 005/105] Extra resources home and version-system page --- .../contributing/developer-resources/index.md | 3 + .../developer-resources/version-system.md | 101 ++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 docs/contributing/developer-resources/index.md create mode 100644 docs/contributing/developer-resources/version-system.md diff --git a/docs/contributing/developer-resources/index.md b/docs/contributing/developer-resources/index.md new file mode 100644 index 0000000..52b8d13 --- /dev/null +++ b/docs/contributing/developer-resources/index.md @@ -0,0 +1,3 @@ +# Extra Resources for Developers + +This section contains extra and shared resources for developers. You will find information about things such as the shared version system HASS.Agent uses. diff --git a/docs/contributing/developer-resources/version-system.md b/docs/contributing/developer-resources/version-system.md new file mode 100644 index 0000000..0272525 --- /dev/null +++ b/docs/contributing/developer-resources/version-system.md @@ -0,0 +1,101 @@ +# HASS.Agent's shared version system + +## WARNING! + +#### You must read and understand this entire page if you want to be able to develop any part of HASS.Agent + +## Overview + +HASS.Agent uses a shared version system between the three main components: + +- Client +- Integration +- Documentation + +This makes it easy for users to keep track of what version they have and whether they will work together. It also allows users to find old versions of the documentation for their corresponding version of HASS.Agent. + +It also makes it easier for the developers as there will be no confusion between different components of HASS.Agent and only one system needs to be learnt. + +## The system + +HASS.Agent uses a semantic-style version system, however some parts are specific to HASS.Agent, so read on. + +### Stable release versions + +All release version numbers of HASS.Agent look like this: `..` +An example of a released version number: `1.5.4` + +#### Major + +The major version number is rarely changed, if you are reading this documentation you will most likely never have to change this. But for your information it is only changed when breaking API updates are added. So version `1.*.*` client, **does not** work with version `2.*.*` integration. This also means that all versions of `1.*.*` will work with each other, there may be small warnings or missing features but all previous API calls and features work as intended. Basically this version number only needs to be incremented when no backwards compatability is added. + +???+ example + - Version `1.4.2` of the client **does** work with version `1.8.3` of the integration + - Version `2.3.2` of the lient **does not** work with version `1.8.3` of the Integration + +#### Minor + +The minor version number is to be incremented whenever new features are added in a backwards compatible way. More than one feature **can** be added per version number, however they all have to have backwards compatibility with the previous `` versions. + +???+ example + - Version `1.4.1` of the client will have **less** features than `1.5.0` of the integration + - Version `1.6.0` of the client will have **more** features than `1.5.0` of the integration + + **Notice in both of these examples these versions will work together, however some features will be unavailable.** + +#### Patch + +The patch version number is to be incremented whenever bug fixes(patches) are released in a backwards compatible way. All bug fixes are to be released in a backwards compatible way anyway, so basically everytime a patch is released, this number will be incremented. The important thing to note about the patch version number is that **no new features** can be added. + +???+ example + - Version `1.3.0` of the client will have more bugs than `1.3.1` of the client + - Version `1.5.6` of the client will have more patches and therefore less bugs than `1.5.2` of the client + + **No new features are added between the versions in these examples. Only bug fixes and patches are added.** + +### Beta developmental versions + +During the development of any part of HASS.Agent beta versions of the code will exist. These version will be denoted like this: `..-beta.` +The first beta version of the upcoming `1.5.3` release would look like this: `1.5.3-beta.0` + +#### Beta version + +The beta version number is to be incremented whenever a new beta version of the code is built or released for testing. + +???+ example + > The current stable version is `2.5.4` and the dev team is working on a new feature + + The beta version during the first development update should be `2.6.0-beta.0` + + Everytime a new development update is added to this feature the last number should be incremented. + + > The dev team has now finished working on this feature + + The stable version for release should be `2.6.0` + + > The dev team has found bugs and is working on a hotfix. They have completed 2 updates to work on this hotfix + + The current beta version should be `2.6.1-beta.1` (1) + + > They have now completed this hotfix + + The stable release version should be `2.6.1` + +1. We use 1 for the `` here because development update 1 was .0 and development update 2 was .1 + +### Other info + +#### Resetting numbers + +Whenever a "parent" version number is incremented the "children" numbers must be rest to zero.(1) +{ .annotate } + +1. Test + +???+ example + - If the current version is `1.5.6` and a new backwards **compatible** feature is being added the new version will be `1.6.0` + - If the current version is `1.5.6` and a new backwards **incompatible** feature is being added the new version will be `2.0.0` + +## Examples + +Use tabs From 6ddcb6e04840f8886352554dc1f0346edda8a66b Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Thu, 16 Nov 2023 08:32:47 +1100 Subject: [PATCH 006/105] Update homepage fot extra info --- docs/contributing/developer-resources/index.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/contributing/developer-resources/index.md b/docs/contributing/developer-resources/index.md index 52b8d13..6a3e7b0 100644 --- a/docs/contributing/developer-resources/index.md +++ b/docs/contributing/developer-resources/index.md @@ -1,3 +1,7 @@ # Extra Resources for Developers -This section contains extra and shared resources for developers. You will find information about things such as the shared version system HASS.Agent uses. +This section contains extra and shared resources for developers. You will find information in here that will be used across parts of HASS.Agent. + +### Versioning + +The HASS.Agent client uses a version system that is shared with the documentation, you can read more on this [here](./version-system.md) From 3c318602f8c72d0e525d13933d1d2f3d624be171 Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Thu, 16 Nov 2023 08:33:06 +1100 Subject: [PATCH 007/105] Only show TOC to a depth of 3 --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index a0ea73d..ef0be94 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -88,6 +88,7 @@ extra: markdown_extensions: - toc: permalink: true + toc_depth: 3 - pymdownx.highlight: anchor_linenums: true - pymdownx.inlinehilite From 73685b94a56b665a6b49909609a6be8bfd32b076 Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Thu, 16 Nov 2023 08:33:38 +1100 Subject: [PATCH 008/105] Add documentation section and fix terminology --- .../developer-resources/version-system.md | 59 +++++++++++-------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/docs/contributing/developer-resources/version-system.md b/docs/contributing/developer-resources/version-system.md index 0272525..fa01c94 100644 --- a/docs/contributing/developer-resources/version-system.md +++ b/docs/contributing/developer-resources/version-system.md @@ -1,4 +1,4 @@ -# HASS.Agent's shared version system +# HASS.Agent's version system ## WARNING! @@ -6,19 +6,22 @@ ## Overview -HASS.Agent uses a shared version system between the three main components: +#### HASS.Agent uses TWO main version systems + +##### Client - Client -- Integration - Documentation -This makes it easy for users to keep track of what version they have and whether they will work together. It also allows users to find old versions of the documentation for their corresponding version of HASS.Agent. +The client and documentation share a version system to make it easy for users to find documentation for any version. + +##### Integration -It also makes it easier for the developers as there will be no confusion between different components of HASS.Agent and only one system needs to be learnt. +The integration has its own version system similar to HASS's own system. -## The system +## Client/Documentation Versioning -HASS.Agent uses a semantic-style version system, however some parts are specific to HASS.Agent, so read on. +HASS.Agent's client and documentation use a semantic-style version system, however some parts are specific to HASS.Agent, so read on. ### Stable release versions @@ -27,42 +30,46 @@ An example of a released version number: `1.5.4` #### Major -The major version number is rarely changed, if you are reading this documentation you will most likely never have to change this. But for your information it is only changed when breaking API updates are added. So version `1.*.*` client, **does not** work with version `2.*.*` integration. This also means that all versions of `1.*.*` will work with each other, there may be small warnings or missing features but all previous API calls and features work as intended. Basically this version number only needs to be incremented when no backwards compatability is added. +The major version number is rarely changed, if you are reading this documentation you will most likely never have to change this. But for your information it is only changed when breaking API updates are added. So version `2.*.*` client, is **not** backwards compatible with version `2.*.*`. This also means that all versions of `1.*.*` will be backwards compatible, there may be small warnings or missing features but all previous API calls and features work as intended. Basically this version number only needs to be incremented when no backwards compatability is added. This also forces the dev team to not release backwards compatible updates very often. ???+ example - - Version `1.4.2` of the client **does** work with version `1.8.3` of the integration - - Version `2.3.2` of the lient **does not** work with version `1.8.3` of the Integration + + - Version `1.4.2` of the client **does** have backwards compatibility with version `1.8.3` + - Version `2.3.2` of the lient **does not** have backwards compatibility with version `1.8.3` #### Minor -The minor version number is to be incremented whenever new features are added in a backwards compatible way. More than one feature **can** be added per version number, however they all have to have backwards compatibility with the previous `` versions. +The minor version number is to be incremented whenever new features are added in a backwards compatible way. More than one feature **can** be added per version number, however they all have to have backwards compatibility. ???+ example - - Version `1.4.1` of the client will have **less** features than `1.5.0` of the integration - - Version `1.6.0` of the client will have **more** features than `1.5.0` of the integration - **Notice in both of these examples these versions will work together, however some features will be unavailable.** + - Version `1.4.1` of the client will have **less** features than `1.5.0` + - Version `1.6.0` of the client will have **more** features than `1.5.0` + + **Note that in both of these examples the versions are backwards compatible.** #### Patch The patch version number is to be incremented whenever bug fixes(patches) are released in a backwards compatible way. All bug fixes are to be released in a backwards compatible way anyway, so basically everytime a patch is released, this number will be incremented. The important thing to note about the patch version number is that **no new features** can be added. ???+ example + - Version `1.3.0` of the client will have more bugs than `1.3.1` of the client - - Version `1.5.6` of the client will have more patches and therefore less bugs than `1.5.2` of the client + - Version `1.5.6` of the client will have more patches and therefore less bugs, than `1.5.2` of the client **No new features are added between the versions in these examples. Only bug fixes and patches are added.** ### Beta developmental versions -During the development of any part of HASS.Agent beta versions of the code will exist. These version will be denoted like this: `..-beta.` -The first beta version of the upcoming `1.5.3` release would look like this: `1.5.3-beta.0` +During the development of a new version of the HASS.Agent client beta versions of the code will exist. These versions will be denoted like this: `..-beta.` You will notice the only difference is the addition of the `-beta` flag and the fourth version number `` +The first beta version of the example upcoming `1.5.3` release would look like this: `1.5.3-beta.0` #### Beta version -The beta version number is to be incremented whenever a new beta version of the code is built or released for testing. +The beta version number is to be incremented whenever a new beta version of the code is built or released for testing. + +???+ example annotate -???+ example > The current stable version is `2.5.4` and the dev team is working on a new feature The beta version during the first development update should be `2.6.0-beta.0` @@ -81,21 +88,21 @@ The beta version number is to be incremented whenever a new beta version of the The stable release version should be `2.6.1` -1. We use 1 for the `` here because development update 1 was .0 and development update 2 was .1 +1. We use 1 for the `` here, because development update 1 was .0 and development update 2 was .1 ### Other info #### Resetting numbers -Whenever a "parent" version number is incremented the "children" numbers must be rest to zero.(1) -{ .annotate } - -1. Test +Whenever a "parent" version number is incremented the "children" numbers must be rest to zero. ???+ example + - If the current version is `1.5.6` and a new backwards **compatible** feature is being added the new version will be `1.6.0` - If the current version is `1.5.6` and a new backwards **incompatible** feature is being added the new version will be `2.0.0` -## Examples +#### Documentation + +The documentation operates on version of just `.` This will still match the client because no major documentation change will happen during a patch of the HASS.Agent client. -Use tabs +The other difference between this version system and the client's version system is that beta version attributes will not exist. In the documentation if the upcoming release is going to be `1.5.0` and the current beta version is `1.5.0-beta.3` then the docs will have `1.5` with the label/attribute `beta`. From 5534f3124e428e39be96e3709598b40d8cf208e7 Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Thu, 16 Nov 2023 21:40:11 +1100 Subject: [PATCH 009/105] Added google analytics, mermaid, docs navtree and tables --- mkdocs.yml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index ef0be94..fa4dee3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -67,7 +67,20 @@ extra: provider: mike analytics: provider: google - property: G-415530619 + property: G-TBLK7V0HW7 + feedback: + title: Was this page helpful? + ratings: + - icon: material/emoticon-happy-outline + name: This page was helpful + data: 1 + note: >- + Thanks for your feedback! + - icon: material/emoticon-sad-outline + name: This page could be improved + data: 0 + note: >- + Thanks for your feedback! consent: actions: - accept @@ -86,6 +99,7 @@ extra: link: https://ko-fi.com/lab02research markdown_extensions: + - tables - toc: permalink: true toc_depth: 3 @@ -98,7 +112,11 @@ markdown_extensions: generic: true - footnotes - pymdownx.details - - pymdownx.superfences + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format - pymdownx.tabbed: alternate_style: true - pymdownx.mark @@ -123,6 +141,8 @@ nav: - Start Here: contributing/hass-agent-integration/index.md - Developing the Documentation: - Start Here: contributing/hass-agent-documentation/index.md + - Setup: contributing/hass-agent-documentation/setup.md + - Development Lifecycle: contributing/hass-agent-documentation/development-lifecycle.md - Extra Resources: - Info: contributing/developer-resources/index.md - Version System: contributing/developer-resources/version-system.md From 7d2d41976c4cb7e24af487598374cd3a905f6b32 Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Thu, 16 Nov 2023 21:40:43 +1100 Subject: [PATCH 010/105] Updated links to go to /latest --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 043a0cc..9f287a4 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The documentation is deployed here on github pages, you can view it [here](https > Pleas do **not** submit pull requests to this repo. -If you would like to help out with development or translating of the HASS.Agent application check out our guide [here](https://hass-agent.github.io/contributing/). +If you would like to help out with development or translating of the HASS.Agent application check out our guide [here](https://hass-agent.github.io/latest/contributing/). ### Contributing to the documentation @@ -38,4 +38,4 @@ You can either submit github tickets with the info you want added to the documen ### Editing the docs yourself -Checkout [this](https://hass-agent.github.io/contributing/#helping-out-with-the-documentation) page for information on contributing to the documentation. +Checkout [this](https://hass-agent.github.io/latest/contributing/#helping-out-with-the-documentation) page for information on contributing to the documentation. From 334b131beb6145ae000d64c6ceb2b5e84d3bcfee Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Thu, 16 Nov 2023 21:41:22 +1100 Subject: [PATCH 011/105] Add docs contribution homepage --- .../hass-agent-documentation/index.md | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/docs/contributing/hass-agent-documentation/index.md b/docs/contributing/hass-agent-documentation/index.md index f9962dd..17cd9a0 100644 --- a/docs/contributing/hass-agent-documentation/index.md +++ b/docs/contributing/hass-agent-documentation/index.md @@ -1 +1,105 @@ # Contributing to the HASS.Agent Documentation + +!!! warning + + **Make sure you understand the HASS.Agent client version system before continuing. You can find info on it [here](../developer-resources/version-system.md/#clientdocumentation-versioning).** + +## Overview + +The HASS.Agent docs are built on MKDocs, which is a python based tool that allows you to write documentation in simple markdown. Most of the docs is written in markdown and is therefore easily editable. However submitting these edits and testing them requires a basic understanding of git and github version control. + +### The documentation versions + +At the top of the documentation you will find a selector to the write of the title. This is a version selector that allows you to view different versions of the documentation. You will notice there are two special versions and the rest follow the format of `*.*`: + +| Version | Description | +| -------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `beta` | The current beta build of the documentation, used for trying new features and writing docs for upcoming features of HASS.Agent. | +| `latest` | The current latest release of HASS.Agent, this is also the default version. | +| `*.*` | Older versions of the docs, these are not editable. These are known as `old-versions` Example: `1.5` | + +## Github Structure + +The repo for the documentation is linked at the top right of the documentation at all times and is also available [here](https://github.com/hass-agent/hass-agent.github.io). Go ahead and open it in another tab to reference as you go through this section. + +### Branches Overview + +The repo contains three branches: + +| Branch | Description | +| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `main` | Contains the files used to maintain the `latest`[^1] version of the documentation. | +| `beta` | Contains the files developing the next release of the documentation, this is also the `beta`[^1] version of the documentation. | +| `gh-pages` | Contains the built files of the documentation, this repo is not to be touched, everything is written in HTML, CSS and JS. All the files are auto-generated during builds of the documentation. | + +#### Why two separate branches? + +We use two separate branches in the github as it allows us to work on new versions of the documentation while fixing issues with the current documentation. This is great for us as we can test new features online and send them to people without accidently destroying the `latest`[^1] documentation. However this does create a few guidelines that need to be followed: + +- If you want your changes to be applied in all future versions of the documentation you **MUST** make these changes in the `beta` branch. +- Any changes made to the `main` branch will be immediately applied to the `latest`[^1] version however they will **not** be included in future versions of the documentation. + +If you would like to know why these restrictions exist checkout [this](#why-are-there-restrictions) section. + +### Deploying the documentation + +After merges occur to either the `beta` or `main` branch specific github workflows will run that wil automatically build and deploy the correct version of the documentation. Therefore you **do not** need to ever do any sort of building or deploying. + +#### Releasing the `beta` version + +When it comes time to release the `beta`[^1] version of the documentation as the `latest`[^1] version, one of the admins of the github will manually trigger a workflow that will deploy and build the `beta` branch as the `latest`[^1] version and also deploy a copy for the `beta`[^1] version. After the deployment a merge will be triggered to merge the `beta` branch with the `main` branch. We will do our best to bring over changes from the `main` branch to the `beta` but we cannot guarantee, this is the reason for [this](#why-are-there-restrictions) section. + +### Why are there restrictions? + +These restrictions exist because of the way the system is built. Here is a diagram showing an example of changes made to the homepage: + +```mermaid +flowchart LR + beta>Beta Branch] + main>Main Branch] + + beta-changes(Example change to homepage) + latest-changes(Different change to homepage) + + beta-pr([Beta PR merged]) + latest-pr([Main PR merged]) + + + beta-->beta-pr + beta-changes-->|Commit changes to beta|beta-pr + main-->latest-pr + latest-changes-->|Commit changes to main|latest-pr + + beta-pr --> |Deploy beta version| beta-deployment + latest-pr --> |Deploy latest version| latest-deployment + + beta-deployment{{Beta Deployment}} + latest-deployment{{Latest Deployment}} +``` + +You will notice that now the homepage is different on each of these versions, specifically the homepage on the `main` branch has been added changes that are not included in the `beta` branch version. Now if we have a look at what happens when the beta version is released as latest: + +```mermaid +flowchart LR + beta>Beta Branch] + main>Main Branch] + + beta-deployment{{Beta Deployment}} + latest-deployment{{Latest Deployment}} + + beta --> |Deploy to latest| latest-deployment + beta --> |Deploy copy for next beta version| beta-deployment + + merge([Merge beta into main]) + + beta --> |Overwrite main with beta| merge + main --> |Changes overwritten by beta| merge + + main --> |Deploy main as it's version number| gh-pages[(Old Versions)] +``` + +When we release the `beta`[^1] version, we copy the `latest`[^1] version into the `old-versions` by changing it's name to it's version number. Then the `beta`[^1] version is deployed to `latest`[^1] and a copy is created for developing the next version. Finally the `beta` branch is merged with the `main` branch. This means that any changes added into the `main` branch will be overwritten by the `beta` branch. + +Now that you understand how the system works you can see why changes added to the `main` branch are not included in future versions of the documentation. + +[^1]: This corresponds to the label in the documentation version selector. From f43e6a5a072b2c8349406347184e70426144c4be Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Thu, 16 Nov 2023 21:41:36 +1100 Subject: [PATCH 012/105] Add docs setup page --- .../images/screenshots/create-docs-fork.png | Bin 0 -> 41294 bytes .../hass-agent-documentation/setup.md | 85 ++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 docs/assets/images/screenshots/create-docs-fork.png create mode 100644 docs/contributing/hass-agent-documentation/setup.md diff --git a/docs/assets/images/screenshots/create-docs-fork.png b/docs/assets/images/screenshots/create-docs-fork.png new file mode 100644 index 0000000000000000000000000000000000000000..f5924b3ce60c35030d9c2069325316b7117badb5 GIT binary patch literal 41294 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 je_F=>mj}I Actions / General --> Disable actions --> save + +### Deleting `gh-pages` branch + +You wil not need the `gh-pages` branch so you can delete it like this. + +Select the current branch --> View all branches --> Select the delete icon next to the `gh-pages` branch + +## Setting up the local branches + +Now you will want to navigate to a directory on your pc for HASS.Agent, I will be using `HASS.Agent` + +Now go ahead and create two new folders named `hass-agent-docs-beta` and `hass-agent-docs-main`. + +### Clone the branches to each folder + +Open a command prompt in the `HASS.Agent` folder and clone your forked repo into the `hass-agent-docs-main` folder. After that clone the `beta` branch of your forked repo into the `hass-agent-docs-beta` folder. You can use the `-b beta` flag for this. + +## Setting up virtual environments + +Now you will need to repeat the following steps in each of the folders: + +???+ warning + + Steps 2 onwards require vscode and the python extension for vscode to be installed. + +### Setup venv and vscode + +1. run `python -m venv venv` to create a venv environment named venv +2. run `code .` to open the folder in vscode +3. Use ctrl + shift + p to open the command pallette and type in `select interpreter` and press enter. Now select the python located in `.\venv\scripts\python.exe` +4. Use ctrl + , to open the user settings page. Now search for `activate environment` and make sure Python > Terminal: Activate Environment is turned on +5. Open a new terminal in vscode using ctrl + ` +6. Verify this terminal contains `(venv)` at the start + +???+ note + + After this setup whenever you open vscode to either of these projectsm new terminals will have the venv activated by default. However when re-opening a project vscode's terminal history **does not** activate the venv. So make sure to create a new terminal each time to ensure it's activated. As always you will know it's active when you see `(venv)` at the start. + +### Install all requirements + +In both of these directories you will need to run: + +- `pip install -r requirements.txt` + +To install all the dependencies for the documentation. + +!!! warning + + Make sure the venv is active before running `pip install` or you will get errors. + +## Finishing up + +You will now have two separate directories setup on your machine that reflect a fork of the hass.agent docs repo. This will allow you to modify the documentation and test your edits. As well as upload these edits to github and have them reviewed and implemented into the official documentation. The final directory structure will look something like this: + +```{.sh .no-copy} +. +└─ HASS.Agent/ + ├─hass-agent-docs-beta/ + └─hass-agent-docs-main/ +``` From aa638bb46bdf0197ec71f3833bfa70adb5477cbb Mon Sep 17 00:00:00 2001 From: DrR0X-glitch Date: Thu, 16 Nov 2023 21:41:56 +1100 Subject: [PATCH 013/105] Fix getting started button to navigate to /latest --- theme_override_home/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/theme_override_home/home.html b/theme_override_home/home.html index 7cf5e0b..5baba0a 100644 --- a/theme_override_home/home.html +++ b/theme_override_home/home.html @@ -147,7 +147,7 @@

Welcome to HASS.Agent

A windows Home Assistant client(Companion App) that provides powerful features for automating your windows system.

- Get Started + Get Started