Skip to content

1.0#54

Open
mjkatgithub wants to merge 16 commits intomasterfrom
develop
Open

1.0#54
mjkatgithub wants to merge 16 commits intomasterfrom
develop

Conversation

@mjkatgithub
Copy link
Owner

soon

mjkatgithub and others added 16 commits February 14, 2026 03:15
* 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant