rebranding

This commit is contained in:
2026-05-25 22:49:37 -04:00
parent b62ab77fbe
commit 3d246af3f7
210 changed files with 1307 additions and 712 deletions

View File

@@ -1,6 +1,6 @@
{
"manifest_version": 3,
"name": "ShieldAI",
"name": "Kordant",
"version": "0.1.0",
"description": "AI-powered spam call, SMS, and phishing protection",
"permissions": [
@@ -10,8 +10,8 @@
"notifications"
],
"host_permissions": [
"https://api.shieldai.com/*",
"https://*.shieldai.com/*"
"https://api.kordant.ai/*",
"https://*.kordant.ai/*"
],
"background": {
"service_worker": "background.js",

View File

@@ -15,10 +15,10 @@ chrome.runtime.onInstalled.addListener(async (details) => {
const client = await getClient();
await client.extension.linkDevice.mutate({
extensionId,
deviceName: "ShieldAI Browser Extension",
deviceName: "Kordant Browser Extension",
});
} catch {
console.warn("[ShieldAI] Device linking failed (will retry on auth)");
console.warn("[Kordant] Device linking failed (will retry on auth)");
}
}
});
@@ -37,7 +37,7 @@ function addDetection(
if (detectionHistory.length > 50) detectionHistory.pop();
chrome.storage.local.set({
"shieldai:detections": detectionHistory.slice(0, 20),
"kordant:detections": detectionHistory.slice(0, 20),
});
}
@@ -53,7 +53,7 @@ export async function checkPhoneNumber(phoneNumber: string): Promise<SpamCheckRe
addDetection("spam_call", phoneNumber);
return result;
} catch (err) {
console.error("[ShieldAI] Failed to check number:", err);
console.error("[Kordant] Failed to check number:", err);
return null;
}
}
@@ -70,7 +70,7 @@ export async function classifySMS(text: string): Promise<SpamCheckResult | null>
addDetection("spam_sms", text.slice(0, 200));
return result;
} catch (err) {
console.error("[ShieldAI] Failed to classify SMS:", err);
console.error("[Kordant] Failed to classify SMS:", err);
return null;
}
}
@@ -84,8 +84,8 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
classifySMS(message.text).then(sendResponse);
return true;
case "GET_DETECTIONS":
chrome.storage.local.get("shieldai:detections").then((result) => {
sendResponse(result["shieldai:detections"] ?? []);
chrome.storage.local.get("kordant:detections").then((result) => {
sendResponse(result["kordant:detections"] ?? []);
});
return true;
case "GET_AUTH_STATUS":

View File

@@ -10,7 +10,7 @@ async function checkCurrentPage() {
const result = checkUrlForPhishing(url);
if (result.isPhishing) {
console.warn("[ShieldAI] Phishing detected:", result);
console.warn("[Kordant] Phishing detected:", result);
if (settings.autoReportPhishing) {
try {
@@ -20,7 +20,7 @@ async function checkCurrentPage() {
source: "content-script",
});
} catch (err) {
console.error("[ShieldAI] Failed to report phishing:", err);
console.error("[Kordant] Failed to report phishing:", err);
}
}

View File

@@ -11,8 +11,8 @@ const SUSPICIOUS_PATTERNS = [
];
const KNOWN_PHISHING_DOMAINS = [
"shieldai-secure.com",
"shieldai-verify.com",
"kordant-secure.com",
"kordant-verify.com",
"shield-ai-login.com",
];

View File

@@ -2,13 +2,13 @@ import type { ExtensionSettings } from "../types";
const DEFAULT_SETTINGS: ExtensionSettings = {
apiKey: null,
apiUrl: "https://api.shieldai.com/api/trpc",
apiUrl: "https://api.kordant.ai/api/trpc",
notificationsEnabled: true,
phishingDetectionEnabled: true,
autoReportPhishing: false,
};
const STORAGE_KEY = "shieldai:settings";
const STORAGE_KEY = "kordant:settings";
export async function getSettings(): Promise<ExtensionSettings> {
const result = await chrome.storage.sync.get(STORAGE_KEY);

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ShieldAI Settings</title>
<title>Kordant Settings</title>
<style>
:root {
--primary: #6366f1;
@@ -112,13 +112,13 @@
</style>
</head>
<body>
<h1>ShieldAI Settings</h1>
<h1>Kordant Settings</h1>
<div class="card">
<h2>API Configuration</h2>
<div class="field">
<label for="apiUrl">API URL</label>
<input type="url" id="apiUrl" placeholder="https://api.shieldai.com/api/trpc" />
<input type="url" id="apiUrl" placeholder="https://api.kordant.ai/api/trpc" />
</div>
<div class="field">
<label for="apiKey">API Key</label>

View File

@@ -59,7 +59,7 @@ linkDeviceBtn.addEventListener("click", async () => {
);
const result = await client.extension.linkDevice.mutate({
extensionId,
deviceName: "ShieldAI Browser Extension",
deviceName: "Kordant Browser Extension",
});
linkStatusEl.className = "status success";
linkStatusEl.textContent = `Device linked! (ID: ${result.deviceId.slice(0, 8)}...)`;

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ShieldAI</title>
<title>Kordant</title>
<style>
:root {
--primary: #6366f1;
@@ -103,7 +103,7 @@
<body>
<div class="header">
<div class="logo">S</div>
<span style="font-weight:600;font-size:15px;">ShieldAI</span>
<span style="font-weight:600;font-size:15px;">Kordant</span>
<span id="authBadge" class="status-badge unlinked">Unlinked</span>
</div>

View File

@@ -44,7 +44,7 @@ describe("createApiClient", () => {
let client: ReturnType<typeof createApiClient>;
beforeEach(() => {
client = createApiClient("https://api.shieldai.com/api/trpc", "test-key");
client = createApiClient("https://api.kordant.ai/api/trpc", "test-key");
});
it("should create a client", () => {

View File

@@ -10,9 +10,9 @@ describe("checkUrlForPhishing", () => {
});
it("should detect known phishing domains", () => {
const result = checkUrlForPhishing("https://shieldai-secure.com/login");
const result = checkUrlForPhishing("https://kordant-secure.com/login");
expect(result.isPhishing).toBe(true);
expect(result.reasons).toContain("Known phishing domain: shieldai-secure.com");
expect(result.reasons).toContain("Known phishing domain: kordant-secure.com");
});
it("should detect suspicious URL patterns", () => {
@@ -23,7 +23,7 @@ describe("checkUrlForPhishing", () => {
it("should detect phishing with multiple signals for high confidence", () => {
const result = checkUrlForPhishing(
"https://shieldai-verify.com/account-update/verify",
"https://kordant-verify.com/account-update/verify",
);
expect(result.isPhishing).toBe(true);
expect(result.confidence).toBeGreaterThan(0.5);
@@ -37,12 +37,12 @@ describe("checkUrlForPhishing", () => {
});
it("should detect phishing with subdomain of known domain", () => {
const result = checkUrlForPhishing("https://login.shieldai-secure.com");
const result = checkUrlForPhishing("https://login.kordant-secure.com");
expect(result.isPhishing).toBe(true);
});
it("should not flag legitimate shieldai.com URLs", () => {
const result = checkUrlForPhishing("https://api.shieldai.com/api/trpc");
it("should not flag legitimate kordant.ai URLs", () => {
const result = checkUrlForPhishing("https://api.kordant.ai/api/trpc");
expect(result.isPhishing).toBe(false);
});
});