From e64b5216c573e4c8cc6a6dbf9be0749bb5e05389 Mon Sep 17 00:00:00 2001 From: ywkuno <21991205+ywkuno@users.noreply.github.com> Date: Thu, 21 May 2026 16:41:57 +1000 Subject: [PATCH 01/60] fix: retarget web release checks to Nimbus --- release_notes/drafts/nimbus-v0.1.0-alpha.1.md | 6 ++ .../common/assets/web/services/changelog.ts | 4 +- .../common/assets/web/sunshine_version.ts | 11 +-- .../common/assets/web/utils/changelog.ts | 8 +- .../assets/web/utils/releaseRepository.ts | 27 ++++++ .../common/assets/web/views/DashboardView.vue | 92 ++++++++++--------- 6 files changed, 93 insertions(+), 55 deletions(-) create mode 100644 src_assets/common/assets/web/utils/releaseRepository.ts diff --git a/release_notes/drafts/nimbus-v0.1.0-alpha.1.md b/release_notes/drafts/nimbus-v0.1.0-alpha.1.md index 8ca5a773ad..b5bfc68656 100644 --- a/release_notes/drafts/nimbus-v0.1.0-alpha.1.md +++ b/release_notes/drafts/nimbus-v0.1.0-alpha.1.md @@ -24,6 +24,9 @@ has wider testers. - Fixed Windows package target dependencies so `package_installer` builds the helper executables and Web UI payload before CPack/WiX packaging. - Documented the first alpha tag policy and installer fixture gate. +- Retargeted the Web UI release checks to `kunolabs/Nimbus` and filtered update + banners to Nimbus-owned `nimbus-v*` tags so the alpha cannot advertise an + inherited Vibepollo download or downgrade path. ## Compatibility Notes @@ -64,6 +67,9 @@ Pending before release: artifacts. - Runtime identity migration is not complete; this alpha is branded Nimbus at the public package layer, not a full rename of every inherited runtime id. +- The Web UI may still include inherited Vibepollo, Apollo, or Sunshine wording, + but update banners and release-note links are now restricted to Nimbus + releases. - Symbols, SignPath signing, WebRTC asset publishing, and automatic issue closure remain disabled. diff --git a/src_assets/common/assets/web/services/changelog.ts b/src_assets/common/assets/web/services/changelog.ts index a7f7f90824..6b333bf2b9 100644 --- a/src_assets/common/assets/web/services/changelog.ts +++ b/src_assets/common/assets/web/services/changelog.ts @@ -8,6 +8,7 @@ import { mergeChangelogEntries, sortChangelogEntries, } from '@/utils/changelog'; +import { NIMBUS_RELEASES_API_URL } from '@/utils/releaseRepository'; export interface LoadChangelogResult { releases: ChangelogEntry[]; @@ -18,7 +19,6 @@ export interface LoadChangelogResult { } const CHANGELOG_ASSET_URL = './assets/changelog.json'; -const GITHUB_RELEASES_URL = 'https://api.github.com/repos/Nonary/Vibepollo/releases'; function isChangelogEntry(value: unknown): value is ChangelogEntry { return !!value && typeof value === 'object' && typeof (value as ChangelogEntry).tag === 'string'; @@ -44,7 +44,7 @@ export async function loadBundledChangelog(): Promise { } export async function loadGithubChangelog(): Promise { - const response = await fetch(GITHUB_RELEASES_URL, { + const response = await fetch(NIMBUS_RELEASES_API_URL, { headers: { Accept: 'application/vnd.github+json' }, }); if (!response.ok) throw new Error(`HTTP ${response.status}`); diff --git a/src_assets/common/assets/web/sunshine_version.ts b/src_assets/common/assets/web/sunshine_version.ts index 06e2dd567d..e70a204f89 100644 --- a/src_assets/common/assets/web/sunshine_version.ts +++ b/src_assets/common/assets/web/sunshine_version.ts @@ -1,3 +1,5 @@ +import { normalizeReleaseTag } from '@/utils/releaseRepository'; + // Minimal GitHub release shape used by the UI and SunshineVersion. // Keep only the fields we actually reference in the code to reduce noise. export interface GitHubRelease { @@ -54,11 +56,7 @@ export default class SunshineVersion { */ parseVersion(version: string): [number, number, number] { if (!version) return [0, 0, 0]; - let v = version.trim(); - // Strip leading 'v' - if (v.startsWith('v') || v.startsWith('V')) { - v = v.slice(1); - } + let v = normalizeReleaseTag(version); // Split out build metadata and prerelease but keep prerelease for separate parsing const plusIdx = v.indexOf('+'); if (plusIdx >= 0) v = v.slice(0, plusIdx); @@ -85,8 +83,7 @@ export default class SunshineVersion { /** Parse prerelease identifiers (semver) as array of numbers/strings */ parsePreRelease(version: string): (string | number)[] { if (!version) return []; - let v = version.trim(); - if (v.startsWith('v') || v.startsWith('V')) v = v.slice(1); + let v = normalizeReleaseTag(version); const plusIdx = v.indexOf('+'); if (plusIdx >= 0) v = v.slice(0, plusIdx); const dashIdx = v.indexOf('-'); diff --git a/src_assets/common/assets/web/utils/changelog.ts b/src_assets/common/assets/web/utils/changelog.ts index 5d6f2fa6e0..8653afa069 100644 --- a/src_assets/common/assets/web/utils/changelog.ts +++ b/src_assets/common/assets/web/utils/changelog.ts @@ -1,3 +1,5 @@ +import { isNimbusReleaseTag, normalizeReleaseTag } from './releaseRepository'; + export type ChangelogSource = 'bundled' | 'github'; export type ChangelogChannel = 'stable' | 'alpha' | 'beta' | 'rc' | 'other'; @@ -47,8 +49,7 @@ interface VersionInfo { } function stripTagPrefix(tag: string): string { - const trimmed = (tag || '').trim(); - return trimmed.startsWith('v') || trimmed.startsWith('V') ? trimmed.slice(1) : trimmed; + return normalizeReleaseTag(tag); } export function normalizeChangelogTag(tag: string): string { @@ -210,13 +211,14 @@ export function parseBundledReleaseNote(filename: string, content: string): Chan export function githubReleaseToChangelogEntry(release: GitHubReleaseLike): ChangelogEntry | null { if (!release || release.draft || !release.tag_name) return null; + if (!isNimbusReleaseTag(release.tag_name)) return null; const tag = normalizeChangelogTag(release.tag_name); if (!/^\d+\.\d+(?:\.\d+)?(?:[-+].*)?$/i.test(tag)) return null; const info = parseChangelogVersion(tag); const body = (release.body ?? '').trim(); const entry: ChangelogEntry = { tag, - name: (release.name || `Vibepollo ${tag}`).trim(), + name: (release.name || `Nimbus ${tag}`).trim(), date: (release.published_at || release.created_at || '').slice(0, 10), body, sections: parseMarkdownSections(body), diff --git a/src_assets/common/assets/web/utils/releaseRepository.ts b/src_assets/common/assets/web/utils/releaseRepository.ts new file mode 100644 index 0000000000..21851afa0d --- /dev/null +++ b/src_assets/common/assets/web/utils/releaseRepository.ts @@ -0,0 +1,27 @@ +export const NIMBUS_RELEASE_REPO_OWNER = 'kunolabs'; +export const NIMBUS_RELEASE_REPO_NAME = 'Nimbus'; +export const NIMBUS_RELEASE_TAG_PREFIX = 'nimbus-v'; + +export const NIMBUS_RELEASES_API_URL = `https://api.github.com/repos/${NIMBUS_RELEASE_REPO_OWNER}/${NIMBUS_RELEASE_REPO_NAME}/releases`; +export const NIMBUS_ISSUE_REPORT_URL = `https://github.com/${NIMBUS_RELEASE_REPO_OWNER}/${NIMBUS_RELEASE_REPO_NAME}/issues/new`; + +const NIMBUS_RELEASE_TAG_PATTERN = + /^nimbus-v\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/i; + +export function normalizeReleaseTag(tag: string): string { + let normalized = (tag || '').trim().replace(/\.md$/i, ''); + if (normalized.toLowerCase().startsWith(NIMBUS_RELEASE_TAG_PREFIX)) { + normalized = normalized.slice(NIMBUS_RELEASE_TAG_PREFIX.length); + } else if (normalized.startsWith('v') || normalized.startsWith('V')) { + normalized = normalized.slice(1); + } + return normalized; +} + +export function normalizeReleaseTagKey(tag: string): string { + return normalizeReleaseTag(tag).toLowerCase(); +} + +export function isNimbusReleaseTag(tag: string): boolean { + return NIMBUS_RELEASE_TAG_PATTERN.test((tag || '').trim().replace(/\.md$/i, '')); +} diff --git a/src_assets/common/assets/web/views/DashboardView.vue b/src_assets/common/assets/web/views/DashboardView.vue index 3337abeb65..04d838ad26 100644 --- a/src_assets/common/assets/web/views/DashboardView.vue +++ b/src_assets/common/assets/web/views/DashboardView.vue @@ -149,7 +149,7 @@ strong size="small" class="w-full justify-center sm:w-auto" - href="https://github.com/Nonary/vibeshine/issues/new?template=bug_report.yml" + :href="NIMBUS_ISSUE_REPORT_URL" target="_blank" rel="noopener noreferrer" > @@ -487,6 +487,13 @@ import { useAppsStore } from '@/stores/apps'; import { http } from '@/http'; import type { CrashDumpStatus } from '@/utils/crashDump'; import { isCrashDumpEligible, sanitizeCrashDumpStatus } from '@/utils/crashDump'; +import { + NIMBUS_ISSUE_REPORT_URL, + NIMBUS_RELEASES_API_URL, + isNimbusReleaseTag, + normalizeReleaseTag, + normalizeReleaseTagKey, +} from '@/utils/releaseRepository'; const installedVersion = ref(new VibepolloVersion('0.0.0')); const githubRelease = ref(null); @@ -554,6 +561,25 @@ function isRecord(value: unknown): value is Record { return !!value && typeof value === 'object'; } +function isDashboardRelease(value: unknown): value is GitHubRelease { + if (!isRecord(value)) return false; + const tagName = value['tag_name']; + return ( + value['draft'] !== true && + typeof tagName === 'string' && + isNimbusReleaseTag(tagName) + ); +} + +function latestReleaseByVersion(releases: GitHubRelease[]): GitHubRelease | null { + return releases.reduce((best, candidate) => { + if (!best) return candidate; + return VibepolloVersion.fromRelease(candidate).isGreater(VibepolloVersion.fromRelease(best)) + ? candidate + : best; + }, null); +} + function isPlayniteFullscreenEntry(app: Record): boolean { if (app['playnite-fullscreen'] === true) { return true; @@ -637,47 +663,27 @@ async function runVersionChecks() { branch.value = cfg.branch || ''; commit.value = cfg.commit || ''; - // Remote release checks (GitHub) - try { - githubRelease.value = await fetch( - 'https://api.github.com/repos/Nonary/Vibepollo/releases/latest', - ).then((r) => r.json()); - } catch (e) { - // eslint-disable-next-line no-console - console.warn('[Dashboard] latest release fetch failed', e); - } - // Fetch list of releases to locate prereleases and determine installed stability + githubRelease.value = null; + preReleaseRelease.value = null; + installedIsPrerelease.value = false; + + // Fetch Nimbus-owned releases only; inherited upstream tags must not drive update banners. try { - const releases = await fetch('https://api.github.com/repos/Nonary/Vibepollo/releases').then( - (r) => r.json(), - ); + const releases = await fetch(NIMBUS_RELEASES_API_URL, { + headers: { Accept: 'application/vnd.github+json' }, + }).then((r) => r.json()); if (Array.isArray(releases)) { - // Pick the latest prerelease by semver (not just the first one) - const prereleases = releases.filter((r: any) => r && r.prerelease && !r.draft); - if (prereleases.length > 0) { - let best = prereleases[0]; - let bestV = VibepolloVersion.fromRelease(best); - for (let i = 1; i < prereleases.length; i++) { - const cand = prereleases[i]; - const candV = VibepolloVersion.fromRelease(cand); - if (candV.isGreater(bestV)) { - best = cand; - bestV = candV; - } - } - preReleaseRelease.value = best as GitHubRelease; - } + const nimbusReleases = releases.filter(isDashboardRelease); + githubRelease.value = latestReleaseByVersion( + nimbusReleases.filter((release) => release.prerelease !== true), + ); + preReleaseRelease.value = latestReleaseByVersion( + nimbusReleases.filter((release) => release.prerelease === true), + ); // Determine if installed tag corresponds to a prerelease on GitHub - const installedTag = installedVersion.value?.version || ''; - const installedTagV = installedTag.toLowerCase().startsWith('v') - ? installedTag - : 'v' + installedTag; - const match = releases.find( - (r: any) => - r && - !r.draft && - typeof r.tag_name === 'string' && - (r.tag_name === installedTag || r.tag_name === installedTagV), + const installedTagKey = normalizeReleaseTagKey(installedVersion.value?.version || ''); + const match = nimbusReleases.find( + (release) => normalizeReleaseTagKey(release.tag_name) === installedTagKey, ); installedIsPrerelease.value = !!(match && match.prerelease === true); } @@ -966,19 +972,19 @@ const displayVersion = computed(() => { const v = installedVersion.value?.version || '0.0.0'; if (!v || v === '0.0.0') { const pre = preReleaseRelease.value?.tag_name || ''; - if (pre) return pre.replace(/^v/i, ''); + if (pre) return normalizeReleaseTag(pre); } - return v; + return normalizeReleaseTag(v); }); const stableBuildAvailable = computed(() => { if (!githubRelease.value) return false; return githubVersion.value.isGreater(installedVersion.value); }); const preReleaseBuildAvailable = computed(() => { - if (!preReleaseRelease.value || !githubRelease.value) return false; + if (!preReleaseRelease.value) return false; return ( preReleaseVersion.value.isGreater(installedVersion.value) && - preReleaseVersion.value.isGreater(githubVersion.value) + (!githubRelease.value || preReleaseVersion.value.isGreater(githubVersion.value)) ); }); const buildVersionIsDirty = computed(() => { From 82eae641a1f8d7208e8bc0625f9f1db0591a0c73 Mon Sep 17 00:00:00 2001 From: ywkuno <21991205+ywkuno@users.noreply.github.com> Date: Thu, 21 May 2026 16:50:51 +1000 Subject: [PATCH 02/60] docs: add Nimbus UI identity plan --- README.md | 2 + docs/contributing.md | 3 ++ docs/ui-identity-plan.md | 83 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 docs/ui-identity-plan.md diff --git a/README.md b/README.md index fb34e2d994..c4f3b98be2 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,8 @@ Early Nimbus work is focused on: - Preparing the future Lucent client track. See [ROADMAP.md](ROADMAP.md) for the current maintainer roadmap. +See [docs/ui-identity-plan.md](docs/ui-identity-plan.md) for the staged Nimbus +Web UI identity direction. ## Building diff --git a/docs/contributing.md b/docs/contributing.md index 1ea24d3116..21f937def5 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -51,6 +51,9 @@ The Web UI lives under `src_assets/common/assets/web`. UI work toward first-class Tailwind utilities. - If you add files outside the existing Web UI tree, update `tailwind.config.js` so classes are not purged. +- For visible redesign work, start with + [ui-identity-plan.md](ui-identity-plan.md) and keep changes in small, + screenshot-backed slices. ### Documentation diff --git a/docs/ui-identity-plan.md b/docs/ui-identity-plan.md new file mode 100644 index 0000000000..00aaec2560 --- /dev/null +++ b/docs/ui-identity-plan.md @@ -0,0 +1,83 @@ +# Nimbus UI Identity Plan + +Nimbus should feel like a calm host console for game streaming: operational, +local-first, and trustworthy under maintenance pressure. This document records +the first visual direction before a full Web UI overhaul. + +## Goals + +- Make Nimbus visibly distinct from Apollo, Vibepollo, Sunshine, and Vibeshine + without breaking inherited compatibility. +- Keep the first screen useful: host status, release safety, driver readiness, + clients, and common actions. +- Prefer compact, repeatable controls over marketing-style layout. +- Keep design work progressive so each PR is reviewable and reversible. + +## Identity Principles + +| Principle | UI Consequence | +| --- | --- | +| Local-first trust | Show service, ports, drivers, release state, and fixture state plainly. | +| Host-console calm | Use restrained surfaces, crisp borders, small radii, and dense scan paths. | +| Streaming confidence | Surface stream health, display state, pairing, and recovery actions early. | +| Compatibility honesty | Label inherited runtime names as compatibility choices until migration exists. | +| Contributor clarity | Keep release gates, issue links, and support routes visibly Nimbus-owned. | + +## Draft Token Direction + +Nimbus should avoid becoming a single-hue blue or purple UI. The initial palette +balances a neutral operational base with distinct signal colors. + +| Token | Hex | Use | +| --- | --- | --- | +| Cloud Ink | `#0D1117` | Sidebar, top-level contrast, brand anchor | +| Nimbus Blue | `#2563EB` | Primary actions, active navigation, links | +| Lucent Mint | `#2DD4BF` | Healthy streaming, client/pairing accent | +| Signal Amber | `#F59E0B` | Unsigned builds, driver warnings, pending gates | +| Health Green | `#22C55E` | Passing fixture, running services | +| Fault Red | `#F43F5E` | Crash, blocked release, destructive actions | +| Mist Surface | `#F6F8FB` | App background | +| Line Frost | `#D8E3F2` | Borders and dividers | + +## Component Priorities + +| Priority | Component | Reason | +| --- | --- | --- | +| 1 | App shell and navigation | Replaces the strongest inherited identity signals. | +| 1 | Release/status alert | Prevents unsafe upstream update or downgrade prompts. | +| 1 | Host status cards | Makes install, service, port, and driver state inspectable. | +| 2 | Buttons and icon buttons | Establishes action hierarchy across settings and dashboard. | +| 2 | Form controls | Settings pages need dense, predictable editing surfaces. | +| 2 | Changelog/release notes panel | Keeps alpha caveats and release provenance readable. | +| 3 | Client/session views | Connects Nimbus host identity with Lucent client direction. | + +## Progressive Overhaul + +```mermaid +flowchart LR + A["Release-safe links and visible names"] --> B["Dashboard shell and status surfaces"] + B --> C["Settings controls and navigation density"] + C --> D["Client, stream, and pairing views"] + D --> E["Shared Vue components and token cleanup"] + E --> F["Lucent cross-product identity check"] +``` + +## First PR Slices + +| Slice | Scope | Validation | +| --- | --- | --- | +| UI-1 | Browser title, login shell, dashboard greeting, resource links | Vite build and VM screenshot | +| UI-2 | Dashboard status cards and update/release alert layout | Vite build and responsive screenshots | +| UI-3 | Settings navigation and form density pass | Vite build, keyboard navigation, mobile width check | +| UI-4 | Changelog and support surfaces | Vite build, no upstream release links | + +## Figma Status + +A private `Nimbus UI Kit v0.1` Figma file exists for maintainer exploration. +The current Starter-plan MCP call limit blocked automated canvas population, so +the repo keeps this document as the source of truth until the Figma board can be +filled from the same component and token plan. + +Do not treat the Figma board as implementation authority until it has been +reviewed against actual Web UI screenshots and accepted as the current design +contract. From ce9ec7aaf4cdc34e6470f3337f9fa7584bd72a0b Mon Sep 17 00:00:00 2001 From: ywkuno <21991205+ywkuno@users.noreply.github.com> Date: Thu, 21 May 2026 16:58:01 +1000 Subject: [PATCH 03/60] fix: rebrand visible web shell to Nimbus --- src_assets/common/assets/web/App.vue | 8 +++---- src_assets/common/assets/web/Login.vue | 4 ++-- src_assets/common/assets/web/ResourceCard.vue | 8 +++---- .../assets/web/public/assets/locale/en.json | 22 +++++++++--------- .../web/public/assets/locale/en_GB.json | 22 +++++++++--------- .../web/public/assets/locale/en_US.json | 23 +++++++++---------- .../common/assets/web/views/DashboardView.vue | 4 ++-- 7 files changed, 45 insertions(+), 46 deletions(-) diff --git a/src_assets/common/assets/web/App.vue b/src_assets/common/assets/web/App.vue index 738a34b665..99b80c6771 100644 --- a/src_assets/common/assets/web/App.vue +++ b/src_assets/common/assets/web/App.vue @@ -9,7 +9,7 @@ class="sticky top-0 z-30 h-14 flex items-center gap-4 px-4 border-b border-dark/10 dark:border-light/10 bg-light/70 dark:bg-dark/60 backdrop-blur supports-[backdrop-filter]:bg-light/40 supports-[backdrop-filter]:dark:bg-dark/40" >
- Vibepollo + Nimbus

{{ displayTitle && displayTitle.includes('.') ? $t(displayTitle) : displayTitle @@ -93,7 +93,7 @@
Vibepollo
@@ -111,7 +111,7 @@

- Vibepollo + Nimbus

@@ -186,7 +186,7 @@ watch( '/clients': 'clients.nav', '/webrtc': 'webrtc.nav', }; - const v = map[p] || 'Vibepollo'; + const v = map[p] || 'Nimbus'; pageTitle.value = v; }, { immediate: true }, diff --git a/src_assets/common/assets/web/Login.vue b/src_assets/common/assets/web/Login.vue index 4b67128930..cbc4fca228 100644 --- a/src_assets/common/assets/web/Login.vue +++ b/src_assets/common/assets/web/Login.vue @@ -5,7 +5,7 @@ - + {{ $t('auth.login_title') }} @@ -111,7 +111,7 @@ function redirectNowIfAuthenticated() { } onMounted(() => { - document.title = `Vibepollo - ${t('auth.login_title')}`; + document.title = `Nimbus - ${t('auth.login_title')}`; const urlParams = new URLSearchParams(window.location.search); const redirectParam = urlParams.get('redirect'); if (redirectParam) { diff --git a/src_assets/common/assets/web/ResourceCard.vue b/src_assets/common/assets/web/ResourceCard.vue index 0f068fa16a..b8bf6031df 100644 --- a/src_assets/common/assets/web/ResourceCard.vue +++ b/src_assets/common/assets/web/ResourceCard.vue @@ -84,14 +84,14 @@ const resources = computed(() => [ avatarStyle: 'background-color: rgba(99, 102, 241, 0.15); color: rgb(99, 102, 241);', }, { - href: 'https://github.com/Nonary/Vibepollo/discussions', + href: 'https://github.com/kunolabs/Nimbus/discussions', icon: 'fab fa-github', title: t('resource_card.github_discussions'), description: 'GitHub Discussions', avatarStyle: 'background-color: rgba(16, 185, 129, 0.15); color: rgb(16, 185, 129);', }, { - href: 'https://github.com/Nonary/Vibepollo/issues', + href: 'https://github.com/kunolabs/Nimbus/issues', icon: 'fab fa-github', title: 'GitHub Issues', description: 'Report bugs or request features', @@ -101,14 +101,14 @@ const resources = computed(() => [ const legalLinks = computed(() => [ { - href: 'https://github.com/Nonary/Vibepollo/blob/master/LICENSE', + href: 'https://github.com/kunolabs/Nimbus/blob/master/LICENSE', icon: 'fas fa-file-alt', title: t('resource_card.license'), description: 'View license', avatarStyle: 'background-color: rgba(34, 197, 94, 0.15); color: rgb(34, 197, 94);', }, { - href: 'https://github.com/Nonary/Vibepollo/blob/master/NOTICE', + href: 'https://github.com/kunolabs/Nimbus/blob/master/NOTICE', icon: 'fas fa-exclamation', title: t('resource_card.third_party_notice'), description: 'Third-party notices', diff --git a/src_assets/common/assets/web/public/assets/locale/en.json b/src_assets/common/assets/web/public/assets/locale/en.json index 6485ab5562..940ec1946c 100644 --- a/src_assets/common/assets/web/public/assets/locale/en.json +++ b/src_assets/common/assets/web/public/assets/locale/en.json @@ -369,11 +369,11 @@ "gamepad_x360": "X360 (Xbox 360)", "gamepad_xone": "XOne (Xbox One)", "vigem_missing_title": "Virtual Gamepad Driver (ViGEm) not installed", - "vigem_missing_desc": "Vibepollo requires the ViGEmBus driver to emulate controllers on Windows. It is no longer bundled. Please download and install it manually:", + "vigem_missing_desc": "Nimbus requires the ViGEmBus driver to emulate controllers on Windows. It is no longer bundled. Please download and install it manually:", "vigem_install": "Download ViGEmBus", "vigem_detected_version": "Detected", "crash_dump_title": "Recent crash detected", - "crash_dump_desc": "Vibepollo detected a crash dump within the last week. Please export a crash bundle and include it when opening an issue.", + "crash_dump_desc": "Nimbus detected a crash dump within the last week. Please export a crash bundle and include it when opening an issue.", "crash_dump_export": "Export Crash Bundle", "crash_dump_export_preparing": "Preparing Crash Bundle...", "crash_dump_export_error": "Failed to export crash bundle.", @@ -613,23 +613,23 @@ "legacy_ordering_desc": "Enable ordering support workaround for legacy clients. Can cause issues with clients or scripts that can't handle UTF8 correctly. Artemis clients support this by default." }, "index": { - "description": "Vibepollo is a self-hosted game stream host for Moonlight.", + "description": "Nimbus is a self-hosted game stream host for Moonlight-compatible clients.", "download": "Download", "view_notes": "Release Notes", "hide_notes": "Hide Notes", - "installed_version_not_stable": "You are running a pre-release version of Vibepollo. You may experience bugs or other issues. Please report any issues you encounter. Thank you for helping to make Vibepollo a better software!", + "installed_version_not_stable": "You are running a pre-release version of Nimbus. You may experience bugs or other issues. Please report any issues you encounter. Thank you for helping to make Nimbus better!", "loading_latest": "Loading latest release...", "new_pre_release": "A new Pre-Release Version is Available!", "new_stable": "A new Stable Version is Available!", - "startup_errors": "Attention! Vibepollo detected these errors during startup. We STRONGLY RECOMMEND fixing them before streaming.", - "version_dirty": "Thank you for helping to make Vibepollo a better software!", - "version_latest": "You are running the latest version of Vibepollo", + "startup_errors": "Attention! Nimbus detected these errors during startup. We STRONGLY RECOMMEND fixing them before streaming.", + "version_dirty": "Thank you for helping to make Nimbus better!", + "version_latest": "You are running the latest version of Nimbus", "version_ahead": "You are running a development build ahead of the latest release ({ahead} commits)", "version_behind": "Your build is {behind} commits behind the latest release; consider updating.", "version_compare_unknown": "Unable to determine commit distance to latest release.", "version_branch": "Branch: {branch} (commit {commit})", "view_logs": "Open Troubleshooting — Logs", - "welcome": "Hello, Vibepollo!" + "welcome": "Hello, Nimbus!" }, "resources": { "title": "Resources" @@ -1096,7 +1096,7 @@ "license": "License", "resources": "Resources", "discord_desc": "Join the community", - "resources_desc": "Resources for Vibepollo!", + "resources_desc": "Resources for Nimbus!", "third_party_notice": "Third Party Notice" }, "troubleshooting": { @@ -1166,8 +1166,8 @@ "welcome": { "confirm_password": "Confirm password", "create_creds": "Before Getting Started, we need you to make a new username and password for accessing the Web UI.", - "create_creds_alert": "The credentials below are needed to access Vibepollo's Web UI. Keep them safe, since you will never see them again!", - "greeting": "Welcome to Vibepollo!", + "create_creds_alert": "The credentials below are needed to access the Nimbus Web UI. Keep them safe, since you will never see them again!", + "greeting": "Welcome to Nimbus!", "login": "Login", "welcome_success": "This page will reload soon, your browser will ask you for the new credentials" }, diff --git a/src_assets/common/assets/web/public/assets/locale/en_GB.json b/src_assets/common/assets/web/public/assets/locale/en_GB.json index 505a5a8fe8..3093eafbf5 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_GB.json +++ b/src_assets/common/assets/web/public/assets/locale/en_GB.json @@ -530,11 +530,11 @@ "ds5_inputtino_randomize_mac_desc": "Upon controller registration use a random MAC instead of one based on the controllers internal index to avoid mixing configuration settings of different controllers when the are swapped on client-side.", "gamepad_ds5_manual": "DS5 selection options", "vigem_missing_title": "Virtual Gamepad Driver (ViGEm) not installed", - "vigem_missing_desc": "Vibepollo requires the ViGEmBus driver to emulate controllers on Windows. It is no longer bundled. Please download and install it manually:", + "vigem_missing_desc": "Nimbus requires the ViGEmBus driver to emulate controllers on Windows. It is no longer bundled. Please download and install it manually:", "vigem_install": "Download ViGEmBus", "vigem_detected_version": "Detected", "crash_dump_title": "Recent crash detected", - "crash_dump_desc": "Vibepollo detected a crash dump within the last week. Please export a crash bundle and include it when opening an issue.", + "crash_dump_desc": "Nimbus detected a crash dump within the last week. Please export a crash bundle and include it when opening an issue.", "crash_dump_export": "Export Crash Bundle", "crash_dump_report": "Report Issue", "crash_dump_dismiss": "Dismiss", @@ -611,16 +611,16 @@ "legacy_ordering_desc": "Enable ordering support workaround for legacy clients. Can cause issues with clients or scripts that can't handle UTF8 correctly. Artemis clients support this by default." }, "index": { - "description": "Vibepollo is a self-hosted game stream host for Moonlight.", + "description": "Nimbus is a self-hosted game stream host for Moonlight-compatible clients.", "download": "Download", - "installed_version_not_stable": "You are running a pre-release version of Vibepollo. You may experience bugs or other issues. Please report any issues you encounter. Thank you for helping to make Vibepollo a better software!", + "installed_version_not_stable": "You are running a pre-release version of Nimbus. You may experience bugs or other issues. Please report any issues you encounter. Thank you for helping to make Nimbus better!", "loading_latest": "Loading latest release...", "new_pre_release": "A new Pre-Release Version is Available!", "new_stable": "A new Stable Version is Available!", - "startup_errors": "Attention! Vibepollo detected these errors during startup. We STRONGLY RECOMMEND fixing them before streaming.", - "version_dirty": "Thank you for helping to make Vibepollo a better software!", - "version_latest": "You are running the latest version of Vibepollo", - "welcome": "Hello, Vibepollo!" + "startup_errors": "Attention! Nimbus detected these errors during startup. We STRONGLY RECOMMEND fixing them before streaming.", + "version_dirty": "Thank you for helping to make Nimbus better!", + "version_latest": "You are running the latest version of Nimbus", + "welcome": "Hello, Nimbus!" }, "navbar": { "applications": "Applications", @@ -680,7 +680,7 @@ "license": "License", "lizardbyte_website": "LizardByte Website", "resources": "Resources", - "resources_desc": "Resources for Vibepollo!", + "resources_desc": "Resources for Nimbus!", "third_party_notice": "Third Party Notice" }, "troubleshooting": { @@ -743,8 +743,8 @@ "welcome": { "confirm_password": "Confirm password", "create_creds": "Before Getting Started, we need you to make a new username and password for accessing the Web UI.", - "create_creds_alert": "The credentials below are needed to access Vibepollo's Web UI. Keep them safe, since you will never see them again!", - "greeting": "Welcome to Vibepollo!", + "create_creds_alert": "The credentials below are needed to access the Nimbus Web UI. Keep them safe, since you will never see them again!", + "greeting": "Welcome to Nimbus!", "login": "Login", "welcome_success": "This page will reload soon, your browser will ask you for the new credentials" }, diff --git a/src_assets/common/assets/web/public/assets/locale/en_US.json b/src_assets/common/assets/web/public/assets/locale/en_US.json index 96873a11f9..02004c9a70 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_US.json +++ b/src_assets/common/assets/web/public/assets/locale/en_US.json @@ -533,11 +533,11 @@ "sudovda_status_watchdog_failed": "Watchdog failed", "dd_resolution_option_manual_desc": "⚠️ Enforcing a manual resolution disables all display overrides below. The host will always be set to this resolution regardless of any override rules.", "vigem_missing_title": "Virtual Gamepad Driver (ViGEm) not installed", - "vigem_missing_desc": "Vibepollo requires the ViGEmBus driver to emulate controllers on Windows. It is no longer bundled. Please download and install it manually:", + "vigem_missing_desc": "Nimbus requires the ViGEmBus driver to emulate controllers on Windows. It is no longer bundled. Please download and install it manually:", "vigem_install": "Download ViGEmBus", "vigem_detected_version": "Detected", "crash_dump_title": "Recent crash detected", - "crash_dump_desc": "Vibepollo detected a crash dump within the last week. Please export a crash bundle and include it when opening an issue.", + "crash_dump_desc": "Nimbus detected a crash dump within the last week. Please export a crash bundle and include it when opening an issue.", "crash_dump_export": "Export Crash Bundle", "crash_dump_report": "Report Issue", "crash_dump_dismiss": "Dismiss", @@ -600,16 +600,16 @@ "legacy_ordering_desc": "Enable ordering support workaround for legacy clients. Can cause issues with clients or scripts that can't handle UTF8 correctly. Artemis clients support this by default." }, "index": { - "description": "Vibepollo is a self-hosted game stream host for Moonlight.", + "description": "Nimbus is a self-hosted game stream host for Moonlight-compatible clients.", "download": "Download", - "installed_version_not_stable": "You are running a pre-release version of Vibepollo. You may experience bugs or other issues. Please report any issues you encounter. Thank you for helping to make Vibepollo a better software!", + "installed_version_not_stable": "You are running a pre-release version of Nimbus. You may experience bugs or other issues. Please report any issues you encounter. Thank you for helping to make Nimbus better!", "loading_latest": "Loading latest release...", "new_pre_release": "A new Pre-Release Version is Available!", "new_stable": "A new Stable Version is Available!", - "startup_errors": "Attention! Vibepollo detected these errors during startup. We STRONGLY RECOMMEND fixing them before streaming.", - "version_dirty": "Thank you for helping to make Vibepollo a better software!", - "version_latest": "You are running the latest version of Vibepollo", - "welcome": "Hello, Vibepollo!", + "startup_errors": "Attention! Nimbus detected these errors during startup. We STRONGLY RECOMMEND fixing them before streaming.", + "version_dirty": "Thank you for helping to make Nimbus better!", + "version_latest": "You are running the latest version of Nimbus", + "welcome": "Hello, Nimbus!", "view_notes": "Release Notes", "hide_notes": "Hide Notes", "version_ahead": "You are running a development build ahead of the latest release ({ahead} commits)", @@ -677,7 +677,7 @@ "lizardbyte_website": "LizardByte Website", "resources": "Resources", "discord_desc": "Join the community", - "resources_desc": "Resources for Vibepollo!", + "resources_desc": "Resources for Nimbus!", "third_party_notice": "Third Party Notice" }, "troubleshooting": { @@ -740,8 +740,8 @@ "welcome": { "confirm_password": "Confirm password", "create_creds": "Before Getting Started, we need you to make a new username and password for accessing the Web UI.", - "create_creds_alert": "The credentials below are needed to access Vibepollo's Web UI. Keep them safe, since you will never see them again!", - "greeting": "Welcome to Vibepollo!", + "create_creds_alert": "The credentials below are needed to access the Nimbus Web UI. Keep them safe, since you will never see them again!", + "greeting": "Welcome to Nimbus!", "login": "Login", "welcome_success": "This page will reload soon, your browser will ask you for the new credentials" }, @@ -1184,6 +1184,5 @@ "sessions_time_unknown": "Unknown", "sessions_unknown_device": "Unknown device", "sessions_unknown_address": "Unknown address" - "noticeCopy": "RTSS offers the most stable frame pacing. Vibepollo will use it automatically when available; NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing." } } diff --git a/src_assets/common/assets/web/views/DashboardView.vue b/src_assets/common/assets/web/views/DashboardView.vue index 04d838ad26..e3d35c0cf6 100644 --- a/src_assets/common/assets/web/views/DashboardView.vue +++ b/src_assets/common/assets/web/views/DashboardView.vue @@ -135,7 +135,7 @@ {{ crashDumpMessage || $t('config.crash_dump_desc') || - 'Vibepollo detected a recent crash dump. Please export a crash bundle and include it when filing an issue.' + 'Nimbus detected a recent crash dump. Please export a crash bundle and include it when filing an issue.' }}

@@ -199,7 +199,7 @@

{{ $t('config.vigem_missing_desc') || - 'Vibepollo requires the ViGEmBus driver to emulate controllers on Windows. It is no longer bundled. Please download and install it manually:' + 'Nimbus requires the ViGEmBus driver to emulate controllers on Windows. It is no longer bundled. Please download and install it manually:' }} ({{ $t('config.vigem_detected_version') || 'Detected' }}: {{ vigemVersion }}) From fe7b74224d0b483a4e62ca2988519dd4ef611aa6 Mon Sep 17 00:00:00 2001 From: ywkuno <21991205+ywkuno@users.noreply.github.com> Date: Thu, 21 May 2026 17:08:40 +1000 Subject: [PATCH 04/60] fix: retarget Windows visible branding to Nimbus --- cmake/packaging/windows.cmake | 3 +-- packaging/windows/LICENSE.rtf | 2 +- packaging/windows/bootstrapper/VibeshineInstaller.cs | 4 ++-- src/system_tray.cpp | 6 +++--- src_assets/common/assets/web/template_header.html | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/cmake/packaging/windows.cmake b/cmake/packaging/windows.cmake index c5f2da38a4..d829e5c316 100644 --- a/cmake/packaging/windows.cmake +++ b/cmake/packaging/windows.cmake @@ -119,8 +119,7 @@ endif() set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}\\\\apollo.ico") # The name of the directory that will be created in C:/Program Files/ -# Match the legacy NSIS layout by installing under Apollo -set(CPACK_PACKAGE_INSTALL_DIRECTORY "Apollo") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "Nimbus") # Setting components groups and dependencies set(CPACK_COMPONENT_GROUP_CORE_EXPANDED true) diff --git a/packaging/windows/LICENSE.rtf b/packaging/windows/LICENSE.rtf index 73e23dc358..053276184d 100644 --- a/packaging/windows/LICENSE.rtf +++ b/packaging/windows/LICENSE.rtf @@ -1,6 +1,6 @@ {\rtf1\ansi\deff0 {\fonttbl{\f0\fswiss Helvetica;}} -\viewkind4\uc1\pard\sa200\sl276\slmult1\f0\fs20 Vibepollo - Self-hosted game stream host for Moonlight.\par +\viewkind4\uc1\pard\sa200\sl276\slmult1\f0\fs20 Nimbus - Self-hosted game stream host for Moonlight-compatible clients.\par Copyright (C) 2025 Nonary\par \par This program is free software: you can redistribute it and/or modify\par diff --git a/packaging/windows/bootstrapper/VibeshineInstaller.cs b/packaging/windows/bootstrapper/VibeshineInstaller.cs index f66a1c8e54..e1be133d82 100644 --- a/packaging/windows/bootstrapper/VibeshineInstaller.cs +++ b/packaging/windows/bootstrapper/VibeshineInstaller.cs @@ -2151,7 +2151,7 @@ public static void WriteHelp() { Console.WriteLine(" /?, /h, --help Show this help message"); Console.WriteLine(); Console.WriteLine("Supported MSI properties:"); - Console.WriteLine(" INSTALL_ROOT= Install to a custom directory (default: %ProgramFiles%\\Apollo)"); + Console.WriteLine(" INSTALL_ROOT= Install to a custom directory (default: %ProgramFiles%\\Nimbus)"); Console.WriteLine(" INSTALL_SUDOVDA=0 Skip Virtual Display Driver installation"); Console.WriteLine(); Console.WriteLine("Examples:"); @@ -2279,7 +2279,7 @@ public static string DefaultInstallDirectory { get { return Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), - "Apollo"); + ProductIdentity.Name); } } diff --git a/src/system_tray.cpp b/src/system_tray.cpp index 8561df45de..8b074998b7 100644 --- a/src/system_tray.cpp +++ b/src/system_tray.cpp @@ -138,7 +138,7 @@ namespace system_tray { .menu = (struct tray_menu[]) { // todo - use boost/locale to translate menu strings - {.text = "Open Apollo", .cb = tray_open_ui_cb}, + {.text = "Open Nimbus", .cb = tray_open_ui_cb}, {.text = "-"}, // { .text = "-" }, // { .text = "Donate", @@ -643,10 +643,10 @@ namespace system_tray { } #ifdef _WIN32 - std::string tmp_str = "Open Apollo (" + config::nvhttp.sunshine_name + ":" + std::to_string(net::map_port(confighttp::PORT_HTTPS)) + ")"; + std::string tmp_str = "Open Nimbus (" + config::nvhttp.sunshine_name + ":" + std::to_string(net::map_port(confighttp::PORT_HTTPS)) + ")"; static const std::string title_str = utf8ToAcp(tmp_str); #else - static const std::string title_str = "Open Apollo (" + config::nvhttp.sunshine_name + ":" + std::to_string(net::map_port(confighttp::PORT_HTTPS)) + ")"; + static const std::string title_str = "Open Nimbus (" + config::nvhttp.sunshine_name + ":" + std::to_string(net::map_port(confighttp::PORT_HTTPS)) + ")"; #endif tray.menu[0].text = title_str.c_str(); diff --git a/src_assets/common/assets/web/template_header.html b/src_assets/common/assets/web/template_header.html index c7560e4dac..e46c4fdf67 100644 --- a/src_assets/common/assets/web/template_header.html +++ b/src_assets/common/assets/web/template_header.html @@ -2,7 +2,7 @@ -Sunshine +Nimbus From f14d443bc9e6f49c1edc1389b804f51d9e702575 Mon Sep 17 00:00:00 2001 From: ywkuno <21991205+ywkuno@users.noreply.github.com> Date: Thu, 21 May 2026 17:17:02 +1000 Subject: [PATCH 05/60] fix: harden Windows web package npm invocation --- cmake/targets/common.cmake | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/cmake/targets/common.cmake b/cmake/targets/common.cmake index 87013b8bd4..0e99257028 100644 --- a/cmake/targets/common.cmake +++ b/cmake/targets/common.cmake @@ -57,8 +57,18 @@ endif() # Default layout: ${CMAKE_SOURCE_DIR}/src_assets/common/assets/web set(WEB_UI_DIR "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web") -#WebUI build -find_program(NPM npm REQUIRED) +# WebUI build. On Windows prefer the Node.js launcher from the standard +# installer; MSYS npm can fail when invoked through cmd.exe during packaging. +if(WIN32) + find_program(NPM npm.cmd + HINTS "$ENV{ProgramFiles}/nodejs" + NO_DEFAULT_PATH) + if(NOT NPM) + find_program(NPM NAMES npm.cmd npm REQUIRED) + endif() +else() + find_program(NPM npm REQUIRED) +endif() set(NPM_INSTALL_FLAGS --ignore-scripts @@ -69,6 +79,7 @@ set(NPM_INSTALL_FLAGS if (NPM_OFFLINE) list(APPEND NPM_INSTALL_FLAGS --offline) endif() +set(NPM_CACHE_DIR "${CMAKE_BINARY_DIR}/npm-cache") # Choose web UI build mode based on active CMake configuration. # In Debug config, build Vite in "debug" mode to enable Vue devtools. @@ -83,8 +94,11 @@ set(NPM_BUILD_NODE_OPTIONS "") add_custom_target(web-ui ALL WORKING_DIRECTORY "${WEB_UI_DIR}" COMMENT "Installing NPM dependencies and building the Web UI" - COMMAND "$<$:cmd;/C>" "${NPM}" ci ${NPM_INSTALL_FLAGS} COMMAND "${CMAKE_COMMAND}" -E env + "NPM_CONFIG_CACHE=${NPM_CACHE_DIR}" + "$<$:cmd;/C>" "${NPM}" ci ${NPM_INSTALL_FLAGS} + COMMAND "${CMAKE_COMMAND}" -E env + "NPM_CONFIG_CACHE=${NPM_CACHE_DIR}" "SUNSHINE_BUILD_HOMEBREW=${NPM_BUILD_HOMEBREW}" "SUNSHINE_SOURCE_ASSETS_DIR=${NPM_SOURCE_ASSETS_DIR}" "SUNSHINE_ASSETS_DIR=${NPM_ASSETS_DIR}" From bea06db895f79dbd401398e9b8d8373d58a2ad05 Mon Sep 17 00:00:00 2001 From: ywkuno <21991205+ywkuno@users.noreply.github.com> Date: Thu, 21 May 2026 17:18:36 +1000 Subject: [PATCH 06/60] docs: record Windows package revalidation blocker --- docs/building.md | 9 +++++++ docs/release-build-audit.md | 50 +++++++++++++++++++++++++++++++++---- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/docs/building.md b/docs/building.md index 5ead524a69..a8b2e5baec 100644 --- a/docs/building.md +++ b/docs/building.md @@ -120,6 +120,15 @@ The `package_installer` target uses CPack's WiX generator and requires WiX Tools When building from MSYS2, configure CMake with Windows Git to keep generated version metadata clean: `-DGIT_EXECUTABLE=C:/Progra~1/Git/cmd/git.exe`. +On Windows, Nimbus prefers the standard Node.js `npm.cmd` launcher for the CMake web UI package step and stores npm +cache data under the CMake build directory. If a build tree was configured before that change, clear the cached npm +path before packaging: + +```powershell +$env:PATH = 'C:\msys64\ucrt64\bin;' + $env:PATH +cmake -S . -B build -UNPM +``` + ##### WebRTC (optional, Windows only) Nimbus can link against the libwebrtc C++ wrapper when `SUNSHINE_ENABLE_WEBRTC=ON`. The option name is inherited from upstream and has not been renamed yet. The wrapper source is vendored as diff --git a/docs/release-build-audit.md b/docs/release-build-audit.md index 6d99036cfc..14163799d1 100644 --- a/docs/release-build-audit.md +++ b/docs/release-build-audit.md @@ -69,10 +69,11 @@ Applied hardening: - Main release creation no longer closes `fixed` issues directly. - The separate fixed-issue release closer is disabled. -Remaining release blocker: package branding now emits Nimbus-named artifacts and -the local Windows package build has verified the final installer output. A -release tag is still blocked until installer execution is tested in a VM or -snapshot fixture and release notes are prepared. +Remaining release blocker: package branding now emits Nimbus-named artifacts, +but the final package must be rebuilt from the current release-prep commit. A +release tag is still blocked until the current package builds with WiX available, +installer execution is tested in a VM or snapshot fixture, and release notes are +prepared. Decision: CI is safer for normal branch work and manual investigation, but do not intentionally create a Nimbus release tag until package install, upgrade, @@ -87,7 +88,7 @@ identity: - `PROJECT_FQDN` is still `dev.lizardbyte.app.Sunshine`. - `WINDOWS_APP_USER_MODEL_ID` is still `Nonary.Vibepollo`. - CPack package name is now `Nimbus`. -- Windows install directory is still `Apollo`. +- Fresh Windows installs default to `Nimbus`. - Windows WiX product family is seeded with `Vibepollo`. - Bootstrapper text, support links, and output names now use Nimbus. - Several installer paths intentionally detect or migrate Apollo and Sunshine. @@ -173,6 +174,45 @@ Caveats: - Signing and symbol publishing remain disabled until Nimbus-owned destinations and secrets exist. +## Local Windows Package Revalidation + +Validation date: 2026-05-21 + +Validated commits: `ce9ec7aa`, `fe7b7422`, `f14d443b` + +Scope: revalidate the Nimbus release-safety, visible web branding, visible +Windows branding, and CMake web packaging fixes after VM fixture feedback. + +Result: + +| Check | Result | Notes | +| --- | --- | --- | +| Web UI production build | Pass | `npm run build` passes after restoring dependencies. Vite still reports inherited large vendor chunk warnings. | +| English locale JSON parse | Pass | `en.json`, `en_GB.json`, and repaired `en_US.json` parse successfully. | +| Native Windows host build | Pass | `cmake --build build/nimbus-package-validation --target sunshine --config Release -j 6` passes when `C:\msys64\ucrt64\bin` is on `PATH`. | +| Bootstrapper C# compile | Pass | `build_bootstrapper.ps1 -UninstallOnly` compiles the shared installer source. | +| CMake package web step | Pass | Windows CMake now prefers `C:/Program Files/nodejs/npm.cmd` and uses a build-local npm cache. | +| CPack WiX MSI | Blocked | Current host does not expose WiX v3 `candle.exe` / `light.exe`, so `package_installer` stops at CPack WiX. | + +Useful command shape: + +```powershell +$env:PATH = 'C:\msys64\ucrt64\bin;' + $env:PATH +cmake -S . -B build\nimbus-package-validation -UNPM +cmake --build build\nimbus-package-validation --target package_installer --config Release -j 6 +``` + +Current package blocker: + +```text +Could not find the WiX candle executable. +``` + +Install WiX Toolset v3.14.1 or make its portable `bin` directory discoverable +before rerunning the final package build. The old `82fa5cdd` artifacts above are +historical validation evidence only; do not promote them as the current release +candidate. + ## Required Secrets Before Release CI | Secret | Purpose | Current Risk | From 2ab4bf9952028ff7aa49e36243ca0e4a00a3eebc Mon Sep 17 00:00:00 2001 From: ywkuno <21991205+ywkuno@users.noreply.github.com> Date: Thu, 21 May 2026 17:23:33 +1000 Subject: [PATCH 07/60] fix: rebrand hardcoded web copy to Nimbus --- .../common/assets/web/Troubleshooting.vue | 6 +- .../assets/web/components/AppEditModal.vue | 50 ++--- .../components/PlayniteReinstallButton.vue | 2 +- .../app-edit/AppEditBasicsSection.vue | 6 +- .../app-edit/AppEditFrameGenSection.vue | 16 +- .../AppEditLosslessScalingSection.vue | 6 +- .../assets/web/configs/tabs/Playnite.vue | 6 +- .../tabs/audiovideo/DisplayDeviceOptions.vue | 2 +- .../assets/web/public/assets/locale/en.json | 208 +++++++++--------- .../web/public/assets/locale/en_GB.json | 200 ++++++++--------- .../web/public/assets/locale/en_US.json | 200 ++++++++--------- 11 files changed, 351 insertions(+), 351 deletions(-) diff --git a/src_assets/common/assets/web/Troubleshooting.vue b/src_assets/common/assets/web/Troubleshooting.vue index 90a2609d45..e9194baf50 100644 --- a/src_assets/common/assets/web/Troubleshooting.vue +++ b/src_assets/common/assets/web/Troubleshooting.vue @@ -55,7 +55,7 @@

{{ $t('troubleshooting.collect_playnite_logs_desc') || - 'Export Vibepollo, Playnite, plugin, and display-helper logs.' + 'Export Nimbus, Playnite, plugin, and display-helper logs.' }}

@@ -74,7 +74,7 @@

{{ $t('troubleshooting.export_crash_bundle_desc') || - 'Download logs and the most recent Vibepollo crash dump for issue reports.' + 'Download logs and the most recent Nimbus crash dump for issue reports.' }}

@@ -350,7 +350,7 @@ const tCount = (key: string, fallback: string, count: number) => { const logSourceOptions = computed(() => { const options = [ - { label: translate('troubleshooting.logs_source_sunshine', 'Vibepollo'), value: 'sunshine' }, + { label: translate('troubleshooting.logs_source_sunshine', 'Nimbus'), value: 'sunshine' }, ]; if (platform.value === 'windows') { options.push( diff --git a/src_assets/common/assets/web/components/AppEditModal.vue b/src_assets/common/assets/web/components/AppEditModal.vue index 1ca01e6eb7..73ead4fcb3 100644 --- a/src_assets/common/assets/web/components/AppEditModal.vue +++ b/src_assets/common/assets/web/components/AppEditModal.vue @@ -2084,11 +2084,11 @@ async function refreshFrameGenHealth(options: FrameGenHealthOptions = {}): Promi rtssRunning = !!data?.process_running; if (rtssInstalled && rtssHooks) { rtssStatus = 'pass'; - rtssMessage = 'RTSS hooks detected. Vibepollo can control the frame limiter.'; + rtssMessage = 'RTSS hooks detected. Nimbus can control the frame limiter.'; } else if (rtssInstalled) { rtssStatus = 'warn'; rtssMessage = - 'RTSS is installed but hooks were not detected. Launch RTSS and ensure the Vibepollo profile is active.'; + 'RTSS is installed but hooks were not detected. Launch RTSS and ensure the managed RTSS profile is active.'; } else { rtssStatus = 'fail'; rtssMessage = 'Install RTSS to avoid microstutter when frame generation is enabled.'; @@ -2107,7 +2107,7 @@ async function refreshFrameGenHealth(options: FrameGenHealthOptions = {}): Promi const tolerance = 0.5; let displayStatus: FrameGenHealth['display']['status'] = 'unknown'; let displayMessage = 'Unable to determine display refresh capabilities.'; - let displayLabel = usingVirtual ? 'Vibepollo Virtual Screen' : 'Active display'; + let displayLabel = usingVirtual ? 'Nimbus Virtual Screen' : 'Active display'; let displayId = usingVirtual ? VIRTUAL_DISPLAY_SELECTION : ''; let displayHz: number | null = null; let displayError: string | null = null; @@ -2268,55 +2268,55 @@ async function refreshFrameGenHealth(options: FrameGenHealthOptions = {}): Promi displayStatus = 'pass'; if (only144Fails) { const baseHz = hasActive ? (activeRefresh ?? evaluationHz) : evaluationHz; - displayMessage = `Current refresh is ${Math.round(baseHz)} Hz. Streams up to 120 FPS are covered. Only 144 FPS streams require the Vibepollo virtual screen or a higher-refresh display.`; + displayMessage = `Current refresh is ${Math.round(baseHz)} Hz. Streams up to 120 FPS are covered. Only 144 FPS streams require the Nimbus virtual screen or a higher-refresh display.`; if (!hasActive && highestSupported !== null) { - displayMessage = `Display supports up to ${Math.round(highestSupported)} Hz. Streams up to 120 FPS are covered. Only 144 FPS streams require the Vibepollo virtual screen or a higher-refresh display.`; + displayMessage = `Display supports up to ${Math.round(highestSupported)} Hz. Streams up to 120 FPS are covered. Only 144 FPS streams require the Nimbus virtual screen or a higher-refresh display.`; } else if (deltaSupported && highestSupported !== null) { - displayMessage += ` Vibepollo can switch to ${Math.round(highestSupported)} Hz when a stream starts if Display Device Step 1 keeps that monitor active.`; + displayMessage += ` Nimbus can switch to ${Math.round(highestSupported)} Hz when a stream starts if Display Device Step 1 keeps that monitor active.`; } } else if (!hasActive && highestSupported !== null) { - displayMessage = `Display supports up to ${Math.round(highestSupported)} Hz. Vibepollo can double 120 FPS streams.`; + displayMessage = `Display supports up to ${Math.round(highestSupported)} Hz. Nimbus can double 120 FPS streams.`; } else if (deltaSupported && highestSupported !== null) { - displayMessage = `Current refresh is ${Math.round(activeRefresh ?? evaluationHz)} Hz. Vibepollo can switch to ${Math.round(highestSupported)} Hz during streams to keep frame generation smooth.`; + displayMessage = `Current refresh is ${Math.round(activeRefresh ?? evaluationHz)} Hz. Nimbus can switch to ${Math.round(highestSupported)} Hz during streams to keep frame generation smooth.`; } else { displayMessage = 'Display refresh is high enough to double 120 FPS streams.'; } } else if (evaluationHz >= 180 - tolerance) { displayStatus = 'warn'; if (!hasActive && highestSupported !== null) { - displayMessage = `Display supports up to ${Math.round(evaluationHz)} Hz. Configure Display Device Step 1 to enforce the higher refresh or use the display override below to switch to the Vibepollo virtual display.`; + displayMessage = `Display supports up to ${Math.round(evaluationHz)} Hz. Configure Display Device Step 1 to enforce the higher refresh or use the display override below to switch to the Nimbus virtual display.`; } else if (hasActive) { if (highestFailUnder144 !== null) { - displayMessage = `Current refresh is ${Math.round(activeRefresh ?? evaluationHz)} Hz. Streams targeting up to ${highestFailUnder144} FPS need the Vibepollo virtual screen or a higher-refresh display.`; + displayMessage = `Current refresh is ${Math.round(activeRefresh ?? evaluationHz)} Hz. Streams targeting up to ${highestFailUnder144} FPS need the Nimbus virtual screen or a higher-refresh display.`; } else { - displayMessage = `Current refresh is ${Math.round(activeRefresh ?? evaluationHz)} Hz. 120 FPS frame generation may stutter without a higher refresh display. Use the display override below to switch to the Vibepollo virtual display or move the stream to a higher-refresh monitor.`; + displayMessage = `Current refresh is ${Math.round(activeRefresh ?? evaluationHz)} Hz. 120 FPS frame generation may stutter without a higher refresh display. Use the display override below to switch to the Nimbus virtual display or move the stream to a higher-refresh monitor.`; } if (deltaSupported && highestSupported !== null) { - displayMessage += ` Vibepollo can switch up to ${Math.round(highestSupported)} Hz if Display Device Step 1 keeps only that monitor active.`; + displayMessage += ` Nimbus can switch up to ${Math.round(highestSupported)} Hz if Display Device Step 1 keeps only that monitor active.`; } } else { displayMessage = - 'Unable to read the current refresh rate, but the display may not reach the required 240 Hz. Use the display override below to switch to the Vibepollo virtual display or move the stream to a higher-refresh monitor.'; + 'Unable to read the current refresh rate, but the display may not reach the required 240 Hz. Use the display override below to switch to the Nimbus virtual display or move the stream to a higher-refresh monitor.'; } } else { displayStatus = 'fail'; if (!hasActive && highestSupported !== null) { - displayMessage = `Display tops out at ${Math.round(evaluationHz)} Hz. Use the display override below to switch to the Vibepollo virtual display or switch to a 240 Hz display for frame generation.`; + displayMessage = `Display tops out at ${Math.round(evaluationHz)} Hz. Use the display override below to switch to the Nimbus virtual display or switch to a 240 Hz display for frame generation.`; } else if (hasActive) { const mention = highestFailUnder144 ?? 120; - displayMessage = `Current refresh is ${Math.round(activeRefresh ?? evaluationHz)} Hz. Streams targeting up to ${mention} FPS need the Vibepollo virtual screen or a higher-refresh display.`; + displayMessage = `Current refresh is ${Math.round(activeRefresh ?? evaluationHz)} Hz. Streams targeting up to ${mention} FPS need the Nimbus virtual screen or a higher-refresh display.`; if (deltaSupported && highestSupported !== null) { - displayMessage += ` Vibepollo can switch up to ${Math.round(highestSupported)} Hz if configured in Display Device Step 1.`; + displayMessage += ` Nimbus can switch up to ${Math.round(highestSupported)} Hz if configured in Display Device Step 1.`; } } else { displayMessage = - 'Display refresh information was unavailable. Use the display override below to switch to the Vibepollo virtual display or switch to a 240 Hz display for frame generation.'; + 'Display refresh information was unavailable. Use the display override below to switch to the Nimbus virtual display or switch to a 240 Hz display for frame generation.'; } } } else { displayStatus = 'unknown'; displayMessage = - 'No display devices were returned by Vibepollo’s helper. Frame generation may not be able to enforce refresh changes.'; + 'No display devices were returned by the Nimbus helper. Frame generation may not be able to enforce refresh changes.'; displayError = 'Display helper returned no devices.'; } } else { @@ -2332,7 +2332,7 @@ async function refreshFrameGenHealth(options: FrameGenHealthOptions = {}): Promi } else { displayStatus = 'pass'; displayMessage = - 'Vibepollo virtual screen guarantees a high refresh surface for frame generation.'; + 'Nimbus virtual screen guarantees a high refresh surface for frame generation.'; } if (usingVirtual) { @@ -2372,7 +2372,7 @@ async function refreshFrameGenHealth(options: FrameGenHealthOptions = {}): Promi if (highestFailUnder144 !== null) { health.suggestion = { - message: `Use the display override above to switch to the Vibepollo virtual display or configure Display Device Step 1 to target the virtual display so ${highestFailUnder144} FPS streams stay smooth.`, + message: `Use the display override above to switch to the Nimbus virtual display or configure Display Device Step 1 to target the virtual display so ${highestFailUnder144} FPS streams stay smooth.`, emphasis: 'warning', }; } else if (captureStatus === 'warn' || captureStatus === 'fail') { @@ -2443,7 +2443,7 @@ function warnIfHealthIssues(reason: FrameGenHealthReason) { ); if (requiresHigh) { message.warning( - 'Use the display override to switch to the Vibepollo virtual display or adjust Display Device Step 1 to keep only the high-refresh monitor active.', + 'Use the display override to switch to the Nimbus virtual display or adjust Display Device Step 1 to keep only the high-refresh monitor active.', { duration: 8000 }, ); } @@ -2538,18 +2538,18 @@ watch( return; } message?.info( - "Frame Generation Capture Fix requires Windows Graphics Capture (WGC), RTSS, and a display capable of 240 Hz or higher. Vibepollo's virtual screen or any display that satisfies the doubled refresh requirement will work.", + "Frame Generation Capture Fix requires Windows Graphics Capture (WGC), RTSS, and a display capable of 240 Hz or higher. Nimbus's virtual screen or any display that satisfies the doubled refresh requirement will work.", { duration: 8000 }, ); if (!skipDisplayWarnings.value) { if (!ddConfigOption.value || ddConfigOption.value === 'disabled') { message?.warning( - 'Configure Step 1 for Vibepollo\'s virtual screen or enable Display Device and set it to "Deactivate all other displays" so the doubled refresh requirement is met during the stream.', + 'Configure Step 1 for Nimbus\'s virtual screen or enable Display Device and set it to "Deactivate all other displays" so the doubled refresh requirement is met during the stream.', { duration: 8000 }, ); } else if (ddConfigOption.value !== 'ensure_only_display') { message?.warning( - 'Set Step 1 to use Vibepollo\'s virtual screen or adjust Display Device to "Deactivate all other displays" so only the high-refresh monitor stays active.', + 'Set Step 1 to use Nimbus\'s virtual screen or adjust Display Device to "Deactivate all other displays" so only the high-refresh monitor stays active.', { duration: 8000 }, ); } @@ -2738,7 +2738,7 @@ function onNamePicked(val: string | null) { } } -// Cover preview logic removed; Vibepollo no longer fetches or proxies images +// Cover preview logic removed; Nimbus no longer fetches or proxies images async function save() { saving.value = true; try { diff --git a/src_assets/common/assets/web/components/PlayniteReinstallButton.vue b/src_assets/common/assets/web/components/PlayniteReinstallButton.vue index f12a48c9e8..620efd594b 100644 --- a/src_assets/common/assets/web/components/PlayniteReinstallButton.vue +++ b/src_assets/common/assets/web/components/PlayniteReinstallButton.vue @@ -68,7 +68,7 @@ const icon = props.icon ?? 'fas fa-plug'; const confirmTitle = props.confirmTitle ?? 'Install/Update Playnite Extension'; const confirmMessage = props.confirmMessage ?? - 'This will (re)install the Vibepollo Playnite extension and restart Playnite if needed. Continue?'; + 'This will (re)install the Nimbus Playnite extension and restart Playnite if needed. Continue?'; const cancelText = props.cancelText ?? 'Cancel'; const continueText = props.continueText ?? 'Continue'; const size = props.size ?? 'small'; diff --git a/src_assets/common/assets/web/components/app-edit/AppEditBasicsSection.vue b/src_assets/common/assets/web/components/app-edit/AppEditBasicsSection.vue index 396cffa4f6..1afede3a0a 100644 --- a/src_assets/common/assets/web/components/app-edit/AppEditBasicsSection.vue +++ b/src_assets/common/assets/web/components/app-edit/AppEditBasicsSection.vue @@ -64,7 +64,7 @@ />

- Vibepollo waits for this process. When it closes, the stream ends. + Nimbus waits for this process. When it closes, the stream ends.

@@ -115,7 +115,7 @@ placeholder="Command to execute before the stream" />

- Runs before the primary command. Vibepollo continues even if this command exits. + Runs before the primary command. Nimbus continues even if this command exits.

@@ -150,7 +150,7 @@ Find Cover -

Optional; stored only and not fetched by Vibepollo.

+

Optional; stored only and not fetched by Nimbus.

diff --git a/src_assets/common/assets/web/components/app-edit/AppEditFrameGenSection.vue b/src_assets/common/assets/web/components/app-edit/AppEditFrameGenSection.vue index cdacd79b65..cd81103742 100644 --- a/src_assets/common/assets/web/components/app-edit/AppEditFrameGenSection.vue +++ b/src_assets/common/assets/web/components/app-edit/AppEditFrameGenSection.vue @@ -200,7 +200,7 @@ const displayTargets = computed(() => props.health?.display.targets || []); Frame Generation Configuration

- Select how Vibepollo coordinates frame generation and review the capture safeguards needed + Select how Nimbus coordinates frame generation and review the capture safeguards needed for smooth playback.

@@ -211,7 +211,7 @@ const displayTargets = computed(() => props.health?.display.targets || []); NVIDIA Smooth Motion active - Vibepollo virtual screen in use + Nimbus virtual screen in use
@@ -235,7 +235,7 @@ const displayTargets = computed(() => props.health?.display.targets || []); :clearable="false" />

- None keeps Vibepollo out of the loop, Game Provided trusts in-game frame generation, + None keeps Nimbus out of the loop, Game Provided trusts in-game frame generation, Lossless Scaling wraps LSFG, and NVIDIA Smooth Motion configures the driver each launch.

@@ -248,7 +248,7 @@ const displayTargets = computed(() => props.health?.display.targets || []);
Lossless Scaling Frame Generation

- Use Vibepollo’s tuned profile or your Lossless Scaling defaults, then fine-tune + Use Nimbus’s tuned profile or your Lossless Scaling defaults, then fine-tune the runtime targets.

@@ -277,7 +277,7 @@ const displayTargets = computed(() => props.health?.display.targets || []);

- Recommended mirrors Vibepollo’s latency-focused template. Custom runs the profile + Recommended mirrors Nimbus’s latency-focused template. Custom runs the profile you maintain inside Lossless Scaling.

@@ -288,7 +288,7 @@ const displayTargets = computed(() => props.health?.display.targets || []); Frame Targets

- Vibepollo inherits the FPS your streaming client requests and forwards it to Lossless + Nimbus inherits the FPS your streaming client requests and forwards it to Lossless Scaling automatically. When RTSS is available we cap it at half of that request for steadier pacing.

@@ -338,7 +338,7 @@ const displayTargets = computed(() => props.health?.display.targets || []); @update:value="props.onLosslessRtssLimitChange" />

- Vibepollo defaults to half of the client request when left blank. Requires RTSS + Nimbus defaults to half of the client request when left blank. Requires RTSS installed and running.

@@ -357,7 +357,7 @@ const displayTargets = computed(() => props.health?.display.targets || []); size="small" />

- Frame blending strength (0–100). Vibepollo recommends 50% as a balanced default. + Frame blending strength (0–100). Nimbus recommends 50% as a balanced default.

diff --git a/src_assets/common/assets/web/components/app-edit/AppEditLosslessScalingSection.vue b/src_assets/common/assets/web/components/app-edit/AppEditLosslessScalingSection.vue index 4c1dbe69e6..88d34a2b58 100644 --- a/src_assets/common/assets/web/components/app-edit/AppEditLosslessScalingSection.vue +++ b/src_assets/common/assets/web/components/app-edit/AppEditLosslessScalingSection.vue @@ -6,7 +6,7 @@ Lossless Scaling Upscaling

- Enable Lossless Scaling when you want Vibepollo to manage upscaling before encoding. + Enable Lossless Scaling when you want Nimbus to manage upscaling before encoding.

@@ -19,7 +19,7 @@ size="small" class="text-xs" > - This application isn't managed by Playnite. Vibepollo will try to guess which game executable + This application isn't managed by Playnite. Nimbus will try to guess which game executable is running and apply the Lossless Scaling profile automatically, but that detection is best-effort and may not always succeed. Configure Playnite integration for more reliable results. @@ -48,7 +48,7 @@ Custom: Use my Lossless Scaling default profile

- Recommended keeps Vibepollo-tuned values for consistent latency and frame pacing. Custom + Recommended keeps Nimbus-tuned values for consistent latency and frame pacing. Custom runs the profile you maintain inside Lossless Scaling.

diff --git a/src_assets/common/assets/web/configs/tabs/Playnite.vue b/src_assets/common/assets/web/configs/tabs/Playnite.vue index 357f7673ab..cecf3d3e7d 100644 --- a/src_assets/common/assets/web/configs/tabs/Playnite.vue +++ b/src_assets/common/assets/web/configs/tabs/Playnite.vue @@ -312,7 +312,7 @@
{{ $t('playnite.policy_explainer') || - 'Choose how Vibepollo removes old auto-synced games.' + 'Choose how Nimbus removes old auto-synced games.' }}
@@ -355,7 +355,7 @@ :default="store.defaults.playnite_fullscreen_entry_enabled" :localePrefix="'playnite'" label="Add 'Playnite (Fullscreen)' to Applications" - desc="When enabled, Vibepollo adds a launcher entry that opens Playnite in fullscreen desktop mode." + desc="When enabled, Nimbus adds a launcher entry that opens Playnite in fullscreen desktop mode." />
@@ -1362,7 +1362,7 @@ const policySummary = computed(() => { if (syncAll) { parts.push( (t('playnite.summary_all_installed') as any) || - 'All installed Playnite games will be kept in Vibepollo.', + 'All installed Playnite games will be kept in Nimbus.', ); } else if (includePluginCount > 0) { parts.push( diff --git a/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayDeviceOptions.vue b/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayDeviceOptions.vue index e49b1899ac..89fa13c5b1 100644 --- a/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayDeviceOptions.vue +++ b/src_assets/common/assets/web/configs/tabs/audiovideo/DisplayDeviceOptions.vue @@ -491,7 +491,7 @@ function clearSnapshotHotkey(): void {
Save a display snapshot (improves stability)

{{ $t('troubleshooting.dd_golden_help') }} - Saving a snapshot of your ideal monitor setup helps Vibepollo recover when Windows + Saving a snapshot of your ideal monitor setup helps Nimbus recover when Windows fails to restore displays after streaming.

diff --git a/src_assets/common/assets/web/public/assets/locale/en.json b/src_assets/common/assets/web/public/assets/locale/en.json index 940ec1946c..0b37263424 100644 --- a/src_assets/common/assets/web/public/assets/locale/en.json +++ b/src_assets/common/assets/web/public/assets/locale/en.json @@ -102,7 +102,7 @@ "global_prep_desc": "Enable/Disable the execution of Global Prep Commands for this application.", "global_prep_name": "Global Prep Commands", "image": "Image", - "image_desc": "Application icon/picture/image path that will be sent to client. Image must be a PNG file. If not set, Vibepollo will send default box image.", + "image_desc": "Application icon/picture/image path that will be sent to client. Image must be a PNG file. If not set, Nimbus will send default box image.", "loading": "Loading...", "name": "Name", "output_desc": "The file where the output of the command is stored, if it is not specified, the output is ignored", @@ -111,18 +111,18 @@ "wait_all": "Continue streaming until all app processes exit", "wait_all_desc": "This will continue streaming until all processes started by the app have terminated. When unchecked, streaming will stop when the initial app process exits, even if other app processes are still running.", "working_dir": "Working Directory", - "working_dir_desc": "The working directory that should be passed to the process. For example, some applications use the working directory to search for configuration files. If not set, Vibepollo will default to the parent directory of the command", + "working_dir_desc": "The working directory that should be passed to the process. For example, some applications use the working directory to search for configuration files. If not set, Nimbus will default to the parent directory of the command", "more_fields_below": "More fields below — scroll" }, "offline": { - "title": "Lost Connection to Vibepollo", - "description": "The web interface lost connectivity to the Vibepollo service.", + "title": "Lost Connection to Nimbus", + "description": "The web interface lost connectivity to the Nimbus service.", "retrying": "Attempting to reconnect… The page will refresh once available.", "refresh_now": "Refresh now", - "close_hint": "If you stopped Vibepollo intentionally, you may close this tab.", - "output_name_desc_unix": "During Vibepollo startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", - "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Vibepollo startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab.", - "close_hint": "If you stopped Vibepollo intentionally, you may close this tab." + "close_hint": "If you stopped Nimbus intentionally, you may close this tab.", + "output_name_desc_unix": "During Nimbus startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", + "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Nimbus startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab.", + "close_hint": "If you stopped Nimbus intentionally, you may close this tab." }, "config": { "amf": { @@ -132,13 +132,13 @@ "adapter_name": "Adapter Name", "adapter_name_desc_linux_1": "Manually specify a GPU to use for capture.", "adapter_name_desc_linux_2": "to find all devices capable of VAAPI", - "adapter_name_desc_linux_3": "Replace ``renderD129`` with the device from above to lists the name and capabilities of the device. To be supported by Vibepollo, it needs to have at the very minimum:", + "adapter_name_desc_linux_3": "Replace ``renderD129`` with the device from above to lists the name and capabilities of the device. To be supported by Nimbus, it needs to have at the very minimum:", "adapter_name_desc_windows": "Manually specify a GPU to use for capture. If unset, the GPU is chosen automatically. We strongly recommend leaving this field blank to use automatic GPU selection! Note: This GPU must have a display connected and powered on. The appropriate values can be found using the following command:", "adapter_name_placeholder_windows": "Radeon RX 580 Series", "add": "Add", "address_family": "Address Family", "address_family_both": "IPv4+IPv6", - "address_family_desc": "Set the address family used by Vibepollo", + "address_family_desc": "Set the address family used by Nimbus", "address_family_ipv4": "IPv4 only", "always_send_scancodes": "Always Send Scancodes", "always_send_scancodes_desc": "Sending scancodes enhances compatibility with games and apps but may result in incorrect keyboard input from certain clients that aren't using a US English keyboard layout. Enable if keyboard input is not working at all in certain applications. Disable if keys on the client are generating the wrong input on the host.", @@ -170,18 +170,18 @@ "amd_usage_webcam": "webcam -- webcam (slow)", "amd_vbaq": "AMF Variance Based Adaptive Quantization (VBAQ)", "amd_vbaq_desc": "The human visual system is typically less sensitive to artifacts in highly textured areas. In VBAQ mode, pixel variance is used to indicate the complexity of spatial textures, allowing the encoder to allocate more bits to smoother areas. Enabling this feature leads to improvements in subjective visual quality with some content.", - "apply_note": "Click 'Apply' to restart Vibepollo and apply changes. This will terminate any running sessions.", + "apply_note": "Click 'Apply' to restart Nimbus and apply changes. This will terminate any running sessions.", "audio_sink": "Audio Sink", "audio_sink_desc_linux": "The name of the audio sink used for Audio Loopback. If you do not specify this variable, pulseaudio will select the default monitor device. You can find the name of the audio sink using either command:", - "audio_sink_desc_macos": "The name of the audio sink used for Audio Loopback. Vibepollo can only access microphones on macOS due to system limitations. To stream system audio using Soundflower or BlackHole.", + "audio_sink_desc_macos": "The name of the audio sink used for Audio Loopback. Nimbus can only access microphones on macOS due to system limitations. To stream system audio using Soundflower or BlackHole.", "audio_sink_desc_windows": "Manually specify a specific audio device to capture. If unset, the device is chosen automatically. We strongly recommend leaving this field blank to use automatic device selection! If you have multiple audio devices with identical names, you can get the Device ID using the following command:", "audio_sink_placeholder_macos": "BlackHole 2ch", "audio_sink_placeholder_windows": "Speakers (High Definition Audio Device)", "av1_mode": "AV1 Support", - "av1_mode_0": "Vibepollo will advertise support for AV1 based on encoder capabilities (recommended)", - "av1_mode_1": "Vibepollo will not advertise support for AV1", - "av1_mode_2": "Vibepollo will advertise support for AV1 Main 8-bit profile", - "av1_mode_3": "Vibepollo will advertise support for AV1 Main 8-bit and 10-bit (HDR) profiles", + "av1_mode_0": "Nimbus will advertise support for AV1 based on encoder capabilities (recommended)", + "av1_mode_1": "Nimbus will not advertise support for AV1", + "av1_mode_2": "Nimbus will advertise support for AV1 Main 8-bit profile", + "av1_mode_3": "Nimbus will advertise support for AV1 Main 8-bit and 10-bit (HDR) profiles", "av1_mode_desc": "Allows the client to request AV1 Main 8-bit or 10-bit video streams. AV1 is more CPU-intensive to encode, so enabling this may reduce performance when using software encoding.", "prefer_10bit_sdr": "Prefer 10-bit SDR", "prefer_10bit_sdr_follow_global": "Following the global 10-bit SDR setting.", @@ -189,7 +189,7 @@ "back_button_timeout": "Home/Guide Button Emulation Timeout", "back_button_timeout_desc": "If the Back/Select button is held down for the specified number of milliseconds, a Home/Guide button press is emulated. If set to a value < 0 (default), holding the Back/Select button will not emulate the Home/Guide button.", "capture": "Force a Specific Capture Method", - "capture_desc": "On automatic mode Vibepollo will use the first one that works. NvFBC requires patched nvidia drivers.", + "capture_desc": "On automatic mode Nimbus will use the first one that works. NvFBC requires patched nvidia drivers.", "capture_auto_wgc": "Automatic (Windows Graphics Capture)", "capture_wgc_auto": "Windows Graphics Capture (variable)", "capture_ddx_legacy": "Desktop Duplication API (legacy)", @@ -197,7 +197,7 @@ "cert": "Certificate", "cert_desc": "The certificate used for the web UI and Moonlight client pairing. For best compatibility, this should have an RSA-2048 public key.", "channels": "Maximum Connected Clients", - "channels_desc_1": "Vibepollo can allow a single streaming session to be shared with multiple clients simultaneously.", + "channels_desc_1": "Nimbus can allow a single streaming session to be shared with multiple clients simultaneously.", "channels_desc_2": "Some hardware encoders may have limitations that reduce performance with multiple streams.", "coder_cabac": "cabac -- context adaptive binary arithmetic coding - higher quality", "coder_cavlc": "cavlc -- context adaptive variable-length coding - faster decode", @@ -205,7 +205,7 @@ "controller": "Enable Gamepad Input", "controller_desc": "Allows guests to control the host system with a gamepad / controller", "credentials_file": "Credentials File", - "credentials_file_desc": "Store Username/Password separately from Vibepollo's state file.", + "credentials_file_desc": "Store Username/Password separately from Nimbus's state file.", "dd_config_ensure_active": "Activate the display automatically", "dd_config_ensure_active_warning": "Windows does not display the lock screen on external monitors until you click on them, which can cause black screens when streaming. If this is an issue, use the primary display option instead.", "dd_config_ensure_only_display": "Deactivate other displays and activate only the specified display", @@ -230,7 +230,7 @@ "golden_layout_upgrade_desc": "Your saved snapshot predates display layout support. Recreate it to restore portrait and landscape monitor layouts correctly.", "golden_layout_upgrade_action": "Open Display Settings", "dd_snapshot_restore_hotkey": "Restore snapshot hotkey", - "dd_snapshot_restore_hotkey_desc": "Windows-only global hotkey. Useful for forcing virtual displays off and restoring snapshots when Vibepollo is paused or stuck. Click the field and press the combo you want.", + "dd_snapshot_restore_hotkey_desc": "Windows-only global hotkey. Useful for forcing virtual displays off and restoring snapshots when Nimbus is paused or stuck. Click the field and press the combo you want.", "dd_snapshot_restore_hotkey_capture": "Listening... press a combo now.", "dd_snapshot_restore_hotkey_reset": "Clear hotkey", "dd_snapshot_restore_hotkey_invalid": "Unsupported key. Use F1-F24, letters, or digits.", @@ -241,7 +241,7 @@ "dd_hdr_option_auto": "Switch on/off the HDR mode as requested by the client (default)", "dd_hdr_option_disabled": "Do not change HDR settings", "dd_wa_virtual_double_refresh": "Double refresh rate for virtual displays", - "dd_wa_virtual_double_refresh_desc": "Creates Vibepollo virtual displays at 2x the target refresh to prevent unexplained FPS drops. Leave this on unless a specific game or monitor behaves incorrectly. Note: Manual refresh rate overrides this (no doubling).", + "dd_wa_virtual_double_refresh_desc": "Creates Nimbus virtual displays at 2x the target refresh to prevent unexplained FPS drops. Leave this on unless a specific game or monitor behaves incorrectly. Note: Manual refresh rate overrides this (no doubling).", "dd_wa_dummy_plug_hdr10": "HDR 10-bit workaround for physical dummy plugs", "dd_wa_dummy_plug_hdr10_desc": "Locks physical dummy plugs to 30 Hz and keeps the VSYNC override active so HDR10 is recognized. Only enable this when you are using a hardware dummy plug. Applied to game launches only (Desktop streams keep their normal refresh rate).", "dd_wa_dummy_plug_hdr10_link": "Dummy Plugs setup guide", @@ -262,7 +262,7 @@ "dd_mode_remapping_requested_resolution": "Requested resolution", "dd_options_header": "Advanced display device options", "dd_display_setup_title": "Display Setup (Before Stream)", - "dd_display_setup_intro": "Choose the display to capture and how Vibepollo should prepare Windows just before a stream starts (turn on a monitor, switch primary, set resolution/refresh rate, HDR).", + "dd_display_setup_intro": "Choose the display to capture and how Nimbus should prepare Windows just before a stream starts (turn on a monitor, switch primary, set resolution/refresh rate, HDR).", "dd_automation_label": "Display automation", "dd_automation_desc": "Automatically adjust the host display to match the client's requested resolution and refresh rate before streaming.", "dd_step_1": "Step 1", @@ -275,17 +275,17 @@ "virtual_display_mode_per_client": "Virtual Display (Per Client)", "virtual_display_mode_shared": "Shared Virtual Display", "virtual_display_mode_label": "Virtual display mode", - "virtual_display_mode_step_hint": "Select which display Vibepollo should prepare: keep your physical monitor, create a per-client virtual display, or reuse a shared virtual screen.", + "virtual_display_mode_step_hint": "Select which display Nimbus should prepare: keep your physical monitor, create a per-client virtual display, or reuse a shared virtual screen.", "virtual_display_hdr_tip": "HDR Tip: Run Windows HDR Calibration while streaming and save the profile. Then open the Clients tab and click HDR Color Profile for the client to choose the saved profile.", "virtual_display_layout_label": "Virtual Display Layout", - "virtual_display_layout_hint": "Choose how Vibepollo positions and prioritizes your virtual display when it is enabled.", + "virtual_display_layout_hint": "Choose how Nimbus positions and prioritizes your virtual display when it is enabled.", "virtual_display_toggle_label": "Configure Physical or Virtual Display", - "virtual_display_toggle_hint": "Override the display Vibepollo uses for this app: switch to the Vibepollo virtual display or pick a specific physical monitor. Leave unchecked to follow the global/client choice.", + "virtual_display_toggle_hint": "Override the display Nimbus uses for this app: switch to the Nimbus virtual display or pick a specific physical monitor. Leave unchecked to follow the global/client choice.", "app_display_override_label": "Per-app display override", "client_display_override_label": "Per-client display override", - "client_display_override_hint": "Override how Vibepollo chooses a display for this client. Leave unchecked to follow the global display settings.", - "app_display_override_hint": "Choose whether this app should launch on the Vibepollo virtual display or target a specific physical monitor instead of the global default.", - "app_display_override_virtual": "Use Vibepollo virtual display", + "client_display_override_hint": "Override how Nimbus chooses a display for this client. Leave unchecked to follow the global display settings.", + "app_display_override_hint": "Choose whether this app should launch on the Nimbus virtual display or target a specific physical monitor instead of the global default.", + "app_display_override_virtual": "Use Nimbus virtual display", "app_display_override_physical": "Use a physical display", "app_display_physical_label": "Select physical display", "app_display_physical_hint": "Pick the monitor to use when launching this app. Physical dummy plugs show up here even if they are inactive.", @@ -294,7 +294,7 @@ "app_display_status_active": "active", "app_display_status_inactive": "inactive", "virtual_display_layout_exclusive": "Exclusive", - "virtual_display_layout_exclusive_desc": "Disable every other monitor so only the Vibepollo virtual display stays visible.", + "virtual_display_layout_exclusive_desc": "Disable every other monitor so only the Nimbus virtual display stays visible.", "virtual_display_layout_extended": "Extended", "virtual_display_layout_extended_desc": "Keep your physical monitors active and simply add the virtual display as another screen.", "virtual_display_layout_extended_primary": "Extended + Primary", @@ -303,10 +303,10 @@ "virtual_display_layout_extended_isolated_desc": "Extend the desktop but park the virtual display far away so the mouse never wanders into it.", "virtual_display_layout_extended_primary_isolated": "Extended + Primary (Isolated)", "virtual_display_layout_extended_primary_isolated_desc": "Combine primary + isolation: make the virtual display primary while keeping it out of reach of physical monitors.", - "virtual_display_status_label": "Vibepollo virtual display driver:", - "virtual_display_status_hint": "Use Vibepollo's virtual display to spin up a high-refresh virtual monitor automatically. If the driver reports an error, reinstall Vibepollo or repair the driver before streaming.", + "virtual_display_status_label": "Nimbus virtual display driver:", + "virtual_display_status_hint": "Use Nimbus's virtual display to spin up a high-refresh virtual monitor automatically. If the driver reports an error, reinstall Nimbus or repair the driver before streaming.", "app_virtual_display_mode_label": "App display preference", - "app_virtual_display_mode_hint": "When this app runs on the Vibepollo virtual display, choose whether to use a per-client or shared virtual screen and configure the layout below. Reset to follow the global display configuration.", + "app_virtual_display_mode_hint": "When this app runs on the Nimbus virtual display, choose whether to use a per-client or shared virtual screen and configure the layout below. Reset to follow the global display configuration.", "app_virtual_display_mode_follow_global": "Following the global display configuration.", "app_virtual_display_mode_reset": "Reset to global display", "app_virtual_display_layout_reset": "Reset to global layout", @@ -317,10 +317,10 @@ "sudovda_status_version_incompatible": "Driver version mismatch", "sudovda_status_watchdog_failed": "Watchdog failed", "dd_pre_stream_setup": "Pre-stream setup", - "dd_pre_stream_intro": "Vibepollo applies these settings automatically when starting a stream. Use them to activate a display, make it primary, and optionally adjust resolution, refresh rate, and HDR.", - "dd_config_hint": "Choose how Vibepollo prepares the display before streaming.", - "dd_activate_virtual_display": "Auto-activate Vibepollo virtual display", - "dd_activate_virtual_display_desc": "When using Vibepollo's virtual display driver, turn the virtual monitor on and temporarily make it the only active display while a stream is starting.", + "dd_pre_stream_intro": "Nimbus applies these settings automatically when starting a stream. Use them to activate a display, make it primary, and optionally adjust resolution, refresh rate, and HDR.", + "dd_config_hint": "Choose how Nimbus prepares the display before streaming.", + "dd_activate_virtual_display": "Auto-activate Nimbus virtual display", + "dd_activate_virtual_display_desc": "When using Nimbus's virtual display driver, turn the virtual monitor on and temporarily make it the only active display while a stream is starting.", "dd_optional_adjustments": "Optional adjustments", "dd_advanced_remapping_title": "Advanced: Mode remapping", "dd_refresh_rate_option": "Refresh rate", @@ -333,30 +333,30 @@ "dd_resolution_option_manual": "Use manually entered resolution", "dd_resolution_option_manual_desc": "⚠️ Enforcing a manual resolution disables all display overrides below. The host will always be set to this resolution regardless of any override rules.", "dd_refresh_rate_option_manual_desc": "⚠️ Enforcing a manual refresh rate forces the host to this refresh for all streams, overriding any refresh rules below and the \"Double refresh rate for virtual displays\" option.", - "dd_wa_hdr_toggle_delay_desc_1": "When using virtual display device (VDD) for streaming, it might incorrectly display HDR color. Vibepollo can try to mitigate this issue, by turning HDR off and then on again.", - "dd_wa_hdr_toggle_delay_desc_2": "If the value is set to 0, the workaround is disabled (default). If the value is between 0 and 3000 milliseconds, Vibepollo will turn off HDR, wait for the specified amount of time and then turn HDR on again. The recommended delay time is around 500 milliseconds in most cases.", + "dd_wa_hdr_toggle_delay_desc_1": "When using virtual display device (VDD) for streaming, it might incorrectly display HDR color. Nimbus can try to mitigate this issue, by turning HDR off and then on again.", + "dd_wa_hdr_toggle_delay_desc_2": "If the value is set to 0, the workaround is disabled (default). If the value is between 0 and 3000 milliseconds, Nimbus will turn off HDR, wait for the specified amount of time and then turn HDR on again. The recommended delay time is around 500 milliseconds in most cases.", "dd_wa_hdr_toggle_delay_desc_3": "DO NOT use this workaround unless you actually have issues with HDR as it directly impacts stream start time!", "dd_wa_hdr_toggle_delay": "High-contrast workaround for HDR", "dd_wa_hdr_toggle": "High-contrast workaround for HDR", - "dd_wa_hdr_toggle_desc": "When using a virtual display device (VDD), HDR colors can be wrong. Vibepollo can toggle HDR off and back on to mitigate this. Enable only if you see HDR color issues.", + "dd_wa_hdr_toggle_desc": "When using a virtual display device (VDD), HDR colors can be wrong. Nimbus can toggle HDR off and back on to mitigate this. Enable only if you see HDR color issues.", "ds4_back_as_touchpad_click": "Map Back/Select to Touchpad Click", "ds4_back_as_touchpad_click_desc": "When forcing DS4 emulation, map Back/Select to Touchpad Click", "ds5_inputtino_randomize_mac": "Randomize virtual controller MAC", "ds5_inputtino_randomize_mac_desc": "Upon controller registration use a random MAC instead of one based on the controllers internal index to avoid mixing configuration settings of different controllers when the are swapped on client-side.", "encoder": "Force a Specific Encoder", - "encoder_desc": "Force a specific encoder, otherwise Vibepollo will select the best available option. Note: If you specify a hardware encoder on Windows, it must match the GPU where the display is connected.", + "encoder_desc": "Force a specific encoder, otherwise Nimbus will select the best available option. Note: If you specify a hardware encoder on Windows, it must match the GPU where the display is connected.", "encoder_software": "Software", "external_ip": "External IP", - "external_ip_desc": "If no external IP address is given, Vibepollo will automatically detect external IP", + "external_ip_desc": "If no external IP address is given, Nimbus will automatically detect external IP", "fec_percentage": "FEC Percentage", "fec_percentage_desc": "Percentage of error correcting packets per data packet in each video frame. Higher values can correct for more network packet loss, but at the cost of increasing bandwidth usage.", "frame_limiter_fps_limit": "Frame limiter FPS limit", "frame_limiter_fps_limit_desc": "Optional global FPS limit for the frame limiter. Set to 0 to use the stream's requested FPS.", "ffmpeg_auto": "auto -- let ffmpeg decide (default)", "file_apps": "Apps File", - "file_apps_desc": "The file where current apps of Vibepollo are stored.", + "file_apps_desc": "The file where current apps of Nimbus are stored.", "file_state": "State File", - "file_state_desc": "The file where current state of Vibepollo is stored", + "file_state_desc": "The file where current state of Nimbus is stored", "gamepad": "Emulated Gamepad Type", "gamepad_auto": "Automatic selection options", "gamepad_desc": "Choose which type of gamepad to emulate on the host", @@ -384,13 +384,13 @@ "global_prep_cmd": "Command Preparations", "global_prep_cmd_desc": "Configure a list of commands to be executed before or after running any application. If any of the specified preparation commands fail, the application launch process will be aborted.", "hevc_mode": "HEVC Support", - "hevc_mode_0": "Vibepollo will advertise support for HEVC based on encoder capabilities (recommended)", - "hevc_mode_1": "Vibepollo will not advertise support for HEVC", - "hevc_mode_2": "Vibepollo will advertise support for HEVC Main profile", - "hevc_mode_3": "Vibepollo will advertise support for HEVC Main and Main10 (HDR) profiles", + "hevc_mode_0": "Nimbus will advertise support for HEVC based on encoder capabilities (recommended)", + "hevc_mode_1": "Nimbus will not advertise support for HEVC", + "hevc_mode_2": "Nimbus will advertise support for HEVC Main profile", + "hevc_mode_3": "Nimbus will advertise support for HEVC Main and Main10 (HDR) profiles", "hevc_mode_desc": "Allows the client to request HEVC Main or HEVC Main10 video streams. HEVC is more CPU-intensive to encode, so enabling this may reduce performance when using software encoding.", "high_resolution_scrolling": "High Resolution Scrolling Support", - "high_resolution_scrolling_desc": "When enabled, Vibepollo will pass through high resolution scroll events from Moonlight clients. This can be useful to disable for older applications that scroll too fast with high resolution scroll events.", + "high_resolution_scrolling_desc": "When enabled, Nimbus will pass through high resolution scroll events from Moonlight clients. This can be useful to disable for older applications that scroll too fast with high resolution scroll events.", "install_steam_audio_drivers": "Install Steam Audio Drivers", "install_steam_audio_drivers_desc": "If Steam is installed, this will automatically install the Steam Streaming Speakers driver to support 5.1/7.1 surround sound and muting host audio.", "key_repeat_delay": "Key Repeat Delay", @@ -398,7 +398,7 @@ "key_repeat_frequency": "Key Repeat Frequency", "key_repeat_frequency_desc": "How often keys repeat every second. This configurable option supports decimals.", "key_rightalt_to_key_win": "Map Right Alt key to Windows key", - "key_rightalt_to_key_win_desc": "It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Vibepollo think the Right Alt key is the Windows key", + "key_rightalt_to_key_win_desc": "It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Nimbus think the Right Alt key is the Windows key", "keybindings": "Keybindings", "keyboard": "Enable Keyboard Input", "keyboard_desc": "Allows guests to control the host system with the keyboard", @@ -407,11 +407,11 @@ "lan_encryption_mode_2": "Required for all clients", "lan_encryption_mode_desc": "This determines when encryption will be used when streaming over your local network. Encryption can reduce streaming performance, particularly on less powerful hosts and clients.", "locale": "Locale", - "locale_desc": "The locale used for Vibepollo's user interface.", + "locale_desc": "The locale used for Nimbus's user interface.", "log_path": "Logfile Path", - "log_path_desc": "The file where the current logs of Vibepollo are stored.", + "log_path_desc": "The file where the current logs of Nimbus are stored.", "max_bitrate": "Maximum Bitrate", - "max_bitrate_desc": "The maximum bitrate (in Kbps) that Vibepollo will encode the stream at. If set to 0, it will always use the bitrate requested by Moonlight.", + "max_bitrate_desc": "The maximum bitrate (in Kbps) that Nimbus will encode the stream at. If set to 0, it will always use the bitrate requested by Moonlight.", "minimum_fps_target": "Minimum FPS Target", "minimum_fps_target_desc": "The lowest effective FPS a stream can reach. A value of 0 is treated as roughly half of the stream's FPS. A setting of 20 is recommended if you stream 24 or 30fps content.", "session_token_ttl_seconds": "Web UI Session Timeout (seconds)", @@ -441,17 +441,17 @@ "mouse": "Enable Mouse Input", "mouse_desc": "Allows guests to control the host system with the mouse", "native_pen_touch": "Native Pen/Touch Support", - "native_pen_touch_desc": "When enabled, Vibepollo will pass through native pen/touch events from Moonlight clients. This can be useful to disable for older applications without native pen/touch support.", + "native_pen_touch_desc": "When enabled, Nimbus will pass through native pen/touch events from Moonlight clients. This can be useful to disable for older applications without native pen/touch support.", "notify_pre_releases": "PreRelease Notifications", - "notify_pre_releases_desc": "Whether to be notified of new pre-release versions of Vibepollo", + "notify_pre_releases_desc": "Whether to be notified of new pre-release versions of Nimbus", "update_check_interval": "Update Check Interval (seconds)", - "update_check_interval_desc": "How often Vibepollo should check for updates automatically (based on git tags). Set 0 to disable periodic checks.", + "update_check_interval_desc": "How often Nimbus should check for updates automatically (based on git tags). Set 0 to disable periodic checks.", "nvenc_h264_cavlc": "Prefer CAVLC over CABAC in H.264", "nvenc_h264_cavlc_desc": "Simpler form of entropy coding. CAVLC needs around 10% more bitrate for same quality. Only relevant for really old decoding devices.", "nvenc_latency_over_power": "Prefer lower encoding latency over power savings", - "nvenc_latency_over_power_desc": "Vibepollo requests maximum GPU clock speed while streaming to reduce encoding latency. Disabling it is not recommended since this can lead to significantly increased encoding latency.", + "nvenc_latency_over_power_desc": "Nimbus requests maximum GPU clock speed while streaming to reduce encoding latency. Disabling it is not recommended since this can lead to significantly increased encoding latency.", "nvenc_opengl_vulkan_on_dxgi": "Present OpenGL/Vulkan on top of DXGI", - "nvenc_opengl_vulkan_on_dxgi_desc": "Vibepollo can't capture fullscreen OpenGL and Vulkan programs at full frame rate unless they present on top of DXGI. This is system-wide setting that is reverted on sunshine program exit.", + "nvenc_opengl_vulkan_on_dxgi_desc": "Nimbus can't capture fullscreen OpenGL and Vulkan programs at full frame rate unless they present on top of DXGI. This is system-wide setting that is reverted on sunshine program exit.", "nvenc_preset": "Performance preset", "nvenc_preset_1": "(fastest, default)", "nvenc_preset_4": "(balanced quality)", @@ -478,8 +478,8 @@ "origin_web_ui_allowed_wan": "Anyone may access Web UI", "output_name": "Display Id", "output_name_default": "Primary display (default)", - "output_name_desc_unix": "During Vibepollo startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", - "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Vibepollo startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab.", + "output_name_desc_unix": "During Nimbus startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", + "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Nimbus startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab.", "ping_timeout": "Ping Timeout", "ping_timeout_desc": "How long to wait in milliseconds for data from moonlight before shutting down the stream", "video_max_batch_size_kb": "Max Video Batch Size", @@ -487,9 +487,9 @@ "pkey": "Private Key", "pkey_desc": "The private key used for the web UI and Moonlight client pairing. For best compatibility, this should be an RSA-2048 private key.", "port": "Port", - "port_alert_1": "Vibepollo cannot use ports below 1024!", + "port_alert_1": "Nimbus cannot use ports below 1024!", "port_alert_2": "Ports above 65535 are not available!", - "port_desc": "Set the family of ports used by Vibepollo", + "port_desc": "Set the family of ports used by Nimbus", "port_http_port_note": "Use this port to connect with Moonlight.", "port_note": "Note", "port_port": "Port", @@ -516,13 +516,13 @@ "saving": "Saving…", "saved_success": "Saved successfully", "saved_deferred": "Changes will apply on next stream", - "restart_required": "Restart Vibepollo to apply changes", + "restart_required": "Restart Nimbus to apply changes", "manual_save_needed": "Manual save required (restart changes)", "waiting_for_changes": "Waiting for changes…", - "restart_note": "Vibepollo is restarting to apply changes.", + "restart_note": "Nimbus is restarting to apply changes.", "stream_audio": "Stream Audio", "stream_audio_desc": "Whether to stream audio or not. Disabling this can be useful for streaming headless displays as second monitors.", - "sunshine_name": "Vibepollo Name", + "sunshine_name": "Nimbus Name", "sunshine_name_desc": "The name displayed by Moonlight. If not specified, the PC's hostname is used", "sw_preset": "SW Presets", "sw_preset_desc": "Optimize the trade-off between encoding speed (encoded frames per second) and compression efficiency (quality per bit in the bitstream). Defaults to superfast.", @@ -573,7 +573,7 @@ "lossless_scaling_legacy_auto_detect_desc": "Uses a timer-based auto-apply flow instead of the Lossless Scaling hotkey. Not recommended unless the hotkey method fails, because detection can be less reliable.", "rtss_frame_limit_type": "RTSS frame limit type", "rtss_install_path": "RTSS install path", - "vibeshine_file_state": "Vibepollo state file", + "vibeshine_file_state": "Nimbus state file", "virtual_display_layout": "Virtual display layout", "virtual_display_mode": "Virtual display mode", "dd_step_4": "Step 4", @@ -598,7 +598,7 @@ "hide_tray_controls": "Hide tray control options", "hide_tray_controls_desc": "Do not show \"Force Stop\", \"Restart\" and \"Quit\" in tray menu.", "fallback_mode": "Fallback Display Mode", - "fallback_mode_desc": "Vibepollo will use this mode when the client does not provide a mode or when the app is launched through the web UI. Format: [Width]x[Height]x[FPS]", + "fallback_mode_desc": "Nimbus will use this mode when the client does not provide a mode or when the app is launched through the web UI. Format: [Width]x[Height]x[FPS]", "keep_sink_default": "Keep virtual sink as default", "keep_sink_default_desc": "Leave the virtual audio sink selected as the default playback device while streaming audio is active.", "auto_capture_sink": "Auto capture current sink", @@ -728,7 +728,7 @@ "confirm_remove_title": "Remove Client", "confirm_remove_message": "Are you sure you want to remove this client? It will need to be re-paired.", "confirm_remove_title_named": "Remove Client \"{name}\"?", - "confirm_remove_message_named": "This will unpair {name} from Vibepollo. They will need to pair again to connect.", + "confirm_remove_message_named": "This will unpair {name} from Nimbus. They will need to pair again to connect.", "confirm_unpair_all_title": "Unpair All Clients", "confirm_unpair_all_message": "Are you sure you want to unpair all clients? They will all need to be re-paired.", "confirm_unpair_all_message_count": "This will unpair all {count} client(s). They will all need to pair again to connect.", @@ -881,7 +881,7 @@ "chart_zoom_reset": "Reset zoom", "chart_zoom_hint": "Scroll wheel to zoom · Shift+drag to pan", "history_device": "Device", - "history_server_version": "Vibepollo Version", + "history_server_version": "Nimbus Version", "history_started": "Started", "history_ended": "Ended", "history_target_fps": "Target FPS", @@ -918,7 +918,7 @@ "tip_history_device": "Hardware/OS device name reported by the client.", "tip_history_app": "The Sunshine application that was launched for this session.", "tip_history_duration": "How long the streaming session lasted from start to disconnect.", - "tip_history_server_version": "Vibepollo version recorded when this stream started.", + "tip_history_server_version": "Nimbus version recorded when this stream started.", "tip_history_bitrate": "The wire-bandwidth budget the client requested for this session. The encoder may have used slightly less after Sunshine subtracted FEC and audio overhead.", "tip_chart_encode_latency": "How long the GPU/CPU spent encoding each frame, sampled every ~2 seconds. Consistently above 16ms means the encoder is struggling to keep up.", "tip_chart_throughput": "Average outgoing video+audio bitrate in megabits per second, computed from byte deltas between samples. Should hover near the target bitrate.", @@ -935,7 +935,7 @@ }, "playnite": { "title": "Playnite Integration", - "desc": "Vibepollo can sync your Playnite library so your installed games appear automatically. First, install Playnite, run it, and configure it to start with Windows. Then install the Vibepollo plugin below to enable the integration.", + "desc": "Nimbus can sync your Playnite library so your installed games appear automatically. First, install Playnite, run it, and configure it to start with Windows. Then install the Nimbus plugin below to enable the integration.", "only_windows": "Playnite integration is available on Windows only.", "status_title": "Plugin Status", "status_overall": "Status", @@ -945,7 +945,7 @@ "status_connected": "Connected", "status_disabled": "Disabled", "status_waiting": "Limited", - "limited_tooltip": "Games cannot be auto-synced while Playnite is closed. Existing games added to Vibepollo will still work. Once you launch Playnite, syncing resumes automatically.", + "limited_tooltip": "Games cannot be auto-synced while Playnite is closed. Existing games added to Nimbus will still work. Once you launch Playnite, syncing resumes automatically.", "refresh_status": "Refresh Status", "maintenance_title": "Maintenance", "copy_path": "Copy", @@ -958,8 +958,8 @@ "status_not_running_unknown": "Playnite not running — plugin status unknown", "status_unknown": "Playnite not detected", "selects_disabled_hint": "Cannot modify without Playnite connectivity. Start Playnite to enable this.", - "install_button": "Install Vibepollo Plugin", - "reinstall_button": "Reinstall Vibepollo Plugin", + "install_button": "Install Nimbus Plugin", + "reinstall_button": "Reinstall Nimbus Plugin", "upgrade_button": "Upgrade Plugin", "uninstall_button": "Uninstall Plugin", "uninstall_success": "Plugin uninstalled successfully.", @@ -975,7 +975,7 @@ "plugin_outdated": "A newer Playnite plugin is available. Installed: v{installed}, Latest: v{latest}.", "auto_sync": "Synchronize recently played games automatically", "sync_all_installed": "Synchronize every installed Playnite game", - "sync_all_installed_desc": "Adds every installed Playnite game to Vibepollo, alongside recent and category selections.", + "sync_all_installed_desc": "Adds every installed Playnite game to Nimbus, alongside recent and category selections.", "enable_autosync_hint": "Enable synchronization to edit these settings.", "recent_games": "Recent games to sync", "recent_games_desc": "Maximum number of recent games to auto-sync. 0 = disable recent syncing.", @@ -986,7 +986,7 @@ "cleanup_policy": "Cleanup Policy", "policy_keep_until_replaced": "Keep until replaced (default)", "policy_prune_immediately": "Always prune games that no longer qualify (may leave empty slots)", - "policy_explainer": "Choose how Vibepollo removes old auto-synced games.", + "policy_explainer": "Choose how Nimbus removes old auto-synced games.", "sync_categories": "Categories to sync", "sync_categories_help": "Pick Playnite categories sync, which will add all games in that category regardless if they are recently played or not. This will not consume any recently played slot counts, it is simply appended to them.", "sync_plugins": "Include library plugins", @@ -999,7 +999,7 @@ "plugins_placeholder": "Pick library plugins to exclude", "plugins_include_placeholder": "Include games from these plugins", "remove_uninstalled": "Remove uninstalled games automatically", - "remove_uninstalled_desc": "When enabled, Vibepollo removes auto-synced games as soon as they are uninstalled in Playnite.", + "remove_uninstalled_desc": "When enabled, Nimbus removes auto-synced games as soon as they are uninstalled in Playnite.", "extensions_dir": "Extensions directory", "install_dir": "Installation path override", "save_success": "Settings saved.", @@ -1045,7 +1045,7 @@ "summary_activity_ignored": "Activity window is ignored.", "summary_keep_until_replaced": "Games stay until a newer game replaces them.", "summary_prune_immediately": "Games are pruned when they no longer qualify.", - "summary_all_installed": "All installed Playnite games are kept in Vibepollo.", + "summary_all_installed": "All installed Playnite games are kept in Nimbus.", "summary_plugin_include": "Includes all games from {count} selected library plugins.", "summary_remove_uninstalled_on": "Uninstalled games are removed automatically.", "summary_remove_uninstalled_off": "Uninstalled games remain until you remove them manually.", @@ -1064,7 +1064,7 @@ "pin": { "device_name": "Device Name", "display_mode_override": "Display mode override", - "display_mode_override_desc": "Force Vibepollo to use this resolution and refresh rate for this client (format: 1920x1080x60). Leave blank to use the client's request.", + "display_mode_override_desc": "Force Nimbus to use this resolution and refresh rate for this client (format: 1920x1080x60). Leave blank to use the client's request.", "pair_failure": "Pairing Failed: Check if the PIN is typed correctly", "pair_success": "Success! Please check Moonlight to continue", "pin_pairing": "PIN Pairing", @@ -1101,7 +1101,7 @@ }, "troubleshooting": { "dd_reset": "Reset Persistent Display Device Settings", - "dd_reset_desc": "If Vibepollo is stuck trying to restore the changed display device settings, you can reset the settings and proceed to restore the display state manually.", + "dd_reset_desc": "If Nimbus is stuck trying to restore the changed display device settings, you can reset the settings and proceed to restore the display state manually.", "dd_reset_error": "Error while resetting persistence!", "dd_reset_success": "Success resetting persistence!", "dd_export_golden": "Export Golden Display Restore", @@ -1109,7 +1109,7 @@ "dd_export_golden_success": "Exported golden display snapshot.", "dd_export_golden_error": "Failed to export golden display snapshot.", "dd_golden_title": "Golden Display Restore", - "dd_golden_help": "Save a snapshot of your current Windows display layout (which screens are on, primary display, resolution, HDR). Vibepollo uses this if your monitor settings don’t stick — for example after a reboot or at the sign‑in screen. This reduces the chance of coming back to a PC with the primary display still turned off.", + "dd_golden_help": "Save a snapshot of your current Windows display layout (which screens are on, primary display, resolution, HDR). Nimbus uses this if your monitor settings don’t stick — for example after a reboot or at the sign‑in screen. This reduces the chance of coming back to a PC with the primary display still turned off.", "dd_golden_status_present": "Snapshot present", "dd_golden_status_missing": "No snapshot found", "dd_golden_create": "Create Snapshot", @@ -1123,9 +1123,9 @@ "force_close_error": "Error while closing Application", "force_close_success": "Application Closed Successfully!", "logs": "Logs", - "logs_desc": "See the logs uploaded by Vibepollo", + "logs_desc": "See the logs uploaded by Nimbus", "logs_source": "Log source", - "logs_source_sunshine": "Vibepollo", + "logs_source_sunshine": "Nimbus", "logs_source_display_helper": "Display helper", "logs_source_playnite": "Playnite", "logs_source_playnite_launcher": "Playnite launcher", @@ -1146,13 +1146,13 @@ "jump_to_latest": "Jump to latest logs", "export_logs": "Export Logs", "collect_playnite_logs": "Export Logs", - "collect_playnite_logs_desc": "Export Vibepollo log, Playnite/plugin logs, and display-helper logs.", + "collect_playnite_logs_desc": "Export Nimbus log, Playnite/plugin logs, and display-helper logs.", "export_crash_bundle": "Export Crash Bundle", "export_crash_bundle_preparing": "Preparing Crash Bundle...", - "export_crash_bundle_desc": "Download logs along with the most recent Vibepollo crash dump.", - "restart_sunshine": "Restart Vibepollo", - "restart_sunshine_desc": "If Vibepollo isn't working properly, you can try restarting it. This will terminate any running sessions.", - "restart_sunshine_success": "Vibepollo is restarting", + "export_crash_bundle_desc": "Download logs along with the most recent Nimbus crash dump.", + "restart_sunshine": "Restart Nimbus", + "restart_sunshine_desc": "If Nimbus isn't working properly, you can try restarting it. This will terminate any running sessions.", + "restart_sunshine_success": "Nimbus is restarting", "troubleshooting": "Troubleshooting", "unpair_all": "Unpair All", "unpair_all_error": "Error while unpairing", @@ -1239,7 +1239,7 @@ "logout_refresh_hint": "You may now close this tab or refresh the page to sign back in.", "logout_refresh_button": "Refresh to Sign In", "sessions_heading": "Trusted Devices", - "sessions_description": "Devices with active Vibepollo sessions. Remove entries to sign them out remotely.", + "sessions_description": "Devices with active Nimbus sessions. Remove entries to sign them out remotely.", "sessions_device": "Device", "sessions_activity": "Activity", "sessions_status": "Status", @@ -1264,9 +1264,9 @@ }, "rtss": { "tab": "Frame Limiter", - "desc": "Vibepollo can apply a global frame limit via RTSS (recommended) or NVIDIA Control Panel (experimental), then restores the original driver settings when streaming stops.", + "desc": "Nimbus can apply a global frame limit via RTSS (recommended) or NVIDIA Control Panel (experimental), then restores the original driver settings when streaming stops.", "frame_limiter_disable_vsync": "Force VSYNC off while streaming", - "frame_limiter_disable_vsync_desc": "When enabled, Vibepollo sets the NVIDIA driver VSYNC setting to Off for the duration of the stream and restores the previous value afterward. If NVIDIA overrides are unavailable, Vibepollo forces the display to run at its highest refresh rate as a best-effort fallback.", + "frame_limiter_disable_vsync_desc": "When enabled, Nimbus sets the NVIDIA driver VSYNC setting to Off for the duration of the stream and restores the previous value afterward. If NVIDIA overrides are unavailable, Nimbus forces the display to run at its highest refresh rate as a best-effort fallback.", "frame_limiter_fps_limit": "Frame limiter FPS limit", "frame_limiter_fps_limit_desc": "Optional global FPS limit for the frame limiter. Set to 0 to use the stream's requested FPS.", "provider_label": "Frame limiter provider", @@ -1296,9 +1296,9 @@ "install_path_placeholder": "C:\\Program Files (x86)\\RivaTuner Statistics Server", "install_path_desc": "Root install folder (leave blank to auto-detect under Program Files / Program Files (x86)).", "enable_frame_limiter": "Enable frame limiter", - "enable_frame_limiter_desc": "When enabled, Vibepollo applies a global frame limit using your chosen provider for the duration of each stream, then restores the previous driver setting afterward.", + "enable_frame_limiter_desc": "When enabled, Nimbus applies a global frame limit using your chosen provider for the duration of each stream, then restores the previous driver setting afterward.", "sync_limiter_mode": "SyncLimiter mode", - "sync_limiter_desc": "Advanced users only. Vibepollo mirrors this into RTSS. See the comparison below before changing it.", + "sync_limiter_desc": "Advanced users only. Nimbus mirrors this into RTSS. See the comparison below before changing it.", "sync_limiter_do_not_change": "Do not change", "sync_limiter_async": "Async (recommended, eliminates microstuttering)", "sync_limiter_front_edge": "Front edge sync", @@ -1338,14 +1338,14 @@ "sync_limiter_reflex_use": "Only worth testing when Reflex is properly supported and tuned", "recommend_title": "RTSS recommended", "recommend_copy": "RTSS delivers the smoothest streaming experience. Install it if missing; NVIDIA's frame limiter is not recommended because it cannot guarantee perfect frame pacing.", - "status_bootstrap": "RTSS detected; Vibepollo will refresh RTSS configuration on the next stream", - "status_bootstrap_hint": "Vibepollo manages RTSS configuration automatically; no action needed.", - "status_autolaunch_hint": "Vibepollo will launch RTSS automatically when streaming starts." + "status_bootstrap": "RTSS detected; Nimbus will refresh RTSS configuration on the next stream", + "status_bootstrap_hint": "Nimbus manages RTSS configuration automatically; no action needed.", + "status_autolaunch_hint": "Nimbus will launch RTSS automatically when streaming starts." }, "frameLimiter": { "stepTitle": "Frame pacing and limiter", "enable": "Enable frame limiter", - "enableHint": "Vibepollo applies the selected limiter provider at stream start and restores the previous driver setting when the stream ends.", + "enableHint": "Nimbus applies the selected limiter provider at stream start and restores the previous driver setting when the stream ends.", "providerLabel": "Limiter provider", "providerHint": "Auto prefers RTSS whenever it is available and falls back to the NVIDIA Control Panel limiter if needed. NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing.", "limitLabel": "FPS limit override", @@ -1366,13 +1366,13 @@ }, "vsyncUllmLabel": "Disable VSYNC while streaming", "vsyncUllmForcedByDummyPlug": "Forced on because the dummy plug HDR workaround requires VSYNC to be off for 10-bit output.", - "vsyncUllmHintNv": "Vibepollo will force the NVIDIA driver VSYNC setting to Off during the stream and restore it afterward. Use this if you globally enable VSYNC but want Vibepollo sessions without it.", - "vsyncUllmHintGeneric": "Vibepollo will run the display at its highest available refresh rate during the stream as a best-effort VSYNC workaround. NVIDIA overrides are not available on this system.", + "vsyncUllmHintNv": "Nimbus will force the NVIDIA driver VSYNC setting to Off during the stream and restore it afterward. Use this if you globally enable VSYNC but want Nimbus sessions without it.", + "vsyncUllmHintGeneric": "Nimbus will run the display at its highest available refresh rate during the stream as a best-effort VSYNC workaround. NVIDIA overrides are not available on this system.", "rtssPath": "RTSS install path", "rtssPathPlaceholder": "C:\\Program Files (x86)\\RivaTuner Statistics Server", "rtssPathHint": "Root install folder (leave blank to auto-detect under Program Files / Program Files (x86)).", "syncLimiterLabel": "RTSS SyncLimiter mode", - "syncLimiterHint": "Optional: adjust RTSS SyncLimiter when Vibepollo uses RTSS to limit framerate.", + "syncLimiterHint": "Optional: adjust RTSS SyncLimiter when Nimbus uses RTSS to limit framerate.", "rtssMissing": "RTSS was not detected. Install RTSS or adjust the install path to use it as a limiter.", "status": { "unknown": "Frame limiter status unavailable.", @@ -1388,20 +1388,20 @@ "rtssDetected": "RTSS detected and ready.", "rtssNotDetected": "RTSS not detected.", "none": "None", - "rtssBootstrap": "RTSS detected; Vibepollo will refresh RTSS configuration when streaming starts.", - "rtssBootstrapHint": "Vibepollo manages RTSS configuration automatically; no action needed.", - "rtssAutolaunchHint": "Vibepollo will launch RTSS automatically when a stream begins." + "rtssBootstrap": "RTSS detected; Nimbus will refresh RTSS configuration when streaming starts.", + "rtssBootstrapHint": "Nimbus manages RTSS configuration automatically; no action needed.", + "rtssAutolaunchHint": "Nimbus will launch RTSS automatically when a stream begins." }, "actions": { "refresh": "Refresh" }, "noticeTitle": "RTSS recommended", - "noticeCopy": "RTSS offers the most stable frame pacing. Vibepollo will use it automatically when available; NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing." + "noticeCopy": "RTSS offers the most stable frame pacing. Nimbus will use it automatically when available; NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing." }, "changelog": { "nav": "Changelog", "title": "Changelog", - "description": "Release notes for this installed Vibepollo build ({version}) and nearby releases.", + "description": "Release notes for this installed Nimbus build ({version}) and nearby releases.", "installed": "Installed", "latest_available": "Latest available", "bundled_only": "Bundled notes only", diff --git a/src_assets/common/assets/web/public/assets/locale/en_GB.json b/src_assets/common/assets/web/public/assets/locale/en_GB.json index 3093eafbf5..7802ef2074 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_GB.json +++ b/src_assets/common/assets/web/public/assets/locale/en_GB.json @@ -81,7 +81,7 @@ "global_prep_desc": "Enable/Disable the execution of Global Prep Commands for this application.", "global_prep_name": "Global Prep Commands", "image": "Image", - "image_desc": "Application icon/picture/image path that will be sent to client. Image must be a PNG file. If not set, Vibepollo will send default box image.", + "image_desc": "Application icon/picture/image path that will be sent to client. Image must be a PNG file. If not set, Nimbus will send default box image.", "loading": "Loading...", "name": "Name", "output_desc": "The file where the output of the command is stored, if it is not specified, the output is ignored", @@ -111,19 +111,19 @@ "cannot_delete_autosync": "Auto-synced Playnite app cannot be deleted.", "playnite_edit_notice": "This application is managed by Playnite. Command, Working Directory, and Detached commands are ignored. Prep commands still run before and after the game.", "more_fields_below": "More fields below — scroll", - "working_dir_desc": "The working directory that should be passed to the process. For example, some applications use the working directory to search for configuration files. If not set, Vibepollo will default to the parent directory of the command" + "working_dir_desc": "The working directory that should be passed to the process. For example, some applications use the working directory to search for configuration files. If not set, Nimbus will default to the parent directory of the command" }, "config": { "adapter_name": "Adapter Name", "adapter_name_desc_linux_1": "Manually specify a GPU to use for capture.", "adapter_name_desc_linux_2": "to find all devices capable of VAAPI", - "adapter_name_desc_linux_3": "Replace ``renderD129`` with the device from above to lists the name and capabilities of the device. To be supported by Vibepollo, it needs to have at the very minimum:", + "adapter_name_desc_linux_3": "Replace ``renderD129`` with the device from above to lists the name and capabilities of the device. To be supported by Nimbus, it needs to have at the very minimum:", "adapter_name_desc_windows": "Manually specify a GPU to use for capture. If unset, the GPU is chosen automatically. We strongly recommend leaving this field blank to use automatic GPU selection! Note: This GPU must have a display connected and powered on. The appropriate values can be found using the following command:", "adapter_name_placeholder_windows": "Radeon RX 580 Series", "add": "Add", "address_family": "Address Family", "address_family_both": "IPv4+IPv6", - "address_family_desc": "Set the address family used by Vibepollo", + "address_family_desc": "Set the address family used by Nimbus", "address_family_ipv4": "IPv4 only", "always_send_scancodes": "Always Send Scancodes", "always_send_scancodes_desc": "Sending scancodes enhances compatibility with games and apps but may result in incorrect keyboard input from certain clients that aren't using a US English keyboard layout. Enable if keyboard input is not working at all in certain applications. Disable if keys on the client are generating the wrong input on the host.", @@ -155,18 +155,18 @@ "amd_usage_webcam": "webcam -- webcam (slow)", "amd_vbaq": "AMF Variance Based Adaptive Quantization (VBAQ)", "amd_vbaq_desc": "The human visual system is typically less sensitive to artifacts in highly textured areas. In VBAQ mode, pixel variance is used to indicate the complexity of spatial textures, allowing the encoder to allocate more bits to smoother areas. Enabling this feature leads to improvements in subjective visual quality with some content.", - "apply_note": "Click 'Apply' to restart Vibepollo and apply changes. This will terminate any running sessions.", + "apply_note": "Click 'Apply' to restart Nimbus and apply changes. This will terminate any running sessions.", "audio_sink": "Audio Sink", "audio_sink_desc_linux": "The name of the audio sink used for Audio Loopback. If you do not specify this variable, pulseaudio will select the default monitor device. You can find the name of the audio sink using either command:", - "audio_sink_desc_macos": "The name of the audio sink used for Audio Loopback. Vibepollo can only access microphones on macOS due to system limitations. To stream system audio using Soundflower or BlackHole.", + "audio_sink_desc_macos": "The name of the audio sink used for Audio Loopback. Nimbus can only access microphones on macOS due to system limitations. To stream system audio using Soundflower or BlackHole.", "audio_sink_desc_windows": "Manually specify a specific audio device to capture. If unset, the device is chosen automatically. We strongly recommend leaving this field blank to use automatic device selection! If you have multiple audio devices with identical names, you can get the Device ID using the following command:", "audio_sink_placeholder_macos": "BlackHole 2ch", "audio_sink_placeholder_windows": "Speakers (High Definition Audio Device)", "av1_mode": "AV1 Support", - "av1_mode_0": "Vibepollo will advertise support for AV1 based on encoder capabilities (recommended)", - "av1_mode_1": "Vibepollo will not advertise support for AV1", - "av1_mode_2": "Vibepollo will advertise support for AV1 Main 8-bit profile", - "av1_mode_3": "Vibepollo will advertise support for AV1 Main 8-bit and 10-bit (HDR) profiles", + "av1_mode_0": "Nimbus will advertise support for AV1 based on encoder capabilities (recommended)", + "av1_mode_1": "Nimbus will not advertise support for AV1", + "av1_mode_2": "Nimbus will advertise support for AV1 Main 8-bit profile", + "av1_mode_3": "Nimbus will advertise support for AV1 Main 8-bit and 10-bit (HDR) profiles", "av1_mode_desc": "Allows the client to request AV1 Main 8-bit or 10-bit video streams. AV1 is more CPU-intensive to encode, so enabling this may reduce performance when using software encoding.", "prefer_10bit_sdr": "Prefer 10-bit SDR", "prefer_10bit_sdr_follow_global": "Following the global 10-bit SDR setting.", @@ -174,7 +174,7 @@ "back_button_timeout": "Home/Guide Button Emulation Timeout", "back_button_timeout_desc": "If the Back/Select button is held down for the specified number of milliseconds, a Home/Guide button press is emulated. If set to a value < 0 (default), holding the Back/Select button will not emulate the Home/Guide button.", "capture": "Force a Specific Capture Method", - "capture_desc": "On automatic mode Vibepollo will use the first one that works. NvFBC requires patched nvidia drivers.", + "capture_desc": "On automatic mode Nimbus will use the first one that works. NvFBC requires patched nvidia drivers.", "capture_auto_wgc": "Automatic (Windows Graphics Capture)", "capture_wgc_auto": "Windows Graphics Capture (variable)", "capture_ddx_legacy": "Desktop Duplication API (legacy)", @@ -184,7 +184,7 @@ "cert": "Certificate", "cert_desc": "The certificate used for the web UI and Moonlight client pairing. For best compatibility, this should have an RSA-2048 public key.", "channels": "Maximum Connected Clients", - "channels_desc_1": "Vibepollo can allow a single streaming session to be shared with multiple clients simultaneously.", + "channels_desc_1": "Nimbus can allow a single streaming session to be shared with multiple clients simultaneously.", "channels_desc_2": "Some hardware encoders may have limitations that reduce performance with multiple streams.", "coder_cabac": "cabac -- context adaptive binary arithmetic coding - higher quality", "coder_cavlc": "cavlc -- context adaptive variable-length coding - faster decode", @@ -192,7 +192,7 @@ "controller": "Enable Gamepad Input", "controller_desc": "Allows guests to control the host system with a gamepad / controller", "credentials_file": "Credentials File", - "credentials_file_desc": "Store Username/Password separately from Vibepollo's state file.", + "credentials_file_desc": "Store Username/Password separately from Nimbus's state file.", "dd_config_ensure_active": "Activate the display automatically", "dd_config_ensure_only_display": "Deactivate other displays and activate only the specified display", "dd_config_ensure_primary": "Activate the display automatically and make it a primary display", @@ -215,7 +215,7 @@ "dd_hdr_option_auto": "Switch on/off the HDR mode as requested by the client (default)", "dd_hdr_option_disabled": "Do not change HDR settings", "dd_wa_virtual_double_refresh": "Double refresh rate for virtual displays", - "dd_wa_virtual_double_refresh_desc": "Creates Vibepollo virtual displays at 2x the target refresh to prevent unexplained FPS drops. Leave this on unless a specific game or monitor behaves incorrectly. Note: Manual refresh rate overrides this (no doubling).", + "dd_wa_virtual_double_refresh_desc": "Creates Nimbus virtual displays at 2x the target refresh to prevent unexplained FPS drops. Leave this on unless a specific game or monitor behaves incorrectly. Note: Manual refresh rate overrides this (no doubling).", "dd_wa_dummy_plug_hdr10": "HDR 10-bit workaround for physical dummy plugs", "dd_wa_dummy_plug_hdr10_desc": "Locks physical dummy plugs to 30 Hz and keeps the VSYNC override active so HDR10 is recognised. Only enable this when you are using a hardware dummy plug. Applied to game launches only (Desktop streams keep their normal refresh rate).", "dd_wa_dummy_plug_hdr10_link": "Dummy Plugs setup guide", @@ -233,7 +233,7 @@ "dd_mode_remapping_requested_resolution": "Stream resolution (requested)", "dd_options_header": "Advanced display device options", "dd_display_setup_title": "Display Setup (Before Stream)", - "dd_display_setup_intro": "Choose the display to capture and how Vibepollo should prepare Windows just before a stream starts (turn on a monitor, switch primary, set resolution/refresh rate, HDR).", + "dd_display_setup_intro": "Choose the display to capture and how Nimbus should prepare Windows just before a stream starts (turn on a monitor, switch primary, set resolution/refresh rate, HDR).", "dd_automation_label": "Display automation", "dd_automation_desc": "Automatically adjust the host display to match the client's requested resolution and refresh rate before streaming.", "dd_step_1": "Step 1", @@ -243,15 +243,15 @@ "dd_virtual_display_choice_virtual": "Use virtualised display", "dd_virtual_display_choice_physical": "Use my own display", "app_virtual_display_mode_label": "App display preference", - "app_virtual_display_mode_hint": "When this app runs on the Vibepollo virtual display, choose whether to use a per-client or shared virtual screen and configure the layout below. Reset to follow the global display configuration.", + "app_virtual_display_mode_hint": "When this app runs on the Nimbus virtual display, choose whether to use a per-client or shared virtual screen and configure the layout below. Reset to follow the global display configuration.", "app_virtual_display_mode_follow_global": "Following the global display configuration.", "app_virtual_display_mode_reset": "Reset to global display", "app_virtual_display_layout_reset": "Reset to global layout", "app_virtual_display_layout_follow_global": "Following the global virtual display layout.", "app_display_override_label": "Per-app display override", "client_display_override_label": "Client based override", - "app_display_override_hint": "Choose whether this app should launch on the Vibepollo virtual display or target a specific physical monitor instead of the global default.", - "app_display_override_virtual": "Use Vibepollo virtual display", + "app_display_override_hint": "Choose whether this app should launch on the Nimbus virtual display or target a specific physical monitor instead of the global default.", + "app_display_override_virtual": "Use Nimbus virtual display", "app_display_override_physical": "Use a physical display", "app_display_physical_label": "Select physical display", "app_display_physical_hint": "Pick the monitor to use when launching this app. Physical dummy plugs show up here even if they are inactive.", @@ -260,8 +260,8 @@ "app_display_status_active": "active", "app_display_status_inactive": "inactive", "dd_pre_stream_setup": "Pre-stream setup", - "dd_pre_stream_intro": "Vibepollo applies these settings automatically when starting a stream. Use them to activate a display, make it primary, and optionally adjust resolution, refresh rate, and HDR.", - "dd_config_hint": "Choose how Vibepollo prepares the display before streaming.", + "dd_pre_stream_intro": "Nimbus applies these settings automatically when starting a stream. Use them to activate a display, make it primary, and optionally adjust resolution, refresh rate, and HDR.", + "dd_config_hint": "Choose how Nimbus prepares the display before streaming.", "dd_optional_adjustments": "Optional adjustments", "dd_advanced_remapping_title": "Advanced: Mode remapping", "dd_display_overrides": "Display overrides", @@ -276,28 +276,28 @@ "dd_resolution_option_disabled": "Do not change resolution", "dd_resolution_option_manual": "Use manually entered resolution", "dd_resolution_option_manual_desc": "Enter the resolution to be used", - "dd_wa_hdr_toggle_delay_desc_1": "When using virtual display device (VDD) for streaming, it might incorrectly display HDR color. Vibepollo can try to mitigate this issue, by turning HDR off and then on again.", - "dd_wa_hdr_toggle_delay_desc_2": "If the value is set to 0, the workaround is disabled (default). If the value is between 0 and 3000 milliseconds, Vibepollo will turn off HDR, wait for the specified amount of time and then turn HDR on again. The recommended delay time is around 500 milliseconds in most cases.", + "dd_wa_hdr_toggle_delay_desc_1": "When using virtual display device (VDD) for streaming, it might incorrectly display HDR color. Nimbus can try to mitigate this issue, by turning HDR off and then on again.", + "dd_wa_hdr_toggle_delay_desc_2": "If the value is set to 0, the workaround is disabled (default). If the value is between 0 and 3000 milliseconds, Nimbus will turn off HDR, wait for the specified amount of time and then turn HDR on again. The recommended delay time is around 500 milliseconds in most cases.", "dd_wa_hdr_toggle_delay_desc_3": "DO NOT use this workaround unless you actually have issues with HDR as it directly impacts stream start time!", "dd_wa_hdr_toggle_delay": "High-contrast workaround for HDR", "dd_wa_hdr_toggle": "High-contrast workaround for HDR", - "dd_wa_hdr_toggle_desc": "When using a virtual display device (VDD), HDR colours can be wrong. Vibepollo can toggle HDR off and back on to mitigate this. Enable only if you see HDR colour issues.", + "dd_wa_hdr_toggle_desc": "When using a virtual display device (VDD), HDR colours can be wrong. Nimbus can toggle HDR off and back on to mitigate this. Enable only if you see HDR colour issues.", "ds4_back_as_touchpad_click": "Map Back/Select to Touchpad Click", "ds4_back_as_touchpad_click_desc": "When forcing DS4 emulation, map Back/Select to Touchpad Click", "encoder": "Force a Specific Encoder", - "encoder_desc": "Force a specific encoder, otherwise Vibepollo will select the best available option. Note: If you specify a hardware encoder on Windows, it must match the GPU where the display is connected.", + "encoder_desc": "Force a specific encoder, otherwise Nimbus will select the best available option. Note: If you specify a hardware encoder on Windows, it must match the GPU where the display is connected.", "encoder_software": "Software", "external_ip": "External IP", - "external_ip_desc": "If no external IP address is given, Vibepollo will automatically detect external IP", + "external_ip_desc": "If no external IP address is given, Nimbus will automatically detect external IP", "fec_percentage": "FEC Percentage", "fec_percentage_desc": "Percentage of error correcting packets per data packet in each video frame. Higher values can correct for more network packet loss, but at the cost of increasing bandwidth usage.", "frame_limiter_fps_limit": "Frame limiter FPS limit", "frame_limiter_fps_limit_desc": "Optional global FPS limit for the frame limiter. Set to 0 to use the stream's requested FPS.", "ffmpeg_auto": "auto -- let ffmpeg decide (default)", "file_apps": "Apps File", - "file_apps_desc": "The file where current apps of Vibepollo are stored.", + "file_apps_desc": "The file where current apps of Nimbus are stored.", "file_state": "State File", - "file_state_desc": "The file where current state of Vibepollo is stored", + "file_state_desc": "The file where current state of Nimbus is stored", "gamepad": "Emulated Gamepad Type", "gamepad_auto": "Automatic selection options", "gamepad_desc": "Choose which type of gamepad to emulate on the host", @@ -311,13 +311,13 @@ "global_prep_cmd": "Command Preparations", "global_prep_cmd_desc": "Configure a list of commands to be executed before or after running any application. If any of the specified preparation commands fail, the application launch process will be aborted.", "hevc_mode": "HEVC Support", - "hevc_mode_0": "Vibepollo will advertise support for HEVC based on encoder capabilities (recommended)", - "hevc_mode_1": "Vibepollo will not advertise support for HEVC", - "hevc_mode_2": "Vibepollo will advertise support for HEVC Main profile", - "hevc_mode_3": "Vibepollo will advertise support for HEVC Main and Main10 (HDR) profiles", + "hevc_mode_0": "Nimbus will advertise support for HEVC based on encoder capabilities (recommended)", + "hevc_mode_1": "Nimbus will not advertise support for HEVC", + "hevc_mode_2": "Nimbus will advertise support for HEVC Main profile", + "hevc_mode_3": "Nimbus will advertise support for HEVC Main and Main10 (HDR) profiles", "hevc_mode_desc": "Allows the client to request HEVC Main or HEVC Main10 video streams. HEVC is more CPU-intensive to encode, so enabling this may reduce performance when using software encoding.", "high_resolution_scrolling": "High Resolution Scrolling Support", - "high_resolution_scrolling_desc": "When enabled, Vibepollo will pass through high resolution scroll events from Moonlight clients. This can be useful to disable for older applications that scroll too fast with high resolution scroll events.", + "high_resolution_scrolling_desc": "When enabled, Nimbus will pass through high resolution scroll events from Moonlight clients. This can be useful to disable for older applications that scroll too fast with high resolution scroll events.", "install_steam_audio_drivers": "Install Steam Audio Drivers", "install_steam_audio_drivers_desc": "If Steam is installed, this will automatically install the Steam Streaming Speakers driver to support 5.1/7.1 surround sound and muting host audio.", "key_repeat_delay": "Key Repeat Delay", @@ -325,7 +325,7 @@ "key_repeat_frequency": "Key Repeat Frequency", "key_repeat_frequency_desc": "How often keys repeat every second. This configurable option supports decimals.", "key_rightalt_to_key_win": "Map Right Alt key to Windows key", - "key_rightalt_to_key_win_desc": "It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Vibepollo think the Right Alt key is the Windows key", + "key_rightalt_to_key_win_desc": "It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Nimbus think the Right Alt key is the Windows key", "keyboard": "Enable Keyboard Input", "keyboard_desc": "Allows guests to control the host system with the keyboard", "lan_encryption_mode": "LAN Encryption Mode", @@ -333,7 +333,7 @@ "lan_encryption_mode_2": "Required for all clients", "lan_encryption_mode_desc": "This determines when encryption will be used when streaming over your local network. Encryption can reduce streaming performance, particularly on less powerful hosts and clients.", "locale": "Locale", - "locale_desc": "The locale used for Vibepollo's user interface.", + "locale_desc": "The locale used for Nimbus's user interface.", "log_level": "Log Level", "log_level_0": "Verbose", "log_level_1": "Debug", @@ -344,7 +344,7 @@ "log_level_6": "None", "log_level_desc": "The minimum log level printed to standard out", "log_path": "Logfile Path", - "log_path_desc": "The file where the current logs of Vibepollo are stored.", + "log_path_desc": "The file where the current logs of Nimbus are stored.", "session_token_ttl_seconds": "Web UI Session Timeout (seconds)", "session_token_ttl_seconds_desc": "How long a Web UI login session remains valid before requiring re-authentication. Reduce for higher security; increase for convenience.", "remember_me_refresh_token_ttl_seconds": "Trusted device lifetime (seconds)", @@ -356,7 +356,7 @@ "session_history_db_size_limit_mb": "Session History DB Size Limit (MiB)", "session_history_db_size_limit_mb_desc": "Approximate live size limit for the session history database. Oldest ended sessions are pruned when the database grows past this limit. Set 0 to disable size-based pruning.", "max_bitrate": "Maximum Bitrate", - "max_bitrate_desc": "The maximum bitrate (in Kbps) that Vibepollo will encode the stream at. If set to 0, it will always use the bitrate requested by Moonlight.", + "max_bitrate_desc": "The maximum bitrate (in Kbps) that Nimbus will encode the stream at. If set to 0, it will always use the bitrate requested by Moonlight.", "min_threads": "Minimum CPU Thread Count", "min_threads_desc": "Increasing the value slightly reduces encoding efficiency, but the tradeoff is usually worth it to gain the use of more CPU cores for encoding. The ideal value is the lowest value that can reliably encode at your desired streaming settings on your hardware.", "misc": "Miscellaneous options", @@ -365,15 +365,15 @@ "mouse": "Enable Mouse Input", "mouse_desc": "Allows guests to control the host system with the mouse", "native_pen_touch": "Native Pen/Touch Support", - "native_pen_touch_desc": "When enabled, Vibepollo will pass through native pen/touch events from Moonlight clients. This can be useful to disable for older applications without native pen/touch support.", + "native_pen_touch_desc": "When enabled, Nimbus will pass through native pen/touch events from Moonlight clients. This can be useful to disable for older applications without native pen/touch support.", "notify_pre_releases": "PreRelease Notifications", - "notify_pre_releases_desc": "Whether to be notified of new pre-release versions of Vibepollo", + "notify_pre_releases_desc": "Whether to be notified of new pre-release versions of Nimbus", "nvenc_h264_cavlc": "Prefer CAVLC over CABAC in H.264", "nvenc_h264_cavlc_desc": "Simpler form of entropy coding. CAVLC needs around 10% more bitrate for same quality. Only relevant for really old decoding devices.", "nvenc_latency_over_power": "Prefer lower encoding latency over power savings", - "nvenc_latency_over_power_desc": "Vibepollo requests maximum GPU clock speed while streaming to reduce encoding latency. Disabling it is not recommended since this can lead to significantly increased encoding latency.", + "nvenc_latency_over_power_desc": "Nimbus requests maximum GPU clock speed while streaming to reduce encoding latency. Disabling it is not recommended since this can lead to significantly increased encoding latency.", "nvenc_opengl_vulkan_on_dxgi": "Present OpenGL/Vulkan on top of DXGI", - "nvenc_opengl_vulkan_on_dxgi_desc": "Vibepollo can't capture fullscreen OpenGL and Vulkan programs at full frame rate unless they present on top of DXGI. This is system-wide setting that is reverted on sunshine program exit.", + "nvenc_opengl_vulkan_on_dxgi_desc": "Nimbus can't capture fullscreen OpenGL and Vulkan programs at full frame rate unless they present on top of DXGI. This is system-wide setting that is reverted on sunshine program exit.", "nvenc_preset": "Performance preset", "nvenc_preset_1": "(fastest, default)", "nvenc_preset_4": "(balanced quality)", @@ -397,8 +397,8 @@ "origin_web_ui_allowed_lan": "Only those in LAN may access Web UI", "origin_web_ui_allowed_pc": "Only localhost may access Web UI", "origin_web_ui_allowed_wan": "Anyone may access Web UI", - "output_name_desc_unix": "During Vibepollo startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis.", - "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Vibepollo startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab.", + "output_name_desc_unix": "During Nimbus startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis.", + "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Nimbus startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab.", "output_name_unix": "Display number", "output_name_windows": "Display Device Id", "ping_timeout": "Ping Timeout", @@ -408,9 +408,9 @@ "pkey": "Private Key", "pkey_desc": "The private key used for the web UI and Moonlight client pairing. For best compatibility, this should be an RSA-2048 private key.", "port": "Port", - "port_alert_1": "Vibepollo cannot use ports below 1024!", + "port_alert_1": "Nimbus cannot use ports below 1024!", "port_alert_2": "Ports above 65535 are not available!", - "port_desc": "Set the family of ports used by Vibepollo", + "port_desc": "Set the family of ports used by Nimbus", "port_http_port_note": "Use this port to connect with Moonlight.", "port_note": "Note", "port_port": "Port", @@ -432,10 +432,10 @@ "qsv_preset_veryfast": "fastest (lowest quality)", "qsv_slow_hevc": "Allow Slow HEVC Encoding", "qsv_slow_hevc_desc": "This can enable HEVC encoding on older Intel GPUs, at the cost of higher GPU usage and worse performance.", - "restart_note": "Vibepollo is restarting to apply changes.", + "restart_note": "Nimbus is restarting to apply changes.", "stream_audio": "Stream Audio", "stream_audio_desc": "Whether to stream audio or not. Disabling this can be useful for streaming headless displays as second monitors.", - "sunshine_name": "Vibepollo Name", + "sunshine_name": "Nimbus Name", "sunshine_name_desc": "The name displayed by Moonlight. If not specified, the PC's hostname is used", "sw_preset": "SW Presets", "sw_preset_desc": "Optimize the trade-off between encoding speed (encoded frames per second) and compression efficiency (quality per bit in the bitstream). Defaults to superfast.", @@ -488,7 +488,7 @@ "dd_snapshot_exclude_placeholder": "Choose devices (e.g., physical dummy plug) to exclude", "dd_snapshot_exclude_warning": "Keep at least one display unexcluded.", "dd_snapshot_restore_hotkey": "Restore snapshot hotkey", - "dd_snapshot_restore_hotkey_desc": "Windows-only global hotkey. Useful for forcing virtual displays off and restoring snapshots when Vibepollo is paused or stuck. Click the field and press the combo you want.", + "dd_snapshot_restore_hotkey_desc": "Windows-only global hotkey. Useful for forcing virtual displays off and restoring snapshots when Nimbus is paused or stuck. Click the field and press the combo you want.", "dd_snapshot_restore_hotkey_capture": "Listening... press a combo now.", "dd_snapshot_restore_hotkey_reset": "Clear hotkey", "dd_snapshot_restore_hotkey_invalid": "Unsupported key. Use F1-F24, letters, or digits.", @@ -500,15 +500,15 @@ "virtual_display_mode_per_client": "Virtual Display (Per Client)", "virtual_display_mode_shared": "Shared Virtual Display", "virtual_display_mode_label": "Virtual display mode", - "virtual_display_mode_step_hint": "Select which display Vibepollo should prepare: keep your physical monitor, create a per-client virtual display, or reuse a shared virtual screen.", + "virtual_display_mode_step_hint": "Select which display Nimbus should prepare: keep your physical monitor, create a per-client virtual display, or reuse a shared virtual screen.", "virtual_display_hdr_tip": "HDR Tip: Run Windows HDR Calibration while streaming and save the profile. Then open the Clients tab and click HDR Color Profile for the client to choose the saved profile.", "virtual_display_layout_label": "Virtual Display Layout", - "virtual_display_layout_hint": "Choose how Vibepollo positions and prioritizes your virtual display when it is enabled.", + "virtual_display_layout_hint": "Choose how Nimbus positions and prioritizes your virtual display when it is enabled.", "virtual_display_toggle_label": "Configure Physical or Virtual Display", - "virtual_display_toggle_hint": "Override the display Vibepollo uses for this app: switch to the Vibepollo virtual display or pick a specific physical monitor. Leave unchecked to follow the global/client choice.", - "client_display_override_hint": "Override how Vibepollo chooses a display for this client. Leave unchecked to follow the global display settings.", + "virtual_display_toggle_hint": "Override the display Nimbus uses for this app: switch to the Nimbus virtual display or pick a specific physical monitor. Leave unchecked to follow the global/client choice.", + "client_display_override_hint": "Override how Nimbus chooses a display for this client. Leave unchecked to follow the global display settings.", "virtual_display_layout_exclusive": "Exclusive", - "virtual_display_layout_exclusive_desc": "Disable every other monitor so only the Vibepollo virtual display stays visible.", + "virtual_display_layout_exclusive_desc": "Disable every other monitor so only the Nimbus virtual display stays visible.", "virtual_display_layout_extended": "Extended", "virtual_display_layout_extended_desc": "Keep your physical monitors active and simply add the virtual display as another screen.", "virtual_display_layout_extended_primary": "Extended + Primary", @@ -517,15 +517,15 @@ "virtual_display_layout_extended_isolated_desc": "Extend the desktop but park the virtual display far away so the mouse never wanders into it.", "virtual_display_layout_extended_primary_isolated": "Extended + Primary (Isolated)", "virtual_display_layout_extended_primary_isolated_desc": "Combine primary + isolation: make the virtual display primary while keeping it out of reach of physical monitors.", - "virtual_display_status_label": "Vibepollo virtual display driver:", - "virtual_display_status_hint": "Use Vibepollo's virtual display to spin up a high-refresh virtual monitor automatically. If the driver reports an error, reinstall Vibepollo or repair the driver before streaming.", + "virtual_display_status_label": "Nimbus virtual display driver:", + "virtual_display_status_hint": "Use Nimbus's virtual display to spin up a high-refresh virtual monitor automatically. If the driver reports an error, reinstall Nimbus or repair the driver before streaming.", "sudovda_status_unknown": "Unknown", "sudovda_status_ready": "Ready", "sudovda_status_uninitialized": "Not initialized", "sudovda_status_version_incompatible": "Driver version mismatch", "sudovda_status_watchdog_failed": "Watchdog failed", - "dd_activate_virtual_display": "Auto-activate Vibepollo virtual display", - "dd_activate_virtual_display_desc": "When using Vibepollo's virtual display driver, turn the virtual monitor on and temporarily make it the only active display while a stream is starting.", + "dd_activate_virtual_display": "Auto-activate Nimbus virtual display", + "dd_activate_virtual_display_desc": "When using Nimbus's virtual display driver, turn the virtual monitor on and temporarily make it the only active display while a stream is starting.", "ds5_inputtino_randomize_mac": "Randomize virtual controller MAC", "ds5_inputtino_randomize_mac_desc": "Upon controller registration use a random MAC instead of one based on the controllers internal index to avoid mixing configuration settings of different controllers when the are swapped on client-side.", "gamepad_ds5_manual": "DS5 selection options", @@ -553,7 +553,7 @@ "min_log_level_6": "None", "min_log_level_desc": "The minimum log level printed to standard out", "update_check_interval": "Update Check Interval (seconds)", - "update_check_interval_desc": "How often Vibepollo should check for updates automatically (based on git tags). Set 0 to disable periodic checks.", + "update_check_interval_desc": "How often Nimbus should check for updates automatically (based on git tags). Set 0 to disable periodic checks.", "nvenc_section_title": "NVIDIA NVENC Encoder", "output_name": "Display Id", "hot_applied_now": "Settings saved and applied immediately.", @@ -561,7 +561,7 @@ "saving": "Saving…", "saved_success": "Saved successfully", "saved_deferred": "Changes will apply on next stream", - "restart_required": "Restart Vibepollo to apply changes", + "restart_required": "Restart Nimbus to apply changes", "manual_save_needed": "Manual save required (restart changes)", "waiting_for_changes": "Waiting for changes…", "dd_hdr_request_override": "HDR request override", @@ -572,7 +572,7 @@ "lossless_scaling_path": "Lossless Scaling executable", "rtss_frame_limit_type": "RTSS frame limit type", "rtss_install_path": "RTSS install path", - "vibeshine_file_state": "Vibepollo state file", + "vibeshine_file_state": "Nimbus state file", "virtual_display_layout": "Virtual display layout", "virtual_display_mode": "Virtual display mode", "adapter_name_placeholder_unix": "/dev/dri/renderD128", @@ -596,7 +596,7 @@ "hide_tray_controls": "Hide tray control options", "hide_tray_controls_desc": "Do not show \"Force Stop\", \"Restart\" and \"Quit\" in tray menu.", "fallback_mode": "Fallback Display Mode", - "fallback_mode_desc": "Vibepollo will use this mode when the client does not provide a mode or when the app is launched through the web UI. Format: [Width]x[Height]x[FPS]", + "fallback_mode_desc": "Nimbus will use this mode when the client does not provide a mode or when the app is launched through the web UI. Format: [Width]x[Height]x[FPS]", "keep_sink_default": "Keep virtual sink as default", "keep_sink_default_desc": "Leave the virtual audio sink selected as the default playback device while streaming audio is active.", "auto_capture_sink": "Auto capture current sink", @@ -653,7 +653,7 @@ "send": "Send", "warning_msg": "Make sure you have access to the client you are pairing with. This software can give total control to your computer, so be careful!", "display_mode_override": "Display mode override", - "display_mode_override_desc": "Force Vibepollo to use this resolution and refresh rate for this client (format: 1920x1080x60). Leave blank to use the client's request." + "display_mode_override_desc": "Force Nimbus to use this resolution and refresh rate for this client (format: 1920x1080x60). Leave blank to use the client's request." }, "permissions": { "group_action": "Action", @@ -685,7 +685,7 @@ }, "troubleshooting": { "dd_reset": "Reset Persistent Display Device Settings", - "dd_reset_desc": "If Vibepollo is stuck trying to restore the changed display device settings, you can reset the settings and proceed to restore the display state manually.", + "dd_reset_desc": "If Nimbus is stuck trying to restore the changed display device settings, you can reset the settings and proceed to restore the display state manually.", "dd_reset_error": "Error while resetting persistence!", "dd_reset_success": "Success resetting persistence!", "dd_export_golden": "Export Golden Display Restore", @@ -693,7 +693,7 @@ "dd_export_golden_success": "Exported golden display snapshot.", "dd_export_golden_error": "Failed to export golden display snapshot.", "dd_golden_title": "Golden Display Restore", - "dd_golden_help": "Save a snapshot of your current Windows display layout (which screens are on, primary display, resolution, HDR). Vibepollo uses this if your monitor settings don’t stick — for example after a reboot or at the sign‑in screen. This reduces the chance of coming back to a PC with the primary display still turned off.", + "dd_golden_help": "Save a snapshot of your current Windows display layout (which screens are on, primary display, resolution, HDR). Nimbus uses this if your monitor settings don’t stick — for example after a reboot or at the sign‑in screen. This reduces the chance of coming back to a PC with the primary display still turned off.", "dd_golden_status_present": "Snapshot present", "dd_golden_status_missing": "No snapshot found", "dd_golden_create": "Create Snapshot", @@ -707,7 +707,7 @@ "force_close_error": "Error while closing Application", "force_close_success": "Application Closed Successfully!", "logs": "Logs", - "logs_desc": "See the logs uploaded by Vibepollo", + "logs_desc": "See the logs uploaded by Nimbus", "logs_find": "Find...", "search_matches": "{count} matches", "search_no_matches": "No matches", @@ -719,9 +719,9 @@ "search_context": "{count} lines of context", "search_line": "Line", "jump_to_latest": "Jump to latest logs", - "restart_sunshine": "Restart Vibepollo", - "restart_sunshine_desc": "If Vibepollo isn't working properly, you can try restarting it. This will terminate any running sessions.", - "restart_sunshine_success": "Vibepollo is restarting", + "restart_sunshine": "Restart Nimbus", + "restart_sunshine_desc": "If Nimbus isn't working properly, you can try restarting it. This will terminate any running sessions.", + "restart_sunshine_success": "Nimbus is restarting", "troubleshooting": "Troubleshooting", "unpair_all": "Unpair All", "unpair_all_error": "Error while unpairing", @@ -736,9 +736,9 @@ "new_logs_available": "New logs available — jump to latest", "copy_logs": "Copy Logs", "collect_playnite_logs": "Export Logs", - "collect_playnite_logs_desc": "Export Vibepollo log, Playnite/plugin logs, and display-helper logs.", + "collect_playnite_logs_desc": "Export Nimbus log, Playnite/plugin logs, and display-helper logs.", "export_crash_bundle": "Export Crash Bundle", - "export_crash_bundle_desc": "Download logs along with the most recent Vibepollo crash dump." + "export_crash_bundle_desc": "Download logs along with the most recent Nimbus crash dump." }, "welcome": { "confirm_password": "Confirm password", @@ -750,9 +750,9 @@ }, "rtss": { "tab": "Frame Limiter", - "desc": "Vibepollo can apply a global frame limit via NVIDIA Control Panel (default on NVIDIA GPUs) or RTSS, then restores the original setting when streaming stops.", + "desc": "Nimbus can apply a global frame limit via NVIDIA Control Panel (default on NVIDIA GPUs) or RTSS, then restores the original setting when streaming stops.", "frame_limiter_disable_vsync": "Force VSYNC off while streaming", - "frame_limiter_disable_vsync_desc": "When enabled, Vibepollo sets the NVIDIA driver VSYNC setting to Off for the duration of the stream and restores the previous value afterward. If NVIDIA overrides are unavailable, Vibepollo forces the display to run at its highest refresh rate as a best-effort fallback.", + "frame_limiter_disable_vsync_desc": "When enabled, Nimbus sets the NVIDIA driver VSYNC setting to Off for the duration of the stream and restores the previous value afterward. If NVIDIA overrides are unavailable, Nimbus forces the display to run at its highest refresh rate as a best-effort fallback.", "frame_limiter_fps_limit": "Frame limiter FPS limit", "frame_limiter_fps_limit_desc": "Optional global FPS limit for the frame limiter. Set to 0 to use the stream's requested FPS.", "provider_label": "Frame limiter provider", @@ -782,9 +782,9 @@ "install_path_placeholder": "C:\\Program Files (x86)\\RivaTuner Statistics Server", "install_path_desc": "Root install folder (leave blank to auto-detect under Program Files / Program Files (x86)).", "enable_frame_limiter": "Enable frame limiter", - "enable_frame_limiter_desc": "When enabled, Vibepollo applies a global frame limit using your chosen provider for the duration of each stream, then restores the previous driver setting afterward.", + "enable_frame_limiter_desc": "When enabled, Nimbus applies a global frame limit using your chosen provider for the duration of each stream, then restores the previous driver setting afterward.", "sync_limiter_mode": "SyncLimiter mode", - "sync_limiter_desc": "Advanced users only. Vibepollo mirrors this into RTSS. See the comparison below before changing it.", + "sync_limiter_desc": "Advanced users only. Nimbus mirrors this into RTSS. See the comparison below before changing it.", "sync_limiter_do_not_change": "Do not change", "sync_limiter_async": "Async", "sync_limiter_front_edge": "Front edge sync", @@ -822,16 +822,16 @@ "sync_limiter_reflex_disadvantages": "Requires explicit game support; inconsistent behavior; microstutter issues are common", "recommend_title": "RTSS recommended", "recommend_copy": "RTSS delivers the smoothest streaming experience. Install it if missing; NVIDIA's frame limiter is not recommended because it cannot guarantee perfect frame pacing.", - "status_bootstrap": "RTSS detected; Vibepollo will refresh RTSS configuration on the next stream", - "status_bootstrap_hint": "Vibepollo manages RTSS configuration automatically; no action needed.", - "status_autolaunch_hint": "Vibepollo will launch RTSS automatically when streaming starts.", - "sync_limiter_reflex_stutter": "Can conflict with Vibepollo (microstutter likely)", + "status_bootstrap": "RTSS detected; Nimbus will refresh RTSS configuration on the next stream", + "status_bootstrap_hint": "Nimbus manages RTSS configuration automatically; no action needed.", + "status_autolaunch_hint": "Nimbus will launch RTSS automatically when streaming starts.", + "sync_limiter_reflex_stutter": "Can conflict with Nimbus (microstutter likely)", "sync_limiter_reflex_use": "Only for testing when Reflex is mandatory" }, "frameLimiter": { "stepTitle": "Frame pacing and limiter", "enable": "Enable frame limiter", - "enableHint": "Vibepollo applies the selected limiter provider at stream start and restores the previous driver setting when the stream ends.", + "enableHint": "Nimbus applies the selected limiter provider at stream start and restores the previous driver setting when the stream ends.", "providerLabel": "Limiter provider", "providerHint": "Auto prefers NVIDIA Control Panel when available and falls back to RTSS otherwise.", "limitLabel": "FPS limit override", @@ -852,13 +852,13 @@ }, "vsyncUllmLabel": "Disable VSYNC while streaming", "vsyncUllmForcedByDummyPlug": "Forced on because the dummy plug HDR workaround requires VSYNC to be off for 10-bit output.", - "vsyncUllmHintNv": "Vibepollo will force the NVIDIA driver VSYNC setting to Off during the stream and restore it afterwards. Use this if you globally enable VSYNC but want Vibepollo sessions without it.", - "vsyncUllmHintGeneric": "Vibepollo will run the display at its highest available refresh rate during the stream as a best-effort VSYNC workaround. NVIDIA overrides are not available on this system.", + "vsyncUllmHintNv": "Nimbus will force the NVIDIA driver VSYNC setting to Off during the stream and restore it afterwards. Use this if you globally enable VSYNC but want Nimbus sessions without it.", + "vsyncUllmHintGeneric": "Nimbus will run the display at its highest available refresh rate during the stream as a best-effort VSYNC workaround. NVIDIA overrides are not available on this system.", "rtssPath": "RTSS install path", "rtssPathPlaceholder": "C:\\Program Files (x86)\\RivaTuner Statistics Server", "rtssPathHint": "Root install folder (leave blank to auto-detect under Program Files / Program Files (x86)).", "syncLimiterLabel": "RTSS SyncLimiter mode", - "syncLimiterHint": "Optional: adjust RTSS SyncLimiter when Vibepollo uses RTSS to limit framerate.", + "syncLimiterHint": "Optional: adjust RTSS SyncLimiter when Nimbus uses RTSS to limit framerate.", "rtssMissing": "RTSS was not detected. Install RTSS or adjust the install path to use it as a limiter.", "status": { "unknown": "Frame limiter status unavailable.", @@ -874,15 +874,15 @@ "rtssDetected": "RTSS detected.", "rtssNotDetected": "RTSS not detected.", "none": "None", - "rtssBootstrap": "RTSS detected; Vibepollo will refresh RTSS configuration when streaming starts.", - "rtssBootstrapHint": "Vibepollo manages RTSS configuration automatically; no action needed.", - "rtssAutolaunchHint": "Vibepollo will launch RTSS automatically when a stream begins." + "rtssBootstrap": "RTSS detected; Nimbus will refresh RTSS configuration when streaming starts.", + "rtssBootstrapHint": "Nimbus manages RTSS configuration automatically; no action needed.", + "rtssAutolaunchHint": "Nimbus will launch RTSS automatically when a stream begins." }, "actions": { "refresh": "Refresh" }, "noticeTitle": "RTSS recommended", - "noticeCopy": "RTSS offers the most stable frame pacing. Vibepollo will use it automatically when available; NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing." + "noticeCopy": "RTSS offers the most stable frame pacing. Nimbus will use it automatically when available; NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing." }, "playnite": { "delete_all_autosync": "Delete All Playnite Auto-Sync Apps", @@ -891,7 +891,7 @@ "delete_autosync_success": "Removed auto-synced Playnite games.", "delete_autosync_error": "Failed to delete auto-synced Playnite games.", "title": "Playnite Integration", - "desc": "Vibepollo can sync your Playnite library so your installed games appear automatically. First, install Playnite, run it, and configure it to start with Windows. Then install the Vibepollo plugin below to enable the integration.", + "desc": "Nimbus can sync your Playnite library so your installed games appear automatically. First, install Playnite, run it, and configure it to start with Windows. Then install the Nimbus plugin below to enable the integration.", "only_windows": "Playnite integration is available on Windows only.", "status_title": "Plugin Status", "status_overall": "Status", @@ -901,7 +901,7 @@ "status_connected": "Connected", "status_disabled": "Disabled", "status_waiting": "Limited", - "limited_tooltip": "Games cannot be auto-synced while Playnite is closed. Existing games added to Vibepollo will still work. Once you launch Playnite, syncing resumes automatically.", + "limited_tooltip": "Games cannot be auto-synced while Playnite is closed. Existing games added to Nimbus will still work. Once you launch Playnite, syncing resumes automatically.", "refresh_status": "Refresh Status", "maintenance_title": "Maintenance", "copy_path": "Copy", @@ -914,8 +914,8 @@ "status_not_running_unknown": "Playnite not running — plugin status unknown", "status_unknown": "Playnite not detected", "selects_disabled_hint": "Cannot modify without Playnite connectivity. Start Playnite to enable this.", - "install_button": "Install Vibepollo Plugin", - "reinstall_button": "Reinstall Vibepollo Plugin", + "install_button": "Install Nimbus Plugin", + "reinstall_button": "Reinstall Nimbus Plugin", "upgrade_button": "Upgrade Plugin", "uninstall_button": "Uninstall Plugin", "uninstall_success": "Plugin uninstalled successfully.", @@ -931,7 +931,7 @@ "plugin_outdated": "A newer Playnite plugin is available. Installed: v{installed}, Latest: v{latest}.", "auto_sync": "Synchronize recently played games automatically", "sync_all_installed": "Synchronize every installed Playnite game", - "sync_all_installed_desc": "Adds every installed Playnite game to Vibepollo, alongside recent and category selections.", + "sync_all_installed_desc": "Adds every installed Playnite game to Nimbus, alongside recent and category selections.", "enable_autosync_hint": "Enable synchronization to edit these settings.", "recent_games": "Recent games to sync", "recent_games_desc": "Maximum number of recent games to auto-sync. 0 = disable recent syncing.", @@ -942,7 +942,7 @@ "cleanup_policy": "Cleanup Policy", "policy_keep_until_replaced": "Keep until replaced (default)", "policy_prune_immediately": "Always prune games that no longer qualify (may leave empty slots)", - "policy_explainer": "Choose how Vibepollo removes old auto-synced games.", + "policy_explainer": "Choose how Nimbus removes old auto-synced games.", "sync_categories": "Categories to sync", "sync_categories_help": "Pick Playnite categories sync, which will add all games in that category regardless if they are recently played or not. This will not consume any recently played slot counts, it is simply appended to them.", "sync_plugins": "Include library plugins", @@ -955,7 +955,7 @@ "plugins_placeholder": "Pick library plugins to exclude", "plugins_include_placeholder": "Include games from these plugins", "remove_uninstalled": "Remove uninstalled games automatically", - "remove_uninstalled_desc": "When enabled, Vibepollo removes auto-synced games as soon as they are uninstalled in Playnite.", + "remove_uninstalled_desc": "When enabled, Nimbus removes auto-synced games as soon as they are uninstalled in Playnite.", "extensions_dir": "Extensions directory", "install_dir": "Installation path override", "save_success": "Settings saved.", @@ -996,7 +996,7 @@ "summary_activity_ignored": "Activity window is ignored.", "summary_keep_until_replaced": "Games stay until a newer game replaces them.", "summary_prune_immediately": "Games are pruned when they no longer qualify.", - "summary_all_installed": "All installed Playnite games are kept in Vibepollo.", + "summary_all_installed": "All installed Playnite games are kept in Nimbus.", "summary_plugin_include": "Includes all games from {count} selected library plugins.", "summary_remove_uninstalled_on": "Uninstalled games are removed automatically.", "summary_remove_uninstalled_off": "Uninstalled games remain until you remove them manually.", @@ -1005,13 +1005,13 @@ "summary_excluded_categories_more": "Excluded categories: {categories} (+{count} more)." }, "offline": { - "title": "Lost Connection to Vibepollo", - "description": "The web interface lost connectivity to the Vibepollo service.", + "title": "Lost Connection to Nimbus", + "description": "The web interface lost connectivity to the Nimbus service.", "retrying": "Attempting to reconnect… The page will refresh once available.", "refresh_now": "Refresh now", - "close_hint": "If you stopped Vibepollo intentionally, you may close this tab.", - "output_name_desc_unix": "During Vibepollo startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", - "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Vibepollo startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab." + "close_hint": "If you stopped Nimbus intentionally, you may close this tab.", + "output_name_desc_unix": "During Nimbus startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", + "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Nimbus startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab." }, "resources": { "title": "Resources" @@ -1092,7 +1092,7 @@ "confirm_remove_title": "Remove Client", "confirm_remove_message": "Are you sure you want to remove this client? It will need to be re-paired.", "confirm_remove_title_named": "Remove Client \"{name}\"?", - "confirm_remove_message_named": "This will unpair {name} from Vibepollo. They will need to pair again to connect.", + "confirm_remove_message_named": "This will unpair {name} from Nimbus. They will need to pair again to connect.", "confirm_unpair_all_title": "Unpair All Clients", "confirm_unpair_all_message": "Are you sure you want to unpair all clients? They will all need to be re-paired.", "confirm_unpair_all_message_count": "This will unpair all {count} client(s). They will all need to pair again to connect." @@ -1165,7 +1165,7 @@ "logout_refresh_hint": "You may now close this tab or refresh the page to sign back in.", "logout_refresh_button": "Refresh to Sign In", "sessions_heading": "Trusted Devices", - "sessions_description": "Devices with active Vibepollo sessions. Remove entries to sign them out remotely.", + "sessions_description": "Devices with active Nimbus sessions. Remove entries to sign them out remotely.", "sessions_device": "Device", "sessions_activity": "Activity", "sessions_status": "Status", diff --git a/src_assets/common/assets/web/public/assets/locale/en_US.json b/src_assets/common/assets/web/public/assets/locale/en_US.json index 02004c9a70..0d94d88b02 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_US.json +++ b/src_assets/common/assets/web/public/assets/locale/en_US.json @@ -81,7 +81,7 @@ "global_prep_desc": "Enable/Disable the execution of Global Prep Commands for this application.", "global_prep_name": "Global Prep Commands", "image": "Image", - "image_desc": "Application icon/picture/image path that will be sent to client. Image must be a PNG file. If not set, Vibepollo will send default box image.", + "image_desc": "Application icon/picture/image path that will be sent to client. Image must be a PNG file. If not set, Nimbus will send default box image.", "loading": "Loading...", "name": "Name", "output_desc": "The file where the output of the command is stored, if it is not specified, the output is ignored", @@ -111,19 +111,19 @@ "cannot_delete_autosync": "Auto-synced Playnite app cannot be deleted.", "playnite_edit_notice": "This application is managed by Playnite. Command, Working Directory, and Detached commands are ignored. Prep commands still run before and after the game.", "more_fields_below": "More fields below — scroll", - "working_dir_desc": "The working directory that should be passed to the process. For example, some applications use the working directory to search for configuration files. If not set, Vibepollo will default to the parent directory of the command" + "working_dir_desc": "The working directory that should be passed to the process. For example, some applications use the working directory to search for configuration files. If not set, Nimbus will default to the parent directory of the command" }, "config": { "adapter_name": "Adapter Name", "adapter_name_desc_linux_1": "Manually specify a GPU to use for capture.", "adapter_name_desc_linux_2": "to find all devices capable of VAAPI", - "adapter_name_desc_linux_3": "Replace ``renderD129`` with the device from above to lists the name and capabilities of the device. To be supported by Vibepollo, it needs to have at the very minimum:", + "adapter_name_desc_linux_3": "Replace ``renderD129`` with the device from above to lists the name and capabilities of the device. To be supported by Nimbus, it needs to have at the very minimum:", "adapter_name_desc_windows": "Manually specify a GPU to use for capture. If unset, the GPU is chosen automatically. We strongly recommend leaving this field blank to use automatic GPU selection! Note: This GPU must have a display connected and powered on. The appropriate values can be found using the following command:", "adapter_name_placeholder_windows": "Radeon RX 580 Series", "add": "Add", "address_family": "Address Family", "address_family_both": "IPv4+IPv6", - "address_family_desc": "Set the address family used by Vibepollo", + "address_family_desc": "Set the address family used by Nimbus", "address_family_ipv4": "IPv4 only", "always_send_scancodes": "Always Send Scancodes", "always_send_scancodes_desc": "Sending scancodes enhances compatibility with games and apps but may result in incorrect keyboard input from certain clients that aren't using a US English keyboard layout. Enable if keyboard input is not working at all in certain applications. Disable if keys on the client are generating the wrong input on the host.", @@ -155,18 +155,18 @@ "amd_usage_webcam": "webcam -- webcam (slow)", "amd_vbaq": "AMF Variance Based Adaptive Quantization (VBAQ)", "amd_vbaq_desc": "The human visual system is typically less sensitive to artifacts in highly textured areas. In VBAQ mode, pixel variance is used to indicate the complexity of spatial textures, allowing the encoder to allocate more bits to smoother areas. Enabling this feature leads to improvements in subjective visual quality with some content.", - "apply_note": "Click 'Apply' to restart Vibepollo and apply changes. This will terminate any running sessions.", + "apply_note": "Click 'Apply' to restart Nimbus and apply changes. This will terminate any running sessions.", "audio_sink": "Audio Sink", "audio_sink_desc_linux": "The name of the audio sink used for Audio Loopback. If you do not specify this variable, pulseaudio will select the default monitor device. You can find the name of the audio sink using either command:", - "audio_sink_desc_macos": "The name of the audio sink used for Audio Loopback. Vibepollo can only access microphones on macOS due to system limitations. To stream system audio using Soundflower or BlackHole.", + "audio_sink_desc_macos": "The name of the audio sink used for Audio Loopback. Nimbus can only access microphones on macOS due to system limitations. To stream system audio using Soundflower or BlackHole.", "audio_sink_desc_windows": "Manually specify a specific audio device to capture. If unset, the device is chosen automatically. We strongly recommend leaving this field blank to use automatic device selection! If you have multiple audio devices with identical names, you can get the Device ID using the following command:", "audio_sink_placeholder_macos": "BlackHole 2ch", "audio_sink_placeholder_windows": "Speakers (High Definition Audio Device)", "av1_mode": "AV1 Support", - "av1_mode_0": "Vibepollo will advertise support for AV1 based on encoder capabilities (recommended)", - "av1_mode_1": "Vibepollo will not advertise support for AV1", - "av1_mode_2": "Vibepollo will advertise support for AV1 Main 8-bit profile", - "av1_mode_3": "Vibepollo will advertise support for AV1 Main 8-bit and 10-bit (HDR) profiles", + "av1_mode_0": "Nimbus will advertise support for AV1 based on encoder capabilities (recommended)", + "av1_mode_1": "Nimbus will not advertise support for AV1", + "av1_mode_2": "Nimbus will advertise support for AV1 Main 8-bit profile", + "av1_mode_3": "Nimbus will advertise support for AV1 Main 8-bit and 10-bit (HDR) profiles", "av1_mode_desc": "Allows the client to request AV1 Main 8-bit or 10-bit video streams. AV1 is more CPU-intensive to encode, so enabling this may reduce performance when using software encoding.", "prefer_10bit_sdr": "Prefer 10-bit SDR", "prefer_10bit_sdr_follow_global": "Following the global 10-bit SDR setting.", @@ -174,7 +174,7 @@ "back_button_timeout": "Home/Guide Button Emulation Timeout", "back_button_timeout_desc": "If the Back/Select button is held down for the specified number of milliseconds, a Home/Guide button press is emulated. If set to a value < 0 (default), holding the Back/Select button will not emulate the Home/Guide button.", "capture": "Force a Specific Capture Method", - "capture_desc": "On automatic mode Vibepollo will use the first one that works. NvFBC requires patched nvidia drivers.", + "capture_desc": "On automatic mode Nimbus will use the first one that works. NvFBC requires patched nvidia drivers.", "capture_auto_wgc": "Automatic (Windows Graphics Capture)", "capture_wgc_auto": "Windows Graphics Capture (variable)", "capture_ddx_legacy": "Desktop Duplication API (legacy)", @@ -184,7 +184,7 @@ "cert": "Certificate", "cert_desc": "The certificate used for the web UI and Moonlight client pairing. For best compatibility, this should have an RSA-2048 public key.", "channels": "Maximum Connected Clients", - "channels_desc_1": "Vibepollo can allow a single streaming session to be shared with multiple clients simultaneously.", + "channels_desc_1": "Nimbus can allow a single streaming session to be shared with multiple clients simultaneously.", "channels_desc_2": "Some hardware encoders may have limitations that reduce performance with multiple streams.", "coder_cabac": "cabac -- context adaptive binary arithmetic coding - higher quality", "coder_cavlc": "cavlc -- context adaptive variable-length coding - faster decode", @@ -192,7 +192,7 @@ "controller": "Enable Gamepad Input", "controller_desc": "Allows guests to control the host system with a gamepad / controller", "credentials_file": "Credentials File", - "credentials_file_desc": "Store Username/Password separately from Vibepollo's state file.", + "credentials_file_desc": "Store Username/Password separately from Nimbus's state file.", "dd_config_ensure_active": "Activate the display automatically", "dd_config_ensure_only_display": "Deactivate other displays and activate only the specified display", "dd_config_ensure_primary": "Activate the display automatically and make it a primary display", @@ -237,7 +237,7 @@ "dd_mode_remapping_requested_resolution": "Stream resolution (requested)", "dd_options_header": "Advanced display device options", "dd_display_setup_title": "Display Setup (Before Stream)", - "dd_display_setup_intro": "Choose the display to capture and how Vibepollo should prepare Windows just before a stream starts (turn on a monitor, switch primary, set resolution/refresh rate, HDR).", + "dd_display_setup_intro": "Choose the display to capture and how Nimbus should prepare Windows just before a stream starts (turn on a monitor, switch primary, set resolution/refresh rate, HDR).", "dd_automation_label": "Display automation", "dd_automation_desc": "Automatically adjust the host display to match the client's requested resolution and refresh rate before streaming.", "dd_step_1": "Step 1", @@ -247,15 +247,15 @@ "dd_virtual_display_choice_virtual": "Use virtualized display", "dd_virtual_display_choice_physical": "Use my own display", "app_virtual_display_mode_label": "App display preference", - "app_virtual_display_mode_hint": "When this app runs on the Vibepollo virtual display, choose whether to use a per-client or shared virtual screen and configure the layout below. Reset to follow the global display configuration.", + "app_virtual_display_mode_hint": "When this app runs on the Nimbus virtual display, choose whether to use a per-client or shared virtual screen and configure the layout below. Reset to follow the global display configuration.", "app_virtual_display_mode_follow_global": "Following the global display configuration.", "app_virtual_display_mode_reset": "Reset to global display", "app_virtual_display_layout_reset": "Reset to global layout", "app_virtual_display_layout_follow_global": "Following the global virtual display layout.", "app_display_override_label": "Per-app display override", "client_display_override_label": "Client based override", - "app_display_override_hint": "Choose whether this app should launch on the Vibepollo virtual display or target a specific physical monitor instead of the global default.", - "app_display_override_virtual": "Use Vibepollo virtual display", + "app_display_override_hint": "Choose whether this app should launch on the Nimbus virtual display or target a specific physical monitor instead of the global default.", + "app_display_override_virtual": "Use Nimbus virtual display", "app_display_override_physical": "Use a physical display", "app_display_physical_label": "Select physical display", "app_display_physical_hint": "Pick the monitor to use when launching this app. Physical dummy plugs show up here even if they are inactive.", @@ -264,10 +264,10 @@ "app_display_status_active": "active", "app_display_status_inactive": "inactive", "dd_pre_stream_setup": "Pre-stream setup", - "dd_pre_stream_intro": "Vibepollo applies these settings automatically when starting a stream. Use them to activate a display, make it primary, and optionally adjust resolution, refresh rate, and HDR.", - "dd_config_hint": "Choose how Vibepollo prepares the display before streaming.", - "dd_activate_virtual_display": "Auto-activate Vibepollo virtual display", - "dd_activate_virtual_display_desc": "When using Vibepollo's virtual display driver, turn the virtual monitor on and temporarily make it the only active display while a stream is starting.", + "dd_pre_stream_intro": "Nimbus applies these settings automatically when starting a stream. Use them to activate a display, make it primary, and optionally adjust resolution, refresh rate, and HDR.", + "dd_config_hint": "Choose how Nimbus prepares the display before streaming.", + "dd_activate_virtual_display": "Auto-activate Nimbus virtual display", + "dd_activate_virtual_display_desc": "When using Nimbus's virtual display driver, turn the virtual monitor on and temporarily make it the only active display while a stream is starting.", "dd_optional_adjustments": "Optional adjustments", "dd_advanced_remapping_title": "Advanced: Mode remapping", "dd_display_overrides": "Display overrides", @@ -282,31 +282,31 @@ "dd_resolution_option_disabled": "Do not change resolution", "dd_resolution_option_manual": "Use manually entered resolution", "dd_wa_virtual_double_refresh": "Double refresh rate for virtual displays", - "dd_wa_virtual_double_refresh_desc": "Creates Vibepollo virtual displays at 2x the target refresh to prevent unexplained FPS drops. Leave this on unless a specific game or monitor behaves incorrectly. Note: Manual refresh rate overrides this (no doubling).", - "dd_wa_hdr_toggle_delay_desc_1": "When using virtual display device (VDD) for streaming, it might incorrectly display HDR color. Vibepollo can try to mitigate this issue, by turning HDR off and then on again.", - "dd_wa_hdr_toggle_delay_desc_2": "If the value is set to 0, the workaround is disabled (default). If the value is between 0 and 3000 milliseconds, Vibepollo will turn off HDR, wait for the specified amount of time and then turn HDR on again. The recommended delay time is around 500 milliseconds in most cases.", + "dd_wa_virtual_double_refresh_desc": "Creates Nimbus virtual displays at 2x the target refresh to prevent unexplained FPS drops. Leave this on unless a specific game or monitor behaves incorrectly. Note: Manual refresh rate overrides this (no doubling).", + "dd_wa_hdr_toggle_delay_desc_1": "When using virtual display device (VDD) for streaming, it might incorrectly display HDR color. Nimbus can try to mitigate this issue, by turning HDR off and then on again.", + "dd_wa_hdr_toggle_delay_desc_2": "If the value is set to 0, the workaround is disabled (default). If the value is between 0 and 3000 milliseconds, Nimbus will turn off HDR, wait for the specified amount of time and then turn HDR on again. The recommended delay time is around 500 milliseconds in most cases.", "dd_wa_hdr_toggle_delay_desc_3": "DO NOT use this workaround unless you actually have issues with HDR as it directly impacts stream start time!", "dd_wa_hdr_toggle_delay": "High-contrast workaround for HDR", "dd_wa_hdr_toggle": "High-contrast workaround for HDR", - "dd_wa_hdr_toggle_desc": "When using a virtual display device (VDD), HDR colors can be wrong. Vibepollo can toggle HDR off and back on to mitigate this. Enable only if you see HDR color issues.", + "dd_wa_hdr_toggle_desc": "When using a virtual display device (VDD), HDR colors can be wrong. Nimbus can toggle HDR off and back on to mitigate this. Enable only if you see HDR color issues.", "ds4_back_as_touchpad_click": "Map Back/Select to Touchpad Click", "ds4_back_as_touchpad_click_desc": "When forcing DS4 emulation, map Back/Select to Touchpad Click", "ds5_inputtino_randomize_mac": "Randomize virtual controller MAC", "ds5_inputtino_randomize_mac_desc": "Upon controller registration use a random MAC instead of one based on the controllers internal index to avoid mixing configuration settings of different controllers when the are swapped on client-side.", "encoder": "Force a Specific Encoder", - "encoder_desc": "Force a specific encoder, otherwise Vibepollo will select the best available option. Note: If you specify a hardware encoder on Windows, it must match the GPU where the display is connected.", + "encoder_desc": "Force a specific encoder, otherwise Nimbus will select the best available option. Note: If you specify a hardware encoder on Windows, it must match the GPU where the display is connected.", "encoder_software": "Software", "external_ip": "External IP", - "external_ip_desc": "If no external IP address is given, Vibepollo will automatically detect external IP", + "external_ip_desc": "If no external IP address is given, Nimbus will automatically detect external IP", "fec_percentage": "FEC Percentage", "fec_percentage_desc": "Percentage of error correcting packets per data packet in each video frame. Higher values can correct for more network packet loss, but at the cost of increasing bandwidth usage.", "frame_limiter_fps_limit": "Frame limiter FPS limit", "frame_limiter_fps_limit_desc": "Optional global FPS limit for the frame limiter. Set to 0 to use the stream's requested FPS.", "ffmpeg_auto": "auto -- let ffmpeg decide (default)", "file_apps": "Apps File", - "file_apps_desc": "The file where current apps of Vibepollo are stored.", + "file_apps_desc": "The file where current apps of Nimbus are stored.", "file_state": "State File", - "file_state_desc": "The file where current state of Vibepollo is stored", + "file_state_desc": "The file where current state of Nimbus is stored", "gamepad": "Emulated Gamepad Type", "gamepad_auto": "Automatic selection options", "gamepad_desc": "Choose which type of gamepad to emulate on the host", @@ -321,13 +321,13 @@ "global_prep_cmd": "Command Preparations", "global_prep_cmd_desc": "Configure a list of commands to be executed before or after running any application. If any of the specified preparation commands fail, the application launch process will be aborted.", "hevc_mode": "HEVC Support", - "hevc_mode_0": "Vibepollo will advertise support for HEVC based on encoder capabilities (recommended)", - "hevc_mode_1": "Vibepollo will not advertise support for HEVC", - "hevc_mode_2": "Vibepollo will advertise support for HEVC Main profile", - "hevc_mode_3": "Vibepollo will advertise support for HEVC Main and Main10 (HDR) profiles", + "hevc_mode_0": "Nimbus will advertise support for HEVC based on encoder capabilities (recommended)", + "hevc_mode_1": "Nimbus will not advertise support for HEVC", + "hevc_mode_2": "Nimbus will advertise support for HEVC Main profile", + "hevc_mode_3": "Nimbus will advertise support for HEVC Main and Main10 (HDR) profiles", "hevc_mode_desc": "Allows the client to request HEVC Main or HEVC Main10 video streams. HEVC is more CPU-intensive to encode, so enabling this may reduce performance when using software encoding.", "high_resolution_scrolling": "High Resolution Scrolling Support", - "high_resolution_scrolling_desc": "When enabled, Vibepollo will pass through high resolution scroll events from Moonlight clients. This can be useful to disable for older applications that scroll too fast with high resolution scroll events.", + "high_resolution_scrolling_desc": "When enabled, Nimbus will pass through high resolution scroll events from Moonlight clients. This can be useful to disable for older applications that scroll too fast with high resolution scroll events.", "install_steam_audio_drivers": "Install Steam Audio Drivers", "install_steam_audio_drivers_desc": "If Steam is installed, this will automatically install the Steam Streaming Speakers driver to support 5.1/7.1 surround sound and muting host audio.", "key_repeat_delay": "Key Repeat Delay", @@ -335,7 +335,7 @@ "key_repeat_frequency": "Key Repeat Frequency", "key_repeat_frequency_desc": "How often keys repeat every second. This configurable option supports decimals.", "key_rightalt_to_key_win": "Map Right Alt key to Windows key", - "key_rightalt_to_key_win_desc": "It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Vibepollo think the Right Alt key is the Windows key", + "key_rightalt_to_key_win_desc": "It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Nimbus think the Right Alt key is the Windows key", "keybindings": "Keybindings", "keyboard": "Enable Keyboard Input", "keyboard_desc": "Allows guests to control the host system with the keyboard", @@ -344,11 +344,11 @@ "lan_encryption_mode_2": "Required for all clients", "lan_encryption_mode_desc": "This determines when encryption will be used when streaming over your local network. Encryption can reduce streaming performance, particularly on less powerful hosts and clients.", "locale": "Locale", - "locale_desc": "The locale used for Vibepollo's user interface.", + "locale_desc": "The locale used for Nimbus's user interface.", "log_path": "Logfile Path", - "log_path_desc": "The file where the current logs of Vibepollo are stored.", + "log_path_desc": "The file where the current logs of Nimbus are stored.", "max_bitrate": "Maximum Bitrate", - "max_bitrate_desc": "The maximum bitrate (in Kbps) that Vibepollo will encode the stream at. If set to 0, it will always use the bitrate requested by Moonlight.", + "max_bitrate_desc": "The maximum bitrate (in Kbps) that Nimbus will encode the stream at. If set to 0, it will always use the bitrate requested by Moonlight.", "minimum_fps_target": "Minimum FPS Target", "minimum_fps_target_desc": "The lowest effective FPS a stream can reach. A value of 0 is treated as roughly half of the stream's FPS. A setting of 20 is recommended if you stream 24 or 30fps content.", "session_token_ttl_seconds": "Web UI Session Timeout (seconds)", @@ -378,15 +378,15 @@ "mouse": "Enable Mouse Input", "mouse_desc": "Allows guests to control the host system with the mouse", "native_pen_touch": "Native Pen/Touch Support", - "native_pen_touch_desc": "When enabled, Vibepollo will pass through native pen/touch events from Moonlight clients. This can be useful to disable for older applications without native pen/touch support.", + "native_pen_touch_desc": "When enabled, Nimbus will pass through native pen/touch events from Moonlight clients. This can be useful to disable for older applications without native pen/touch support.", "notify_pre_releases": "PreRelease Notifications", - "notify_pre_releases_desc": "Whether to be notified of new pre-release versions of Vibepollo", + "notify_pre_releases_desc": "Whether to be notified of new pre-release versions of Nimbus", "nvenc_h264_cavlc": "Prefer CAVLC over CABAC in H.264", "nvenc_h264_cavlc_desc": "Simpler form of entropy coding. CAVLC needs around 10% more bitrate for same quality. Only relevant for really old decoding devices.", "nvenc_latency_over_power": "Prefer lower encoding latency over power savings", - "nvenc_latency_over_power_desc": "Vibepollo requests maximum GPU clock speed while streaming to reduce encoding latency. Disabling it is not recommended since this can lead to significantly increased encoding latency.", + "nvenc_latency_over_power_desc": "Nimbus requests maximum GPU clock speed while streaming to reduce encoding latency. Disabling it is not recommended since this can lead to significantly increased encoding latency.", "nvenc_opengl_vulkan_on_dxgi": "Present OpenGL/Vulkan on top of DXGI", - "nvenc_opengl_vulkan_on_dxgi_desc": "Vibepollo can't capture fullscreen OpenGL and Vulkan programs at full frame rate unless they present on top of DXGI. This is system-wide setting that is reverted on sunshine program exit.", + "nvenc_opengl_vulkan_on_dxgi_desc": "Nimbus can't capture fullscreen OpenGL and Vulkan programs at full frame rate unless they present on top of DXGI. This is system-wide setting that is reverted on sunshine program exit.", "nvenc_preset": "Performance preset", "nvenc_preset_1": "(fastest, default)", "nvenc_preset_4": "(balanced quality)", @@ -412,8 +412,8 @@ "origin_web_ui_allowed_pc": "Only localhost may access Web UI", "origin_web_ui_allowed_wan": "Anyone may access Web UI", "output_name": "Display Id", - "output_name_desc_unix": "During Vibepollo startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", - "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Vibepollo startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab.", + "output_name_desc_unix": "During Nimbus startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", + "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Nimbus startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab.", "ping_timeout": "Ping Timeout", "ping_timeout_desc": "How long to wait in milliseconds for data from moonlight before shutting down the stream", "video_max_batch_size_kb": "Max Video Batch Size", @@ -421,9 +421,9 @@ "pkey": "Private Key", "pkey_desc": "The private key used for the web UI and Moonlight client pairing. For best compatibility, this should be an RSA-2048 private key.", "port": "Port", - "port_alert_1": "Vibepollo cannot use ports below 1024!", + "port_alert_1": "Nimbus cannot use ports below 1024!", "port_alert_2": "Ports above 65535 are not available!", - "port_desc": "Set the family of ports used by Vibepollo", + "port_desc": "Set the family of ports used by Nimbus", "port_http_port_note": "Use this port to connect with Moonlight.", "port_note": "Note", "port_port": "Port", @@ -445,10 +445,10 @@ "qsv_preset_veryfast": "fastest (lowest quality)", "qsv_slow_hevc": "Allow Slow HEVC Encoding", "qsv_slow_hevc_desc": "This can enable HEVC encoding on older Intel GPUs, at the cost of higher GPU usage and worse performance.", - "restart_note": "Vibepollo is restarting to apply changes.", + "restart_note": "Nimbus is restarting to apply changes.", "stream_audio": "Stream Audio", "stream_audio_desc": "Whether to stream audio or not. Disabling this can be useful for streaming headless displays as second monitors.", - "sunshine_name": "Vibepollo Name", + "sunshine_name": "Nimbus Name", "sunshine_name_desc": "The name displayed by Moonlight. If not specified, the PC's hostname is used", "sw_preset": "SW Presets", "sw_preset_desc": "Optimize the trade-off between encoding speed (encoded frames per second) and compression efficiency (quality per bit in the bitstream). Defaults to superfast.", @@ -497,7 +497,7 @@ "dd_config_ensure_active_warning": "Windows does not display the lock screen on external monitors until you click on them, which can cause black screens when streaming. If this is an issue, use the primary display option instead.", "dd_config_label": "Device configuration", "dd_snapshot_restore_hotkey": "Restore snapshot hotkey", - "dd_snapshot_restore_hotkey_desc": "Windows-only global hotkey. Useful for forcing virtual displays off and restoring snapshots when Vibepollo is paused or stuck. Click the field and press the combo you want.", + "dd_snapshot_restore_hotkey_desc": "Windows-only global hotkey. Useful for forcing virtual displays off and restoring snapshots when Nimbus is paused or stuck. Click the field and press the combo you want.", "dd_snapshot_restore_hotkey_capture": "Listening... press a combo now.", "dd_snapshot_restore_hotkey_reset": "Clear hotkey", "dd_snapshot_restore_hotkey_invalid": "Unsupported key. Use F1-F24, letters, or digits.", @@ -507,15 +507,15 @@ "virtual_display_mode_per_client": "Virtual Display (Per Client)", "virtual_display_mode_shared": "Shared Virtual Display", "virtual_display_mode_label": "Virtual display mode", - "virtual_display_mode_step_hint": "Select which display Vibepollo should prepare: keep your physical monitor, create a per-client virtual display, or reuse a shared virtual screen.", + "virtual_display_mode_step_hint": "Select which display Nimbus should prepare: keep your physical monitor, create a per-client virtual display, or reuse a shared virtual screen.", "virtual_display_hdr_tip": "HDR Tip: Run Windows HDR Calibration while streaming and save the profile. Then open the Clients tab and click HDR Color Profile for the client to choose the saved profile.", "virtual_display_layout_label": "Virtual Display Layout", - "virtual_display_layout_hint": "Choose how Vibepollo positions and prioritizes your virtual display when it is enabled.", + "virtual_display_layout_hint": "Choose how Nimbus positions and prioritizes your virtual display when it is enabled.", "virtual_display_toggle_label": "Configure Physical or Virtual Display", - "virtual_display_toggle_hint": "Override the display Vibepollo uses for this app: switch to the Vibepollo virtual display or pick a specific physical monitor. Leave unchecked to follow the global/client choice.", - "client_display_override_hint": "Override how Vibepollo chooses a display for this client. Leave unchecked to follow the global display settings.", + "virtual_display_toggle_hint": "Override the display Nimbus uses for this app: switch to the Nimbus virtual display or pick a specific physical monitor. Leave unchecked to follow the global/client choice.", + "client_display_override_hint": "Override how Nimbus chooses a display for this client. Leave unchecked to follow the global display settings.", "virtual_display_layout_exclusive": "Exclusive", - "virtual_display_layout_exclusive_desc": "Disable every other monitor so only the Vibepollo virtual display stays visible.", + "virtual_display_layout_exclusive_desc": "Disable every other monitor so only the Nimbus virtual display stays visible.", "virtual_display_layout_extended": "Extended", "virtual_display_layout_extended_desc": "Keep your physical monitors active and simply add the virtual display as another screen.", "virtual_display_layout_extended_primary": "Extended + Primary", @@ -524,8 +524,8 @@ "virtual_display_layout_extended_isolated_desc": "Extend the desktop but park the virtual display far away so the mouse never wanders into it.", "virtual_display_layout_extended_primary_isolated": "Extended + Primary (Isolated)", "virtual_display_layout_extended_primary_isolated_desc": "Combine primary + isolation: make the virtual display primary while keeping it out of reach of physical monitors.", - "virtual_display_status_label": "Vibepollo virtual display driver:", - "virtual_display_status_hint": "Use Vibepollo's virtual display to spin up a high-refresh virtual monitor automatically. If the driver reports an error, reinstall Vibepollo or repair the driver before streaming.", + "virtual_display_status_label": "Nimbus virtual display driver:", + "virtual_display_status_hint": "Use Nimbus's virtual display to spin up a high-refresh virtual monitor automatically. If the driver reports an error, reinstall Nimbus or repair the driver before streaming.", "sudovda_status_unknown": "Unknown", "sudovda_status_ready": "Ready", "sudovda_status_uninitialized": "Not initialized", @@ -544,13 +544,13 @@ "crash_dump_dismiss_success": "Crash notification dismissed.", "crash_dump_dismiss_error": "Failed to dismiss crash notification.", "update_check_interval": "Update Check Interval (seconds)", - "update_check_interval_desc": "How often Vibepollo should check for updates automatically (based on git tags). Set 0 to disable periodic checks.", + "update_check_interval_desc": "How often Nimbus should check for updates automatically (based on git tags). Set 0 to disable periodic checks.", "hot_applied_now": "Settings saved and applied immediately.", "hot_deferred": "Settings saved. Changes will apply when the current stream ends (or on next start).", "saving": "Saving…", "saved_success": "Saved successfully", "saved_deferred": "Changes will apply on next stream", - "restart_required": "Restart Vibepollo to apply changes", + "restart_required": "Restart Nimbus to apply changes", "manual_save_needed": "Manual save required (restart changes)", "waiting_for_changes": "Waiting for changes…", "dd_hdr_request_override": "HDR request override", @@ -561,7 +561,7 @@ "lossless_scaling_path": "Lossless Scaling executable", "rtss_frame_limit_type": "RTSS frame limit type", "rtss_install_path": "RTSS install path", - "vibeshine_file_state": "Vibepollo state file", + "vibeshine_file_state": "Nimbus state file", "virtual_display_layout": "Virtual display layout", "virtual_display_mode": "Virtual display mode", "adapter_name_placeholder_unix": "/dev/dri/renderD128", @@ -585,7 +585,7 @@ "hide_tray_controls": "Hide tray control options", "hide_tray_controls_desc": "Do not show \"Force Stop\", \"Restart\" and \"Quit\" in tray menu.", "fallback_mode": "Fallback Display Mode", - "fallback_mode_desc": "Vibepollo will use this mode when the client does not provide a mode or when the app is launched through the web UI. Format: [Width]x[Height]x[FPS]", + "fallback_mode_desc": "Nimbus will use this mode when the client does not provide a mode or when the app is launched through the web UI. Format: [Width]x[Height]x[FPS]", "keep_sink_default": "Keep virtual sink as default", "keep_sink_default_desc": "Leave the virtual audio sink selected as the default playback device while streaming audio is active.", "auto_capture_sink": "Auto capture current sink", @@ -649,7 +649,7 @@ "send": "Send", "warning_msg": "Make sure you have access to the client you are pairing with. This software can give total control to your computer, so be careful!", "display_mode_override": "Display mode override", - "display_mode_override_desc": "Force Vibepollo to use this resolution and refresh rate for this client (format: 1920x1080x60). Leave blank to use the client's request." + "display_mode_override_desc": "Force Nimbus to use this resolution and refresh rate for this client (format: 1920x1080x60). Leave blank to use the client's request." }, "permissions": { "group_action": "Action", @@ -682,7 +682,7 @@ }, "troubleshooting": { "dd_reset": "Reset Persistent Display Device Settings", - "dd_reset_desc": "If Vibepollo is stuck trying to restore the changed display device settings, you can reset the settings and proceed to restore the display state manually.", + "dd_reset_desc": "If Nimbus is stuck trying to restore the changed display device settings, you can reset the settings and proceed to restore the display state manually.", "dd_reset_error": "Error while resetting persistence!", "dd_reset_success": "Success resetting persistence!", "dd_export_golden": "Export Golden Display Restore", @@ -690,7 +690,7 @@ "dd_export_golden_success": "Exported golden display snapshot.", "dd_export_golden_error": "Failed to export golden display snapshot.", "dd_golden_title": "Golden Display Restore", - "dd_golden_help": "Save a snapshot of your current Windows display layout (which screens are on, primary display, resolution, HDR). Vibepollo uses this if your monitor settings don’t stick — for example after a reboot or at the sign‑in screen. This reduces the chance of coming back to a PC with the primary display still turned off.", + "dd_golden_help": "Save a snapshot of your current Windows display layout (which screens are on, primary display, resolution, HDR). Nimbus uses this if your monitor settings don’t stick — for example after a reboot or at the sign‑in screen. This reduces the chance of coming back to a PC with the primary display still turned off.", "dd_golden_status_present": "Snapshot present", "dd_golden_status_missing": "No snapshot found", "dd_golden_create": "Create Snapshot", @@ -704,7 +704,7 @@ "force_close_error": "Error while closing Application", "force_close_success": "Application Closed Successfully!", "logs": "Logs", - "logs_desc": "See the logs uploaded by Vibepollo", + "logs_desc": "See the logs uploaded by Nimbus", "logs_find": "Find...", "search_matches": "{count} matches", "search_no_matches": "No matches", @@ -716,9 +716,9 @@ "search_context": "{count} lines of context", "search_line": "Line", "jump_to_latest": "Jump to latest logs", - "restart_sunshine": "Restart Vibepollo", - "restart_sunshine_desc": "If Vibepollo isn't working properly, you can try restarting it. This will terminate any running sessions.", - "restart_sunshine_success": "Vibepollo is restarting", + "restart_sunshine": "Restart Nimbus", + "restart_sunshine_desc": "If Nimbus isn't working properly, you can try restarting it. This will terminate any running sessions.", + "restart_sunshine_success": "Nimbus is restarting", "troubleshooting": "Troubleshooting", "unpair_all": "Unpair All", "unpair_all_error": "Error while unpairing", @@ -733,9 +733,9 @@ "new_logs_available": "New logs available — jump to latest", "copy_logs": "Copy Logs", "collect_playnite_logs": "Export Logs", - "collect_playnite_logs_desc": "Export Vibepollo log, Playnite/plugin logs, and display-helper logs.", + "collect_playnite_logs_desc": "Export Nimbus log, Playnite/plugin logs, and display-helper logs.", "export_crash_bundle": "Export Crash Bundle", - "export_crash_bundle_desc": "Download logs along with the most recent Vibepollo crash dump." + "export_crash_bundle_desc": "Download logs along with the most recent Nimbus crash dump." }, "welcome": { "confirm_password": "Confirm password", @@ -747,9 +747,9 @@ }, "rtss": { "tab": "Frame Limiter", - "desc": "Vibepollo can apply a global frame limit via RTSS (recommended) or NVIDIA Control Panel (experimental), then restores the original driver settings when streaming stops.", + "desc": "Nimbus can apply a global frame limit via RTSS (recommended) or NVIDIA Control Panel (experimental), then restores the original driver settings when streaming stops.", "frame_limiter_disable_vsync": "Force VSYNC off while streaming", - "frame_limiter_disable_vsync_desc": "When enabled, Vibepollo sets the NVIDIA driver VSYNC setting to Off for the duration of the stream and restores the previous value afterward. If NVIDIA overrides are unavailable, Vibepollo forces the display to run at its highest refresh rate as a best-effort fallback.", + "frame_limiter_disable_vsync_desc": "When enabled, Nimbus sets the NVIDIA driver VSYNC setting to Off for the duration of the stream and restores the previous value afterward. If NVIDIA overrides are unavailable, Nimbus forces the display to run at its highest refresh rate as a best-effort fallback.", "frame_limiter_fps_limit": "Frame limiter FPS limit", "frame_limiter_fps_limit_desc": "Optional global FPS limit for the frame limiter. Set to 0 to use the stream's requested FPS.", "provider_label": "Frame limiter provider", @@ -779,9 +779,9 @@ "install_path_placeholder": "C:\\Program Files (x86)\\RivaTuner Statistics Server", "install_path_desc": "Root install folder (leave blank to auto-detect under Program Files / Program Files (x86)).", "enable_frame_limiter": "Enable frame limiter", - "enable_frame_limiter_desc": "When enabled, Vibepollo applies a global frame limit using your chosen provider for the duration of each stream, then restores the previous driver setting afterward.", + "enable_frame_limiter_desc": "When enabled, Nimbus applies a global frame limit using your chosen provider for the duration of each stream, then restores the previous driver setting afterward.", "sync_limiter_mode": "SyncLimiter mode", - "sync_limiter_desc": "Advanced users only. Vibepollo mirrors this into RTSS. See the comparison below before changing it.", + "sync_limiter_desc": "Advanced users only. Nimbus mirrors this into RTSS. See the comparison below before changing it.", "sync_limiter_do_not_change": "Do not change", "sync_limiter_async": "Async", "sync_limiter_front_edge": "Front edge sync", @@ -807,13 +807,13 @@ "sync_limiter_back_use": "Displays that behave better with vsync-style pacing", "sync_limiter_reflex_short": "NVIDIA Reflex", "sync_limiter_reflex_latency": "Variable; depends on driver", - "sync_limiter_reflex_stutter": "Can conflict with Vibepollo (microstutter likely)", + "sync_limiter_reflex_stutter": "Can conflict with Nimbus (microstutter likely)", "sync_limiter_reflex_use": "Only for testing when Reflex is mandatory", "recommend_title": "RTSS recommended", "recommend_copy": "RTSS delivers the smoothest streaming experience. Install it if missing; NVIDIA's frame limiter is not recommended because it cannot guarantee perfect frame pacing.", - "status_bootstrap": "RTSS detected; Vibepollo will refresh RTSS configuration on the next stream", - "status_bootstrap_hint": "Vibepollo manages RTSS configuration automatically; no action needed.", - "status_autolaunch_hint": "Vibepollo will launch RTSS automatically when streaming starts.", + "status_bootstrap": "RTSS detected; Nimbus will refresh RTSS configuration on the next stream", + "status_bootstrap_hint": "Nimbus manages RTSS configuration automatically; no action needed.", + "status_autolaunch_hint": "Nimbus will launch RTSS automatically when streaming starts.", "sync_limiter_help_advantages": "Advantages", "sync_limiter_help_disadvantages": "Disadvantages", "sync_limiter_async_advantages": "Stable timing regardless of refresh alignment; very smooth at odd FPS or Hz combos", @@ -828,7 +828,7 @@ "frameLimiter": { "stepTitle": "Frame pacing and limiter", "enable": "Enable frame limiter", - "enableHint": "Vibepollo applies the selected limiter provider at stream start and restores the previous driver setting when the stream ends.", + "enableHint": "Nimbus applies the selected limiter provider at stream start and restores the previous driver setting when the stream ends.", "providerLabel": "Limiter provider", "providerHint": "Auto prefers RTSS whenever it is available and falls back to the NVIDIA Control Panel limiter if needed. NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing.", "limitLabel": "FPS limit override", @@ -849,13 +849,13 @@ }, "vsyncUllmLabel": "Disable VSYNC while streaming", "vsyncUllmForcedByDummyPlug": "Forced on because the dummy plug HDR workaround requires VSYNC to be off for 10-bit output.", - "vsyncUllmHintNv": "Vibepollo will force the NVIDIA driver VSYNC setting to Off during the stream and restore it afterward. Use this if you globally enable VSYNC but want Vibepollo sessions without it.", - "vsyncUllmHintGeneric": "Vibepollo will run the display at its highest available refresh rate during the stream as a best-effort VSYNC workaround. NVIDIA overrides are not available on this system.", + "vsyncUllmHintNv": "Nimbus will force the NVIDIA driver VSYNC setting to Off during the stream and restore it afterward. Use this if you globally enable VSYNC but want Nimbus sessions without it.", + "vsyncUllmHintGeneric": "Nimbus will run the display at its highest available refresh rate during the stream as a best-effort VSYNC workaround. NVIDIA overrides are not available on this system.", "rtssPath": "RTSS install path", "rtssPathPlaceholder": "C:\\Program Files (x86)\\RivaTuner Statistics Server", "rtssPathHint": "Root install folder (leave blank to auto-detect under Program Files / Program Files (x86)).", "syncLimiterLabel": "RTSS SyncLimiter mode", - "syncLimiterHint": "Optional: adjust RTSS SyncLimiter when Vibepollo uses RTSS to limit framerate.", + "syncLimiterHint": "Optional: adjust RTSS SyncLimiter when Nimbus uses RTSS to limit framerate.", "rtssMissing": "RTSS was not detected. Install RTSS or adjust the install path to use it as a limiter.", "status": { "unknown": "Frame limiter status unavailable.", @@ -871,24 +871,24 @@ "rtssDetected": "RTSS detected and ready.", "rtssNotDetected": "RTSS not detected.", "none": "None", - "rtssBootstrap": "RTSS detected; Vibepollo will refresh RTSS configuration when streaming starts.", - "rtssBootstrapHint": "Vibepollo manages RTSS configuration automatically; no action needed.", - "rtssAutolaunchHint": "Vibepollo will launch RTSS automatically when a stream begins." + "rtssBootstrap": "RTSS detected; Nimbus will refresh RTSS configuration when streaming starts.", + "rtssBootstrapHint": "Nimbus manages RTSS configuration automatically; no action needed.", + "rtssAutolaunchHint": "Nimbus will launch RTSS automatically when a stream begins." }, "actions": { "refresh": "Refresh" }, "noticeTitle": "RTSS recommended", - "noticeCopy": "RTSS offers the most stable frame pacing. Vibepollo will use it automatically when available; NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing." + "noticeCopy": "RTSS offers the most stable frame pacing. Nimbus will use it automatically when available; NVIDIA's limiter is not recommended because it cannot guarantee perfect frame pacing." }, "offline": { - "title": "Lost Connection to Vibepollo", - "description": "The web interface lost connectivity to the Vibepollo service.", + "title": "Lost Connection to Nimbus", + "description": "The web interface lost connectivity to the Nimbus service.", "retrying": "Attempting to reconnect… The page will refresh once available.", "refresh_now": "Refresh now", - "close_hint": "If you stopped Vibepollo intentionally, you may close this tab.", - "output_name_desc_unix": "During Vibepollo startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", - "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Vibepollo startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab." + "close_hint": "If you stopped Nimbus intentionally, you may close this tab.", + "output_name_desc_unix": "During Nimbus startup, you should see the list of detected displays. Note: You need to use the id value inside the parenthesis. Below is an example; the actual output can be found in the Troubleshooting tab.", + "output_name_desc_windows": "Manually specify a display device id to use for capture. If unset, the primary display is captured. Note: If you specified a GPU above, this display must be connected to that GPU. During Nimbus startup, you should see the list of detected displays. Below is an example; the actual output can be found in the Troubleshooting tab." }, "resources": { "title": "Resources" @@ -969,14 +969,14 @@ "confirm_remove_title": "Remove Client", "confirm_remove_message": "Are you sure you want to remove this client? It will need to be re-paired.", "confirm_remove_title_named": "Remove Client \"{name}\"?", - "confirm_remove_message_named": "This will unpair {name} from Vibepollo. They will need to pair again to connect.", + "confirm_remove_message_named": "This will unpair {name} from Nimbus. They will need to pair again to connect.", "confirm_unpair_all_title": "Unpair All Clients", "confirm_unpair_all_message": "Are you sure you want to unpair all clients? They will all need to be re-paired.", "confirm_unpair_all_message_count": "This will unpair all {count} client(s). They will all need to pair again to connect." }, "playnite": { "title": "Playnite Integration", - "desc": "Vibepollo can sync your Playnite library so your installed games appear automatically. First, install Playnite, run it, and configure it to start with Windows. Then install the Vibepollo plugin below to enable the integration.", + "desc": "Nimbus can sync your Playnite library so your installed games appear automatically. First, install Playnite, run it, and configure it to start with Windows. Then install the Nimbus plugin below to enable the integration.", "only_windows": "Playnite integration is available on Windows only.", "status_title": "Plugin Status", "status_overall": "Status", @@ -986,7 +986,7 @@ "status_connected": "Connected", "status_disabled": "Disabled", "status_waiting": "Limited", - "limited_tooltip": "Games cannot be auto-synced while Playnite is closed. Existing games added to Vibepollo will still work. Once you launch Playnite, syncing resumes automatically.", + "limited_tooltip": "Games cannot be auto-synced while Playnite is closed. Existing games added to Nimbus will still work. Once you launch Playnite, syncing resumes automatically.", "refresh_status": "Refresh Status", "maintenance_title": "Maintenance", "copy_path": "Copy", @@ -999,8 +999,8 @@ "status_not_running_unknown": "Playnite not running — plugin status unknown", "status_unknown": "Playnite not detected", "selects_disabled_hint": "Cannot modify without Playnite connectivity. Start Playnite to enable this.", - "install_button": "Install Vibepollo Plugin", - "reinstall_button": "Reinstall Vibepollo Plugin", + "install_button": "Install Nimbus Plugin", + "reinstall_button": "Reinstall Nimbus Plugin", "upgrade_button": "Upgrade Plugin", "uninstall_button": "Uninstall Plugin", "uninstall_success": "Plugin uninstalled successfully.", @@ -1016,7 +1016,7 @@ "plugin_outdated": "A newer Playnite plugin is available. Installed: v{installed}, Latest: v{latest}.", "auto_sync": "Synchronize recently played games automatically", "sync_all_installed": "Synchronize every installed Playnite game", - "sync_all_installed_desc": "Adds every installed Playnite game to Vibepollo, alongside recent and category selections.", + "sync_all_installed_desc": "Adds every installed Playnite game to Nimbus, alongside recent and category selections.", "enable_autosync_hint": "Enable synchronization to edit these settings.", "recent_games": "Recent games to sync", "recent_games_desc": "Maximum number of recent games to auto-sync. 0 = disable recent syncing.", @@ -1027,7 +1027,7 @@ "cleanup_policy": "Cleanup Policy", "policy_keep_until_replaced": "Keep until replaced (default)", "policy_prune_immediately": "Always prune games that no longer qualify (may leave empty slots)", - "policy_explainer": "Choose how Vibepollo removes old auto-synced games.", + "policy_explainer": "Choose how Nimbus removes old auto-synced games.", "sync_categories": "Categories to sync", "sync_categories_help": "Pick Playnite categories sync, which will add all games in that category regardless if they are recently played or not. This will not consume any recently played slot counts, it is simply appended to them.", "sync_plugins": "Include library plugins", @@ -1040,7 +1040,7 @@ "plugins_placeholder": "Pick library plugins to exclude", "plugins_include_placeholder": "Include games from these plugins", "remove_uninstalled": "Remove uninstalled games automatically", - "remove_uninstalled_desc": "When enabled, Vibepollo removes auto-synced games as soon as they are uninstalled in Playnite.", + "remove_uninstalled_desc": "When enabled, Nimbus removes auto-synced games as soon as they are uninstalled in Playnite.", "extensions_dir": "Extensions directory", "install_dir": "Installation path override", "save_success": "Settings saved.", @@ -1086,7 +1086,7 @@ "summary_activity_ignored": "Activity window is ignored.", "summary_keep_until_replaced": "Games stay until a newer game replaces them.", "summary_prune_immediately": "Games are pruned when they no longer qualify.", - "summary_all_installed": "All installed Playnite games are kept in Vibepollo.", + "summary_all_installed": "All installed Playnite games are kept in Nimbus.", "summary_plugin_include": "Includes all games from {count} selected library plugins.", "summary_remove_uninstalled_on": "Uninstalled games are removed automatically.", "summary_remove_uninstalled_off": "Uninstalled games remain until you remove them manually.", @@ -1162,7 +1162,7 @@ "logout_refresh_hint": "You may now close this tab or refresh the page to sign back in.", "logout_refresh_button": "Refresh to Sign In", "sessions_heading": "Trusted Devices", - "sessions_description": "Devices with active Vibepollo sessions. Remove entries to sign them out remotely.", + "sessions_description": "Devices with active Nimbus sessions. Remove entries to sign them out remotely.", "sessions_device": "Device", "sessions_activity": "Activity", "sessions_status": "Status", From 5bdc078403fc5bd170a55cd499fcf51a2d6db845 Mon Sep 17 00:00:00 2001 From: ywkuno <21991205+ywkuno@users.noreply.github.com> Date: Thu, 21 May 2026 17:30:18 +1000 Subject: [PATCH 08/60] feat: apply Nimbus web identity tokens --- docs/ui-identity-plan.md | 12 ++- src_assets/common/assets/web/App.vue | 24 +++--- src_assets/common/assets/web/Login.vue | 5 +- src_assets/common/assets/web/naive-theme.ts | 10 +-- .../common/assets/web/styles/tailwind.css | 30 +++++++ .../common/assets/web/tailwind.config.js | 79 ++++++++----------- 6 files changed, 93 insertions(+), 67 deletions(-) diff --git a/docs/ui-identity-plan.md b/docs/ui-identity-plan.md index 00aaec2560..88886ab62d 100644 --- a/docs/ui-identity-plan.md +++ b/docs/ui-identity-plan.md @@ -66,11 +66,21 @@ flowchart LR | Slice | Scope | Validation | | --- | --- | --- | -| UI-1 | Browser title, login shell, dashboard greeting, resource links | Vite build and VM screenshot | +| UI-1 | Browser title, login shell, dashboard greeting, resource links, app-shell token pass | Vite build and VM screenshot | | UI-2 | Dashboard status cards and update/release alert layout | Vite build and responsive screenshots | | UI-3 | Settings navigation and form density pass | Vite build, keyboard navigation, mobile width check | | UI-4 | Changelog and support surfaces | Vite build, no upstream release links | +## Implementation Notes + +- The first implementation slice should replace inherited Apollo/Sunshine visual + anchors before larger layout work: shell navigation, login/logout brand mark, + and semantic Tailwind/Naive UI color tokens. +- Keep source compatibility names separate from visible product identity. If a + backend feature still uses an inherited folder, profile, or executable name, + prefer neutral wording such as "managed profile" until that runtime migration + is complete. + ## Figma Status A private `Nimbus UI Kit v0.1` Figma file exists for maintainer exploration. diff --git a/src_assets/common/assets/web/App.vue b/src_assets/common/assets/web/App.vue index 99b80c6771..d717b984f2 100644 --- a/src_assets/common/assets/web/App.vue +++ b/src_assets/common/assets/web/App.vue @@ -4,12 +4,10 @@ -
-
+
+
- Nimbus +

{{ displayTitle && displayTitle.includes('.') ? $t(displayTitle) : displayTitle @@ -91,11 +89,9 @@ class="relative flex-1 flex flex-col items-center justify-center p-6 overflow-y-auto" >
- Nimbus +

{{ $t('auth.logout_success') }} @@ -161,10 +157,10 @@ const cfgStore = useConfigStore(); const { metadata } = storeToRefs(cfgStore); const linkClass = (path: string) => { - const base = 'inline-flex items-center gap-2 px-3 py-1 rounded-md text-brand'; + const base = 'nimbus-nav-link'; const active = route.path === path; - if (active) return base + ' font-semibold bg-primary/20 text-brand'; - return base + ' hover:bg-primary/10'; + if (active) return base + ' nimbus-nav-link-active'; + return base; }; const pageTitle = ref('Dashboard'); const displayTitle = computed(() => { @@ -257,7 +253,7 @@ function onMobileSelect(key: string | number): void { } // Layout container sizing via route meta: { container: 'sm'|'md'|'lg'|'xl'|'full' } -const base = 'mx-auto px-4 sm:px-6 lg:px-8 py-4 md:py-6'; +const base = 'nimbus-page-container'; const sizes: Record = { sm: 'max-w-2xl', md: 'max-w-3xl', diff --git a/src_assets/common/assets/web/Login.vue b/src_assets/common/assets/web/Login.vue index cbc4fca228..1d0eb92212 100644 --- a/src_assets/common/assets/web/Login.vue +++ b/src_assets/common/assets/web/Login.vue @@ -1,11 +1,11 @@ diff --git a/src_assets/common/assets/web/configs/tabs/General.vue b/src_assets/common/assets/web/configs/tabs/General.vue index 67ad0d3ff1..c33b01c928 100644 --- a/src_assets/common/assets/web/configs/tabs/General.vue +++ b/src_assets/common/assets/web/configs/tabs/General.vue @@ -93,7 +93,7 @@ function removeServerCommand(index: number) { v-model="config.sunshine_name" setting-key="sunshine_name" class="mb-6" - placeholder="Vibeshine" + placeholder="Nimbus" /> diff --git a/src_assets/common/assets/web/configs/tabs/Network.vue b/src_assets/common/assets/web/configs/tabs/Network.vue index 86ebfe49af..5cd42db46b 100644 --- a/src_assets/common/assets/web/configs/tabs/Network.vue +++ b/src_assets/common/assets/web/configs/tabs/Network.vue @@ -5,8 +5,8 @@ import { useConfigStore } from '@/stores/config'; const store = useConfigStore(); const config = store.config; -const defaultMoonlightPort = 47989; -const effectivePort = computed(() => Number(config.port ?? defaultMoonlightPort)); +const defaultStreamPort = 47989; +const effectivePort = computed(() => Number(config.port ?? defaultStreamPort));