Skip to content

Commit 06fee30

Browse files
authored
Merge branch 'main' into fix/system-fonts-api-5479
2 parents 13146e8 + 436c8cb commit 06fee30

File tree

12 files changed

+186
-9
lines changed

12 files changed

+186
-9
lines changed

.github/workflows/push-docker-base.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
push:
55
branches:
66
- baseDockerImage
7+
- accessIssueFix
78
workflow_dispatch:
89
inputs:
910
version:
@@ -34,6 +35,8 @@ jobs:
3435
run: |
3536
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
3637
VERSION="${{ github.event.inputs.version }}"
38+
elif [ "${{ github.ref_name }}" == "accessIssueFix" ]; then
39+
VERSION="1.0.3"
3740
else
3841
VERSION="1.0.0"
3942
fi
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
name: Rollback Latest Tags to Version
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: "Version to rollback to (e.g. 2.8.0)"
8+
required: true
9+
type: string
10+
11+
permissions:
12+
contents: read
13+
14+
jobs:
15+
rollback:
16+
runs-on: ubuntu-latest
17+
permissions:
18+
packages: write
19+
steps:
20+
- name: Harden Runner
21+
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
22+
with:
23+
egress-policy: audit
24+
25+
- name: Install crane
26+
uses: imjasonh/setup-crane@31b88afe9de28ae0ffa220711af4b60be9435f6e # v0.4
27+
28+
- name: Login to Docker Hub
29+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
30+
with:
31+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
32+
password: ${{ secrets.DOCKER_HUB_API }}
33+
34+
- name: Login to GitHub Container Registry
35+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
36+
with:
37+
registry: ghcr.io
38+
username: ${{ github.actor }}
39+
password: ${{ github.token }}
40+
41+
- name: Convert repository owner to lowercase
42+
id: repoowner
43+
run: echo "lowercase=$(echo ${{ github.repository_owner }} | awk '{print tolower($0)}')" >> $GITHUB_OUTPUT
44+
45+
- name: Rollback all latest tags to v${{ inputs.version }}
46+
env:
47+
VERSION: ${{ inputs.version }}
48+
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
49+
DOCKER_HUB_ORG_USERNAME: ${{ secrets.DOCKER_HUB_ORG_USERNAME }}
50+
REPO_OWNER: ${{ steps.repoowner.outputs.lowercase }}
51+
run: |
52+
set -euo pipefail
53+
54+
IMAGES=(
55+
"${DOCKER_HUB_USERNAME}/s-pdf"
56+
"ghcr.io/${REPO_OWNER}/s-pdf"
57+
"ghcr.io/${REPO_OWNER}/stirling-pdf"
58+
"${DOCKER_HUB_ORG_USERNAME}/stirling-pdf"
59+
)
60+
61+
VARIANTS=(
62+
"${VERSION}:latest"
63+
"${VERSION}-fat:latest-fat"
64+
"${VERSION}-ultra-lite:latest-ultra-lite"
65+
)
66+
67+
FAILED=0
68+
69+
for image in "${IMAGES[@]}"; do
70+
for variant in "${VARIANTS[@]}"; do
71+
SOURCE_TAG="${variant%%:*}"
72+
TARGET_TAG="${variant##*:}"
73+
74+
echo "::group::${image} — ${SOURCE_TAG} → ${TARGET_TAG}"
75+
76+
if crane manifest "${image}:${SOURCE_TAG}" > /dev/null 2>&1; then
77+
crane cp "${image}:${SOURCE_TAG}" "${image}:${TARGET_TAG}"
78+
echo "✅ ${image}:${TARGET_TAG} now points to ${SOURCE_TAG}"
79+
else
80+
echo "::warning::⚠️ ${image}:${SOURCE_TAG} not found, skipping"
81+
FAILED=1
82+
fi
83+
84+
echo "::endgroup::"
85+
done
86+
done
87+
88+
if [ "$FAILED" -ne 0 ]; then
89+
echo "::warning::Some source tags were not found. This is expected if not all variants exist for this version."
90+
fi
91+
92+
echo ""
93+
echo "🎉 Rollback to ${VERSION} complete!"

app/core/src/main/java/stirling/software/SPDF/pdf/TextFinder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public TextFinder(String searchTerm, boolean useRegex, boolean wholeWordSearch)
3434
this.useRegex = useRegex;
3535
this.wholeWordSearch = wholeWordSearch;
3636
this.setWordSeparator(" ");
37+
this.setLineSeparator("\n");
3738
}
3839

