Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
7d904ee
Add experimental EPUB decoration positioning (#665)
ddfreiling Nov 6, 2025
8bd799d
3.5.0 (#667)
mickael-menu Nov 6, 2025
0ec329d
Add `DirectionalNavigationAdapter.onNavigation` (#669)
mickael-menu Nov 10, 2025
19d03a4
Add `DragPointerObserver` (#670)
mickael-menu Nov 10, 2025
35b5072
Allow async `onCreatePublication` callbacks (#673)
smoores-dev Nov 24, 2025
bd3b3f0
Fix crash when attempting to LCP decrypt an unencrypted resource (#674)
mickael-menu Nov 28, 2025
db12e1e
Fix FXL auto spread settings after rotating the device (#675)
mickael-menu Dec 1, 2025
fae59aa
PDF: Fix zoom in paginated spread mode and add swipe gestures (#678)
mickael-menu Dec 2, 2025
e49966e
Add PDF `fit` preference (#680)
mickael-menu Dec 4, 2025
c1fd5b5
Add FXL EPUB `fit` preference (#681)
mickael-menu Dec 5, 2025
b224f4d
Add navigator UI tests (#683)
mickael-menu Dec 9, 2025
e6b7798
Rewrite OPDS catalogs to use SwiftUI (#671)
stevenzeck Dec 17, 2025
5634c87
3.6.0 (#685)
mickael-menu Dec 17, 2025
e1b85c0
Update file headers for 2026 (#689)
mickael-menu Jan 7, 2026
24fad0d
Update outdated documentation (#690)
mickael-menu Jan 7, 2026
59c1f62
Parse `ComicInfo.xml` metadata in Comic Books archives (#691)
mickael-menu Jan 9, 2026
dad9438
Support for Divina in the EPUB navigator (#692)
mickael-menu Jan 12, 2026
2976804
Optimize sniffing the `Format` of `Container` resources (#693)
mickael-menu Jan 12, 2026
a44f085
Add support for images in EPUB reading order (#695)
mickael-menu Jan 15, 2026
80b581e
Fix custom EPUB reading order
lbeus Jan 15, 2026
8327f0b
Add `offsetFirstPage` preference for fixed-layout EPUBs (#697)
mickael-menu Jan 19, 2026
4a4b7f9
Remove title inference based on folder names for raw archives (#698)
mickael-menu Jan 20, 2026
d56f940
Add support for JXL (#703)
mickael-menu Jan 21, 2026
ba12d2f
Fix potential race condition in the EPUB navigator (#704)
mickael-menu Jan 27, 2026
0da8939
Redesign LCP dialog with shared localized strings (#706)
mickael-menu Jan 27, 2026
1e423c9
Fix build warnings (#707)
mickael-menu Jan 27, 2026
4ce8051
Generate `AccessibilityDisplayString` from `thorium-locales` (#708)
mickael-menu Jan 28, 2026
2edd431
Improve standalone audio files' metadata (#709)
mickael-menu Jan 28, 2026
566d13d
Add fallback cover from reading order and refactor default cover serv…
mickael-menu Jan 29, 2026
907f35b
3.7.0 (#711)
mickael-menu Feb 4, 2026
bc32270
Add Keychain-based LCP repositories, deprecate SQLite adapter (#713)
mickael-menu Feb 5, 2026
146d1b3
Fix default FXL spread positions (#714)
mickael-menu Feb 10, 2026
6567cdf
Fix consuming LCP `print` rights (#717)
mickael-menu Feb 11, 2026
800ae57
Fix documentation issues (#718)
mickael-menu Feb 12, 2026
ab5ff65
Deprecate the CBZ Navigator (#720)
mickael-menu Feb 13, 2026
d1a9ada
Fix `ResourceProperties.mediaType` encoding (#719)
lbeus Feb 16, 2026
f00ba11
Fix LCP localization fallback and add Keychain `clear` API (#722)
mickael-menu Feb 16, 2026
5208b52
Remove the HTTP server from the EPUB navigator (#723)
mickael-menu Feb 17, 2026
a20bbaf
Add Guided Navigation models (#724)
mickael-menu Feb 18, 2026
b97f7b1
Fix decorations broken for EPUB resources with `.xml` extension (#726)
mickael-menu Feb 18, 2026
decacb6
Parse EPUB Media Overlays metadata into `EPUBMediaOverlay` (#727)
mickael-menu Feb 18, 2026
db110b2
Add SMIL Media Overlays parser (#730)
mickael-menu Feb 19, 2026
17ddf6e
Fix injecting Readium CSS even if publication has no `layout` propert…
ddfreiling Feb 19, 2026
75eebf4
Parse SMIL as alternate of reading order items (#732)
mickael-menu Feb 19, 2026
353cd46
Add a Publication Service to retrieve Guided Navigation Documents (#733)
mickael-menu Feb 20, 2026
43e377a
Automate CocoaPods podspec generation (#734)
mickael-menu Feb 24, 2026
bf4faf3
Refactor `ReadResult` decoding for Swift 6 (#735)
mickael-menu Feb 24, 2026
3878f7d
Create DocC based documentation site (#716)
stevenzeck Feb 25, 2026
c0430d6
Merge branch 'develop' into readium-css-v2-update
stevenzeck Mar 2, 2026
51022b6
Update CSS to v2
stevenzeck Mar 2, 2026
39616c9
Run format
stevenzeck Mar 2, 2026
e8b6012
Fix tests
stevenzeck Mar 2, 2026
617f931
Add `JSONValue` and `UncheckedSendable` (#736)
stevenzeck Mar 4, 2026
d866ff2
Improve wrapping of system errors (#741)
mickael-menu Mar 4, 2026
25b461c
Add Highlights and Decorations user guides (#743)
mickael-menu Mar 10, 2026
f7d10d2
3.8.0 (#744)
mickael-menu Mar 10, 2026
6950353
Merge branch 'develop' into readium-css-v2-update
stevenzeck Mar 10, 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
  •  
  •  
  •  
50 changes: 43 additions & 7 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ on:

env:
platform: ${{ 'iOS Simulator' }}
device: ${{ 'iPhone SE (3rd generation)' }}
device: ${{ 'iPhone 16 Pro' }}
commit_sha: ${{ github.sha }}
DEVELOPER_DIR: /Applications/Xcode_16.2.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_16.4.app/Contents/Developer

jobs:
build:
name: Build
runs-on: macos-14
runs-on: macos-15
if: ${{ !github.event.pull_request.draft }}
env:
scheme: ${{ 'Readium-Package' }}
Expand All @@ -26,11 +26,19 @@ jobs:
run: |
brew update
brew install xcodegen
# Preload the list of simulator for xcodebuild. The workflow is flaky without it.
xcrun simctl list
- name: Check Carthage project
run: |
# Check that the Carthage project is up to date.
make carthage-project
git diff --exit-code Support/Carthage/Readium.xcodeproj
- name: Check CocoaPods podspecs
run: |
# Check that the podspecs are up to date.
make podspecs
git diff --exit-code Support/CocoaPods/
if git ls-files --others --exclude-standard Support/CocoaPods/ | grep -q .; then echo "Untracked podspec files found. Run 'make podspecs' and commit the result."; exit 1; fi
- name: Build
run: |
set -eo pipefail
Expand All @@ -39,10 +47,32 @@ jobs:
run: |
set -eo pipefail
xcodebuild test-without-building -scheme "$scheme" -destination "platform=$platform,name=$device" | if command -v xcpretty &> /dev/null; then xcpretty; else cat; fi
- name: Print Swift package versions
run: |
jq -r '.pins[] | "\(.identity): \(.state.version)"' Package.resolved

# navigator-ui-tests:
# name: Navigator UI Tests
# runs-on: macos-15
# if: ${{ !github.event.pull_request.draft }}
# steps:
# - name: Checkout
# uses: actions/checkout@v3
# - name: Install dependencies
# run: |
# brew update
# brew install xcodegen
# # Preload the list of simulator for xcodebuild. The workflow is flaky without it.
# xcrun simctl list
# - name: Test
# run: |
# set -eo pipefail
# make navigator-ui-tests-project
# xcodebuild test -project Tests/NavigatorTests/UITests/NavigatorUITests.xcodeproj -scheme NavigatorTestHost -destination "platform=$platform,name=$device" | if command -v xcpretty &> /dev/null; then xcpretty; else cat; fi

lint:
name: Lint
runs-on: macos-14
runs-on: macos-15
if: ${{ !github.event.pull_request.draft }}
env:
scripts: ${{ 'Sources/Navigator/EPUB/Scripts' }}
Expand Down Expand Up @@ -76,7 +106,7 @@ jobs:

int-dev:
name: Integration (Local)
runs-on: macos-14
runs-on: macos-15
if: ${{ !github.event.pull_request.draft }}
defaults:
run:
Expand All @@ -89,6 +119,8 @@ jobs:
run: |
brew update
brew install xcodegen
# Preload the list of simulator for xcodebuild. The workflow is flaky without it.
xcrun simctl list
- name: Generate project
run: make dev lcp=${{ secrets.LCP_URL_SPM }}
- name: Build
Expand All @@ -98,7 +130,7 @@ jobs:

int-spm:
name: Integration (Swift Package Manager)
runs-on: macos-14
runs-on: macos-15
if: ${{ !github.event.pull_request.draft }}
defaults:
run:
Expand All @@ -117,6 +149,8 @@ jobs:
run: |
brew update
brew install xcodegen
# Preload the list of simulator for xcodebuild. The workflow is flaky without it.
xcrun simctl list
- name: Generate project
run: make spm lcp=${{ secrets.LCP_URL_SPM }} commit=$commit_sha
- name: Build
Expand All @@ -126,7 +160,7 @@ jobs:

int-carthage:
name: Integration (Carthage)
runs-on: macos-14
runs-on: macos-15
if: ${{ !github.event.pull_request.draft && github.ref == 'refs/heads/main' }}
defaults:
run:
Expand All @@ -145,6 +179,8 @@ jobs:
run: |
brew update
brew install xcodegen
# Preload the list of simulator for xcodebuild. The workflow is flaky without it.
xcrun simctl list
- name: Generate project
run: make carthage lcp=${{ secrets.LCP_URL_CARTHAGE }} commit=$commit_sha
- name: Build
Expand Down
78 changes: 78 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Documentation

on:
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: write

# Allow only one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build-and-deploy:
runs-on: macos-15
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Determine Version
id: versioning
run: |
git fetch --tags --force
VERSION=$(git describe --tag --match "[0-9]*" --abbrev=0)
echo "READIUM_VERSION=$VERSION" >> $GITHUB_OUTPUT
if [[ $GITHUB_REF == refs/tags/* ]]; then
echo "folder=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
else
echo "folder=latest" >> $GITHUB_OUTPUT
fi

- name: Generate Documentation
run: |
chmod +x BuildTools/Scripts/generate-docs.sh
./BuildTools/Scripts/generate-docs.sh ${{ steps.versioning.outputs.READIUM_VERSION }}
./BuildTools/Scripts/generate-docs.sh latest

- name: Setup Root Redirect
run: |
cat <<EOF > docs-site/swift-toolkit/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=./latest/documentation/readium">
<script>window.location.replace("./latest/documentation/readium");</script>
</head>
<body><p>Redirecting to <a href="./latest/documentation/readium">latest documentation</a>...</p></body>
</html>
EOF

- name: Deploy Versioned Folder 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: docs-site/swift-toolkit/${{ steps.versioning.outputs.READIUM_VERSION }}
target-folder: ${{ steps.versioning.outputs.READIUM_VERSION }}
clean: true

- name: Deploy Latest Folder 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: docs-site/swift-toolkit/latest
target-folder: latest
clean: true

- name: Deploy Root Redirect 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: docs-site/swift-toolkit
target-folder: .
clean: false
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,10 @@ playground.xcworkspace
## IntelliJ
out/

## Claude Code
.claude
CLAUDE.md

# DocC generation
.build-docs
docs-site
2 changes: 1 addition & 1 deletion BuildTools/Empty.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//
// Copyright 2025 Readium Foundation. All rights reserved.
// Copyright 2026 Readium Foundation. All rights reserved.
// Use of this source code is governed by the BSD-style license
// available in the top-level LICENSE file of the project.
//
4 changes: 2 additions & 2 deletions BuildTools/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 8 additions & 2 deletions BuildTools/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,13 @@ let package = Package(
name: "BuildTools",
platforms: [.macOS(.v10_11)],
dependencies: [
.package(url: "https://github.com/nicklockwood/SwiftFormat", from: "0.51.6"),
.package(url: "https://github.com/nicklockwood/SwiftFormat", from: "0.59.1"),
],
targets: [.target(name: "BuildTools", path: "")]
targets: [
.target(name: "BuildTools", path: "", exclude: ["Sources"]),
.target(
name: "GeneratePodspecs",
path: "Sources/GeneratePodspecs"
),
]
)
Loading