hiiro 0.1.28 → 0.1.30

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: 98bcbf770e1e25eeb2190918e4bf20e80d84732a77758eac57bcebf247db6a2c
4
- data.tar.gz: 8e804419accbb33e83d241bb200e045889c872d92a99f465683e8d2e8c0868df
3
+ metadata.gz: 5ed8afa7ccba684e9508ee61648511cd08bc3ae84d74b43966a1b53d421f6b05
4
+ data.tar.gz: 3fc69daaad45903fda5a0123cecc0170698e35fdf0f130a78f8f8b05d17876fe
5
5
  SHA512:
6
- metadata.gz: afbf8cb894b5815b2c3a8620fff092dcb91d4bf02b773e3350aa913ffc36878e5a28688f6059686525887ea616b211995d0f52c5cc7835573ee1fc202802da0b
7
- data.tar.gz: 15b90ba14b1b0fd4485bd0bce87c5218c2ea0d7ce94beccccabd6587b56d9d22721add771ba66458bc09f444aa2767ecac94e8b3e2658413893b54e53a3e1b59
6
+ metadata.gz: a1dded26ad1d42ca16d2cf50cb2d2385eb1d4bcf02215e47b655a6eb36a2a1e37bb91f80ca378691c85ca1226513806ab6baa4c9dd26dc140e1208228c31de8c
7
+ data.tar.gz: 1b1510771c5fae9c2bf7210a65d100163d1446e3a2fef43d7af524cb32440783ca2b7234d00563a66fc62510bbf3a92dbe2c6891e64e91747d5d5aec72910b6b
data/bin/h-task CHANGED
@@ -349,11 +349,6 @@ class TaskManager
349
349
  tree = tree_for_task(task_name)
350
350
  task_name = task_for_tree(tree)
351
351
 
352
- if RESERVED_WORKTREES.key?(tree)
353
- puts "Cannot stop reserved task '#{task_name}'"
354
- return false
355
- end
356
-
357
352
  unassign_task_from_tree(tree)
358
353
  puts "Stopped task '#{task_name}' (worktree '#{tree}' now available for reuse)"
359
354
  true
@@ -470,12 +465,9 @@ class TaskManager
470
465
  worktree_info[tree_name] || File.join(Dir.home, 'work', tree_name)
471
466
  end
472
467
 
473
- # Worktrees with permanent task assignments (worktree => task)
474
- RESERVED_WORKTREES = { 'carrot' => 'master' }.freeze
475
-
476
468
  # Find an available tree (one without an active task)
477
469
  def find_available_tree
478
- trees.find { |tree| task_for_tree(tree).nil? && !RESERVED_WORKTREES.key?(tree) }
470
+ trees.find { |tree| task_for_tree(tree).nil? }
479
471
  end
480
472
 
481
473
  # Get the task currently assigned to a tree
@@ -505,7 +497,6 @@ class TaskManager
505
497
 
506
498
  # Unassign task from tree
507
499
  def unassign_task_from_tree(tree_name)
508
- return if RESERVED_WORKTREES.key?(tree_name)
509
500
  data = assignments.dup
510
501
  data.delete(tree_name)
511
502
  save_assignments(data)
@@ -522,8 +513,7 @@ class TaskManager
522
513
  else
523
514
  {}
524
515
  end
525
- # Always include reserved worktree assignments
526
- RESERVED_WORKTREES.merge(data)
516
+ data
527
517
  end
528
518
 
529
519
  def save_assignments(data)
@@ -711,8 +701,8 @@ class TaskManager
711
701
 
712
702
  # Migrate flat worktrees (~/work/task) to nested (~/work/task/main)
713
703
  def migrate_worktrees
714
- # Find flat worktrees that need migration (not already nested, not reserved)
715
- flat_trees = trees.reject { |name| name.include?('/') || RESERVED_WORKTREES.key?(name) }
704
+ # Find flat worktrees that need migration (not already nested)
705
+ flat_trees = trees.reject { |name| name.include?('/') }
716
706
 
717
707
  if flat_trees.empty?
718
708
  puts "No flat worktrees to migrate."
@@ -761,7 +751,7 @@ class TaskManager
761
751
  data = load_assignments