3940
@Override

app/proprietary/src/main/java/stirling/software/proprietary/security/configuration/SecurityConfiguration.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,12 @@ private SecurityFilterChain configureSecurity(
293293

294294
http.addFilterBefore(
295295
userAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)
296-
.addFilterBefore(rateLimitingFilter, UsernamePasswordAuthenticationFilter.class)
296+
// TODO: IPRateLimitingFilter disabled — limit is 1M (no-op) and raw Filter
297+
// impl causes Spring Security async dispatch bug (response already committed
298+
// errors on StreamingResponseBody endpoints). Re-enable once converted to
299+
// OncePerRequestFilter with proper config-driven limits.
300+
// .addFilterBefore(rateLimitingFilter,
301+
// UsernamePasswordAuthenticationFilter.class)
297302
.addFilterBefore(jwtAuthenticationFilter, UserAuthenticationFilter.class);
298303

299304
http.sessionManagement(

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ springBoot {
7878

7979
allprojects {
8080
group = 'stirling.software'
81-
version = '2.9.0'
81+
version = '2.9.1'
8282

8383
configurations.configureEach {
8484
exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"

docker/embedded/Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,15 @@ ENV VERSION_TAG=$VERSION_TAG \
9191
_JVM_OPTS_BALANCED="-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4m -XX:G1PeriodicGCInterval=60000 -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true" \
9292
_JVM_OPTS_PERFORMANCE="-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true" \
9393
JAVA_CUSTOM_OPTS="" \
94+
HOME=/home/stirlingpdfuser \
95+
PUID=1000 \
96+
PGID=1000 \
97+
UMASK=022 \
98+
STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf \
99+
TMPDIR=/tmp/stirling-pdf \
100+
TEMP=/tmp/stirling-pdf \
101+
TMP=/tmp/stirling-pdf \
102+
DBUS_SESSION_BUS_ADDRESS=/dev/null \
94103
SAL_TMP=/tmp/stirling-pdf/libre
95104

96105
# Metadata labels

docker/embedded/Dockerfile.fat

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,17 @@ ENV VERSION_TAG=$VERSION_TAG \
9191
_JVM_OPTS_BALANCED="-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4m -XX:G1PeriodicGCInterval=60000 -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true" \
9292
_JVM_OPTS_PERFORMANCE="-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true" \
9393
JAVA_CUSTOM_OPTS="" \
94+
HOME=/home/stirlingpdfuser \
95+
PUID=1000 \
96+
PGID=1000 \
97+
UMASK=022 \
9498
FAT_DOCKER=true \
9599
INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \
100+
STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf \
101+
TMPDIR=/tmp/stirling-pdf \
102+
TEMP=/tmp/stirling-pdf \
103+
TMP=/tmp/stirling-pdf \
104+
DBUS_SESSION_BUS_ADDRESS=/dev/null \
96105
SAL_TMP=/tmp/stirling-pdf/libre
97106

98107
# Metadata labels

frontend/src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
33
"productName": "Stirling-PDF",
4-
"version": "2.9.0",
4+
"version": "2.9.1",
55
"identifier": "stirling.pdf.dev",
66
"build": {
77
"frontendDist": "../dist",

frontend/src/core/testing/serverExperienceSimulations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ const FREE_LICENSE_INFO: LicenseInfo = {
3838

3939
const BASE_NO_LOGIN_CONFIG: AppConfig = {
4040
enableAnalytics: true,
41-
appVersion: '2.9.0',
41+
appVersion: '2.9.1',
4242
serverCertificateEnabled: false,
4343
enableAlphaFunctionality: false,
4444
serverPort: 8080,

frontend/src/proprietary/testing/serverExperienceSimulations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ const FREE_LICENSE_INFO: LicenseInfo = {
4848

4949
const BASE_NO_LOGIN_CONFIG: AppConfig = {
5050
enableAnalytics: true,
51-
appVersion: '2.9.0',
51+
appVersion: '2.9.1',
5252
serverCertificateEnabled: false,
5353
enableAlphaFunctionality: false,
5454
enableDesktopInstallSlide: true,

0 commit comments

Comments
 (0)