diff --git a/astro.config.mjs b/astro.config.mjs index 470001f..7cbe8da 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -59,12 +59,12 @@ export default defineConfig({ { icon: "github", label: "GitHub (App)", - href: "https://github.com/Fancy-Mumble/FancyMumbleNext", + href: "https://github.com/Fancy-Mumble/FancyMumble", }, { icon: "github", - label: "GitHub (Server)", - href: "https://github.com/Fancy-Mumble/mumble-server", + label: "GitHub (Starling server)", + href: "https://github.com/Fancy-Mumble/starling", }, ], editLink: { @@ -168,33 +168,10 @@ export default defineConfig({ badge: { text: "Ops", variant: "note" }, items: [ { label: "Docker quick start", link: "/server/docker/" }, - { label: "Setup wizard", link: "/server/wizard/" }, + { label: "First-run setup", link: "/server/wizard/" }, { label: "Configuration reference", link: "/server/config/" }, { label: "Ports & networking", link: "/server/network/" }, - { - label: "Feature deep-dives", - collapsed: false, - items: [ - { label: "Persistent chat", link: "/server/features/persistent-chat/" }, - { label: "Push notifications", link: "/server/features/push/" }, - { label: "Screen sharing relay", link: "/server/features/webrtc-sfu/" }, - { label: "File server", link: "/server/features/file-server/" }, - { label: "Link previews", link: "/server/features/link-previews/" }, - { label: "Reactions & polls", link: "/server/features/reactions/" }, - { label: "Watch Together", link: "/server/features/watch-together/" }, - { label: "Whiteboard", link: "/server/features/whiteboard/" }, - { label: "Live documents", link: "/server/features/live-doc/" }, - ], - }, - { - label: "Plugins", - collapsed: false, - items: [ - { label: "Plugin system overview", link: "/server/plugins/overview/" }, - { label: "Using plugins", link: "/server/plugins/using/" }, - { label: "Developing a plugin", link: "/server/plugins/developing/" }, - ], - }, + { label: "Feature availability", link: "/server/features/" }, { label: "Customize & disable features", link: "/server/customize/" }, { label: "Building from source", link: "/server/build/" }, { label: "Upgrade & backup", link: "/server/upgrade/" }, diff --git a/public/examples/avatars/anime-demon.png b/public/examples/avatars/anime-demon.png new file mode 100644 index 0000000..a0c24cf Binary files /dev/null and b/public/examples/avatars/anime-demon.png differ diff --git a/public/examples/avatars/anime-girl.png b/public/examples/avatars/anime-girl.png new file mode 100644 index 0000000..b7021c9 Binary files /dev/null and b/public/examples/avatars/anime-girl.png differ diff --git a/public/examples/avatars/anime-pastel.png b/public/examples/avatars/anime-pastel.png new file mode 100644 index 0000000..3b3ae7c Binary files /dev/null and b/public/examples/avatars/anime-pastel.png differ diff --git a/public/examples/avatars/car-enthusiast.png b/public/examples/avatars/car-enthusiast.png new file mode 100644 index 0000000..f689402 Binary files /dev/null and b/public/examples/avatars/car-enthusiast.png differ diff --git a/public/examples/avatars/comics.png b/public/examples/avatars/comics.png new file mode 100644 index 0000000..2081688 Binary files /dev/null and b/public/examples/avatars/comics.png differ diff --git a/public/examples/avatars/dog.png b/public/examples/avatars/dog.png new file mode 100644 index 0000000..51f4f69 Binary files /dev/null and b/public/examples/avatars/dog.png differ diff --git a/public/examples/avatars/flowers.png b/public/examples/avatars/flowers.png new file mode 100644 index 0000000..9819cbc Binary files /dev/null and b/public/examples/avatars/flowers.png differ diff --git a/public/examples/avatars/k-pop.png b/public/examples/avatars/k-pop.png new file mode 100644 index 0000000..da4e393 Binary files /dev/null and b/public/examples/avatars/k-pop.png differ diff --git a/public/examples/avatars/manga-reader.png b/public/examples/avatars/manga-reader.png new file mode 100644 index 0000000..8d03790 Binary files /dev/null and b/public/examples/avatars/manga-reader.png differ diff --git a/public/examples/banners/anime-demon.png b/public/examples/banners/anime-demon.png new file mode 100644 index 0000000..7bbda3d Binary files /dev/null and b/public/examples/banners/anime-demon.png differ diff --git a/public/examples/banners/anime-pastel.png b/public/examples/banners/anime-pastel.png new file mode 100644 index 0000000..fe6df41 Binary files /dev/null and b/public/examples/banners/anime-pastel.png differ diff --git a/public/examples/banners/anime.png b/public/examples/banners/anime.png new file mode 100644 index 0000000..13e4c2a Binary files /dev/null and b/public/examples/banners/anime.png differ diff --git a/public/examples/banners/cars.png b/public/examples/banners/cars.png new file mode 100644 index 0000000..e335622 Binary files /dev/null and b/public/examples/banners/cars.png differ diff --git a/public/examples/banners/cats.png b/public/examples/banners/cats.png new file mode 100644 index 0000000..dd3c47e Binary files /dev/null and b/public/examples/banners/cats.png differ diff --git a/public/examples/banners/comics.png b/public/examples/banners/comics.png new file mode 100644 index 0000000..74d4614 Binary files /dev/null and b/public/examples/banners/comics.png differ diff --git a/public/examples/banners/dogs.png b/public/examples/banners/dogs.png new file mode 100644 index 0000000..83cbf27 Binary files /dev/null and b/public/examples/banners/dogs.png differ diff --git a/public/examples/banners/flowers.png b/public/examples/banners/flowers.png new file mode 100644 index 0000000..40e505c Binary files /dev/null and b/public/examples/banners/flowers.png differ diff --git a/public/examples/banners/k-pop.png b/public/examples/banners/k-pop.png new file mode 100644 index 0000000..c818737 Binary files /dev/null and b/public/examples/banners/k-pop.png differ diff --git a/public/examples/banners/manga.png b/public/examples/banners/manga.png new file mode 100644 index 0000000..0c72a03 Binary files /dev/null and b/public/examples/banners/manga.png differ diff --git a/public/examples/community-scene.html b/public/examples/community-scene.html new file mode 100644 index 0000000..c5b9d7a --- /dev/null +++ b/public/examples/community-scene.html @@ -0,0 +1,135 @@ + + + + + + Fancy Mumble sample community scene + + + +
+
Fancy Mumble Community voice− □ ×
+
+ +
+

# lounge

Five members · Share what you're working on

+
✦   Welcome to the community lounge. Say hello and share your interests.
+
Today
+
+
TorqueCar club

Just finished the night drive. That coastal road was incredible.

🏁 3✨ 2
+
RinArtist

That sounds like a perfect reference for my next illustration!

+
HanaMusic

I made a playlist for tonight's sketch session. 🎵

+
FloraGardener

I'll bring the flower references. My roses are finally blooming.

🌸 4
+
+
+   Write a message… ➤
+
+
+
Member profile ×
+
+ +
+ Rin's avatar +

Rin

+
@rin · Online
+
Artist
+

Illustrating imaginary places, collecting color palettes, and meeting friends in voice chat.

+
✦   Sketchbook open · Listening to Hana's playlist
+
+
+

Select a member to see their avatar, banner, bio, and status.

+
+
+
+ + + diff --git a/public/examples/sample-avatar.png b/public/examples/sample-avatar.png new file mode 100644 index 0000000..9909fbe Binary files /dev/null and b/public/examples/sample-avatar.png differ diff --git a/public/examples/sample-chat-background.png b/public/examples/sample-chat-background.png new file mode 100644 index 0000000..8309151 Binary files /dev/null and b/public/examples/sample-chat-background.png differ diff --git a/public/examples/sample-profile-banner.png b/public/examples/sample-profile-banner.png new file mode 100644 index 0000000..0b5041b Binary files /dev/null and b/public/examples/sample-profile-banner.png differ diff --git a/public/mainpage.png b/public/mainpage.png index 9e2190c..aa6e0e9 100644 Binary files a/public/mainpage.png and b/public/mainpage.png differ diff --git a/public/preview.png b/public/preview.png index 7671f15..aa6e0e9 100644 Binary files a/public/preview.png and b/public/preview.png differ diff --git a/public/screenshot-getting-started-connect-1.png b/public/screenshot-getting-started-connect-1.png index 80e8d3d..5016cca 100644 Binary files a/public/screenshot-getting-started-connect-1.png and b/public/screenshot-getting-started-connect-1.png differ diff --git a/public/screenshot-getting-started-connect-2.png b/public/screenshot-getting-started-connect-2.png index 14079e7..bb88c34 100644 Binary files a/public/screenshot-getting-started-connect-2.png and b/public/screenshot-getting-started-connect-2.png differ diff --git a/public/screenshot-getting-started-install-2.png b/public/screenshot-getting-started-install-2.png index 80e8d3d..915bf16 100644 Binary files a/public/screenshot-getting-started-install-2.png and b/public/screenshot-getting-started-install-2.png differ diff --git a/public/screenshot-users-chat-community.png b/public/screenshot-users-chat-community.png new file mode 100644 index 0000000..c7376d4 Binary files /dev/null and b/public/screenshot-users-chat-community.png differ diff --git a/src/components/ChatBackgroundExample.astro b/src/components/ChatBackgroundExample.astro new file mode 100644 index 0000000..5105518 --- /dev/null +++ b/src/components/ChatBackgroundExample.astro @@ -0,0 +1,40 @@ +
+
+ + +
+
# lounge
+
SamReady to join the call?
+
AlexYep, I can see the lake behind our chat.
+
Write a message…
+
+
+
Illustrative preview with the sample wallpaper, a dark overlay, and readable messages.
+
+ + diff --git a/src/components/ProfileExample.astro b/src/components/ProfileExample.astro new file mode 100644 index 0000000..38dc8c7 --- /dev/null +++ b/src/components/ProfileExample.astro @@ -0,0 +1,141 @@ +--- +const profiles = [ + { label: 'Cats', name: 'Alex', tagline: 'Here for the late-night conversations.', avatar: '/examples/sample-avatar.png', avatarAlt: 'Black cat wearing blue headphones', banner: '/examples/banners/cats.png', bannerAlt: 'Cats at a glowing night window' }, + { label: 'Dogs', name: 'Scout', tagline: 'Walk break and voice chat.', avatar: '/examples/avatars/dog.png', avatarAlt: 'Golden retriever wearing a teal scarf', banner: '/examples/banners/dogs.png', bannerAlt: 'Sunset over a meadow and trail' }, + { label: 'Cars', name: 'Torque', tagline: 'Back from the coastal drive.', avatar: '/examples/avatars/car-enthusiast.png', avatarAlt: 'Midnight-blue sports coupe', banner: '/examples/banners/cars.png', bannerAlt: 'Sports car on a coastal road at dusk' }, + { label: 'Anime · pop', name: 'Rin', tagline: 'Sketchbook open.', avatar: '/examples/avatars/anime-girl.png', avatarAlt: 'Original pop-color anime character', banner: '/examples/banners/anime.png', bannerAlt: 'Two anime friends against vivid graphic color' }, + { label: 'Anime · VN', name: 'Mira', tagline: 'A little art and a little tea.', avatar: '/examples/avatars/anime-pastel.png', avatarAlt: 'Original visual-novel anime character', banner: '/examples/banners/anime-pastel.png', bannerAlt: 'Two anime friends on a clean white background' }, + { label: 'Anime · demon', name: 'Nyx', tagline: 'Game night starts at eight.', avatar: '/examples/avatars/anime-demon.png', avatarAlt: 'Original cartoon demon character', banner: '/examples/banners/anime-demon.png', bannerAlt: 'Two cartoon demon friends on a burgundy background' }, + { label: 'Manga', name: 'Sora', tagline: 'One more chapter.', avatar: '/examples/avatars/manga-reader.png', avatarAlt: 'Monochrome ink portrait of a manga reader', banner: '/examples/banners/manga.png', bannerAlt: 'Ink-style rainy street and bookshop' }, + { label: 'K-pop', name: 'Hana', tagline: 'Playlist curator.', avatar: '/examples/avatars/k-pop.png', avatarAlt: 'Fictional pop performer under stage lights', banner: '/examples/banners/k-pop.png', bannerAlt: 'Lavender and cyan concert lights' }, + { label: 'Comics', name: 'Comet', tagline: 'Panels, capes, and big ideas.', avatar: '/examples/avatars/comics.png', avatarAlt: 'Original comic explorer wearing an amber visor', banner: '/examples/banners/comics.png', bannerAlt: 'Graphic futuristic city at sunset' }, + { label: 'Flowers', name: 'Flora', tagline: 'Roses are blooming.', avatar: '/examples/avatars/flowers.png', avatarAlt: 'Peony and rose arrangement', banner: '/examples/banners/flowers.png', bannerAlt: 'Three flowers against an airy peach backdrop' }, +]; +--- + +
+
+ +
+ {profiles[0].avatarAlt} +
+ {profiles[0].name} + {profiles[0].tagline} +
+
+
+
Example profile preview. Select a person to see their avatar and matching banner.
+ +

Cats profile selected

+
+ + + + diff --git a/src/content/docs/admin/bans.mdx b/src/content/docs/admin/bans.mdx index 277599e..9177cb5 100644 --- a/src/content/docs/admin/bans.mdx +++ b/src/content/docs/admin/bans.mdx @@ -48,10 +48,9 @@ Open **Admin, Ban list**, click **Add ban**: Useful when you know who you want to block before they connect. -## Auto-ban +## Auto-ban on the older C++ server -The server can auto-ban brute-force connection attempts. Add these -to the `environment:` block of your `docker-compose.yml`: +The settings below apply only to the older C++ server image. They are not Starling configuration. For Starling, consult its [current TOML reference](https://github.com/Fancy-Mumble/starling/blob/main/examples/reference.toml) before configuring connection limits: ```yaml environment: diff --git a/src/content/docs/admin/server-plugins.mdx b/src/content/docs/admin/server-plugins.mdx index 90184b3..3f11c1d 100644 --- a/src/content/docs/admin/server-plugins.mdx +++ b/src/content/docs/admin/server-plugins.mdx @@ -1,84 +1,10 @@ --- -title: Server Plugins -description: Install, enable, disable, and remove server-side plugins from the admin panel. -sidebar: - order: 10 +title: Server plugins +description: Understand Starling's plugin host and its current installation path. --- -import { Steps, Aside, Card } from '@astrojs/starlight/components'; +Starling has a plugins service and a Rust plugin host. It can load native plugins and WebAssembly components from its configured plugin directory. The host has been exercised with the published native examples and a WebAssembly component; installing plugin bytes over the wire and operator REST routes remain unfinished in the checked-out implementation. -The **Server Plugins** tab in the admin panel lets you manage all -plugins running on your Fancy Mumble server. Plugins extend the -server with new behaviour — slash commands, interactive message cards, -modals, live settings panels, and more. +For now, operators place a compatible plugin binary in the configured plugins directory and enable it through the available plugin RPC. Check its startup logs and advertised plugin registry before expecting client controls to appear. A built-in service named plugins does not mean every plugin from the older C++ server has been ported. - - -
-  Screenshot placeholder: Server Plugins tab with three installed plugins. -
- -## What the list shows - -Each row in the plugin list displays: - -| Field | Meaning | -|-------|---------| -| **Name** | Internal plugin identifier (e.g. `fancy-greeter`). | -| **Version** | Installed version string. | -| **Status** | Enabled (green) or disabled (grey). | -| **Loaded** | Whether the plugin process is currently running. | -| **Marketplace** | Badge if the plugin was installed from the marketplace. | -| **Installed at** | UTC timestamp of when the plugin was installed. | - -## Enable and disable plugins - -Toggle the power-button icon next to a plugin to enable or disable it -without uninstalling. A disabled plugin stays on disk but its process -is stopped and its manifest is no longer advertised to clients. - -The change is confirmed by a `plugin-admin-ack` event from the server. -If the server returns an error it is shown in a banner above the list. - -## Uninstall a plugin - -Click the **trash icon** next to a marketplace-installed plugin and -confirm the dialog. - - - -## Install from the Marketplace - -The **Marketplace** tab (see [Marketplace](./marketplace)) lets you -browse and install community plugins. Once installed they appear in -this list automatically. - -## Refresh - -Click **Refresh** (or the icon in the toolbar) to re-fetch the current -plugin list from the server. The list refreshes automatically after -every install, enable, or disable action. - -## Troubleshooting - -**"Load timed out"** — The server did not respond within 10 seconds. -Check that the server process is running and that you have admin -(Write permission on the root channel) rights. - -**"Unknown error"** — The server returned an error without a message. -Check the server logs for more detail. - -## See also - -- [Marketplace](/admin/marketplace/) — install new plugins from the community catalogue. -- [Using plugins (server config)](/server/plugins/using/) — enable and disable plugins via `mumble-server.ini`, add plugins via Docker volume mount, and view startup logs. -- [Plugins (user view)](/users/plugins/) — what your users see when a new plugin appears on the server (trust prompt, slash commands, capability management). +See the [Starling plugin-host status and porting plan](https://github.com/Fancy-Mumble/starling/blob/main/docs/PLUGIN-HOST-PLAN.md) and [feature availability](/server/features/). The older [plugin guides](/server/plugins/overview/) describe the C++ fork's host and INI configuration. diff --git a/src/content/docs/admin/superuser.mdx b/src/content/docs/admin/superuser.mdx index b12f7ce..0a87ed6 100644 --- a/src/content/docs/admin/superuser.mdx +++ b/src/content/docs/admin/superuser.mdx @@ -1,148 +1,18 @@ --- -title: SuperUser & first login -description: Take ownership of your fresh server with the SuperUser admin account. -sidebar: - order: 1 +title: SuperUser and first login +description: Sign in with Starling's first-run administrator account. --- -import { Steps, Aside, Card, CardGrid } from '@astrojs/starlight/components'; +Starling creates the built-in SuperUser account on first start and prints a generated password. Save it in a password manager. In the distributed Docker stack, inspect `docker compose logs userdata`; in the all-in-one service, use `docker compose logs starling`. The password is only printed when it is created; it does not appear on every restart. -Every Mumble server has a built-in **SuperUser** account. It is the -one account that bypasses every ACL on the server, so it is what you -use to **bootstrap your community**. Once you have set up roles and -registered users, you will almost never log in as SuperUser again. +Open Fancy Mumble, connect to your server, enter SuperUser as the username, and use the generated password when prompted. The SuperUser bypasses channel ACLs and can bootstrap channels, accounts, and server settings. +If you lose the password, stop the server and run the command against the same data directory or service configuration as the running server: -
-  Screenshot placeholder: admin panel after first SuperUser login, with empty role and user lists. -
+~~~sh +starling set-superuser-password "a-new-strong-password" --server 1 --config starling.toml +~~~ -## Set the SuperUser password +Omit the server argument for the first configured instance. The older Docker variable MUMBLE_SUPERUSER_PASSWORD and the C++ mumble-server --set-su-pw command do not configure Starling. -If you set `MUMBLE_SUPERUSER_PASSWORD` in your Docker setup, you -already have a password. Skip ahead. - -If not, the password was randomly generated on the first boot. Find -it in the logs: - -```bash -docker logs mumble-server 2>&1 | grep -i superuser -``` - -Or set a new one any time: - -```bash -docker exec mumble-server mumble-server \ - --ini /data/mumble_server_config.ini \ - --set-su-pw "your-strong-password" -``` - - - -## Log in as SuperUser - - -1. Open Fancy Mumble. -2. Connect to your server. -3. When the wizard asks for a username, type `SuperUser`. -4. When the password dialog appears, paste your password. -5. The admin button Admin button next to the - disconnect button should now be visible. Click it to open the admin panel. - - -The first time you do this on a fresh server, the SuperUser is the -**only** account, and everyone else who connects is unauthenticated. - -## First steps on a fresh server - -The big checklist: - - - -1. **Set up the welcome text** in **Admin, Server settings**, so new - joiners see a friendly message. - -2. **Create your top-level channels**: lobby, voice, off-topic, and - so on. See [Channels](/admin/channels/). - -3. **Create a "Moderator" role** with channel-management and mute - permissions, and assign it to your most-trusted friends. - See [Roles & permissions](/admin/roles/). - -4. **Create a "Member" role** that gives chat write access to the - right channels, and decide whether you want to require registration - to chat. - -5. **Set up the onboarding flow** if you want new members to pick - their interests on first join. See - [Onboarding workflow](/admin/onboarding/). - -6. **Upload a few custom emotes** as a community starter pack. See - [Custom emotes](/admin/emotes/). - -7. **Take a backup**. See [Upgrade & backup](/server/upgrade/). - - - -## Disable SuperUser after setup - -For ongoing administration, you should **not use SuperUser**. Instead: - - -1. Connect with your own user account. -2. As SuperUser, register your account: right-click your name, **Register**. -3. As SuperUser, give your account the **Administrator** role. -4. Disconnect. -5. Reconnect as your normal user. Verify you have admin access. - - -You can either: - -- **Keep SuperUser as a break-glass account** (recommended), or -- **Disable it** by leaving the password unset and starting the server - fresh. Hard to reverse, so be sure. - -## When to use SuperUser - -Only in two situations: - -- You locked yourself out of the admin role and need to fix the ACL. -- A bug or accident has corrupted permissions and only the - unconditional-bypass account can fix it. - -For everything else, use a regular admin account. - -## Recovering from "I locked myself out" - -If you accidentally removed your own admin role: - - -1. Find the SuperUser password (or reset it as above). -2. Log in as SuperUser. -3. Restore your role. -4. Log out again. - - -## Pitfalls - -- **Cannot log in as SuperUser**: the password is wrong. Reset it - with the `--set-su-pw` command. -- **Register as SuperUser**: not possible by - design. SuperUser is hard-coded outside the user table. -- **Lost the password**: same fix, `--set-su-pw` to set a new one. -- **Changed a password in the app and SuperUser login broke**: the - in-app password in your profile settings applies to your *regular - user account*, not to SuperUser. SuperUser has no profile in the - app - its password is set only via `--set-su-pw` or the - `MUMBLE_SUPERUSER_PASSWORD` environment variable. -- **Can't talk as SuperUser**: you are logged in as SuperUser, but - you cannot talk or see channels. This is normal. SuperUser bypasses - ACLs, but it can also not talk by default. - -## Next step - -Continue with [Channels](/admin/channels/) to set up your space. +After logging in, set a welcome text, create channels, configure ACLs and roles, and make a [backup](/server/upgrade/). diff --git a/src/content/docs/admin/users.mdx b/src/content/docs/admin/users.mdx index c36660f..38dfc6e 100644 --- a/src/content/docs/admin/users.mdx +++ b/src/content/docs/admin/users.mdx @@ -34,13 +34,7 @@ The user right-clicks their own name in the user list and picks - **Auto-approves** (default for many servers). - **Queues for admin approval**. -Configure the gate with: - -```yaml -environment: - MUMBLE_CONFIG_ALLOWREGISTRATION: true - MUMBLE_CONFIG_REGISTRATIONREQUIRESAPPROVAL: false -``` +Registration policy depends on the server implementation. The older C++ image uses MUMBLE_CONFIG_* variables; they do not configure Starling. Check the current [Starling settings reference](https://github.com/Fancy-Mumble/starling/blob/main/examples/reference.toml) and test the desired approval flow before inviting users. ### Admin-initiated diff --git a/src/content/docs/getting-started/connect.mdx b/src/content/docs/getting-started/connect.mdx index 7b2d9d2..38055a7 100644 --- a/src/content/docs/getting-started/connect.mdx +++ b/src/content/docs/getting-started/connect.mdx @@ -1,156 +1,37 @@ --- title: Connect to a server -description: How to join a server with Fancy Mumble, including password prompts and the public server list. -sidebar: - order: 2 +description: Add a saved server, choose an identity, and connect in Nebula or Standard. --- -import { Steps, Tabs, TabItem, Aside, Card, CardGrid } from '@astrojs/starlight/components'; -import PlantUML from '../../../components/PlantUML.astro'; -import { Icon } from 'astro-icon/components'; +Fancy Mumble can connect to Starling and to standard Mumble servers. Ask the server owner for its host name, port if different from **64738**, and any password. -You have installed the app. Now you need somewhere to talk. This page -covers three ways to connect: +## Add a server in Nebula -1. A server address from a friend or admin (most common). -2. Browsing the **Public server list**. -3. Your own self-hosted server (see [Docker quick start](/server/docker/)). +Nebula is the design for a new profile. -## The Connect screen +1. Open **Add server** from the server rail or choose **Add server by address…** from **Quick connect**. +2. Enter the host, port, and the username others should see. The dialog can also save a friendly label, certificate identity, and password. +3. Save the server. Select it in the server rail, then choose **Connect** on its server screen. +4. If prompted, enter the server password or account credentials. The app can remember a password in the operating system's credential store. -When you open Fancy Mumble it shows the **Connect** screen. Three views -are available from the bottom strip: +Nebula Add a server dialog filled with an example display name, address, default port, and username -- **Servers**, your saved servers (default). -- **Public**, browse the global directory. -- **Wizard**, add a new server step by step. +After saving, the server screen shows the identity and **Connect** action. The example address in these screenshots is illustrative; use the address from your server owner. +Nebula saved-server screen showing an example identity and Connect action -Fancy Mumble Connect screen showing the Saved Servers view with a search bar, three localhost server cards, a + Add Server button, and a Browse public servers link at the bottom +To find a server instead, choose **Browse public servers** from Quick connect. A server must opt into the public directory to appear there. -## Quick-add a server +## Add a server in Standard - +Open the **Connect** screen and use the **Wizard** or **+ Add Server** action. Enter the address and username, save, then select the server card to connect. Standard also has a **Public** view for browsing listed servers. Existing profiles that use Standard keep that design. -1. Tap the **+** button (or **Wizard** at the bottom). +## Certificate and identity -2. **Server address**: type the address you were given, for example - `mumble.example.org` or `mumble.example.org:64738`. If no port is - given, the default `64738` is used. +The app remembers a server's TLS certificate after the first connection. If its fingerprint changes later, confirm the change with the server owner before accepting it. The owner may have restored a new data directory or replaced the certificate. - - -3. **Your identity**: pick a username. This is the name others will - see. 3 to 15 characters, letters, numbers, dashes, or underscores - by default. Some servers allow other patterns. - -4. **Give it a name** (Expert only): a friendly label like *Saturday - D&D*. Leave it blank to use the server address. - -5. Click **Save**. The server now appears in your **Servers** list. - - - -## Connect - -Click any saved server card to connect. The status indicator goes -through these stages: - - Idle -Idle --> Connecting : connect -Connecting --> Bootstrapping : handshake complete -Bootstrapping --> Connected : channels & users loaded -Connected --> [*] : disconnect -@enduml -`} /> - -The progress bar stays up not just during the connection handshake -but also while channels, users, and your own session are fetched, so -you do not land on an empty room. - - -Connect screen with a server card mid-connection: the icon shows a pause symbol, the status reads 'Negotiating with server…', and a progress bar is visible below the card - -## Password-protected servers - -If the server is locked with a password, Fancy Mumble pops up a small -dialog after the handshake. - - -Password Required dialog. The message reads 'The server requires a password for SuperUser on localhost. Enter the password to continue connecting.' Below are a PASSWORD field, a Use a different username link, a Save password checkbox, and Cancel / Connect buttons - -Type the password and click **Retry**. The app offers to **remember** -the password in your operating system's secure storage so you do not -get asked again. - -## Untrusted certificate? - -The first time you connect to a server, the app pins the server's -identity. If that identity later changes (for example, the server was -reinstalled), the app refuses to connect and shows you the new details. - -- If the change is legitimate (the admin told you), click **Accept**. -- If you did not expect a change, **close the dialog** and ask the - admin to confirm. - - - -## Browse public servers - -The **Public** tab lists servers from the global directory. You can -filter by **country**, **users online**, and **name**. Click a row to -connect (no save required). - - -Public Servers view listing servers sorted by name with columns for Country, Server, Users, Ping (colour-coded green to red), and Version. A search bar sits above the table and a Saved servers link is in the top-right corner - - - -## Common connection issues - - - - The most common cause. Double-check the address. The default port - is **64738**. - - - Older servers may not understand the newer handshake. Ask the - admin to update the server. - - - Corporate firewall blocking 64738? Try **Force TCP** under - [Audio settings](/users/audio/#network). - - - See "Untrusted certificate" above. Do not accept unless the admin - told you the server was reinstalled. - - - -If none of these help, see [Connection problems](/troubleshooting/connection/). +A saved certificate identity matters for registration and some Fancy features. Nebula selects an existing default certificate when you add a server, while an existing saved server keeps the identity you chose. For account or server password problems, see [Connection troubleshooting](/troubleshooting/connection/). ## Next step -Continue with [Your first voice call](/getting-started/first-call/). +[Join a channel and make your first call](/getting-started/first-call/). diff --git a/src/content/docs/getting-started/first-call.mdx b/src/content/docs/getting-started/first-call.mdx index a99bec7..0b0d754 100644 --- a/src/content/docs/getting-started/first-call.mdx +++ b/src/content/docs/getting-started/first-call.mdx @@ -10,6 +10,10 @@ import { Icon } from 'astro-icon/components'; You are connected. Here is how to start **talking**. + + ## 1. Move into a channel Mumble does not have one big room, channels are explicit. In the left diff --git a/src/content/docs/getting-started/install.mdx b/src/content/docs/getting-started/install.mdx index cc9d3ab..cea9a12 100644 --- a/src/content/docs/getting-started/install.mdx +++ b/src/content/docs/getting-started/install.mdx @@ -11,8 +11,12 @@ import { Icon } from 'astro-icon/components'; Fancy Mumble runs on Windows, Linux, and Android. Pick your platform below. + + -Fancy Mumble first-run Connect screen: the app logo and 'Choose a server to connect' prompt at the top, an empty Saved Servers list with a + Add Server button, and a Browse public servers link +Nebula server list on a new profile, with an Add a server action and a prompt to pick a server