From b4971c0ae525f41fdf723219c62e29107f09d772 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Wed, 10 Jan 2024 18:17:14 +0100 Subject: [PATCH 01/12] feat: added the changelog theme and conf --- hugo.yaml | 24 ++++++++++++------ layouts/changelog/list.html | 39 ++++++++++++++++++++++++++++ layouts/changelog/single.html | 48 +++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 layouts/changelog/list.html create mode 100644 layouts/changelog/single.html diff --git a/hugo.yaml b/hugo.yaml index cc0fcf14..c22797e7 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -37,6 +37,9 @@ params: comments: enable: false type: giscus + blog: + list: + displayTags: true # https://giscus.app/ giscus: @@ -68,7 +71,7 @@ params: markup: goldmark: - renderer: + renderer: unsafe: true highlight: noClasses: false @@ -76,6 +79,7 @@ markup: enableInlineShortcodes: true menu: main: + - identifier: documentation name: Documentation pageRef: /doc @@ -84,25 +88,29 @@ menu: name: Guides pageRef: /guides weight: 2 - - identifier: openapi - name: openAPI + - identifier: api + name: API pageRef: /openapi weight: 3 + - identifier: changelog + name: Changelog + pageRef: /changelog + weight: 4 - identifier: components - name: UI components + name: Web Components url: "https://www.clever-cloud.com/doc/clever-components/?path=/story/readme--page" - weight: 4 - - name: Search weight: 5 + - name: Search + weight: 6 params: type: search - name: GitHub - weight: 6 + weight: 7 url: "https://github.com/CleverCloud/documentation" params: icon: github - name: Website - weight: 7 + weight: 8 url: "https://clever-cloud.com" params: icon: globe-alt diff --git a/layouts/changelog/list.html b/layouts/changelog/list.html new file mode 100644 index 00000000..20504b4b --- /dev/null +++ b/layouts/changelog/list.html @@ -0,0 +1,39 @@ +{{ define "main" }} + {{- $readMore := (T "readMore") | default "Read more →" -}} +
+ {{ partial "sidebar.html" (dict "context" . "disableSidebar" true "displayPlaceholder" true) }} + + +
+{{ end }} \ No newline at end of file diff --git a/layouts/changelog/single.html b/layouts/changelog/single.html new file mode 100644 index 00000000..8d1d24d3 --- /dev/null +++ b/layouts/changelog/single.html @@ -0,0 +1,48 @@ +{{ define "main" }} +
+ {{ partial "sidebar.html" (dict "context" . "disableSidebar" true "displayPlaceholder" false) }} + {{ partial "toc.html" . }} +
+
+ {{ partial "breadcrumb.html" . }} +

{{ .Title }}

+
+ {{- with $date := .Date }}{{ partial "utils/format-date" $date }}{{ end -}} + {{- $lazyLoading := site.Params.enableImageLazyLoading | default true -}} + {{ if and .Date .Params.authors }}·{{ end -}} + {{- with $.Params.authors -}} + {{- range $i, $author := . -}} + {{- if reflect.IsMap $author -}} + {{- if and $i (not $author.image) }},{{ end -}} + + {{- with $image := $author.image }} + {{- $isLocal := not (urls.Parse $image).Scheme -}} + {{- $startsWithSlash := hasPrefix $image "/" -}} + {{- if and $isLocal $startsWithSlash }} + {{- $image = (relURL (strings.TrimPrefix "/" $image)) -}} + {{ end -}} + {{ $author.name }} + {{ end -}} +
{{ $author.name }}
+
+ {{- else -}} + {{- if $i }},{{ end -}}{{ $author }} + {{- end -}} + {{- end -}} + {{- end -}} +
+
+ {{ .Content }} +
+ {{ partial "components/last-updated.html" . }} + {{ .Scratch.Set "reversePagination" true }} + {{ partial "components/pager.html" . }} + {{ partial "components/comments.html" . }} +
+
+
+{{ end }} \ No newline at end of file From b826cb42a1af954fe2c9d4b332c0da1e7dfc08b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Wed, 10 Jan 2024 18:22:13 +0100 Subject: [PATCH 02/12] docs,ui: css update and previous changelog content --- assets/css/custom.css | 3 +- content/changelog/2023-11-29-api-update.md | 29 ++++++++++++++++++ ...2023-12-13-cellar-migration-tool-update.md | 18 +++++++++++ content/changelog/2023-12-15-sozu-update.md | 15 +++++++++ content/changelog/2023-12-18-java-update.md | 13 ++++++++ .../changelog/2023-12-18-new-ip-console.md | 13 ++++++++ content/changelog/2023-12-18-php-update.md | 13 ++++++++ .../2023-12-19-clever-components-12.md | 16 ++++++++++ .../changelog/2023-12-19-console-update.md | 17 ++++++++++ content/changelog/2023-12-22-sozu-update.md | 10 ++++++ content/changelog/2024-01-02-pulsar-update.md | 10 ++++++ .../2024-01-10-documentation-changelog.md | 10 ++++++ content/changelog/_index.md | 12 ++++++++ .../images/changelog/console-new-ip-par.png | Bin 0 -> 36833 bytes static/images/changelog/doc-link-console.png | Bin 0 -> 24014 bytes 15 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 content/changelog/2023-11-29-api-update.md create mode 100644 content/changelog/2023-12-13-cellar-migration-tool-update.md create mode 100644 content/changelog/2023-12-15-sozu-update.md create mode 100644 content/changelog/2023-12-18-java-update.md create mode 100644 content/changelog/2023-12-18-new-ip-console.md create mode 100644 content/changelog/2023-12-18-php-update.md create mode 100644 content/changelog/2023-12-19-clever-components-12.md create mode 100644 content/changelog/2023-12-19-console-update.md create mode 100644 content/changelog/2023-12-22-sozu-update.md create mode 100644 content/changelog/2024-01-02-pulsar-update.md create mode 100644 content/changelog/2024-01-10-documentation-changelog.md create mode 100644 content/changelog/_index.md create mode 100644 static/images/changelog/console-new-ip-par.png create mode 100644 static/images/changelog/doc-link-console.png diff --git a/assets/css/custom.css b/assets/css/custom.css index 19b91c86..1c48f3e8 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -144,7 +144,8 @@ This will be applied also to code (except in tables): selectors in css can't be grained to target Markdown syntax (for now) */ .content p a:not(.code), -.content li a:not(.code) { +.content li a:not(.code), +article a { text-decoration-line: underline; text-decoration-style: dotted; text-decoration-color: rgb(214, 207, 251); diff --git a/content/changelog/2023-11-29-api-update.md b/content/changelog/2023-11-29-api-update.md new file mode 100644 index 00000000..06bd377b --- /dev/null +++ b/content/changelog/2023-11-29-api-update.md @@ -0,0 +1,29 @@ +--- +title: API update for tasks VM +date: 2023-11-29 +tags: + - api +excludeSearch: true +description: You can now check if an application is a task via the API +--- +The API has been updated to return a "TASK" state in the `instance.lifetime` object on the path `https://api.clever-cloud.com/v2/self/applications/{appId}`. +It is now easier to know whether an instance is of type "TASK" or not. + +```json{filename="GET https://api.clever-cloud.com/v2/self/applications/",linenos=table,hl_lines=[10]} +{ + "id": "string", + "name": "string", + "description": "string", + "zone": "string", + "zoneId": "string", + "instance": { + … + "defaultEnv": {}, + "lifetime": "REGULAR", //Allowed: REGULAR┃MIGRATION┃TASK + "instanceAndVersion": "string" + }, + … +} +``` + +You can find the full API [documentation here](http://developers.clever-cloud.com/openapi/#get-/self/applications/-appId-). diff --git a/content/changelog/2023-12-13-cellar-migration-tool-update.md b/content/changelog/2023-12-13-cellar-migration-tool-update.md new file mode 100644 index 00000000..a22fb977 --- /dev/null +++ b/content/changelog/2023-12-13-cellar-migration-tool-update.md @@ -0,0 +1,18 @@ +--- +title: Cellar migration tool update +date: 2023-12-13 +tags: + - cellar +excludeSearch: true +description: Cellar migration tool update to 2.1.0 +--- + +This release v2.1.0 of the [Cellar migration tool](https://github.com/CleverCloud/cellar-migration/releases/tag/v2.1.0) adds support for keep-alive in S3 clients and fixes a panic when a network error occurs. + +## About the Cellar migration tool + +The Cellar migration tool is a Command Line Interface tool to migrate your object storage buckets on Clever Cloud. This tool currently supports AWS-S3 and Cellar (Clever Cloud own Object Storage service) but it should work with any service implementing the S3 API. + +This is an rsync like tool that will synchronize your buckets. You can start it in a loop and it will only synchronize objects that are different between the two buckets. It is best to run it on a machine with a high network bandwidth. + + Check this [project Github](https://github.com/CleverCloud/cellar-migration) {{< icon "github" >}} diff --git a/content/changelog/2023-12-15-sozu-update.md b/content/changelog/2023-12-15-sozu-update.md new file mode 100644 index 00000000..96fa6fa0 --- /dev/null +++ b/content/changelog/2023-12-15-sozu-update.md @@ -0,0 +1,15 @@ +--- +title: Sozu update +date: 2023-12-15 +tags: + - sozu +excludeSearch: true +description: Sozu updated to version 0.15.18 +--- + +This release v0.15.18 of Sozu has been issue for performance and various bugfixes: + +* Fix 502 following a 304 response with a body that does not respect RFCs +* Fix of a panic when upgrading from HTTP to WS or from HTTPs to WSs +* Fix encryption issues when reusing TLS sessions (bump rustls) +* Added `--json` flag to all commands diff --git a/content/changelog/2023-12-18-java-update.md b/content/changelog/2023-12-18-java-update.md new file mode 100644 index 00000000..6c4005ab --- /dev/null +++ b/content/changelog/2023-12-18-java-update.md @@ -0,0 +1,13 @@ +--- +title: Updated default Java version +date: 2023-12-18 +tags: + - java +excludeSearch: true +description: New IP for DNS in PAR region are shown in the Console +--- + +Java version 21 is available on Clever Cloud but it was not the default version. We have updated our deployment processes to make Java 21 the default version. +You can however force another version with the environment variable `CC_PHP_VERSION`. + +Read our [documentation for more information about PHP version](doc/applications/php/#choose-your-php-version). diff --git a/content/changelog/2023-12-18-new-ip-console.md b/content/changelog/2023-12-18-new-ip-console.md new file mode 100644 index 00000000..0730d7fb --- /dev/null +++ b/content/changelog/2023-12-18-new-ip-console.md @@ -0,0 +1,13 @@ +--- +title: New DNS entries for the PAR region +date: 2023-12-18 +tags: + - console +excludeSearch: true +description: New IP for DNS in PAR region are shown in the Console +--- + +New IP for DNS in PAR region are shown in the Console. +The new IP has been aded to the console in the **Domain Names** section. + +{{< figure src="/images/changelog/console-new-ip-par.png" caption="The new IP shown in the console" width="800px">}} diff --git a/content/changelog/2023-12-18-php-update.md b/content/changelog/2023-12-18-php-update.md new file mode 100644 index 00000000..adfd10fa --- /dev/null +++ b/content/changelog/2023-12-18-php-update.md @@ -0,0 +1,13 @@ +--- +title: Updated default PHP version +date: 2023-12-18 +tags: + - php +excludeSearch: true +description: PHP update for all applications. +--- + +PHP version 8 is available on Clever Cloud but it was not the default version. We have updated our deployment processes to make PHP 8 the default version. +You can however force another version with the environment variable `CC_PHP_VERSION`. + +Read our [documentation for more information about PHP version](doc/applications/php/#choose-your-php-version). diff --git a/content/changelog/2023-12-19-clever-components-12.md b/content/changelog/2023-12-19-clever-components-12.md new file mode 100644 index 00000000..1d055fc0 --- /dev/null +++ b/content/changelog/2023-12-19-clever-components-12.md @@ -0,0 +1,16 @@ +--- +title: Clever Web Components update +date: 2023-12-19 +tags: + - components +excludeSearch: true +description: Clever Web Components updated to version 12 +--- + +The Clever Web Components has been updated to version 12. On the menu: + +* bug fixes +* breaking changes +* and new components that will make up the heart of the new logs UI. + +📖 Full changelog: diff --git a/content/changelog/2023-12-19-console-update.md b/content/changelog/2023-12-19-console-update.md new file mode 100644 index 00000000..4c892f2e --- /dev/null +++ b/content/changelog/2023-12-19-console-update.md @@ -0,0 +1,17 @@ +--- +title: Console update +date: 2023-12-19 +tags: + - console +excludeSearch: true +description: Console update with new icons +--- + +Among other changes under the hood, in the side menu when consulting an app, the link to the documentation is now: + +* functional for all types of application +* more precise depending on the type of application (e.g. PHP app vs. static app) +* now accompanied by a small icon to boost visibility +* also effective for add-ons + +{{< figure src="/images/changelog/doc-link-console.png" caption="The new documentation link in the console" >}} diff --git a/content/changelog/2023-12-22-sozu-update.md b/content/changelog/2023-12-22-sozu-update.md new file mode 100644 index 00000000..79843590 --- /dev/null +++ b/content/changelog/2023-12-22-sozu-update.md @@ -0,0 +1,10 @@ +--- +title: Sozu update +date: 2023-12-22 +tags: + - sozu +excludeSearch: true +description: Pulsar version 3.2.0 is deployed +--- + +Sozu can now be used as a load-balancer for any king of managed services, like databases for instance. diff --git a/content/changelog/2024-01-02-pulsar-update.md b/content/changelog/2024-01-02-pulsar-update.md new file mode 100644 index 00000000..0a56d8d2 --- /dev/null +++ b/content/changelog/2024-01-02-pulsar-update.md @@ -0,0 +1,10 @@ +--- +title: Pulsar update +date: 2024-01-02 +tags: + - pulsar +excludeSearch: true +description: Pulsar version 3.2.0 is deployed +--- + +Version 3.2.0 is now deployed and used on our platform. Our aim is to improve the availability of topics, by avoiding conflicts between namesspaces and bundle unloading. diff --git a/content/changelog/2024-01-10-documentation-changelog.md b/content/changelog/2024-01-10-documentation-changelog.md new file mode 100644 index 00000000..43b6572a --- /dev/null +++ b/content/changelog/2024-01-10-documentation-changelog.md @@ -0,0 +1,10 @@ +--- +title: Changelog added +date: 2024-01-10 +tags: + - changelog +excludeSearch: true +description: Pulsar version 3.2.0 is deployed +--- + +A new changelog has been added to the [Developer Center](/changelog). It will be regularly edited by the various Clever Cloud teams, to give to our users an overview of our new features, changes and deprecations made on the platform. diff --git a/content/changelog/_index.md b/content/changelog/_index.md new file mode 100644 index 00000000..73d74a20 --- /dev/null +++ b/content/changelog/_index.md @@ -0,0 +1,12 @@ +--- +title: Changelog +width: normal +description: Additions and changes to the Clever Cloud platform. +--- + +Additions and changes to the Clever Cloud platform. + +{{< hextra/hero-badge link="index.xml" >}} + Feed + {{< icon name="rss" attributes="height=14" >}} +{{< /hextra/hero-badge >}} diff --git a/static/images/changelog/console-new-ip-par.png b/static/images/changelog/console-new-ip-par.png new file mode 100644 index 0000000000000000000000000000000000000000..c24dfee158c5a887eeeb54cbbff3c5f056e49d68 GIT binary patch literal 36833 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 literal 0 HcmV?d00001 diff --git a/static/images/changelog/doc-link-console.png b/static/images/changelog/doc-link-console.png new file mode 100644 index 0000000000000000000000000000000000000000..6d634f59f7fe0624fba1c8ab15b4a79895379052 GIT binary patch literal 24014 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%0D`Z}2NYtq&xwO=3DH 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 E0<(Rhvj6}9 literal 0 HcmV?d00001 From a78052bfb17caa53f37b63b1a2281ca2257c43f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 02:14:34 +0100 Subject: [PATCH 03/12] ui: pagination for 50 items --- hugo.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/hugo.yaml b/hugo.yaml index c22797e7..95ab8055 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -1,6 +1,7 @@ baseURL: languageCode: en-us title: Clever Cloud Documentation +paginate: 50 #Number of item to show in the changelog section before pagination enableRobotsTXT: true enableGitInfo: true From 335d9a30fa4c6b45670094a56183c4f58a4fd2c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 02:14:57 +0100 Subject: [PATCH 04/12] ui: list changelog styling --- layouts/changelog/list.html | 44 ++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/layouts/changelog/list.html b/layouts/changelog/list.html index 20504b4b..e21cf06e 100644 --- a/layouts/changelog/list.html +++ b/layouts/changelog/list.html @@ -1,5 +1,7 @@ {{ define "main" }} - {{- $readMore := (T "readMore") | default "Read more →" -}} +{{- $newFeature := (T "newFeature") | default "New" -}} {{/* i18n for strings */}} + {{- $nextPage := (T "nextPage") | default "Next" -}} + {{- $previousPage := (T "previousPage") | default "Previous" -}}
{{ partial "sidebar.html" (dict "context" . "disableSidebar" true "displayPlaceholder" true) }}
@@ -7,8 +9,9 @@

