feat: add MxjsClient for lightweight Matrix client functionality

- Implemented core methods for user authentication (register, login, logout).
- Added room management features (createRoom, joinRoom, leaveRoom, inviteUser).
- Included message handling capabilities (sendMessage, editMessage, redactEvent).
- Introduced user moderation actions (kickUser, banUser, unbanUser).
- Implemented profile management (getProfile, setDisplayName, setAvatarUrl).
- Added support for media uploads and fetching messages from room timelines.
- Included event handling with emit and on methods for custom event listeners.
- Sanitization of HTML content and mention handling in messages.
This commit is contained in:
2026-03-15 12:27:23 +11:00
parent 6d7ee1db71
commit df10268a83
7 changed files with 2785 additions and 584 deletions

File diff suppressed because it is too large Load Diff

1133
website/matrix-client.old.js Normal file

File diff suppressed because it is too large Load Diff

1243
website/mxjs-lite.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -253,13 +253,9 @@ class NumberMatchGame {
}
}
// Wrap-around horizontal (end of one row to start of next)
if (rowEnd === rowStart + 1 && colStart === this.width - 1 && colEnd === 0) {
// Adjacent via wrap
return true;
}
if (diff === 1 || diff === this.width) {
// Directly adjacent
// Wrap-around: scan reading order across row boundaries (right to end of row,
// down to next row, left-to-right until reaching the second tile)
if (rowStart !== rowEnd && this.isSegmentClear(start, end, 1)) {
return true;
}

View File

@@ -18,6 +18,7 @@ import samsayCmd from './scripts/commands/samsay.js';
// Import Matrix client
import {
initMatrixClient,
updateClientSession,
chatMode,
matrixApi,
fetchPublicLastMessage,
@@ -581,6 +582,14 @@ const commands = {
};
}
// Sync session to mxClient if exists
if (window.matrixSession.accessToken && window.matrixSession.userId) {
updateClientSession({
accessToken: window.matrixSession.accessToken,
userId: window.matrixSession.userId
});
}
// Register/login user if not logged in
if (!window.matrixSession.accessToken) {
try {
@@ -627,6 +636,8 @@ const commands = {
localStorage.setItem('matrix_username', username);
localStorage.setItem('matrix_password', password);
updateClientSession({ accessToken: regData.access_token, userId: regData.user_id });
term.writeln(` Registered as: ${regData.user_id}\r\n`);
} else if (regData.errcode === 'M_USER_IN_USE') {
// Username exists, try to login
@@ -653,6 +664,8 @@ const commands = {
localStorage.setItem('matrix_username', username);
localStorage.setItem('matrix_password', password);
updateClientSession({ accessToken: loginData.access_token, userId: loginData.user_id });
term.writeln(` Logged in as: ${loginData.user_id}\r\n`);
} else {
return ` Error: Failed to login - ${loginData.error || loginData.errcode || 'Unknown error'}`;