Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
370 commits
Select commit Hold shift + click to select a range
2e615ae
build(misc,ios): fix simulator build on apple silicon
flsobral Apr 1, 2024
57f870b
fix(build): silence old warnings treated as errors
flsobral May 3, 2024
1719ed7
feat(httpstream): add default deflate and gzip support
flsobral Apr 10, 2024
775d7f9
build(zlib): add option for madler zlib
flsobral Apr 12, 2024
7c80f7c
fix(ssl,wince): disables mbedtls on wince
flsobral Apr 15, 2024
20abf02
fix(png): fix support for c89 compilers
flsobral Apr 25, 2024
17e0f02
fix(png,wince): patch PNG_ABORT declaration for wince
flsobral Apr 25, 2024
8d28604
fix(png,wince): patch files for wince errno support
flsobral May 3, 2024
e7637b4
build(png): disable png write support
flsobral May 3, 2024
cd1ef2d
build(png): patch files only for wince
flsobral May 3, 2024
78ba44e
fix(sqlite,wince): fix wince build
flsobral May 3, 2024
455d7cd
build(scanner,wince): disable scanner library build on wince
flsobral May 3, 2024
146d955
refactor(cmake): set env var by target
flsobral Apr 25, 2024
25a9288
refactor(cmake): use TARGET_WINCE for readability
flsobral May 3, 2024
92a8392
feat(ssl): support multiple ssl providers
flsobral May 20, 2024
a9e849f
fix(ssl,posix): avoid double close on unix
flsobral Jul 24, 2024
710fb6b
fix(socket,posix): shutdown socket before close
flsobral Jul 24, 2024
cb0076e
fix(loader,android): guard manage_external_storage permission request
flsobral May 22, 2024
e60eba7
feat(settings): add device unique identifier
flsobral May 22, 2024
92a507f
perf(vm,macos): increase default memory allocation chunk size
flsobral Jun 5, 2024
0d86d55
feat(json): add inputstream parsing support
flsobral Jun 5, 2024
d36da93
perf(json): increase JSONTokener initial size
flsobral Jun 5, 2024
cd9c4dd
feat(httpstream): pick socket factory automatically
flsobral Jun 7, 2024
2442759
fix(window): fix Menu object usage
flsobral Jul 24, 2024
f62b324
perf(scanner,android): improve scanning speed
flsobral Oct 8, 2024
e6efeba
fix(scanner,android): improve reading speed on android
flsobral Oct 8, 2024
ca696fe
fix(camera,android): prevent NO_COPY from overwriting last picture
flsobral Oct 8, 2024
0a86f01
fix(deploy): fix dist vm path discovery
flsobral Oct 18, 2024
de77e71
fix(scanner,android): upgrade scanner dependency to 3.5.0
flsobral Oct 15, 2024
8b96176
build(misc,android): upgrade agp to 8.1.0
flsobral Oct 15, 2024
8fd9b77
build(misc,android): upgrade agp to 8.2.2
flsobral Oct 15, 2024
fe2264d
build(misc,android): raise compile and target sdk to 34
flsobral Oct 15, 2024
9012f2b
fix(build,android): fix zlib-ng build
flsobral Oct 15, 2024
150ee08
fix(socket,posix): fix open timeout on ios
flsobral Dec 5, 2024
0d3844c
fix(utf8): use replacement character on failure
flsobral Dec 17, 2024
7b8bbe7
fix(io): support encoding correctly
flsobral Dec 17, 2024
6a17b4b
feat(json): use Reader for character encoding
flsobral Dec 17, 2024
9b0eb46
fix(socket,posix): leave address info flags empty
flsobral Dec 19, 2024
c22f7fe
fix(socket,posix): use AF_UNSPEC instead of PF_UNSPEC
flsobral Dec 19, 2024
83ea772
feat(socket,posix): add ipv6 resolution support for posix
flsobral Dec 19, 2024
2e799ba
fix(io): make read block correctly
flsobral Jan 3, 2025
3131a42
fix(io): validate args for IOOBE
flsobral Jan 3, 2025
c52851b
feat(gps,android): add ephemerides data operations
flsobral Jan 10, 2025
2725655
feat(camera,android): use CameraX
flsobral Feb 25, 2025
48f52a3
build(png): upgrade libpng to 1.6.48
flsobral May 8, 2025
e17d6dc
fix(socket,posix): keep ipv4 dns resolution fallback
flsobral May 20, 2025
1900075
fix(ssl): fix eof detection on read
flsobral May 28, 2025
3a1f035
feat(camera,android): add player and recorder video modes
flsobral Oct 27, 2025
ab29d28
fix(camera,android): require RECORD_AUDIO for camera
flsobral Oct 27, 2025
5ef55b5
fix(ui): fix occasional npe
flsobral Oct 27, 2025
1033325
build(misc,android): raise compile and target sdk to 35
flsobral Oct 27, 2025
1df6c73
build(misc,android): upgrade agp to 8.3.0
flsobral Dec 3, 2025
57e50ae
build(misc,android): upgrade agp to 8.4.0
flsobral Dec 3, 2025
96de1d8
build(misc,android): upgrade agp to 8.5.1
flsobral Dec 3, 2025
da4f74e
build(toolchain,android): upgrade ndk to 22.1.7171670
flsobral Dec 3, 2025
46f3257
build(toolchain,android): upgrade ndk to 23.2.8568313
flsobral Dec 3, 2025
6e05266
build(toolchain,android): upgrade ndk to 24.0.8215888
flsobral Dec 3, 2025
6f95257
build(toolchain,android): upgrade ndk to 25.2.9519653
flsobral Dec 3, 2025
e1cddad
build(toolchain,android): upgrade ndk to 26.3.11579264
flsobral Dec 10, 2025
f4f097c
build(toolchain,android): upgrade ndk to 28.2.13676358
flsobral Dec 10, 2025
86d54f9
feat(camera,android): add getVideoResolutions method
flsobral Dec 9, 2025
3277016
fix(camera,android): fix image orientation
flsobral Dec 9, 2025
989c489
feat(camera,android): rework VideoCaptureActivity with CameraX
flsobral Dec 10, 2025
377c3fd
feat(camera,android): add bitrate field for video recording
flsobral Dec 10, 2025
489b890
fix(camera,android): avoid setTargetAspectRatio with setTargetResolution
flsobral Dec 17, 2025
cac1d69
build(misc,android): enable minify with proguard keep rules
flsobral Dec 10, 2025
f32c9d9
fix(deploy): improve host system detection for protoc
flsobral Dec 13, 2025
05fa2e5
feat(deploy): download protoc on first deploy
flsobral Dec 13, 2025
eb36de0
build(misc,android): upgrade agp to 8.5.2
flsobral Dec 26, 2025
dec6133
build(misc,android): upgrade agp to 8.6.0
flsobral Dec 26, 2025
423110e
feat(window,android): implement getSafeAreaInsets
flsobral Jan 13, 2026
e314e11
fix(insets,android): fix sip detection with insets
flsobral Jan 13, 2026
f132afd
fix(keyboard,android): restore keyboard support with skia
flsobral Feb 9, 2026
52aaab3
fix(keyboard,android): smooth slide animation on sip open
flsobral Jan 13, 2026
0423729
fix(insets,android): fix usable area detection
flsobral Jan 13, 2026
75d35e2
fix(keyboard,android): fix sip slide animation
flsobral Jan 13, 2026
15593ff
feat(keyboard,android): smooth slide animation on sip close
flsobral Jan 13, 2026
7b04c56
fix(gfx): fix shifted color screen glitch
flsobral Jan 16, 2026
3b3882e
fix(ui): adjust popup position and size
flsobral Jan 16, 2026
8d903a7
fix(window): improve safeAreaInsets support
flsobral Jan 16, 2026
efdc797
feat(uicolors): add unsafeAreaColor field
flsobral Jan 16, 2026
3b59cbf
fix(keyboard,android): fix keyboard handling on samsung
flsobral Jan 16, 2026
081fa85
refactor(misc,android): rename enum to avoid clash
flsobral Jan 19, 2026
b23dc13
build(camera,android): upgrade CameraX to 1.5.2
flsobral Jan 19, 2026
98ca2e5
feat(camera,android): add pinch-to-zoom support
flsobral Jan 18, 2026
8335c6e
fix(camera): adjust to safe area insets
flsobral Jan 18, 2026
1eeb3c2
feat(camera,android): add photo and preview to video capture
flsobral Jan 19, 2026
4bbab73
refactor(camera,android): refactor adjustToSafeArea
flsobral Jan 19, 2026
3fe7be0
feat(camera,android): add flash and camera switch support
flsobral Jan 19, 2026
a510174
feat(camera,android): add timer for video recording
flsobral Jan 19, 2026
a2a57cc
fix(camera,android): fix picture orientation
flsobral Jan 20, 2026
1eb3a9d
feat(camera,android): add picture, video, and full modes
flsobral Jan 19, 2026
6ea24aa
chore(format): apply code formatting and cleanup
flsobral Jan 19, 2026
a1fccd1
build(scanner,android): upgrade zxing to 4.3.0
flsobral Jan 20, 2026
5eabeea
fix(multiedit): fix scroll glitch with sip
flsobral Jan 20, 2026
e676ce8
refactor(ninepatch): remove duplicate code
flsobral Nov 13, 2023
77e0fa1
refactor(ninepatch): group methods with the same name
flsobral Nov 13, 2023
1fb5003
refactor(ninepatch): make Parts immutable
flsobral Nov 16, 2023
5155afd
perf(ninepatch): avoid recreating parts for the same image
flsobral Nov 16, 2023
a131268
perf(button): skip onBoundsChanged when text length is unchanged
flsobral Nov 16, 2023
1c6186b
feat(image): make freeTexture public
flsobral Nov 23, 2023
372d397
perf(ui): use freeTexture to release discarded resources sooner
flsobral Nov 23, 2023
cb95f37
feat(gfx,macos): add software rendering support
flsobral Nov 23, 2023
06ec18c
feat(image): implement hashCode
flsobral Feb 23, 2024
98d2361
perf(ninepatch): add cache to avoid recreating parts
flsobral Feb 23, 2024
2dd4ca9
refactor(ninepatch): make final load method private
flsobral Feb 23, 2024
be6b19f
perf(scrollposition): avoid recreating ninepatch parts during paint
flsobral Feb 23, 2024
5509c11
refactor(scrollposition): rename fields for readability
flsobral Feb 23, 2024
e9476e5
perf(scrollposition): reuse ninepatch parts across instances
flsobral Feb 23, 2024
d77866f
fix(scrollcontainer): pair SCROLL_END with SCROLL_START
flsobral Feb 28, 2024
d46c031
feat(filepicker,ios): add native file selector
flsobral Dec 5, 2024
98f824d
perf(i18n): load maps on demand
flsobral May 8, 2025
2349086
fix(interpreter,android): avoid ndk 22 performance loss
flsobral Feb 19, 2026
7d6d564
build(script,ios): update script to build ios from github
flsobral Feb 23, 2026
91c21cd
chore(omm): include datastructures in object memory manager header
flsobral Mar 20, 2026
6796482
build(vm): force libc allocators when building with Skia
flsobral Mar 20, 2026
690e2ca
build(cmake): externalize skia artifacts and auto-fetch prebuilts
flsobral Mar 21, 2026
5f0a9cd
build(misc,android): fetch skia prebuilts before native builds
flsobral Mar 26, 2026
f13dea5
perf(sdk): reduce overhead in InputStreamReader read methods
flsobral Mar 3, 2026
2569780
perf(json): optimize JSONTokener character reading
flsobral Mar 3, 2026
ce881c8
refactor(json): replace StringReader4D with StringReader in JSONTokener
flsobral Mar 3, 2026
707b843
fix(camera,android): migrate getSupportedResolutions to Camera2 API
flsobral Mar 3, 2026
4469019
fix(camera,android): fix resolution handling in custom and picture modes
flsobral Mar 3, 2026
7e0beb5
feat(math): implement Math.hypot
flsobral Mar 17, 2026
f15d65f
fix(sys): use Math.hypot in Convert.getDistancePoint2Rect
flsobral Mar 17, 2026
71facca
fix(omm): initialize OMM list heads to prevent invalid image traversal
flsobral Mar 26, 2026
0df85e8
fix(image): guard texture state against partially initialized image o…
flsobral Mar 26, 2026
6568c69
fix(runtime,android): use pointer-safe format in surface null debug log
flsobral Mar 26, 2026
18e3b97
fix(socket,posix): improve nonblocking socket connect timeout handling
flsobral Mar 27, 2026
d351fb9
fix(loader,android): avoid restricted telephony identifier access on Q+
flsobral Mar 27, 2026
161e275
fix(surface,android): bootstrap surface earlier to avoid black screen…
flsobral Mar 27, 2026
fe1ab29
feat(deploy,android): download bundletool on demand
flsobral Apr 8, 2026
50c197b
build(misc,android): reuse skia abi list for native build
flsobral Apr 17, 2026
068378a
build(misc,android): generate only arm64 native library
flsobral Apr 17, 2026
aa81dd2
feat(changelog): add changelog generation scripts
flsobral Apr 17, 2026
f475e6a
docs(contributing): update commit message guidelines
flsobral Feb 24, 2026
acd0746
ci(commit): update commit message validation workflow
flsobral Feb 24, 2026
4e355ac
chore(git): add commit message template
flsobral Feb 24, 2026
a0f238b
ci(commit): validate commit ranges in workflow
flsobral Apr 17, 2026
3b5f923
ci(misc): update workflows for supported GitHub Actions runners
flsobral Apr 27, 2026
39f46c5
build(cmake): require CMake 3.11 for FetchContent
flsobral Apr 27, 2026
ea7c386
ci(build,linux): install newer CMake in linux merge builds
flsobral Apr 27, 2026
53a8bfe
ci(build,linux): use available pip CMake version in merge workflow
flsobral Apr 27, 2026
7930896
ci(build,linux): install CMake from Kitware repo in merge workflow
flsobral Apr 27, 2026
3c4d90c
ci(build,linux): install git for FetchContent in linux merge builds
flsobral Apr 27, 2026
44456d2
ci(build,linux): install curl for Skia auto-fetch in linux merge builds
flsobral Apr 27, 2026
36fd8e7
ci(build,linux): install rsync for Skia auto-fetch in linux merge builds
flsobral Apr 27, 2026
9f50007
build(sqlite3): enable PIC for shared TCVM linking
flsobral Apr 27, 2026
634390d
build(mbedtls): enable PIC for shared TCVM linking
flsobral Apr 27, 2026
afa9ddb
build(zlib): enable PIC for shared TCVM linking
flsobral Apr 27, 2026
f49ba61
build(png): enable PIC for shared TCVM linking
flsobral Apr 27, 2026
9e8f47b
ci(build,android): use Java 17 in CI for AGP 8.6
flsobral Apr 27, 2026
9eebcd3
ci(build,android): install native tools required by Skia fetch
flsobral Apr 27, 2026
85b4ff3
build(misc,android): fetch Skia dev bundle for native headers
flsobral Apr 27, 2026
17e31ce
ci(build): split SDK and Android workflows by Java runtime
flsobral Apr 27, 2026
86901ed
build(zlib-ng): disable shared library builds in embedded setup
flsobral Apr 27, 2026
bdbdb77
build(misc,linux): lower optimization for GoogleMaps workaround
flsobral Apr 27, 2026
ee6a5ab
build(zlib-ng): resolve aliased static target before setting properties
flsobral Apr 27, 2026
6d54246
ci(build,linux): test clang for linux arm64 merge builds
flsobral Apr 27, 2026
7f868da
ci(build,linux): test newer GCC for linux arm64 merge builds
flsobral Apr 27, 2026
f969340
ci(build,windows): add Windows VM build job to merge workflow
flsobral Apr 27, 2026
2311735
ci(build,linux): add toolchain PPA manually for linux arm64 test builds
flsobral Apr 27, 2026
a0d9e55
build(misc,linux): use madler zlib for legacy toolchain compatibility
flsobral Apr 27, 2026
5110a4f
build(png,windows): use libpng 1.6.40 for MSVC builds
flsobral Apr 27, 2026
7ff71cc
build(png): expose fetched zlib to libpng on Windows
flsobral Apr 27, 2026
a7a585c
ci(build,linux): disable release optimizations in linux arm64 test bu…
flsobral Apr 27, 2026
c5a1bbe
ci(build,linux): move linux arm64 merge build to native ARM runner
flsobral Apr 27, 2026
c58a1d4
build(png): resolve zlibstatic alias before exporting ZLIB target
flsobral Apr 27, 2026
3f960b8
build(ci): drop legacy arm64 workarounds after native runner switch
flsobral Apr 28, 2026
34e8f3f
ci(misc,android): move CI jobs to ubuntu-24.04 runner image
flsobral Apr 28, 2026
f7999bd
build(third-party): simplify embedded zlib integration hooks
flsobral Apr 28, 2026
ae0055e
build(zlib-ng): resolve aliased zlibstatic target before setting prop…
flsobral Apr 28, 2026
4781cb5
ci(build,linux): move linux arm32v7 merge build to native ARM runner
flsobral Apr 28, 2026
2e4d07f
ci(build,linux): disable libpng neon path in linux arm32v7 merge builds
flsobral Apr 28, 2026
2754f00
ci(build,linux): enable qemu setup for linux arm32v7 on arm runner
flsobral Apr 28, 2026
c96f201
ci(build,linux): move linux arm32v7 back to amd64 runner
flsobral Apr 28, 2026
2ee14b5
build(ci): add experimental linux arm32v7 cross-build job
flsobral Apr 28, 2026
0eb3358
ci(build,linux): stop enabling armhf apt architecture in arm32 cross job
flsobral Apr 28, 2026
2e847b0
build(cross): declare NEON FPU in linux arm32v7 toolchain
flsobral Apr 28, 2026
413999a
build(skia): retry transient artifact download failures
flsobral Apr 28, 2026
b6dac64
ci(build): cache fetched Skia artifacts in merge workflow
flsobral Apr 28, 2026
44dfcb3
build(cmake): require CMake 3.11 across TCVM subprojects
flsobral Apr 30, 2026
e2faa59
build(misc,ios): automate static library links in generated Xcode pro…
flsobral Apr 30, 2026
656f93e
refactor(tcvm): move architecture size macros out of tcvm.h
flsobral Apr 30, 2026
f55621e
ci(build,ios): add iOS simulator build job to merge workflow
flsobral Apr 30, 2026
4fdba34
ci(misc,ios): align simulator pods with arm64 CI runners
flsobral Apr 30, 2026
af2800b
fix(misc,ios): keep pod archive out of static tcvm link phase
flsobral Apr 30, 2026
2eec588
fix(misc,ios): generate a valid Xcode frameworks phase patch
flsobral May 2, 2026
40a5d69
ci(misc,ios): validate CI builds against iphoneos instead of simulator
flsobral May 2, 2026
c6047ab
ci(build,linux): disable linux arm32 cross build
flsobral May 2, 2026
acced21
ci(misc): update actions to node24 runtime
flsobral May 2, 2026
e175372
ci(misc): force android setup action to node24
flsobral May 8, 2026
be4e09a
build(cmake): use prebuilt sqlite artifacts
flsobral May 14, 2026
bc95109
ci(build): share source checkout across jobs
flsobral May 18, 2026
e9c7103
build(cmake): support private sqlite artifacts
flsobral May 19, 2026
c192ab9
build(ci): fetch sqlite before linux docker builds
flsobral May 19, 2026
8cbd89c
ci(build,linux): use https apt mirrors in docker builds
flsobral May 19, 2026
53f0248
ci(build,linux): test with images 1.0.3
flsobral May 19, 2026
58f388d
build(ci): add versioned linux docker image workflow
flsobral May 19, 2026
8315828
ci(build,linux): test with images 1.0.4
flsobral May 19, 2026
b76eb1c
ci(build,linux): test with images 1.0.5
flsobral May 19, 2026
51a9850
ci(build,linux): set docker platform for linux image builds
flsobral May 19, 2026
2f8c92e
ci(build,linux): test with images 1.0.6
flsobral May 19, 2026
ac95f45
ci(build): reuse build workflow in package and merge
flsobral May 19, 2026
b15424f
ci(package): package SDK from build artifacts
flsobral May 19, 2026
30a4df5
ci(package): preserve SDK artifact directory layout
flsobral May 19, 2026
fa56fed
ci(package): fix android packaging
flsobral May 19, 2026
2dac5c4
build(cmake): use prebuilt mbedtls artifacts
flsobral May 19, 2026
d2765a2
build(mbedtls): link bcrypt on Windows
flsobral May 19, 2026
0147677
build(sdk): package runtime dependencies in dist libs
flsobral May 20, 2026
4295dde
build(package): use packaged SDK artifact as package base
flsobral May 20, 2026
19fbb44
ci(package,ios): package unsigned xcarchive for codesign
flsobral May 20, 2026
a216872
ci(package): include versioned SDK jar artifacts
flsobral May 20, 2026
a52ef77
ci(package,ios): preserve xcarchive path in package
flsobral May 20, 2026
0f0071c
ci(package): fix TotalCross version detection
flsobral May 20, 2026
24496bc
ci(build): cache native dependency artifacts
flsobral May 20, 2026
b8fe727
ci(build): fix native dependency cache permissions
flsobral May 20, 2026
f9fc448
ci(build): enable ccache for linux builds
flsobral May 20, 2026
86501ff
ci(build): cache cocoapods dependencies
flsobral May 20, 2026
cea381d
build(misc,android): restrict TotalCross maven repository
flsobral May 20, 2026
6a63968
ci(build,android): improve Gradle dependency cache
flsobral May 20, 2026
056c84a
build(sqlite): log resolved artifact variant
flsobral May 22, 2026
977e84c
build(sqlite): support configurable SQLite variants
flsobral May 22, 2026
6978719
build(package): match SDK version jar exactly
flsobral May 22, 2026
b339107
build(sqlite): fix release asset id lookup
flsobral May 22, 2026
8f6c0e8
build(sqlite): disable curl globbing in fetch script
flsobral May 22, 2026
d32a448
build(sqlite): harden release asset download
flsobral May 22, 2026
5b5c3eb
build(sqlite): keep fetch script compatible with older curl
flsobral May 22, 2026
56cddff
build(sqlite): validate fetch release parameters
flsobral May 22, 2026
52b9b56
build(sqlite): ignore empty fetch environment values
flsobral May 22, 2026
2970716
build(deps): consume native deps from depot tools
flsobral May 27, 2026
9e6833c
ci(build): improve log readability and save artifacts on failute
flsobral May 29, 2026
6b57534
fix(misc,ios): remove obsolete firebase instance id pod
flsobral May 30, 2026
5e1f83c
fix(misc,ios): correct xcode project references
flsobral May 30, 2026
95ed417
build(misc,ios): normalize generated project name casing
flsobral May 30, 2026
f4e292c
build(misc,ios): align deployment target to 12.1
flsobral May 30, 2026
9bc02f2
fix(misc,ios): inherit pod search paths for tcvm
flsobral May 30, 2026
c739613
fix(sqlite): enable use of sqlite-see for crypto support
flsobral Jun 3, 2026
6c707a6
fix(sqlite): fix retrieval of key for see activation
flsobral Jun 3, 2026
2613a14
ci(package): build and package ipa for distribution
flsobral Jun 3, 2026
08f0c24
docs(contributing): simplify commit message rules
flsobral Jun 8, 2026
d9f9a7a
ci(commit): update commit message validation
flsobral Jun 8, 2026
1ec7814
docs(git): update commit message template
flsobral Jun 8, 2026
411475f
docs(changelog): update commit message template
flsobral Jun 8, 2026
e553e6e
ci(commit): clarify commit message validation
flsobral Jun 8, 2026
ab63a39
docs(agents): add repository agent guidelines
flsobral Jun 8, 2026
5e99f31
docs(changelog): update changelog generator
flsobral Jun 8, 2026
c557bcd
ci(release): publish package artifacts to release
flsobral Jun 8, 2026
29d409f
chore(release): bump version to 7.2.0
flsobral Feb 20, 2026
3f76b6d
docs(changelog): update changelog for 7.2.0
flsobral Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
500 changes: 500 additions & 0 deletions .github/workflows/build.yml

