diff --git a/package-lock.json b/package-lock.json
index 795a2c4..359482b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,7 +15,10 @@
"@angular/forms": "^21.2.0",
"@angular/platform-browser": "^21.2.0",
"@angular/router": "^21.2.0",
- "@chatenium/chatenium-sdk": "^1.1.3",
+ "@chatenium/chatenium-sdk": "^1.1.5",
+ "@fortawesome/angular-fontawesome": "^4.0.0",
+ "@fortawesome/free-brands-svg-icons": "^7.1.0",
+ "@fortawesome/free-solid-svg-icons": "^7.1.0",
"@ngx-translate/core": "^17.0.0",
"@ngx-translate/http-loader": "^17.0.0",
"@taiga-ui/addon-charts": "^5.1.0",
@@ -988,13 +991,12 @@
}
},
"node_modules/@chatenium/chatenium-sdk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@chatenium/chatenium-sdk/-/chatenium-sdk-1.1.3.tgz",
- "integrity": "sha512-y1+ls4MnMu9/t0vWtQEjIw1QPwk0peQbdEx738xu8OgxD/0nEBn6SGhhnesPHcQmdnkhZe/xiRVrIlDmZxGUHg==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@chatenium/chatenium-sdk/-/chatenium-sdk-1.1.5.tgz",
+ "integrity": "sha512-seEsxlRk96WHsE4h6oPPa5nGZioePIZpB5qk0Xs3CaKNbVJKH02/Q5HW2PIi6DHw+djAENWu5zVXIic+9DrqZw==",
"dependencies": {
"@faker-js/faker": "^10.4.0",
"axios": "^1.14.0",
- "dotenv": "^17.4.0",
"msw": "^2.12.14",
"uuid": "^13.0.0"
}
@@ -1652,6 +1654,64 @@
"npm": ">=10"
}
},
+ "node_modules/@fortawesome/angular-fontawesome": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-4.0.0.tgz",
+ "integrity": "sha512-TCqHqT5ovFY1A4RgMpoBUgS+RX3OVs39+CzHFgzDhbCPAopOa26J748TZJcuZwJAvGAk9tbWeVEmWuLByINAeg==",
+ "license": "MIT",
+ "dependencies": {
+ "@fortawesome/fontawesome-svg-core": "^7.1.0",
+ "tslib": "^2.8.1"
+ },
+ "peerDependencies": {
+ "@angular/core": "^21.0.0"
+ }
+ },
+ "node_modules/@fortawesome/fontawesome-common-types": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.2.0.tgz",
+ "integrity": "sha512-IpR0bER9FY25p+e7BmFH25MZKEwFHTfRAfhOyJubgiDnoJNsSvJ7nigLraHtp4VOG/cy8D7uiV0dLkHOne5Fhw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/fontawesome-svg-core": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.2.0.tgz",
+ "integrity": "sha512-6639htZMjEkwskf3J+e6/iar+4cTNM9qhoWuRfj9F3eJD6r7iCzV1SWnQr2Mdv0QT0suuqU8BoJCZUyCtP9R4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "7.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/free-brands-svg-icons": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-7.2.0.tgz",
+ "integrity": "sha512-VNG8xqOip1JuJcC3zsVsKRQ60oXG9+oYNDCosjoU/H9pgYmLTEwWw8pE0jhPz/JWdHeUuK6+NQ3qsM4gIbdbYQ==",
+ "license": "(CC-BY-4.0 AND MIT)",
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "7.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@fortawesome/free-solid-svg-icons": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.2.0.tgz",
+ "integrity": "sha512-YTVITFGN0/24PxzXrwqCgnyd7njDuzp5ZvaCx5nq/jg55kUYd94Nj8UTchBdBofi/L0nwRfjGOg0E41d2u9T1w==",
+ "license": "(CC-BY-4.0 AND MIT)",
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "7.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@gar/promise-retry": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz",
@@ -5616,18 +5676,6 @@
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
- "node_modules/dotenv": {
- "version": "17.4.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.1.tgz",
- "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
diff --git a/package.json b/package.json
index 60c1ecf..79c5e74 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,10 @@
"@angular/forms": "^21.2.0",
"@angular/platform-browser": "^21.2.0",
"@angular/router": "^21.2.0",
- "@chatenium/chatenium-sdk": "^1.1.3",
+ "@chatenium/chatenium-sdk": "^1.1.5",
+ "@fortawesome/angular-fontawesome": "^4.0.0",
+ "@fortawesome/free-brands-svg-icons": "^7.1.0",
+ "@fortawesome/free-solid-svg-icons": "^7.1.0",
"@ngx-translate/core": "^17.0.0",
"@ngx-translate/http-loader": "^17.0.0",
"@taiga-ui/addon-charts": "^5.1.0",
diff --git a/public/Kinn-Book.ttf b/public/Kinn-Book.ttf
new file mode 100644
index 0000000..dc89fa1
Binary files /dev/null and b/public/Kinn-Book.ttf differ
diff --git a/public/Kinn-Heavy.ttf b/public/Kinn-Heavy.ttf
new file mode 100644
index 0000000..61ade82
Binary files /dev/null and b/public/Kinn-Heavy.ttf differ
diff --git a/public/favicon.ico b/public/favicon.ico
index 57614f9..978d2c3 100644
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/public/i18n/en.json b/public/i18n/en.json
index f24ebc6..802c6b1 100644
--- a/public/i18n/en.json
+++ b/public/i18n/en.json
@@ -1,4 +1,80 @@
{
+ "version": "3.0 Beta 2 (2026.04.10)",
+ "ok": "Ok",
+ "aChatProgram": "A messaging platform that you can trust.",
+ "fast": "Fast",
+ "secure": "Secure",
+ "independent": "Independent",
+ "scrollDownForMore": "Scroll down for more",
+ "whatIsChtn": "Chatenium is a chat platform aiming to provide a secure, well integrated fast chatting experience across any devices. You can create a new account for free and start chatting and broadcasting messages.",
+ "home": {
+ "chtn": "Chatenium ",
+ "chtnIs": "Chatenium is ",
+ "help": "Help",
+ "blog": "Blog",
+ "apiSpecs": "API specifications",
+ "adaptsToYou": "adapts to you",
+ "adaptsToYouDesc": "We actively work on bringing Chatenium to every device, but not the fast way, the good way by developing a native application for each platform.",
+ "chtnOnWeb": "Chatenium On Web",
+ "chtnOnWebDesc": "Built for maximum compatibility. The Web will work on every device you have.",
+ "chtnOnAndroid": "Chatenium On Android™",
+ "chtnOnAndroidDesc": "Built to work beautifully with your Android™ device. Blends in beautifully with your Material You theme.",
+ "chtnOnApple": "Chatenium On Apple®",
+ "chtnOnAppleDesc": "Built with the latest Liquid Glass design to blend in and work flawlessly across all your Apple® devices.",
+ "chtnOnWindows": "Chatenium On Windows®",
+ "chtnOnWindowsDesc": "We are also expanding our native apps to Microsoft Windows®, because using a web app is resource intensive and inferior to a native application. So we built a fully native Windows® application using WinUI3 + C#.",
+ "chtnOnLinux": "Chatenium On Linux",
+ "chtnOnLinuxDesc": "Built on the latest GNOME Adwaita design language to beautifully blend into the GNOME desktop environment on Linux.",
+ "chtnEcho": "Chatenium Echo",
+ "chtnEchoDesc": "Built on the GNOME GTK design language to beautifully blend into any GTK based desktop environment on Linux.",
+ "chtnReson": "Chatenium Reson",
+ "chtnResonDesc": "Built on the KDE Kirigami design language to beautifully blend into KDE or any other Qt based desktop environment on Linux.",
+ "tba": "To be announced",
+ "secure": "secure",
+ "secureDesc": "Chatenium uses the latest algorithms to protect your data from any third-parties.",
+ "secureCdn": "Encrypted CDN",
+ "secureCdnDesc": "All uploaded media is encrypted and never accessed by anyone outside your chat. Not even by us. All deleted media are permanently removed from our servers and databases.",
+ "encryptedText": "Encrypted messages",
+ "encryptedTextDesc": "Any message that is sent to any DM chat or channel is encrypted and stored securely in our databases. We do not share your messages with any third-parties.",
+ "zeroDataCollection": "Zero data collection",
+ "zeroDataCollectionDesc": "Our policies allow zero data collection. We do not collect any data from our clients.",
+ "secureCalling": "Secure calls",
+ "secureCallingDesc": "When using Chatenium Call, all audio and video tracks are sent to our servers for secure distribution. No audio or video is ever recorded by our servers under any circumstances.",
+ "zeroDigitalFootprint": "Zero digital footprint",
+ "zeroDigitalFootprintDesc": "We make it easy to delete your account from our services and we make sure to remove all data made by you.",
+ "underDevelopment": "Under development",
+ "devPreview": "Developer Preview",
+ "weAreExcitedFor": "We are excited for ",
+ "you": "you",
+ "weAreExcitedForYouDesc": "Our community awaits you with love. We are independent, so you can express your true feelings without getting censored.",
+ "enterChtnOnWeb": "Enter Chatenium On Web",
+ "enterChtnOnWebDesc": "Register your account here are access the latest experimental features we can offer. The web is mobile-friendly and offers offline mode.",
+ "downloadChtnOnAndroid": "Get Chatenium On Android",
+ "downloadChtnOnAndroidDesc": "We are preparing a Google Play release right now. Don't worry, you can get access to .apk releases in the official 'Chatenium' network.",
+ "downloadChtnOnApple": "Get Chatenium On Apple",
+ "downloadChtnOnAppleDesc": "We are preparing an App Store release right now. Don't worry, you can get access to .ipa (.dmg soon) releases in the official 'Chatenium' network.",
+ "storeReleaseSoon": "Store release coming soon...",
+ "closedAlpha": "Closed alpha",
+ "openBeta": "Beta",
+ "openBetaDesc": "Participate in public beta testing to help us create the best app experience!",
+ "closedAlphaDesc": "Great news! You are eligible to participate in the testing program. All we need is your e-mail address.",
+ "alphaRequestedSuccessfully": "Request sent successfully! We will get back to you later.",
+ "alphaRequestAlreadySent": "You already requested an alpha access! We will get back to you later.",
+ "alphaRequestError": "Something went wrong. Please try again later.",
+ "cookies": "Cookies",
+ "cookiesDesc": "Chatenium is using cookies to securely store your session token. No cookies are used for tracking purposes",
+ "understood": "Understood",
+ "privacyPolicy": "Privacy policy",
+ "tos": "Terms of services",
+ "requestAlphaAccess": "Start beta testing",
+ "joinGoogleGroup": "Our Google Group",
+ "joinGoogleGroupWhy": "All you need to do is join our Google Group and you can join the beta testing program via the link provided in the group.",
+ "testFlight": "Apple TestFlight",
+ "testFlightDesc": "Start testing the application on your Apple device via TestFlight!",
+ "downloadOnWindows": "Get Chatenium On Windows",
+ "microsoftStore": "Microsoft Store",
+ "microsoftStoreDesc": "Start testing the application on your Windows computer via the Microsoft Store!"
+ },
"signIn": {
"formTitle": "Sign in",
"mainInput": {
@@ -18,6 +94,13 @@
}
},
"chat": {
+ "changeLogDialog": {
+ "label": "Chatenium has been updated",
+ "changeLog": {
+ "1": "UI changes and bug fixes in the video player",
+ "2": "UI overflow fix in chat navigation bar"
+ }
+ },
"chatnav": {
"dmList": {
"newChat": "Start new chat",
@@ -30,6 +113,8 @@
},
"elements": {
"messageBox": {
+ "editMessageLabel": "Editing message: ",
+ "attachments": "Attachment(s)",
"placeholder": "Type a message...",
"message": "Message",
"uplDrag": {
@@ -39,6 +124,12 @@
"fileUploadDialog": {
"label": "Upload files"
}
+ },
+ "messages": {
+ "contextMenu": {
+ "edit": "Edit",
+ "delete": "Delete"
+ }
}
}
}
diff --git a/public/images/homepage/new_customi_dark.png b/public/images/homepage/new_customi_dark.png
new file mode 100644
index 0000000..6c78d31
Binary files /dev/null and b/public/images/homepage/new_customi_dark.png differ
diff --git a/public/images/homepage/new_customi_light.png b/public/images/homepage/new_customi_light.png
new file mode 100644
index 0000000..1f8cc69
Binary files /dev/null and b/public/images/homepage/new_customi_light.png differ
diff --git a/public/images/homepage/new_dm_dark.png b/public/images/homepage/new_dm_dark.png
new file mode 100644
index 0000000..32ae4c3
Binary files /dev/null and b/public/images/homepage/new_dm_dark.png differ
diff --git a/public/images/homepage/new_dm_light.png b/public/images/homepage/new_dm_light.png
new file mode 100644
index 0000000..627cd44
Binary files /dev/null and b/public/images/homepage/new_dm_light.png differ
diff --git a/public/images/homepage/new_network_dark.png b/public/images/homepage/new_network_dark.png
new file mode 100644
index 0000000..388b0ed
Binary files /dev/null and b/public/images/homepage/new_network_dark.png differ
diff --git a/public/images/homepage/new_network_discovery_dark.png b/public/images/homepage/new_network_discovery_dark.png
new file mode 100644
index 0000000..2140bb1
Binary files /dev/null and b/public/images/homepage/new_network_discovery_dark.png differ
diff --git a/public/images/homepage/new_network_discovery_light.png b/public/images/homepage/new_network_discovery_light.png
new file mode 100644
index 0000000..c723faa
Binary files /dev/null and b/public/images/homepage/new_network_discovery_light.png differ
diff --git a/public/images/homepage/new_network_light.png b/public/images/homepage/new_network_light.png
new file mode 100644
index 0000000..71c7e53
Binary files /dev/null and b/public/images/homepage/new_network_light.png differ
diff --git a/public/images/homepage/new_picture_stats_dark.png b/public/images/homepage/new_picture_stats_dark.png
new file mode 100644
index 0000000..01a7494
Binary files /dev/null and b/public/images/homepage/new_picture_stats_dark.png differ
diff --git a/public/images/homepage/new_picture_stats_light.png b/public/images/homepage/new_picture_stats_light.png
new file mode 100644
index 0000000..bddae0d
Binary files /dev/null and b/public/images/homepage/new_picture_stats_light.png differ
diff --git a/public/images/homepage/new_pictures_dark.png b/public/images/homepage/new_pictures_dark.png
new file mode 100644
index 0000000..416294a
Binary files /dev/null and b/public/images/homepage/new_pictures_dark.png differ
diff --git a/public/images/homepage/new_pictures_light.png b/public/images/homepage/new_pictures_light.png
new file mode 100644
index 0000000..b7001da
Binary files /dev/null and b/public/images/homepage/new_pictures_light.png differ
diff --git a/public/images/logo/logo.png b/public/images/logo/logo.png
new file mode 100755
index 0000000..4783c4d
Binary files /dev/null and b/public/images/logo/logo.png differ
diff --git a/public/images/logo/logo_beta.png b/public/images/logo/logo_beta.png
new file mode 100755
index 0000000..2210213
Binary files /dev/null and b/public/images/logo/logo_beta.png differ
diff --git a/public/images/logo/logo_short.png b/public/images/logo/logo_short.png
new file mode 100755
index 0000000..8e0a004
Binary files /dev/null and b/public/images/logo/logo_short.png differ
diff --git a/public/images/logo/logo_short_dark.png b/public/images/logo/logo_short_dark.png
new file mode 100755
index 0000000..203f9ee
Binary files /dev/null and b/public/images/logo/logo_short_dark.png differ
diff --git a/public/images/logo/logo_short_dark_1024_1024.png b/public/images/logo/logo_short_dark_1024_1024.png
new file mode 100755
index 0000000..a6cfa08
Binary files /dev/null and b/public/images/logo/logo_short_dark_1024_1024.png differ
diff --git a/public/images/logo/logo_short_dark_120_120.png b/public/images/logo/logo_short_dark_120_120.png
new file mode 100755
index 0000000..4ff21d6
Binary files /dev/null and b/public/images/logo/logo_short_dark_120_120.png differ
diff --git a/public/images/logo/logo_short_old.png b/public/images/logo/logo_short_old.png
new file mode 100755
index 0000000..cd48857
Binary files /dev/null and b/public/images/logo/logo_short_old.png differ
diff --git a/public/images/logo/logoold.png b/public/images/logo/logoold.png
new file mode 100755
index 0000000..573c05b
Binary files /dev/null and b/public/images/logo/logoold.png differ
diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts
index 29b9d27..f439905 100644
--- a/src/app/app.routes.ts
+++ b/src/app/app.routes.ts
@@ -2,11 +2,19 @@ import {Routes} from '@angular/router';
import {SignIn} from './signin/signin';
import {Chat} from './chat/chat';
import {Dm} from './chat/dm/dm';
+import {noAuthGuard} from './guards/no-auth-guard';
+import {authNeededGuard} from './guards/auth-needed-guard';
+import {Homepage} from './homepage/homepage';
+import {Privacy} from './privacy/privacy';
+import {TOS} from './tos/tos';
export const routes: Routes = [
- {path: 'signin', component: SignIn},
+ {path: '', component: Homepage},
+ {path: 'privacy', component: Privacy},
+ {path: 'tos', component: TOS},
+ {path: 'signin', component: SignIn, canActivate: [noAuthGuard]},
{
- path: 'chat', component: Chat, children: [
+ path: 'chat', component: Chat, canActivate: [authNeededGuard], children: [
{path: 'dm/:chatid', component: Dm},
]
},
diff --git a/src/app/chat/chat.html b/src/app/chat/chat.html
index 083e3a7..b1c7552 100644
--- a/src/app/chat/chat.html
+++ b/src/app/chat/chat.html
@@ -1,3 +1,13 @@
+
+