Skip to content

Bookmark individual replies with saved text and backup support - #53

Merged
vanities merged 2 commits into
masterfrom
codex/reply-bookmarks
Sep 27, 2026
Merged

vanities merged 2 commits into
masterfrom
codex/reply-bookmarks

Conversation

@vanities

@vanities vanities commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Posts now offer Save Reply in their options menu. Favorites → Saved Replies keeps a readable text snapshot with search, an exact post link, sharing, and removal. The saved text remains available after the thread expires; media is not downloaded.

Adds a board-scoped SavedReply model through a V2 → V3 migration. Favorites Backup includes reply snapshots and skips existing bookmarks during import. Backups containing replies use format version 2 so older app versions reject them instead of silently dropping replies; version 1 backups remain importable.

CI had two failures: an app screenshot timed out in the backup test and crashed the runner, and the general-edit test failed an immediate text assertion. Diagnostic attachments now capture XCUIScreen instead of querying app screenshot bounds, including the native Files picker. The edit regression uses a numeric marker and waits for its value, avoiding autocorrection-sensitive wording and immediate reads. The final field value was unavailable in the CI artifact; that change is test hardening rather than a confirmed diagnosis of the text-entry failure.

Validation on iPhone Air / iOS 26.5: 82 unit tests passed, including V1/V2 migration, persistence, backup round-trips, duplicate handling, and rejection before partial import. All 11 browsing UI tests passed together, including saving, reopening the exact post, removing a bookmark, and the revised general-edit test. The focused backup/export UI check also passed with the final screen-capture helper. Simulator screenshots reviewed. SwiftLint: 16 existing warnings, 0 serious violations. GitHub CI is pending.

@coderabbitai

coderabbitai Bot commented Sep 27, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 13d4a45c-bcdd-44e2-9825-b05c93978fd3

📥 Commits

Reviewing files that changed from the base of the PR and between a92af74 and 5d6a12a.

📒 Files selected for processing (13)
  • README.md
  • swiftchan.xcodeproj/project.pbxproj
  • swiftchan/Models/FavoritesBackup.swift
  • swiftchan/Models/FavoritesSchema.swift
  • swiftchan/Models/SavedReply.swift
  • swiftchan/Services/FavoritesBackupStore.swift
  • swiftchan/Views/Boards/Catalog/Thread/ThreadView.swift
  • swiftchan/Views/Favorites/FavoritesBackupView.swift
  • swiftchan/Views/Favorites/FavoritesView.swift
  • swiftchan/Views/Favorites/SavedRepliesView.swift
  • swiftchanTests/FavoritesBackupTests.swift
  • swiftchanTests/SavedReplyTests.swift
  • swiftchanUITests/BrowsingUITests.swift
 ___________________________________________________________
< Your API returns 200 OK; your users return 404 Not Found. >
 -----------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@vanities
vanities merged commit d2790cd into master Sep 27, 2026
1 check failed
@vanities
vanities deleted the codex/reply-bookmarks branch September 27, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant