1.0#54
Open
mjkatgithub wants to merge 25 commits intomasterfrom
Open
Conversation
* Refactor chat UI for i18n and theme settings - Update nuxt.config.ts and remove the unused test-utils module. - Improve Vitest integration configuration for reliable setup. - Add useAppI18n to manage translations and locale state. - Add useThemePreference to persist light/dark/system selection. - Apply translated labels across login, chat, and settings pages. - Add member and room navigation components for chat layout. - Refine shell background styles and interaction states. - Add favicon asset and register it in app head metadata. - Organize space and room handling for the new sidebar flow. * Update CHANGELOG and enhance chat UI components - Add a four-column chat layout with responsive sidebars and overlays. - Introduce a compact and expanded space rail with a create-space stub. - Add account settings and space settings base pages. - Add member presence badges and persist theme preference locally. - Refine shell styling and improve space navigation interactions. - Fix space parent mapping and use authenticated media avatar URLs. * Enhance chat presence, receipts, and smoke tests - Add presence selection in account settings with server capability checks. - Show event notices and improve read receipt avatar rendering in chat. - Reduce receipt avatar size and pin each reader to last-read message. - Add @smoke E2E tags and a dedicated smoke test npm script. - Ignore generated coverage and cucumber report artifacts in git. * Add GitHub CI, E2E env setup, and test docs * Fix CI Playwright dependency installation * Remove unused Nuxt test-utils to fix CI * Add note on Nuxt test-utils in README.md to clarify its exclusion from the test runtime * Update changelog for Phase 2 completion - Add Phase 2 notes for presence, notices, and read receipts. - Document E2E env setup, smoke tests, and CI lanes. - Note CI dependency fix after removing unused Nuxt test-utils. * Update CI workflow conditions for job execution - Modify conditions for the 'Fast lane' job to exclude master branch pushes and specific pull requests. - Adjust 'Full lane' job conditions to only run on master branch pushes and relevant pull requests, as well as scheduled events and specific workflow dispatch inputs.
* Implement E2EE crypto init and device verification Initialize Rust crypto WASM and recover from account-mismatched crypto stores. Persist session and device IDs, and reuse device IDs only for same-user logins. Add account verification UI with SAS actions and timeout-safe flow handling. Map encrypted timeline events with robust undecryptable fallbacks and throttle timeline reloads. Add unit and integration tests plus i18n strings for E2EE states. * Add TypeScript configuration for test files Create a new tsconfig.json in the tests directory, extending the main Nuxt configuration. This includes compiler options for Vitest globals and specifies the inclusion of TypeScript and related file types for testing.
* feat: Implement chat page with Matrix client integration for room, space, and message display, alongside new utilities and tests. * feat: Add chat page with message list component, media handling, and chat timeline processing utilities. * Improve image message handling and test coverage Render image messages with preview media and lightbox support. Add timeline tests for mixed, invalid, GIF, and encrypted images. Add mediaUtils unit tests for fetch, cache, revoke, and decryption. Document manual e2e checks for image rendering and fallback behavior. * Add E2EE image sending from chat input * Enhance encryption handling in Matrix client - Introduce `toUnpaddedBase64` function for consistent base64 encoding without padding. - Update `encryptAttachmentData` to use unpadded base64 for IV and hash. - Add `isRoomEncrypted` function to determine room encryption state. - Modify image message handling to check room encryption status before sending. - Improve unit tests to validate encryption behavior and ensure proper handling of unencrypted rooms. * Update MsgType in Matrix client mock to include Image support - Extend the MsgType object in the Matrix client mock to support 'm.image' alongside 'm.text'. - This change enhances the testing capabilities for image message handling in the unit tests.
- Add chat image messages with inline preview and lightbox. - Add E2EE image sending from chat input. - Add media utilities for encrypted media operations. - Expand unit and integration tests for media utilities and timelines. - Use unpadded base64 for Matrix attachment IV and hash values. - Check room encryption before creating image media events.
* add changelog check workflow * Refactor changelog workflow to enforce changelog policy based on target branch. Added checks for Unreleased entries and version section requirements for PRs into develop and master branches.
* Implement message reply feature in chat - Add MessageActionBar component for reply actions. - Enhance MessageInput to handle reply context and emit cancel reply event. - Update MessageList to display reply previews and emit reply events. - Modify useMatrixClient to support sending messages with reply metadata. - Update i18n strings for reply actions and context. - Add tests for reply functionality in MessageInput and MessageList components. - Extend chat timeline utilities to map reply metadata from events. * Add MessageItem component for chat message rendering - Introduce MessageItem.vue to encapsulate message display logic, including handling of notices, replies, and media. - Refactor MessageList.vue to utilize MessageItem for rendering individual messages, improving code organization and readability. - Maintain existing functionality while enhancing the structure for future features. * Enhance chat functionality with message replies and interaction components - Add support for message replies using Matrix `m.in_reply_to` relation payload. - Implement reply mode in chat composer, featuring a preview and explicit cancel action. - Introduce a message interaction bar component for hover and focus actions. - Modularize message list rendering with dedicated `ChatMessageItem` and reusable `ChatMessageActionBar` components.
* Refactor E2E testing setup and enhance Synapse integration - Update package.json to streamline E2E test commands and add new scripts for managing Synapse. - Modify CI workflow to remove unnecessary environment file creation and verify Docker availability. - Introduce new E2E test scenarios for message handling, including replies, image rendering, and fallback behavior. - Implement runtime scripts for managing Synapse lifecycle and seeding test data. - Add support for loading environment variables from multiple sources for E2E tests. - Create Docker Compose configuration for Synapse to facilitate local testing. - Enhance step definitions for Cucumber tests to cover new scenarios and improve error handling. * Remove unused Synapse management scripts from package.json and enhance image upload functionality in runtime-seed-synapse.mjs. Update Docker Compose configuration by removing redundant service definitions for Synapse. * Refactor E2E chat tests by removing redundant environment setup steps and enhancing scenario descriptions. Introduce validation for Synapse environment variables in the test hooks to ensure necessary configurations are present before running tests. * Remove deprecated chat-synapse step definitions and consolidate login functionality into login.steps.mjs. Enhance E2E test coverage for chat interactions, including message visibility, image previews, and reply handling. * Enhance E2E testing and Synapse integration - Introduce a Synapse-backed E2E orchestration script for streamlined test execution. - Add local runtime scripts for environment management and test seeding. - Update Docker Compose setup for Synapse to support local and CI testing. - Expand E2E scenarios to cover chat functionalities including E2EE fallback, image rendering, and reply handling. - Refactor CI workflow to run E2E tests against local Dockerized Synapse without requiring external credentials. - Consolidate Synapse-specific step definitions and improve environment validation for seeded-room scenarios. - Fix issues with Docker configuration and ensure reliable image event handling. * Add member presence indicator functionality to E2E chat tests - Introduce a new scenario outline to validate that the member presence indicator reflects the correct status based on user settings. - Implement step definitions for setting user presence and verifying the corresponding status indicator in the chat interface. - Normalize presence values and map them to appropriate CSS classes for visual representation in the chat UI. * Update CHANGELOG to include new E2E presence scenarios for chat functionality - Add entries for executable chat E2E presence scenarios covering standard member states (online, away, offline) with sidebar status-dot verification.
* Implement message reactions feature in chat - Add support for adding and removing reactions to messages in the chat interface. - Enhance MessageItem and MessageActionBar components to handle reaction events. - Update useMatrixClient to manage sending and toggling reactions. - Introduce utility functions for aggregating reactions in chat timelines. - Expand E2E tests to cover scenarios for adding and removing reactions. - Add unit tests for reaction handling in MessageItem component and related utilities. * Implement emoji reaction picker and refactor chat components - Introduce a new ReactionEmojiPicker component for selecting emojis in chat. - Refactor MessageActionBar to utilize the new emoji picker and remove custom emoji input. - Update MessageItem and MessageList components to pass current user ID and frequent scope key for emoji tracking. - Enhance emoji handling by integrating frequent emoji usage storage and selection. - Add unit tests for the ReactionEmojiPicker to ensure functionality and persistence of frequent emoji usage. * Enhance message reactions and chat UI components - Introduce support for message reactions with add/remove functionality, grouped emoji counters, and live updates in the timeline. - Implement an advanced emoji picker with category tabs and shortcode conversion for user-frequent emojis. - Update MessageActionBar to feature icon-only controls with a compact design and tooltips. - Refactor chat page media logic into a reusable `useChatMedia` hook to optimize performance and maintainability. - Expand unit and E2E tests to cover new reaction features and UI behavior.
* Implement session restore gating at startup - Add explicit restore state lifecycle in useMatrixClient - Show a global blocking restore modal during startup loading - Add global auth middleware that waits for restore completion - Redirect unauthenticated protected routes to root (/) - Remove conflicting page-level auth redirects to prevent flicker - Align index route behavior with restore-aware navigation - Extend unit and e2e tests for restore and redirect flows * Update CHANGELOG with session restore enhancements and global auth middleware - Document session restore gating with explicit lifecycle state in useMatrixClient. - Add global loading modal during session restore. - Include global auth middleware for protected routes with restore-aware redirects. - Update unit tests for restore-state transitions and global auth middleware. - Adjust root route behavior to wait for session restore before navigation decisions. - Fix protected route redirects to prevent startup auth flicker.
* Update feature issue template to clarify branch naming conventions for features and bug fixes * Add GitHub bug issue template for improved bug tracking and planning - Introduce a dedicated bug issue template at `.github/ISSUE_TEMPLATE/bug.md` with sections for goal, scope, branch guidance, bug details, acceptance criteria, and testing checklist. - Update CHANGELOG to reflect the addition of the bug issue template.
- Fix E2EE decryption regressions by reusing remembered Matrix device IDs for the same account and homeserver, while preventing reuse across different homeservers. - Update `useMatrixClient` to read and write stored device information, ensuring proper device ID handling during login. - Add unit tests to verify device ID reuse logic and ensure correct behavior across different user and homeserver scenarios. - Update CHANGELOG to reflect these enhancements and fixes.
* Enhance root landing page and add unit tests - Introduce a new root landing page at `/` featuring hero content, feature cards, and a download call-to-action placeholder. - Add dedicated background logo assets for the landing page. - Implement unit tests for the landing page's restore and redirect behavior. - Update i18n keys and landing copy to align with finalized content. - Ensure landing content rendering is gated by restore-aware logic for unauthenticated users. * Update navigation after logout and add home button to login page - Change logout behavior to redirect to the root (/) instead of the login page. - Introduce a new home button on the login page for easier navigation back to the main space.
…ion (#51) * Enhance chat message list with infinite scroll and viewport preservation - Introduce IntersectionObserver to detect scroll events for reaching the top and bottom of the message list. - Add new props for loading states and viewport management, including `loadingNewer`, `centerOnMessageId`, and `preserveViewportOnPrepend`. - Implement logic to emit events when the top or bottom of the message list is reached, allowing for dynamic loading of messages. - Refactor message loading logic to support windowed message display based on read anchors and user interactions. - Update unit tests to cover new scrolling behavior and viewport preservation features. * Update CHANGELOG with chat enhancements and infinite scroll features - Document changes to the chat timeline, including a bounded initial message window to improve loading experience. - Note the transition from button-based pagination to bidirectional infinite scroll for chat history. - Highlight the new initial message viewport behavior, centering around the user's last-read event when applicable.
- Introduced a new LICENSE file containing the full text of the GNU Affero General Public License v3.0. - Updated README.md to reflect the project's licensing under AGPL-3.0-or-later, directing users to the LICENSE file for details.
) * Add signup functionality and enhance user experience - Introduce a new signup page with form fields for email, homeserver, username, and password. - Implement registration logic in the `useMatrixClient` composable, handling email verification and signup availability errors. - Update the landing page and login page to include navigation to the signup page. - Add translations for new authentication messages in English and German. - Create E2E tests for signup scenarios, ensuring proper navigation and form visibility. - Add unit tests for the signup page to validate registration flow and error handling. * Enhance homeserver connection handling and user feedback - Introduce a new connection hint message for users when homeserver access fails, providing guidance on using HTTPS for public servers. - Update `useMatrixClient` to normalize homeserver URLs, ensuring HTTP to HTTPS upgrades for public hostnames to prevent CORS issues. - Modify login and signup error handling to display the new connection hint message when relevant errors occur. - Add unit tests to verify the new homeserver URL normalization and error handling logic. - Update translations for the new connection hint message in English and German. * Update CHANGELOG to reflect new features and improvements - Added MVP signup page with Matrix registration and user-facing error feedback. - Implemented a post-signup success banner on the login page. - Normalized homeserver base URL to upgrade public HTTP to HTTPS, preventing CORS failures in the browser.
* Add onboarding components for chat functionality - Introduce `ChatOnboardingPanel`, `ChatDmStartPanel`, and `ChatPublicRoomsPanel` to facilitate user onboarding in the chat interface. - Implement direct message initiation and public room exploration features, enhancing user experience during the onboarding process. - Update translations in `useAppI18n` to support new onboarding text. - Add a new route for creating rooms, ensuring proper navigation and user flow. - Enhance the `auth.global` middleware to protect new routes, ensuring only authenticated users can access them. - Update unit tests to cover new components and functionalities, ensuring robust testing of onboarding features. * Update CHANGELOG to reflect new onboarding features and enhancements - Document the addition of onboarding panels for chat functionality, including direct message initiation, public room discovery, and room creation. - Highlight changes to direct message resolution and global auth middleware for improved user experience and security. - Include updates on unit test coverage for new components and functionalities.
* Enhance signup process with email verification and error handling - Introduce a new email verification flow in the signup process, allowing users to confirm their email addresses before completing registration. - Update `useMatrixClient` to handle email verification errors and provide user feedback for various signup scenarios. - Add new translations for email verification messages in both English and German. - Implement a dedicated verification page to finalize the signup process after email confirmation. - Create E2E tests for the email verification flow, ensuring proper navigation and error handling during the signup process. - Update the CHANGELOG to reflect the new email verification feature and related enhancements. * Enhance email signup process and E2E testing - Implement a new email signup flow with session storage for pending states, dedicated registration helpers, and a two-step signup process including email confirmation. - Add an auto-finalize page for email verification and corresponding i18n keys. - Integrate MailHog for E2E testing alongside Synapse, with optional homeserver overrides for email and SMTP. - Update E2E test configurations to include new email signup scenarios and provide dedicated scripts for running these tests. - Document changes in the CHANGELOG to reflect the new email signup features and E2E enhancements.
- Introduce a new reCAPTCHA UIA stage (`m.login.recaptcha`) for user signup, enhancing security with consent-gated script loading and optional iubenda hooks. - Add optional Synapse-backed E2E for registration captcha, documented in `tests/e2e/RECAPTCHA-SIGNUP.md`. - Create a new `SignupRecaptchaStep` component for handling reCAPTCHA verification during signup. - Update `useMatrixClient` and related composables to manage reCAPTCHA state and responses. - Enhance translations in `useAppI18n` for reCAPTCHA-related messages in both English and German. - Update CHANGELOG to reflect the addition of reCAPTCHA functionality and related enhancements.
) * Enhance signup process with registration token and terms acceptance - Introduce a new registration token stage in the signup flow, allowing users to input a token before proceeding. - Implement terms acceptance as a required step, with a dedicated `SignupTermsStep` component for policy review. - Update `useMatrixClient` to manage new signup states and handle errors related to registration tokens and terms acceptance. - Enhance translations in `useAppI18n` for new messages related to registration tokens and terms. - Update the signup and verify-email pages to accommodate the new flow, ensuring proper navigation and error handling. - Add unit tests to cover the new registration token and terms acceptance functionalities, ensuring robust testing of the signup process. - Document changes in the CHANGELOG to reflect the enhancements in the signup process. * Enhance signup process with extended UIA and user guidance - Introduced new UIA elements for Matrix signup, including `m.login.registration_token` and `m.login.terms`, enhancing user experience during registration. - Added user-facing hints for SSO-only registration and clarified SMS signup non-support. - Improved unit test coverage for registration UIA helpers and signup pages. - Updated README with new sections on CI/E2E credential setup and Matrix registration, while removing phased roadmap bullets for clarity. - Documented changes in the CHANGELOG to reflect these enhancements.
* Add Matrix OIDC support with callback handling and client hints - Introduced a new `matrixOidcNative.ts` file for handling native Matrix delegated authentication using OIDC, including constants and utility functions for managing OIDC states and errors. - Implemented unit tests for the `isPublicRegisterEndpointDisabled` function to ensure proper handling of registration endpoint responses. - Updated the project structure to include new files and components for OIDC integration, enhancing the overall authentication experience. * Add Matrix OIDC support for auth flows Support delegated Matrix OIDC via OAuth for signup and login. Add config options in nuxt.config.ts for OIDC settings. Update UI to reflect OIDC availability and show errors. Guide users when homeservers block direct registration. Extend i18n with OIDC messages in English and German. Improve signup error handling for blocked registrations. Add unit tests for OIDC flows and error cases. * Refactor signup and login processes to enhance user experience and error handling - Update README.md to clarify the delegation of new-account creation to Matrix Authentication Services (OAuth/OIDC). - Modify `useAppI18n` to improve translations related to signup errors and user guidance for homeservers blocking direct registration. - Refactor `useMatrixClient` to streamline error handling for transport failures and enhance verification processes. - Introduce new utility functions for managing incoming verification requests from other devices. - Update UI components in `login.vue` and `signup.vue` to reflect changes in the signup flow and improve user feedback. - Enhance unit tests for error handling and verification processes, ensuring robust coverage for new functionalities. * Enhance Matrix OIDC sign-up process with new features - Implemented delegated OIDC sign-up (MSC2965 / MAS) including OpenID discovery, PKCE, dynamic client registration, and token exchange. - Added support for the `/auth/matrix-oidc/callback` endpoint and integrated Matrix JS SDK session management. - Introduced a sign-up entry point for delegated browser OAuth with runtime configuration for `nuxt.public.siteUrl` and `matrixOidcClientId`. - Enhanced internationalization (i18n) for callback and error paths in English and German. - Updated README with notes on HTTPS redirect requirements for matrix.org. - Documented changes in the CHANGELOG to reflect these enhancements.
…ty (#69) * Add Account Verification Panel and Recovery Key Bootstrap Functionality - Introduced a new `AccountVerificationPanel.vue` component for managing device verification processes, including emoji comparison and recovery key input. - Implemented recovery key bootstrap logic in `recoveryKeyBootstrap.ts`, allowing users to restore cross-signing secrets using their recovery keys. - Enhanced internationalization support in `useAppI18n.ts` with new messages related to verification and recovery key processes in both English and German. - Updated the account settings page to integrate the new verification panel, improving user experience during the verification process. - Added unit tests for the recovery key bootstrap functionality to ensure robust error handling and verification logic. * Add optional remote logging functionality and update environment configuration - Introduced a new `.env.example` file to provide examples for optional remote debug logging configuration. - Updated `nuxt.config.ts` to include new settings for remote debug logging, allowing for better diagnostics. - Enhanced `README.md` with instructions on enabling remote logging via environment variables. - Implemented a `logOptionalRemote` function in `optionalRemoteLogger.ts` to handle logging to a remote endpoint. - Integrated remote logging into various components, including `AccountVerificationPanel.vue` and `recoveryKeyBootstrap.ts`, to capture detailed debug information during verification processes. * Refactor optional remote logger to enhance configuration handling - Introduced a new type for public configuration in `optionalRemoteLogger.ts` to streamline the retrieval of remote logging settings. - Updated the `getOptionalRemoteLoggerPublicConfig` function to merge environment variables with Nuxt public configuration, improving flexibility. - Refactored the `logOptionalRemote` function to utilize the new configuration structure, ensuring cleaner code and better maintainability. * Update CHANGELOG to include new features for account verification and remote logging - Added an account verification panel in settings with device verification (SAS) and recovery key bootstrap for cross-signing. - Introduced optional remote debug logging via `NUXT_PUBLIC_DEBUG_LOG_*` environment variables and updated `.env.example` template.
…hat sidebar (#71) - Added collapsible category headers for subspaces in the channel column, allowing rooms to be grouped under `m.space.child` order with a "General" segment for direct space children. - Introduced drag-and-drop reordering for category blocks and rooms, with persistence managed via `m.space.child` and `m.room.power_levels` checks. - Integrated `vue-draggable-plus` for enhanced drag-and-drop capabilities in the space channel sidebar. - Developed helpers and unit tests for space category mapping, state writes, and permission checks related to the new hierarchy features. - Updated internationalization support in `useAppI18n` to include new messages for category expansion and collapse actions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
soon