Large diffs are not rendered by default.

155 changes: 116 additions & 39 deletions .github/workflows/commit.yml
Original file line number Diff line number Diff line change
@@ -1,49 +1,126 @@
name: 'Commit Message Check'
on: [push]
name: Commit Message Check

on:
push:
branches:
- master
pull_request:

jobs:
check-commit-message:
name: Check Commit Message
runs-on: ubuntu-20.04
steps:
name: Validate commit messages
runs-on: ubuntu-latest

- name: Check Commit Type
uses: gsactions/commit-message-checker@v1
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
pattern: '^[a-z0-9,\s]+: .+(?:\n(?:\n.+)+)?(?:\n\n.+)?$'
error: 'Your message must have the correct format "<scope>: <subject>" with an optional body and footer separated by blank lines.'
fetch-depth: 0

- name: Check Title Capitalize
uses: gsactions/commit-message-checker@v1
with:
pattern: '^[^A-Z]'
flags: ''
error: 'Your title should not capitalize first word.'
- name: Validate commit messages in range
env:
EVENT_NAME: ${{ github.event_name }}
PUSH_BEFORE: ${{ github.event.before }}
PUSH_AFTER: ${{ github.sha }}
PR_BASE_SHA: ${{ github.event.pull_request.base.sha }}
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: |
python3 <<'PY'
import os
import re
import subprocess
import sys

