Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
62aee5c
Fix for Issue 2036
gneiss15 Apr 22, 2025
e295573
Fix Error produced by "Actions"
gneiss15 Apr 22, 2025
27a46a4
Now it's working
gneiss15 Apr 24, 2025
a274964
Add LinuxBuild
gneiss15 Jun 26, 2025
bfc6fda
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 26, 2025
4eacb8f
Test1
gneiss15 Jun 27, 2025
b0ac864
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
d50d83d
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
e4f3cc6
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
8f89df3
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
2b9981d
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
9864580
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
bdeb789
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
317bd68
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
fd2f3e4
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
6f93d45
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
c849a73
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
3d43781
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
22d521b
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
be6b21f
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
89cd29b
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
533c94e
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
b74b7b7
Merge remote-tracking branch 'origin/Issue_2036'
gneiss15 Jun 27, 2025
10ede2d
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
6b20551
install -y gh jq
gneiss15 Jun 27, 2025
a0f2c9a
sudo not nessesary/installed in docker
gneiss15 Jun 27, 2025
c3120c7
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
cdff430
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
993dcd2
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
fd688f4
GH_TOKEN
gneiss15 Jun 27, 2025
be705a0
Fix: Bug in if [[ "$i" = "$TAG"; then
gneiss15 Jun 27, 2025
01ffdcf
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
94d23b6
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
fd5374c
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 27, 2025
b563719
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 28, 2025
6623dee
Sollte jetzt so laufen wie gewünscht
gneiss15 Jun 28, 2025
cff2a6f
replace "chrome-sandbox" included inside the AppImage with a symlink …
gneiss15 Jun 28, 2025
b28aef4
Test
gneiss15 Jun 28, 2025
db4acbb
Test2
gneiss15 Jun 28, 2025
19c60e6
Test3
gneiss15 Jun 28, 2025
2585a3b
TestNoDocker
gneiss15 Jun 28, 2025
2764e35
Test5
gneiss15 Jun 28, 2025
b121bb5
Test6
gneiss15 Jun 28, 2025
ab26dcb
Test7
gneiss15 Jun 28, 2025
7d2126e
Test8
gneiss15 Jun 28, 2025
e48030a
Test9
gneiss15 Jun 28, 2025
f804e52
Test10
gneiss15 Jun 28, 2025
16578ce
Test11
gneiss15 Jun 28, 2025
e65169e
Test12
gneiss15 Jun 28, 2025
97f907a
Test13
gneiss15 Jun 28, 2025
61286b2
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 28, 2025
d17758f
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 28, 2025
481b5dc
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 28, 2025
37ddfb4
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 28, 2025
80e5e2d
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 28, 2025
2ee374d
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 28, 2025
0ff6bfd
Signed-off-by: Günter Neiß <[email protected]>
gneiss15 Jun 28, 2025
b6a612a
Cosmetic: Use [[...]] istead of [...]
gneiss15 Jul 1, 2025
b3c29a7
Merge pull request #1 from arduino/main
gneiss15 Jul 16, 2025
b4e4d6b
Update LinuxBuild.yml (no run on push)
gneiss15 Jul 31, 2025
74a495d
Run upstream-merge.yml only every 7th Day of Month
gneiss15 Jul 31, 2025
8430373
Create KeepWorkflowsAlive.yml
gneiss15 Sep 29, 2025
4632369
Merge pull request #2 from arduino/main
gneiss15 Oct 22, 2025
fb4ace6
Merge remote-tracking branch 'upstream/main'
invalid-email-address Dec 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/tools/appimagetool-x86_64.AppImage
Binary file not shown.
6 changes: 6 additions & 0 deletions .github/tools/github-cli.sources
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Types: deb
URIs: https://cli.github.com/packages
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/githubcli-archive-keyring.gpg
Architectures: amd64
Binary file added .github/tools/githubcli-archive-keyring.gpg
Binary file not shown.
14 changes: 14 additions & 0 deletions .github/workflows/KeepWorkflowsAlive.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Keep Workflows alive
on:
workflow_dispatch:
push:
schedule:
- cron: '0 1 1 * *' # every first Day of Month at 01:00
jobs:
workflow-keepalive:
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- name: keepalive
uses: gneiss15/WorkflowKeepAliveByGhEnable@v1
104 changes: 104 additions & 0 deletions .github/workflows/LinuxBuild.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: Arduino2 IDE (Linux-AppImage-Build)
on:
#push:
workflow_dispatch:
env:
NODE_VERSION: '18.17'
YARN_VERSION: '1.22'
GO_VERSION: '1.21'
GH_TOKEN: ${{ github.token }}
jobs:
build:
name: build Linux
runs-on: ubuntu-latest
container: { "image": "ghcr.io/arduino/arduino-ide/linux:main" }
defaults:
run:
shell: bash
timeout-minutes: 90
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
registry-url: 'https://registry.npmjs.org'
- name: Install Yarn
run: npm install --global "yarn@${{ env.YARN_VERSION }}"
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
cache: false
- name: Install Taskfile
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 3.x
- name: Package
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
working-directory: './'
run: |
#set -x
#set -v
npx node-gyp install
yarn install
yarn --cwd arduino-ide-extension build
yarn --cwd electron-app rebuild
yarn --cwd electron-app build
yarn --cwd electron-app package
cp /__w/arduino-ide/arduino-ide/electron-app/dist/*.AppImage .
- name: Mod AppImage to use chrome-sandbox of local os
if: ${{ success() }}
run: |
#set -x
#set -v
EXE=$(readlink -f *.AppImage)
chmod a+x "${EXE}"
mkdir t
cd t
"${EXE}" --appimage-extract
cd squashfs-root/
rm chrome-sandbox
ln -s /opt/google/chrome/chrome-sandbox chrome-sandbox
cd ..
TOOL="${GITHUB_WORKSPACE}/.github/tools/appimagetool-x86_64.AppImage"
APPIMAGE_EXTRACT_AND_RUN=1 ARCH=x86_64 "${TOOL}" squashfs-root
rm -r squashfs-root/
rm "${EXE}"
mv *.AppImage "${EXE}"
cd ..
rm -r t
- name: Install gh and jq
if: ${{ success() }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
working-directory: './'
run: |
#set -x
#set -v
mkdir -p /etc/apt/keyrings/
mkdir -p /etc/apt/sources.list.d/
cp .github/tools/githubcli-archive-keyring.gpg /etc/apt/keyrings/githubcli-archive-keyring.gpg
cp .github/tools/github-cli.sources /etc/apt/sources.list.d/github-cli.sources
apt update
apt install -y gh jq
- name: Upload to GitHub Releases
if: ${{ success() }}
run: |
set -x
set -v
TAG_List=$(gh release list -R "$GITHUB_REPOSITORY" --json tagName | jq -r 'map(select(true))[] | (.tagName)')
TAG="$(date +%Y%m%d)"
for i in $TAG_List; do
if [[ "$i" = "$TAG" ]]; then
gh release delete "$TAG" -y
fi
done
OLDFN=$(ls *.AppImage)
NEWFN=$(sed -e s/snapshot[^_]*/$TAG-GN/g <<<$OLDFN)
mv $OLDFN $NEWFN
gh release create "$TAG" "$NEWFN" --title "$TAG"

6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ jobs:
working-directory: ${{ matrix.config.working-directory || './' }}
run: |
# See: https://www.electron.build/code-signing
if [ $CAN_SIGN = false ] || [ $IS_WINDOWS_CONFIG = true ]; then
if [[ $CAN_SIGN = false ]] || [[ $IS_WINDOWS_CONFIG = true ]]; then
echo "Skipping the app signing: certificate not provided."
else
export CSC_LINK="${{ runner.temp }}/signing_certificate.${{ matrix.config.certificate-extension }}"
Expand Down Expand Up @@ -544,11 +544,11 @@ jobs:
run: |
export LATEST_TAG=$(git describe --abbrev=0)
export GIT_LOG=$(git log --pretty=" - %s [%h]" $LATEST_TAG..HEAD | sed 's/ *$//g')
if [ "$IS_RELEASE" = true ]; then
if [[ "$IS_RELEASE" = true ]]; then
export BODY=$(echo -e "$GIT_LOG")
else
export LATEST_TAG_WITH_LINK=$(echo "[$LATEST_TAG](https://github.com/arduino/arduino-ide/releases/tag/$LATEST_TAG)")
if [ -z "$GIT_LOG" ]; then
if [[ -z "$GIT_LOG" ]]; then
export BODY="There were no changes since version $LATEST_TAG_WITH_LINK."
else
export BODY=$(echo -e "Changes since version $LATEST_TAG_WITH_LINK:\n$GIT_LOG")
Expand Down
76 changes: 76 additions & 0 deletions .github/workflows/upstream-merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Merge upstream/main into local main
on:
workflow_dispatch:
schedule:
- cron: '30 0 1/7 * *' # every every 7th Day of Month at 00:30
#- cron: '30 0 * * *' # every Day at 00:30
jobs:
merge-upstream:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # wichtig, damit git alle Commits kennt
- name: Set up Git
run: |
git config user.name "github-actions"
git config user.email "[email protected]"
- name: Add upstream remote
run: |
git remote add upstream https://github.com/arduino/arduino-ide.git
git fetch upstream
- name: Check for relevant changes (skip merge if only .github/ etc.)
id: Check
run: |
git checkout main
git fetch upstream
#ROOT_FILES=$(grep -Ev '^\.github/|^\.git/|^[^/]+$')
BASE=$(git merge-base HEAD upstream/main)
DIFF_FILES=$(git diff --name-only $BASE upstream/main | grep -Ev '^(\.github/|\.git/|^[^/]+$)' || true)
echo "DIFF_FILES: $DIFF_FILES"
if [[ -z "$DIFF_FILES" ]]; then
echo "❌ Only ignored files changed. Exiting."
echo "skip=true" >> $GITHUB_OUTPUT
else
echo "❎ Relevant files changed."
echo "skip=false" >> $GITHUB_OUTPUT
fi
- name: Merge upstream/main into local main
if: steps.Check.outputs.skip == 'false'
run: |
git merge upstream/main --no-edit
continue-on-error: true # erlaubt Fehler z. B. bei Konflikten
- name: Check for merge conflicts
if: steps.Check.outputs.skip == 'false'
run: |
if git ls-files -u | grep .; then
echo "❌ Merge conflicts detected!"
exit 1
fi
echo "✅ No merge conflicts"
- name: Install GitHub CLI
if: ${{ success() && steps.Check.outputs.skip == 'false' }}
run: sudo apt-get install gh -y
- name: Create branch, push and open PR
if: ${{ success() && steps.Check.outputs.skip == 'false' }}
env:
GH_TOKEN: ${{ secrets.PAT }}
run: |
# 🟢 Option 1: Direkt pushen (Standard)
#git push origin main

# 🟡 Option 2: PR statt direktem Merge (kommentieren, falls gewünscht)
#echo $GH_TOKEN | gh auth login --with-token
BRANCH="upstream-merge-$(date +%s)"
git checkout -b $BRANCH
git push origin $BRANCH
gh pr create --title "Merge from upstream" --body "Automatisch erstellter PR" --base main --head $BRANCH
- name: Trigger BuildLinux workflow
if: ${{ false && success() && steps.Check.outputs.skip == 'false' }}
uses: benc-uk/workflow-dispatch@v1
with:
workflow: LinuxBuild.yml
ref: main
token: ${{ secrets.PAT }}

24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
# Arduino IDE 2.x (Special build)

### Preface

This repository is a fork of the official [Arduino IDE](https://github.com/arduino/arduino-ide).
It seams that this project is currently inactive (2 Month no commit).
- My PR [Order custom board option menus as defined in platform configuration](https://github.com/arduino/arduino-ide/pull/2717) ist still not merged.
- There is an additional BUG inside the original AppImage: It fails to run if not started with "--no-sandbxox" (on newer Linux systems).
So this repo will generate only the AppImage that:
- includes my PR
- replaces the executable "chrome-sandbox" included inside the AppImage with a symlink to /opt/google/chrome/chrome-sandbox, that should be exist on most newer Linux systems.

### Download

Latest: [Download](/../../releases/latest)

All Releases: [Releases](/../../releases)

[![Arduino2 IDE (Linux-AppImage-Build)](https://github.com/gneiss15/arduino-ide/actions/workflows/LinuxBuild.yml/badge.svg)](https://github.com/gneiss15/arduino-ide/actions/workflows/LinuxBuild.yml)
## All Below is from the original "Arduino IDE" Repo
<details>
<summary>Show</summary>
<img src="https://content.arduino.cc/website/Arduino_logo_teal.svg" height="100" align="right" />

# Arduino IDE 2.x
Expand Down Expand Up @@ -53,3 +75,5 @@ This open source code was written by the Arduino team and is maintained on a dai
## License

The code contained in this repository and the executable distributions are licensed under the terms of the GNU AGPLv3. The executable distributions contain third-party code licensed under other compatible licenses such as GPLv2, MIT and BSD-3. If you have questions about licensing please contact us at [[email protected]](mailto:[email protected]).
</details>

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { inject, injectable } from '@theia/core/shared/inversify';
import PQueue from 'p-queue';
import {
BoardIdentifier,
ConfigOption,
isBoardIdentifierChangeEvent,
Programmer,
} from '../../common/protocol';
Expand Down Expand Up @@ -71,10 +70,11 @@ export class BoardsDataMenuUpdater extends Contribution {
...ArduinoMenus.TOOLS__BOARD_SETTINGS_GROUP,
'z01_boardsConfig',
]; // `z_` is for ordering.
for (const { label, option, values } of configOptions.sort(
ConfigOption.LABEL_COMPARATOR
)) {
const menuPath = [...boardsConfigMenuPath, `${option}`];
let i:number = 0;
for (const { label, option, values } of configOptions) {
// We want Menu Entries in order of configOptions
const order = String(i++).padStart(4)
const menuPath = [...boardsConfigMenuPath, `${order}`];
const commands = new Map<
string,
Disposable & { label: string }
Expand Down
6 changes: 0 additions & 6 deletions arduino-ide-extension/src/common/protocol/boards-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -377,12 +377,6 @@ export namespace ConfigOption {
Object.setPrototypeOf(this, ConfigOptionError.prototype);
}
}

export const LABEL_COMPARATOR = (left: ConfigOption, right: ConfigOption) =>
naturalCompare(
left.label.toLocaleLowerCase(),
right.label.toLocaleLowerCase()
);
}

export interface ConfigValue {
Expand Down
Loading