Skip to content

feat: Add SwiftUI About tab for Scribe-Conjugate#626

Open
prince-0408 wants to merge 7 commits intoscribe-org:mainfrom
prince-0408:feat/conjugate-about-tab
Open

feat: Add SwiftUI About tab for Scribe-Conjugate#626
prince-0408 wants to merge 7 commits intoscribe-org:mainfrom
prince-0408:feat/conjugate-about-tab

Conversation

@prince-0408
Copy link
Copy Markdown
Contributor

@prince-0408 prince-0408 commented Mar 24, 2026

About Tab — Scribe-Conjugate (SwiftUI)

Closes #607


Overview

Implements the About tab for Scribe-Conjugate in SwiftUI, mirroring the structure of the existing Scribe keyboard About tab (UIKit) while adapting content and links specifically for the Conjugate app.


New Files

File Purpose
AboutTab.swift Main tab view with all three sections
AboutSectionView.swift Reusable grouped section container with bold title header
AboutRowView.swift Reusable row with icon, title, and trailing indicator (external link, chevron, or reset)
AboutTipCardView.swift Dismissible tip card shown at top of tab, persisted via UserDefaults
AboutInfoView.swift Detail screens for Wikimedia & Scribe, Privacy Policy, and Third-party Licenses
ShareSheet.swift UIKit bridge for the system share sheet
Scribe/Assets.xcassets/MenuIcons/Bluesky.imageset/ Bluesky butterfly icon asset

Sections Implemented

Community

  • See the code on GitHub
  • Chat with the team on Matrix
  • Follow us on Mastodon
  • Follow us on Bluesky (new)
  • Visit the Scribe website
  • Share Scribe Conjugate

Wikimedia and Scribe → navigates to detail screen

Feedback and Support

  • Rate Scribe Conjugate
  • Report a bug
  • Send us an email
  • Version X.X.X (dynamic from bundle)
  • Reset app hints

Legal

  • Privacy Policy → navigates to detail screen
  • Third-party Licenses → navigates to detail screen

@github-actions
Copy link
Copy Markdown

Thank you for the pull request! 💙

The Scribe-iOS team will do our best to address your contribution as soon as we can. If you're not already a member of our public Matrix community, please consider joining! We'd suggest that you use the Element client as well as Element X for a mobile app, and definitely join the General and iOS rooms once you're in. Also consider attending our bi-weekly Saturday dev syncs. It'd be great to meet you 😊

Note

Scribe uses Conventional Comments in reviews to make sure that communication is as clear as possible.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 24, 2026

Maintainer Checklist

The following is a checklist for maintainers to make sure this process goes as well as possible. Feel free to address the points below yourself in further commits if you realize that actions are needed :)

  • Tests for changes have been written and the CI unit test, linting and formatting workflows within the PR checks do not indicate new errors in the files changed

  • The CHANGELOG has been updated with a description of the changes for the upcoming release and the corresponding issue (if necessary)

@andrewtavis
Copy link
Copy Markdown
Member

Would you be able to fix the conflicts on the .xcodeproj, @prince-0408?

Thanks so much for sending along all of these PRs! The work here is looking great, and we're looking forward to bringing it in :)

@prince-0408
Copy link
Copy Markdown
Contributor Author

Hey @andrewtavis, the issue with .xcodeproj is fixed, and the branch is up to date with upstream main. Thanks a lot for the kind words, and I'm glad to hear that everything is looking good!

@andrewtavis
Copy link
Copy Markdown
Member

Hey @prince-0408 👋 I'm currently getting Cannot find type 'DownloadStateManager' in scope when I'm checking this and the Conjugate app doesn't build. Is there a way for us to fix this and then I'll check your work? :)

@prince-0408
Copy link
Copy Markdown
Contributor Author

prince-0408 commented Mar 24, 2026

Hey @andrewtavis! Appreciate you bringing this to our attention . Yeah, I'm seeing the same issue of Cannot find type 'DownloadStateManager' in scope on our end too. I'm currently looking into what's causing this issue. I think maybe the type isn't being exposed correctly. I'll get a fix out as soon as I can and let you know here. Thanks!

@andrewtavis
Copy link
Copy Markdown
Member

