oxidized-web 0.16.0 → 0.17.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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -1
  3. data/.rubocop.yml +22 -2
  4. data/CHANGELOG.md +18 -1
  5. data/README.md +13 -3
  6. data/Rakefile +9 -4
  7. data/docs/configuration.md +90 -0
  8. data/docs/development.md +42 -40
  9. data/lib/oxidized/web/public/scripts/oxidized.js +13 -13
  10. data/lib/oxidized/web/public/weblibs/bootstrap-icons.css +31 -3
  11. data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js +20 -19
  12. data/lib/oxidized/web/public/weblibs/bootstrap.bundle.js.map +1 -1
  13. data/lib/oxidized/web/public/weblibs/bootstrap.css +110 -124
  14. data/lib/oxidized/web/public/weblibs/bootstrap.css.map +1 -1
  15. data/lib/oxidized/web/public/weblibs/bootstrap.js +20 -17
  16. data/lib/oxidized/web/public/weblibs/bootstrap.js.map +1 -1
  17. data/lib/oxidized/web/public/weblibs/buttons.bootstrap5.css +3 -3
  18. data/lib/oxidized/web/public/weblibs/buttons.colVis.js +14 -5
  19. data/lib/oxidized/web/public/weblibs/dataTables.bootstrap5.css +111 -17
  20. data/lib/oxidized/web/public/weblibs/dataTables.buttons.js +25 -7
  21. data/lib/oxidized/web/public/weblibs/dataTables.js +337 -107
  22. data/lib/oxidized/web/public/weblibs/dayjs-plugin-utc.min.js +1 -0
  23. data/lib/oxidized/web/public/weblibs/dayjs.min.js +1 -0
  24. data/lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff +0 -0
  25. data/lib/oxidized/web/public/weblibs/fonts/bootstrap-icons.woff2 +0 -0
  26. data/lib/oxidized/web/version.rb +1 -1
  27. data/lib/oxidized/web/views/diffs.haml +6 -7
  28. data/lib/oxidized/web/views/head.haml +4 -0
  29. data/lib/oxidized/web/views/node.haml +3 -2
  30. data/lib/oxidized/web/views/nodes.haml +2 -2
  31. data/lib/oxidized/web/views/stats.haml +2 -2
  32. data/lib/oxidized/web/views/version.haml +1 -2
  33. data/lib/oxidized/web/views/versions.haml +6 -5
  34. data/lib/oxidized/web/webapp.rb +40 -25
  35. data/lib/oxidized/web.rb +71 -26
  36. data/oxidized-web.gemspec +22 -13
  37. data/package-lock.json +37 -25
  38. data/package.json +7 -5
  39. data/spec/spec_helper.rb +1 -0
  40. data/spec/web/node/show_spec.rb +100 -0
  41. data/spec/web/node/version_spec.rb +161 -0
  42. data/spec/{node_spec.rb → web/node_spec.rb} +1 -1
  43. data/spec/{nodes_spec.rb → web/nodes_spec.rb} +1 -1
  44. data/spec/{root_spec.rb → web/root_spec.rb} +1 -1
  45. data/spec/{webapp_spec.rb → web/webapp_spec.rb} +1 -1
  46. data/spec/web_spec.rb +98 -0
  47. metadata +69 -69
  48. data/.rubocop_todo.yml +0 -64
  49. data/spec/node_version_spec.rb +0 -102
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 01c4432ff37c67ec0a06e7aaa39eecb03631f290fd95d1de12bc9237310aad61
4
- data.tar.gz: 4f9a2860285850aaaf64d557807fec1e31d433a9f4ffaefaa68dd0ffb295bed8
3
+ metadata.gz: 3a14e46c410d51b9da6a86d6d67fc35bdaed177adfbb006b1e2df4ec12c958bc
4
+ data.tar.gz: 7dc9144e706052817ca761a4e80151d40ee73fd7467c31894d2d5fa21c4767b0
5
5
  SHA512:
6
- metadata.gz: '029095fa609376853c3e0b446ee48749f02a9b7578b50d928ee43ed5b9c3d9ba5bf747e12805a669bbfebfe0d3b08b8ee57b409f6de6c9a53f6059df9b77acbd'
7
- data.tar.gz: 76dc6f389eb8170f290e33718fc11d9636539a8999f3c6a542965b4aa50f8bf5899446f18e828dc30246d9aa37b1f1f83d34cba133f94ee5a4656f26ae439713
6
+ metadata.gz: c5b12efffe62f84156e27d30405a2934a9340373bd4b6b5ad9e3df41d65258bc9ab65221c5f153b813b41b17835a673b576c746da3f497332a870aaadec3a26e
7
+ data.tar.gz: 8fb63afdf4b7dc9dbca3e052b75efc2377506171764456353e1478be36ac82629be3f87445918a2471f13f143280b5cd021d8fa34b6ea834deccd74b95b891b5
data/.gitignore CHANGED
@@ -10,6 +10,7 @@
10
10
  /test/version_tmp/