- name: Check Title Length
uses: gsactions/commit-message-checker@v1
with:
pattern: '^[^\s]+([ \t]+[^\s]+){2,}[ \t]*(\n.*)?$'
flags: 's'
error: 'A meaningful title should contain at least 3 words.'
TITLE_FORMAT = re.compile(
r'^(fix|feat|refactor|perf|style|test|docs|build|ci|chore|revert)'
r'(!\([a-z0-9_-]+(,[a-z0-9_-]+)?\)|'
r'\([a-z0-9_-]+(,[a-z0-9_-]+)?\)!?): [a-z0-9 ].*$'
)
TITLE_CAPITALIZATION = re.compile(r'^[^A-Z]')
TITLE_WORD_COUNT = re.compile(r'^[^ ]+([ \t]+[^ ]+){2,}$', re.S)
TITLE_LENGTH = re.compile(r'^([^\n]{1,80})(\n.*)?$', re.S)
BLANK_LINE = re.compile(r'^[^\n]+(\n\n.+)?$', re.S)
BODY_LINE_LENGTH = re.compile(r'^[^\n]+(\n[^\n]{0,80})*$', re.S)

- name: Check Title Line Length
uses: gsactions/commit-message-checker@v1
with:
pattern: '^([^\n]{1,80}|Merge pull request.*)(\n.*)?$'
flags: 's'
error: 'The maximum title line length of 80 characters is exceeded.'
def run(*args):
return subprocess.check_output(args, text=True).strip()