Thanks for looking into this, @prince-0408! Hope it's ok that I merged in main and did some reformatting for you as I decided to switch the codebase over to four spaces and do a lot of much needed formatting.

note: The one thing I'm seeing here as of now is that the Bluesky icon isn't being shown. Could you look into this and confirm when it's there and we're ready for a review?

@prince-0408
Copy link
Copy Markdown
Contributor Author

prince-0408 commented Mar 24, 2026

@andrewtavis

Fix: Bluesky icon not rendering on device

The Bluesky.imageset Contents.json only had Image.png assigned to the 1x slot — 2x and 3x were empty. Since modern iPhones render at 2x or 3x, the icon showed up blank.

Assigned Image.png to all three scale slots (1x, 2x, 3x) so the icon renders correctly across all devices.

Note: Ideally this should use separate 2x/3x assets and include a dark mode variant (matching the pattern in the matrix and mastodon imagesets). That can be followed up in a later PR — this fix unblocks the current review.

Simulator Screenshot - iPhone 17 Pro

@andrewtavis
Copy link
Copy Markdown
Member

A few more points here, @prince-0408:

  • The Bluesky icon isn't showing up on dark mode as it's only black, there's no other version :)
    • Maybe the other change to fix this can be reverted
  • The header for the third party license page is in the view, not above it
    • Same for Wikimedia and Scribe as well as the privacy policy, so all subpages
  • Can you remove the "Tap a row to learn more or take action" as this isn't a view, but rather a tooltip
    • The text should come from Scribe i18n and should be the same one that we use for the Keyboard app
    • Maybe you can look into doing the tooltips in this PR too, or if not I can open an issue

Please let us know when the above's ready for another review :)

@prince-0408
Copy link
Copy Markdown
Contributor Author

Hi @andrewtavis, all points addressed in the latest commit:

  • Bluesky dark mode: Added an invertIconInDarkMode parameter to AboutRowView that applies .colorInvert() in dark mode, making the black icon visible without needing a separate asset.
  • Subpage headers: Switched navigationBarTitleDisplayMode from .inline to .large in AboutInfoView, so all three subpages (Third-party licenses, Wikimedia and Scribe, Privacy policy) now show a large title above the content.
  • Tooltip text: Removed the hardcoded "Tap a row to learn more or take action." string and replaced it with the shared i18n.app.about.app_hint_tooltip key, consistent with the Keyboard app.

Let me know if anything else needs adjusting!

Simulator Screenshot - iPhone 17 Pro

prince-0408 and others added 7 commits March 25, 2026 17:21
- Implement AboutTab with Community, Feedback and support, and Legal sections
- Add AboutSectionView, AboutRowView, AboutTipCardView, AboutInfoView, ShareSheet
- Use Conjugate-specific share text and dynamic version number from bundle
- Add Bluesky row with butterfly icon asset
- Add detail screens for Wikimedia, Privacy Policy, and Third-party licenses
- Matches Figma design for Conjugate About tab

Closes scribe-org#607
…gationViewController from Conjugate target

These files are Scribe keyboard app-only and were incorrectly included
in the Conjugate app target, causing 'Cannot find type' build errors.
None of them are used by the Conjugate app.
…njugate target

Both files depend on DownloadStateManager which is Scribe-app-only,
causing 'Cannot find type DownloadStateManager' build errors in the
Conjugate target.
- Fix Bluesky icon not visible in dark mode by adding invertIconInDarkMode
  parameter to AboutRowView; applies colorInvert() when colorScheme == .dark,
  avoiding the need for a separate dark-mode asset

- Fix subpage navigation headers (Third-party licenses, Wikimedia and Scribe,
  Privacy policy) appearing inside the view by changing navigationBarTitleDisplayMode
  from .inline to .large so titles render above the content in the nav bar

- Replace tooltip text 'Tap a row to learn more or take action.' with the shared
  Scribe i18n key i18n.app.about.app_hint_tooltip, aligning with the string used
  in the Keyboard app: 'Here's where you can learn more about Scribe and its community.'
@prince-0408 prince-0408 force-pushed the feat/conjugate-about-tab branch from 2b88493 to ba5131b Compare March 25, 2026 11:54
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.

Create Conjugate app About tab using Swift UI

2 participants