11
11
  /tmp/
12
12
  .idea/
13
+ /.rake_tasks~
13
14
 
14
15
  # Used by dotenv library to load environment variables.
15
16
  # .env
@@ -52,4 +53,6 @@ Gemfile.lock
52
53
 
53
54
  # npm files
54
55
  /node_modules/
55
- /.rake_tasks~
56
+
57
+ # Editors
58
+ .vscode
data/.rubocop.yml CHANGED
@@ -1,4 +1,3 @@
1
- inherit_from: .rubocop_todo.yml
2
1
  plugins:
3
2
  - rubocop-rails
4
3
  - rubocop-rake
@@ -14,12 +13,31 @@ AllCops:
14
13
  Gemspec/DevelopmentDependencies:
15
14
  EnforcedStyle: gemspec
16
15
 
16
+ Metrics/AbcSize:
17
+ Enabled: false
18
+
17
19
  Metrics/ClassLength:
18
- Max: 300
20
+ Enabled: false
21
+
22
+ Metrics/PerceivedComplexity:
23
+ Enabled: false
24
+
25
+ Metrics/CyclomaticComplexity:
26
+ Enabled: false
27
+
28
+ Metrics/MethodLength:
29
+ Enabled: false
19
30
 
20
31
  Metrics/BlockLength:
21
32
  Max: 150
22
33
 
34
+ # Not using Rails, so no timezones
35
+ Rails/TimeZone:
36
+ Enabled: false
37
+
38
+ Rails/RakeEnvironment:
39
+ Enabled: false
40
+
23
41
  Style/Documentation:
24
42
  Enabled: false
25
43
 
@@ -70,3 +88,5 @@ Style/HashSyntax:
70
88
  Style/RescueModifier:
71
89
  Enabled: false
72
90
 
91
+ Style/NumericLiterals:
92
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
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
+
7
+ ## [0.17.0 – 2025-07-18]
8
+
9
+ ### Added
10
+ - Documentation of the configuration (@robertcheramy)
11
+
12
+ ### Changed
13
+ - Update weblibs to the latest versions (@robertcheramy)
14
+ - Depend on oxidized 0.34.0 (configuration of oxidized web as an extension) (@robertcheramy)
15
+ - Use JSON to format the node metadata in /node/show (@robertcheramy)
16
+
17
+ ### Fixed
18
+ - Run puma directly, so that it does not rename the oxidized process. Fixes: 349 (@robertcheramy)
19
+ - Display local time correctly and use epoch as timestamps in the URLs. Fixes: #258 and #356 (@robertcheramy)
20
+ - Hide node vars when listed in the configuration entry hide_node_vars. Fixes: #344 (@robertcheramy)
21
+ - /node/next/: Prefer JSON.parse over JSON.load (@robertcheramy)
22
+
6
23
  ## [0.16.0 - 2025-03-25]
7
24
  This release introduces the possibility for an extended configuration of
8
25
  oxidized-web in the oxidized configuration file. Oxidized versions after 0.32.2
@@ -13,7 +30,7 @@ will only work with oxidized-web version 0.16.0 or later.
13
30
 
14
31
  ### Fixed
15
32
  - the table preferences (pagelength, column visibility, search) are stored in the local browser cache. Fixes #315 #314 #265 #211 (@robertcheramy)
16
- - Update "refresh" and "Upldate node list" to more meaningfull texts (@robertcheramy)
33
+ - Update "refresh" and "Update node list" to more meaningful texts (@robertcheramy)
17
34
 
18
35
  ## [0.15.1 – 2025-02-20]
19
36
  This patch release fixes javascript errors.