762
752
  data.delete(name)
763
753
  data[new_tree_name] = task
764
- save_assignments(RESERVED_WORKTREES.merge(data))
754
+ save_assignments(data)
765
755
  end
766
756
 
767
757
  # Step 4: Update task metadata
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.28"
2
+ VERSION = "0.1.30"
3
3
  end
data/plugins/task.rb CHANGED
@@ -143,16 +143,12 @@ module Task
143
143
  return true
144
144
  end
145
145
 
146
- # If a specific tree was requested, verify it exists and isn't reserved
146
+ # If a specific tree was requested, verify it exists
147
147
  if tree
148
148
  if !trees.include?(tree)
149
149
  puts "ERROR: Worktree '#{tree}' not found"
150
150
  return false
151
151
  end
152
- if RESERVED_WORKTREES.key?(tree)
153
- puts "ERROR: Worktree '#{tree}' is reserved and cannot be used for tasks"
154
- return false
155
- end
156
152
  end
157
153
 
158
154
  # Find an available worktree to reuse, or create a new one
@@ -367,11 +363,6 @@ module Task
367
363
  tree = tree_for_task(task_name)
368
364
  task_name = task_for_tree(tree)
369
365
 
370
- if RESERVED_WORKTREES.key?(tree)
371
- puts "Cannot stop reserved task '#{task_name}'"
372
- return false
373
- end
374
-
375
366
  unassign_task_from_tree(tree)
376
367
  puts "Stopped task '#{task_name}' (worktree '#{tree}' now available for reuse)"
377
368
  true
@@ -440,6 +431,10 @@ module Task
440
431
  end
441
432
 
442
433
  parent_task = current[:task]
434
+ # Handle if we're in a subtask - get the parent
435
+ if parent_task.include?('/')
436
+ parent_task = parent_task.split('/').first
437
+ end
443
438
  subtasks = subtasks_for_task(parent_task)
444
439
 
445
440
  if subtasks.empty?
@@ -472,13 +467,16 @@ module Task
472
467
 
473
468
  parent_task = current[:task]
474
469
 
475
- # Avoid nesting worktrees: if parent_task is itself a worktree,
476
- # use parent_task_subtasks/ as the directory instead of parent_task/
477
- parent_dir = if worktree_info.key?(parent_task)
478
- "#{parent_task}_subtasks"
479
- else
480
- parent_task
470
+ if parent_task.include?('/')
471
+ parent_task = parent_task.split('/').first
481
472
  end
473
+
474
+ parent_dir =
475
+ if worktree_info.key?(parent_task)
476
+ "#{parent_task}_subtasks"
477
+ else
478
+ parent_task
479
+ end
482
480
  full_subtask_name = "#{parent_dir}/#{subtask_name}"
483
481
 
484
482
  # Check if subtask already exists
@@ -826,12 +824,9 @@ module Task
826
824
  worktree_info[tree_name] || File.join(Dir.home, 'work', tree_name)
827
825
  end
828
826
 
829
- # Worktrees with permanent task assignments (worktree => task)
830
- RESERVED_WORKTREES = { 'carrot' => 'master' }.freeze
831
-
832
827
  # Find an available tree (one without an active task)
833
828
  def find_available_tree
834
- trees.find { |tree| task_for_tree(tree).nil? && !RESERVED_WORKTREES.key?(tree) }
829
+ trees.find { |tree| task_for_tree(tree).nil? }
835
830
  end
836
831
 
837
832
  # Get the task currently assigned to a tree
@@ -861,7 +856,6 @@ module Task
861
856
 
862
857
  # Unassign task from tree
863
858
  def unassign_task_from_tree(tree_name)
864
- return if RESERVED_WORKTREES.key?(tree_name)
865
859
  data = assignments.dup
866
860
  data.delete(tree_name)
867
861
  save_assignments(data)
@@ -878,8 +872,7 @@ module Task
878
872
  else
879
873
  {}
880
874
  end
881
- # Always include reserved worktree assignments
882
- RESERVED_WORKTREES.merge(data)
875
+ data
883
876
  end
884
877
 
885
878
  def save_assignments(data)
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.28
4
+ version: 0.1.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota