salopulse 0.5.0 → 0.5.1
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 +10 -0
- data/lib/salopulse/stack_frame_builder.rb +13 -1
- data/lib/salopulse/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6a3be5e90db8f8e98976af2f1aaaf07732f88de00a852096275962a1f8a90077
|
|
4
|
+
data.tar.gz: c7ae1840db9c1b3f66366e9334b7f97896b198c4e7480b62b3565a0c7f0afcf8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cc65caad7ec8c6a44534f6564cdf1b6385370b1f9978792ac7b9c72847367f8e7e8b25d7c383adac10285dccb9826f7388f3681d9c1f71a9950520ed3ca1142f
|
|
7
|
+
data.tar.gz: 9c555b3d28c2a862efac4fe7880dc83bf9de2bb8f4878f34828b81697b6def808d43ec05fef023dc4d44fdea8d722ebcb9ff0cc679e6e4488ea3e924e7f8ba8f
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
4
4
|
|
|
5
|
+
## [0.5.1] - 2026-06-10
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- `StackFrameBuilder` now dedupes consecutive frames that share the same
|
|
9
|
+
`(file, line)` pair, keeping the outer frame. Ruby 3.3+ enhanced
|
|
10
|
+
backtraces emit a separate frame for the raising operator (e.g.
|
|
11
|
+
`'/'`) on the same line as the calling method (e.g. `'divide_by_zero'`);
|
|
12
|
+
the dashboard previously rendered two cards with identical source
|
|
13
|
+
context. The kept frame's method name is the more descriptive caller
|
|
14
|
+
|
|
5
15
|
## [0.5.0] - 2026-06-10
|
|
6
16
|
|
|
7
17
|
### Added
|
|
@@ -19,11 +19,23 @@ module Salopulse
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def call
|
|
22
|
-
@backtrace.first(MAX_FRAMES).filter_map { |line| build_frame(line.to_s) }
|
|
22
|
+
frames = @backtrace.first(MAX_FRAMES).filter_map { |line| build_frame(line.to_s) }
|
|
23
|
+
dedupe_consecutive(frames)
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
private
|
|
26
27
|
|
|
28
|
+
def dedupe_consecutive(frames)
|
|
29
|
+
frames.each_with_object([]) do |frame, acc|
|
|
30
|
+
previous = acc.last
|
|
31
|
+
if previous && previous["abs_path"] == frame["abs_path"] && previous["line"] == frame["line"]
|
|
32
|
+
acc[-1] = frame
|
|
33
|
+
else
|
|
34
|
+
acc << frame
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
27
39
|
def build_frame(raw)
|
|
28
40
|
match = BACKTRACE_LINE.match(raw)
|
|
29
41
|
return nil unless match
|
data/lib/salopulse/version.rb
CHANGED