Skip to content

Commit 1ae601f

Browse files
authored
Merge branch 'mendix:development' into HistoryPane
2 parents a6e9d04 + f24d697 commit 1ae601f

File tree

409 files changed

+5799
-2450
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

409 files changed

+5799
-2450
lines changed
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
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+
jobs:
16+
identify-branches:
17+
if: github.repository_owner == 'mendix'
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: Fetch all branches
28+
run: |
29+
echo "Fetching all branches from remote..."
30+
git fetch origin '+refs/heads/*:refs/remotes/origin/*' --prune
31+
echo "Fetched branches:"
32+
git branch -r
33+
34+
- name: Process branches
35+
id: branch-data
36+
run: |
37+
set -e
38+
echo "Finding all branches for processing..."
39+
ALL_BRANCHES=$(git branch -r | grep -v "origin/HEAD" | sed 's/origin\///')
40+
41+
echo "All branches found:"
42+
printf "%s\n" "${ALL_BRANCHES[@]}"
43+
44+
MIN_AGE_DAYS=${{ github.event.inputs.min_age_days || 27 }}
45+
46+
# Arrays to hold branches
47+
PROTECTED_BRANCHES=()
48+
MERGED_BRANCHES_TO_PROCESS=()
49+
BRANCHES_TO_DELETE=()
50+
BRANCHES_TOO_RECENT=()
51+
52+
CURRENT_DATE=$(date +%Y%m%d)
53+
echo "CURRENT_DATE=$CURRENT_DATE" >> $GITHUB_ENV
54+
55+
# Check branches
56+
for BRANCH in $ALL_BRANCHES; do
57+
branch_lower=$(echo "$BRANCH" | tr '[:upper:]' '[:lower:]')
58+
# Identify protected branches
59+
if [[ $branch_lower =~ (backup|development|main|master|production) ]]; then
60+
if git branch -r --merged origin/development | grep -q "origin/$BRANCH"; then
61+
PROTECTED_BRANCHES+=("$BRANCH (protected name, merged)")
62+
else
63+
PROTECTED_BRANCHES+=("$BRANCH (protected name, not merged)")
64+
fi
65+
else
66+
# Process non-protected merged branches
67+
if git branch -r --merged origin/development | grep -q "origin/$BRANCH"; then
68+
MERGED_BRANCHES_TO_PROCESS+=("$BRANCH")
69+
else
70+
UNMERGED_BRANCHES+=("$BRANCH (not merged)")
71+
fi
72+
fi
73+
done
74+
75+
# Process potential deletion
76+
for BRANCH in "${MERGED_BRANCHES_TO_PROCESS[@]}"; do
77+
MERGE_HASH=$(git log --grep="Merge branch.*$BRANCH" origin/development -n 1 --pretty=format:"%H" ||
78+
git log --grep="Merge pull request.*$BRANCH" origin/development -n 1 --pretty=format:"%H")
79+
[ -z "$MERGE_HASH" ] && MERGE_HASH=$(git log -n 1 origin/$BRANCH --pretty=format:"%H")
80+
81+
MERGE_DATE=$(git show -s --format=%ct $MERGE_HASH)
82+
DAYS_AGO=$(( ($(date +%s) - MERGE_DATE) / 86400 ))
83+
84+
if [[ $DAYS_AGO -ge $MIN_AGE_DAYS ]]; then
85+
BRANCHES_TO_DELETE+=("$BRANCH ($DAYS_AGO days)")
86+
else
87+
BRANCHES_TOO_RECENT+=("$BRANCH ($DAYS_AGO days)")
88+
fi
89+
done
90+
91+
# Display non-deleted branches for logging
92+
ALL_NON_DELETED_BRANCHES=("${PROTECTED_BRANCHES[@]}" "${BRANCHES_TOO_RECENT[@]}" "${UNMERGED_BRANCHES[@]}")
93+
IFS=$'\n' ALL_NON_DELETED_BRANCHES=($(sort <<<"${ALL_NON_DELETED_BRANCHES[*]}"))
94+
unset IFS
95+
96+
if [ ${#BRANCHES_TO_DELETE[@]} -eq 0 ]; then
97+
echo "No branches found for deletion."
98+
echo "NO_BRANCHES=true" >> $GITHUB_ENV
99+
exit 0
100+
else
101+
echo "NO_BRANCHES=false" >> $GITHUB_ENV
102+
fi
103+
104+
# Create report
105+
echo "# Branch Cleanup Report - $(date +%Y-%m-%d)" > branch-report.branchreport
106+
echo "## Branches for deletion (merged >=${MIN_AGE_DAYS} days ago):" >> branch-report.branchreport
107+
echo '```' >> branch-report.branchreport
108+
printf "%s\n" "${BRANCHES_TO_DELETE[@]}" >> branch-report.branchreport
109+
echo '```' >> branch-report.branchreport
110+
echo "## Branches not eligible for deletion:" >> branch-report.branchreport
111+
echo '```' >> branch-report.branchreport
112+
printf "%s\n" "${ALL_NON_DELETED_BRANCHES[@]}" >> branch-report.branchreport
113+
echo '```' >> branch-report.branchreport
114+
115+
echo "BRANCHES_TO_DELETE<<EOF" >> $GITHUB_ENV
116+
printf "%s\n" "${BRANCHES_TO_DELETE[@]}" >> $GITHUB_ENV
117+
echo "EOF" >> $GITHUB_ENV
118+
echo "ALL_NON_DELETED_BRANCHES<<EOF" >> $GITHUB_ENV
119+
printf "%s\n" "${ALL_NON_DELETED_BRANCHES[@]}" >> $GITHUB_ENV
120+
echo "EOF" >> $GITHUB_ENV
121+
122+
- name: Create Deletion PR
123+
if: env.NO_BRANCHES != 'true'
124+
uses: peter-evans/create-pull-request@v6
125+
with:
126+
commit-message: "Branch cleanup proposal"
127+
title: "[AUTO] Branch Deletion Candidates - ${{ env.CURRENT_DATE }}"
128+
body: |
129+
## Branches for deletion (merged to development)
130+
```
131+
${{ env.BRANCHES_TO_DELETE }}
132+
```
133+
134+
## Branches not eligible for deletion
135+
```
136+
${{ env.ALL_NON_DELETED_BRANCHES }}
137+
```
138+
## ⚠️ Warning
139+
Merging this PR will:
140+
1. Delete the branches listed in the "Branches for deletion" section.
141+
2. Remove the temporary branch-report.branchreport file.
142+
branch: branch-cleanup-${{ env.CURRENT_DATE }}
143+
assignees: MarkvanMents,OlufunkeMoronfolu
144+
reviewers: MarkvanMents,OlufunkeMoronfolu
145+
labels: Internal WIP
146+
add-paths: |
147+
branch-report.branchreport
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
name: Branch Deletion Phase Two (PR Processing)
2+
on:
3+
pull_request:
4+
types:
5+
- closed
6+
branches:
7+
- 'development'
8+
paths:
9+
- '**.branchreport'
10+
permissions:
11+
contents: write
12+
jobs:
13+
delete-branches-and-cleanup:
14+
if: |
15+
github.event.pull_request.merged == true &&
16+
startsWith(github.event.pull_request.title, '[AUTO] Branch Deletion Candidates')
17+
runs-on: ubuntu-latest
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v4
21+
with:
22+
fetch-depth: 0
23+
token: ${{ secrets.GITHUB_TOKEN }}
24+
ref: ${{ github.event.repository.default_branch }}
25+
- name: Delete branch report file
26+
run: |
27+
# Check if file exists and delete it
28+
if [ -f "branch-report.branchreport" ]; then
29+
# Configure Git with your username
30+
git config --global user.name "github-actions[bot]"
31+
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
32+
33+
git rm branch-report.branchreport
34+
git commit -m "Remove temporary branch report file"
35+
git push
36+
echo "Removed branch-report.branchreport file"
37+
else
38+
echo "branch-report.branchreport file not found"
39+
fi
40+
- name: Extract branches and delete
41+
env:
42+
PR_BODY: ${{ github.event.pull_request.body }}
43+
run: |
44+
echo "PR Body Content:"
45+
echo "$PR_BODY"
46+
echo "-----------------------------------"
47+
48+
echo "Extracting branch names for deletion..."
49+
50+
# Extract lines between the markers using awk
51+
DELETION_LIST=$(echo "$PR_BODY" | awk '
52+
BEGIN { print_lines = 0; }
53+
/Branches for deletion/ { print_lines = 1; next; }
54+
/Branches not eligible for deletion/ { print_lines = 0; }
55+
print_lines == 1 && !/^```/ && NF > 0 {
56+
print $1;
57+
}
58+
')
59+
60+
echo "Branches identified for deletion:"
61+
echo "$DELETION_LIST"
62+
echo "-----------------------------------"
63+
64+
if [ -z "$DELETION_LIST" ]; then
65+
echo "No branches found for deletion"
66+
exit 0
67+
fi
68+
# Configure Git with your username
69+
git config --global user.name "github-actions[bot]"
70+
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
71+
72+
# Process each branch
73+
echo "$DELETION_LIST" | while read -r BRANCH; do
74+
# Skip empty lines
75+
[ -z "$BRANCH" ] && continue
76+
77+
echo "Processing branch: '$BRANCH'"
78+
79+
# Final protection check
80+
branch_lower=$(echo "$BRANCH" | tr '[:upper:]' '[:lower:]')
81+
if [[ $branch_lower =~ (backup|development|main|master|production) ]]; then
82+
echo "Skipping protected branch: $BRANCH"
83+
continue
84+
fi
85+
echo "Attempting to delete branch: $BRANCH"
86+
# Check if branch exists before trying to delete
87+
if git ls-remote --heads origin "$BRANCH" | grep -q "$BRANCH"; then
88+
echo "Branch exists, proceeding with deletion"
89+
git push origin --delete "$BRANCH" || {
90+
echo "Failed to delete branch: $BRANCH"
91+
echo "Error code: $?"
92+
}
93+
else
94+
echo "Branch $BRANCH does not exist or is not accessible"
95+
fi
96+
done

config/_default/hugo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ replacements = "github.com/FortAwesome/Font-Awesome -> ., github.com/twbs/bootst
9292
# These are mainly (all?) Docsy settings
9393

9494
[params]
95-
copyright = "© Mendix Technology BV 2021. All rights reserved."
95+
copyright = "© Siemens Industry Software Netherlands B.V. 2025. All rights reserved."
9696
privacy_policy = "http://www.mendix.com/privacy-policy/"
9797

9898
# Menu title if your navbar has a versions selector to access old versions of your site.
@@ -157,7 +157,9 @@ replacements = "github.com/FortAwesome/Font-Awesome -> ., github.com/twbs/bootst
157157
footer_about_disable = true
158158
# NK - set sidebar to be foldable
159159
sidebar_menu_foldable = true
160-
160+
# MvM - don't truncate sidebar tree items: see https://github.com/google/docsy/issues/1026
161+
sidebar_menu_truncate = 100
162+
161163
# Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events.
162164
# This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set.
163165
# If you want this feature, but occasionally need to remove the "Feedback" section from a single page,

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

Lines changed: 2 additions & 2 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

@@ -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

content/en/docs/apidocs-mxsdk/apidocs/deployment/build-api.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,10 @@ An object with the following key-value pairs:
295295
* `Description` (String) : Description of the package.
296296

297297
{{% alert color="warning" %}}
298-
For apps using SVN for version control, this call will build the specified revision even if that revision is not on the specified branch.
298+
299+
- For apps using SVN for version control, this call will build the specified revision even if that revision is not on the specified branch.
300+
301+
- For apps using Git for version control, using a short commit hash can cause timeouts with large repositories. Mendix recommends using the full commit hash
299302
{{% /alert %}}
300303

301304
##### Example

content/en/docs/apidocs-mxsdk/apidocs/deployment/pipelines-api.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,8 @@ Authorization: MxToken 7LJE…vk
3636

3737
## API Reference{#api-reference}
3838

39-
{{< swaggerui src="/openapi-spec/pipelines.yaml" >}}
39+
{{% alert color="warning" %}}
40+
You cannot call endpoints from the Mendix Pipelines API Swagger UI.
41+
{{% /alert %}}
42+
43+
{{< swaggerui-disable-try-it-out src="/openapi-spec/pipelines.yaml" >}}

content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/extensibility-api/_index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ For information on new releases of the Extensibility API see:
2020

2121
## Introduction
2222

23-
Extensions are self-contained modules which users can add to Studio Pro. This means that with extensibility you can add new features and functionality to Studio Pro. The Extensibility API is an API that allows developers to interact with a curated list of internal systems of Studio Pro. This documentation provides guides and reference documentation for the Extensibility API.
23+
Extensions are self-contained modules that enhance Studio Pro by adding new features and functionality. The Extensibility API allows you to interact with a curated set of internal systems, extending Studio Pro’s capabilities with functionality you can define yourself.
2424

25-
The API is provided in two flavors, depending which language you are developing in. C# and web based (via Typescript):
25+
The API is provided in two versions, depending on the language you are developing in:

content/en/docs/apidocs-mxsdk/apidocs/studio-pro-11/extensibility-api/csharp/_index.md

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ linktitle: "C# Extensibility API"
44
url: /apidocs-mxsdk/apidocs/csharp-extensibility-api-11/
55
description: "The C# extensibility API allows your custom Studio Pro extensions developed in C# to interact with some internal services of Studio Pro."
66
weight: 10
7-
no_list: false
8-
description_list: true
97
aliases:
108
- /apidocs-mxsdk/apidocs/extensibility-api/
119
---
@@ -20,46 +18,51 @@ For information on new releases of the Extensibility API, see [Extensibility: C#
2018

2119
## Introduction
2220

23-
Extensions can be written in C#, described here, or using a web API which is documented separately in [Extensibility API for Web Developers](/apidocs-mxsdk/apidocs/web-extensibility-api-11/).
21+
Extensions can be written in C#, described here, or using a web API (for more information about the Web API, see [Extensibility API for Web Developers](/apidocs-mxsdk/apidocs/web-extensibility-api-11/)).
2422

25-
If you need to add your own custom UI to Studio Pro, you can achieve this using web technology. Your web-based UI will be rendered in Studio Pro using a hosted web view, the API provides communication functionality between your web UI and the C# extension logic.
23+
To add a custom UI to Studio Pro, you can use web technology. Your web-based UI will be rendered in Studio Pro through a hosted web view, and the API provides communication between your UI and the C# extension logic.
2624

2725
## Prerequisites
2826

29-
* You need at least a basic understanding of the Mendix platform.
30-
* You need some understanding of the Mendix Model.
31-
* You need to have some C# development experience. Extensions are developed using [C#](https://docs.microsoft.com/en-us/dotnet/), and compiled into a `.dll` assembly file.
27+
To use the C# API, you must have:
28+
29+
* A basic understanding of the Mendix platform
30+
* Some understanding of the Mendix Model
31+
* Come C# development experience
32+
33+
Extensions are developed using [C#](https://docs.microsoft.com/en-us/dotnet/) and compiled into a `.dll` assembly file.
3234

3335
## Getting Started
3436

35-
For detailed explanation on how to get started with extensions, check out [Get Started with the Extensibility API](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/get-started/).
37+
For detailed information on how to get started with extensions, see [Get Started with the Extensibility API](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/get-started/).
3638

37-
You can also check out our examples and [API reference documentation](https://github.com/mendix/ExtensionAPI-Samples).
39+
You can also review some examples and [API reference documentation](https://github.com/mendix/ExtensionAPI-Samples).
3840

3941
## How-tos
4042

4143
Here is a list of how-tos for you to begin with:
4244

43-
* [How to Create a Menu Extension Using C#](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-menu-extension/)
44-
* [How to Create a Dockable Pane Extension Using C#](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-dockable-pane-extension/)
45-
* [How to Create a Context Menu Using C#](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-context-menu/)
46-
* [How to Create a Web View Hosted Inside a Modal Dialog Using C#](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-modal-web-view/)
47-
* [How to Create Microflows for Calculations Using C#](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-microflows-for-calculations/)
45+
* [How to Create a Menu Extension](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-menu-extension/)
46+
* [How to Create a Dockable Pane Extension](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-dockable-pane-extension/)
47+
* [How to Create a Context Menu](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-context-menu/)
48+
* [How to Create a Web View Hosted Inside a Modal Dialog](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-modal-web-view/)
49+
* [How to Create Microflows for Calculations](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-microflows-for-calculations/)
50+
* [How to Interact with the Model API](/apidocs-mxsdk/apidocs/interact-with-model-api-11/)
51+
* [How to Create a Microflow and Add Activities](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/create-microflow-add-activities/)
52+
* [How to Add Menus and Sub-menus](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/add-menu/)
53+
* [How to Build a To-do Example Extension](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/build-todo-example-extension/)
54+
* [How to Export a C# Extension](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/export-an-extension/)
4855

4956
## Advanced APIs
5057

51-
APIs for the Mendix platform's advanced users:
58+
Below are APIs for advanced users:
5259

5360
* [Use the Untyped Model Access API Using C#](/apidocs-mxsdk/apidocs/untyped-model-access-api-11/)
5461

55-
## Learn More
56-
57-
You can dive into the following topics in depth:
62+
## Reference Guide
5863

59-
* [What are extension points](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/extension-points/)
60-
* [What are the Extensibility API services](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/services/)
61-
* [How to Interact with the Model API Using C#](/apidocs-mxsdk/apidocs/interact-with-model-api-11/)
62-
* [How to host web content via a web view wrapper](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/web-views/)
63-
* [How to Build a Todo Example Extension Using C#](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/build-todo-example-extension/)
64+
Review the following reference guides to explore additional Extensibility API topics:
6465

65-
## Documentation in This Category
66+
* [Extension Points](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/extension-points/)
67+
* [Extensibility Services](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/services/)
68+
* [Extensibility Web Views](/apidocs-mxsdk/apidocs/csharp-extensibility-api-11/web-views/)

0 commit comments

Comments
 (0)