diff --git a/CHANGELOG.md b/CHANGELOG.md index df1f2c3d..6584493e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,11 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). Haven uses [Sema people who never will. It is per browser, and the fold survives channel switches and reloads. Requested by @quakeman00. +### Changed +- **Homepage.** The logo leads the page, the screenshots are full size with a + Gallery you can step through with the arrow keys, the phone shot sits beside + Security and privacy, and a community channel shot follows the feature list. + ### Fixed - **CRT text reads bigger (#5606).** The theme's VT323 face is scaled up a further notch, so sub-channel names and other fine print no longer read a diff --git a/docs/img/haven-4-6-default.jpg b/docs/img/haven-4-6-default.jpg index b170d08a..f0118ff0 100644 Binary files a/docs/img/haven-4-6-default.jpg and b/docs/img/haven-4-6-default.jpg differ diff --git a/docs/img/haven-features.jpg b/docs/img/haven-features.jpg new file mode 100644 index 00000000..cc798269 Binary files /dev/null and b/docs/img/haven-features.jpg differ diff --git a/docs/img/haven-theme-braid.jpg b/docs/img/haven-theme-braid.jpg index 2a4cd980..2f1ccd04 100644 Binary files a/docs/img/haven-theme-braid.jpg and b/docs/img/haven-theme-braid.jpg differ diff --git a/docs/img/haven-theme-crt.jpg b/docs/img/haven-theme-crt.jpg index 108ebe4d..de46c58c 100644 Binary files a/docs/img/haven-theme-crt.jpg and b/docs/img/haven-theme-crt.jpg differ diff --git a/docs/index.html b/docs/index.html index 96197a76..84cd7857 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,11 +7,11 @@ - + - + @@ -135,7 +135,10 @@ /* ── Hero ────────────────────────────────────────── */ .hero { padding-top: clamp(40px, 6vw, 72px); } .hero-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); gap: clamp(28px, 5vw, 64px); align-items: start; } - .hero .lead { font-size: 20px; line-height: 1.5; margin-top: 22px; max-width: 34em; } + .hero-brand { display: inline-flex; align-items: center; gap: 0.32em; color: var(--ink); font-weight: 600; font-size: clamp(48px, 7vw, 76px); letter-spacing: 0.01em; line-height: 1; } + .hero-brand svg { width: 1.05em; height: 1.05em; flex: none; } + .hero-title { font-size: clamp(20px, 2.4vw, 25px); font-weight: 700; letter-spacing: -0.01em; margin-top: 30px; } + .hero .lead { font-size: 20px; line-height: 1.5; margin-top: 10px; max-width: 34em; } .actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-top: 30px; } .btn { display: inline-flex; align-items: center; gap: 8px; padding: 11px 18px; border-radius: 4px; font-weight: 600; font-size: 16px; text-decoration: none; border: 1px solid transparent; line-height: 1.2; } .btn-primary { background: var(--accent); color: var(--accent-ink); } @@ -166,8 +169,9 @@ .cols > div:first-child { padding-left: 0; border-left: 0; } .cols > div:last-child { padding-right: 0; } .cols h3 { margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid var(--rule); } - .cols ul { list-style: none; padding: 0; } - .cols li { padding-left: 0; font-size: 16px; } + .cols ul { list-style: disc; padding-left: 1.1em; } + .cols li { font-size: 16px; } + .cols li::marker { color: var(--accent); } .cols li + li { margin-top: 0.5em; } /* ── Steps ───────────────────────────────────────── */ @@ -205,6 +209,11 @@ .lightbox { position: fixed; inset: 0; z-index: 50; background: rgba(10, 8, 16, 0.92); display: flex; align-items: center; justify-content: center; padding: 24px; cursor: zoom-out; } .lightbox[hidden] { display: none; } .lightbox img { max-width: 100%; max-height: 100%; border-radius: 6px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5); } + .lb-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, 0.14); color: #fff; font-size: 30px; line-height: 1; cursor: pointer; display: grid; place-items: center; padding: 0 0 4px; } + .lb-nav:hover { background: rgba(255, 255, 255, 0.26); } + .lb-prev { left: 18px; } + .lb-next { right: 18px; } + @media (max-width: 700px) { .lb-nav { width: 36px; height: 36px; font-size: 24px; } .lb-prev { left: 8px; } .lb-next { right: 8px; } } /* ── Facts ───────────────────────────────────────── */ .facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0; border-top: 1px solid var(--rule-strong); border-bottom: 1px solid var(--rule-strong); } @@ -263,6 +272,7 @@ Compare Setup Security + Gallery Download GitHub Try it now @@ -275,7 +285,11 @@
-

A chat server you run yourself.

+ +

A chat server you run yourself.

Haven is a free, open source alternative to Discord. It runs on your own computer, your friends join with a link, and there's no company in the middle.

Download Haven 4.6.0 @@ -300,15 +314,14 @@
- Haven's default theme: channels and DMs on the left, the member list on the right + Haven's default theme: channels and DMs on the left, the member list on the right
-
-
+

About

@@ -316,11 +329,6 @@

There's no company in the middle. No account with us, no email or phone number, and nothing to pay for. Your messages, files and voice calls stay on your own server.

Haven has been in development since February 2026. It's a spare-time project and it'll always be free.

Many helpful people with a shared passion for free, unfiltered and private chat have come together to improve it. Every change is public, with a changelog updated every release.

-
-
- Haven's welcome screen in a phone browser -
Joining from a phone browser. No app needed.
-
@@ -354,10 +362,9 @@

Customization

@@ -368,9 +375,13 @@
  • Rich Presence: show what you're playing or listening to
  • Built-in games with leaderboards
  • Flash games, through Ruffle
  • +
  • Backups and updates from the settings page
  • +
    + A community channel in the Braid theme with the member list open +
    @@ -427,7 +438,8 @@

    Security and privacy

    How it actually works.

    -
    +
    +
    • Your data lives on the computer running the server, in one folder. Back it up, move it or delete it whenever you want.
    • Direct messages are end-to-end encrypted. The server stores them but can't read them, and neither can the admin.
    • @@ -436,6 +448,13 @@
    • No telemetry. The server doesn't send usage data or crash reports anywhere.
    • There's no central Haven server and no Haven account. Nothing to leak.
    +
    +
    + Haven's welcome screen in a phone browser +
    Joining from a phone browser. No app needed.
    +
    +
    +

    What the server connects to

    Every outside service a Haven server contacts, and when.

    @@ -532,35 +551,55 @@
    -

    More screenshots

    +

    Gallery

    - + diff --git a/website/img/haven-4-6-default.jpg b/website/img/haven-4-6-default.jpg index b170d08a..f0118ff0 100644 Binary files a/website/img/haven-4-6-default.jpg and b/website/img/haven-4-6-default.jpg differ diff --git a/website/img/haven-features.jpg b/website/img/haven-features.jpg new file mode 100644 index 00000000..cc798269 Binary files /dev/null and b/website/img/haven-features.jpg differ diff --git a/website/img/haven-theme-braid.jpg b/website/img/haven-theme-braid.jpg index 2a4cd980..2f1ccd04 100644 Binary files a/website/img/haven-theme-braid.jpg and b/website/img/haven-theme-braid.jpg differ diff --git a/website/img/haven-theme-crt.jpg b/website/img/haven-theme-crt.jpg index 108ebe4d..de46c58c 100644 Binary files a/website/img/haven-theme-crt.jpg and b/website/img/haven-theme-crt.jpg differ diff --git a/website/index.html b/website/index.html index 96197a76..84cd7857 100644 --- a/website/index.html +++ b/website/index.html @@ -7,11 +7,11 @@ - + - + @@ -135,7 +135,10 @@ /* ── Hero ────────────────────────────────────────── */ .hero { padding-top: clamp(40px, 6vw, 72px); } .hero-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); gap: clamp(28px, 5vw, 64px); align-items: start; } - .hero .lead { font-size: 20px; line-height: 1.5; margin-top: 22px; max-width: 34em; } + .hero-brand { display: inline-flex; align-items: center; gap: 0.32em; color: var(--ink); font-weight: 600; font-size: clamp(48px, 7vw, 76px); letter-spacing: 0.01em; line-height: 1; } + .hero-brand svg { width: 1.05em; height: 1.05em; flex: none; } + .hero-title { font-size: clamp(20px, 2.4vw, 25px); font-weight: 700; letter-spacing: -0.01em; margin-top: 30px; } + .hero .lead { font-size: 20px; line-height: 1.5; margin-top: 10px; max-width: 34em; } .actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-top: 30px; } .btn { display: inline-flex; align-items: center; gap: 8px; padding: 11px 18px; border-radius: 4px; font-weight: 600; font-size: 16px; text-decoration: none; border: 1px solid transparent; line-height: 1.2; } .btn-primary { background: var(--accent); color: var(--accent-ink); } @@ -166,8 +169,9 @@ .cols > div:first-child { padding-left: 0; border-left: 0; } .cols > div:last-child { padding-right: 0; } .cols h3 { margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid var(--rule); } - .cols ul { list-style: none; padding: 0; } - .cols li { padding-left: 0; font-size: 16px; } + .cols ul { list-style: disc; padding-left: 1.1em; } + .cols li { font-size: 16px; } + .cols li::marker { color: var(--accent); } .cols li + li { margin-top: 0.5em; } /* ── Steps ───────────────────────────────────────── */ @@ -205,6 +209,11 @@ .lightbox { position: fixed; inset: 0; z-index: 50; background: rgba(10, 8, 16, 0.92); display: flex; align-items: center; justify-content: center; padding: 24px; cursor: zoom-out; } .lightbox[hidden] { display: none; } .lightbox img { max-width: 100%; max-height: 100%; border-radius: 6px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5); } + .lb-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, 0.14); color: #fff; font-size: 30px; line-height: 1; cursor: pointer; display: grid; place-items: center; padding: 0 0 4px; } + .lb-nav:hover { background: rgba(255, 255, 255, 0.26); } + .lb-prev { left: 18px; } + .lb-next { right: 18px; } + @media (max-width: 700px) { .lb-nav { width: 36px; height: 36px; font-size: 24px; } .lb-prev { left: 8px; } .lb-next { right: 8px; } } /* ── Facts ───────────────────────────────────────── */ .facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0; border-top: 1px solid var(--rule-strong); border-bottom: 1px solid var(--rule-strong); } @@ -263,6 +272,7 @@ Compare Setup Security + Gallery Download GitHub Try it now @@ -275,7 +285,11 @@
    -

    A chat server you run yourself.

    + +

    A chat server you run yourself.

    Haven is a free, open source alternative to Discord. It runs on your own computer, your friends join with a link, and there's no company in the middle.

    Download Haven 4.6.0 @@ -300,15 +314,14 @@
    - Haven's default theme: channels and DMs on the left, the member list on the right + Haven's default theme: channels and DMs on the left, the member list on the right
    -
    -
    +

    About

    @@ -316,11 +329,6 @@

    There's no company in the middle. No account with us, no email or phone number, and nothing to pay for. Your messages, files and voice calls stay on your own server.

    Haven has been in development since February 2026. It's a spare-time project and it'll always be free.

    Many helpful people with a shared passion for free, unfiltered and private chat have come together to improve it. Every change is public, with a changelog updated every release.

    -
    -
    - Haven's welcome screen in a phone browser -
    Joining from a phone browser. No app needed.
    -
    @@ -354,10 +362,9 @@

    Customization

      -
    • 26 themes, or write your own CSS
    • +
    • 26 themes with customizable effects, or write your own CSS
    • Bots and webhooks
    • Sign in with your own identity provider
    • -
    • Backups and updates from the settings page
    • Guest access, invite links and channel codes
    • Available in 8 languages
    @@ -368,9 +375,13 @@
  • Rich Presence: show what you're playing or listening to
  • Built-in games with leaderboards
  • Flash games, through Ruffle
  • +
  • Backups and updates from the settings page
  • +
    + A community channel in the Braid theme with the member list open +
    @@ -427,7 +438,8 @@

    Security and privacy

    How it actually works.

    -
    +
    +
    • Your data lives on the computer running the server, in one folder. Back it up, move it or delete it whenever you want.
    • Direct messages are end-to-end encrypted. The server stores them but can't read them, and neither can the admin.
    • @@ -436,6 +448,13 @@
    • No telemetry. The server doesn't send usage data or crash reports anywhere.
    • There's no central Haven server and no Haven account. Nothing to leak.
    +
    +
    + Haven's welcome screen in a phone browser +
    Joining from a phone browser. No app needed.
    +
    +
    +

    What the server connects to

    Every outside service a Haven server contacts, and when.

    @@ -532,35 +551,55 @@
    -

    More screenshots

    +

    Gallery

    - +