- name: Check Title Line Separator
uses: gsactions/commit-message-checker@v1
with:
pattern: '^[^\n]+(\n\n.+)?$'
flags: 's'
error: 'Should leave an empty line after title.'
def commit_range():
event_name = os.environ["EVENT_NAME"]
if event_name == "pull_request":
head = os.environ["PR_HEAD_SHA"]
base = run("git", "merge-base", os.environ["PR_BASE_SHA"], head)
return base, head

- name: Check Line Length
uses: gsactions/commit-message-checker@v1
with:
pattern: '^[^\n]+(\n[^\n]{0,80})*$'
flags: 's'
error: 'The maximum line length of 80 characters is exceeded.'
before = os.environ["PUSH_BEFORE"]
after = os.environ["PUSH_AFTER"]
if before == "0000000000000000000000000000000000000000":
return "", after
return before, after

def list_commits(base, head):
if base:
output = run("git", "rev-list", f"{base}..{head}")
else:
output = run("git", "rev-list", head)
return [line for line in output.splitlines() if line]

def read_message(commit):
return subprocess.check_output(
["git", "show", "-s", "--format=%B", commit],
text=True,
).rstrip("\n")

def validate(commit, message):
title = message.split("\n", 1)[0]
failures = []

if not TITLE_FORMAT.match(title):
failures.append("Invalid commit title format.")
if not TITLE_CAPITALIZATION.match(title):
failures.append("Commit title must not start with an uppercase letter.")
if not TITLE_WORD_COUNT.match(title):
failures.append("Commit title must contain at least 3 words.")
if not TITLE_LENGTH.match(message):
failures.append("Commit title must be 80 characters or less.")
if title.endswith("."):
failures.append("Commit title must not end with a period.")
if not BLANK_LINE.match(message):
failures.append(
"If a commit body is present, it must be separated from the title by a blank line."
)
if not BODY_LINE_LENGTH.match(message):
failures.append("Each line in the commit body must be 80 characters or less.")

return title, failures

base, head = commit_range()
commits = list_commits(base, head)
range_label = f"{base}..{head}" if base else head
print(f"Validating commit messages in range: {range_label}")
print(f"Event: {os.environ['EVENT_NAME']}")

if not commits:
print("No commits to validate.")
sys.exit(0)

invalid = []
for commit in reversed(commits):
message = read_message(commit)
title, failures = validate(commit, message)
if failures:
invalid.append((commit, title, failures))

if invalid:
print(f"Commit message validation failed for {len(invalid)} commit(s).\n")
print("Commits outside the expected format:")
for commit, title, failures in invalid:
print(f"- {commit} {title}")
for failure in failures:
print(f" - {failure}")
print(f"::error title={commit[:10]} {title}::{failure}")
print()
sys.exit(1)

print(f"Validated {len(commits)} commit message(s).")
PY
68 changes: 68 additions & 0 deletions .github/workflows/docker-linux-images.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Docker Linux images

on:
workflow_dispatch:
inputs:
tag:
description: Docker image tag to publish
required: true
default: v1.0.4
push_latest:
description: Also publish the latest tag
required: true
default: false
type: boolean

jobs:
build-linux-images:
name: Build ${{ matrix.image }}:${{ inputs.tag }}
runs-on: ubuntu-24.04

strategy:
fail-fast: false
matrix:
include:
- image: totalcross/linux-amd64
dockerfile: TotalCrossVM/docker/amd64/Dockerfile
platform: linux/amd64
- image: totalcross/linux-arm32v7
dockerfile: TotalCrossVM/docker/arm32v7/Dockerfile
platform: linux/arm/v7
- image: totalcross/linux-arm64
dockerfile: TotalCrossVM/docker/arm64/Dockerfile
platform: linux/arm64

steps:
- name: Checkout source code
uses: actions/checkout@v6

- name: Set up QEMU
uses: docker/setup-qemu-action@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4

- name: Login to Docker Hub
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build image tags
id: image-tags
shell: bash
run: |
tags="${{ matrix.image }}:${{ inputs.tag }}"
if [ "${{ inputs.push_latest }}" = "true" ]; then
tags="${tags},${{ matrix.image }}:latest"
fi
echo "tags=${tags}" >> "$GITHUB_OUTPUT"

- name: Build and push image
uses: docker/build-push-action@v7
with:
context: TotalCrossVM
file: ${{ matrix.dockerfile }}
platforms: ${{ matrix.platform }}
push: true
tags: ${{ steps.image-tags.outputs.tags }}
58 changes: 3 additions & 55 deletions .github/workflows/merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,58 +7,6 @@ on:
branches: [ master ]

