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

Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql.yml +4 -4
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.github/workflows/stale.yml +1 -1
  5. data/.rubocop.yml +1 -1
  6. data/CHANGELOG.md +25 -1
  7. data/docs/development.md +31 -26
  8. data/lib/oxidized/web/public/css/oxidized.css +22 -11
  9. data/lib/oxidized/web/public/scripts/theme-toggle.js +55 -0
  10. data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js +2 -5
  11. data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js.map +1 -1
  12. data/lib/oxidized/web/public/weblibs/bootstrap.css +6 -1
  13. data/lib/oxidized/web/public/weblibs/bootstrap.css.map +1 -1
  14. data/lib/oxidized/web/public/weblibs/bootstrap.js +2 -5
  15. data/lib/oxidized/web/public/weblibs/bootstrap.js.map +1 -1
  16. data/lib/oxidized/web/public/weblibs/buttons.bootstrap5.css +56 -39
  17. data/lib/oxidized/web/public/weblibs/buttons.bootstrap5.js +14 -6
  18. data/lib/oxidized/web/public/weblibs/dataTables.bootstrap5.css +7 -8
  19. data/lib/oxidized/web/public/weblibs/dataTables.buttons.js +15 -8
  20. data/lib/oxidized/web/public/weblibs/dataTables.js +331 -277
  21. data/lib/oxidized/web/version.rb +1 -1
  22. data/lib/oxidized/web/views/head.haml +2 -0
  23. data/lib/oxidized/web/views/layout.haml +2 -0
  24. data/lib/oxidized/web/views/node.haml +3 -3
  25. data/lib/oxidized/web/views/nodes.haml +3 -3
  26. data/lib/oxidized/web/views/versions.haml +2 -2
  27. data/lib/oxidized/web/webapp.rb +9 -2
  28. data/oxidized-web.gemspec +12 -10
  29. data/package-lock.json +20 -20
  30. data/spec/web/node/show_spec.rb +89 -60
  31. data/spec/web/nodes_spec.rb +7 -0
  32. metadata +43 -41
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a14e46c410d51b9da6a86d6d67fc35bdaed177adfbb006b1e2df4ec12c958bc
4
- data.tar.gz: 7dc9144e706052817ca761a4e80151d40ee73fd7467c31894d2d5fa21c4767b0
3
+ metadata.gz: 65d2167a7730774cc00bd44654db8a47406c705d792e2f4de65a29139e472a2e
4
+ data.tar.gz: 54ad4889bfad1df807091fe256ccb05f01adad35c3a3570bd0b11a7376cb4028
5
5
  SHA512:
6
- metadata.gz: c5b12efffe62f84156e27d30405a2934a9340373bd4b6b5ad9e3df41d65258bc9ab65221c5f153b813b41b17835a673b576c746da3f497332a870aaadec3a26e
7
- data.tar.gz: 8fb63afdf4b7dc9dbca3e052b75efc2377506171764456353e1478be36ac82629be3f87445918a2471f13f143280b5cd021d8fa34b6ea834deccd74b95b891b5
6
+ metadata.gz: a69af301e9965a59c8dbae6ba4c935b4c7e77f645fb0f040d208f922deb65d18218bb4773a9a13b28d9c521eaa34ff53666064196f34a3edc810b32581405e79
7
+ data.tar.gz: f08cc40327630149b8c08b7a9a32a6b13b166e35fa5c55b7d4c7ef3c765dd1d805b7f98eb1503fe4ce6f57d0509b493748f8827dd26a47d1b00644c17d8a0830
@@ -40,11 +40,11 @@ jobs:
40
40
 
41
41
  steps:
42
42
  - name: Checkout repository
43
- uses: actions/checkout@v4
43
+ uses: actions/checkout@v6
44
44
 
45
45
  # Initializes the CodeQL tools for scanning.
46
46
  - name: Initialize CodeQL
47
- uses: github/codeql-action/init@v3
47
+ uses: github/codeql-action/init@v4
48
48
  with:
49
49
  languages: ${{ matrix.language }}
50
50
  # If you wish to specify custom queries, you can do so here or in a config file.
@@ -58,7 +58,7 @@ jobs:
58
58
  # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
59
59
  # If this step fails, then you should remove it and run the build manually (see below)
60
60
  - name: Autobuild
61
- uses: github/codeql-action/autobuild@v3
61
+ uses: github/codeql-action/autobuild@v4
62
62
 
63
63
  # ℹ️ Command-line programs to run using the OS shell.
64
64
  # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -71,6 +71,6 @@ jobs:
71
71
  # ./location_of_script_within_repo/buildscript.sh
72
72
 
73
73
  - name: Perform CodeQL Analysis
