diff --git a/crates/chattyness-user-ui/src/components/scene_viewer.rs b/crates/chattyness-user-ui/src/components/scene_viewer.rs
index 8892d71..aaf4e3e 100644
--- a/crates/chattyness-user-ui/src/components/scene_viewer.rs
+++ b/crates/chattyness-user-ui/src/components/scene_viewer.rs
@@ -590,29 +590,6 @@ pub fn RealmSceneViewer(
- // Debug dots at avatar bounds center
- {move || {
- members_by_key.get().into_iter().map(|(_, (_, m))| {
- let user_id = m.member.user_id;
- let dot_style = Memo::new(move |_| {
- let bounds = avatar_bounds_store.get();
- if let Some(ab) = bounds.get(&user_id) {
- format!(
- "position: absolute; left: {}px; top: {}px; \
- width: 5px; height: 5px; background: red; \
- border-radius: 50%; transform: translate(-50%, -50%); \
- z-index: 99997;",
- ab.content_center_x, ab.content_center_y
- )
- } else {
- "display: none;".to_string()
- }
- });
- view! {
-
- }
- }).collect_view()
- }}
// Active members
{move || {
members_by_key.get().into_iter().map(|(_, (_, m))| {
diff --git a/crates/chattyness-user-ui/src/components/speech_bubble.rs b/crates/chattyness-user-ui/src/components/speech_bubble.rs
index 839fde4..ebe239a 100644
--- a/crates/chattyness-user-ui/src/components/speech_bubble.rs
+++ b/crates/chattyness-user-ui/src/components/speech_bubble.rs
@@ -32,10 +32,9 @@ pub fn SpeechBubble(
#[prop(default = 1.0.into())]
text_em_size: Signal,
) -> impl IntoView {
- let message = bubble.message.clone();
- let content = message.content.clone();
- let emotion = message.emotion.clone();
- let is_whisper = message.is_whisper;
+ let content = bubble.message.content.clone();
+ let emotion = bubble.message.emotion.clone();
+ let is_whisper = bubble.message.is_whisper;
let expires_at = bubble.expires_at;
let (bg_color, border_color, text_color) = emotion_bubble_colors(&emotion);
@@ -149,7 +148,6 @@ pub fn SpeechBubble(
let m_left = measured_left.get();
let m_width = measured_width.get();
let m_top = measured_top.get();
- let position = measured_position.get();
// Before measurement: position at left=0 so bubble can expand to full width
// After measurement: use calculated positions directly (no transforms)
@@ -170,11 +168,6 @@ pub fn SpeechBubble(
50.0
};
- let transform_origin = match position {
- BubblePosition::Above => format!("{}% 100%", tail_offset),
- BubblePosition::Below => format!("{}% 0%", tail_offset),
- };
-
// Start invisible until measured (prevents flash)
let opacity = if measured { 1.0 } else { 0.0 };
@@ -182,8 +175,6 @@ pub fn SpeechBubble(
"position: absolute; \
left: {}px; \
top: {}px; \
- transform: none; \
- transform-origin: {}; \
width: fit-content; \
max-width: {}px; \
opacity: {}; \
@@ -198,7 +189,6 @@ pub fn SpeechBubble(
z-index: 99999;",
final_left,
final_top,
- transform_origin,
max_width,
opacity,
bg_color,