From a37a50e5048266479ff8ccc12f73ea3b4da5b8ab Mon Sep 17 00:00:00 2001 From: Anirudh Oppiliappan Date: Sun, 28 Sep 2025 10:08:00 +0000 Subject: [PATCH] appview/pages: add a brand page Also some misc. changes to page layouts. Signed-off-by: Anirudh Oppiliappan --- appview/pages/pages.go | 8 ++++++++ appview/state/router.go | 1 + appview/state/state.go | 7 +++++++ appview/pages/legal/privacy.md | 2 -- appview/pages/legal/terms.md | 6 ++---- appview/pages/templates/brand/brand.html | 224 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ appview/pages/templates/legal/privacy.html | 19 +++++++++++++------ appview/pages/templates/legal/terms.html | 19 +++++++++++++------ appview/pages/templates/layouts/fragments/footer.html | 1 + 9 file(s) changed, 269 insertion(s)(+), 18 deletion(s)(-) diff --git a/appview/pages/pages.go b/appview/pages/pages.go --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -290,6 +290,14 @@ return p.execute("legal/privacy", w, params) } +type BrandParams struct { + LoggedInUser *oauth.User +} + +func (p *Pages) Brand(w io.Writer, params BrandParams) error { + return p.execute("brand/brand", w, params) +} + type TimelineParams struct { LoggedInUser *oauth.User Timeline []models.TimelineEvent diff --git a/appview/state/router.go b/appview/state/router.go --- a/appview/state/router.go +++ b/appview/state/router.go @@ -166,6 +166,7 @@ r.Get("/keys/{user}", s.Keys) r.Get("/terms", s.TermsOfService) r.Get("/privacy", s.PrivacyPolicy) + r.Get("/brand", s.Brand) r.NotFound(func(w http.ResponseWriter, r *http.Request) { s.pages.Error404(w) diff --git a/appview/state/state.go b/appview/state/state.go --- a/appview/state/state.go +++ b/appview/state/state.go @@ -212,6 +212,13 @@ }) } +func (s *State) Brand(w http.ResponseWriter, r *http.Request) { + user := s.oauth.GetUser(r) + s.pages.Brand(w, pages.BrandParams{ + LoggedInUser: user, + }) +} + func (s *State) HomeOrTimeline(w http.ResponseWriter, r *http.Request) { if s.oauth.GetUser(r) != nil { s.Timeline(w, r) diff --git a/appview/pages/legal/privacy.md b/appview/pages/legal/privacy.md --- a/appview/pages/legal/privacy.md +++ b/appview/pages/legal/privacy.md @@ -1,5 +1,3 @@ -# Privacy Policy - **Last updated:** September 26, 2025 This Privacy Policy describes how Tangled ("we," "us," or "our") diff --git a/appview/pages/legal/terms.md b/appview/pages/legal/terms.md --- a/appview/pages/legal/terms.md +++ b/appview/pages/legal/terms.md @@ -1,5 +1,3 @@ -# Terms of Service - **Last updated:** September 26, 2025 Welcome to Tangled. These Terms of Service ("Terms") govern your access @@ -22,14 +20,14 @@ ## 3. Account Termination > **Important Notice** -> +> > **We reserve the right to terminate, suspend, or restrict access to > your account at any time, for any reason, or for no reason at all, at > our sole discretion.** This includes, but is not limited to, > termination for violation of these Terms, inappropriate conduct, spam, > abuse, or any other behavior we deem harmful to the Service or other > users. -> +> > Account termination may result in the loss of access to your > repositories, data, and other content associated with your account. We > are not obligated to provide advance notice of termination, though we diff --git a/appview/pages/templates/brand/brand.html b/appview/pages/templates/brand/brand.html new file mode 100644 --- /dev/null +++ b/appview/pages/templates/brand/brand.html @@ -0,0 +1,224 @@ +{{ define "title" }}brand{{ end }} + +{{ define "content" }} +
+
+

Brand

+

+ Assets and guidelines for using Tangled's logo and brand elements. +

+
+ +
+
+ + +
+

+ Tangled's logo and mascot is Dolly, the first ever cloned mammal. Please + follow the below guidelines when using Dolly and the logotype. +

+

+ All assets are served as SVGs, and can be downloaded by right-clicking and clicking "Save image as". +

+
+ + +
+
+
+ Tangled logo - black version +
+
+
+

Black logotype

+

For use on light-colored backgrounds.

+

+ This is the preferred version of the logotype, featuring dark text and elements, ideal for light + backgrounds and designs. +

+
+
+ + +
+
+
+ Tangled logo - white version +
+
+
+

White logotype

+

For use on dark-colored backgrounds.

+

+ This version features white text and elements, ideal for dark backgrounds + and inverted designs. +

+
+
+ + +
+
+
+ +
+ Dolly face - black version +
+ +
+ Dolly face - white version +
+
+
+
+

Mark only

+

+ When a smaller 1:1 logo or icon is needed, Dolly's face may be used on its own. +

+

+ Note: for situations where the background + is unknown, use the black version for ideal contrast in most environments. +

+
+
+ + +
+
+
+ +
+ Tangled logo on pastel green background +
+ +
+ Tangled logo on pastel blue background +
+ +
+ Tangled logo on pastel yellow background +
+ +
+ Tangled logo on pastel red background +
+
+
+
+

Colored backgrounds

+

+ White logo mark on colored backgrounds. +

+

+ The white logo mark provides contrast on colored backgrounds. + Perfect for more fun design contexts. +

+
+
+ + +
+
+
+ +
+ Tangled logo on pastel green background +
+ +
+ Tangled logo on pastel blue background +
+ +
+ Tangled logo on pastel yellow background +
+ +
+ Tangled logo on pastel pink background +
+
+
+
+

Lighter backgrounds

+

+ Dark logo mark on lighter, pastel backgrounds. +

+

+ The dark logo mark works beautifully on pastel backgrounds, + providing crisp contrast. +

+
+
+ + +
+
+
+ Recolored Tangled logotype in gray/sand color +
+
+
+

Recoloring

+

+ Custom coloring of the logotype is permitted. +

+

+ Recoloring the logotype is allowed as long as readability is maintained. +

+

+ Example: Gray/sand colored logotype on a light yellow/tan background. +

+
+
+ + +
+
+
+ Dolly silhouette +
+
+
+

Dolly silhouette

+

A minimalist version of Dolly.

+

+ The silhouette can be used where a subtle brand presence is needed, + or as a background element. Works on any background color with proper contrast. + For example, we use this as the site's favicon. +

+
+
+ +
+
+
+{{ end }} diff --git a/appview/pages/templates/legal/privacy.html b/appview/pages/templates/legal/privacy.html --- a/appview/pages/templates/legal/privacy.html +++ b/appview/pages/templates/legal/privacy.html @@ -1,11 +1,18 @@ {{ define "title" }}privacy policy{{ end }} {{ define "content" }} -
-
-
- {{ .Content }} -
+
+
+

Privacy Policy

+

+ Learn how we collect, use, and protect your personal information. +

+
+ +
+
+ {{ .Content }}
+
-{{ end }} \ No newline at end of file +{{ end }} diff --git a/appview/pages/templates/legal/terms.html b/appview/pages/templates/legal/terms.html --- a/appview/pages/templates/legal/terms.html +++ b/appview/pages/templates/legal/terms.html @@ -1,11 +1,18 @@ {{ define "title" }}terms of service{{ end }} {{ define "content" }} -
-
-
- {{ .Content }} -
+
+
+

Terms of Service

+

+ A few things you should know. +

+
+ +
+
+ {{ .Content }}
+
-{{ end }} \ No newline at end of file +{{ end }} diff --git a/appview/pages/templates/layouts/fragments/footer.html b/appview/pages/templates/layouts/fragments/footer.html --- a/appview/pages/templates/layouts/fragments/footer.html +++ b/appview/pages/templates/layouts/fragments/footer.html @@ -23,6 +23,7 @@ {{ i "book-open" $iconStyle }} blog {{ i "book" $iconStyle }} docs {{ i "code" $iconStyle }} source + {{ i "paintbrush" $iconStyle }} brand
-- tangled.sh