Skip to content

Polish network auth and topic detail state#84

Merged
fannnzhang merged 22 commits into
mainfrom
feature/app-polish-network-detail-list
Jun 9, 2026
Merged

Polish network auth and topic detail state#84
fannnzhang merged 22 commits into
mainfrom
feature/app-polish-network-detail-list

Conversation

@fannnzhang

@fannnzhang fannnzhang commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Summary

This branch is based on the latest main after the existing PRs were merged.

  • update third_party/openwire to upstream 65ca019, including the latest auth, cache, redirect, HTTP/2, and websocket fixes
  • mark user-opened notification history fetches as foreground-capable for Cloudflare challenge handling while keeping recent notification refreshes background-only
  • reuse shared avatar image pipelines across iOS topic-detail cells/profile sheets and Android notification/search/profile/user-sheet/topic-detail surfaces
  • surface topic-detail author metadata through Rust/UniFFI and native rows
  • parse Discourse Boost plugin post data in Rust/UniFFI and render native read-only Boost chips on iOS/Android topic rows without platform-side Boost HTML parsing
  • render compact quote/reply previews from the shared Rust RenderDocument path only, with quote chrome/avatar filtering kept out of platform parsing
  • jump first topic-detail opens to the first unread root when there is no explicit notification/bookmark/search/share target
  • expose explicit reply/highest-post/view counts, patch already-loaded iOS home rows from topic detail, and document Android's topic-scoped debounced refresh behavior
  • clean stale auth/Cloudflare docs and remove the leftover Android restore-session string

Validation

Full branch validation before the latest focused cache/count commits:

  • ./scripts/check_clean_submodules.sh
  • cargo fmt --all --check
  • cargo clippy -p fire-models -p fire-core -p fire-uniffi --all-targets --no-deps -- -D warnings
  • cargo clippy -p fire-models -p fire-core -p fire-uniffi --all-targets --no-deps --release -- -D warnings
  • cargo test -p fire-models -p fire-store -p fire-core -p fire-uniffi --all-targets
  • cargo test -p openwire --features websocket --lib policy::
  • cargo test -p fire-core --test network -- --nocapture
  • cd native/android-app && ./gradlew clean testDebugUnitTest assembleDebug
  • xcodegen generate --spec native/ios-app/project.yml
  • git diff --exit-code -- native/ios-app/Fire.xcodeproj
  • cd native/ios-app && FIRE_SKIP_UNIFFI_BINDGEN=1 xcodebuild -project Fire.xcodeproj -scheme Fire -destination 'platform=iOS Simulator,name=Fire-Local-Unit' -derivedDataPath /tmp/fire-ios-final test

Focused checks after the latest cache/count commits:

  • git diff --check
  • cd native/android-app && export JAVA_HOME=$(/usr/libexec/java_home -v 17) ANDROID_HOME=/Users/zhangfan/Library/Android/sdk ANDROID_SDK_ROOT=/Users/zhangfan/Library/Android/sdk && ./gradlew testDebugUnitTest --tests 'com.fire.app.ui.home.HomeTopicListMessageBusRefreshControllerTest' --tests 'com.fire.app.TopicPresentationTest'
  • cd native/ios-app && xcodebuild -project Fire.xcodeproj -scheme Fire -destination 'platform=iOS Simulator,name=Fire-Local-Unit' -derivedDataPath /tmp/fire-ios-topic-list-patch -only-testing:FireTests/FireTopicListMessageBusRefreshTests test
  • cd native/ios-app && FIRE_SKIP_UNIFFI_BINDGEN=1 xcodebuild -project Fire.xcodeproj -scheme Fire -destination 'platform=iOS Simulator,name=Fire-Local-Unit' -derivedDataPath /tmp/fire-ios-topic-list-patch -only-testing:FireTests/FireTopicListMessageBusRefreshTests test

Focused Boost checks after d39ae07:

  • cargo fmt --all --check

  • git diff --check

  • cargo test -p fire-core --lib topic_post_boosts_parse_display_text_and_permissions

  • cargo check -p fire-uniffi-topics

  • xcodegen generate --spec native/ios-app/project.yml

  • git diff --exit-code -- native/ios-app/Fire.xcodeproj

  • FIRE_SKIP_UNIFFI_BINDGEN=1 xcodebuild test -project native/ios-app/Fire.xcodeproj -scheme Fire -destination 'id=B23CBA19-C01B-4F60-8873-0B6AA1BC6907' -derivedDataPath /tmp/FireDerivedBoost -only-testing:FireTests/FirePostCellLayoutCalculatorTests -only-testing:FireTests/FirePostLayoutManagerTests

  • cd native/android-app && export JAVA_HOME=$(/usr/libexec/java_home -v 17) ANDROID_HOME=/Users/zhangfan/Library/Android/sdk ANDROID_SDK_ROOT=/Users/zhangfan/Library/Android/sdk && ./gradlew testDebugUnitTest --tests com.fire.app.ui.topicdetail.TopicDetailPostRowsTest
    Focused Boost barrage checks after b90a675:

  • cargo fmt --all --check

  • git diff --check

  • xcodegen generate --spec native/ios-app/project.yml

  • git diff --exit-code -- native/ios-app/Fire.xcodeproj

  • FIRE_SKIP_UNIFFI_BINDGEN=1 xcodebuild test -project native/ios-app/Fire.xcodeproj -scheme Fire -destination 'id=B23CBA19-C01B-4F60-8873-0B6AA1BC6907' -derivedDataPath /tmp/FireDerivedBoostBarrage -only-testing:FireTests/FirePostCellLayoutCalculatorTests -only-testing:FireTests/FirePostLayoutManagerTests

  • cd native/android-app && export JAVA_HOME=$(/usr/libexec/java_home -v 17) ANDROID_HOME=/Users/zhangfan/Library/Android/sdk ANDROID_SDK_ROOT=/Users/zhangfan/Library/Android/sdk && ./gradlew testDebugUnitTest --tests com.fire.app.ui.topicdetail.TopicDetailPostRowsTest

Focused Boost emoji/manual scroller follow-up after 0f94993:

  • kept the Boost barrage path in the in-house UIKit/Android View implementation after checking third-party barrage options; no SwiftUI or third-party renderer was added

  • restored iOS original-post barrage resume by deferring the scroll-idle check until UIKit clears tracking/deceleration state

  • added Rust/UniFFI Boost renderDocument output and normalized emoji image fallback text for native emoji-capable chips

  • changed reply/comment Boost presentation to fixed-height two-row manual horizontal chips instead of automatic ticker scrolling

  • cargo fmt --all --check

  • cargo test -p fire-rich-text --lib

  • cargo test -p fire-core --lib

  • cargo test -p fire-uniffi-topics --lib

  • cargo test -p fire-uniffi --lib

  • cd native/ios-app && ./scripts/sync_uniffi_bindings.sh

  • xcodegen generate --spec native/ios-app/project.yml

  • xcodebuild test -project native/ios-app/Fire.xcodeproj -scheme Fire -destination 'platform=iOS Simulator,id=D6D8439F-582C-4C3B-A68E-696F9ADBBA00' -only-testing:FireTests/FirePostCellLayoutCalculatorTests

  • xcodebuild test -project native/ios-app/Fire.xcodeproj -scheme Fire -destination 'platform=iOS Simulator,id=D6D8439F-582C-4C3B-A68E-696F9ADBBA00' -only-testing:FireTests/FirePostCellLayoutCalculatorTests/testFixedBoostManualScrollerHeightIsCompact

  • cd native/android-app && JAVA_HOME=$(/usr/libexec/java_home -v 17) ANDROID_HOME=/Users/zhangfan/Library/Android/sdk ANDROID_SDK_ROOT=/Users/zhangfan/Library/Android/sdk ./gradlew testDebugUnitTest assembleDebug

  • git diff --check

Focused iOS CI fix after 64c6618:

  • fixed FirePostCellLayoutCalculatorTests.testBodyBarrageBatchSignatureUsesVisibleNormalizedBoostBody by keeping original-post Boost barrage batch identity tied to visible normalized Boost body text instead of raw cooked/render content

  • fixed FireTopicPresentationTests.testRenderContentEmbedsEmojiAttachments expectation for Rust-normalized emoji fallback text (:smile:)

  • docs checked: existing Boost docs already describe reply/comment Boosts as fixed-height two-row manual horizontal chips without automatic ticker scrolling, and no documentation change was needed

  • xcodebuild test -project native/ios-app/Fire.xcodeproj -scheme Fire -destination 'platform=iOS Simulator,id=D6D8439F-582C-4C3B-A68E-696F9ADBBA00' -only-testing:FireTests/FirePostCellLayoutCalculatorTests/testBodyBarrageBatchSignatureUsesVisibleNormalizedBoostBody -only-testing:FireTests/FireTopicPresentationTests/testRenderContentEmbedsEmojiAttachments

  • xcodebuild test -project native/ios-app/Fire.xcodeproj -scheme Fire -destination 'platform=iOS Simulator,id=D6D8439F-582C-4C3B-A68E-696F9ADBBA00' -only-testing:FireTests/FirePostCellLayoutCalculatorTests -only-testing:FireTests/FireTopicPresentationTests

  • FIRE_SKIP_UNIFFI_BINDGEN=1 xcodebuild -project native/ios-app/Fire.xcodeproj -scheme Fire -destination 'platform=iOS Simulator,id=D6D8439F-582C-4C3B-A68E-696F9ADBBA00' -derivedDataPath /tmp/fire-ios-tests CODE_SIGNING_ALLOWED=NO test

  • xcodegen generate --spec native/ios-app/project.yml

  • git diff --exit-code -- native/ios-app/Fire.xcodeproj

  • git diff --check

@fannnzhang
fannnzhang marked this pull request as ready for review June 8, 2026 07:30
@fannnzhang
fannnzhang merged commit 80edec1 into main Jun 9, 2026
11 checks passed
@fannnzhang
fannnzhang deleted the feature/app-polish-network-detail-list branch June 9, 2026 01:36
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