howzit 2.1.18 → 2.1.22
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 +4 -4
- data/CHANGELOG.md +81 -0
- data/bin/howzit +2 -2
- data/howzit.gemspec +3 -1
- data/lib/howzit/buildnote.rb +345 -104
- data/lib/howzit/prompt.rb +207 -7
- data/lib/howzit/run_report.rb +51 -0
- data/lib/howzit/stringutils.rb +3 -1
- data/lib/howzit/task.rb +21 -2
- data/lib/howzit/topic.rb +24 -1
- data/lib/howzit/util.rb +5 -1
- data/lib/howzit/version.rb +1 -1
- data/lib/howzit.rb +11 -2
- data/spec/buildnote_spec.rb +161 -3
- data/spec/cli_spec.rb +1 -1
- data/spec/run_report_spec.rb +35 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/topic_spec.rb +5 -2
- metadata +6 -15
- data/.editorconfig +0 -9
- data/.github/FUNDING.yml +0 -2
- data/.gitignore +0 -45
- data/.howzit.taskpaper.bak +0 -27
- data/.irbrc +0 -12
- data/.rspec +0 -2
- data/.rubocop.yml +0 -48
- data/.travis.yml +0 -17
- data/.yardopts +0 -6
- data/lib/.rubocop.yml +0 -1
- data/spec/.rubocop.yml +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4c45e148fc771ca280dbf21202a25f3b6192eb0534f88692103630749de801c9
|
|
4
|
+
data.tar.gz: 2567392e9e6389845be4809aca60ccb347848b2c7575f0c6f4c9232f4a4fe4f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9e22a71fee828ebfcd96e2f1ea5d4f27ad5e6a0401cc6a73f8344313006a160b10db160c6eb71b7f528df8b23233871a6c914c8ccdb48d57a88b60fb25d4e287
|
|
7
|
+
data.tar.gz: 98411cc9c877f08309c26df629c713510514afeb740a85e741700bd8d9f96b373c5b40affe540e371dd93321aeec6c088fd65d6b953550e4b3161829aa7c0a58
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,84 @@
|
|
|
1
|
+
### 2.1.22
|
|
2
|
+
|
|
3
|
+
2025-12-13 06:14
|
|
4
|
+
|
|
5
|
+
#### NEW
|
|
6
|
+
|
|
7
|
+
- Template selection menu when creating new build notes
|
|
8
|
+
- Prompt for required template variables during note creation
|
|
9
|
+
- Gum support as fallback for menus and text input
|
|
10
|
+
|
|
11
|
+
#### IMPROVED
|
|
12
|
+
|
|
13
|
+
- Fuzzy matching for template names when fzf unavailable
|
|
14
|
+
- Text input uses Readline for proper line editing (backspace, ctrl-a/e)
|
|
15
|
+
|
|
16
|
+
### 2.1.21
|
|
17
|
+
|
|
18
|
+
2025-12-13 05:03
|
|
19
|
+
|
|
20
|
+
#### NEW
|
|
21
|
+
|
|
22
|
+
- Prefer exact whole-word topic matches over fuzzy matches
|
|
23
|
+
- Display run summary after executing tasks
|
|
24
|
+
|
|
25
|
+
#### IMPROVED
|
|
26
|
+
|
|
27
|
+
- Topic matching now handles colons/commas in topic titles
|
|
28
|
+
- Smart splitting of multiple topics preserves separators in titles
|
|
29
|
+
- Single match from choose now auto-selects without menu
|
|
30
|
+
- Combined output from multiple topics paginated together
|
|
31
|
+
- Menu prompt shows the search term being matched
|
|
32
|
+
|
|
33
|
+
#### FIXED
|
|
34
|
+
|
|
35
|
+
- String uncolor deleting characters
|
|
36
|
+
- Broken pipe error when quitting pager early
|
|
37
|
+
|
|
38
|
+
### 2.1.20
|
|
39
|
+
|
|
40
|
+
2025-12-13 05:01
|
|
41
|
+
|
|
42
|
+
#### NEW
|
|
43
|
+
|
|
44
|
+
- Prefer exact whole-word topic matches over fuzzy matches
|
|
45
|
+
- Display run summary after executing tasks
|
|
46
|
+
|
|
47
|
+
#### IMPROVED
|
|
48
|
+
|
|
49
|
+
- Topic matching now handles colons/commas in topic titles
|
|
50
|
+
- Smart splitting of multiple topics preserves separators in titles
|
|
51
|
+
- Single match from choose now auto-selects without menu
|
|
52
|
+
- Combined output from multiple topics paginated together
|
|
53
|
+
- Menu prompt shows the search term being matched
|
|
54
|
+
|
|
55
|
+
#### FIXED
|
|
56
|
+
|
|
57
|
+
- String uncolor deleting characters
|
|
58
|
+
- Broken pipe error when quitting pager early
|
|
59
|
+
|
|
60
|
+
### 2.1.19
|
|
61
|
+
|
|
62
|
+
2025-12-13 05:01
|
|
63
|
+
|
|
64
|
+
#### NEW
|
|
65
|
+
|
|
66
|
+
- Prefer exact whole-word topic matches over fuzzy matches
|
|
67
|
+
- Display run summary after executing tasks
|
|
68
|
+
|
|
69
|
+
#### IMPROVED
|
|
70
|
+
|
|
71
|
+
- Topic matching now handles colons/commas in topic titles
|
|
72
|
+
- Smart splitting of multiple topics preserves separators in titles
|
|
73
|
+
- Single match from choose now auto-selects without menu
|
|
74
|
+
- Combined output from multiple topics paginated together
|
|
75
|
+
- Menu prompt shows the search term being matched
|
|
76
|
+
|
|
77
|
+
#### FIXED
|
|
78
|
+
|
|
79
|
+
- String uncolor deleting characters
|
|
80
|
+
- Broken pipe error when quitting pager early
|
|
81
|
+
|
|
1
82
|
### 2.1.18
|
|
2
83
|
|
|
3
84
|
2025-01-01 09:53
|
data/bin/howzit
CHANGED
|
@@ -32,12 +32,12 @@ OptionParser.new do |opts|
|
|
|
32
32
|
opts.on("-f", "--force", "Continue executing after an error") { Howzit.options[:force] = true }
|
|
33
33
|
|
|
34
34
|
opts.on("-m", "--matching TYPE", MATCHING_OPTIONS,
|
|
35
|
-
"Topics matching type", "(#{MATCHING_OPTIONS.join(", ")})") do |c|
|
|
35
|
+
"Topics matching type", "(#{MATCHING_OPTIONS.join(", ").sub(/#{Howzit.options[:matching]}/, "*#{Howzit.options[:matching]}")})") do |c|
|
|
36
36
|
Howzit.options[:matching] = c
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
opts.on("--multiple TYPE", MULTIPLE_OPTIONS,
|
|
40
|
-
"Multiple result handling", "(#{MULTIPLE_OPTIONS.join(", ")}, default choose)") do |c|
|
|
40
|
+
"Multiple result handling", "(#{MULTIPLE_OPTIONS.join(", ").sub(/#{Howzit.options[:multiple_matches]}/, "*#{Howzit.options[:multiple_matches]}")}, default choose)") do |c|
|
|
41
41
|
Howzit.options[:multiple_matches] = c.to_sym
|
|
42
42
|
end
|
|
43
43
|
|
data/howzit.gemspec
CHANGED
|
@@ -16,7 +16,9 @@ Gem::Specification.new do |spec|
|
|
|
16
16
|
spec.homepage = 'https://github.com/ttscoff/howzit'
|
|
17
17
|
spec.license = 'MIT'
|
|
18
18
|
|
|
19
|
-
spec.files = `git ls-files`.split(
|
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |path|
|
|
20
|
+
path.split('/').any? { |segment| segment.start_with?('.') } || path.end_with?('.bak')
|
|
21
|
+
end
|
|
20
22
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
21
23
|
spec.test_files = spec.files.grep(%r{^(features|spec|test)/})
|
|
22
24
|
spec.require_paths = ['lib']
|