OverviewFilesCommitsIssuesDocsReleasesPeers

godot-keet commits / 0ca3727

Fix group bar view isolation, audit graph presets, DM separator
- Registry groups only shown in Groups mode (bug: leaked into all views) - Graph presets: all mindmap layout, deduplicated (12→8 presets) - DM/rooms visual separator (HSeparator instead of spacer) - Category restored in group bar Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0ca3727cae5143d8b0e937422e2206a4a7449e00
by plankatron <fleeky@gmail.com> · 2026-02-23T14:43:36.000Z

Changed files (3) +41 -52

scripts/graph_panel.gd +13 -26
……@@ -16,21 +16,16 @@ extends PanelContainer
1616@onready var status_label: Label = %StatusLabel
1717
1818const ALGO_PRESETS: Array[Dictionary] = [
19 # Simple slices
20 {"name": "category", "features": [{"type": "category", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
21 {"name": "creator", "features": [{"type": "creator", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
22 {"name": "activity", "features": [{"type": "activity", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
23 {"name": "size", "features": [{"type": "size", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
24 {"name": "topics", "features": [{"type": "topics", "weight": 1.0}], "threshold": 0.3, "minSize": 2},
25 {"name": "members", "features": [{"type": "members", "weight": 1.0}], "threshold": 0.5, "minSize": 2},
26 # Stacked combos (hierarchical: primary → sub-split by secondary)
27 {"name": "creator+category", "features": [{"type": "creator", "weight": 1.0}, {"type": "category", "weight": 0.8}], "threshold": 0.3, "minSize": 2},
28 {"name": "activity+topics", "features": [{"type": "activity", "weight": 1.0}, {"type": "topics", "weight": 0.7}], "threshold": 0.3, "minSize": 2},
29 {"name": "category+activity", "features": [{"type": "category", "weight": 1.0}, {"type": "activity", "weight": 0.6}], "threshold": 0.2, "minSize": 2},
30 # Mind map variants (radial tree layout)
31 {"name": "mindmap:category", "layout": "mindmap", "features": [{"type": "category", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
32 {"name": "mindmap:topics", "layout": "mindmap", "features": [{"type": "topics", "weight": 1.0}], "threshold": 0.3, "minSize": 2},
33 {"name": "mindmap:activity", "layout": "mindmap", "features": [{"type": "activity", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
19 # All mindmap layout — single views
20 {"name": "category", "layout": "mindmap", "features": [{"type": "category", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
21 {"name": "topics", "layout": "mindmap", "features": [{"type": "topics", "weight": 1.0}], "threshold": 0.3, "minSize": 2},
22 {"name": "activity", "layout": "mindmap", "features": [{"type": "activity", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
23 {"name": "people", "layout": "mindmap", "features": [{"type": "size", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
24 {"name": "creator", "layout": "mindmap", "features": [{"type": "creator", "weight": 1.0}], "threshold": 0.1, "minSize": 2},
25 {"name": "members", "layout": "mindmap", "features": [{"type": "members", "weight": 1.0}], "threshold": 0.5, "minSize": 2},
26 # Combined views
27 {"name": "activity+topics", "layout": "mindmap", "features": [{"type": "activity", "weight": 1.0}, {"type": "topics", "weight": 0.7}], "threshold": 0.3, "minSize": 2},
28 {"name": "category+activity", "layout": "mindmap", "features": [{"type": "category", "weight": 1.0}, {"type": "activity", "weight": 0.6}], "threshold": 0.2, "minSize": 2},
3429]
3530
3631var _clusters: Array = []
……@@ -62,17 +57,9 @@ func _ready() -> void:
6257 algo_btn.add_item(ALGO_PRESETS[i]["name"], i + 1)
6358 algo_btn.item_selected.connect(_on_algo_selected)
6459
65 # Default to mindmap:category (more readable than force-directed)
66 var mindmap_idx: int = -1
67 for i: int in ALGO_PRESETS.size():
68 if ALGO_PRESETS[i]["name"] == "mindmap:category":
69 mindmap_idx = i
70 break
71 if mindmap_idx >= 0:
72 algo_btn.selected = mindmap_idx + 1
73 _selected_algo = ALGO_PRESETS[mindmap_idx]
74 else:
75 algo_btn.selected = 0
60 # Default to category (first preset, all are mindmap layout now)
61 algo_btn.selected = 1
62 _selected_algo = ALGO_PRESETS[0]
7663
7764 title_label.text = "Graph"
7865
scripts/group_bar.gd +24 -22
……@@ -261,29 +261,31 @@ func _rebuild_icons() -> void:
261261 # Update home button selected state
262262 _style_home_button()
263263
264 for reg: Variant in _registries:
265 if not reg is Dictionary:
266 continue
267 var room_id: String = reg.get("roomId", "")
268 if room_id == "":
269 continue
264 # Registry groups — only shown in Groups mode (view 0)
265 if _current_view == 0:
266 for reg: Variant in _registries:
267 if not reg is Dictionary:
268 continue
269 var room_id: String = reg.get("roomId", "")
270 if room_id == "":
271 continue
272
273 var config: Dictionary = _registry_meta.get(room_id, {})
274 var label: String = str(config.get("title", ""))
275 if label == "":
276 label = reg.get("title", "")
277 if label == "":
278 label = room_id.left(8)
279
280 var desc: String = str(config.get("description", ""))
281 var avatar_dict: Variant = config.get("avatar", null)
282 var avatar_b64: String = ""
283 if avatar_dict is Dictionary:
284 avatar_b64 = str(avatar_dict.get("small", ""))
285 var is_selected: bool = room_id == _active_group
270286
271 var config: Dictionary = _registry_meta.get(room_id, {})
272 var label: String = str(config.get("title", ""))
273 if label == "":
274 label = reg.get("title", "")
275 if label == "":
276 label = room_id.left(8)
277
278 var desc: String = str(config.get("description", ""))
279 var avatar_dict: Variant = config.get("avatar", null)
280 var avatar_b64: String = ""
281 if avatar_dict is Dictionary:
282 avatar_b64 = str(avatar_dict.get("small", ""))
283 var is_selected: bool = room_id == _active_group
284
285 var icon := _create_group_icon(room_id, label, desc, avatar_b64, is_selected)
286 group_icons.add_child(icon)
287 var icon := _create_group_icon(room_id, label, desc, avatar_b64, is_selected)
288 group_icons.add_child(icon)
287289
288290 # Cluster icons — only shown when a clustering algo is selected
289291 if _current_view > 0:
scripts/room_list_panel.gd +4 -4
……@@ -509,10 +509,10 @@ func _refresh_my_rooms() -> void:
509509 var btn := _create_dm_button(dm_rid, dm_title)
510510 my_rooms_list.add_child(btn)
511511
512 # Spacer between sections
513 var spacer := Control.new()
514 spacer.custom_minimum_size = Vector2(0, 8)
515 my_rooms_list.add_child(spacer)
512 # Line separator between DMs and rooms
513 var sep := HSeparator.new()
514 sep.add_theme_constant_override("separation", 8)
515 my_rooms_list.add_child(sep)
516516
517517 # --- Rooms section ---
518518 var rooms_header := Label.new()