{{ .Title }}

{{ .Content }}
- {{ range .Pages.GroupByDate "January 03, 2006" }} -

+ {{ $paginator := .Paginate (where .Data.Pages "Type" "changelog") }} + {{ range $paginator.Pages.GroupByDate "January, 2006" }} +

{{- partial "utils/icon.html" (dict "name" "clock" "attributes" "height=24") -}} @@ -16,22 +19,43 @@

-

- +

+ - {{- partial "utils/icon.html" (dict "name" "minus-sm" "attributes" "height=16") -}} {{ .Title }} + {{- partial "utils/icon.html" (dict "name" "minus-sm" "attributes" "height=16") -}} {{ .Title }} + {{ if in .Params.categories "new" }} + + {{- $newFeature -}} + + {{- end -}}

- {{- if site.Params.blog.list.displayTags -}} + {{- if site.Params.blog.list.displayTags -}} {{/* Show tags */}} {{ with .Params.tags }} -

- {{- range . }}#{{ . }}{{ end -}} -

+ + {{- range . }}#{{ . }}{{ end -}} + {{ end -}} {{- end -}}

{{ end }} {{ end }} + {{/* pagination system */}} + From 904610fe41869d22a996988a0a4a12194c0d9a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 02:15:29 +0100 Subject: [PATCH 05/12] docs: changelog content update --- .../2023-12-19-clever-components-12.md | 6 ++-- .../changelog/2023-12-19-console-update.md | 4 +-- content/changelog/2024-01-02-pulsar-update.md | 2 +- .../2024-01-10-documentation-changelog.md | 11 +++++++ content/changelog/2024-01-11-redis-update.md | 30 +++++++++++++++++++ 5 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 content/changelog/2024-01-11-redis-update.md diff --git a/content/changelog/2023-12-19-clever-components-12.md b/content/changelog/2023-12-19-clever-components-12.md index 1d055fc0..d44bde69 100644 --- a/content/changelog/2023-12-19-clever-components-12.md +++ b/content/changelog/2023-12-19-clever-components-12.md @@ -1,10 +1,12 @@ --- -title: Clever Web Components update +title: Clever Web Components updated to version 12 date: 2023-12-19 tags: - components +categories: +- new excludeSearch: true -description: Clever Web Components updated to version 12 +description: Clever Web Components updated to version 12 with new components for the future log UI. --- The Clever Web Components has been updated to version 12. On the menu: diff --git a/content/changelog/2023-12-19-console-update.md b/content/changelog/2023-12-19-console-update.md index 4c892f2e..f3defc10 100644 --- a/content/changelog/2023-12-19-console-update.md +++ b/content/changelog/2023-12-19-console-update.md @@ -1,10 +1,10 @@ --- -title: Console update +title: Console update with new icons date: 2023-12-19 tags: - console excludeSearch: true -description: Console update with new icons +description: Console update with new icons for the documentation --- Among other changes under the hood, in the side menu when consulting an app, the link to the documentation is now: diff --git a/content/changelog/2024-01-02-pulsar-update.md b/content/changelog/2024-01-02-pulsar-update.md index 0a56d8d2..e5c2f4b3 100644 --- a/content/changelog/2024-01-02-pulsar-update.md +++ b/content/changelog/2024-01-02-pulsar-update.md @@ -7,4 +7,4 @@ excludeSearch: true description: Pulsar version 3.2.0 is deployed --- -Version 3.2.0 is now deployed and used on our platform. Our aim is to improve the availability of topics, by avoiding conflicts between namesspaces and bundle unloading. +Version 3.2.0 is now deployed and used on our platform. Our aim is to improve the availability of topics, by avoiding conflicts between namesspaces and bundle unloading. \ No newline at end of file diff --git a/content/changelog/2024-01-10-documentation-changelog.md b/content/changelog/2024-01-10-documentation-changelog.md index 43b6572a..9eba7716 100644 --- a/content/changelog/2024-01-10-documentation-changelog.md +++ b/content/changelog/2024-01-10-documentation-changelog.md @@ -3,6 +3,17 @@ title: Changelog added date: 2024-01-10 tags: - changelog + - new +authors: + - name: Julia March + link: https://github.com/juliamrch + image: https://github.com/juliamrch.png?size=40 + - name: David Legrand + link: https://github.com/davlgd + image: https://github.com/davlgd.png?size=40 + - name: Clément Nivolle + link: https://github.com/cnivolle + image: https://github.com/cnivolle.png?size=40 excludeSearch: true description: Pulsar version 3.2.0 is deployed --- diff --git a/content/changelog/2024-01-11-redis-update.md b/content/changelog/2024-01-11-redis-update.md new file mode 100644 index 00000000..92db368e --- /dev/null +++ b/content/changelog/2024-01-11-redis-update.md @@ -0,0 +1,30 @@ +--- +title: Redis updated to v7.2.4 +date: 2024-01-11 +tags: + - redis +authors: + - name: sardemff7 + link: https://github.com/sardemff7 + image: https://github.com/sardemff7.png?size=40 + - name: BlackYoup + link: https://github.com/BlackYoup + image: https://github.com/BlackYoup.png?size=40 +excludeSearch: true +description: Pulsar version 3.2.0 is deployed +author: + - +--- +A new version of Redis™ (`7.2.4`) is now available for each new instancied Redis. + +## Security fixes + +* (CVE-2023-41056) In some cases, Redis may incorrectly handle resizing of memory +* buffers which can result in incorrect accounting of buffer sizes and lead to +* heap overflow and potential remote code execution. + +## Bug fixes + +*¨Fix crashes of cluster commands clusters with mixed versions of 7.0 and 7.2 (#12805, #12832) +*¨Fix slot ownership not being properly handled when deleting a slot from a node (#12564) +*¨Fix atomicity issues with the RedisModuleEvent_Key module API event (#12733) From 9afd5e12ab79695380cd3419d9330601d243ab40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 15:57:22 +0100 Subject: [PATCH 06/12] ui: breadcrumbs get standard link color --- assets/css/custom.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/css/custom.css b/assets/css/custom.css index 1c48f3e8..e228f1ae 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -153,7 +153,8 @@ article a { } html[class~="dark"] .content p a:not(.code), -html[class~="dark"] .content li a:not(.code) { +html[class~="dark"] .content li a:not(.code), +article a { color: rgb(0, 172, 230); } From 40795f4825a46b272749806418c11ebd4873b035 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 15:57:53 +0100 Subject: [PATCH 07/12] ui: list get better date format and layout. --- layouts/changelog/list.html | 48 ++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/layouts/changelog/list.html b/layouts/changelog/list.html index e21cf06e..0836f1bf 100644 --- a/layouts/changelog/list.html +++ b/layouts/changelog/list.html @@ -1,5 +1,5 @@ {{ define "main" }} -{{- $newFeature := (T "newFeature") | default "New" -}} {{/* i18n for strings */}} + {{- $newFeature := (T "newFeature") | default "New" -}} {{/* i18n for strings */}} {{- $nextPage := (T "nextPage") | default "Next" -}} {{- $previousPage := (T "previousPage") | default "Previous" -}}
@@ -7,29 +7,43 @@

