diff --git a/client/index.html b/client/index.html
index ad8df9e..6a23045 100644
--- a/client/index.html
+++ b/client/index.html
@@ -3,7 +3,7 @@
- Liquio QA Bot
+ Liqa
+
diff --git a/client/package.json b/client/package.json
index d04f5ed..e311f5e 100644
--- a/client/package.json
+++ b/client/package.json
@@ -1,5 +1,5 @@
{
- "name": "liquio-qa-bot-client",
+ "name": "liqa-client",
"private": true,
"type": "module",
"scripts": {
diff --git a/client/public/favicon.svg b/client/public/favicon.svg
new file mode 100644
index 0000000..0cab1a2
--- /dev/null
+++ b/client/public/favicon.svg
@@ -0,0 +1,62 @@
+
+
+
+
diff --git a/client/src/App.module.css b/client/src/App.module.css
index 52a644b..ded25a4 100644
--- a/client/src/App.module.css
+++ b/client/src/App.module.css
@@ -15,10 +15,12 @@
}
.brand {
- font-weight: 700;
- font-size: 1rem;
- color: var(--color-primary);
- letter-spacing: 0.02em;
+ height: 28px;
+ width: auto;
+ display: block;
+ background: #E6EDEA;
+ border-radius: 6px;
+ padding: 3px 6px;
}
.nav {
diff --git a/client/src/App.tsx b/client/src/App.tsx
index e5f5eee..c659af2 100644
--- a/client/src/App.tsx
+++ b/client/src/App.tsx
@@ -1,5 +1,10 @@
+import { NavLink, Navigate, Route, Routes } from 'react-router-dom';
+import { useTranslation } from 'react-i18next';
+import { Globe, KeyRound, Monitor, ClipboardList } from 'lucide-react';
+import type { LucideIcon } from 'lucide-react';
import styles from './App.module.css';
import { SidePanel, ThemeSwitcher } from './ui';
+import liqaLogo from './assets/liqa.svg';
import { EnvironmentsPage } from './pages/EnvironmentsPage';
import { EnvironmentDetailPage } from './pages/EnvironmentDetailPage';
import { CreateEnvironmentPage } from './pages/CreateEnvironmentPage';
@@ -9,10 +14,6 @@ import { SessionsPage } from './pages/SessionsPage';
import { SessionDetailPage } from './pages/SessionDetailPage';
import { ScenariosPage } from './pages/ScenariosPage';
import { ScenarioDetailPage } from './pages/ScenarioDetailPage';
-import { NavLink, Navigate, Route, Routes } from 'react-router-dom';
-import { useTranslation } from 'react-i18next';
-import { Globe, KeyRound, Monitor, ClipboardList } from 'lucide-react';
-import type { LucideIcon } from 'lucide-react';
const NAV: { path: string; labelKey: string; Icon: LucideIcon }[] = [
{ path: '/environments', labelKey: 'nav.environments', Icon: Globe },
@@ -29,7 +30,7 @@ export default function App() {
- QA Bot
+
}
diff --git a/client/src/assets/liqa-mini.svg b/client/src/assets/liqa-mini.svg
new file mode 100644
index 0000000..0cab1a2
--- /dev/null
+++ b/client/src/assets/liqa-mini.svg
@@ -0,0 +1,62 @@
+
+
+
+
diff --git a/client/src/assets/liqa.svg b/client/src/assets/liqa.svg
new file mode 100644
index 0000000..66c71be
--- /dev/null
+++ b/client/src/assets/liqa.svg
@@ -0,0 +1,67 @@
+
+
+
+
diff --git a/client/src/ui/DescriptionList/DescriptionList.tsx b/client/src/ui/DescriptionList/DescriptionList.tsx
index 45c532c..bd25985 100644
--- a/client/src/ui/DescriptionList/DescriptionList.tsx
+++ b/client/src/ui/DescriptionList/DescriptionList.tsx
@@ -4,7 +4,8 @@ import styles from './DescriptionList.module.css';
function extractText(node: React.ReactNode): string {
if (typeof node === 'string' || typeof node === 'number') return String(node);
if (Array.isArray(node)) return node.map(extractText).join('');
- if (React.isValidElement(node)) return extractText(node.props.children);
+ if (React.isValidElement<{ children?: React.ReactNode }>(node))
+ return extractText(node.props.children);
return '';
}
diff --git a/package.json b/package.json
index cd8941e..c7dcdf8 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "liquio-qa-bot",
+ "name": "liqa",
"version": "1.2.0",
"private": true,
"workspaces": [
diff --git a/server/eslint.config.mjs b/server/eslint.config.mjs
index ff13b74..5baa58e 100644
--- a/server/eslint.config.mjs
+++ b/server/eslint.config.mjs
@@ -5,4 +5,12 @@ export default tseslint.config(
{ ignores: ['dist/**', 'node_modules/**'] },
...tseslint.configs.recommended,
eslintConfigPrettier,
+ {
+ rules: {
+ '@typescript-eslint/no-unused-vars': [
+ 'error',
+ { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' },
+ ],
+ },
+ },
);
diff --git a/server/package.json b/server/package.json
index c37546e..253ce9d 100644
--- a/server/package.json
+++ b/server/package.json
@@ -1,7 +1,6 @@
{
- "name": "liquio-qa-bot",
- "version": "1.2.0",
- "description": "",
+ "name": "liqa-server",
+ "version": "1.0.0",
"main": "index.js",
"scripts": {
"build": "nest build",
diff --git a/server/src/main.ts b/server/src/main.ts
index dacb35e..ba3a007 100644
--- a/server/src/main.ts
+++ b/server/src/main.ts
@@ -8,7 +8,7 @@ import { AppModule } from "./app.module";
import { HttpExceptionFilter } from "./filters/http-exception.filter";
import { TraceInterceptor } from "./interceptors/trace.interceptor";
import { LoggingInterceptor } from "./interceptors/logging.interceptor";
-import { name as pkgName, version as pkgVersion } from "../package.json";
+import { name as pkgName, version as pkgVersion } from "../../package.json";
async function bootstrap() {
const logger = new TraceLogger("Bootstrap");
diff --git a/server/src/mcp/mcp.service.ts b/server/src/mcp/mcp.service.ts
index ad88d36..084312f 100644
--- a/server/src/mcp/mcp.service.ts
+++ b/server/src/mcp/mcp.service.ts
@@ -12,7 +12,7 @@ import { BrowserService } from "../browser/browser.service";
import { CodeExecutorService } from "../code-executor/code-executor.service";
import { ScenarioService } from "../scenario/scenario.service";
-import pkg from "../../package.json";
+import pkg from "../../../package.json";
@Injectable()
export class McpService {
diff --git a/server/src/session/session.controller.ts b/server/src/session/session.controller.ts
index 34cf581..5c65895 100644
--- a/server/src/session/session.controller.ts
+++ b/server/src/session/session.controller.ts
@@ -41,7 +41,12 @@ export class SessionController {
async findOne(@Param("id", ParseIntPipe) id: number) {
const session = await this.sessionService.findById(id);
if (!session) throw new NotFoundException(`Session ${id} not found`);
- const { token, cookies, localStorage, ...rest } = session;
+ const {
+ token,
+ cookies: _cookies,
+ localStorage: _localStorage,
+ ...rest
+ } = session;
return {
...rest,
token: maskToken(token),
diff --git a/server/test/session.controller.spec.ts b/server/test/session.controller.spec.ts
index e96e82d..22d5b56 100644
--- a/server/test/session.controller.spec.ts
+++ b/server/test/session.controller.spec.ts
@@ -125,11 +125,11 @@ describe("SessionController", () => {
// ── DELETE /sessions/:id ───────────────────────────────────────────────────
describe("DELETE /sessions/:id", () => {
- it("deletes an existing session and returns 200", async () => {
+ it("deletes an existing session and returns 204", async () => {
const s = await seedSession("delete-me-session");
await request(app.getHttpServer())
.delete(`/sessions/${s.id}`)
- .expect(200);
+ .expect(204);
const res = await request(app.getHttpServer())
.get("/sessions")