From d98d055d432c3f35996466dd9be45aafc60070a0 Mon Sep 17 00:00:00 2001 From: Norbert Hartl Date: Fri, 9 Oct 2026 09:41:30 +0200 Subject: [PATCH 1/3] added github actions --- .github/workflows/build.yml | 31 +++++++++++++++++++++++++++++++ .smalltalk.ston | 9 +++++++++ 2 files changed, 40 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .smalltalk.ston diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e9535e8 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,31 @@ +name: CI + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the development branch +on: + pull_request: + types: [assigned, opened, synchronize, reopened] + + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + pharoversion: [ Pharo64-alpha, Pharo64-13, Pharo64-12 ] + name: ${{ matrix.pharoversion }} + steps: + - uses: actions/checkout@v2 + - uses: hpi-swa/setup-smalltalkCI@v1 + id: smalltalkci + with: + smalltalk-version: ${{ matrix.pharoversion }} + - run: smalltalkci -s ${{ steps.smalltalkci.outputs.smalltalk-version}} + shell: bash + timeout-minutes: 15 diff --git a/.smalltalk.ston b/.smalltalk.ston new file mode 100644 index 0000000..96410b5 --- /dev/null +++ b/.smalltalk.ston @@ -0,0 +1,9 @@ +SmalltalkCISpec { + #loading : [ + SCIMetacelloLoadSpec { + #baseline : 'RecurringEvents', + #directory : 'source', + #platforms : [ #pharo ] + } + ] +} From 8bbed85172f8ad2e32e7048316f13b5712d1ca06 Mon Sep 17 00:00:00 2001 From: Norbert Hartl Date: Fri, 9 Oct 2026 09:42:21 +0200 Subject: [PATCH 2/3] better pharo14 than alpha --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9535e8..d42e775 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - pharoversion: [ Pharo64-alpha, Pharo64-13, Pharo64-12 ] + pharoversion: [ Pharo64-14, Pharo64-13, Pharo64-12 ] name: ${{ matrix.pharoversion }} steps: - uses: actions/checkout@v2 From 0e643f0e9d76f1ab782d2e67b5b123d95ca3b71c Mon Sep 17 00:00:00 2001 From: Norbert Hartl Date: Fri, 9 Oct 2026 09:44:14 +0200 Subject: [PATCH 3/3] Serialize temporal expressions with STONJSON instead of NeoJSON NeoJSON is not a declared dependency, so asJsonString and fromJsonString: failed with an undeclared variable in images without it. STONJSON ships with Pharo and produces the same structure. Co-Authored-By: Claude Opus 5.5 --- source/RecurringEvents-Core/RETemporalExpression.class.st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/RecurringEvents-Core/RETemporalExpression.class.st b/source/RecurringEvents-Core/RETemporalExpression.class.st index a7cba23..afd236a 100644 --- a/source/RecurringEvents-Core/RETemporalExpression.class.st +++ b/source/RecurringEvents-Core/RETemporalExpression.class.st @@ -161,7 +161,7 @@ RETemporalExpression class >> fromJsonDict: aDict [ { #category : 'json' } RETemporalExpression class >> fromJsonString: aString [ - ^ self fromJsonDict: (NeoJSONReader fromString: aString) + ^ self fromJsonDict: (STONJSON fromString: aString) ] { #category : 'rrule' } @@ -509,7 +509,7 @@ RETemporalExpression >> asJsonDict [ { #category : 'json' } RETemporalExpression >> asJsonString [ - ^ NeoJSONWriter toString: self asJsonDict + ^ STONJSON toString: self asJsonDict ] { #category : 'rrule' }