diff --git a/src/screens/Signup/index.tsx b/src/screens/Signup/index.tsx
index 3085eb63d..50ec0b9d9 100644
--- a/src/screens/Signup/index.tsx
+++ b/src/screens/Signup/index.tsx
@@ -231,7 +231,7 @@ export function Signup({
label={_(msg`Contact support`)}
to={FEEDBACK_FORM_URL({email: state.email})}
style={[!gtMobile && a.text_md]}>
- Open a Github Issue
+ Open a Tangled Issue
diff --git a/src/state/preferences/disable-followed-by-metrics.tsx b/src/state/preferences/disable-followed-by-metrics.tsx
new file mode 100644
index 000000000..be1f7e442
--- /dev/null
+++ b/src/state/preferences/disable-followed-by-metrics.tsx
@@ -0,0 +1,52 @@
+import React from 'react'
+
+import * as persisted from '#/state/persisted'
+
+// Preference: disableFollowedByMetrics – when true, disables following metrics on profiles
+
+type StateContext = persisted.Schema['disableFollowedByMetrics']
+// Same setter signature used across other preference modules
+type SetContext = (v: persisted.Schema['disableFollowedByMetrics']) => void
+
+const stateContext = React.createContext(
+ persisted.defaults.disableFollowedByMetrics,
+)
+const setContext = React.createContext(
+ (_: persisted.Schema['disableFollowedByMetrics']) => {},
+)
+
+export function Provider({children}: React.PropsWithChildren<{}>) {
+ const [state, setState] = React.useState(
+ persisted.get('disableFollowedByMetrics'),
+ )
+
+ const setStateWrapped = React.useCallback(
+ (value: persisted.Schema['disableFollowedByMetrics']) => {
+ setState(value)
+ persisted.write('disableFollowedByMetrics', value)
+ },
+ [setState],
+ )
+
+ React.useEffect(() => {
+ return persisted.onUpdate('disableFollowedByMetrics', next => {
+ setState(next)
+ })
+ }, [setStateWrapped])
+
+ return (
+
+
+ {children}
+
+
+ )
+}
+
+export function useDisableFollowedByMetrics() {
+ return React.useContext(stateContext)
+}
+
+export function useSetDisableFollowedByMetrics() {
+ return React.useContext(setContext)
+}
diff --git a/src/state/preferences/disable-followers-metrics.tsx b/src/state/preferences/disable-followers-metrics.tsx
new file mode 100644
index 000000000..0c7f36998
--- /dev/null
+++ b/src/state/preferences/disable-followers-metrics.tsx
@@ -0,0 +1,52 @@
+import React from 'react'
+
+import * as persisted from '#/state/persisted'
+
+// Preference: disableFollowersMetrics – when true, disables followers metrics on profiles
+
+type StateContext = persisted.Schema['disableFollowersMetrics']
+// Same setter signature used across other preference modules
+type SetContext = (v: persisted.Schema['disableFollowersMetrics']) => void
+
+const stateContext = React.createContext(
+ persisted.defaults.disableFollowersMetrics,
+)
+const setContext = React.createContext(
+ (_: persisted.Schema['disableFollowersMetrics']) => {},
+)
+
+export function Provider({children}: React.PropsWithChildren<{}>) {
+ const [state, setState] = React.useState(
+ persisted.get('disableFollowersMetrics'),
+ )
+
+ const setStateWrapped = React.useCallback(
+ (value: persisted.Schema['disableFollowersMetrics']) => {
+ setState(value)
+ persisted.write('disableFollowersMetrics', value)
+ },
+ [setState],
+ )
+
+ React.useEffect(() => {
+ return persisted.onUpdate('disableFollowersMetrics', next => {
+ setState(next)
+ })
+ }, [setStateWrapped])
+
+ return (
+
+
+ {children}
+
+
+ )
+}
+
+export function useDisableFollowersMetrics() {
+ return React.useContext(stateContext)
+}
+
+export function useSetDisableFollowersMetrics() {
+ return React.useContext(setContext)
+}
diff --git a/src/state/preferences/disable-following-metrics.tsx b/src/state/preferences/disable-following-metrics.tsx
new file mode 100644
index 000000000..e4da9d4fb
--- /dev/null
+++ b/src/state/preferences/disable-following-metrics.tsx
@@ -0,0 +1,52 @@
+import React from 'react'
+
+import * as persisted from '#/state/persisted'
+
+// Preference: disableFollowingMetrics – when true, disables following metrics on profiles
+
+type StateContext = persisted.Schema['disableFollowingMetrics']
+// Same setter signature used across other preference modules
+type SetContext = (v: persisted.Schema['disableFollowingMetrics']) => void
+
+const stateContext = React.createContext(
+ persisted.defaults.disableFollowingMetrics,
+)
+const setContext = React.createContext(
+ (_: persisted.Schema['disableFollowingMetrics']) => {},
+)
+
+export function Provider({children}: React.PropsWithChildren<{}>) {
+ const [state, setState] = React.useState(
+ persisted.get('disableFollowingMetrics'),
+ )
+
+ const setStateWrapped = React.useCallback(
+ (value: persisted.Schema['disableFollowingMetrics']) => {
+ setState(value)
+ persisted.write('disableFollowingMetrics', value)
+ },
+ [setState],
+ )
+
+ React.useEffect(() => {
+ return persisted.onUpdate('disableFollowingMetrics', next => {
+ setState(next)
+ })
+ }, [setStateWrapped])
+
+ return (
+
+
+ {children}
+
+
+ )
+}
+
+export function useDisableFollowingMetrics() {
+ return React.useContext(stateContext)
+}
+
+export function useSetDisableFollowingMetrics() {
+ return React.useContext(setContext)
+}
diff --git a/src/state/preferences/disable-posts-metrics.tsx b/src/state/preferences/disable-posts-metrics.tsx
new file mode 100644
index 000000000..e4bd0b178
--- /dev/null
+++ b/src/state/preferences/disable-posts-metrics.tsx
@@ -0,0 +1,50 @@
+import React from 'react'
+
+import * as persisted from '#/state/persisted'
+
+// Preference: disablePostsMetrics – when true, disables posts metrics on profiles
+
+type StateContext = persisted.Schema['disablePostsMetrics']
+// Same setter signature used across other preference modules
+type SetContext = (v: persisted.Schema['disablePostsMetrics']) => void
+
+const stateContext = React.createContext(
+ persisted.defaults.disablePostsMetrics,
+)
+const setContext = React.createContext(
+ (_: persisted.Schema['disablePostsMetrics']) => {},
+)
+
+export function Provider({children}: React.PropsWithChildren<{}>) {
+ const [state, setState] = React.useState(persisted.get('disablePostsMetrics'))
+
+ const setStateWrapped = React.useCallback(
+ (value: persisted.Schema['disablePostsMetrics']) => {
+ setState(value)
+ persisted.write('disablePostsMetrics', value)
+ },
+ [setState],
+ )
+
+ React.useEffect(() => {
+ return persisted.onUpdate('disablePostsMetrics', next => {
+ setState(next)
+ })
+ }, [setStateWrapped])
+
+ return (
+
+
+ {children}
+
+
+ )
+}
+
+export function useDisablePostsMetrics() {
+ return React.useContext(stateContext)
+}
+
+export function useSetDisablePostsMetrics() {
+ return React.useContext(setContext)
+}
diff --git a/src/view/com/auth/SplashScreen.web.tsx b/src/view/com/auth/SplashScreen.web.tsx
index 9246e8a18..ae7ca2494 100644
--- a/src/view/com/auth/SplashScreen.web.tsx
+++ b/src/view/com/auth/SplashScreen.web.tsx
@@ -171,7 +171,7 @@ function Footer() {
- Github
+ Tangled
diff --git a/witchsky-static-about/index.html b/witchsky-static-about/index.html
index 59ca84ad8..0b67870b4 100644
--- a/witchsky-static-about/index.html
+++ b/witchsky-static-about/index.html
@@ -19,6 +19,6 @@
window.location.href = "https://tangled.org/jollywhoppers.com/witchsky.app/";
- Redirecting to GitHub README...
+ Redirecting to Tangled README...