Skip to content

Commit d25a994

Browse files
authored
Merge branch 'mendix:development' into development
2 parents 8139582 + 1bc20ea commit d25a994

2,498 files changed

Lines changed: 57695 additions & 27762 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
name: Branch Deletion Phase One (PR Creation)
2+
permissions:
3+
contents: write
4+
pull-requests: write
5+
on:
6+
schedule:
7+
- cron: '00 22 1 * *' # 10PM on 1st of every month
8+
workflow_dispatch:
9+
inputs:
10+
min_age_days:
11+
description: "Minimum age in days since merge"
12+
required: true
13+
default: 27
14+
type: number
15+
16+
jobs:
17+
identify-branches:
18+
if: github.repository_owner == 'mendix'
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout code
22+
uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
token: ${{ secrets.GITHUB_TOKEN }}
26+
persist-credentials: true
27+
28+
- name: Setup jq
29+
run: sudo apt-get install -y jq
30+
31+
- name: Create timestamp file
32+
run: |
33+
echo "Last scan for stale merged branches: $(TZ='Europe/Amsterdam' date +'%Y-%m-%d %H:%M:%S %Z (UTC%:z)')" > branch-cleanup-timestamp.txt
34+
35+
- name: Fetch all branches
36+
run: |
37+
git fetch origin '+refs/heads/*:refs/remotes/origin/*' --prune
38+
39+
- name: Process branches
40+
id: branch-data
41+
run: |
42+
set -e
43+
ALL_BRANCHES=$(git branch -r | grep -v "origin/HEAD" | sed 's/origin\///')
44+
MIN_AGE_DAYS=${{ github.event.inputs.min_age_days || 27 }}
45+
46+
PROTECTED_BRANCHES=()
47+
MERGED_BRANCHES_TO_PROCESS=()
48+
BRANCHES_TO_DELETE=()
49+
BRANCHES_TOO_RECENT=()
50+
UNMERGED_BRANCHES=()
51+
52+
CURRENT_DATE=$(date +%Y%m%d)
53+
echo "CURRENT_DATE=$CURRENT_DATE" >> $GITHUB_ENV
54+
55+
for BRANCH in $ALL_BRANCHES; do
56+
branch_lower=$(echo "$BRANCH" | tr '[:upper:]' '[:lower:]')
57+
if [[ $branch_lower =~ (backup|development|main|master|production) ]]; then
58+
PROTECTED_BRANCHES+=("$BRANCH (protected)")
59+
elif git branch -r --merged origin/development | grep -q "origin/$BRANCH"; then
60+
MERGED_BRANCHES_TO_PROCESS+=("$BRANCH")
61+
else
62+
UNMERGED_BRANCHES+=("$BRANCH (not merged)")
63+
fi
64+
done
65+
66+
for BRANCH in "${MERGED_BRANCHES_TO_PROCESS[@]}"; do
67+
MERGE_HASH=$(git log --grep="Merge branch.*$BRANCH" origin/development -n 1 --pretty=format:"%H" || true)
68+
[ -z "$MERGE_HASH" ] && MERGE_HASH=$(git log -n 1 origin/$BRANCH --pretty=format:"%H")
69+
70+
MERGE_DATE=$(git show -s --format=%ct $MERGE_HASH)
71+
DAYS_AGO=$(( ($(date +%s) - MERGE_DATE) / 86400 ))
72+
73+
if [[ $DAYS_AGO -ge $MIN_AGE_DAYS ]]; then
74+
BRANCHES_TO_DELETE+=("$BRANCH")
75+
else
76+
BRANCHES_TOO_RECENT+=("$BRANCH (too recent: ${DAYS_AGO}d)")
77+
fi
78+
done
79+
80+
ALL_NON_DELETED=(
81+
"${PROTECTED_BRANCHES[@]}"
82+
"${BRANCHES_TOO_RECENT[@]}"
83+
"${UNMERGED_BRANCHES[@]}"
84+
)
85+
86+
echo "HAS_BRANCHES=$([ ${#BRANCHES_TO_DELETE[@]} -gt 0 ] && echo true || echo false)" >> $GITHUB_ENV
87+
echo "BRANCHES_TO_DELETE=$(printf -- '- %s\n' "${BRANCHES_TO_DELETE[@]}" | jq -Rs .)" >> $GITHUB_ENV
88+
echo "ALL_NON_DELETED=$(printf -- '- %s\n' "${ALL_NON_DELETED[@]}" | jq -Rs .)" >> $GITHUB_ENV
89+
90+
- name: Create Deletion PR
91+
if: env.HAS_BRANCHES == 'true'
92+
uses: peter-evans/create-pull-request@v6
93+
with:
94+
token: ${{ secrets.GITHUB_TOKEN }}
95+
title: "[Auto] Branch Deletion Candidates - ${{ env.CURRENT_DATE }}"
96+
body: |
97+
### Branches for Deletion
98+
${{ fromJSON(env.BRANCHES_TO_DELETE) }}
99+
100+
### Protected/Recent Branches
101+
${{ fromJSON(env.ALL_NON_DELETED) }}
102+
base: development
103+
labels: Internal WIP
104+
assignees: MarkvanMents,OlufunkeMoronfolu
105+
reviewers: MarkvanMents,OlufunkeMoronfolu
106+
commit-message: "Add branch cleanup candidates for ${{ env.CURRENT_DATE }}"
107+
add-paths: |
108+
branch-cleanup-timestamp.txt
109+
author: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
110+
committer: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Branch Deletion Phase Two (PR Processing)
2+
on:
3+
pull_request:
4+
types: [closed]
5+
branches: [development]
6+
paths:
7+
- 'branch-cleanup-timestamp.txt'
8+
9+
permissions:
10+
contents: write
11+
12+
jobs:
13+
process-approved-deletion:
14+
if: |
15+
github.event.pull_request.merged == true &&
16+
startsWith(github.event.pull_request.title, '[Auto] Branch Deletion Candidates') &&
17+
contains(github.event.pull_request.labels.*.name, 'Internal WIP')
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 0
24+
token: ${{ secrets.GITHUB_TOKEN }}
25+
persist-credentials: true
26+
27+
- name: Extract branches
28+
id: extract-branches
29+
env:
30+
PR_BODY: ${{ github.event.pull_request.body }}
31+
run: |
32+
BRANCHES=$(echo "$PR_BODY" | awk '
33+
/### Branches for Deletion/ {flag=1; next}
34+
/### Protected\/Recent Branches/ {flag=0}
35+
flag && /^-/ {gsub(/^-[ \t]*/, ""); print}
36+
')
37+
38+
CLEAN_BRANCHES=$(echo "$BRANCHES" | tr -d '\r' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
39+
echo "branches=$(jq -nc '$ARGS.positional' --args $CLEAN_BRANCHES)" >> $GITHUB_OUTPUT
40+
echo "Extracted branches: $BRANCHES"
41+
42+
- name: Delete branches
43+
env:
44+
BRANCHES: ${{ steps.extract-branches.outputs.branches }}
45+
run: |
46+
git config --global user.name "github-actions[bot]"
47+
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
48+
49+
echo "$BRANCHES" | jq -r '.[]' | while read -r branch; do
50+
branch_lower=$(echo "$branch" | tr '[:upper:]' '[:lower:]')
51+
52+
if [[ $branch_lower =~ ^(backup|development|main|master|production)(-[0-9]+)?$ ]]; then
53+
echo "Skipping protected branch: $branch"
54+
continue
55+
fi
56+
57+
if git ls-remote --exit-code --heads origin "$branch" >/dev/null; then
58+
echo "Deleting $branch"
59+
git push origin --delete "$branch"
60+
sleep 1
61+
else
62+
echo "Branch $branch does not exist"
63+
fi
64+
done

.github/workflows/lint-action.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ jobs:
5353
body: |
5454
${{ env.VER }}
5555
branch: lint-docs
56-
committer: MarkvanMents <Mark.van.Ments@mendix.com>
57-
assignees: MarkvanMents
58-
reviewers: MarkvanMents
56+
author: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
57+
committer: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
58+
assignees: MarkvanMents,OlufunkeMoronfolu
59+
reviewers: MarkvanMents,OlufunkeMoronfolu
5960
labels: Internal WIP
6061
add-paths: |
6162
content/en/docs/**/*.md

.github/workflows/remunusedattachments.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ jobs:
3636
Pull Request to delete attachments that are no longer used.
3737
Check the htmltest output from the CI/CD pipeline to ensure that nothing has been removed accidentally.
3838
branch: rem-unused-attachments
39-
committer: MarkvanMents <Mark.van.Ments@mendix.com>
40-
assignees: MarkvanMents
41-
reviewers: MarkvanMents
39+
author: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
40+
committer: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
41+
assignees: MarkvanMents,OlufunkeMoronfolu
42+
reviewers: MarkvanMents,OlufunkeMoronfolu
4243
labels: Internal WIP
4344
add-paths: |
4445
static/attachments/**

_scripts/removeUnusedAttachments.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,6 @@ def dirWalk(start, globPattern="**/*"):
6161
break
6262
# Delete files that are in dirList2 and not in the attachment list
6363
if deleteFlag is True:
64-
# Make sure that it is not a directory
65-
if pathlib.Path.is_file(file):
64+
# Make sure that it is not a directory and not a .drawio file
65+
if pathlib.Path.is_file(file) and not file.name.endswith('.drawio'):
6666
pathlib.Path.unlink(file)

assets/scss/_styles_project.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ div.date-format{
257257

258258
// DB – Add borders around images
259259
main img {
260-
border-color: #d7d7d7;
260+
border-color: $gray-400;
261261
border-width: 1px;
262262
border-style: solid;
263263
}

branch-cleanup-timestamp.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Last scan for stale merged branches: 2026-02-01 23:29:13 CET (UTC+01:00)

config/_default/hugo.toml

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@ disableKinds = ["taxonomy", "term"]
3030
quality = 75
3131
anchor = "smart"
3232

33-
[services]
34-
[services.googleAnalytics]
35-
# Marketing Google Tag ID
36-
id = 'UA-163813-1'
37-
3833
# Language configuration
3934

4035
[languages]
@@ -47,6 +42,10 @@ disableKinds = ["taxonomy", "term"]
4742
[markup.goldmark]
4843
[markup.goldmark.renderer]
4944
unsafe = true
45+
[markup.goldmark.extensions.typographer]
46+
# Disable typographic replacements, such as smart quotes. MvM - Changed to disable=true to avoid issues with quotes being mismatched.
47+
# See https://gohugo.io/configuration/markup/
48+
disable = true
5049
[markup.highlight]
5150
# See a complete list of available styles at https://xyproto.github.io/splash/docs/all.html
5251
# See config options at https://gohugo.io/getting-started/configuration-markup/#highlight
@@ -83,12 +82,16 @@ replacements = "github.com/FortAwesome/Font-Awesome -> ., github.com/twbs/bootst
8382
[sitemap]
8483
priority = 0.5
8584

85+
# Olu - Minification configuration
86+
[minify]
87+
minifyOutput = true
88+
8689
# Everything below this are Site Params
8790
# ======================================
8891
# These are mainly (all?) Docsy settings
8992

9093
[params]
91-
copyright = "© Mendix Technology BV 2021. All rights reserved."
94+
copyright = "© Siemens Industry Software Netherlands B.V. 2025. All rights reserved."
9295
privacy_policy = "http://www.mendix.com/privacy-policy/"
9396

9497
# Menu title if your navbar has a versions selector to access old versions of your site.
@@ -153,9 +156,11 @@ replacements = "github.com/FortAwesome/Font-Awesome -> ., github.com/twbs/bootst
153156
footer_about_disable = true
154157
# NK - set sidebar to be foldable
155158
sidebar_menu_foldable = true
156-
159+
# MvM - don't truncate sidebar tree items: see https://github.com/google/docsy/issues/1026
160+
sidebar_menu_truncate = 100
161+
157162
# Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events.
158-
# This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set.
163+
# This feature used to depend on [services.googleAnalytics],but that is now become obsolete.
159164
# If you want this feature, but occasionally need to remove the "Feedback" section from a single page,
160165
# add "hide_feedback: true" to the page's front matter.
161166
[params.ui.feedback]

content/en/docs/apidocs-mxsdk/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: "APIs and SDK"
33
url: /apidocs-mxsdk/
44
description: "Presents the Mendix API documentation and the Mendix SDK documentation."
5-
weight: 55
5+
weight: 51
66
no_list: false
77
description_list: true
88
cascade:

content/en/docs/apidocs-mxsdk/apidocs/apps/app-repository-api.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ weight: 10
88

99
## Introduction
1010

11-
The App Repository API enables retrieving information (branches, commits) of application models stored in our [Team Server](/developerportal/general/team-server/).
11+
The App Repository API enables retrieving information (branches, commits) of application models stored in our [Team Server](/developerportal/repository/team-server/).
1212

1313
## Base URL
1414

@@ -35,7 +35,7 @@ Authentication for the App Repository API uses a personal access token (PAT).
3535

3636
### Generating a PAT
3737

38-
For details on how to generate a PAT, see the [Personal Access Tokens](/community-tools/mendix-profile/user-settings/#pat) section in *User Settings*. When you define the new PAT, choose at least this scope:
38+
For details on how to generate a PAT, see the [Personal Access Tokens](/portal/user-settings/#pat) section in *User Settings*. When you define the new PAT, choose at least this scope:
3939

4040
* `mx:modelrepository:repo:read`.
4141

@@ -107,7 +107,7 @@ Returns information about the version control repository for a Mendix app.
107107

108108
|Name|Type|Required|Description|
109109
|---|---|---|---|
110-
|`AppId`|String|Yes|The App ID of the Mendix app for which the repository information should be returned. You can find this under **Project ID** in the [General](/developerportal/collaborate/general-settings/) tab of the **Settings** page after you open your app in [Apps](https://sprintr.home.mendix.com/). |
110+
|`AppId`|String|Yes|The App ID of the Mendix app for which the repository information should be returned. You can find this under **Project ID** in the [General](/developerportal/general-settings/) tab of the **Settings** page after you open your app in [Apps](https://sprintr.home.mendix.com/). |
111111

112112
##### Example
113113

0 commit comments

Comments
 (0)