Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ab7275e
fix(slr): decide LR(0) conflicts per state, ignoring the accept item
jose-rZM Sep 27, 2026
6a56c5e
test: add larger LL(1) and SLR(1) grammar fixtures
jose-rZM Sep 27, 2026
e0e0c7e
fix(slr): count reduce-reduce states as LR(0) conflicts
jose-rZM Oct 3, 2026
4cf432b
fix(ui): draw automaton edges from their own curve and open states on…
jose-rZM Oct 3, 2026
0313174
test: pin automaton edge geometry and the click on a state
jose-rZM Oct 3, 2026
c090c54
fix(i18n): drop English-style dashes from Spanish text
jose-rZM Oct 3, 2026
472b099
feat(ui): redesign the about dialog and fix link colours on Linux
jose-rZM Oct 3, 2026
0833455
test: cover the new about dialog and the link palette
jose-rZM Oct 3, 2026
7d5a6c6
feat(ui): new SyntaxTutor icon and logo
jose-rZM Oct 3, 2026
66af472
test: check the application icon has every size
jose-rZM Oct 3, 2026
00fc25c
fix(ui): give the about action an explicit macOS menu role
jose-rZM Oct 3, 2026
36ebf73
ci: build the AppImage on Ubuntu 22.04 and drop "linux" from its name
jose-rZM Oct 3, 2026
55114bf
fix(ui): name Cmd on macOS in the automaton zoom hint
jose-rZM Oct 3, 2026
2894ee4
fix(ui): close the state details box when it is clicked
jose-rZM Oct 3, 2026
e32e0b7
test: check the home and dialogs for clipping in English too
jose-rZM Oct 3, 2026
a488910
docs: fix the build-from-source steps in the README
jose-rZM Oct 3, 2026
8f6f7b8
ci: remove SonarCloud
jose-rZM Oct 3, 2026
b1a2d22
ci: run the backend and GUI tests on every push to main and every PR
jose-rZM Oct 3, 2026
2b3c74b
chore: bump to rc6
jose-rZM Oct 3, 2026
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
42 changes: 17 additions & 25 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,23 +49,6 @@ jobs:
# GNU make would prefer over the qmake-generated Makefile.
make -f Makefile -j$(sysctl -n hw.ncpu)

- name: Prepare icons
run: |
mkdir -p MyIcon.iconset

sips -z 16 16 resources/syntaxtutor.png --out MyIcon.iconset/icon_16x16.png
sips -z 32 32 resources/syntaxtutor.png --out MyIcon.iconset/icon_16x16@2x.png
sips -z 32 32 resources/syntaxtutor.png --out MyIcon.iconset/icon_32x32.png
sips -z 64 64 resources/syntaxtutor.png --out MyIcon.iconset/icon_32x32@2x.png
sips -z 128 128 resources/syntaxtutor.png --out MyIcon.iconset/icon_128x128.png
sips -z 256 256 resources/syntaxtutor.png --out MyIcon.iconset/icon_128x128@2x.png
sips -z 256 256 resources/syntaxtutor.png --out MyIcon.iconset/icon_256x256.png
sips -z 512 512 resources/syntaxtutor.png --out MyIcon.iconset/icon_256x256@2x.png
sips -z 512 512 resources/syntaxtutor.png --out MyIcon.iconset/icon_512x512.png
sips -z 1024 1024 resources/syntaxtutor.png --out MyIcon.iconset/icon_512x512@2x.png

iconutil -c icns MyIcon.iconset -o resources/SyntaxTutor.icns

- name: Prepare .app bundle
run: |
APP=".bin/SyntaxTutor.app"
Expand All @@ -74,7 +57,8 @@ jobs:

chmod +x "$APP/Contents/MacOS/SyntaxTutor"

cp resources/SyntaxTutor.icns "$APP/Contents/Resources/SyntaxTutor.icns"
# The .icns ships ready in resources/icon (16 to 1024 px).
cp resources/icon/syntaxtutor.icns "$APP/Contents/Resources/SyntaxTutor.icns"
chmod 644 "$APP/Contents/Resources/SyntaxTutor.icns"

cat > $APP/Contents/Info.plist << EOF
Expand Down Expand Up @@ -196,7 +180,11 @@ jobs:
path: SyntaxTutor-${{ steps.version.outputs.value }}-windows-x64.zip

build-linux:
runs-on: ubuntu-latest
# The oldest Ubuntu LTS GitHub still offers. The AppImage carries the C
# and C++ runtime requirements of the system it is built on, so built on
# ubuntu-latest (24.04) it would not start on Ubuntu 22.04, Debian 12 or
# anything else with an older glibc or libstdc++.
runs-on: ubuntu-22.04
steps:
- name: Checkout source
uses: actions/checkout@v3
Expand Down Expand Up @@ -239,14 +227,16 @@ jobs:
-O /usr/local/bin/linuxdeploy-plugin-qt && \
chmod +x /usr/local/bin/linuxdeploy-plugin-qt

mkdir -p $APPDIR/usr/bin \
$APPDIR/usr/share/icons/hicolor/256x256/apps
mkdir -p $APPDIR/usr/bin
# Every size of the icon, so desktops do not scale the 256 px one.
for size in 16 24 32 48 64 128 256 512; do
install -Dm644 resources/icon/png/syntaxtutor-$size.png \
$APPDIR/usr/share/icons/hicolor/${size}x${size}/apps/syntaxtutor.png
done