-

{{ .Title }}

-
{{ .Content }}
+

+ {{ .Title }} +

+
+ {{ .Content }} +
{{ $paginator := .Paginate (where .Data.Pages "Type" "changelog") }} {{ range $paginator.Pages.GroupByDate "January, 2006" }} -

- +

+ {{- partial "utils/icon.html" (dict "name" "clock" "attributes" "height=24") -}} {{ .Key }}

{{ range .Pages }} -
-

- +
+

+ - {{- partial "utils/icon.html" (dict "name" "minus-sm" "attributes" "height=16") -}} {{ .Title }} - {{ if in .Params.categories "new" }} + {{ .Title }} + {{ if in .Params.categories "new" }} {{/* Show a label "new" if category is set to "new"*/}} {{- $newFeature -}} {{- end -}}

+ {{/* Show date */}} + {{ .Date | time.Format "2006-01-02" }} + {{- if site.Params.blog.list.displayTags -}} {{/* Show tags */}} {{ with .Params.tags }} @@ -44,15 +58,21 @@

From 58c0217767f8198cc5a5f4c33b9da97a5b87c1b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 15:58:15 +0100 Subject: [PATCH 08/12] docs: added a changelog section to the readme --- README.md | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 76 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7601f71a..86ac0fc3 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,81 @@ This linter can be downloaded and run locally, or used via VSCode: - for VSCode - as a NPM package -#### Linting Configuration +#### Linting configuration **Ignored markdown files** are listed in the `.markdownlintignore`. -**Ignored specifications**, such as some HTML tag of webcopponents, are configured in the `.markdownlint.jsonc` +**Ignored specifications**, such as some HTML tag of Web Components, are configured in the `.markdownlint.jsonc` + +## Adding changelog entries *(internal only)* + +For any significant change to the platform (updates, new features, etc.) a new entry is created in the "content/changelog" folder. + +Several entries can be made per day, it's not a problem. + +Each entry should provides clear, straightforward information on the essentials. If you find yourself writing an enormous amount of content, this may not be the right approach. However, you can always add a little charm to your changelog, but it's a tricky business, requiring careful, well-placed word choice. + +Whenever possible, the famous "Bugs fixes and improvements" should be avoided. + +### Filename convention for new entries + +The filename is not very important for the Hugo build and publication process, but it will serve as a slug for the URL. Ideally, it can start with the date in **ISO 8601** format and the title in Kebab case. This naming convention allow the files to be sorted easily in any editor. + +The format is a markdown file with a `.md` extention: + +```text +yyyy-mm-dd-your-title.md +``` + +### Front matter configuration + +Hugo uses front matter to enrich posts with metadata. Front matter allows you to keep metadata attached to an instance of a content type—i.e., embedded inside a content file. We use the following Front matter variables: + +- [`title`](https://gohugo.io/methods/page/title/) (required) + - The title that will be displayed in the main heading. The value is a ``. + +- [`date`](https://gohugo.io/methods/page/description/) (recommended) + - The date that will be displayed in the post. The value is a string in ISO 8601 like `yyyy-mm-dd`. + +- [`description`](https://gohugo.io/methods/page/description/) (recommended) + - The description that will be displayed in meta-description for SEO purposes. The value is a ``. + +- [`tags`](https://gohugo.io/content-management/taxonomies/#default-taxonomies) (recommended) + - Tags are recommended for easy product identification. They are written in lowercase and, if possible, use the same spelling throughout the posts. The value is a ``. + +- [`category`](https://gohugo.io/content-management/taxonomies/#default-taxonomies) (optional) + - The category is used here to add a "new" label on the changelog homepage when a specific entry is a new feature that should be highlighted visually. The value must be `new`, and nothing else. + +- [`authors`](https://gohugo.io/content-management/taxonomies/#default-taxonomies) (optional) + - Can be set to showcase the people behind the product. Authors are defined with a `name`, `link` for their Github or any other social network, and an `image` for the profile picture. The profile picture can be set with the Github avatar with a link like `https://github.com/BlackYoup.png` and a the parameter `?size=40` for reducing the image size (recommended for performance). The values are all of `` type. + +- [`excludeSearch`](https://imfing.github.io/hextra/docs/guide/configuration/#search-index) (recommended) + - Indicates whether the changelog will be indexed in search. It can be activated for a post if deemed necessary. The values to be set are either `true` or `false` + +```yaml +--- +title: Redis updated to v7.2.4 +date: 2024-01-11 +tags: + - redis +authors: + - name: BlackYoup + link: https://github.com/BlackYoup + image: https://github.com/BlackYoup.png?size=40 +excludeSearch: true +description: Redis has been updated to v7.2.4 mostly to prevent security issues. +--- +``` + +### Adding images and screenshots + +Adding an image can be useful for highlighting a change of interface, for example. +You can achieve this by using a shortcode, which is a simple snippet inside the content files, calling a built-in or custom templates. +The shortcode we are using here is `figure`, as show below. Then move your image in the `/images/changelog/your-image.jpg` folder of this project. + +The image size can be modified and adapted using the `width` and `height` parameters. + +Example : + +```go +{{< figure src="/images/changelog/console-new-ip-par.png" caption="The new IP shown in the console" width="800px">}} +``` From 4c2f475414ef1526f5ab68a676d80b29788c4778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 15:59:01 +0100 Subject: [PATCH 09/12] ui: date is easier to read in changelog posts --- layouts/changelog/single.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/layouts/changelog/single.html b/layouts/changelog/single.html index 8d1d24d3..af25ce65 100644 --- a/layouts/changelog/single.html +++ b/layouts/changelog/single.html @@ -1,4 +1,5 @@ {{ define "main" }} + {{- $effectiveOn := (T "effectiveOn") | default "Effective on " -}} {{/* i18n for strings */}}
{{ partial "sidebar.html" (dict "context" . "disableSidebar" true "displayPlaceholder" false) }} {{ partial "toc.html" . }} @@ -6,8 +7,8 @@
{{ partial "breadcrumb.html" . }}

