feat: group conversations UI#31
Merged
Merged
Conversation
📊 Doc-test reportThe chat UI built against this commit, driven headless to connect and share its address, rendered alongside the commands actually run and their output (updated each run, commit Pages can take a minute to update after the run finishes. |
568deb9 to
f30da76
Compare
775aed0 to
6a19cbc
Compare
6024ca3 to
6928e5d
Compare
39b4c9a to
3d6f1e3
Compare
1470750 to
e1c4e85
Compare
The UI surfaced only 1:1 conversations, but chat_module now exposes GroupV2 groups, so the UI needs to create them, display their roster, and grow them. - ChatBackend gains create_group_conversation / add_group_member and exposes the current conversation's group view state (currentIsGroup, currentDisplayName, memberCount) as replicated backend properties: across the QtRO boundary a model replica carries roles and data() but not the source model's custom Q_INVOKABLE methods or a reliable rowCount(), so that whole-model state is derived on the source side and pushed as properties. refreshMembers reads the roster as [GroupMember] records. - MemberListModel drives the members panel; a member with no confirmed account renders as "unknown_account". - ConversationListModel marks group rows; ChatView shows the members panel and per-message sender labels only for groups; MembersPane hosts the roster and the add-member field. - Pin chat_module to the merged GroupV2 commit on chat-module master (#43): its GroupV2 contract (create_group_conversation, add_group_member, list_group_members, the conversation kind and message sender fields) isn't in a released tag yet, so pin the exact commit and re-pin as chat_module advances.
Exercise the group UI end to end: three headless app instances form a group, grow it member by member, and render the roster, captured as a screenshot. - doctests/chat-ui-group.test.yaml plus doctests/group/ drive three instances on ports distinct from the exchange spec, so both specs can run in one job without their module hosts colliding; nix run .#group launches the screenshot app. - doctests.yml runs the group spec alongside exchange; group-chat.yml is a dedicated Ubuntu gate that runs the three-party driver from the checkout.
Running side-by-side instances was only covered in the linked two-instance-exchange doc. Add it to the README's How to Run directly: the per-instance env vars (CHAT_MODULE_INSTANCE_PATH, CHAT_MODULE_DELIVERY_PORT, and QML_INSPECTOR_PORT when driving an instance via the inspector), a copy-paste two-window example and how to scale to more, with the exchange/group drivers linked for the full flow.
The Dependencies and Related Repositories tables listed the delivery-module runtime pin as v0.1.2; the flake pins v0.1.3. Match them.
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.
feat: group conversations UI
feat: group conversations UI
The UI surfaced only 1:1 conversations, but chat_module now exposes GroupV2
groups, so the UI needs to create them, display their roster, and grow them.
the current conversation's group view state (currentIsGroup,
currentDisplayName, memberCount) as replicated backend properties: across
the QtRO boundary a model replica carries roles and data() but not the
source model's custom Q_INVOKABLE methods or a reliable rowCount(), so that
whole-model state is derived on the source side and pushed as properties.
refreshMembers reads the roster as [GroupMember] records.
account renders as "unknown_account".
and per-message sender labels only for groups; MembersPane hosts the roster
and the add-member field.
(create_group_conversation, add_group_member, list_group_members, the
conversation kind and message sender fields) isn't in a released line yet,
so pin it so the contract can't shift under a
nix flake update.test: add a three-party group-chat doc-test and CI gate
Exercise the group UI end to end: three headless app instances form a group,
grow it member by member, and render the roster, captured as a screenshot.
on ports distinct from the exchange spec, so both specs can run in one job
without their module hosts colliding; nix run .#group launches the
screenshot app.
dedicated Ubuntu gate that runs the three-party driver from the checkout.
Note (not part of the commit history): chat_module is rev-pinned to its
feat/groupv2tip (logos-co/logos-chat-module#43), which itself sits on mergedlibchat main, because the GroupV2 contract has no chat_module release yet; re-thread
to a tag once one is cut. Base is master.