data/README.md CHANGED
@@ -3,15 +3,25 @@
3
3
  [![Build Status](https://github.com/ytti/oxidized-web/actions/workflows/ruby.yml/badge.svg)](https://github.com/ytti/oxidized-web/actions/workflows/ruby.yml)
4
4
  [![Gem Version](https://badge.fury.io/rb/oxidized-web.svg)](http://badge.fury.io/rb/oxidized-web)
5
5
 
6
- Web userinterface and RESTful API for Oxidized.
6
+ Web user interface and RESTful API for Oxidized.
7
7
 
8
- This is not useful independently, see https://github.com/ytti/oxidized for install instructions.
8
+ ## Installation
9
+ This is not useful independently, see https://github.com/ytti/oxidized for
10
+ install instructions.
9
11
 
12
+ Note: because of its dependencies, installing the `oxidized-web` gem will
13
+ install `oxidized` automatically.
14
+
15
+ ## Configuration
16
+ `oxidized-web` is configured through the configuration of `oxidized`,
17
+ in the `extension` section. For details, see
18
+ [docs/configuration.md](docs/configuration.md).
19
+
20
+ ## Development
10
21
  If you wonder how to run oxidized-web from git for development, have a look at
11
22
  [docs/development.md](docs/development.md).
12
23
 
13
24
  ## License and Copyright
14
-
15
25
  Copyright 2013-2015 Saku Ytti <saku@ytti.fi>
16
26
  2013-2015 Samer Abdel-Hafez <sam@arahant.net>
17
27
 
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
3
 
4
- gemspec = eval(File.read(Dir['*.gemspec'].first))
4
+ gemspec = Gem::Specification.load(Dir['*.gemspec'].first)
5
5
  gemfile = "#{[gemspec.name, gemspec.version].join('-')}.gem"
6
6
 
7
7
  # Integrate Rubocop if available
@@ -9,7 +9,6 @@ begin
9
9
  require 'rubocop/rake_task'
10
10
 
11
11
  RuboCop::RakeTask.new
12
- task(:default).prerequisites << task(:rubocop)
13
12
  rescue LoadError
14
13
  task :rubocop do
15
14
  puts 'Install rubocop to run its rake tasks'
@@ -32,7 +31,9 @@ task :test do
32
31
  end
33
32
  end
34
33
 
34
+ desc 'build the gem'
35
35
  task build: :chmod
36
+
36
37
  ## desc 'Install gem'
37
38
  ## task :install => :build do
38
39
  ## system "sudo -Es sh -c \'umask 022; gem install gems/#{file}\'"
@@ -53,7 +54,7 @@ task push: :tag do
53
54
  system "gem push pkg/#{gemfile}"
54
55
  end
55
56
 
56
- desc 'Normalise file permissions'
57
+ desc 'Normalize file permissions'
57
58
  task :chmod do
58
59
  xbit = %w[]
59
60
  dirs = []
@@ -99,6 +100,10 @@ task :weblibs do
99
100
  weblibs << 'node_modules/datatables.net-buttons/js/dataTables.buttons.js'
100
101
  weblibs << 'node_modules/datatables.net-buttons/js/buttons.colVis.js'
101
102
 
103
+ # dayjs
104
+ weblibs << 'node_modules/dayjs/dayjs.min.js'
105
+ weblibs << 'node_modules/dayjs-plugin-utc/dist/dayjs-plugin-utc.min.js'
106
+
102
107
  weblibs.each do |w|
103
108
  cp(w, 'lib/oxidized/web/public/weblibs')
104
109
  end
@@ -108,4 +113,4 @@ task :weblibs do
108
113
  end
109
114
  end
110
115
 
111
- task default: :test
116
+ task default: %i[rubocop test]
@@ -0,0 +1,90 @@
1
+ # Basic configuration
2
+ The RESTful API and web interface are enabled by installing the `oxidized-web`
3
+ gem and configuring the `extensions.oxidized-web:` section in the configuration
4
+ file:
5
+ ```yaml
6
+ extensions:
7
+ oxidized-web:
8
+ load: true
9
+ # enter your configuration here
10
+ ```
11
+
12
+ You can set the following parameter:
13
+ - `load`: `true`/`false`: Enables or disables the `oxidized-web` extension
14
+ (default: `false`)
15
+ - `listen`: Specifies the interface to bind to (default: `127.0.0.1`). Valid
16
+ options:
17
+ - `127.0.0.1`: Allows IPv4 connections from localhost only
18
+ - `'[::1]'`: Allows IPv6 connections from localhost only
19
+ - `<IPv4-Address>` or `'[<IPv6-Address>]'`: Binds to a specific interface
20
+ - `0.0.0.0`: Binds to any IPv4 interface
21
+ - `'[::]'`: Binds to any IPv4 and IPv6 interface
22
+ - `port`: Specifies the TCP port to listen to (default: `8888`)
23
+ - `url_prefix`: Defines a URL prefix (default: no prefix)
24
+ - `vhosts`: A list of virtual hosts to listen to. If not specified, it will
25
+ respond to any virtual host.
26
+
27
+ ## Examples
28
+
29
+ ```yaml
30
+ # Listen on http://[::1]:8888/
31
+ extensions:
32
+ oxidized-web:
33
+ load: true
34
+ listen: '[::1]'
35
+ port: 8888
36
+ ```
37
+
38
+ ```yaml
39
+ # Listen on http://127.0.0.1:8888/
40
+ extensions:
41
+ oxidized-web:
42
+ load: true
43
+ listen: 127.0.0.1
44
+ port: 8888
45
+ ```
46
+
47
+ ```yaml
48
+ # Listen on http://[2001:db8:0:face:b001:0:dead:beaf]:8888/oxidized/
49
+ extensions:
50
+ oxidized-web:
51
+ load: true
52
+ listen: '[2001:db8:0:face:b001:0:dead:beaf]'
53
+ port: 8888
54
+ url_prefix: oxidized
55
+ ```
56
+
57
+ ```yaml
58
+ # Listen on http://10.0.0.1:8000/oxidized/
59
+ extensions:
60
+ oxidized-web:
61
+ load: true
62
+ listen: 10.0.0.1
63
+ port: 8000
64
+ url_prefix: oxidized
65
+ ```
66
+
67
+ ```yaml
68
+ # Listen on any interface to http://oxidized.rocks:8888 and
69
+ # http://oxidized:8888
70
+ extensions:
71
+ oxidized-web:
72
+ load: true
73
+ listen: '[::]'
74
+ url_prefix: oxidized
75
+ vhosts:
76
+ - oxidized.rocks
77
+ - oxidized
78
+ ```
79
+
80
+ # Hide node vars
81
+ Some node vars (enable, password) can contain sensible data. You can list the
82
+ vars to be hidden under `hide_node_vars`:
83
+ ```yaml
84
+ extensions:
85
+ oxidized-web:
86
+ load: true
87
+ hide_node_vars:
88
+ - enable
89
+ - password
90
+ ```
data/docs/development.md CHANGED
@@ -21,7 +21,7 @@ bundle exec oxidized
21
21
  Changes to haml templates are reloaded on the fly. For changes to the ruby
22
22
  scripts, you have to stop an restart `bundle exec oxidized`.
23
23
 
24
- ## Paralell development between oxidized and oxidized-web
24
+ ## Parallel development between oxidized and oxidized-web
25
25
  You may need to make some changes in oxidized **and** oxidized-web. For this,
26
26
  git clone oxidized and oxidized-web in a common root directory.
27
27
 
@@ -39,12 +39,12 @@ bundle install
39
39
  bundle exec bin/oxidized
40
40
  ```
41
41
 
42
- Be careful when commiting your work in oxidized *NOT* to include the changes to
42
+ Be careful when committing your work in oxidized *NOT* to include the changes to
43
43
  Gemfile, as this is a local change for development. I (@robertcheramy) didn't
44
44
  find a better way to do this, better ideas are welcome :-)
45
45
 
46
46
  If your changes to oxidized **AND** oxidzed-web are dependent from another, make
47
- sure you document this in the respectives CHANGELOG.md, so that everyone is
47
+ sure you document this in the respective CHANGELOG.md, so that everyone is
48
48
  informed at the next release.
49
49
 
50
50
  Note: you can also add the dependency to oxidized in oxidized-web, in the same
@@ -85,6 +85,12 @@ forget to document your changes in CHANGELOG.md.
85
85
 
86
86
  # How to release a new version of Oxidized-web?
87
87
 
88
+ ## Version numbering
89
+ Oxidized-web versions are numbered like major.minor.patch
90
+ - currently, the major version is 0.
91
+ - minor is incremented when releasing new features.
92
+ - patch is incremented when releasing fixes only.
93
+
88
94
  ## Review changes
89
95
  Run `git diff 0.xx.yy..master` (where `0.xx.yy` is to be changed to the last
90
96
  release) and review all the changes that have been done. Have a specific look
@@ -100,73 +106,72 @@ bundle update
100
106
  bundle outaded
101
107
  ```
102
108
 
103
- Retest after updating!
109
+ Test again after updating!
104
110
 
105
111
  ## Update the weblibs to the latest versions
106
112
  ```
107
113
  npm outdated
108
114
  ```
109
115
 
110
- Retest after updating!
111
-
112
- ## Update rubocup .rubocop_todo.yml
113
- Run `bundle exec rubocop --auto-gen-config`,
114
- and make sure `bundle exec rake` passes after it.
115
-
116
- If you change some code => Restart the release process at the beginning ;-)
116
+ Test again after updating!
117
117
 
118
118
  ## Make sure the file permissions are correct
119
119
  Run `bundle exec rake chmod`
120
120
 
121
- ## Test, test test!
122
- Run `bundle exec rake` on the git repository to check the code against rubocop and rund the
123
- defined tests in `/spec`.
121
+ ## Create a release branch
122
+ Name the release branch `release/0.xx.yy`
124
123
 
125
- Run Oxidized-web from git against the latest Oxidized version `bundle exec oxdized`
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`
126
130
 
127
- Run Oxidized-web from git against the latest git of Oxidized (see above).
131
+ Upload the branch to github, make a Pull Request for it.
128
132
 
129
- Do not integrate late PRs into master if they do not fix issues for the release. The must wait for the next release.
133
+ ## Test!
134
+ Run `bundle exec rake` on the git repository to check the code against rubocop
135
+ and run the defined tests in `/spec`.
136
+
137
+ Run Oxidized-web from git against the latest Oxidized version `bundle exec oxdized`
130
138
 
131
139
  When testing the web application, open the javascript console in the browser to
132
140
  see any errors.
133
141
 
134
- ## Version numbering
135
- Oxidized-web versions are nummered like major.minor.patch
136
- - currently, the major version is 0.
137
- - minor is incremented when releasing new features.
138
- - patch is incremented when releasing fixes only.
139
-
140
142
  ## Release
141
- 1. Checkout the master branch of oxidized-web. Make sure you are up to date with origin.
142
- 2. Change the version in lib/oxidized/web/version.rb
143
- 3. Change CHANGELOG.md to replace [Unreleased] with [0.xx.yy – 202Y-MM-DD]
144
- 4. Run `git diff` to check your changes
145
- 5. Commit the changes to the local git repository with a commit message “chore(release): release version 0.xx.yy”
146
- 6. Tag the commit with `git tag -a 0.xx.yy -m "Release 0.xx.yy"`
147
- 7. Build the gem with ‘rake build’
148
- 8. Install an test the gem locally:
149
- ```
143
+ 1. Merge the Pull Request into master with the commit message
144
+ `chore(release): release version 0.3x.y`
145
+ 2. `git pull` master
146
+ 3. Tag the commit with `git tag -a 0.xx.yy -m "Release 0.xx.yy"`
147
+ 4. Build the gem with ‘rake build’
148
+ 5. Run `git diff` to check if there have been more changes (there shouldn't)
149
+ 6. Install an test the gem locally
150
+ ```shell
150
151
  gem install --user-install pkg/oxidized-web-0.xx.yy.gem
151
152
  ~/.local/share/gem/ruby/3.1.0/bin/oxidized
152
153
  ```
154
+
153
155
  ## Release in github
154
- 1. Push the commit and the tag to github:
156
+ Push the tag to github:
155
157
  ```
156
- git push
157
158
  git push origin 0.xx.yy
158
159
  ```
159
160
 
160
- 2. Make a release from the tag in github
161
- - Thank the contributors
162
- - Only describe major changes, and refer to CHANGELOG.md
161
+ Make a release from the tag in github.
162
+ - Take the release notes frm CHANGELOG.md
163
163
  - List new contributors (generated automatically)
164
+ - Keep the Full Changelog (generated automatically)
164
165
 
165
166
  ## Release in rubygems
166
167
  Push the gem with ‘rake push’
167
168
 
168
169
  You need an account at rubygems which is allowed to push oxidized
169
170
 
171
+ ## Release in docker.io
172
+ In order to release in docker.io, oxidized be released to a new version,
173
+ as the container is build there.
174
+
170
175
  ## Update CHANGELOG.md for next release
171
176
  Add
172
177
  ```
@@ -181,6 +186,3 @@ Add
181
186
  ```
182
187
  And push to github
183
188
 
184
- ## Congratulate yourself
185
- Great job! Treat yourself to your favorite drink, you deserve it!
186
-
@@ -2,22 +2,22 @@ var convertTime = function() {
2
2
  /* Convert UTC times to local browser times
3
3
  * Requires that the times on the server are UTC
4
4
  * Requires a class name of `time` to be set on element desired to be changed
5
- * Requires that element have a text in the format of `YYYY-mm-dd HH:MM:SS`
6
- * See ytti/oxidized-web #16
5
+ * Requires that element has an attribute `epoch` containing the seconds since
6
+ * 1.1.1970 UTC.
7
7
  */
8
8
  $('.time').each(function() {
9
9
  var content = $(this).text();
10
- if(content === 'never' || content === 'unknown' || content === '') { return; }
11
- var utcTime = content.split(' ');
12
- var date = new Date(utcTime[0] + 'T' + utcTime[1] + 'Z');
13
- var year = date.getFullYear();
14
- var month = ("0"+(date.getMonth()+1)).slice(-2);
15
- var day = ("0" + date.getDate()).slice(-2);
16
- var hour = ("0" + date.getHours()).slice(-2);
17
- var minute = ("0" + date.getMinutes()).slice(-2);
18
- var second = ("0" + date.getSeconds()).slice(-2);
19
- var timeZone = date.toString().match(/[A-Z]{3,4}[+-][0-9]{4}/)[0];
20
- $(this).text(year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second + ' ' + timeZone);
10
+ if(content === 'never' || content === 'unknown' || content === '') {
11
+ return;
12
+ }
13
+ var epoch = $(this).attr('epoch');
14
+ if(epoch === undefined) {
15
+ return;
16
+ }
17
+ var utcTime = Number(epoch);
18
+ var dj = dayjs.unix(utcTime).local();
19
+
20
+ $(this).text(dj.format('YYYY-MM-DD HH:mm:ss [(UTC]Z[)]'));
21
21
  });
22
22
  };
23
23
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/)
2
+ * Bootstrap Icons v1.13.1 (https://icons.getbootstrap.com/)
3
3
  * Copyright 2019-2024 The Bootstrap Authors
4
4
  * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
5
5
  */
@@ -7,8 +7,8 @@
7
7
  @font-face {
8
8
  font-display: block;
9
9
  font-family: "bootstrap-icons";
10
- src: url("./fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"),
11
- url("./fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") format("woff");
10
+ src: url("./fonts/bootstrap-icons.woff2?e34853135f9e39acf64315236852cd5a") format("woff2"),
11
+ url("./fonts/bootstrap-icons.woff?e34853135f9e39acf64315236852cd5a") format("woff");
12
12
  }
13
13
 
14
14
  .bi::before,
@@ -2076,3 +2076,31 @@ url("./fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") format("wof
2076
2076
  .bi-suitcase2-fill::before { content: "\f901"; }
2077
2077
  .bi-suitcase2::before { content: "\f902"; }
2078
2078
  .bi-vignette::before { content: "\f903"; }
2079
+ .bi-bluesky::before { content: "\f7f9"; }
2080
+ .bi-tux::before { content: "\f904"; }
2081
+ .bi-beaker-fill::before { content: "\f905"; }
2082
+ .bi-beaker::before { content: "\f906"; }
2083
+ .bi-flask-fill::before { content: "\f907"; }
2084
+ .bi-flask-florence-fill::before { content: "\f908"; }
2085
+ .bi-flask-florence::before { content: "\f909"; }
2086
+ .bi-flask::before { content: "\f90a"; }
2087
+ .bi-leaf-fill::before { content: "\f90b"; }
2088
+ .bi-leaf::before { content: "\f90c"; }
2089
+ .bi-measuring-cup-fill::before { content: "\f90d"; }
2090
+ .bi-measuring-cup::before { content: "\f90e"; }
2091
+ .bi-unlock2-fill::before { content: "\f90f"; }
2092
+ .bi-unlock2::before { content: "\f910"; }
2093
+ .bi-battery-low::before { content: "\f911"; }
2094
+ .bi-anthropic::before { content: "\f912"; }
2095
+ .bi-apple-music::before { content: "\f913"; }
2096
+ .bi-claude::before { content: "\f914"; }
2097
+ .bi-openai::before { content: "\f915"; }
2098
+ .bi-perplexity::before { content: "\f916"; }
2099
+ .bi-css::before { content: "\f917"; }
2100
+ .bi-javascript::before { content: "\f918"; }
2101
+ .bi-typescript::before { content: "\f919"; }
2102
+ .bi-fork-knife::before { content: "\f91a"; }
2103
+ .bi-globe-americas-fill::before { content: "\f91b"; }
2104
+ .bi-globe-asia-australia-fill::before { content: "\f91c"; }
2105
+ .bi-globe-central-south-asia-fill::before { content: "\f91d"; }
2106
+ .bi-globe-europe-africa-fill::before { content: "\f91e"; }