logster 2.6.2 → 2.9.0

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -1
  3. data/.travis.yml +0 -1
  4. data/CHANGELOG.md +23 -0
  5. data/README.md +14 -2
  6. data/assets/javascript/client-app.js +199 -164
  7. data/assets/javascript/vendor.js +3535 -4774
  8. data/assets/stylesheets/client-app.css +1 -1
  9. data/assets/stylesheets/vendor.css +1 -4
  10. data/build_client_app.sh +1 -1
  11. data/client-app/.eslintignore +0 -2
  12. data/client-app/.gitignore +0 -2
  13. data/client-app/app/components/message-info.js +11 -4
  14. data/client-app/app/controllers/index.js +5 -0
  15. data/client-app/app/lib/utilities.js +3 -1
  16. data/client-app/app/models/group.js +5 -1
  17. data/client-app/app/models/message.js +26 -5
  18. data/client-app/app/styles/app.css +20 -13
  19. data/client-app/app/templates/components/actions-menu.hbs +3 -3
  20. data/client-app/app/templates/components/back-trace.hbs +1 -1
  21. data/client-app/app/templates/components/message-info.hbs +1 -1
  22. data/client-app/app/templates/components/message-row.hbs +2 -2
  23. data/client-app/app/templates/components/page-nav.hbs +4 -4
  24. data/client-app/app/templates/components/patterns-list.hbs +4 -4
  25. data/client-app/app/templates/index.hbs +5 -5
  26. data/client-app/config/icons.js +26 -0
  27. data/client-app/package-lock.json +2160 -1933
  28. data/client-app/package.json +9 -8
  29. data/client-app/tests/integration/components/back-trace-test.js +1 -1
  30. data/client-app/tests/integration/components/env-tab-test.js +2 -2
  31. data/lib/logster/base_store.rb +8 -1
  32. data/lib/logster/configuration.rb +3 -1
  33. data/lib/logster/message.rb +2 -18
  34. data/lib/logster/middleware/reporter.rb +8 -1
  35. data/lib/logster/middleware/viewer.rb +8 -8
  36. data/lib/logster/redis_store.rb +22 -6
  37. data/lib/logster/version.rb +1 -1
  38. data/logster.gemspec +4 -5
  39. data/test/logster/middleware/test_reporter.rb +23 -0
  40. data/test/logster/test_base_store.rb +26 -0
  41. data/test/logster/test_group.rb +1 -1
  42. data/test/logster/test_message.rb +1 -7
  43. metadata +10 -29
  44. data/assets/fonts/FontAwesome.otf +0 -0
  45. data/assets/fonts/fontawesome-webfont.eot +0 -0
  46. data/assets/fonts/fontawesome-webfont.svg +0 -640
  47. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  48. data/assets/fonts/fontawesome-webfont.woff +0 -0
  49. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
@@ -19,30 +19,31 @@
19
19
  },
20
20
  "devDependencies": {
21
21
  "@ember/optional-features": "^1.1.0",
22
+ "@fortawesome/ember-fontawesome": "^0.2.1",
23
+ "@fortawesome/free-brands-svg-icons": "^5.13.0",
24
+ "@fortawesome/free-regular-svg-icons": "^5.13.0",
25
+ "@fortawesome/free-solid-svg-icons": "^5.13.0",
22
26
  "@glimmer/component": "^1.0.0",
23
- "babel-eslint": "^10.0.3",
27
+ "babel-eslint": "^10.1.0",
24
28
  "broccoli-asset-rev": "^3.0.0",
25
29
  "ember-auto-import": "^1.5.3",
26
30
  "ember-cli": "^3.15.0",
27
31
  "ember-cli-app-version": "^3.2.0",
28
- "ember-cli-babel": "^7.13.0",
32
+ "ember-cli-babel": "^7.19.0",
29
33
  "ember-cli-dependency-checker": "^3.2.0",
30
34
  "ember-cli-eslint": "^5.1.0",
31
- "ember-cli-htmlbars": "^4.2.0",
35
+ "ember-cli-htmlbars": "^4.3.1",
32
36
  "ember-cli-inject-live-reload": "^2.0.1",
33
37
  "ember-cli-sri": "^2.1.1",
34
- "ember-cli-template-lint": "^1.0.0-beta.3",
38
+ "ember-cli-template-lint": "^1.0.0",
35
39
  "ember-cli-uglify": "^3.0.0",
36
- "ember-data": "~3.15.0",
37
40
  "ember-export-application-global": "^2.0.1",
38
- "ember-fetch": "^7.0.0",
39
- "ember-font-awesome": "^4.0.0-rc.4",
40
41
  "ember-load-initializers": "^2.1.1",
41
42
  "ember-maybe-import-regenerator": "^0.1.6",
42
43
  "ember-qunit": "^4.6.0",
43
44
  "ember-resolver": "^7.0.0",
44
45
  "ember-source": "^3.15.0",
45
- "eslint-plugin-ember": "^7.7.1",
46
+ "eslint-plugin-ember": "^7.13.0",
46
47
  "eslint-plugin-node": "^10.0.0",
47
48
  "loader.js": "^4.7.0",
48
49
  "prettier": "^1.19.1",
@@ -46,7 +46,7 @@ activerecord-6.0.1/lib/active_record/relation/finder_methods.rb:317:in \`exists?
46
46
 
47
47
  let gemLine = find("div.backtrace-line");
48
48
  assert.equal(
49
- gemLine.textContent,
49
+ gemLine.textContent.trim(),
50
50
  "activerecord-6.0.1/lib/active_record/relation/finder_methods.rb:317:in `exists?'",
51
51
  "gem lines are truncated"
52
52
  );
@@ -148,7 +148,7 @@ module("Integration | Component | env-tab", function(hooks) {
148
148
 
149
149
  assert.equal(
150
150
  defaultExpanded.children[1].textContent.trim(),
151
- "[vvv1, vvv2]",
151
+ "vvv1, [vvv2]",
152
152
  "list is expanded by default when its length is 3 or less"
153
153
  );
154
154
 
@@ -165,7 +165,7 @@ module("Integration | Component | env-tab", function(hooks) {
165
165
  const expanded = find(".env-table tr");
166
166
  assert.equal(
167
167
  expanded.children[1].textContent.trim(),
168
- "[value1, value2, value3, value4]",
168
+ "value1, [value2, value3, value4]",
169
169
  "expanded env keys shown correctly"
170
170
  );
171
171
 
@@ -152,9 +152,11 @@ module Logster
152
152
  return if (!msg || (String === msg && msg.empty?)) && skip_empty
153
153
  return if level && severity < level
154
154
 
155
+ msg = msg.inspect unless String === msg
156
+ msg = truncate_message(msg)
155
157
  message = Logster::Message.new(severity, progname, msg, opts[:timestamp], count: opts[:count])
156
158
 
157
- env = opts[:env] || {}
159
+ env = opts[:env]&.dup || {}
158
160
  backtrace = opts[:backtrace]
159
161
  if Hash === env && env[:backtrace]
160
162
  # Special - passing backtrace through env
@@ -245,6 +247,11 @@ module Logster
245
247
 
246
248
  private
247
249
 
250
+ def truncate_message(msg)
251
+ cap = Logster.config.maximum_message_length
252
+ msg.size <= cap ? msg : msg[0...cap] + "..."
253
+ end
254
+
248
255
  def not_implemented
249
256
  raise "Not Implemented"
250
257
  end
@@ -17,7 +17,8 @@ module Logster
17
17
  :enable_backtrace_links,
18
18
  :gems_dir,
19
19
  :max_env_bytes,
20
- :max_env_count_per_message
20
+ :max_env_count_per_message,
21
+ :maximum_message_length
21
22
  )
22
23
 
23
24
  attr_writer :subdirectory
@@ -37,6 +38,7 @@ module Logster
37
38
  @project_directories = []
38
39
  @enable_backtrace_links = true
39
40
  @gems_dir = Gem.dir + "/gems/"
41
+ @maximum_message_length = 2000
40
42
 
41
43
  @allow_grouping = false
42
44
 
@@ -4,8 +4,6 @@ require 'digest/sha1'
4
4
  require 'securerandom'
5
5
 
6
6
  module Logster
7
- MAX_MESSAGE_LENGTH = 600
8
-
9
7
  class Message
10
8
  LOGSTER_ENV = "_logster_env".freeze
11
9
  ALLOWED_ENV = %w{
@@ -30,7 +28,7 @@ module Logster
30
28
  @timestamp = timestamp || get_timestamp
31
29
  @severity = severity
32
30
  @progname = progname
33
- @message = truncate_message(message)
31
+ @message = message
34
32
  @key = key || SecureRandom.hex
35
33
  @backtrace = nil
36
34
  @count = count || 1
@@ -57,10 +55,6 @@ module Logster
57
55
  h
58
56
  end
59
57
 
60
- def message=(m)
61
- @message = truncate_message(m)
62
- end
63
-
64
58
  def to_json(opts = nil)
65
59
  exclude_env = Hash === opts && opts.delete(:exclude_env)
66
60
  JSON.fast_generate(to_h(exclude_env: exclude_env), opts)
@@ -143,10 +137,6 @@ module Logster
143
137
  end
144
138
  end
145
139
 
146
- def is_similar?(other)
147
- self.grouping_key == other.grouping_key
148
- end
149
-
150
140
  def merge_similar_message(other)
151
141
  self.first_timestamp ||= self.timestamp
152
142
  self.timestamp = [self.timestamp, other.timestamp].max
@@ -311,14 +301,8 @@ module Logster
311
301
  end
312
302
  end
313
303
 
314
- def truncate_message(msg)
315
- return msg unless msg
316
- msg = msg.inspect unless String === msg
317
- msg.size <= MAX_MESSAGE_LENGTH ? msg : msg[0...MAX_MESSAGE_LENGTH] + "..."
318
- end
319
-
320
304
  def get_timestamp
321
- (Time.new.to_f * 1000).to_i
305
+ (Time.now.to_f * 1000).to_i
322
306
  end
323
307
  end
324
308
  end
@@ -57,7 +57,14 @@ module Logster
57
57
  message << "\nWindow Location: " << params["window_location"] if params["window_location"]
58
58
 
59
59
  backtrace = params["stacktrace"] || ""
60
- Logster.store.report(::Logger::Severity::WARN,
60
+
61
+ severity = ::Logger::Severity::WARN
62
+ if params["severity"] &&
63
+ ::Logger::Severity.const_defined?(params["severity"].upcase)
64
+ severity = ::Logger::Severity.const_get(params["severity"].upcase)
65
+ end
66
+
67
+ Logster.store.report(severity,
61
68
  "javascript",
62
69
  message,
63
70
  backtrace: backtrace,
@@ -48,7 +48,7 @@ module Logster
48
48
  end
49
49
 
50
50
  Logster.store.delete(message)
51
- return [301, { "Location" => "#{@logs_path}/" }, []]
51
+ [301, { "Location" => "#{@logs_path}/" }, []]
52
52
 
53
53
  elsif resource =~ /\/(un)?protect\/([0-9a-f]+)$/
54
54
  off = $1 == "un"
@@ -61,15 +61,15 @@ module Logster
61
61
 
62
62
  if off
63
63
  if Logster.store.unprotect(key)
64
- return [301, { "Location" => "#{@logs_path}/show/#{key}?protected=false" }, []]
64
+ [301, { "Location" => "#{@logs_path}/show/#{key}?protected=false" }, []]
65
65
  else
66
- return [500, {}, ["Failed"]]
66
+ [500, {}, ["Failed"]]
67
67
  end
68
68
  else
69
69
  if Logster.store.protect(key)
70
- return [301, { "Location" => "#{@logs_path}/show/#{key}?protected=true" }, []]
70
+ [301, { "Location" => "#{@logs_path}/show/#{key}?protected=true" }, []]
71
71
  else
72
- return [500, {}, ["Failed"]]
72
+ [500, {}, ["Failed"]]
73
73
  end
74
74
  end
75
75
 
@@ -83,14 +83,14 @@ module Logster
83
83
 
84
84
  Logster.store.solve(key)
85
85
 
86
- return [301, { "Location" => "#{@logs_path}" }, []]
86
+ [301, { "Location" => "#{@logs_path}" }, []]
87
87
 
88
88
  elsif resource =~ /\/clear$/
89
89
  if env[REQUEST_METHOD] != "POST"
90
90
  return method_not_allowed("POST")
91
91
  end
92
92
  Logster.store.clear
93
- return [200, {}, ["Messages cleared"]]
93
+ [200, {}, ["Messages cleared"]]
94
94
 
95
95
  elsif resource =~ /\/show\/([0-9a-f]+)(\.json)?$/
96
96
  key = $1
@@ -179,7 +179,7 @@ module Logster
179
179
  end.first
180
180
  return not_found("No such pattern group exists") if !group
181
181
  group.messages_keys.each { |k| Logster.store.solve(k) }
182
- return [200, {}, []]
182
+ [200, {}, []]
183
183
  elsif resource == '/development-preload.json' && ENV["LOGSTER_ENV"] == "development"
184
184
  [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.generate(preloaded_data)]]
185
185
  else
@@ -249,11 +249,11 @@ module Logster
249
249
  envs = {}
250
250
  @redis.eval(
251
251
  BULK_ENV_GET_LUA,
252
- keys: message_keys.map { |k| env_prefix(k) }
252
+ keys: message_keys.map { |k| env_prefix(k, with_namespace: true) }
253
253
  ).to_h.each do |k, v|
254
254
  next if v.size == 0
255
255
  parsed = v.size == 1 ? JSON.parse(v[0]) : v.map { |e| JSON.parse(e) }
256
- envs[env_unprefix(k)] = parsed
256
+ envs[env_unprefix(k, with_namespace: true)] = parsed
257
257
  end
258
258
  end
259
259
  messages = @redis.hmget(hash_key, message_keys).map! do |json|
@@ -647,12 +647,28 @@ module Logster
647
647
  @redis.del(env_prefix(message_key))
648
648
  end
649
649
 
650
- def env_unprefix(key)
651
- key.sub(ENV_PREFIX, "")
650
+ def env_unprefix(key, with_namespace: false)
651
+ prefix = ENV_PREFIX
652
+ if with_namespace && namespace
653
+ prefix = "#{namespace}:#{prefix}"
654
+ end
655
+ key.sub(prefix, "")
656
+ end
657
+
658
+ def env_prefix(key, with_namespace: false)
659
+ prefix = ENV_PREFIX
660
+ if with_namespace && namespace
661
+ prefix = "#{namespace}:#{prefix}"
662
+ end
663
+ prefix + key
652
664
  end
653
665
 
654
- def env_prefix(key)
655
- ENV_PREFIX + key
666
+ def namespace
667
+ if @redis_prefix.respond_to?(:call)
668
+ @namespace ||= @redis_prefix.call
669
+ else
670
+ @namespace ||= @redis_prefix
671
+ end
656
672
  end
657
673
  end
658
674
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Logster
4
- VERSION = "2.6.2"
4
+ VERSION = "2.9.0"
5
5
  end
@@ -8,7 +8,7 @@ require 'logster/version'
8
8
  Gem::Specification.new do |spec|
9
9
  spec.name = "logster"
10
10
  spec.version = Logster::VERSION
11
- spec.authors = ["UI for viewing logs in Rack"]
11
+ spec.authors = ["Sam Saffron"]
12
12
  spec.email = ["sam.saffron@gmail.com"]
13
13
  spec.summary = %q{UI for viewing logs in Rack}
14
14
  spec.description = %q{UI for viewing logs in Rack}
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
  spec.license = "MIT"
17
17
 
18
18
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
- f.start_with?("bower_components") || f.start_with?("website") || f.start_with?("bin")
19
+ f.start_with?("website") || f.start_with?("bin")
20
20
  end
21
21
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
22
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
@@ -32,7 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "guard"
33
33
  spec.add_development_dependency "guard-minitest"
34
34
  spec.add_development_dependency "timecop"
35
- spec.add_development_dependency "byebug", "~> 11.0.0"
36
- spec.add_development_dependency "rubocop", "~> 0.69.0"
37
- spec.add_development_dependency "rubocop-discourse"
35
+ spec.add_development_dependency "byebug", "~> 11.1.0"
36
+ spec.add_development_dependency "rubocop-discourse", "~> 2.1.2"
38
37
  end
@@ -11,6 +11,7 @@ class TestReporter < Minitest::Test
11
11
  Logster.store = Logster::RedisStore.new
12
12
  Logster.store.clear_all
13
13
  Logster.config.enable_js_error_reporting = true
14
+ Logster.config.rate_limit_error_reporting = true
14
15
  end
15
16
 
16
17
  def test_logs_errors
@@ -22,6 +23,28 @@ class TestReporter < Minitest::Test
22
23
  assert_equal(1, Logster.store.count)
23
24
  end
24
25
 
26
+ def test_logs_severity_of_errors
27
+ Logster.config.rate_limit_error_reporting = false
28
+
29
+ reporter = Logster::Middleware::Reporter.new(nil)
30
+ env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
31
+ status, = reporter.call(env)
32
+
33
+ assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
34
+
35
+ reporter = Logster::Middleware::Reporter.new(nil)
36
+ env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=invalid")
37
+ status, = reporter.call(env)
38
+
39
+ assert_equal(Logger::Severity::WARN, Logster.store.latest[-1].severity)
40
+
41
+ reporter = Logster::Middleware::Reporter.new(nil)
42
+ env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello&severity=error")
43
+ status, = reporter.call(env)
44
+
45
+ assert_equal(Logger::Severity::ERROR, Logster.store.latest[-1].severity)
46
+ end
47
+
25
48
  def test_respects_ban_on_errors
26
49
  Logster.config.enable_js_error_reporting = false
27
50
 
@@ -162,4 +162,30 @@ class TestBaseStore < Minitest::Test
162
162
  assert_includes(message.backtrace.lines.first, __method__.to_s)
163
163
  end
164
164
  end
165
+
166
+ def test_log_message_is_truncated_when_above_maximum_message_length
167
+ orig = Logster.config.maximum_message_length
168
+ Logster.config.maximum_message_length = 300
169
+ msg = @store.report(Logger::WARN, '', 'a' * 400)
170
+ # 3 is the ... at the end to indicate truncated message
171
+ assert_equal(300 + 3, msg.message.size)
172
+
173
+ Logster.config.maximum_message_length = 100
174
+ msg = @store.report(Logger::WARN, '', 'a' * 200)
175
+ assert_equal(100 + 3, msg.message.size)
176
+ ensure
177
+ Logster.config.maximum_message_length = orig
178
+ end
179
+
180
+ def test_chained_loggers_shouldnt_mutate_env_passed_to_them
181
+ logger = Logster::Logger.new(@store)
182
+ other_store = Logster::TestStore.new
183
+ other_logger = Logster::Logger.new(other_store)
184
+ logger.chain(other_logger)
185
+ logger.add(Logger::WARN, "this is warning", '', { env: { backtrace: '11' } })
186
+ [@store, other_store].each do |store|
187
+ assert_equal('11', store.reported.first.backtrace)
188
+ refute_includes(store.reported.first.env.keys.map(&:to_sym), :backtrace)
189
+ end
190
+ end
165
191
  end
@@ -10,7 +10,7 @@ class TestGroup < MiniTest::Test
10
10
  end
11
11
 
12
12
  def test_from_json_works_correctly
13
- time = (Time.new.to_f * 1000).to_i - 5000
13
+ time = (Time.now.to_f * 1000).to_i - 5000
14
14
  json = JSON.generate(
15
15
  key: '/somekey/',
16
16
  messages_keys: [111, 222, 333].map(&:to_s),
@@ -20,7 +20,7 @@ class TestMessage < MiniTest::Test
20
20
  end
21
21
 
22
22
  def test_populate_from_env_will_add_time_to_env_unless_it_already_exists
23
- t = (Time.new.to_f * 1000).to_i
23
+ t = (Time.now.to_f * 1000).to_i
24
24
  msg = Logster::Message.new(0, '', 'test', t)
25
25
  msg.populate_from_env({})
26
26
  assert_equal(t, msg.env["time"])
@@ -146,12 +146,6 @@ class TestMessage < MiniTest::Test
146
146
  refute_includes(msg.to_json(exclude_env: true), test_hash.to_json)
147
147
  end
148
148
 
149
- def test_title_is_truncated_when_too_large
150
- msg = Logster::Message.new(0, "", "a" * 1000)
151
- # 3 is the ... at the end to indicate truncated message
152
- assert_equal(600 + 3, msg.message.size)
153
- end
154
-
155
149
  def test_drop_redundant_envs
156
150
  message = Logster::Message.new(Logger::WARN, '', 'message')
157
151
  message.env = [{ a: 4 }] * 10
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logster
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.2
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
- - UI for viewing logs in Rack
7
+ - Sam Saffron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-09 00:00:00.000000000 Z
11
+ date: 2020-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -114,42 +114,28 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 11.0.0
117
+ version: 11.1.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 11.0.0
124
+ version: 11.1.0
125
125
  - !ruby/object:Gem::Dependency
126
- name: rubocop
126
+ name: rubocop-discourse
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.69.0
131
+ version: 2.1.2
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.69.0
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop-discourse
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
138
+ version: 2.1.2
153
139
  description: UI for viewing logs in Rack
154
140
  email:
155
141
  - sam.saffron@gmail.com
@@ -166,12 +152,6 @@ files:
166
152
  - LICENSE.txt
167
153
  - README.md
168
154
  - Rakefile
169
- - assets/fonts/FontAwesome.otf
170
- - assets/fonts/fontawesome-webfont.eot
171
- - assets/fonts/fontawesome-webfont.svg
172
- - assets/fonts/fontawesome-webfont.ttf
173
- - assets/fonts/fontawesome-webfont.woff
174
- - assets/fonts/fontawesome-webfont.woff2
175
155
  - assets/images/Icon-144_rounded.png
176
156
  - assets/images/Icon-144_square.png
177
157
  - assets/images/icon_144x144.png
@@ -236,6 +216,7 @@ files:
236
216
  - client-app/app/templates/settings.hbs
237
217
  - client-app/app/templates/show.hbs
238
218
  - client-app/config/environment.js
219
+ - client-app/config/icons.js
239
220
  - client-app/config/optional-features.json
240
221
  - client-app/config/targets.js
241
222
  - client-app/ember-cli-build.js
@@ -314,7 +295,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
314
295
  - !ruby/object:Gem::Version
315
296
  version: '0'
316
297
  requirements: []
317
- rubygems_version: 3.0.3
298
+ rubygems_version: 3.1.2
318
299
  signing_key:
319
300
  specification_version: 4
320
301
  summary: UI for viewing logs in Rack