Compare commits

...

6 Commits

Author SHA1 Message Date
Leendert de Borst
5baede08a7 Bump version to 0.12.2 (#616) 2025-02-25 13:41:55 +01:00
Leendert de Borst
34995fe801 Fix cueck if client or api url are empty (#612) 2025-02-25 12:48:53 +01:00
Leendert de Borst
92a2511d9d Fix bug in browser extension emails list if credential has no email address (#612) 2025-02-25 12:48:53 +01:00
Leendert de Borst
41486c940c Update max nginx upload filesize to 25MB (#613) 2025-02-25 12:48:37 +01:00
Leendert de Borst
47c77ade02 Update install.sh to set default ip_logging value (#610) 2025-02-25 12:48:13 +01:00
Leendert de Borst
a51621970d Update browser-extension-tests.yml 2025-02-24 21:46:42 +01:00
12 changed files with 32 additions and 20 deletions

View File

@@ -67,5 +67,4 @@ jobs:
uses: softprops/action-gh-release@v2
with:
files: aliasvault-chrome-extension.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -58,7 +58,7 @@ This method uses pre-built Docker images and works on minimal hardware specifica
```bash
# Download install script from latest stable release
curl -o install.sh https://raw.githubusercontent.com/lanedirt/AliasVault/0.12.1/install.sh
curl -o install.sh https://raw.githubusercontent.com/lanedirt/AliasVault/0.12.2/install.sh
# Make install script executable and run it. This will create the .env file, pull the Docker images, and start the AliasVault containers.
chmod +x install.sh

View File

@@ -1,7 +1,7 @@
{
"name": "AliasVault",
"description": "AliasVault Browser AutoFill Extension. Keeping your personal information private.",
"version": "0.12.1",
"version": "0.12.2",
"manifest_version": 3,
"content_security_policy": {
"extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"

View File

@@ -30,7 +30,7 @@ const Header: React.FC<HeaderProps> = ({
const openClientTab = async () : Promise<void> => {
const setting = await chrome.storage.local.get(['clientUrl']);
let clientUrl = AppInfo.DEFAULT_CLIENT_URL;
if (setting.clientUrl.length > 0) {
if (setting.clientUrl && setting.clientUrl.length > 0) {
clientUrl = setting.clientUrl;
}

View File

@@ -34,13 +34,8 @@ const EmailsList: React.FC = () => {
return;
}
// TODO: create separate query to only get email addresses to avoid loading all credentials.
const credentials = dbContext.sqliteClient.getAllCredentials();
// Get unique email addresses from all credentials.
const emailAddresses = credentials
.map(cred => cred.Email.trim()) // Trim whitespace
.filter((email, index, self) => self.indexOf(email) === index);
const emailAddresses = dbContext.sqliteClient.getAllEmailAddresses();
try {
// For now we only show the latest 50 emails. No pagination.

View File

@@ -41,7 +41,7 @@ const Login: React.FC = () => {
const loadClientUrl = async () : Promise<void> => {
const setting = await chrome.storage.local.get(['clientUrl']);
let clientUrl = AppInfo.DEFAULT_CLIENT_URL;
if (setting.clientUrl.length > 0) {
if (setting.clientUrl && setting.clientUrl.length > 0) {
clientUrl = setting.clientUrl;
}

View File

@@ -6,7 +6,7 @@ export class AppInfo {
/**
* The current extension version. This should be updated with each release of the extension.
*/
public static readonly VERSION = '0.12.1';
public static readonly VERSION = '0.12.2';
/**
* The minimum supported AliasVault server (API) version. If the server version is below this, the

View File

@@ -229,6 +229,25 @@ class SqliteClient {
}));
}
/**
* Fetch all unique email addresses from all credentials.
* @returns Array of email addresses.
*/
public getAllEmailAddresses(): string[] {
const query = `
SELECT DISTINCT
a.Email
FROM Credentials c
LEFT JOIN Aliases a ON c.AliasId = a.Id
WHERE a.Email IS NOT NULL AND a.Email != '' AND c.IsDeleted = 0
`;
const results = this.executeQuery(query);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return results.map((row: any) => row.Email);
}
/**
* Fetch all encryption keys.
*/

View File

@@ -21,11 +21,7 @@ export class WebApiService {
*
* @param {Function} handleLogout - Function to handle logout.
*/
public constructor(
private readonly handleLogout: () => void
) {
// Remove initialization of baseUrl
}
public constructor(private readonly handleLogout: () => void) { }
/**
* Get the base URL for the API from settings.

View File

@@ -1,5 +1,5 @@
#!/bin/bash
# @version 0.12.0
# @version 0.12.2
# Repository information used for downloading files and images from GitHub
REPO_OWNER="lanedirt"
@@ -1566,6 +1566,7 @@ handle_install_version() {
set_smtp_tls_enabled || { printf "${RED}> Failed to set SMTP TLS${NC}\n"; exit 1; }
set_default_ports || { printf "${RED}> Failed to set default ports${NC}\n"; exit 1; }
set_public_registration || { printf "${RED}> Failed to set public registration${NC}\n"; exit 1; }
set_ip_logging || { printf "${RED}> Failed to set IP logging${NC}\n"; exit 1; }
# Only generate admin password if not already set
if ! grep -q "^ADMIN_PASSWORD_HASH=" "$ENV_FILE" || [ -z "$(grep "^ADMIN_PASSWORD_HASH=" "$ENV_FILE" | cut -d '=' -f2)" ]; then

View File

@@ -3,6 +3,8 @@ events {
}
http {
client_max_body_size 25M;
upstream client {
server client:3000;
}

View File

@@ -30,7 +30,7 @@ public static class AppInfo
/// <summary>
/// Gets the patch version number.
/// </summary>
public const int VersionPatch = 1;
public const int VersionPatch = 2;
/// <summary>
/// Gets a dictionary of minimum supported client versions that the WebApi supports.