Skip to content

Add quote previews, thread watcher, filters, themes, and reply drafts - #55

Merged
vanities merged 1 commit into
masterfrom
codex/chan-browsing
Sep 27, 2026
Merged

vanities merged 1 commit into
masterfrom
codex/chan-browsing

Conversation

@vanities

Copy link
Copy Markdown
Owner

Adds the missing imageboard browsing tools: quote previews with in-sheet quote-chain navigation, a foreground thread watcher with unread and archived/unavailable status, persistent board/global hide and highlight rules, newer-thread lookup for followed generals, Yotsuba themes, and compact posts.

Post options now offer a quoted local draft and a copy/open handoff to the official 4chan website. Attachments, CAPTCHA, and submission happen on the website; this does not implement native posting or background notifications.

Native archived threads stop live refresh while retaining their original sharing URL. Filters cover keywords, poster IDs, names, and tripcodes, with hide taking priority. General rollover excludes the current and older threads and preserves the saved name.

Also disables autocorrection for custom general names and waits for complete input in UI tests, following CI evidence that a name was saved as a partial prefix.

Validation: full workspace test run passed on iPhone Air (iOS 26.5): 89 unit tests and 17 UI tests, zero failures. Captured simulator screenshots were visually reviewed for quote previews, compact Yotsuba B threads, general rollover, drafts, and watcher status. Deterministic fixtures exercise quote-chain dismissal, general rollover, filtering/classic appearance, reply drafts, and watcher unread status. SwiftLint has 16 existing warnings and no serious violations. No package or persistence schema changes.

@vanities
vanities merged commit e22028d into master Sep 27, 2026
0 of 2 checks passed
@vanities
vanities deleted the codex/chan-browsing branch September 27, 2026 19:33
@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: 81c576de-882b-42e1-85c3-47ddebe10337

📥 Commits

Reviewing files that changed from the base of the PR and between 0eb5d18 and f716a07.

📒 Files selected for processing (23)
  • README.md
  • swiftchan.xcodeproj/project.pbxproj
  • swiftchan/Models/ChanPreferences.swift
  • swiftchan/Services/ThreadUITestFixture.swift
  • swiftchan/ViewModels/RecurringFavoriteViewModel.swift
  • swiftchan/ViewModels/ThreadViewModel.swift
  • swiftchan/ViewModels/ThreadWatcher.swift
  • swiftchan/Views/Boards/Catalog/CatalogView.swift
  • swiftchan/Views/Boards/Catalog/OPView.swift
  • swiftchan/Views/Boards/Catalog/Thread/PostView.swift
  • swiftchan/Views/Boards/Catalog/Thread/QuotePreviewSheet.swift
  • swiftchan/Views/Boards/Catalog/Thread/ReplyDraftSheet.swift
  • swiftchan/Views/Boards/Catalog/Thread/ThreadView.swift
  • swiftchan/Views/ContentView.swift
  • swiftchan/Views/Favorites/AddRecurringFavoriteSheet.swift
  • swiftchan/Views/Favorites/FavoritesView.swift
  • swiftchan/Views/Favorites/RecurringMatchSheet.swift
  • swiftchan/Views/Favorites/ThreadWatcherView.swift
  • swiftchan/Views/PostFiltersView.swift
  • swiftchan/Views/SettingsView.swift
  • swiftchanTests/RecurringFavoriteTests.swift
  • swiftchanTests/ThreadViewModelTests.swift
  • swiftchanUITests/BrowsingUITests.swift
 ______________________________________
< Hold on, let me under-engineer this! >
 --------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ 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.

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