Update aliasvault.net to aliasvault.com in all apps as default URL (#2199)

This commit is contained in:
Leendert de Borst
2026-06-21 13:45:24 +02:00
committed by GitHub
parent 6b0bc30bec
commit ba1af08051
39 changed files with 156 additions and 53 deletions

View File

@@ -35,7 +35,7 @@ FORCE_HTTPS_REDIRECT=true
# In order to use AliasVault's private email domains feature, you need to configure
# your DNS. Please refer to the full documentation for more instructions on DNS:
# https://docs.aliasvault.net/installation/install.html#3-email-server-setup
# https://docs.aliasvault.com/installation/script/#3-email-server-setup
#
# Set the private email domains below that the server should accept incoming mail for (comma separated values).
# Example: PRIVATE_EMAIL_DOMAINS=example.com,example2.org

View File

@@ -4,5 +4,5 @@ contact_links:
url: https://discord.gg/DsaXMTEtpF
about: Ask questions and discuss ideas with the community on Discord
- name: 📖 Documentation
url: https://docs.aliasvault.net
url: https://docs.aliasvault.com
about: Check out the official (self-host) documentation

View File

@@ -375,31 +375,31 @@ jobs:
- image: client
dockerfile: apps/server/AliasVault.Client/Dockerfile
title: AliasVault Client
description: Blazor WebAssembly client UI for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)
description: Blazor WebAssembly client UI for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)
- image: postgres
dockerfile: apps/server/Databases/AliasServerDb/Dockerfile
title: AliasVault PostgreSQL
description: PostgreSQL database for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)
description: PostgreSQL database for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)
- image: api
dockerfile: apps/server/AliasVault.Api/Dockerfile
title: AliasVault API
description: REST API backend for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)
description: REST API backend for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)
- image: admin
dockerfile: apps/server/AliasVault.Admin/Dockerfile
title: AliasVault Admin
description: Admin portal for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)
description: Admin portal for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)
- image: reverse-proxy
dockerfile: apps/server/Dockerfile
title: AliasVault Reverse Proxy
description: Nginx reverse proxy for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)
description: Nginx reverse proxy for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)
- image: smtp
dockerfile: apps/server/Services/AliasVault.SmtpService/Dockerfile
title: AliasVault SMTP Service
description: SMTP service for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)
description: SMTP service for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)
- image: task-runner
dockerfile: apps/server/Services/AliasVault.TaskRunner/Dockerfile
title: AliasVault TaskRunner
description: Background task runner for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)
description: Background task runner for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)
- image: installcli
dockerfile: apps/server/Utilities/AliasVault.InstallCli/Dockerfile
title: AliasVault Install CLI
@@ -499,9 +499,9 @@ jobs:
type=raw,value={{branch}}-{{sha}},enable=${{ needs.detect-version.outputs.version == '' }}
labels: |
org.opencontainers.image.title=AliasVault All-in-One
org.opencontainers.image.description=Self-contained AliasVault server including web app, with all services bundled using s6-overlay. Single container solution for easy deployment (see docs.aliasvault.net).
org.opencontainers.image.description=Self-contained AliasVault server including web app, with all services bundled using s6-overlay. Single container solution for easy deployment (see docs.aliasvault.com).
annotations: |
org.opencontainers.image.description=Self-contained AliasVault server including web app, with all services bundled using s6-overlay. Single container solution for easy deployment (see docs.aliasvault.net).
org.opencontainers.image.description=Self-contained AliasVault server including web app, with all services bundled using s6-overlay. Single container solution for easy deployment (see docs.aliasvault.com).
- name: Build and push all-in-one image
uses: docker/build-push-action@v7

View File

@@ -27,7 +27,7 @@ The following encryption algorithms and standards are used by AliasVault:
Below is a detailed explanation of each encryption algorithm and standard.
For more information about how these algorithms are specifically used in AliasVault, see the [Architecture Documentation](https://docs.aliasvault.net/architecture) section on the documentation site.
For more information about how these algorithms are specifically used in AliasVault, see the [Architecture Documentation](https://docs.aliasvault.com/architecture) section on the documentation site.
### Argon2id
To derive a key from the master password, AliasVault uses the Argon2id key derivation function. Argon2id is a memory-hard
@@ -164,4 +164,4 @@ The mobile login system combines RSA-2048 asymmetric encryption with AES-256-GCM
- **MITM Protection**: Only the client with the RSA private key can decrypt the response
- **Limited Attack Surface**: Short timeout window minimizes QR code interception risks
More information about the mobile login flow can be found in the [Architecture Documentation](https://docs.aliasvault.net/architecture/#6-login-with-mobile).
More information about the mobile login flow can be found in the [Architecture Documentation](https://docs.aliasvault.com/architecture/#6-login-with-mobile).

View File

@@ -44,7 +44,7 @@ In AliasVault, when creating a new credential AliasVault automatically generates
- Create a list of common last names (surnames)
- Optionally: Decade-specific names for more authentic generations
Read the specific instructions on how to contribute here: [Identity Generator Translations](https://docs.aliasvault.net/contributing/identity-generator.html).
Read the specific instructions on how to contribute here: [Identity Generator Translations](https://docs.aliasvault.com/contributing/identity-generator.html).
## 3. Contributing to the Documentation
@@ -77,7 +77,7 @@ That said, we genuinely appreciate your ideas and proposals for UI/UX improvemen
### 4.2 Set up your local development environment
You can find instructions on how to get your local development environment setup for the different parts of the AliasVault codebase here:
https://docs.aliasvault.net/misc/dev/
https://docs.aliasvault.com/misc/dev/
> Tip: if the URL above is not available, the raw doc pages can also be found in the `docs` folder in this repository.

View File

@@ -8,7 +8,7 @@ AliasVault is a privacy-first password and email alias manager. Create unique id
[<img alt="Discord" src="https://img.shields.io/discord/1309300619026235422?logo=discord&logoColor=%237289da&label=Discord&color=%237289da">](https://discord.gg/DsaXMTEtpF)
[<img src="https://opencollective.com/aliasvault/tiers/badge.svg">](https://opencollective.com/aliasvault)
<a href="https://app.aliasvault.net">Try the cloud version 🔥</a> | <a href="https://www.aliasvault.com?utm_source=gh-readme">Website </a> | <a href="https://docs.aliasvault.com?utm_source=gh-readme">Documentation </a> | <a href="#self-hosting">Self-host instructions</a>
<a href="https://app.aliasvault.com">Try the cloud version 🔥</a> | <a href="https://www.aliasvault.com?utm_source=gh-readme">Website </a> | <a href="https://docs.aliasvault.com?utm_source=gh-readme">Documentation </a> | <a href="#self-hosting">Self-host instructions</a>
**⭐ Star us on GitHub, it motivates us a lot!**
@@ -49,10 +49,10 @@ Built on 15 years of experience, AliasVault is independent, open-source, self-ho
</table>
## Cloud-hosted
Use the official cloud version of AliasVault at [app.aliasvault.net](https://app.aliasvault.net). This fully supported platform is always up to date with our latest release.
Use the official cloud version of AliasVault at [app.aliasvault.com](https://app.aliasvault.com). This fully supported platform is always up to date with our latest release.
AliasVault is available on:
- [Web (universal)](https://app.aliasvault.net)
- [Web (universal)](https://app.aliasvault.com)
- [Chrome](https://chromewebstore.google.com/detail/aliasvault/bmoggiinmnodjphdjnmpcnlleamkfedj)
- [Firefox](https://addons.mozilla.org/en-US/firefox/addon/aliasvault/)
- [Edge](https://microsoftedge.microsoft.com/addons/detail/aliasvault/kabaanafahnjkfkplbnllebdmppdemfo)
@@ -65,7 +65,7 @@ AliasVault is available on:
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/{%22id%22:%22net.aliasvault.app%22,%22url%22:%22https://github.com/aliasvault/aliasvault%22,%22author%22:%22AliasVault%22,%22name%22:%22AliasVault%22,%22additionalSettings%22:%22{\%22about\%22:\%22Privacy-first%20Password%20Manager%20with%20Built-in%20Email%20Aliasing.\%22}%22}" style="display: inline-block;"><img src="https://github.com/user-attachments/assets/0e8c7cc6-533b-4fc4-bbc0-ce974d72de4b" style="height: 40px;" alt="Get it on F-Droid"></a>
</p>
[<img width="700" alt="Screenshot of AliasVault" src="docs/assets/img/screenshot.png">](https://app.aliasvault.net)
[<img width="700" alt="Screenshot of AliasVault" src="docs/assets/img/screenshot.png">](https://app.aliasvault.com)
## Self-hosting
> [!NOTE]
@@ -96,7 +96,7 @@ For more information about the installation process, manual setup instructions a
- [Documentation website (docs.aliasvault.com) 📚](https://docs.aliasvault.com)
## Security Architecture
<a href="https://docs.aliasvault.com/architecture"><img alt="AliasVault Security Architecture Diagram" src="docs/static/assets/diagrams/security-architecture/aliasvault-security-architecture-thumb.jpg" width="343"></a>
<a href="https://docs.aliasvault.com/architecture"><img alt="AliasVault Security Architecture Diagram" src="docs/assets/diagrams/security-architecture/aliasvault-security-architecture-thumb.jpg" width="343"></a>
AliasVault takes security seriously and implements various measures to protect your data:

View File

@@ -17,6 +17,8 @@ import type { MatchingPasskeysResponse, WebAuthnAssertionResponse, WebAuthnPubli
import { isRpIdAllowedForHost, validateWebAuthnRequest } from '@/utils/passkey/WebAuthnRequestValidation';
import type { WebAuthnBridgeRequest } from '@/utils/passkey/WebAuthnRequestValidation';
import { runStartupMigrations } from '@/migrations';
import { defineBackground, browser } from '#imports';
type WebAuthnMessageSender = {
@@ -329,6 +331,15 @@ export default defineBackground({
* already synchronous and complete before this runs.
*/
(async () : Promise<void> => {
try {
/*
* Run one-time startup migrations.
*/
await runStartupMigrations();
} catch (error) {
console.error('Error running startup migrations:', error);
}
try {
const isContextMenuEnabled = await LocalPreferencesService.getGlobalContextMenuEnabled();
if (isContextMenuEnabled) {

View File

@@ -16,7 +16,7 @@ type ApiOption = {
};
const DEFAULT_OPTIONS: ApiOption[] = [
{ label: 'Aliasvault.net', value: AppInfo.DEFAULT_API_URL },
{ label: 'AliasVault.com', value: AppInfo.DEFAULT_API_URL },
{ label: 'Self-hosted', value: 'custom' }
];
@@ -165,7 +165,7 @@ const AuthSettings: React.FC = () => {
} catch (error: unknown) {
if (error instanceof Yup.ValidationError) {
setErrors(prev => ({ ...prev, apiUrl: error.message }));
// On error we revert back to the aliasvault.net official hosted instance.
// On error we revert back to the aliasvault.com official hosted instance.
await storage.setItem('local:apiUrl', AppInfo.DEFAULT_API_URL);
await storage.setItem('local:clientUrl', AppInfo.DEFAULT_CLIENT_URL);
pendingApiUrlRef.current = null;

View File

@@ -34,7 +34,7 @@ export const useApiUrl = (): {
*/
const getDisplayUrl = (): string => {
const cleanUrl = apiUrl.replace('https://', '').replace('http://', '').replace(':443', '').replace('/api', '');
return cleanUrl === 'app.aliasvault.net' ? 'aliasvault.net' : cleanUrl;
return cleanUrl === 'app.aliasvault.com' ? 'aliasvault.com' : cleanUrl;
};
return {

View File

@@ -0,0 +1,34 @@
import { AppInfo } from '@/utils/AppInfo';
import { storage } from '#imports';
/**
* Legacy official hosted URLs from before the aliasvault.net -> aliasvault.com domain move.
* Existing installs may still have these persisted from when they were the defaults.
*/
const LEGACY_API_URL = 'https://app.aliasvault.net/api';
const LEGACY_CLIENT_URL = 'https://app.aliasvault.net';
/**
* One-time, idempotent migration that rewrites a persisted legacy aliasvault.net official URL to
* the current aliasvault.com default. Only the exact old official defaults are migrated; custom
* self-hosted URLs are left untouched. Safe to run on every startup (no-op once migrated or when
* the official instance is used, which is stored as an empty string).
*
* Added in the 0.29.7 release. Can be removed once installs from before 0.29.7 are no longer in use.
*/
export async function migrateLegacyApiUrl(): Promise<void> {
try {
const apiUrl = await storage.getItem('local:apiUrl') as string | null;
if (apiUrl === LEGACY_API_URL) {
await storage.setItem('local:apiUrl', AppInfo.DEFAULT_API_URL);
}
const clientUrl = await storage.getItem('local:clientUrl') as string | null;
if (clientUrl === LEGACY_CLIENT_URL) {
await storage.setItem('local:clientUrl', AppInfo.DEFAULT_CLIENT_URL);
}
} catch (error) {
console.error('Failed to migrate legacy API URL:', error);
}
}

View File

@@ -0,0 +1,14 @@
import { migrateLegacyApiUrl } from '@/migrations/0.29.7-LegacyApiUrlMigration';
/**
* Generic entry point for one-time startup migrations. Called once during background startup;
* add any future migration as another awaited call below. Each migration must be idempotent and
* swallow its own errors so a single failure cannot block startup.
*
* Keeping every migration behind this single function means callers never touch app internals,
* and retiring a migration later is just deleting its file and removing its line here.
*/
export async function runStartupMigrations(): Promise<void> {
// 0.29.7: Migrate legacy aliasvault.net URLs to aliasvault.com defaults.
await migrateLegacyApiUrl();
}

View File

@@ -52,12 +52,12 @@ export class AppInfo {
/**
* The default AliasVault client URL.
*/
public static readonly DEFAULT_CLIENT_URL = 'https://app.aliasvault.net';
public static readonly DEFAULT_CLIENT_URL = 'https://app.aliasvault.com';
/**
* The default AliasVault web API URL.
*/
public static readonly DEFAULT_API_URL = 'https://app.aliasvault.net/api';
public static readonly DEFAULT_API_URL = 'https://app.aliasvault.com/api';
/**
* Prevent instantiation of this utility class

View File

@@ -47,6 +47,7 @@ async function createEmail(
return {
messageHtml: '',
messagePlain: '',
messageSource: '',
id: 1,
subject: '',
fromDisplay: '',
@@ -78,7 +79,7 @@ async function encryptAttachmentBytes(plaintext: Uint8Array, rawSymmetricKey: st
['encrypt']
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, key, plaintext);
const ciphertext = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, key, new Uint8Array(plaintext));
const encryptedBytes = new Uint8Array(iv.length + ciphertext.byteLength);
encryptedBytes.set(iv, 0);
encryptedBytes.set(new Uint8Array(ciphertext), iv.length);

View File

@@ -37,7 +37,7 @@ class WebApiService(private val context: Context) {
private const val REFRESH_TOKEN_KEY = "refreshToken"
private const val APP_INSTANCE_ID_KEY = "appInstanceId"
private const val CUSTOM_PROXY_HEADERS_KEY = "customProxyHeaders"
private const val DEFAULT_API_URL = "https://app.aliasvault.net/api"
private const val DEFAULT_API_URL = "https://app.aliasvault.com/api"
private const val SHARED_PREFS_NAME = "aliasvault"
}

View File

@@ -68,7 +68,7 @@ export default function AndroidAutofillScreen() : React.ReactNode {
* Handle opening the documentation link.
*/
const handleOpenDocs = () : void => {
Linking.openURL('https://docs.aliasvault.net/mobile-apps/android/autofill.html');
Linking.openURL('https://docs.aliasvault.com/installation/mobile-apps/android/autofill/');
};
/**

View File

@@ -22,6 +22,7 @@ import { DialogProvider } from '@/context/DialogContext';
import { NavigationProvider, useNavigation } from '@/context/NavigationContext';
import { WebApiProvider } from '@/context/WebApiContext';
import { initI18n } from '@/i18n';
import { runStartupMigrations } from '@/migrations';
SplashScreen.preventAutoHideAsync();
@@ -52,11 +53,12 @@ function RootLayoutNav() : React.ReactNode {
/**
* Initialize i18n and inspect the cold-start deep link in parallel.
* One-time startup migrations run here too.
* If a deep link is detected, set the return URL so after succesful
* initialization, the app will navigate to the deep link target.
*/
(async (): Promise<void> => {
const [, initialUrl] = await Promise.all([initI18n(), Linking.getInitialURL()]);
const [, initialUrl] = await Promise.all([initI18n(), Linking.getInitialURL(), runStartupMigrations()]);
const resolved = await resolveDeepLink(initialUrl);
if (resolved) {

View File

@@ -49,7 +49,7 @@ export default function SettingsScreen() : React.ReactNode {
const [isLoading, setIsLoading] = useState(true);
const DEFAULT_OPTIONS: ApiOption[] = useMemo(() => [
{ label: t('app.loginSettings.aliasvaultNet'), value: AppInfo.DEFAULT_API_URL },
{ label: 'AliasVault.com', value: AppInfo.DEFAULT_API_URL },
{ label: t('app.loginSettings.selfHosted'), value: 'custom' },
], [t]);

View File

@@ -814,7 +814,7 @@ export default function LoginScreen() : React.ReactNode {
<View style={styles.createNewVaultContainer}>
<Text style={styles.textMuted}>{t('auth.noAccountYet')} </Text>
<InAppBrowserView
url="https://app.aliasvault.net/user/setup"
url="https://app.aliasvault.com/user/setup"
title={t('auth.createNewVault')}
textStyle={styles.clickableLink}
/>

View File

@@ -655,7 +655,6 @@
},
"loginSettings": {
"title": "API Connection",
"aliasvaultNet": "Aliasvault.net",
"selfHosted": "Self-hosted",
"customApiUrl": "Custom API URL",
"customApiUrlPlaceholder": "https://my-aliasvault-instance.com/api",

View File

@@ -861,7 +861,7 @@ final class AliasVaultUITests: XCTestCase {
@MainActor
private func performLogin(with testUser: TestUser) {
// Check if API URL is already configured to localhost by looking at the displayed URL
// The login screen shows the URL via server-url-link, containing text like "localhost:5100" or "aliasvault.net"
// The login screen shows the URL via server-url-link, containing text like "localhost:5100" or "aliasvault.com"
let serverUrlLink = app.findElement(testID: "server-url-link")
var needsApiConfig = true

View File

@@ -15,7 +15,7 @@ public class WebApiService {
private let customProxyHeadersKey = "customProxyHeaders"
// Default API URL
private let defaultApiUrl = "https://app.aliasvault.net/api"
private let defaultApiUrl = "https://app.aliasvault.com/api"
/// Shared UserDefaults for communication between main app and extension
private let userDefaults = UserDefaults(suiteName: VaultConstants.userDefaultsSuite)!

View File

@@ -0,0 +1,28 @@
import { AppInfo } from '@/utils/AppInfo';
import NativeVaultManager from '@/specs/NativeVaultManager';
/**
* Legacy official hosted API URL from before the aliasvault.net -> aliasvault.com domain move.
* Existing installs that were set up while this was the default still have it persisted natively.
*/
const LEGACY_API_URL = 'https://app.aliasvault.net/api';
/**
* One-time, idempotent migration that rewrites a persisted legacy aliasvault.net official API URL
* to the current aliasvault.com default. Only the exact old official default is migrated; custom
* self-hosted URLs are left untouched. Safe to run on every cold start (no-op once migrated or when
* no URL is stored).
*
* Added in the 0.29.7 release. Can be removed once installs from before 0.29.7 are no longer in use.
*/
export async function migrateLegacyApiUrl(): Promise<void> {
try {
const apiUrl = await NativeVaultManager.getApiUrl();
if (apiUrl === LEGACY_API_URL) {
await NativeVaultManager.setApiUrl(AppInfo.DEFAULT_API_URL);
}
} catch (error) {
console.warn('Failed to migrate legacy API URL:', error);
}
}

View File

@@ -0,0 +1,14 @@
import { migrateLegacyApiUrl } from '@/migrations/0.29.7-LegacyApiUrlMigration';
/**
* Generic entry point for one-time startup migrations. Called once during cold-start boot;
* add any future migration as another awaited call below. Each migration must be idempotent and
* swallow its own errors so a single failure cannot block startup.
*
* Keeping every migration behind this single function means callers never touch app internals,
* and retiring a migration later is just deleting its file and removing its line here.
*/
export async function runStartupMigrations(): Promise<void> {
// 0.29.7: Migrate legacy aliasvault.net URLs to aliasvault.com defaults.
await migrateLegacyApiUrl();
}

View File

@@ -37,7 +37,7 @@ export const useApiUrl = (): {
*/
const getDisplayUrl = (): string => {
const cleanUrl = apiUrl.replace('https://', '').replace('http://', '').replace(':443', '').replace('/api', '');
return cleanUrl === 'app.aliasvault.net' ? 'aliasvault.net' : cleanUrl;
return cleanUrl === 'app.aliasvault.com' ? 'aliasvault.com' : cleanUrl;
};
return {

View File

@@ -39,12 +39,12 @@ export class AppInfo {
/**
* The default AliasVault client URL.
*/
public static readonly DEFAULT_CLIENT_URL = 'https://app.aliasvault.net';
public static readonly DEFAULT_CLIENT_URL = 'https://app.aliasvault.com';
/**
* The default AliasVault web API URL.
*/
public static readonly DEFAULT_API_URL = 'https://app.aliasvault.net/api';
public static readonly DEFAULT_API_URL = 'https://app.aliasvault.com/api';
/**
* Prevent instantiation of this utility class

View File

@@ -25,7 +25,7 @@ LABEL org.opencontainers.image.source="https://github.com/aliasvault/aliasvault"
LABEL org.opencontainers.image.vendor="AliasVault"
LABEL org.opencontainers.image.licenses="AGPL-3.0"
LABEL org.opencontainers.image.title="AliasVault Admin"
LABEL org.opencontainers.image.description="Admin portal for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)"
LABEL org.opencontainers.image.description="Admin portal for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)"
# Install Kerberos libraries to prevent .NET 10 GSSAPI warnings
RUN apk add --no-cache krb5-libs

View File

@@ -22,7 +22,7 @@ LABEL org.opencontainers.image.source="https://github.com/aliasvault/aliasvault"
LABEL org.opencontainers.image.vendor="AliasVault"
LABEL org.opencontainers.image.licenses="AGPL-3.0"
LABEL org.opencontainers.image.title="AliasVault API"
LABEL org.opencontainers.image.description="REST API backend for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)"
LABEL org.opencontainers.image.description="REST API backend for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)"
# Install Kerberos libraries to prevent .NET 10 GSSAPI warnings
RUN apk add --no-cache krb5-libs

View File

@@ -100,7 +100,7 @@ LABEL org.opencontainers.image.source="https://github.com/aliasvault/aliasvault"
LABEL org.opencontainers.image.vendor="AliasVault"
LABEL org.opencontainers.image.licenses="AGPL-3.0"
LABEL org.opencontainers.image.title="AliasVault Client"
LABEL org.opencontainers.image.description="Blazor WebAssembly client UI for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)"
LABEL org.opencontainers.image.description="Blazor WebAssembly client UI for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)"
WORKDIR /usr/share/nginx/html
COPY --from=publish /app/publish/wwwroot .

View File

@@ -59,7 +59,7 @@
</optgroup>
</select>
<span class="block text-sm font-normal text-gray-500 dark:text-gray-400 mt-2">
@Localizer["DefaultEmailDomainDescription"] @Localizer["DefaultEmailDomainDescriptionNote"] <a href="https://docs.aliasvault.net/misc/private-vs-public-email.html" class="text-primary-500 hover:text-primary-700 hover:underline" target="_blank" rel="noopener">@Localizer["DefaultEmailDomainLearnMore"]</a>.
@Localizer["DefaultEmailDomainDescription"] @Localizer["DefaultEmailDomainDescriptionNote"] <a href="https://docs.aliasvault.com/misc/private-vs-public-email.html" class="text-primary-500 hover:text-primary-700 hover:underline" target="_blank" rel="noopener">@Localizer["DefaultEmailDomainLearnMore"]</a>.
</span>
</div>

View File

@@ -5,7 +5,7 @@ LABEL org.opencontainers.image.source="https://github.com/aliasvault/aliasvault"
LABEL org.opencontainers.image.vendor="AliasVault"
LABEL org.opencontainers.image.licenses="AGPL-3.0"
LABEL org.opencontainers.image.title="AliasVault PostgreSQL"
LABEL org.opencontainers.image.description="PostgreSQL database for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)"
LABEL org.opencontainers.image.description="PostgreSQL database for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)"
# Install pigz for parallel compression during database exports
RUN apk add --no-cache pigz

View File

@@ -5,7 +5,7 @@ LABEL org.opencontainers.image.source="https://github.com/aliasvault/aliasvault"
LABEL org.opencontainers.image.vendor="AliasVault"
LABEL org.opencontainers.image.licenses="AGPL-3.0"
LABEL org.opencontainers.image.title="AliasVault Reverse Proxy"
LABEL org.opencontainers.image.description="Nginx reverse proxy for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)"
LABEL org.opencontainers.image.description="Nginx reverse proxy for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)"
# Install OpenSSL and inotify-tools for certificate watching
RUN apk add --no-cache openssl inotify-tools

View File

@@ -23,7 +23,7 @@ LABEL org.opencontainers.image.source="https://github.com/aliasvault/aliasvault"
LABEL org.opencontainers.image.vendor="AliasVault"
LABEL org.opencontainers.image.licenses="AGPL-3.0"
LABEL org.opencontainers.image.title="AliasVault SMTP Service"
LABEL org.opencontainers.image.description="SMTP service for email alias functionality in AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)"
LABEL org.opencontainers.image.description="SMTP service for email alias functionality in AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)"
# Install Kerberos libraries to prevent .NET 10 GSSAPI warnings
RUN apk add --no-cache krb5-libs

View File

@@ -21,7 +21,7 @@ LABEL org.opencontainers.image.source="https://github.com/aliasvault/aliasvault"
LABEL org.opencontainers.image.vendor="AliasVault"
LABEL org.opencontainers.image.licenses="AGPL-3.0"
LABEL org.opencontainers.image.title="AliasVault TaskRunner"
LABEL org.opencontainers.image.description="Background task runner for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.net)"
LABEL org.opencontainers.image.description="Background task runner for AliasVault. Part of multi-container setup and can be deployed via install.sh (see docs.aliasvault.com)"
# Install Kerberos libraries to prevent .NET 10 GSSAPI warnings
RUN apk add --no-cache krb5-libs

View File

@@ -3,6 +3,6 @@ Business,,login,Item for business folder,,,0,,crisply,4CSp43uhSZri8A,
,,login,Test,,,0,,,,
,,login,Test,,,0,,test2,asdasd,
Business,,login,TutaNota,,,0,,avtest2@tutamail.com,blabla,otpauth://totp/Strongbox?secret=PLW4SB3PQ7MKVXY2MXF4NEXS6Y&algorithm=SHA1&digits=6&period=30
Business,,login,Aliasvault.net,,,0,https://www.aliasvault.com,root,toor,
Business,,login,Aliasvault.com,,,0,https://www.aliasvault.com,root,toor,
Work/Projects,,login,WorkItem,,,0,https://work.example.com,workuser,workpass,
Work/Projects/Active,,login,ActiveItem,,,0,https://active.example.com,activeuser,activepass,
1 folder favorite type name notes fields reprompt login_uri login_username login_password login_totp
3 login Test 0
4 login Test 0 test2 asdasd
5 Business login TutaNota 0 avtest2@tutamail.com blabla otpauth://totp/Strongbox?secret=PLW4SB3PQ7MKVXY2MXF4NEXS6Y&algorithm=SHA1&digits=6&period=30
6 Business login Aliasvault.net Aliasvault.com 0 https://www.aliasvault.com root toor
7 Work/Projects login WorkItem 0 https://work.example.com workuser workpass
8 Work/Projects/Active login ActiveItem 0 https://active.example.com activeuser activepass

View File

@@ -65,7 +65,7 @@ public class ImportTests : ClientPlaywrightTest
{
Assert.That(pageContent, Does.Contain("Test"), "Test item not imported at root level");
Assert.That(pageContent, Does.Not.Contain("TutaNota"), "TutaNota should be in Business folder, not at root");
Assert.That(pageContent, Does.Not.Contain("Aliasvault.net"), "Aliasvault.net should be in Business folder, not at root");
Assert.That(pageContent, Does.Not.Contain("Aliasvault.com"), "Aliasvault.com should be in Business folder, not at root");
});
// Verify the Business folder was created.
@@ -84,7 +84,7 @@ public class ImportTests : ClientPlaywrightTest
{
Assert.That(folderPageContent, Does.Contain("Item for business folder"), "Item for business folder not imported");
Assert.That(folderPageContent, Does.Contain("TutaNota"), "TutaNota item not imported in Business folder");
Assert.That(folderPageContent, Does.Contain("Aliasvault.net"), "Aliasvault.net item not imported in Business folder");
Assert.That(folderPageContent, Does.Contain("Aliasvault.com"), "Aliasvault.com item not imported in Business folder");
});
// Navigate back to root and test hierarchical folders.

View File

@@ -3,7 +3,7 @@ Business,,login,Item for business folder,,,0,,crisply,4CSp43uhSZri8A,
,,login,Test,,,0,,,,
,,login,Test,,,0,,test2,asdasd,
Business,,login,TutaNota,,,0,,avtest2@tutamail.com,blabla,otpauth://totp/Strongbox?secret=PLW4SB3PQ7MKVXY2MXF4NEXS6Y&algorithm=SHA1&digits=6&period=30
Business,,login,Aliasvault.net,,,0,https://www.aliasvault.com,root,toor,
Business,,login,Aliasvault.com,,,0,https://www.aliasvault.com,root,toor,
Business,,login,TutaNota3,,,0,"https://www.aliasvault.com,https://app.aliasvault.com,https://downloads.aliasvault.com",avtest3@tutamail.com,blabla,otpauth://totp/Test%20name%3Atest%40test.org?secret=PLW4SB3PQ7MKVXY2MXF4NEXS6Y&issuer=Alias%20Vault
Business,,login,TutaNota4,,,0,,avtest4@tutamail.com,blabla,otpauth://totp/my.email@gmail.com?secret=TEST!INVALID&issuer=Alias%20Vault&algorithm=SHA1&digits=6&period=30
Business,,login,TutaNota5,,,0,,avtest5@tutamail.com,blabla,incorrectstring
1 folder favorite type name notes fields reprompt login_uri login_username login_password login_totp
3 login Test 0
4 login Test 0 test2 asdasd
5 Business login TutaNota 0 avtest2@tutamail.com blabla otpauth://totp/Strongbox?secret=PLW4SB3PQ7MKVXY2MXF4NEXS6Y&algorithm=SHA1&digits=6&period=30
6 Business login Aliasvault.net Aliasvault.com 0 https://www.aliasvault.com root toor
7 Business login TutaNota3 0 https://www.aliasvault.com,https://app.aliasvault.com,https://downloads.aliasvault.com avtest3@tutamail.com blabla otpauth://totp/Test%20name%3Atest%40test.org?secret=PLW4SB3PQ7MKVXY2MXF4NEXS6Y&issuer=Alias%20Vault
8 Business login TutaNota4 0 avtest4@tutamail.com blabla otpauth://totp/my.email@gmail.com?secret=TEST!INVALID&issuer=Alias%20Vault&algorithm=SHA1&digits=6&period=30
9 Business login TutaNota5 0 avtest5@tutamail.com blabla incorrectstring

View File

@@ -218,10 +218,10 @@ public class ImportExportTests
Assert.That(tutaNotaCredential.TwoFactorSecret, Is.EqualTo("otpauth://totp/Strongbox?secret=PLW4SB3PQ7MKVXY2MXF4NEXS6Y&algorithm=SHA1&digits=6&period=30"));
});
var aliasVaultCredential = importedCredentials.First(c => c.ServiceName == "Aliasvault.net");
var aliasVaultCredential = importedCredentials.First(c => c.ServiceName == "Aliasvault.com");
Assert.Multiple(() =>
{
Assert.That(aliasVaultCredential.ServiceName, Is.EqualTo("Aliasvault.net"));
Assert.That(aliasVaultCredential.ServiceName, Is.EqualTo("Aliasvault.com"));
Assert.That(aliasVaultCredential.ServiceUrls?.FirstOrDefault(), Is.EqualTo("https://www.aliasvault.com"));
Assert.That(aliasVaultCredential.Username, Is.EqualTo("root"));
Assert.That(aliasVaultCredential.Password, Is.EqualTo("toor"));

View File

@@ -126,7 +126,7 @@ LABEL org.opencontainers.image.source="https://github.com/aliasvault/aliasvault"
LABEL org.opencontainers.image.vendor="AliasVault"
LABEL org.opencontainers.image.licenses="AGPL-3.0"
LABEL org.opencontainers.image.title="AliasVault All-in-One"
LABEL org.opencontainers.image.description="Self-contained AliasVault server including web app, with all services bundled using s6-overlay. Single container solution for easy deployment (see docs.aliasvault.net)."
LABEL org.opencontainers.image.description="Self-contained AliasVault server including web app, with all services bundled using s6-overlay. Single container solution for easy deployment (see docs.aliasvault.com)."
# Copy s6-overlay from downloader stage
COPY --from=s6-downloader /*.tar.xz /tmp/

View File

@@ -59,7 +59,7 @@ Other contributors may review and approve your translations. This helps ensure q
## What Gets Translated?
The Crowdin project covers translations for all client apps in one place:
- Web app (https://app.aliasvault.net)
- Web app (https://app.aliasvault.com)
- Browser extension
- Mobile App (iOS and Android)