{{ .Title }}

-
- {{- with $date := .Date }}{{ partial "utils/format-date" $date }}{{ end -}} +
+ {{- with $date := .Date }}{{ $effectiveOn }}{{ partial "utils/format-date" $date}}{{ end -}} {{- $lazyLoading := site.Params.enableImageLazyLoading | default true -}} {{ if and .Date .Params.authors }}·{{ end -}} {{- with $.Params.authors -}} From d7e88f2ce45e82b8d5f58fa174537a59ffda18ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 16:19:43 +0100 Subject: [PATCH 10/12] ui: Feed button is easier to see --- content/changelog/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/changelog/_index.md b/content/changelog/_index.md index 73d74a20..bd25c95a 100644 --- a/content/changelog/_index.md +++ b/content/changelog/_index.md @@ -6,7 +6,7 @@ description: Additions and changes to the Clever Cloud platform. Additions and changes to the Clever Cloud platform. -{{< hextra/hero-badge link="index.xml" >}} +{{< hextra/hero-badge link="index.xml" style="margin:10px 0 0 0">}} Feed {{< icon name="rss" attributes="height=14" >}} {{< /hextra/hero-badge >}} From 29e64f49c01a567c99b11bd48beffa9bdd175aea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 16:20:07 +0100 Subject: [PATCH 11/12] docs: changelog content update --- .../2023-11-10-healthcheck-for-java.md | 17 +++++++++++++++++ .../2023-12-19-clever-components-12.md | 2 +- content/changelog/2023-12-22-sozu-update.md | 4 ++-- content/changelog/2024-01-11-redis-update.md | 6 +++--- 4 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 content/changelog/2023-11-10-healthcheck-for-java.md diff --git a/content/changelog/2023-11-10-healthcheck-for-java.md b/content/changelog/2023-11-10-healthcheck-for-java.md new file mode 100644 index 00000000..d2a4726f --- /dev/null +++ b/content/changelog/2023-11-10-healthcheck-for-java.md @@ -0,0 +1,17 @@ +--- +title: Custom healthcheck path for Java +date: 2023-11-10 +tags: + - java +excludeSearch: true +description: Define custom healthcheck variables for java +--- + +This allows you to define variables in `CC_HEALTH_CHECK_PATH` format which define the paths that the orchestrator will call to validate a deployment, for Java appliactions. + +* If the application responds on this specified path, and the response code is between `200` and `300`, the orchestrator considers that the deployment has been validated. +* If it responds with another error code outside this interval, the application is considered to have failed its deployment. + +Currently, the orchestrator only checks whether the application is listening to TCP port 8080. This does not always mean that the application has started correctly. + +The documentation is here: [Deployment healthcheck path](https://developers.clever-cloud.com/doc/develop/healthcheck/). diff --git a/content/changelog/2023-12-19-clever-components-12.md b/content/changelog/2023-12-19-clever-components-12.md index d44bde69..52f4919a 100644 --- a/content/changelog/2023-12-19-clever-components-12.md +++ b/content/changelog/2023-12-19-clever-components-12.md @@ -1,5 +1,5 @@ --- -title: Clever Web Components updated to version 12 +title: Clever Web Components updated to v12 date: 2023-12-19 tags: - components diff --git a/content/changelog/2023-12-22-sozu-update.md b/content/changelog/2023-12-22-sozu-update.md index 79843590..101d0d60 100644 --- a/content/changelog/2023-12-22-sozu-update.md +++ b/content/changelog/2023-12-22-sozu-update.md @@ -4,7 +4,7 @@ date: 2023-12-22 tags: - sozu excludeSearch: true -description: Pulsar version 3.2.0 is deployed +description: Sozu updated to feature it as a load-balancer for databases. --- -Sozu can now be used as a load-balancer for any king of managed services, like databases for instance. +Sozu can now be used as a load-balancer for any king of managed services, like databases. diff --git a/content/changelog/2024-01-11-redis-update.md b/content/changelog/2024-01-11-redis-update.md index 92db368e..4e27f9b6 100644 --- a/content/changelog/2024-01-11-redis-update.md +++ b/content/changelog/2024-01-11-redis-update.md @@ -25,6 +25,6 @@ A new version of Redis™ (`7.2.4`) is now available for each new instancied Re ## Bug fixes -*¨Fix crashes of cluster commands clusters with mixed versions of 7.0 and 7.2 (#12805, #12832) -*¨Fix slot ownership not being properly handled when deleting a slot from a node (#12564) -*¨Fix atomicity issues with the RedisModuleEvent_Key module API event (#12733) +* Fix crashes of cluster commands clusters with mixed versions of 7.0 and 7.2 (#12805, #12832) +* Fix slot ownership not being properly handled when deleting a slot from a node (#12564) +* Fix atomicity issues with the RedisModuleEvent_Key module API event (#12733) From 74076222938b374ae3ffff41c1f40c43b7ee5f26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nivolle?= Date: Fri, 12 Jan 2024 18:10:43 +0100 Subject: [PATCH 12/12] fix: link color in changelog light theme --- assets/css/custom.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/custom.css b/assets/css/custom.css index e228f1ae..e4676aaa 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -154,7 +154,7 @@ article a { html[class~="dark"] .content p a:not(.code), html[class~="dark"] .content li a:not(.code), -article a { +html[class~="dark"] article a { color: rgb(0, 172, 230); }