From 3c0b47df3048f44b7341c67371e1458140f6b102 Mon Sep 17 00:00:00 2001 From: j0code Date: Sun, 24 May 2026 15:50:50 +0200 Subject: [PATCH 1/5] chore: resolve conflicts --- client/package-lock.json | 4 ++++ client/src/comps/App.ts | 4 ++-- client/src/comps/ChatInput.ts | 4 ++-- client/src/comps/ForumTab.ts | 2 +- client/src/comps/MemberList.ts | 2 +- client/src/comps/Modal.ts | 2 +- client/src/comps/RoomList.ts | 2 +- client/src/comps/TagList.ts | 2 +- client/src/comps/events/ChatMessageBase.ts | 2 +- client/src/comps/{ => form-comps}/FormButton.ts | 2 +- client/src/comps/{ => form-comps}/FormCheckbox.ts | 2 +- client/src/comps/{ => form-comps}/FormInputList.ts | 2 +- client/src/comps/{ => form-comps}/FormMultiSelect.ts | 2 +- client/src/comps/{ => form-comps}/FormTextInput.ts | 4 ++-- client/src/comps/{ => form-comps}/FormTextarea.ts | 4 ++-- client/src/comps/{ => form-comps}/SubmitButton.ts | 0 client/src/comps/{ => forms}/ConfirmForm.ts | 4 ++-- client/src/comps/{ => forms}/Form.ts | 10 +++++----- client/src/comps/{ => forms}/RoomCreationForm.ts | 10 +++++----- client/src/comps/{ => forms}/RoomInvitationForm.ts | 6 +++--- client/src/comps/{ => forms}/RoomInviteForm.ts | 6 +++--- client/src/comps/{ => views}/PostView.ts | 12 ++++++------ client/src/comps/{ => views}/RoomView.ts | 12 ++++++------ client/src/comps/{ => views}/View.ts | 4 ++-- client/src/comps/{ => views}/ViewHead.ts | 4 ++-- client/src/main.ts | 8 ++++---- 26 files changed, 60 insertions(+), 56 deletions(-) rename client/src/comps/{ => form-comps}/FormButton.ts (90%) rename client/src/comps/{ => form-comps}/FormCheckbox.ts (93%) rename client/src/comps/{ => form-comps}/FormInputList.ts (96%) rename client/src/comps/{ => form-comps}/FormMultiSelect.ts (99%) rename client/src/comps/{ => form-comps}/FormTextInput.ts (90%) rename client/src/comps/{ => form-comps}/FormTextarea.ts (91%) rename client/src/comps/{ => form-comps}/SubmitButton.ts (100%) rename client/src/comps/{ => forms}/ConfirmForm.ts (86%) rename client/src/comps/{ => forms}/Form.ts (86%) rename client/src/comps/{ => forms}/RoomCreationForm.ts (85%) rename client/src/comps/{ => forms}/RoomInvitationForm.ts (88%) rename client/src/comps/{ => forms}/RoomInviteForm.ts (84%) rename client/src/comps/{ => views}/PostView.ts (86%) rename client/src/comps/{ => views}/RoomView.ts (91%) rename client/src/comps/{ => views}/View.ts (88%) rename client/src/comps/{ => views}/ViewHead.ts (85%) diff --git a/client/package-lock.json b/client/package-lock.json index a5fafce..a5cc007 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -577,6 +577,8 @@ }, "node_modules/@rolldown/binding-linux-x64-musl": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.1.tgz", + "integrity": "sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==", "cpu": [ "x64" ], @@ -1917,6 +1919,8 @@ }, "node_modules/lightningcss-linux-x64-musl": { "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ "x64" ], diff --git a/client/src/comps/App.ts b/client/src/comps/App.ts index ca46c1d..779a7b7 100644 --- a/client/src/comps/App.ts +++ b/client/src/comps/App.ts @@ -2,8 +2,8 @@ import { ClientEvent, RoomEvent } from "matrix-js-sdk" import { initMatrixClient, matrix } from "../matrix" import RoomList from "./RoomList" import Component from "./Component" -import Form from "./Form" -import View from "./View" +import Form from "./forms/Form" +import View from "./views/View" import Modal from "./Modal" export default class App extends Component { diff --git a/client/src/comps/ChatInput.ts b/client/src/comps/ChatInput.ts index 696a836..2e6a1be 100644 --- a/client/src/comps/ChatInput.ts +++ b/client/src/comps/ChatInput.ts @@ -2,8 +2,8 @@ import { MsgType } from "matrix-js-sdk" import { matrix } from "../matrix" import Component from "./Component" import EmojiPicker from "./EmojiPicker" -import PostView from "./PostView" -import RoomView from "./RoomView" +import PostView from "./views/PostView" +import RoomView from "./views/RoomView" // Credits to DeepSeek-R1, wow (edited though) export default class ChatInput extends Component { diff --git a/client/src/comps/ForumTab.ts b/client/src/comps/ForumTab.ts index 23b0c81..6b2de59 100644 --- a/client/src/comps/ForumTab.ts +++ b/client/src/comps/ForumTab.ts @@ -4,7 +4,7 @@ import { twemojiParse } from "../md" import Component from "./Component" import ContextMenu from "./ContextMenu" import { app } from "../main" -import ConfirmForm from "./ConfirmForm" +import ConfirmForm from "./forms/ConfirmForm" export default class ForumTab extends Component { readonly tab: HTMLElement diff --git a/client/src/comps/MemberList.ts b/client/src/comps/MemberList.ts index 40ec09e..b790e39 100644 --- a/client/src/comps/MemberList.ts +++ b/client/src/comps/MemberList.ts @@ -1,6 +1,6 @@ import { RoomMember } from "matrix-js-sdk" import Component from "./Component" -import FormButton from "./FormButton" +import FormButton from "./form-comps/FormButton" import { matrix } from "../matrix" import Member from "./Member" import { forms } from "../main" diff --git a/client/src/comps/Modal.ts b/client/src/comps/Modal.ts index 457019f..a06269d 100644 --- a/client/src/comps/Modal.ts +++ b/client/src/comps/Modal.ts @@ -1,6 +1,6 @@ import { app } from "../main" import Component from "./Component" -import Form from "./Form" +import Form from "./forms/Form" export default class Modal extends Component { readonly form: Form diff --git a/client/src/comps/RoomList.ts b/client/src/comps/RoomList.ts index bf85e48..b119d90 100644 --- a/client/src/comps/RoomList.ts +++ b/client/src/comps/RoomList.ts @@ -1,6 +1,6 @@ import { app, forms, views } from "../main" import Component from "./Component" -import FormButton from "./FormButton" +import FormButton from "./form-comps/FormButton" import ForumTab from "./ForumTab" import { Room } from "matrix-js-sdk" diff --git a/client/src/comps/TagList.ts b/client/src/comps/TagList.ts index 3c2a2fb..dd454e1 100644 --- a/client/src/comps/TagList.ts +++ b/client/src/comps/TagList.ts @@ -5,7 +5,7 @@ export default class TagList extends Component { super("div", { classes: ["tag-list"] }) } - reset(_tags: unknown[]) { + reset(tags: unknown[]) { /* this.element.innerHTML = "" diff --git a/client/src/comps/events/ChatMessageBase.ts b/client/src/comps/events/ChatMessageBase.ts index 340dfeb..36d1243 100644 --- a/client/src/comps/events/ChatMessageBase.ts +++ b/client/src/comps/events/ChatMessageBase.ts @@ -4,7 +4,7 @@ import { getMXUser, matrix } from "../../matrix" import EventBase from "./EventBase" import { relativeTimeFormat } from "../../intl" import ContextMenu, { ContextMenuItem } from "../ContextMenu" -import ConfirmForm from "../ConfirmForm" +import ConfirmForm from "../forms/ConfirmForm" export default class ChatMessageBase extends EventBase { constructor(msg: MatrixEvent) { diff --git a/client/src/comps/FormButton.ts b/client/src/comps/form-comps/FormButton.ts similarity index 90% rename from client/src/comps/FormButton.ts rename to client/src/comps/form-comps/FormButton.ts index 300626d..a4eee62 100644 --- a/client/src/comps/FormButton.ts +++ b/client/src/comps/form-comps/FormButton.ts @@ -1,4 +1,4 @@ -import Component from "./Component" +import Component from "../Component" export default class FormButton extends Component { constructor( diff --git a/client/src/comps/FormCheckbox.ts b/client/src/comps/form-comps/FormCheckbox.ts similarity index 93% rename from client/src/comps/FormCheckbox.ts rename to client/src/comps/form-comps/FormCheckbox.ts index 8e59a81..f2c5ac0 100644 --- a/client/src/comps/FormCheckbox.ts +++ b/client/src/comps/form-comps/FormCheckbox.ts @@ -1,4 +1,4 @@ -import Component from "./Component" +import Component from "../Component" export default class FormCheckbox extends Component { private readonly input: HTMLInputElement diff --git a/client/src/comps/FormInputList.ts b/client/src/comps/form-comps/FormInputList.ts similarity index 96% rename from client/src/comps/FormInputList.ts rename to client/src/comps/form-comps/FormInputList.ts index 3589dcd..e282a91 100644 --- a/client/src/comps/FormInputList.ts +++ b/client/src/comps/form-comps/FormInputList.ts @@ -1,4 +1,4 @@ -import Component from "./Component" +import Component from "../Component" import FormButton from "./FormButton" import FormTextInput from "./FormTextInput" diff --git a/client/src/comps/FormMultiSelect.ts b/client/src/comps/form-comps/FormMultiSelect.ts similarity index 99% rename from client/src/comps/FormMultiSelect.ts rename to client/src/comps/form-comps/FormMultiSelect.ts index 2e0a4d7..2df81b4 100644 --- a/client/src/comps/FormMultiSelect.ts +++ b/client/src/comps/form-comps/FormMultiSelect.ts @@ -1,4 +1,4 @@ -import Component from "./Component" +import Component from "../Component" export type FormMultiSelectOption = { id: string diff --git a/client/src/comps/FormTextInput.ts b/client/src/comps/form-comps/FormTextInput.ts similarity index 90% rename from client/src/comps/FormTextInput.ts rename to client/src/comps/form-comps/FormTextInput.ts index c378cd9..33bd15c 100644 --- a/client/src/comps/FormTextInput.ts +++ b/client/src/comps/form-comps/FormTextInput.ts @@ -1,5 +1,5 @@ -import Component from "./Component" -import EmojiButton from "./EmojiButton" +import Component from "../Component" +import EmojiButton from "../EmojiButton" export default class FormTextInput extends Component { private readonly input: HTMLInputElement diff --git a/client/src/comps/FormTextarea.ts b/client/src/comps/form-comps/FormTextarea.ts similarity index 91% rename from client/src/comps/FormTextarea.ts rename to client/src/comps/form-comps/FormTextarea.ts index 94f3b83..6ceaac5 100644 --- a/client/src/comps/FormTextarea.ts +++ b/client/src/comps/form-comps/FormTextarea.ts @@ -1,5 +1,5 @@ -import Component from "./Component" -import EmojiButton from "./EmojiButton" +import Component from "../Component" +import EmojiButton from "../EmojiButton" export default class FormTextarea extends Component { private readonly textarea: HTMLTextAreaElement diff --git a/client/src/comps/SubmitButton.ts b/client/src/comps/form-comps/SubmitButton.ts similarity index 100% rename from client/src/comps/SubmitButton.ts rename to client/src/comps/form-comps/SubmitButton.ts diff --git a/client/src/comps/ConfirmForm.ts b/client/src/comps/forms/ConfirmForm.ts similarity index 86% rename from client/src/comps/ConfirmForm.ts rename to client/src/comps/forms/ConfirmForm.ts index 11b9969..d4a5364 100644 --- a/client/src/comps/ConfirmForm.ts +++ b/client/src/comps/forms/ConfirmForm.ts @@ -1,6 +1,6 @@ -import { MaybePromise } from "../types" +import { MaybePromise } from "../../types" import Form from "./Form" -import SubmitButton from "./SubmitButton" +import SubmitButton from "../form-comps/SubmitButton" export default class ConfirmForm extends Form { handler!: (confirmed: boolean) => MaybePromise diff --git a/client/src/comps/Form.ts b/client/src/comps/forms/Form.ts similarity index 86% rename from client/src/comps/Form.ts rename to client/src/comps/forms/Form.ts index ad00ac8..5352e99 100644 --- a/client/src/comps/Form.ts +++ b/client/src/comps/forms/Form.ts @@ -1,8 +1,8 @@ -import { app } from "../main" -import { twemojiParse } from "../md" -import { MaybePromise } from "../types" -import Component from "./Component" -import Modal from "./Modal" +import { app } from "../../main" +import { twemojiParse } from "../../md" +import { MaybePromise } from "../../types" +import Component from "../Component" +import Modal from "../Modal" export default abstract class Form< ResetArgs extends Array = Array, diff --git a/client/src/comps/RoomCreationForm.ts b/client/src/comps/forms/RoomCreationForm.ts similarity index 85% rename from client/src/comps/RoomCreationForm.ts rename to client/src/comps/forms/RoomCreationForm.ts index 24acf27..1df20b8 100644 --- a/client/src/comps/RoomCreationForm.ts +++ b/client/src/comps/forms/RoomCreationForm.ts @@ -1,9 +1,9 @@ -import { app, views } from "../main" +import { app, views } from "../../main" import Form from "./Form" -import FormTextInput from "./FormTextInput" -import { matrix } from "../matrix" -import FormCheckbox from "./FormCheckbox" -import SubmitButton from "./SubmitButton" +import FormTextInput from "../form-comps/FormTextInput" +import { matrix } from "../../matrix" +import FormCheckbox from "../form-comps/FormCheckbox" +import SubmitButton from "../form-comps/SubmitButton" export default class RoomCreationForm extends Form { readonly nameInput: FormTextInput diff --git a/client/src/comps/RoomInvitationForm.ts b/client/src/comps/forms/RoomInvitationForm.ts similarity index 88% rename from client/src/comps/RoomInvitationForm.ts rename to client/src/comps/forms/RoomInvitationForm.ts index bb9dbd8..467c412 100644 --- a/client/src/comps/RoomInvitationForm.ts +++ b/client/src/comps/forms/RoomInvitationForm.ts @@ -1,8 +1,8 @@ import { Room } from "matrix-js-sdk" -import { matrix } from "../matrix" -import { app, views } from "../main" +import { matrix } from "../../matrix" +import { app, views } from "../../main" import Form from "./Form" -import SubmitButton from "./SubmitButton" +import SubmitButton from "../form-comps/SubmitButton" export default class RoomInvitationForm extends Form { room: Room | null = null diff --git a/client/src/comps/RoomInviteForm.ts b/client/src/comps/forms/RoomInviteForm.ts similarity index 84% rename from client/src/comps/RoomInviteForm.ts rename to client/src/comps/forms/RoomInviteForm.ts index 0d2cdad..bdd1c38 100644 --- a/client/src/comps/RoomInviteForm.ts +++ b/client/src/comps/forms/RoomInviteForm.ts @@ -1,8 +1,8 @@ import { Room } from "matrix-js-sdk" import Form from "./Form" -import FormTextInput from "./FormTextInput" -import { matrix } from "../matrix" -import SubmitButton from "./SubmitButton" +import FormTextInput from "../form-comps/FormTextInput" +import { matrix } from "../../matrix" +import SubmitButton from "../form-comps/SubmitButton" export default class RoomInviteForm extends Form { room: Room | null = null diff --git a/client/src/comps/PostView.ts b/client/src/comps/views/PostView.ts similarity index 86% rename from client/src/comps/PostView.ts rename to client/src/comps/views/PostView.ts index 3d0c8be..8c19a6a 100644 --- a/client/src/comps/PostView.ts +++ b/client/src/comps/views/PostView.ts @@ -1,9 +1,9 @@ -import PostAuthor from "./PostAuthor" -import PostContent from "./PostContent" -import View from "./View" -import ChatInput from "./ChatInput" -import EventList from "./EventList" -import TagList from "./TagList" +import PostAuthor from "../PostAuthor" +import PostContent from "../PostContent" +import View from "../views/View" +import ChatInput from "../ChatInput" +import EventList from "../EventList" +import TagList from "../TagList" export default class PostView extends View<[string]> { private currentForumId?: string diff --git a/client/src/comps/RoomView.ts b/client/src/comps/views/RoomView.ts similarity index 91% rename from client/src/comps/RoomView.ts rename to client/src/comps/views/RoomView.ts index b080364..df4408e 100644 --- a/client/src/comps/RoomView.ts +++ b/client/src/comps/views/RoomView.ts @@ -1,10 +1,10 @@ -import View from "./View" -import ChatInput from "./ChatInput" -import EventList from "./EventList" +import View from "../views//View" +import ChatInput from "../ChatInput" +import EventList from "../EventList" import { MatrixEvent, Room, RoomEvent } from "matrix-js-sdk" -import { matrix } from "../matrix" -import MemberList from "./MemberList" -import { parseEventContent } from "../events" +import { matrix } from "../../matrix" +import MemberList from "../MemberList" +import { parseEventContent } from "../../events" export default class RoomView extends View { private currentRoom?: Room diff --git a/client/src/comps/View.ts b/client/src/comps/views/View.ts similarity index 88% rename from client/src/comps/View.ts rename to client/src/comps/views/View.ts index 46c78bb..55fa35f 100644 --- a/client/src/comps/View.ts +++ b/client/src/comps/views/View.ts @@ -1,5 +1,5 @@ -import Component from "./Component" -import ViewHead from "./ViewHead" +import Component from "../Component" +import ViewHead from "../views/ViewHead" export default abstract class View< ResetArgs extends Array = Array, diff --git a/client/src/comps/ViewHead.ts b/client/src/comps/views/ViewHead.ts similarity index 85% rename from client/src/comps/ViewHead.ts rename to client/src/comps/views/ViewHead.ts index 497f42b..650a1f7 100644 --- a/client/src/comps/ViewHead.ts +++ b/client/src/comps/views/ViewHead.ts @@ -1,5 +1,5 @@ -import { twemojiParse } from "../md" -import Component from "./Component" +import { twemojiParse } from "../../md" +import Component from "../Component" export default class ViewHead extends Component { titleElement: HTMLSpanElement diff --git a/client/src/main.ts b/client/src/main.ts index ece7fa0..e8f7f0b 100644 --- a/client/src/main.ts +++ b/client/src/main.ts @@ -4,10 +4,10 @@ import "highlight.js/styles/github-dark.min.css" import App from "./comps/App" import { User } from "matrix-js-sdk" import Login from "./comps/Login" -import RoomView from "./comps/RoomView" -import RoomCreationForm from "./comps/RoomCreationForm" -import RoomInvitationForm from "./comps/RoomInvitationForm" -import RoomInviteForm from "./comps/RoomInviteForm" +import RoomView from "./comps/views/RoomView" +import RoomCreationForm from "./comps/forms/RoomCreationForm" +import RoomInvitationForm from "./comps/forms/RoomInvitationForm" +import RoomInviteForm from "./comps/forms/RoomInviteForm" export let app: App export let clientUser: User From 829daea5649f90e0e1140bb8c3608433181321cf Mon Sep 17 00:00:00 2001 From: j0code Date: Sun, 24 May 2026 16:50:20 +0200 Subject: [PATCH 2/5] refactor: update vite.config.js --- client/vite.config.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/client/vite.config.js b/client/vite.config.js index 8e9bec1..a4c6222 100644 --- a/client/vite.config.js +++ b/client/vite.config.js @@ -1,13 +1,5 @@ import { defineConfig } from "vite" import { viteStaticCopy } from "vite-plugin-static-copy" -import YSON from "@j0code/yson" - -const dev_config = await YSON.load("./dev_config.yson").catch(() => ({ - vite: { - port: undefined, - host: undefined, - }, -})) // https://vitejs.dev/config/ /** @type {import('vite').UserConfig} */ @@ -15,7 +7,7 @@ export default defineConfig({ envDir: "../", server: { host: "0.0.0.0", - port: dev_config.vite?.port, + port: 5173, proxy: { "/api": { target: "http://localhost:3001", @@ -26,9 +18,8 @@ export default defineConfig({ }, hmr: { protocol: "ws", - // path: "/.proxy/" }, - allowedHosts: [dev_config.vite?.host].filter(Boolean), + allowedHosts: [], strictPort: true, }, plugins: [ From 909b12cd4e871ca9d59478bd3b17b51e7b05603a Mon Sep 17 00:00:00 2001 From: j0code Date: Sun, 24 May 2026 16:57:35 +0200 Subject: [PATCH 3/5] refactor: move css files to public dir + move 2pills.png to assets dir --- client/index.html | 2 ++ client/public/{ => assets}/2pills.png | Bin client/{ => public/css}/md.css | 0 client/{ => public/css}/style.css | 0 client/src/comps/Login.ts | 2 +- client/src/main.ts | 2 -- 6 files changed, 3 insertions(+), 3 deletions(-) rename client/public/{ => assets}/2pills.png (100%) rename client/{ => public/css}/md.css (100%) rename client/{ => public/css}/style.css (100%) diff --git a/client/index.html b/client/index.html index cfdaeb9..bbd345a 100644 --- a/client/index.html +++ b/client/index.html @@ -10,6 +10,8 @@ + +
diff --git a/client/public/2pills.png b/client/public/assets/2pills.png similarity index 100% rename from client/public/2pills.png rename to client/public/assets/2pills.png diff --git a/client/md.css b/client/public/css/md.css similarity index 100% rename from client/md.css rename to client/public/css/md.css diff --git a/client/style.css b/client/public/css/style.css similarity index 100% rename from client/style.css rename to client/public/css/style.css diff --git a/client/src/comps/Login.ts b/client/src/comps/Login.ts index 277e871..fe66395 100644 --- a/client/src/comps/Login.ts +++ b/client/src/comps/Login.ts @@ -12,7 +12,7 @@ export default class Login extends Component { this.element.appendChild(title) const morpheusImg = document.createElement("img") - morpheusImg.src = "/2pills.png" + morpheusImg.src = "/assets/2pills.png" morpheusImg.id = "morpehusImg" this.element.appendChild(morpheusImg) diff --git a/client/src/main.ts b/client/src/main.ts index e8f7f0b..dfab82c 100644 --- a/client/src/main.ts +++ b/client/src/main.ts @@ -1,5 +1,3 @@ -import "../style.css" -import "../md.css" import "highlight.js/styles/github-dark.min.css" import App from "./comps/App" import { User } from "matrix-js-sdk" From 22be8eea76c5a3ac91bec53015447ca4bea706b7 Mon Sep 17 00:00:00 2001 From: j0code Date: Mon, 25 May 2026 16:01:36 +0200 Subject: [PATCH 4/5] chore: make eslint happy --- client/src/comps/TagList.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/comps/TagList.ts b/client/src/comps/TagList.ts index dd454e1..3c2a2fb 100644 --- a/client/src/comps/TagList.ts +++ b/client/src/comps/TagList.ts @@ -5,7 +5,7 @@ export default class TagList extends Component { super("div", { classes: ["tag-list"] }) } - reset(tags: unknown[]) { + reset(_tags: unknown[]) { /* this.element.innerHTML = "" From 899190f323c20aae28579550999d4d0cffc95c8d Mon Sep 17 00:00:00 2001 From: j0code Date: Mon, 25 May 2026 16:59:19 +0200 Subject: [PATCH 5/5] refactor: remove obsolete example.env --- example.env | 1 - 1 file changed, 1 deletion(-) delete mode 100644 example.env diff --git a/example.env b/example.env deleted file mode 100644 index 18f087d..0000000 --- a/example.env +++ /dev/null @@ -1 +0,0 @@ -VITE_DISCORD_CLIENT_ID = 0