hiiro 0.1.308.pre.4 → 0.1.308.pre.6

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: eec58fcede9b3992330237829b806f76a39481088825fd02fcac6e571635f6fd
4
- data.tar.gz: 591c2f2b89abcf7e05b62fd62b08796e7d979388bbcb438a7548066b3c326fa6
3
+ metadata.gz: c2e93dab3f776838c51b113721effb0ac86a0cbc20dd9a61742004d5a5335a6e
4
+ data.tar.gz: a1ae67e29ac11aec8f3e476dbd708cf7ec3d5b85967d78a1565c3df193af4a1d
5
5
  SHA512:
6
- metadata.gz: a09d91028a2dd3c433724d313f23ed01872f37aebb4455c5831e9c8ee62d41630b45be8e0c80b58044b3b69e15733506c9fd05cb5302fa088a6b4b805982f3bc
7
- data.tar.gz: 6dc66c2ac63376ef8e86064141811a697b56548f4d9d38112270c71adfa5fcb0705c0b162634db21cb29662e95d5f507dd82d02803d46874f3fb3644cd801a47
6
+ metadata.gz: bea26329f94d13d1806fb90603b9c23c7f41dd42eb1e954ba8d6c6a4bd2f8e9ed88e80770314e4b3a6ec0223115f9a82ae633e547e4252ba2b84626ff3dee6dd
7
+ data.tar.gz: 36c1711d34c509e4070aed248c030601a87801a02e8a15aa2ad806ed475d1e2f8792b30903c35ea3a513ed479db5ec903ca95a1bf099285840ae5453bc64fa15
data/CHANGELOG.md CHANGED
@@ -1,6 +1,19 @@
1
1
  ```markdown
2
2
  # Changelog
3
3
 
4
+ ## [0.1.308.pre.6] - 2026-03-31
5
+
6
+ ### Fixed
7
+ - Prevent duplicate pinned_prs during import with `insert_conflict` and per-row rescue
8
+
9
+ ## [0.1.308.pre.5] - 2026-03-31
10
+
11
+ ### Added
12
+ - `h-claude vim` subcommand to open all matched files in `$EDITOR`
13
+
14
+ ### Fixed
15
+ - `h branch ls` now sorts oldest-first so most recent branches appear at bottom
16
+
4
17
  ## [0.1.308.pre.4] - 2026-03-31
5
18
 
6
19
  ### Fixed
data/bin/h-claude CHANGED
@@ -63,6 +63,22 @@ def glob_path(glob, bname=nil, opts:)
63
63
  end
64
64
  end
65
65
 
66
+ # Like glob_path but returns an array of full Pathname objects instead of printing.
67
+ # skill: true → resolve matched directories to <dir>/SKILL.md
68
+ def collect_files(glob, bname=nil, opts:, skill: false)
69
+ filters = opts.args
70
+ filters = ['.*'] if filters.empty?
71
+ re_s = filters.join(?|)
72
+ re = Regexp.new(re_s)
73
+
74
+ claude_paths.flat_map { |path| path.glob(glob) }.filter_map do |f|
75
+ base_f = f.basename(bname.to_s)
76
+ next unless base_f.to_s.match?(re)
77
+ target = skill ? f / 'SKILL.md' : f
78
+ target if target.exist?
79
+ end
80
+ end
81
+
66
82
  def permission_flag(opts)
67
83
  opts.danger ? '--dangerously-skip-permissions' : '--allow-dangerously-skip-permissions'
68
84
  end
@@ -173,6 +189,20 @@ add_subcmd(:env) { |*args|
173
189
  glob_path('skills/*/', opts: opts)
174
190
  }
175
191
 
192
+ add_subcmd(:vim) { |*args|
193
+ opts = tool_opts.parse(args)
194
+ files = collect_files('agents/*.md', '.md', opts: opts) +
195
+ collect_files('commands/*.md', '.md', opts: opts) +
196
+ collect_files('skills/*/', opts: opts, skill: true)
197
+
198
+ if files.empty?
199
+ puts "No matching files found."
200
+ next
201
+ end
202
+
203
+ edit_files(*files.map(&:to_s))
204
+ }
205
+
176
206
  add_subcmd(:new) { |*args|
177
207
  tmpfile = Tempfile.new(['claude-new-', '.md'])
178
208
  tmpfile.close
data/lib/hiiro/branch.rb CHANGED
@@ -24,6 +24,6 @@ class Hiiro
24
24
  def self.for_task(task_name) = where(task: task_name).all
25
25
  def self.for_worktree(wt) = where(worktree: wt).all
26
26
  def self.find_by_name(n) = where(name: n).first
27
- def self.ordered = order(Sequel.desc(:created_at))
27
+ def self.ordered = order(Sequel.asc(:created_at))
28
28
  end
29
29
  end
data/lib/hiiro/db.rb CHANGED
@@ -264,12 +264,16 @@ class Hiiro
264
264
  record['pinned'] = true
265
265
  next if record.empty?
266
266
 
267
- connection[:prs].insert(record)
267
+ begin
268
+ connection[:prs].insert_conflict(target: :number).insert(record)
268
269
 
269
- # Populate check_runs table from check_runs_json if present
270
- if (runs_json = record['check_runs_json'])
271
- runs = ::JSON.parse(runs_json) rescue nil
272
- Hiiro::CheckRun.upsert_for_pr(record['number'], runs) if runs && record['number']
270
+ # Populate check_runs table from check_runs_json if present
271
+ if (runs_json = record['check_runs_json'])
272
+ runs = ::JSON.parse(runs_json) rescue nil
273
+ Hiiro::CheckRun.upsert_for_pr(record['number'], runs) if runs && record['number']
274
+ end
275
+ rescue => e
276
+ warn "Hiiro::DB: skipping pinned_pr #{record['number']} (#{e.class}: #{e.message.lines.first&.strip})"
273
277
  end
274
278
  end
275
279
  bak(path)
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.308.pre.4"
2
+ VERSION = "0.1.308.pre.6"
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.308.pre.4
4
+ version: 0.1.308.pre.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota