diff --git a/public/index.html b/public/index.html
index 5a1d291fb..e8a4e66c8 100644
--- a/public/index.html
+++ b/public/index.html
@@ -2146,9 +2146,10 @@
+
-
-
+
+
diff --git a/public/script.js b/public/script.js
index 9255ba5fe..dd8aaa5ed 100644
--- a/public/script.js
+++ b/public/script.js
@@ -1528,7 +1528,7 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject,
}
if (selected_group && !is_group_generating) {
- generateGroupWrapper(false, type = type);
+ generateGroupWrapper(false, type);
return;
}
diff --git a/public/scripts/group-chats.js b/public/scripts/group-chats.js
index bac5a58e1..562f2b2e3 100644
--- a/public/scripts/group-chats.js
+++ b/public/scripts/group-chats.js
@@ -375,7 +375,7 @@ function getGroupAvatar(group) {
}
-async function generateGroupWrapper(by_auto_mode, type = null) {
+async function generateGroupWrapper(by_auto_mode, type = null, force_chid = null) {
if (online_status === "no_connection") {
is_group_generating = false;
setSendButtonState(false);
@@ -437,7 +437,10 @@ async function generateGroupWrapper(by_auto_mode, type = null) {
const activationStrategy = Number(group.activation_strategy ?? group_activation_strategy.NATURAL);
let activatedMembers = [];
- if (type === "swipe") {
+ if (typeof force_chid == 'number') {
+ activatedMembers = [force_chid];
+ }
+ else if (type === "swipe") {
activatedMembers = activateSwipe(group.members);
if (activatedMembers.length === 0) {
@@ -854,6 +857,10 @@ function select_group_chats(groupId, skipAnimation) {
template.attr("chid", characters.indexOf(character));
template.addClass(character.fav == 'true' ? 'is_fav' : '');
+ if (!group) {
+ template.find('[data-action="speak"]').hide();
+ }
+
if (
group &&
Array.isArray(group.members) &&
@@ -931,22 +938,29 @@ function select_group_chats(groupId, skipAnimation) {
const action = $(this).data('action');
const member = $(this).closest('.group_member');
- if (action == 'remove') {
+ if (action === 'remove') {
await modifyGroupMember(groupId, member, true);
}
- if (action == 'add') {
+ if (action === 'add') {
await modifyGroupMember(groupId, member, false);
}
- if (action == 'up' || action == 'down') {
+ if (action === 'up' || action === 'down') {
await reorderGroupMember(groupId, member, action);
}
- if (action == 'view') {
+ if (action === 'view') {
openCharacterDefinition(member);
}
+ if (action === 'speak') {
+ const chid = Number(member.attr('chid'));
+ if (Number.isInteger(chid)) {
+ generateGroupWrapper(false, null, chid);
+ }
+ }
+
sortCharactersList("#rm_group_add_members .group_member");
});
}
@@ -1225,7 +1239,7 @@ export async function saveGroupBookmarkChat(groupId, name, metadata) {
});
}
-$(document).ready(() => {
+jQuery(() => {
$(document).on("click", ".group_select", selectGroup);
$("#rm_group_filter").on("input", filterGroupMembers);
$("#group_fav_filter").on("click", toggleFilterByFavorites);
diff --git a/public/style.css b/public/style.css
index 9744a2037..26a1acb8f 100644
--- a/public/style.css
+++ b/public/style.css
@@ -2781,18 +2781,24 @@ body .ui-widget-content li:hover {
gap: 5px;
}
-/* Rules for icon display */
-#rm_group_members .group_member[order="start"] .fa-chevron-down,
-#rm_group_members .group_member[order="end"] .fa-chevron-up,
-#rm_group_add_members .right_menu_button:not(.fa-plus, .fa-id-badge),
-#rm_group_members .fa-plus {
- display: none;
+.group_member_icon .flex-container {
+ gap: 0px;
}
#rm_group_members .right_menu_button,
#rm_group_add_members .right_menu_button {
padding: 0px;
height: 20px;
+ display: flex;
+ align-items: center;
+}
+
+/* Rules for icon display */
+#rm_group_members .group_member[order="start"] .fa-chevron-down,
+#rm_group_members .group_member[order="end"] .fa-chevron-up,
+#rm_group_add_members .right_menu_button:not(.fa-plus, .fa-id-badge),
+#rm_group_members .fa-plus {
+ display: none;
}
.group_select {