74
- uses: github/codeql-action/analyze@v3
74
+ uses: github/codeql-action/analyze@v4
75
75
  with:
76
76
  category: "/language:${{matrix.language}}"
@@ -23,7 +23,7 @@ jobs:
23
23
  continue-on-error: ${{ matrix.ruby-version == 'ruby-head' }}
24
24
 
25
25
  steps:
26
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v6
27
27
  - name: Set up Ruby
28
28
  # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
29
29
  # change this to (see https://github.com/ruby/setup-ruby#versioning):
@@ -11,7 +11,7 @@ jobs:
11
11
  stale:
12
12
  runs-on: ubuntu-latest
13
13
  steps:
14
- - uses: actions/stale@v9
14
+ - uses: actions/stale@v10
15
15
  with:
16
16
  stale-issue-message: 'This issue is stale because it has been open 90 days with no activity.'
17
17
  stale-pr-message: 'This PR is stale because it has been open 90 days with no activity.'
data/.rubocop.yml CHANGED
@@ -29,7 +29,7 @@ Metrics/MethodLength:
29
29
  Enabled: false
30
30
 
31
31
  Metrics/BlockLength:
32
- Max: 150
32
+ Enabled: false
33
33
 
34
34
  # Not using Rails, so no timezones
35
35
  Rails/TimeZone:
data/CHANGELOG.md CHANGED
@@ -3,9 +3,32 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
+ ## [0.18.0 – 2025-12-03]
7
+ It's finally here - dark mode. Enjoy!
8
+
9
+ ### Added
10
+ - Support for dark mode (@robertcheramy)
11
+
12
+ ### Changed
13
+ - Dependency on Oxidized => 0.34.1 to support future Oxidized releases (@robertcheramy)
14
+ - Update web libraries to the latest versions (@robertcheramy)
15
+ - Allow latest gems versions (@robertcheramy)
16
+ - Limit Haml gem to < 7.0.0, as it doesn't support Ruby 3.1 (@robertcheramy)
17
+ - Allow enumeration of nodes contained in the `default` group (@oogali)
18
+
19
+ ### Fixed
20
+ - Remove redundant dependency on bundler producing a CI failure on ruby-head (@robertcheramy)
6
21
 
7
- ## [0.17.0 – 2025-07-18]
8
22
 
23
+ ## [0.17.1 – 2025-08-01]
24
+ ### Changed
25
+ - Dependency on Oxidized 0.34.1 (@robertcheramy)
26
+
27
+ ### Fixed
28
+ - Hide node vars works with Oxidized > 0.34.1 (@robertcheramy)
29
+
30
+
31
+ ## [0.17.0 – 2025-07-18]
9
32
  ### Added
10
33
  - Documentation of the configuration (@robertcheramy)
11
34
 
@@ -20,6 +43,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
20
43
  - Hide node vars when listed in the configuration entry hide_node_vars. Fixes: #344 (@robertcheramy)
21
44
  - /node/next/: Prefer JSON.parse over JSON.load (@robertcheramy)
22
45
 
46
+
23
47
  ## [0.16.0 - 2025-03-25]
24
48
  This release introduces the possibility for an extended configuration of
25
49
  oxidized-web in the oxidized configuration file. Oxidized versions after 0.32.2
data/docs/development.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  # How to run / develop oxidized-web from git
7
7
  ## Using the latest oxidized package
8
- When you develop oxidized-web, it is quite simple to run it from git. As it depends on oxidized,
8
+ When you develop oxidized-web, it is simple to run it from git. As it depends on oxidized,
9
9
  oxidized will be included in `bundle install`, and you just have to run `bundle exec oxidized`.
10
10
  You need bundler, if not installed yet. On debian-based systems, you can run `sudo apt install ruby-bundler` to install it.
11
11
 
@@ -60,12 +60,12 @@ bundle exec oxidized
60
60
  ```
61
61
 
62
62
 
63
- # Update the weblibs
64
- The weblibs are beeing downloaded and maintained by `npm`.
63
+ # Update the Web Libraries
64
+ The web libraries are downloaded and managed with `npm`.
65
65
 
66
- Run `npm install` to download the weblibs. They will be stored under
67
- `node_modules`.
68
- The file `package-lock.json` (wich is tracked in git) ensures that every
66
+ Run `npm install` to download the web libraries. They will be stored under
67
+ `/node_modules`.
68
+ The file `package-lock.json` (which is tracked in git) ensures that every
69
69
  developer gets the same versions.
70
70
 
71
71
  Run `npm outdated` to get a list of new releases:
@@ -76,11 +76,11 @@ Package Current Wanted Latest Location De
76
76
  datatables.net-bs5 2.0.7 2.0.8 2.0.8 node_modules/datatables.net-bs5 oxidized-web
77
77
  ```
