| … | … | @@ -2,7 +2,8 @@ steps: |
| 2 | 2 | - name: write-version |
| 3 | 3 | run: | |
| 4 | 4 | VERSION=$(git rev-list --count HEAD) |
| 5 | echo "v${VERSION}" > version.txt | |
| 5 | BUILD_TS=$(date -u +%Y%m%d-%H%M) | |
| 6 | echo "v${VERSION}-${BUILD_TS}" > version.txt | |
| 6 | 7 | # Bump package.json version so pear-runtime detects updates |
| 7 | 8 | sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"0.${VERSION}.0\"/" package.json |
| 8 | 9 | - name: export-godot |
| … | … | @@ -34,7 +34,7 @@ gdscript/warnings/unsafe_call_argument=1 |
| 34 | 34 | |
| 35 | 35 | [gui] |
| 36 | 36 | |
| 37 | timers/tooltip_delay_sec=0.3 | |
| 37 | timers/tooltip_delay_sec=0.05 | |
| 38 | 38 | |
| 39 | 39 | [rendering] |
| 40 | 40 |
| … | … | @@ -60,9 +60,20 @@ func _ready() -> void: |
| 60 | 60 | algo_btn.add_item("Default", 0) |
| 61 | 61 | for i: int in ALGO_PRESETS.size(): |
| 62 | 62 | algo_btn.add_item(ALGO_PRESETS[i]["name"], i + 1) |
| 63 | algo_btn.selected = 0 | |
| 64 | 63 | algo_btn.item_selected.connect(_on_algo_selected) |
| 65 | 64 | |
| 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 | |
| 76 | ||
| 66 | 77 | title_label.text = "Graph" |
| 67 | 78 | |
| 68 | 79 | # Initial fetch |
| … | … | @@ -26,6 +26,7 @@ const VIEW_MODES: Array[Dictionary] = [ |
| 26 | 26 | {"label": "Groups", "algo": {}}, |
| 27 | 27 | {"label": "People", "algo": {"name": "people", "features": [{"type": "size", "weight": 1.0}], "threshold": 0.1, "minSize": 2}}, |
| 28 | 28 | {"label": "Topics", "algo": {"name": "topics", "features": [{"type": "topics", "weight": 1.0}], "threshold": 0.3, "minSize": 2}}, |
| 29 | {"label": "Category", "algo": {"name": "category", "features": [{"type": "category", "weight": 1.0}], "threshold": 0.1, "minSize": 2}}, | |
| 29 | 30 | {"label": "Activity", "algo": {"name": "activity", "features": [{"type": "activity", "weight": 1.0}], "threshold": 0.1, "minSize": 2}}, |
| 30 | 31 | ] |
| 31 | 32 |
| … | … | @@ -7,6 +7,7 @@ extends PanelContainer |
| 7 | 7 | |
| 8 | 8 | var _manager_panel: Window = null |
| 9 | 9 | var _app_version: String = "dev" |
| 10 | var _daemon_version: String = "" | |
| 10 | 11 | |
| 11 | 12 | |
| 12 | 13 | func _ready() -> void: |
| … | … | @@ -41,6 +42,12 @@ func _on_daemon_status(status: String) -> void: |
| 41 | 42 | func _on_connected() -> void: |
| 42 | 43 | _set_status("green", "") |
| 43 | 44 | KeetService.identity.get_identity() |
| 45 | # Fetch daemon version from status RPC | |
| 46 | KeetService.client.call_rpc("status", {}, func(result: Variant, _err: Variant) -> void: | |
| 47 | if result is Dictionary: | |
| 48 | _daemon_version = str(result.get("daemonVersion", "")) | |
| 49 | _update_version_display() | |
| 50 | ) | |
| 44 | 51 | |
| 45 | 52 | |
| 46 | 53 | func _on_disconnected() -> void: |
| … | … | @@ -54,7 +61,14 @@ func _on_identity(ident: Dictionary) -> void: |
| 54 | 61 | if display_name.length() > 12: |
| 55 | 62 | display_name = display_name.substr(0, 12) + "..." |
| 56 | 63 | name_label.text = "%s [%s]" % [display_name, _app_version] |
| 57 | name_label.tooltip_text = "godot-keet %s" % _app_version | |
| 64 | _update_version_display() | |
| 65 | ||
| 66 | ||
| 67 | func _update_version_display() -> void: | |
| 68 | var tip: String = "app %s" % _app_version | |
| 69 | if _daemon_version != "": | |
| 70 | tip += " | daemon %s" % _daemon_version | |
| 71 | name_label.tooltip_text = tip | |
| 58 | 72 | |
| 59 | 73 | |
| 60 | 74 | func _set_status(color: String, message: String) -> void: |