From ec6e975001861d494360cda4aa267747d3a14272 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Mon, 10 Aug 2026 13:00:38 +0100 Subject: [PATCH 01/50] ios: update whats new (#7359) * ios: update whats new * custom view --------- Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com> --- .../Views/Onboarding/WhatsNewView.swift | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index b7753e8539..6ea24ec91c 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -8,6 +8,7 @@ // Spec: spec/client/navigation.md import SwiftUI +import StoreKit import SimpleXChat private struct VersionDescription { @@ -41,6 +42,8 @@ private struct FeatureView { let view: () -> any View } +private let isInUS = SKStorefront().countryCode == "USA" + private let versionDescriptions: [VersionDescription] = [ VersionDescription( version: "v4.2", @@ -667,7 +670,13 @@ private let versionDescriptions: [VersionDescription] = [ VersionDescription( version: "v7.0", post: nil, - features: [ + features: (isInUS ? [ + .view(FeatureView( + icon: nil, + title: "Invest in SimpleX Chat", + view: { InvestInSimpleXChat() } + )) + ] : []) + [ .feature(Description( icon: "at", title: "SimpleX public names (BETA)", @@ -762,6 +771,42 @@ fileprivate struct CreateUpdateAddressShortLink: View { } } +fileprivate struct InvestInSimpleXChat: View { + @Environment(\.colorScheme) var colorScheme + @EnvironmentObject var theme: AppTheme + + var body: some View { + HStack(alignment: .top, spacing: 8) { + VStack(alignment: .leading, spacing: 4) { + HStack(alignment: .center, spacing: 4) { + Image(systemName: "dollarsign.circle") + .symbolRenderingMode(.monochrome) + .foregroundColor(theme.colors.secondary) + .frame(minWidth: 30, alignment: .center) + Text(verbatim: "Invest in SimpleX Chat").font(.title3).bold() + } + Text(verbatim: "Equity crowdfunding launched!") + .multilineTextAlignment(.leading) + .lineLimit(2) + if let url = URL("https://wefunder.com/simplexchat") { + ExternalLink(destination: url) { + HStack { + Text(verbatim: "Learn more on Wefunder") + Image(systemName: "arrow.up.right.circle") + } + } + } + } + .frame(maxWidth: .infinity, alignment: .leading) + Image(colorScheme == .light ? "own-stake" : "own-stake-light") + .resizable() + .scaledToFill() + .frame(width: UIScreen.main.bounds.width / 5) + } + .frame(maxWidth: .infinity, alignment: .leading) + } +} + private enum WhatsNewViewSheet: Identifiable { case showConditions From 1be2634b0c945c5991ce79c6a1fdead0b4963736 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Mon, 10 Aug 2026 21:25:36 +0100 Subject: [PATCH 02/50] website: links in navbar --- website/langs/en.json | 2 +- website/src/_includes/navbar.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/website/langs/en.json b/website/langs/en.json index 482fe50042..8841f060e0 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -372,7 +372,7 @@ "file-proto-h-4": "Independent data routers", "file-proto-p-4": "When file is split to fragments, it is sent via network routers operated by independent parties. No operator can see the actual file size or name. Even if a router is compromised, it can only see encrypted fragments of fixed size. File fragments are cached by network routers for approximately 48 hours.", "file-proto-spec": "Read the XFTP protocol specification →", - "links": "Links", + "links": "Community", "links-title": "Community Links", "links-all-languages": "All languages" } diff --git a/website/src/_includes/navbar.html b/website/src/_includes/navbar.html index cec2aa0a01..ebff551a5c 100644 --- a/website/src/_includes/navbar.html +++ b/website/src/_includes/navbar.html @@ -110,11 +110,11 @@
- +