78
78
 
79
- Run `npm update` to get the latest releases. They still are not used
79
+ Run `npm update` to get the latest releases. They still are not used by
80
80
  oxidzed-web. Run `rake weblibs` to sync `node_modules` with
81
81
  `lib/oxidized/web/public/weblibs`.
82
82
 
83
- Test, and commit the changes to the weblibs **and** package-lock.json. Don't
83
+ Test, and commit the changes to the web libraries **and** package-lock.json. Don't
84
84
  forget to document your changes in CHANGELOG.md.
85
85
 
86
86
  # How to release a new version of Oxidized-web?
@@ -91,13 +91,16 @@ Oxidized-web versions are numbered like major.minor.patch
91
91
  - minor is incremented when releasing new features.
92
92
  - patch is incremented when releasing fixes only.
93
93
 
94
+ ## Create a release branch
95
+ Name the release branch `release/0.xx.yy`
96
+
94
97
  ## Review changes
95
- Run `git diff 0.xx.yy..master` (where `0.xx.yy` is to be changed to the last
98
+ Run `git diff 0.xx.yy` (where `0.xx.yy` is to be changed to the previous
96
99
  release) and review all the changes that have been done. Have a specific look
97
100
  at changes you don't understand.
98
101
 
99
102
  It is nicer to read in a GUI, so you can use something like
100
- `git difftool --tool=kdiff3 -d 0.xx.yy..master` to see it in kdiff3.
103
+ `git difftool --tool=kdiff3 -d 0.xx.yy` to see it in kdiff3.
101
104
 
102
105
  ## Update the gem dependencies to the latest versions
103
106
  ```
@@ -108,7 +111,7 @@ bundle outaded
108
111
 
109
112
  Test again after updating!
110
113
 
111
- ## Update the weblibs to the latest versions
114
+ ## Update the web libraries to the latest versions
112
115
  ```
113
116
  npm outdated
114
117
  ```
@@ -118,32 +121,32 @@ Test again after updating!
118
121
  ## Make sure the file permissions are correct
119
122
  Run `bundle exec rake chmod`
120
123
 
121
- ## Create a release branch
122
- Name the release branch `release/0.xx.yy`
123
-
124
- Update CHANGELOG.md:
125
- - review it
126
- - add release notes
127
- - set the new version (replace `[Unreleased]` with `[0.xx.yy – 202Y-MM-DD]`)
128
-
129
- Change the version in `lib/oxidized/web/version.rb`
130
-
131
- Upload the branch to github, make a Pull Request for it.
132
-
133
124
  ## Test!
134
125
  Run `bundle exec rake` on the git repository to check the code against rubocop
135
126
  and run the defined tests in `/spec`.
136
127
 
137
- Run Oxidized-web from git against the latest Oxidized version `bundle exec oxdized`
128
+ Run Oxidized-web from git against the latest Oxidized version `bundle exec oxidized`
138
129
 
139
130
  When testing the web application, open the javascript console in the browser to
140
131
  see any errors.
141
132
 
133
+ ## Bump the version
134
+ Update CHANGELOG.md:
135
+ - review it.
136
+ - add release notes.
137
+ - look into the next Milestone and inform about important issues planned for
138
+ next release.
139
+ - set the new version (replace `[Unreleased]` with `[0.xx.yy – 202Y-MM-DD]`)
140
+
141
+ Change the version in `lib/oxidized/web/version.rb`
142
+
143
+ Upload the release branch to github, make a Pull Request for it.
144
+
142
145
  ## Release
143
146
  1. Merge the Pull Request into master with the commit message
144
- `chore(release): release version 0.3x.y`
147
+ `chore(release): release version 0.xx.y`
145
148
  2. `git pull` master
146
- 3. Tag the commit with `git tag -a 0.xx.yy -m "Release 0.xx.yy"`
149
+ 3. Tag the commit with `git tag -a 0.xx.yy -m "Release 0.xx.yy"` or `rake tag`
147
150
  4. Build the gem with ‘rake build’
148
151
  5. Run `git diff` to check if there have been more changes (there shouldn't)
149
152
  6. Install an test the gem locally
@@ -163,6 +166,8 @@ Make a release from the tag in github.
163
166
  - List new contributors (generated automatically)
164
167
  - Keep the Full Changelog (generated automatically)
165
168
 
169
+ Close the corresponding milestone in github.
170
+
166
171
  ## Release in rubygems
167
172
  Push the gem with ‘rake push’
168
173
 
@@ -9,31 +9,41 @@
9
9
  border-radius: 2px; }
10
10
 
11
11
  .success {
12
- background-color: #64FE2E; }
12
+ background-color: var(--bs-success);
13
+ }
13
14
 
14
15
  .no_connection {
15
- background-color: #FF0000; }
16
+ background-color: var(--bs-danger);
17
+ }
16
18
 
17
19
  .never {
18
- background-color: #58ACFA; }
20
+ background-color: var(--bs-info);
21
+ }
19
22
 
20
23
  /* node/version/diffs */
21
24
  .added {
22
- background-color: #DBFFDB; }
25
+ background-color: var(--bs-success-bg-subtle);
26
+ color: var(--bs-success-text-emphasis);
27
+ }
23
28
 
24
29
  .deleted {
25
- background-color: #FFDDDD; }
26
-
30
+ background-color: var(--bs-danger-bg-subtle);
31
+ color: var(--bs-danger-text-emphasis);
32
+ }
27
33
 
28
34
  .diff-index {
29
- background-color: #FFFF99; }
35
+ background-color: var(--bs-warning-bg-subtle);
36
+ color: var(--bs-warning-text-emphasis);
37
+ }
30
38
 
31
39
  .diff-empty {
32
- background-color: #F0F0F0; }
40
+ background-color: var(--bs-secondary-bg);
41
+ color: var(--bs-secondary-color);
42
+ }
33
43
 
34
44
  .diffs, .diffs_old, .diffs_new {
35
- background-color: #FAFAFA;
36
- border: 2px solid #ccc;
45
+ background-color: var(--bs-body-bg);
46
+ border: 2px solid var(--bs-border-color);
37
47
  border-radius: 5px;
38
48
  padding: 3px;
39
49
  font-family: Consolas, "Lucida Console", monospace;
@@ -56,4 +66,5 @@
56
66
 
57
67
  .new_version_title {
58
68
  margin-left: 51%;
59
- font-weight: bold; }
69
+ font-weight: bold;
70
+ }
@@ -0,0 +1,55 @@
1
+ // Theme Toggle Functionality
2
+ (function() {
3
+ 'use strict';
4
+
5
+ /**
6
+ * Initialize theme on page load
7
+ * Retrieves saved theme from localStorage or defaults to 'light'
8
+ */
9
+ function initTheme() {
10
+ const savedTheme = localStorage.getItem('theme') || 'light';
11
+ document.documentElement.setAttribute('data-bs-theme', savedTheme);
12
+ updateToggleButton(savedTheme);
13
+ }
14
+
15
+ /**
16
+ * Toggle between light and dark theme
17
+ * Saves the new theme preference to localStorage
18
+ */
19
+ function toggleTheme() {
20
+ const html = document.documentElement;
21
+ const currentTheme = html.getAttribute('data-bs-theme') || 'light';
22
+ const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
23
+
24
+ html.setAttribute('data-bs-theme', newTheme);
25
+ localStorage.setItem('theme', newTheme);
26
+ updateToggleButton(newTheme);
27
+ }
28
+
29
+ /**
30
+ * Update the toggle button icon based on current theme
31
+ * @param {string} theme - Current theme ('light' or 'dark')
32
+ */
33
+ function updateToggleButton(theme) {
34
+ const button = document.getElementById('theme-toggle');
35
+ if (button) {
36
+ const icon = button.querySelector('i');
37
+ if (icon) {
38
+ icon.className = theme === 'dark' ? 'bi bi-sun-fill' : 'bi bi-moon-fill';
39
+ }
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Add event listener when DOM is fully loaded
45
+ */
46
+ document.addEventListener('DOMContentLoaded', function() {
47
+ const toggleButton = document.getElementById('theme-toggle');
48
+ if (toggleButton) {
49
+ toggleButton.addEventListener('click', toggleTheme);
50
+ }
51
+ });
52
+
53
+ // Initialize theme immediately to prevent flash of wrong theme
54
+ initTheme();
55
+ })();
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap v5.3.7 (https://getbootstrap.com/)
2
+ * Bootstrap v5.3.8 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
@@ -647,7 +647,7 @@
647
647
  * Constants
648
648
  */
649
649
 
650
- const VERSION = '5.3.7';
650
+ const VERSION = '5.3.8';
651
651
 
652
652
  /**
653
653
  * Class definition
@@ -3690,9 +3690,6 @@
3690
3690
  this._element.setAttribute('aria-expanded', 'false');
3691
3691
  Manipulator.removeDataAttribute(this._menu, 'popper');
3692
3692
  EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
3693
-
3694
- // Explicitly return focus to the trigger element
3695
- this._element.focus();
3696
3693
  }
3697
3694
  _getConfig(config) {
3698
3695
  config = super._getConfig(config);