From bdf408e63b6b4b409a3169712aaf06b058fcacb5 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 21 Oct 2026 02:24:06 +0000 Subject: [PATCH 1/4] Weekly Dependabot updates for the actions CI uses Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01XfwUCp8GqHWUdTK7EhZCT5 --- .github/dependabot.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..bb8da7f --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +# Weekly updates for the actions CI uses. Chek Reader is pinned in the Xcode +# project, which Dependabot can't update, so its version moves by hand. +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly From 16df10e461f8f17cff2d757dfd9a78f81e671878 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 21 Oct 2026 02:25:11 +0000 Subject: [PATCH 2/4] Pin Chek Reader to its 0.1.0 release instead of main Any reader push could break the app's next build, and an App Store build wasn't reproducible. The project now takes 0.1.0 up to the next minor, and Package.resolved records that tag's commit. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01XfwUCp8GqHWUdTK7EhZCT5 --- README.md | 10 +++++++--- apple/Chek.xcodeproj/project.pbxproj | 4 ++-- .../xcshareddata/swiftpm/Package.resolved | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9999a75..4a49168 100644 --- a/README.md +++ b/README.md @@ -51,9 +51,13 @@ xcodebuild test -project apple/Chek.xcodeproj -scheme Chek \ -destination 'platform=iOS Simulator,name=iPhone 18 Pro' CODE_SIGNING_ALLOWED=NO ``` -Chek Reader comes from its `main` branch through Swift Package Manager, so -**File → Packages → Update to Latest Package Versions** picks up its newest -changes. +Chek Reader comes through Swift Package Manager, pinned to a release +(`0.1.0` up to the next minor), so a build is the same today and next month. +To take a new reader release, raise the version in the project's package +dependency and let **File → Packages → Update to Latest Package Versions** +rewrite `Package.resolved`. To work against unreleased reader changes, add +the package locally with **File → Add Package Dependencies → Add Local**, +which overrides the pinned one until you remove it. ## Repository layout diff --git a/apple/Chek.xcodeproj/project.pbxproj b/apple/Chek.xcodeproj/project.pbxproj index 45ba6a3..5352bd1 100644 --- a/apple/Chek.xcodeproj/project.pbxproj +++ b/apple/Chek.xcodeproj/project.pbxproj @@ -428,8 +428,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/readchek/chek-reader"; requirement = { - branch = main; - kind = branch; + kind = upToNextMinorVersion; + minimumVersion = 0.1.0; }; }; /* End XCRemoteSwiftPackageReference section */ diff --git a/apple/Chek.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/apple/Chek.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 51f0ce8..a063224 100644 --- a/apple/Chek.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/apple/Chek.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -5,8 +5,8 @@ "kind": "remoteSourceControl", "location": "https://github.com/readchek/chek-reader", "state": { - "branch": "main", - "revision": "5bac9e855419ae4cf04a1baf14a431c68a0d7499" + "revision": "62271bb6899e5a95d695f4442a8551a7a9898404", + "version": "0.1.0" } } ], From 53d4f1c536a0cd6dcfe17156a73099612d52f682 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 21 Oct 2026 03:28:22 +0000 Subject: [PATCH 3/4] chore(l10n): fill the String Catalog and localize the Info.plist Localizable.xcstrings was empty, so nothing in the app could be translated and there was no record of its strings. It now lists every key the code uses, with translator comments on the ones that are ambiguous on their own, and InfoPlist.xcstrings covers the local network usage description. Xcode keeps both up to date from here. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01XfwUCp8GqHWUdTK7EhZCT5 --- apple/Chek/InfoPlist.xcstrings | 18 ++ apple/Chek/Localizable.xcstrings | 342 ++++++++++++++++++++++++++++++- 2 files changed, 356 insertions(+), 4 deletions(-) create mode 100644 apple/Chek/InfoPlist.xcstrings diff --git a/apple/Chek/InfoPlist.xcstrings b/apple/Chek/InfoPlist.xcstrings new file mode 100644 index 0000000..7504fe0 --- /dev/null +++ b/apple/Chek/InfoPlist.xcstrings @@ -0,0 +1,18 @@ +{ + "sourceLanguage": "en", + "strings": { + "NSLocalNetworkUsageDescription": { + "comment": "Shown when iOS asks the reader to let Chek use the local network", + "extractionState": "extracted_with_value", + "localizations": { + "en": { + "stringUnit": { + "state": "new", + "value": "Chek connects to the library servers you add on your home network." + } + } + } + } + }, + "version": "1.0" +} diff --git a/apple/Chek/Localizable.xcstrings b/apple/Chek/Localizable.xcstrings index d1fe347..8f14dbe 100644 --- a/apple/Chek/Localizable.xcstrings +++ b/apple/Chek/Localizable.xcstrings @@ -1,7 +1,341 @@ { - "sourceLanguage" : "en", - "strings" : { - + "sourceLanguage": "en", + "strings": { + "%lld chapters": {}, + "%lld new chapters are out.": {}, + "%lld of %lld": { + "comment": "The reading position and the number of positions, like a page number: 12 of 300" + }, + "1 chapter": {}, + "A friendly name, such as “Home” or “Office”, for telling servers apart.": {}, + "A new chapter is out.": {}, + "Aa": {}, + "About": {}, + "Account": { + "comment": "Section title for a sign-in" + }, + "Actions": {}, + "Add Books": {}, + "Add EPUB, PDF, comics, MOBI, FictionBook, text and Markdown files from Files, or drop them here. They stay on this device.": {}, + "Add books and comics from Files, or connect a Chek server to read from it.": {}, + "Adding %lld books": {}, + "Address": {}, + "All": {}, + "All Unread": {}, + "Another device saved a different place.": {}, + "Appearance": {}, + "Author": {}, + "Automatic": { + "comment": "Lets the file or source decide" + }, + "Automatic scrolls webtoons and other tall-strip comics, and turns pages for the rest.": {}, + "Books": {}, + "Books you finish, or mark as finished, collect here.": {}, + "Books, Comics and Authors": {}, + "Browse": { + "comment": "Tab and section for servers and sources" + }, + "Cancel": {}, + "Cancel Download": {}, + "Cancelled": {}, + "Change in Settings": {}, + "Chapter": {}, + "Chapter %lld": { + "comment": "A chapter known only by its number" + }, + "Chapters": {}, + "Check the address, and that the server is running.": {}, + "Check your connection and the server's address.": {}, + "Check your connection and try again.": {}, + "Chek Demo": {}, + "Chek can't read %@.": {}, + "Chek checks the series you follow a few times a day and tells you when a chapter is out.": {}, + "Chek is the successor to Chibi Manga.": {}, + "Chek signs out and forgets your places in its publications on this device. They stay saved on the server.": {}, + "Clear Server Books and Covers": {}, + "Close": {}, + "Comic Layout": {}, + "Comics": {}, + "Compact": {}, + "Completed": {}, + "Connect": {}, + "Connect a Chek server to read from it without downloading first. Your place follows you between devices.": {}, + "Connect a Server": {}, + "Connect a server of your own to install sources.": {}, + "Contents": {}, + "Continue": { + "comment": "Shelf of books being read" + }, + "Continue %@": { + "comment": "Button that opens a book at the chapter or page named" + }, + "Couldn't check for the next chapter": {}, + "Couldn't download %@.": {}, + "Couldn't download this publication.": {}, + "Couldn't find a Chek server there.": {}, + "Couldn't load %@.": {}, + "Couldn't open %@.": {}, + "Couldn't reach the server.": {}, + "Couldn't start the demo.": {}, + "Covers": {}, + "Curl": { + "comment": "A page turn that curls over like paper" + }, + "Current chapter": {}, + "Dark": {}, + "Date Added": {}, + "Demo": { + "comment": "Badge on the shared demo server account" + }, + "Deselect All": {}, + "Done": {}, + "Download": {}, + "Download All": {}, + "Download ^[%lld Chapter](inflect: true)?": {}, + "Download ^[%lld Comic](inflect: true)?": {}, + "Downloaded": {}, + "Downloaded chapters and comics can be downloaded again from their series.": {}, + "Downloading": {}, + "Downloads": {}, + "Enter an address such as chek.example.com.": {}, + "Exit": {}, + "Exit the Demo": {}, + "Exit the demo": {}, + "Find books and comics on this device, your servers and their sources by title, series or author.": {}, + "Finished": {}, + "Following": { + "comment": "Series the reader follows for new chapters" + }, + "Font": {}, + "For this series. Manga reads right to left; Automatic follows what the file or source says.": {}, + "Get": {}, + "Get Sources": {}, + "Go There": {}, + "Grid": { + "comment": "Library layout: covers in a grid" + }, + "Installed": { + "comment": "Badge on an extension already on the server" + }, + "It doesn't match what its repository lists. Try again after the repository updates.": {}, + "It has no pages to download.": {}, + "It isn't in a format Chek reads.": {}, + "It may be damaged or not a format Chek reads. Removing it from the library leaves the original where you got it.": {}, + "It may be damaged.": {}, + "It's larger than Chek can open on this device.": {}, + "It's protected with DRM, which Chek doesn't open.": {}, + "Its extension may need an update, or may have been removed or turned off. Check Manage Sources.": {}, + "Its file and your place in it are deleted from this device.": {}, + "Its site may be down or slow. Try again in a moment.": {}, + "Larger Text": {}, + "Layout": {}, + "Left to Right": {}, + "Libraries": {}, + "Library": { + "comment": "Tab for the books on this device" + }, + "Light": {}, + "Line Spacing": {}, + "List": { + "comment": "Library layout: one row per book" + }, + "Make sure the address points at a Chek server.": {}, + "Manage Sources": {}, + "Margins": {}, + "Mark All as Seen": {}, + "Mark Previous as Read": {}, + "Mark as Finished": {}, + "Mark as Read": {}, + "Mark as Unread": {}, + "Name": { + "comment": "A server's friendly name, or the account's user name" + }, + "Name in Chek (optional)": {}, + "Narrow": {}, + "New": { + "comment": "Badge on a book or chapter not read yet" + }, + "New Chapter Alerts": {}, + "New York": {}, + "New on %@": {}, + "Newest First": {}, + "Next %lld Unread": { + "comment": "Button that downloads the next unread chapters" + }, + "Next Chapter": {}, + "No Books Yet": {}, + "No Chapters to Read": {}, + "No Contents": {}, + "No Extensions": {}, + "No Servers": {}, + "No repository the server can read offers these now, so they can't be updated, only removed.": {}, + "None shared with you yet. Ask the admin of %@ for access to a library.": {}, + "Not Allowed": {}, + "Not Allowed on This Server": {}, + "Not Now": {}, + "Not Yet Asked": {}, + "Not read yet. Pull down to check it.": {}, + "Nothing Finished Yet": {}, + "Nothing New": {}, + "Nothing to Read Yet": {}, + "OK": {}, + "Off": {}, + "Oldest First": {}, + "On": {}, + "On Hiatus": {}, + "On This Device": {}, + "Ongoing": {}, + "Opening stopped.": {}, + "Order": {}, + "Original": { + "comment": "The publication's own font, colors, line spacing or reading direction" + }, + "Page Turn": {}, + "Pages": { + "comment": "Comic layout: one page at a time" + }, + "Password": {}, + "Position": {}, + "Privacy Policy": {}, + "Read": { + "comment": "Button on a book that opens it" + }, + "Reading": {}, + "Reading Direction": {}, + "Reading Now": {}, + "Reading tips. Tap to dismiss.": {}, + "Recent": { + "comment": "Library order: last read first" + }, + "Recently Added": {}, + "Regular": {}, + "Relaxed": {}, + "Remove": {}, + "Remove %@?": {}, + "Remove All Downloads?": {}, + "Remove All Downloads…": {}, + "Remove Download": {}, + "Remove Server": {}, + "Remove This Book?": {}, + "Remove ^[%lld Book](inflect: true)?": {}, + "Remove ^[%lld Download](inflect: true)": {}, + "Remove from Library": {}, + "Remove “%@”": {}, + "Remove…": {}, + "Removing the server forgets your places in its publications on this device, and deletes what you downloaded from it. Your places stay saved on the server.": {}, + "Rename": {}, + "Rename Server": {}, + "Report a Problem": {}, + "Repositories": {}, + "Reset to Original": {}, + "Right to Left": {}, + "San Francisco": {}, + "Save": {}, + "Saved %@.": {}, + "Search": {}, + "Search %@": { + "comment": "Search field prompt naming the library or source searched" + }, + "Search Everything": {}, + "Select All": {}, + "Select Books": {}, + "Sepia": {}, + "Server": { + "comment": "Section title for a server's address and name" + }, + "Server Books": {}, + "Server Removed": {}, + "Server books and covers come back as you read; your library, places and downloads stay until you remove them.": {}, + "Servers": {}, + "Settings": {}, + "Share": {}, + "Show": {}, + "Sign In": {}, + "Sign In to %@": {}, + "Sign Out": {}, + "Sign in again to keep reading from it.": {}, + "Sign in to %@ again to read from it.": {}, + "Sign in to keep reading.": {}, + "Signed Out": {}, + "Signed out of %@": {}, + "Slide": { + "comment": "A page turn where the next page slides in beside this one" + }, + "Smaller Text": {}, + "Sort By": {}, + "Sources": {}, + "Sources run on the server, which reaches only the sites each lists, so reading from them works the same on all your devices.": {}, + "Started": {}, + "Stay Here": {}, + "Storage": {}, + "Tap the edges to turn pages and the middle for controls. Swipe to turn too.": {}, + "Text": { + "comment": "Plain text files, and the text settings section in the reader" + }, + "That doesn't look like a server address.": {}, + "The demo account can't change its sources.": {}, + "The demo ends on its own when Chek is closed. Exiting now forgets it straight away.": {}, + "The name is only used in Chek on this device.": {}, + "The name or password is wrong.": {}, + "The repository couldn't be reached.": {}, + "The server had a problem (%lld).": {}, + "The server's admin hasn't allowed this repository.": {}, + "The server's answer didn't make sense.": {}, + "The server's repositories don't offer any yet.": {}, + "The source didn't answer.": {}, + "The source didn't list any. It may not be out yet.": {}, + "Their files and your places in them are deleted from this device.": {}, + "They download one after another while Chek is open, and stay on this device until you remove them.": {}, + "This File Can't Be Opened": {}, + "This chapter has no pages.": {}, + "This extension couldn't be installed.": {}, + "This format opens once the whole file is here.": {}, + "This is a shared demo account, so nothing on it can be changed.": {}, + "This isn't on the server anymore.": {}, + "This publication doesn't list its chapters.": {}, + "This server doesn't have sources yet.": {}, + "This source comes from a repository the server's admin hasn't allowed.": {}, + "This source has no chapters it can show for this series. Licensed series are often only on the publisher's own site.": {}, + "This source isn't available on the server.": {}, + "Title": {}, + "Too many attempts.": {}, + "Try Again": {}, + "Try again in a moment.": {}, + "Try the Demo": {}, + "Turn On Alerts": {}, + "Unfollow": {}, + "Update": {}, + "Update the Chek server to add extensions.": {}, + "Updates": {}, + "User Name": {}, + "Uses the server's browser": {}, + "Version": {}, + "Version %@": { + "comment": "An extension's version" + }, + "Version %@ · Not allowed on this server": {}, + "Version %@, %@ available": { + "comment": "An extension's installed version, then the version offered" + }, + "Vertical Scroll": {}, + "View Options": {}, + "Wait a minute and try again.": {}, + "Waiting to download": {}, + "Wide": {}, + "You're at %@ on %@": {}, + "You're at %@ on another device": {}, + "You're signed out of %@.": {}, + "You're signed out of this server.": {}, + "You're somewhere else on %@": {}, + "You're somewhere else on another device": {}, + "You're up to date": {}, + "Your password goes only to this server. Chek keeps the session it gets back in your Keychain.": {}, + "^[%lld Selected](inflect: true)": {}, + "^[%lld item](inflect: true)": {}, + "^[%lld new chapter](inflect: true)": {}, + "^[%lld update](inflect: true)": {}, + "this book": {}, + "this comic": {} }, - "version" : "1.0" + "version": "1.0" } From 8655423adfc5ff02c4895fd17707bf05fd0259bc Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 21 Oct 2026 05:00:34 +0000 Subject: [PATCH 4/4] Pin Chek Reader 0.1.0 to the commit the tag points at The 0.1.0 tag landed on 0abd128, after the release workflow merged, not on the commit Package.resolved guessed before the tag existed. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01XfwUCp8GqHWUdTK7EhZCT5 --- .../project.xcworkspace/xcshareddata/swiftpm/Package.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apple/Chek.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/apple/Chek.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index a063224..cbe28f7 100644 --- a/apple/Chek.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/apple/Chek.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -5,7 +5,7 @@ "kind": "remoteSourceControl", "location": "https://github.com/readchek/chek-reader", "state": { - "revision": "62271bb6899e5a95d695f4442a8551a7a9898404", + "revision": "0abd128d5f8ee1215c4ddf59f755c2621769e7a9", "version": "0.1.0" } }