cp .bin/SyntaxTutor $APPDIR/usr/bin/ && \
printf '[Desktop Entry]\nType=Application\nIcon=syntaxtutor\nName=SyntaxTutor\nExec=SyntaxTutor\nCategories=Education;\n' > $APPDIR/SyntaxTutor.desktop && \
chmod +x $APPDIR/SyntaxTutor.desktop && \
install -Dm644 resources/syntaxtutor.png \
$APPDIR/usr/share/icons/hicolor/256x256/apps/syntaxtutor.png && \
/usr/local/bin/linuxdeploy \
--appdir $APPDIR \
--desktop-file $APPDIR/SyntaxTutor.desktop \
Expand All @@ -256,13 +246,15 @@ jobs:

- name: Rename AppImage
run: |
mv SyntaxTutor-x86_64.AppImage SyntaxTutor-${{ steps.version.outputs.value }}-linux-x86_64.AppImage
# No "linux" in the name: every AppImage is for Linux (AppImage
# naming convention: App-1.0-x86_64.AppImage).
mv SyntaxTutor-x86_64.AppImage SyntaxTutor-${{ steps.version.outputs.value }}-x86_64.AppImage

- name: Upload Linux AppImage
uses: actions/upload-artifact@v4
with:
name: SyntaxTutor-linux-x86_64
path: SyntaxTutor-${{ steps.version.outputs.value }}-linux-x86_64.AppImage
path: SyntaxTutor-${{ steps.version.outputs.value }}-x86_64.AppImage

publish-prerelease:
if: startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main'
Expand Down
79 changes: 0 additions & 79 deletions .github/workflows/sonarcloud.yml

This file was deleted.

35 changes: 35 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Tests

on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]

jobs:
tests:
name: Backend and GUI tests
# Same system and Qt as the AppImage build in main.yml.
runs-on: ubuntu-22.04
steps:
- name: Checkout source
uses: actions/checkout@v4

- name: Install GoogleTest
run: |
sudo apt-get update
sudo apt-get install -y libgtest-dev

- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: 6.8.2
cache: true

# The repository's GNUmakefile builds out of tree, as in local runs.
- name: Backend tests
run: make check-core

- name: GUI tests
run: make check-ui
2 changes: 1 addition & 1 deletion APP_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.0-rc.4
2.0.0-rc.6
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ PROJECT_LOGO =
# when the HTML document is shown. Doxygen will copy the logo to the output
# directory.

PROJECT_ICON = resources/syntaxtutor.png
PROJECT_ICON = resources/icon/png/syntaxtutor-64.png

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
Expand Down
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,21 @@ Precompiled builds of SyntaxTutor are available in the Releases tab:
---

## 🛠️ Building from Source
To build SyntaxTutor from source, you just need:
- Qt6 (including `qmake6`)
- A C++20-compliant compiler
To build SyntaxTutor from source, you need:
- Qt6 (including `qmake6` and the Qt SVG module)
- A C++20-compliant compiler (GCC 11 or newer works)
- [GoogleTest](https://github.com/google/googletest), only to run the backend tests

With GNU make, the repository's `GNUmakefile` builds out of tree:
```bash
make app # the application, in build/app
make check # backend and GUI tests
```
To use qmake directly instead, pass `-f Makefile`: in the repository root GNU make
would otherwise pick up the `GNUmakefile` above.
```bash
qmake6
make
make -f Makefile
```
---

Expand Down
6 changes: 5 additions & 1 deletion SyntaxTutor.pro
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,10 @@ HEADERS += \
src/widgets/appfonts.h \
src/widgets/apptextscale.h \
src/widgets/apptypography.h \
src/widgets/appicon.h \
src/widgets/applayout.h \
src/widgets/apppalette.h \
src/widgets/appshortcuts.h \
src/widgets/automatonview.h \
src/widgets/customtextedit.h \
src/widgets/grammarview.h \
Expand All @@ -83,7 +86,8 @@ FORMS += \
src/gui/mainwindow.ui \
src/gui/slrtutorwindow.ui

win32: RC_ICONS = resources/syntaxtutor.ico
win32: RC_ICONS = resources/icon/syntaxtutor.ico
macx: ICON = resources/icon/syntaxtutor.icns

win32:CONFIG(release, debug|release) {
msvc {
Expand Down
Binary file modified manual/img/syntaxtutor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 8 additions & 1 deletion resources.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@
<qresource prefix="/">
<file>resources/check.svg</file>
<file>resources/send.svg</file>
<file>resources/syntaxtutor.png</file>
<file>resources/icon/png/syntaxtutor-16.png</file>
<file>resources/icon/png/syntaxtutor-24.png</file>
<file>resources/icon/png/syntaxtutor-32.png</file>
<file>resources/icon/png/syntaxtutor-48.png</file>
<file>resources/icon/png/syntaxtutor-64.png</file>
<file>resources/icon/png/syntaxtutor-128.png</file>
<file>resources/icon/png/syntaxtutor-256.png</file>
<file>resources/icon/png/syntaxtutor-512.png</file>
<file>resources/fonts/JetBrainsMono-Regular.ttf</file>
<file>resources/fonts/JetBrainsMono-Bold.ttf</file>
<file>resources/styles/app.qss</file>
Expand Down
1 change: 1 addition & 0 deletions resources/icon/lockup/syntaxtutor-lockup-dark-text.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading