oxidized-web 0.17.1 → 0.18.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.

Potentially problematic release.


This version of oxidized-web might be problematic. Click here for more details.

@@ -2,6 +2,6 @@
2
2
 
3
3
  module Oxidized
4
4
  module API
5
- WEB_VERSION = '0.17.1'
5
+ WEB_VERSION = '0.18.0'
6
6
  end
7
7
  end
@@ -31,3 +31,5 @@
31
31
  %script dayjs.extend(dayjsPluginUTC.default)
32
32
  -# Oxidized customisation
33
33
  %script{src: url_for('/scripts/oxidized.js')}
34
+ -# Theme Toggle
35
+ %script{src: url_for('/scripts/theme-toggle.js')}
@@ -29,6 +29,8 @@
29
29
  :'aria-label' => 'Search in Configs'}
30
30
  %button.btn.btn-primary{type: 'submit'}
31
31
  %i.bi.bi-search
32
+ %button.btn.btn-outline-secondary.ms-2#theme-toggle{type: 'button', :'aria-label' => 'Toggle theme'}
33
+ %i.bi.bi-moon-fill
32
34
 
33
35
  .container-fluid
34
36
  =yield
@@ -5,13 +5,13 @@
5
5
  %span /
6
6
  =@data[:name]
7
7
   
8
- %a.link-dark.link-underline-opacity-0{title: 'configuration',
8
+ %a.link-body-emphasis.link-underline-opacity-0{title: 'configuration',
9
9
  href: url_for("/node/fetch/#{@data[:full_name]}")}
10
10
  %i.bi.bi-cloud-download
11
- %a.link-dark.link-underline-opacity-0{title: 'versions',
11
+ %a.link-body-emphasis.link-underline-opacity-0{title: 'versions',
12
12
  href: url_for("/node/version?node_full=#{@data[:full_name]}")}
13
13
  %i.bi.bi-stack
14
- %a.link-dark.link-underline-opacity-0{title: 'update',
14
+ %a.link-body-emphasis.link-underline-opacity-0{title: 'update',
15
15
  href: url_for("/node/next/#{@data[:full_name]}")}
16
16
  %i.bi.bi-repeat
17
17
  %pre.bg-body-tertiary.border.border-secondary-subtle.rounded
@@ -45,15 +45,15 @@
45
45
  %td.time{ epoch: node[:time].to_i }= node[:time]
46
46
  %td.time{ epoch: node[:mtime].to_i }= node[:mtime]
47
47
  %td
48
- %a.link-dark.link-underline-opacity-0{title: 'Configuration',
48
+ %a.link-body-emphasis.link-underline-opacity-0{title: 'Configuration',
49
49
  href: url_for("/node/fetch/#{node[:full_name]}")}
50
50
  %i.bi.bi-cloud-download
51
51
    
52
- %a.link-dark.link-underline-opacity-0{title: 'Versions',
52
+ %a.link-body-emphasis.link-underline-opacity-0{title: 'Versions',
53
53
  href: url_for("/node/version?node_full=#{node[:full_name]}")}
54
54
  %i.bi.bi-stack
55
55
    
56
- %a.link-dark.link-underline-opacity-0{title: 'Update configuration',
56
+ %a.link-body-emphasis.link-underline-opacity-0{title: 'Update configuration',
57
57
  href: url_for("/node/next/#{node[:full_name]}")}
58
58
  %i.bi.bi-repeat
59
59
 
@@ -30,12 +30,12 @@
30
30
  %td
31
31
  - params = "node=#{@node}&group=#{@group}&oid=#{x[:oid]}"
32
32
  - params = "#{params}&epoch=#{x[:time].to_i}&num=#{nb}"
33
- %a.link-dark.link-underline-opacity-0{title: 'configuration',
33
+ %a.link-body-emphasis.link-underline-opacity-0{title: 'configuration',
34
34
  href: url_for("/node/version/view?#{params}")}
35
35
  %i.bi.bi-cloud-download
36
36
    
37
37
  - if nb > 1
38
- %a.link-dark.link-underline-opacity-0{title: 'Compare with previous version', href: url_for("/node/version/diffs?#{params}")}
38
+ %a.link-body-emphasis.link-underline-opacity-0{title: 'Compare with previous version', href: url_for("/node/version/diffs?#{params}")}
39
39
  %i.bi.bi-file-earmark-diff
40
40
 
41
41
  :javascript
@@ -31,7 +31,12 @@ module Oxidized
31
31
  get '/nodes/:filter/*' do
32
32
  value, @json = route_parse params[:splat].first
33
33
  @data = nodes.list.select do |node|
34
- next unless node[params[:filter].to_sym] == value
34
+ next unless node[params[:filter].to_sym] == value ||
35
+ (
36
+ params[:filter].to_sym == :group &&
37
+ node[params[:filter].to_sym].nil? &&
38
+ value.to_sym == :default
39
+ )
35
40
 
36
41
  node[:status] = 'never'
37
42
  node[:time] = 'never'
data/oxidized-web.gemspec CHANGED
@@ -33,23 +33,25 @@ Gem::Specification.new do |s|
33
33
 
34
34
  s.add_dependency 'charlock_holmes', '>= 0.7.5', '< 0.8.0'
35
35
  s.add_dependency 'emk-sinatra-url-for', '~> 0.2'
36
- s.add_dependency 'haml', '>= 6.0.0', '< 6.4.0'
37
- s.add_dependency 'htmlentities', '>= 4.3.0', '< 4.4.0'
38
- s.add_dependency 'json', '>= 2.3.0', '< 2.14.0'
39
- s.add_dependency 'oxidized', '~> 0.34.1'
40
- s.add_dependency 'puma', '~> 6.6.0'
41
- s.add_dependency 'sinatra', '~> 4.1.1'
42
- s.add_dependency 'sinatra-contrib', '~> 4.1.1'
36
+ # haml 7.0 requires ruby >= 3.2, so keep it < 7
37
+ s.add_dependency 'haml', '>= 6.0.0', '< 7.0.0'
38
+ s.add_dependency 'htmlentities', '>= 4.3.0', '< 4.5.0'
39
+ s.add_dependency 'json', '>= 2.3.0', '< 2.17.0'
40
+ # Only depend on a minimal version of Oxidized so we don't need to
41
+ # update the gemspec for new Oxidized releases
42
+ s.add_dependency 'oxidized', '>= 0.34.1'
43
+ s.add_dependency 'puma', '>= 6.6', '< 7.2'
44
+ s.add_dependency 'sinatra', '>= 4.1.1', '< 4.3.0'
45
+ s.add_dependency 'sinatra-contrib', '>= 4.1.1', '< 4.3.0'
43
46
 
44
- s.add_development_dependency 'bundler', '~> 2.2'
45
47
  s.add_development_dependency 'minitest', '~> 5.18'
46
48
  s.add_development_dependency 'mocha', '~> 2.1'
47
49
  s.add_development_dependency 'rack-test', '~> 2.1'
48
50
  s.add_development_dependency 'rails_best_practices', '~> 1.19'
49
51
  s.add_development_dependency 'rake', '~> 13.0'
50
- s.add_development_dependency 'rubocop', '~> 1.79.1'
52
+ s.add_development_dependency 'rubocop', '~> 1.81.1'
51
53
  s.add_development_dependency 'rubocop-minitest', '~> 0.38.0'
52
- s.add_development_dependency 'rubocop-rails', '~> 2.32.0'
54
+ s.add_development_dependency 'rubocop-rails', '~> 2.34.2'
53
55
  s.add_development_dependency 'rubocop-rake', '~> 0.7.1'
54
56
  s.add_development_dependency 'simplecov', '~> 0.22.0'
55
57
  s.add_development_dependency 'simplecov-html', '~> 0.13.1'
data/package-lock.json CHANGED
@@ -29,9 +29,9 @@
29
29
  }
30
30
  },
31
31
  "node_modules/bootstrap": {
32
- "version": "5.3.7",
33
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.7.tgz",
34
- "integrity": "sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==",
32
+ "version": "5.3.8",
33
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz",
34
+ "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==",
35
35
  "funding": [
36
36
  {
37
37
  "type": "github",
@@ -62,45 +62,45 @@
62
62
  ]
63
63
  },
64
64
  "node_modules/datatables.net": {
65
- "version": "2.3.2",
66
- "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.2.tgz",
67
- "integrity": "sha512-31TzwIQM0+pr2ZOEOEH6dsHd/WSAl5GDDGPezOHPI3mM2NK4lcDyOoG8xXeWmSbVfbi852LNK5C84fpp4Q+qxg==",
65
+ "version": "2.3.5",
66
+ "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-2.3.5.tgz",
67
+ "integrity": "sha512-Qrwc+vuw8GHo42u1usWTuriNAMW0VvLPSW3j8g3GxvatiD8wS/ZGW32VAYLLfmF4Hz0C/fo2KB3xZBfcpqqVTQ==",
68
68
  "dependencies": {
69
69
  "jquery": ">=1.7"
70
70
  }
71
71
  },
72
72
  "node_modules/datatables.net-bs5": {
73
- "version": "2.3.2",
74
- "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-2.3.2.tgz",
75
- "integrity": "sha512-1rh0ZTLoiziIQ4oAtgr+IOYVgJfAIceDnbDe535u8kv191pBAdTrKF6ovQO98Xy9mDXLdLNB7QCrLiV/sgPoQw==",
73
+ "version": "2.3.5",
74
+ "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-2.3.5.tgz",
75
+ "integrity": "sha512-2JA2WZz1tBxdVpYAspiqI8POdqEoAZZzqp7tISKaof2P5ufBJb+OLaahxwuB0sF9qcQh1azlU+JH1zsLBXVwXg==",
76
76
  "dependencies": {
77
- "datatables.net": "2.3.2",
77
+ "datatables.net": "2.3.5",
78
78
  "jquery": ">=1.7"
79
79
  }
80
80
  },
81
81
  "node_modules/datatables.net-buttons": {
82
- "version": "3.2.4",
83
- "resolved": "https://registry.npmjs.org/datatables.net-buttons/-/datatables.net-buttons-3.2.4.tgz",
84
- "integrity": "sha512-anA39/R0kpHA2DOwqEHy/ZMXD5vf4tWmyNO0BnO0kJG7AFNvGTUCWBnBifXYg3G64U6JYpYY+MuTFKIB1/ZMTQ==",
82
+ "version": "3.2.5",
83
+ "resolved": "https://registry.npmjs.org/datatables.net-buttons/-/datatables.net-buttons-3.2.5.tgz",
84
+ "integrity": "sha512-OSTl7evbfe0SMee11lyzu5iv/z8Yp05eh3s1QBte/FNqHcoXN8hlAVSSGpYgk5pj8zwHPYIu6fHeMEue4ARUNg==",
85
85
  "dependencies": {
86
86
  "datatables.net": "^2",
87
87
  "jquery": ">=1.7"
88
88
  }
89
89
  },
90
90
  "node_modules/datatables.net-buttons-bs5": {
91
- "version": "3.2.4",
92
- "resolved": "https://registry.npmjs.org/datatables.net-buttons-bs5/-/datatables.net-buttons-bs5-3.2.4.tgz",
93
- "integrity": "sha512-yX8Ia32P1D9L02XWjisA6a9fFp0LgmzpIcvf/4ty+QG5/qj1tOOqWgsXsxxIY2Uj918WmLJS6VaJabRAMoAqHA==",
91
+ "version": "3.2.5",
92
+ "resolved": "https://registry.npmjs.org/datatables.net-buttons-bs5/-/datatables.net-buttons-bs5-3.2.5.tgz",
93
+ "integrity": "sha512-3eT/Sd90x7imq9MRcKP9X3j70qg/u+OvtZSNWJEihRf1Mb/Sr8NexQw/Bag/ui6GJHa5dhUeFrOgBSKtEW70iA==",
94
94
  "dependencies": {
95
95
  "datatables.net-bs5": "^2",
96
- "datatables.net-buttons": "3.2.4",
96
+ "datatables.net-buttons": "3.2.5",
97
97
  "jquery": ">=1.7"
98
98
  }
99
99
  },
100
100
  "node_modules/dayjs": {
101
- "version": "1.11.13",
102
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
103
- "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
101
+ "version": "1.11.19",
102
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
103
+ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="
104
104
  },
105
105
  "node_modules/dayjs-plugin-utc": {
106
106
  "version": "0.1.2",
@@ -53,5 +53,12 @@ describe Oxidized::API::WebApp do
53
53
  result = JSON.parse(last_response.body)
54
54
  _(result.length).must_equal 4
55
55
  end
56
+ it 'shows all nodes of the default group' do
57
+ get '/nodes/group/default.json'
58
+
59
+ _(last_response.ok?).must_equal true
60
+ result = JSON.parse(last_response.body)
61
+ _(result.length).must_equal 3
62
+ end
56
63
  end
57
64
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxidized-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saku Ytti
8
8
  - Samer Abdel-Hafez
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2025-08-01 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: charlock_holmes
@@ -54,7 +53,7 @@ dependencies:
54
53
  version: 6.0.0
55
54
  - - "<"
56
55
  - !ruby/object:Gem::Version
57
- version: 6.4.0
56
+ version: 7.0.0
58
57
  type: :runtime
59
58
  prerelease: false
60
59
  version_requirements: !ruby/object:Gem::Requirement
@@ -64,7 +63,7 @@ dependencies:
64
63
  version: 6.0.0
65
64
  - - "<"
66
65
  - !ruby/object:Gem::Version
67
- version: 6.4.0
66
+ version: 7.0.0
68
67
  - !ruby/object:Gem::Dependency
69
68
  name: htmlentities
70
69
  requirement: !ruby/object:Gem::Requirement
@@ -74,7 +73,7 @@ dependencies:
74
73
  version: 4.3.0
75
74
  - - "<"
76
75
  - !ruby/object:Gem::Version
77
- version: 4.4.0
76
+ version: 4.5.0
78
77
  type: :runtime
79
78
  prerelease: false
80
79
  version_requirements: !ruby/object:Gem::Requirement
@@ -84,7 +83,7 @@ dependencies:
84
83
  version: 4.3.0
85
84
  - - "<"
86
85
  - !ruby/object:Gem::Version
87
- version: 4.4.0
86
+ version: 4.5.0
88
87
  - !ruby/object:Gem::Dependency
89
88
  name: json
90
89
  requirement: !ruby/object:Gem::Requirement
@@ -94,7 +93,7 @@ dependencies:
94
93
  version: 2.3.0
95
94
  - - "<"
96
95
  - !ruby/object:Gem::Version
97
- version: 2.14.0
96
+ version: 2.17.0
98
97
  type: :runtime
99
98
  prerelease: false
100
99
  version_requirements: !ruby/object:Gem::Requirement
@@ -104,77 +103,81 @@ dependencies:
104
103
  version: 2.3.0
105
104
  - - "<"
106
105
  - !ruby/object:Gem::Version
107
- version: 2.14.0
106
+ version: 2.17.0
108
107
  - !ruby/object:Gem::Dependency
109
108
  name: oxidized
110
109
  requirement: !ruby/object:Gem::Requirement
111
110
  requirements:
112
- - - "~>"
111
+ - - ">="
113
112
  - !ruby/object:Gem::Version
114
113
  version: 0.34.1
115
114
  type: :runtime
116
115
  prerelease: false
117
116
  version_requirements: !ruby/object:Gem::Requirement
118
117
  requirements:
119
- - - "~>"
118
+ - - ">="
120
119
  - !ruby/object:Gem::Version
121
120
  version: 0.34.1
122
121
  - !ruby/object:Gem::Dependency
123
122
  name: puma
124
123
  requirement: !ruby/object:Gem::Requirement
125
124
  requirements:
126
- - - "~>"
125
+ - - ">="
127
126
  - !ruby/object:Gem::Version
128
- version: 6.6.0
127
+ version: '6.6'
128
+ - - "<"
129
+ - !ruby/object:Gem::Version
130
+ version: '7.2'
129
131
  type: :runtime
130
132
  prerelease: false
131
133
  version_requirements: !ruby/object:Gem::Requirement
132
134
  requirements:
133
- - - "~>"
135
+ - - ">="
134
136
  - !ruby/object:Gem::Version
135
- version: 6.6.0
137
+ version: '6.6'
138
+ - - "<"
139
+ - !ruby/object:Gem::Version
140
+ version: '7.2'
136
141
  - !ruby/object:Gem::Dependency
137
142
  name: sinatra
138
143
  requirement: !ruby/object:Gem::Requirement
139
144
  requirements:
140
- - - "~>"
145
+ - - ">="
141
146
  - !ruby/object:Gem::Version
142
147
  version: 4.1.1
148
+ - - "<"
149
+ - !ruby/object:Gem::Version
150
+ version: 4.3.0
143
151
  type: :runtime
144
152
  prerelease: false
145
153
  version_requirements: !ruby/object:Gem::Requirement
146
154
  requirements:
147
- - - "~>"
155
+ - - ">="
148
156
  - !ruby/object:Gem::Version
149
157
  version: 4.1.1
158
+ - - "<"
159
+ - !ruby/object:Gem::Version
160
+ version: 4.3.0
150
161
  - !ruby/object:Gem::Dependency
151
162
  name: sinatra-contrib
152
163
  requirement: !ruby/object:Gem::Requirement
153
164
  requirements:
154
- - - "~>"
165
+ - - ">="
155
166
  - !ruby/object:Gem::Version
156
167
  version: 4.1.1
168
+ - - "<"
169
+ - !ruby/object:Gem::Version
170
+ version: 4.3.0
157
171
  type: :runtime
158
172
  prerelease: false
159
173
  version_requirements: !ruby/object:Gem::Requirement
160
174
  requirements:
161
- - - "~>"
175
+ - - ">="
162
176
  - !ruby/object:Gem::Version
163
177
  version: 4.1.1
164
- - !ruby/object:Gem::Dependency
165
- name: bundler
166
- requirement: !ruby/object:Gem::Requirement
167
- requirements:
168
- - - "~>"
169
- - !ruby/object:Gem::Version
170
- version: '2.2'
171
- type: :development
172
- prerelease: false
173
- version_requirements: !ruby/object:Gem::Requirement
174
- requirements:
175
- - - "~>"
178
+ - - "<"
176
179
  - !ruby/object:Gem::Version
177
- version: '2.2'
180
+ version: 4.3.0
178
181
  - !ruby/object:Gem::Dependency
179
182
  name: minitest
180
183
  requirement: !ruby/object:Gem::Requirement
@@ -251,14 +254,14 @@ dependencies:
251
254
  requirements:
252
255
  - - "~>"
253
256
  - !ruby/object:Gem::Version
254
- version: 1.79.1
257
+ version: 1.81.1
255
258
  type: :development
256
259
  prerelease: false
257
260
  version_requirements: !ruby/object:Gem::Requirement
258
261
  requirements:
259
262
  - - "~>"
260
263
  - !ruby/object:Gem::Version
261
- version: 1.79.1
264
+ version: 1.81.1
262
265
  - !ruby/object:Gem::Dependency
263
266
  name: rubocop-minitest
264
267
  requirement: !ruby/object:Gem::Requirement
@@ -279,14 +282,14 @@ dependencies:
279
282
  requirements:
280
283
  - - "~>"
281
284
  - !ruby/object:Gem::Version
282
- version: 2.32.0
285
+ version: 2.34.2
283
286
  type: :development
284
287
  prerelease: false
285
288
  version_requirements: !ruby/object:Gem::Requirement
286
289
  requirements:
287
290
  - - "~>"
288
291
  - !ruby/object:Gem::Version
289
- version: 2.32.0
292
+ version: 2.34.2
290
293
  - !ruby/object:Gem::Dependency
291
294
  name: rubocop-rake
292
295
  requirement: !ruby/object:Gem::Requirement
@@ -358,6 +361,7 @@ files:
358
361
  - lib/oxidized/web/public/images/oxidizing.png
359
362
  - lib/oxidized/web/public/images/oxidizing_40px.png
360
363
  - lib/oxidized/web/public/scripts/oxidized.js
364
+ - lib/oxidized/web/public/scripts/theme-toggle.js
361
365
  - lib/oxidized/web/public/weblibs/bootstrap-icons.css
362
366
  - lib/oxidized/web/public/weblibs/bootstrap.bundle.js
363
367
  - lib/oxidized/web/public/weblibs/bootstrap.bundle.js.map
@@ -405,7 +409,6 @@ licenses:
405
409
  - Apache-2.0
406
410
  metadata:
407
411
  rubygems_mfa_required: 'true'
408
- post_install_message:
409
412
  rdoc_options: []
410
413
  require_paths:
411
414
  - lib
@@ -420,8 +423,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
420
423
  - !ruby/object:Gem::Version
421
424
  version: '0'
422
425
  requirements: []
423
- rubygems_version: 3.3.15
424
- signing_key:
426
+ rubygems_version: 3.6.7
425
427
  specification_version: 4
426
428
  summary: sinatra API + webUI for oxidized
427
429
  test_files: []