jobs:
build-linux:
name: Build '${{ matrix.project }}'
strategy:
fail-fast: false
matrix:
project: [ linux-amd64, linux-arm32v7, linux-arm64 ]

runs-on: ubuntu-20.04

steps:
- name: Checkout source code
uses: actions/checkout@v2

- name: Allow multiarch
run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

- name: Build VM & Launcher
run: |
docker run -v ${PWD}:/sources -t totalcross/${{ matrix.project }}:v1.0.0 bash -c "cmake /sources/TotalCrossVM -DCMAKE_BUILD_TYPE=Release -G Ninja && ninja"

build-sdk-and-android:
name: Build `${{ matrix.project.name }}`
runs-on: ubuntu-18.04
container:
image: docker://fabernovel/android:api-29-ndk-v1.2.0
strategy:
fail-fast: false
matrix:
project:
- name: SDK
command: ./gradlew dist -x test --stacktrace
directory: TotalCrossSDK
- name: Android
command: ./gradlew assembleRelease -x test --stacktrace
directory: TotalCrossVM/android

steps:
- name: Checkout
uses: actions/checkout@v2

- name: Setup JDK 11
uses: actions/setup-java@v1
with:
java-version: 11

- name: Cache Gradle packages
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle

- name: Build ${{ matrix.project.name }}
working-directory: ${{ matrix.project.directory }}
run: ${{ matrix.project.command }}
build:
uses: ./.github/workflows/build.yml
secrets: inherit
Loading
Loading