hiiro 0.1.191 → 0.1.192

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac50aec615336d09ff5504ca4886e9a108f17bab97100d223161b7ab397f9ab3
4
- data.tar.gz: 2da2852578def9705d32bee65e583d8a453890c1a4f7028a0b4bdf44fa293d03
3
+ metadata.gz: 4e9c1c614a89e2944fca6de6cd01965528c0ae40e9321c6bc1bb787a35d4d7dd
4
+ data.tar.gz: d1e0979b29abf886bae0da32950fa606defa9deac919f8d6892df83396593402
5
5
  SHA512:
6
- metadata.gz: 1ed87e3d9ed98d26a16b374f2974ced3fc64bfdca7a710774b300c83dd3460071ba6557ab4cc9a29fd69557c2ad6cc397c2d59190b70ddf654e9feb64da6512f
7
- data.tar.gz: b5d7a455677bed7851eaf14e73b09fb2d9c2e2df85211ee42a1226b732a66a6c682f3fabca191456168e84ce1d82e9e80ee1aff5ba60b81c083d4dc6cc4a993b
6
+ metadata.gz: 198254182cd9e1439126ee16ad2faaba987b15415ad7c727a72a54f6238621ecdbb313e368f54cc044f06078e3baad191f92dd2ef5aaa19e003fafbe63699982
7
+ data.tar.gz: a13b441f071edc502cd5c4156aaaa62f3620f2b4bc660dfa2e3f28662e59180800058552d89fb9d84c1fd3271f6b1d9c2b5f8b3dd4ebf4ae570b97b06ebbfc6f
data/lib/hiiro/tasks.rb CHANGED
@@ -185,17 +185,21 @@ class Hiiro
185
185
  puts "#{label}:"
186
186
  puts
187
187
 
188
+ # Build a session→tty map once so we can show which terminal tab each session
189
+ # is attached in (e.g. "@s000" for Ghostty tab using ttys000).
190
+ client_map = TmuxSession.client_map
191
+
188
192
  # Collect rows as {prefix, name, tree, branch, session} so we can
189
193
  # compute max column widths before rendering.
190
194
  rows = []
191
195
  items.each do |task|
192
196
  marker = (current && current.name == task.name) ? "*" : " "
193
- rows << { prefix: "#{marker} ", **task.display_data(scope: scope, environment: environment) }
197
+ rows << { prefix: "#{marker} ", **task.display_data(scope: scope, environment: environment, client_map: client_map) }
194
198
 
195
199
  if scope == :task
196
200
  subtasks(task).each do |st|
197
201
  sub_marker = (current && current.name == st.name) ? "*" : " "
198
- rows << { prefix: "#{sub_marker} - ", **st.display_data(scope: :subtask, environment: environment) }
202
+ rows << { prefix: "#{sub_marker} - ", **st.display_data(scope: :subtask, environment: environment, client_map: client_map) }
199
203
  end
200
204
  end
201
205
  end
@@ -233,7 +237,9 @@ class Hiiro
233
237
  puts
234
238
  extra_name_col = [extra_sessions.map { |s| s.name.length }.max, name_col].max
235
239
  extra_sessions.sort_by(&:name).each do |session|
236
- puts format(" %-#{extra_name_col}s (tmux session)", session.name)
240
+ tty = client_map[session.name]
241
+ suffix = tty ? " @#{tty.sub('ttys', 's')}" : ""
242
+ puts format(" %-#{extra_name_col}s (tmux session%s)", session.name, suffix)
237
243
  end
238
244
  end
239
245
  end
@@ -885,6 +891,16 @@ class Hiiro
885
891
  output.lines(chomp: true).map { |name| new(name) }
886
892
  end
887
893
 
894
+ # Returns { session_name => "ttysXXX" } for sessions with attached clients.
895
+ # The tty identifies which terminal tab (e.g. Ghostty tab) the client is in.
896
+ def self.client_map
897
+ output = `tmux list-clients -F '\#{client_tty}|\#{session_name}' 2>/dev/null`
898
+ output.lines(chomp: true).each_with_object({}) do |line, map|
899
+ tty, session = line.split('|', 2)
900
+ map[session] ||= tty.delete_prefix('/dev/')
901
+ end
902
+ end
903
+
888
904
  def initialize(name)
889
905
  @name = name
890
906
  end
@@ -989,15 +1005,18 @@ class Hiiro
989
1005
  h
990
1006
  end
991
1007
 
992
- def display_data(scope: :task, environment:)
1008
+ def display_data(scope: :task, environment:, client_map: {})
993
1009
  display_name = (scope == :subtask) ? short_name : name
994
1010
  tree = environment.find_tree(tree_name)
995
1011
  branch = tree&.branch || (tree&.detached? ? '(detached)' : '(none)')
1012
+ sname = session_name || '(none)'
1013
+ tty = client_map[sname]
1014
+ session_str = tty ? "#{sname} @#{tty.sub('ttys', 's')}" : sname
996
1015
  {
997
1016
  name: display_name,
998
1017
  tree: tree_name || '(none)',
999
1018
  branch: "[#{branch}]",
1000
- session: "(#{session_name || '(none)'})"
1019
+ session: "(#{session_str})"
1001
1020
  }
1002
1021
  end
1003
1022
  end
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.191"
2
+ VERSION = "0.1.192"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiiro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.191
4
+ version: 0.1.192
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota