rdbr 0.1.0 → 0.1.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 +5 -1
- data/app/public/application.js +18 -6
- data/app/public/favicon.svg +8 -0
- data/app/views/layout.haml +11 -5
- data/lib/rdbr/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a34fec0f8ef2d3976b5d3048a52d2d25db7b27551eed07c236584263daec5112
|
|
4
|
+
data.tar.gz: 8ff7094a26a39491724bc59c52ad6a611abaa4eb920565447e28941f5d5a73d4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9014e861e83a86c6d130c022c46aadc091a415c37316c8eb17f7d13580c5df763fc4da2fd3b437b325056d6c86046f7b9aaa46da736b78c057de972917e44358
|
|
7
|
+
data.tar.gz: 7c2631bd3064270523261d41f1ce2fae06c7e97975796dbfb88304bfa35e041e4fd781d687793e36e31e3d1d58f4ce035654e8863ac6a95797e5973e05ad2fda
|
data/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
RDBr follows [Semantic Versioning](https://semver.org/). Until version 1.0,
|
|
4
4
|
minor releases may change public interfaces with an accompanying migration note.
|
|
5
5
|
|
|
6
|
-
## [
|
|
6
|
+
## [0.1.1] - 2026-07-26
|
|
7
|
+
|
|
8
|
+
- Add a database favicon for easier identification in browser tabs.
|
|
9
|
+
- Add a System theme that follows the browser colour-scheme preference while
|
|
10
|
+
preserving explicit Light and Dark choices.
|
|
7
11
|
|
|
8
12
|
## [0.1.0] - 2026-07-25
|
|
9
13
|
|
data/app/public/application.js
CHANGED
|
@@ -3,16 +3,28 @@
|
|
|
3
3
|
if (!picker) return;
|
|
4
4
|
|
|
5
5
|
const storedTheme = window.localStorage.getItem('rdbr-theme');
|
|
6
|
-
|
|
6
|
+
const preference = storedTheme === 'madhat2r' ? 'dark' :
|
|
7
|
+
storedTheme === 'default' ? 'light' : storedTheme;
|
|
8
|
+
const systemTheme = window.matchMedia('(prefers-color-scheme: dark)');
|
|
9
|
+
const applyTheme = (theme) => {
|
|
10
|
+
const useDark = theme === 'dark' || (theme === 'system' && systemTheme.matches);
|
|
11
|
+
if (useDark) document.documentElement.dataset.theme = 'dark';
|
|
12
|
+
else delete document.documentElement.dataset.theme;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
picker.value = ['light', 'dark'].includes(preference) ? preference : 'system';
|
|
16
|
+
applyTheme(picker.value);
|
|
7
17
|
picker.addEventListener('change', () => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
window.localStorage.setItem('rdbr-theme', picker.value);
|
|
11
|
-
} else {
|
|
12
|
-
delete document.documentElement.dataset.theme;
|
|
18
|
+
applyTheme(picker.value);
|
|
19
|
+
if (picker.value === 'system') {
|
|
13
20
|
window.localStorage.removeItem('rdbr-theme');
|
|
21
|
+
} else {
|
|
22
|
+
window.localStorage.setItem('rdbr-theme', picker.value);
|
|
14
23
|
}
|
|
15
24
|
});
|
|
25
|
+
systemTheme.addEventListener('change', () => {
|
|
26
|
+
if (picker.value === 'system') applyTheme('system');
|
|
27
|
+
});
|
|
16
28
|
})();
|
|
17
29
|
|
|
18
30
|
(() => {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
2
|
+
<rect width="32" height="32" fill="#fff"/>
|
|
3
|
+
<g fill="none" stroke="#3f454b" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5">
|
|
4
|
+
<ellipse cx="16" cy="7" rx="10.5" ry="4"/>
|
|
5
|
+
<path d="M5.5 7v17c0 2.76 4.7 5 10.5 5s10.5-2.24 10.5-5V7"/>
|
|
6
|
+
<path d="M5.5 15.5c0 2.48 4.7 4.5 10.5 4.5s10.5-2.02 10.5-4.5"/>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|
data/app/views/layout.haml
CHANGED
|
@@ -4,13 +4,18 @@
|
|
|
4
4
|
%meta{ charset: 'utf-8' }
|
|
5
5
|
%meta{ content: 'width=device-width, initial-scale=1', name: 'viewport' }
|
|
6
6
|
%title RDBr
|
|
7
|
+
%link{ href: versioned_asset_url('/favicon.svg'), rel: 'icon', type: 'image/svg+xml' }
|
|
7
8
|
:javascript
|
|
8
9
|
(() => {
|
|
9
10
|
const storedTheme = window.localStorage.getItem('rdbr-theme');
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const preference = storedTheme === 'madhat2r' ? 'dark' :
|
|
12
|
+
storedTheme === 'default' ? 'light' : storedTheme;
|
|
13
|
+
const systemIsDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
14
|
+
if (preference === 'dark' || (!['light', 'dark'].includes(preference) && systemIsDark)) {
|
|
15
|
+
document.documentElement.dataset.theme = 'dark';
|
|
16
|
+
}
|
|
17
|
+
if (storedTheme && preference !== storedTheme) {
|
|
18
|
+
window.localStorage.setItem('rdbr-theme', preference);
|
|
14
19
|
}
|
|
15
20
|
const scrollKey = `rdbr.tableScroll:${window.location.pathname}${window.location.search}`;
|
|
16
21
|
if (window.sessionStorage.getItem(scrollKey) !== null) {
|
|
@@ -52,7 +57,8 @@
|
|
|
52
57
|
%label.theme-picker
|
|
53
58
|
%span Theme
|
|
54
59
|
%select{ data: { theme_picker: true }, 'aria-label': 'Theme' }
|
|
55
|
-
%option{ value: '
|
|
60
|
+
%option{ value: 'system' } System
|
|
61
|
+
%option{ value: 'light' } Light
|
|
56
62
|
%option{ value: 'dark' } Dark
|
|
57
63
|
%main
|
|
58
64
|
!= yield
|
data/lib/rdbr/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rdbr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Blake
|
|
@@ -193,6 +193,7 @@ files:
|
|
|
193
193
|
- README.md
|
|
194
194
|
- app/public/application.js
|
|
195
195
|
- app/public/database-diagram.js
|
|
196
|
+
- app/public/favicon.svg
|
|
196
197
|
- app/public/styles.css
|
|
197
198
|
- app/views/data.haml
|
|
198
199
|
- app/views/group.haml
|