Skip to content

Commit 88242de

Browse files
Merge branch 'main' into escape-flow
2 parents 747677e + f0b442d commit 88242de

36 files changed

Lines changed: 464 additions & 176 deletions

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
id: generate_token
2727
uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
2828
with:
29-
app-id: ${{ secrets.GH_BOT_APP_ID }}
29+
client-id: ${{ secrets.GH_BOT_APP_ID }}
3030
private-key: ${{ secrets.GH_BOT_APP_KEY }}
3131
owner: ${{ github.repository_owner }}
3232
- name: Check out FlowFuse/blueprint-library repository (to access the blueprints)

.github/workflows/test.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,13 @@ jobs:
1010
id: generate_token
1111
uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
1212
with:
13-
app-id: ${{ secrets.GH_BOT_APP_ID }}
14-
private-key: ${{ secrets.GH_BOT_APP_KEY }}
13+
client-id: ${{ secrets.GH_CI_READONLY_APP_ID }}
14+
private-key: ${{ secrets.GH_CI_READONLY_APP_KEY }}
1515
owner: ${{ github.repository_owner }}
16+
repositories: |
17+
website
18+
flowfuse
19+
blueprint-library
1620
- name: Check out website repository
1721
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
1822
with:
@@ -50,4 +54,3 @@ jobs:
5054
- uses: untitaker/hyperlink@fb5bb9c5011a3d143a54b4b30aedc30ec5bc0f89 # 0.2.0
5155
with:
5256
args: website/_site/ --check-anchors --sources website/src
53-

package-lock.json

Lines changed: 8 additions & 95 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
"netlify-plugin-cache": "^1.0.3",
4949
"nodemon": "^2.0.20",
5050
"npm-run-all2": "^7.0.1",
51-
"postcss": "^8.4.35",
51+
"postcss": "^8.5.10",
5252
"postcss-cli": "^9.0.1",
5353
"postcss-import": "^14.0.2",
5454
"postcss-minify": "^1.1.0",
@@ -68,7 +68,7 @@
6868
"@11ty/eleventy-fetch": "^4.0.0",
6969
"@flowfuse/flow-renderer": "^0.5.0",
7070
"@netlify/blobs": "^10.3.0",
71-
"@xmldom/xmldom": "^0.8.12",
71+
"@xmldom/xmldom": "^0.8.13",
7272
"algoliasearch": "^4.25.3",
7373
"codeowners": "^5.1.1",
7474
"eleventy-plugin-toc": "^1.1.5",

src/_data/integrations.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ module.exports = async () => {
6666
node.categories.push("catalogue");
6767
}
6868

69+
const stripRelativeTags = (html) => html
70+
.replace(/<link\b[^>]*?\bhref=(?:["']|&quot;)(?!https?:\/\/)[^"'>&]*(?:["']|&quot;)[^>]*\/?>/gi, '')
71+
.replace(/<script\b[^>]*?\bsrc=(?:["']|&quot;)(?!https?:\/\/)[^"'>&]*(?:["']|&quot;)[^>]*>(?:[\s\S]*?<\/script>)?/gi, '');
72+
6973
// Fetch full npm node details (readme, etc.)
7074
try {
7175
const nodeDetails = await EleventyFetch(
@@ -133,12 +137,30 @@ module.exports = async () => {
133137
}
134138
});
135139

140+
let sanitizedFlow = flowContent;
141+
try {
142+
const flowJson = JSON.parse(flowContent);
143+
const sanitizeNode = (n) => {
144+
if (n && typeof n === 'object') {
145+
if (typeof n.template === 'string') n.template = stripRelativeTags(n.template);
146+
if (typeof n.html === 'string') n.html = stripRelativeTags(n.html);
147+
}
148+
return n;
149+
};
150+
if (Array.isArray(flowJson)) {
151+
flowJson.forEach(sanitizeNode);
152+
} else {
153+
sanitizeNode(flowJson);
154+
}
155+
sanitizedFlow = JSON.stringify(flowJson);
156+
} catch (_) { /* keep original if not valid JSON */ }
157+
136158
return {
137159
name: file.name.replace('.json', ''), // Remove .json extension for display
138160
path: file.path,
139161
url: file.html_url,
140162
downloadUrl: file.download_url,
141-
flow: flowContent // Store the actual flow JSON as string
163+
flow: sanitizedFlow
142164
};
143165
} catch (err) {
144166
console.error(`Failed to fetch flow content for ${file.name}:`, err.message);
@@ -195,6 +217,7 @@ module.exports = async () => {
195217
return match;
196218
}
197219
);
220+
node.readme = stripRelativeTags(node.readme);
198221
} else {
199222
node.readme = "";
200223
}

src/_includes/benefits.njk

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
<div class="flex flex-wrap justify-center mt-12 md:mt-20">
22
<div class="company-value">
33
{% image "./images/pictograms/remote_blue.png", "Icon representing Fully Remote", [128] %}
4-
<h5>Fully Remote</h5>
4+
<h3>Fully Remote</h3>
55
</div>
66
<div class="company-value">
77
{% image "./images/pictograms/vacation_blue.png", "Icon representing Unlimited Vacation", [128] %}
8-
<h5>Unlimited Vacation</h5>
8+
<h3>Unlimited Vacation</h3>
99
</div>
1010
<div class="company-value">
1111
{% image "./images/pictograms/time_blue.png", "Icon representing Flexible Hours", [128] %}
12-
<h5>Flexible Hours</h3>
12+
<h3>Flexible Hours</h3>
1313
</div>
1414
<div class="company-value">
1515
{% image "./images/pictograms/education_blue.png", "Icon representing Education Budget", [128] %}
16-
<h5>Education Budget</h5>
16+
<h3>Education Budget</h3>
1717
</div>
1818
<div class="company-value">
1919
{% image "./images/pictograms/equipment_blue.png", "Icon representing Equipment", [128] %}
20-
<h5>Equipment</h5>
20+
<h3>Equipment</h3>
2121
</div>
2222
<div class="company-value">
2323
{% image "./images/pictograms/parental_leave_blue.png", "Icon representing Paid Parental Leave", [128] %}
24-
<h5>Paid Parental Leave</h5>
24+
<h3>Paid Parental Leave</h3>
2525
</div>
26-
</div>
26+
</div>

src/_includes/blog/pagination.njk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
<nav aria-labelledby="pagination" class="pagination mt-4">
2+
<nav aria-label="Pagination" class="pagination mt-4">
33
<ol class="flex flex-row w-full justify-between text-gray-600">
44
<li class="flex md:flex-initial w-40 justify-start pl-2 ff-nav-blog-p"{% if not pagination.href.previous %} style="opacity: 0; pointer-events: none;"{% endif %}><a href="{{ pagination.href.previous }}">Previous</a></li>
55
<li>

src/_includes/changelog/changelog-posts.njk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<div class="prose">
2727
{% include "summary.njk" %}
2828
</div>
29-
<a href="{{ item.url }}" class="group-hover:underline">read more...</a>
29+
<a href="{{ item.url }}" class="group-hover:underline" aria-label="Read more about {{ item.data.title }}">read more...</a>
3030
{% else %}
3131
<div class="prose">
3232
{{ item.content | safe }}

0 commit comments

Comments
 (0)