bible270 1.14.0 → 1.15.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -2
- data/README.md +2 -0
- data/app/controllers/bible270/readers_controller.rb +15 -1
- data/app/views/bible270/readers/index.html.erb +26 -7
- data/app/views/bible270/shared/_styles.html.erb +14 -0
- data/lib/bible270/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a682ef9e0099682fb05d4fcde854169ba1f47add452ac6adef9da455680fa801
|
|
4
|
+
data.tar.gz: 3c3eb36fb2bab664ce3e2c0891ab5d770afd47c69fdb1e0b5fd8f8eb61e1e83a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 120ef747f43ba910288881479331892daf84cdeac530786666632b652c7354267ceda0b2d82094d7fae359e3e80cf1bf76c6a03918955795b5a87fdc249cf5e9
|
|
7
|
+
data.tar.gz: 4b21a0e51b306daa5c8e39d7b248ac15d09f4b16db8abbc471c338f1f41736d46c1705bb55c010b575170b519e3607d780f2c710938f6b4fc9f8b885a71ab988
|
data/CHANGELOG.md
CHANGED
|
@@ -6,11 +6,20 @@ Notable changes, following [Keep a Changelog](https://keepachangelog.com/en/1.1.
|
|
|
6
6
|
|
|
7
7
|
### Added
|
|
8
8
|
|
|
9
|
-
-
|
|
9
|
+
- show a compact progress bar and completed-day count beside each Community reader for signed-in users, including non-admin preview; retain alphabetical order and restrict management links and schedule status to admins
|
|
10
|
+
- use muted, theme-matched Community progress colors, including warm tan for Cedar, with distinct fills and tracks
|
|
11
|
+
- mark today with a thin line in Community progress bars using each reader's active schedule, with a tooltip and accessible day description
|
|
12
|
+
|
|
13
|
+
## [1.14.0] - 2026-11-06
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- add a session-only **View as non-admin** toggle; hide admin-only details and disable admin actions while retaining the Admin tab to switch back. Own check-offs and reflections still work; roles and other sessions are unchanged.
|
|
10
18
|
|
|
11
19
|
### Changed
|
|
12
20
|
|
|
13
21
|
- shorten the consistency explanation and show it only when sorting by Consistency ranking; keep reader consistency details on every sort
|
|
22
|
+
- align both view-toggle buttons to the right of the Admin label on the same row
|
|
14
23
|
- shorten the README and changelog while retaining setup instructions, upgrade warnings, and release links
|
|
15
24
|
|
|
16
25
|
## [1.13.5] - 2026-11-02
|
|
@@ -796,7 +805,8 @@ This is the initial public release.
|
|
|
796
805
|
|
|
797
806
|
- Email sign-in requires working Action Mailer delivery in the host application. Set `config.mailer_from`; delivery is inline by default, or set `email_sign_in_deliver_later` when a queue backend is available.
|
|
798
807
|
|
|
799
|
-
[Unreleased]: https://github.com/avonderluft/bible270/compare/v1.
|
|
808
|
+
[Unreleased]: https://github.com/avonderluft/bible270/compare/v1.14.0...main
|
|
809
|
+
[1.14.0]: https://github.com/avonderluft/bible270/compare/v1.13.5...v1.14.0
|
|
800
810
|
[1.13.5]: https://github.com/avonderluft/bible270/compare/v1.13.3...v1.13.5
|
|
801
811
|
[1.13.3]: https://github.com/avonderluft/bible270/compare/v1.13.2...v1.13.3
|
|
802
812
|
[1.13.2]: https://github.com/avonderluft/bible270/compare/v1.13.1...v1.13.2
|
data/README.md
CHANGED
|
@@ -22,6 +22,8 @@ The Old Testament and Revelation 22 finish on day 270 alongside Psalm 1. Daily r
|
|
|
22
22
|
|
|
23
23
|
`Bible270::Plan` generates the schedule deterministically from `Bible270::Versification`; the schedule is not stored in the database. **Progress and reflections are public.**
|
|
24
24
|
|
|
25
|
+
Signed-in readers see a small progress bar and completed-day count on Community, including in non-admin preview. The list stays alphabetical; only fully completed days count. A thin line marks today on each reader's active schedule; undated, future, and ended schedules have no marker. Visitors see names and join dates; management links and written ahead/behind status remain admin-only.
|
|
26
|
+
|
|
25
27
|
## Requirements
|
|
26
28
|
|
|
27
29
|
- **Ruby >= 3.2** and a **Rails >= 7.2** host app. CI covers selected combinations through Ruby 4.0 / Rails 8.1; check your host's dependencies before upgrading Ruby.
|
|
@@ -8,7 +8,10 @@ module Bible270
|
|
|
8
8
|
@readers = Reader.with_avatar.to_a.sort_by(&:sort_name)
|
|
9
9
|
@today_day = current_reader&.today_day
|
|
10
10
|
@show_admin_progress = b270_admin_view?
|
|
11
|
-
|
|
11
|
+
return unless signed_in?
|
|
12
|
+
|
|
13
|
+
@days_completed = Reader.completed_days_by_id
|
|
14
|
+
@reader_today_days = community_today_days
|
|
12
15
|
end
|
|
13
16
|
|
|
14
17
|
# The reader's own progress. Deliberately open to visitors: the panel shows an
|
|
@@ -46,6 +49,17 @@ module Bible270
|
|
|
46
49
|
|
|
47
50
|
private
|
|
48
51
|
|
|
52
|
+
def community_today_days
|
|
53
|
+
# Resolve the shared schedule once, not with a settings query for every reader.
|
|
54
|
+
shared_start = Setting.run_start_date
|
|
55
|
+
today = Bible270.today
|
|
56
|
+
@readers.to_h do |reader|
|
|
57
|
+
start = (Bible270.config.allow_reader_start_date && reader.started_on) || shared_start
|
|
58
|
+
day = Plan.day_for(today, start, clamp: false)
|
|
59
|
+
[reader.id, day && Plan.valid_day?(day) ? day : nil]
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
49
63
|
def recent_reflections(reader, limit:)
|
|
50
64
|
comments = reader.comments.recent.with_thread_details.limit(limit).to_a
|
|
51
65
|
ids = comments.map(&:id)
|
|
@@ -8,15 +8,34 @@
|
|
|
8
8
|
<% @readers.each do |r| %>
|
|
9
9
|
<div class="b270-li">
|
|
10
10
|
<%= link_to b270_avatar(r, size: 72), reader_path(r), "aria-label": r.display_name %>
|
|
11
|
-
<div>
|
|
11
|
+
<div class="b270-community-reader-details">
|
|
12
12
|
<div class="name"><%= link_to r.display_name, reader_path(r), style: "text-decoration:none" %></div>
|
|
13
|
-
<div class="sub">
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
<div class="sub">joined <%= Bible270.local_time(r.created_at).strftime("%b %-d %Y") %></div>
|
|
14
|
+
<% if @days_completed %>
|
|
15
|
+
<% completed = @days_completed[r.id].to_i %>
|
|
16
|
+
<% today_day = @reader_today_days[r.id] %>
|
|
17
|
+
<div class="b270-reader-progress">
|
|
18
|
+
<div class="b270-bar" role="progressbar" aria-label="<%= r.display_name %>: reading progress"
|
|
19
|
+
aria-valuemin="0" aria-valuemax="<%= Bible270::Plan::DAYS %>" aria-valuenow="<%= completed %>"
|
|
20
|
+
aria-valuetext="<%= completed %> of <%= Bible270::Plan::DAYS %> days complete<%= "; today is day #{today_day}" if today_day %>"
|
|
21
|
+
title="<%= "Today: day #{today_day} of #{Bible270::Plan::DAYS}" if today_day %>">
|
|
22
|
+
<i style="width:<%= completed.fdiv(Bible270::Plan::DAYS) * 100 %>%"></i>
|
|
23
|
+
<% if today_day %>
|
|
24
|
+
<span class="b270-progress-today" aria-hidden="true"
|
|
25
|
+
style="left:clamp(0px, <%= today_day.fdiv(Bible270::Plan::DAYS) * 100 %>%, calc(100% - 1px))"></span>
|
|
26
|
+
<% end %>
|
|
27
|
+
</div>
|
|
28
|
+
<% if @show_admin_progress %>
|
|
29
|
+
<%= link_to "#{completed} / #{Bible270::Plan::DAYS} days", admin_reader_path(r),
|
|
30
|
+
class: "b270-reader-progress-count b270-admin-progress" %>
|
|
31
|
+
<% else %>
|
|
32
|
+
<span class="b270-reader-progress-count"><%= completed %> / <%= Bible270::Plan::DAYS %> days</span>
|
|
33
|
+
<% end %>
|
|
34
|
+
</div>
|
|
35
|
+
<% if @show_admin_progress %>
|
|
36
|
+
<div class="sub b270-community-status"><%= r.progress_status(completed_days: completed) %></div>
|
|
18
37
|
<% end %>
|
|
19
|
-
|
|
38
|
+
<% end %>
|
|
20
39
|
</div>
|
|
21
40
|
</div>
|
|
22
41
|
<% end %>
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
--button-surface:#231f18; --button-ink:#ece6da;
|
|
11
11
|
--teal-fill:#2f6a67; --oxblood-fill:#8a2f3b; --gold-fill:#80631d;
|
|
12
12
|
--teal-mark:#2f6a67; --oxblood-mark:#8a2f3b; --gold-mark:#80631d;
|
|
13
|
+
--community-progress-fill:#897755;
|
|
13
14
|
--alert-surface:#f6e4e2; --alert-ink:#7a2b28; --alert-line:#e6c3bf;
|
|
14
15
|
--notice-surface:#e7efe6; --notice-ink:#2f5d34; --notice-line:#c6dcc6;
|
|
15
16
|
color-scheme:light;
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
--button-surface:#29382d; --button-ink:#edf0e9;
|
|
42
43
|
--teal-fill:#356b60; --oxblood-fill:#905466; --gold-fill:#776023;
|
|
43
44
|
--teal-mark:#356b60; --oxblood-mark:#905466; --gold-mark:#776023;
|
|
45
|
+
--community-progress-fill:#71826b;
|
|
44
46
|
--alert-surface:#f5e7e9; --alert-ink:#783f4c; --alert-line:#d9b7c0;
|
|
45
47
|
--notice-surface:#e3eee0; --notice-ink:#375b37; --notice-line:#b8d1b1;
|
|
46
48
|
}
|
|
@@ -56,6 +58,7 @@
|
|
|
56
58
|
--button-surface:#293746; --button-ink:#ecf0f5;
|
|
57
59
|
--teal-fill:#316977; --oxblood-fill:#86566f; --gold-fill:#7b602b;
|
|
58
60
|
--teal-mark:#316977; --oxblood-mark:#86566f; --gold-mark:#7b602b;
|
|
61
|
+
--community-progress-fill:#718398;
|
|
59
62
|
--alert-surface:#f3e7ee; --alert-ink:#754357; --alert-line:#d7bbc9;
|
|
60
63
|
--notice-surface:#e3eeea; --notice-ink:#355c50; --notice-line:#b7d0c7;
|
|
61
64
|
}
|
|
@@ -72,6 +75,7 @@
|
|
|
72
75
|
--button-surface:#201c12; --button-ink:#ded8c5;
|
|
73
76
|
--teal-fill:#2f5955; --oxblood-fill:#702731; --gold-fill:#695116;
|
|
74
77
|
--teal-mark:#409594; --oxblood-mark:#a73d50; --gold-mark:#b18b2b;
|
|
78
|
+
--community-progress-fill:#a38d68;
|
|
75
79
|
--alert-surface:#42282a; --alert-ink:#ffc0b8; --alert-line:#a66d68;
|
|
76
80
|
--notice-surface:#25382a; --notice-ink:#b6dfb6; --notice-line:#6d956e;
|
|
77
81
|
}
|
|
@@ -88,6 +92,7 @@
|
|
|
88
92
|
--button-surface:#102219; --button-ink:#e3e7d5;
|
|
89
93
|
--teal-fill:#28554b; --oxblood-fill:#6a2c3c; --gold-fill:#62501e;
|
|
90
94
|
--teal-mark:#4d9d89; --oxblood-mark:#c46c7f; --gold-mark:#b79b45;
|
|
95
|
+
--community-progress-fill:#7e9a7a;
|
|
91
96
|
--alert-surface:#3e282c; --alert-ink:#ffc1c2; --alert-line:#a87479;
|
|
92
97
|
--notice-surface:#243b2b; --notice-ink:#c1e2b9; --notice-line:#779c70;
|
|
93
98
|
}
|
|
@@ -104,6 +109,7 @@
|
|
|
104
109
|
--button-surface:#0c1829; --button-ink:#e0e7ef;
|
|
105
110
|
--teal-fill:#245363; --oxblood-fill:#622d49; --gold-fill:#5d4c25;
|
|
106
111
|
--teal-mark:#4c9eae; --oxblood-mark:#b86382; --gold-mark:#b59a54;
|
|
112
|
+
--community-progress-fill:#8195ad;
|
|
107
113
|
--alert-surface:#3b2432; --alert-ink:#ffc0cd; --alert-line:#a66c80;
|
|
108
114
|
--notice-surface:#1e3430; --notice-ink:#b7decc; --notice-line:#6b9787;
|
|
109
115
|
}
|
|
@@ -121,6 +127,7 @@
|
|
|
121
127
|
--button-surface:#201c12; --button-ink:#ded8c5;
|
|
122
128
|
--teal-fill:#2f5955; --oxblood-fill:#702731; --gold-fill:#695116;
|
|
123
129
|
--teal-mark:#409594; --oxblood-mark:#a73d50; --gold-mark:#b18b2b;
|
|
130
|
+
--community-progress-fill:#a38d68;
|
|
124
131
|
--alert-surface:#42282a; --alert-ink:#ffc0b8; --alert-line:#a66d68;
|
|
125
132
|
--notice-surface:#25382a; --notice-ink:#b6dfb6; --notice-line:#6d956e;
|
|
126
133
|
}
|
|
@@ -563,6 +570,13 @@
|
|
|
563
570
|
.b270-li+.b270-li{border-top:1px solid var(--line-soft)}
|
|
564
571
|
.b270-li .name{font-weight:600}
|
|
565
572
|
.b270-li .sub{font-size:12.5px;color:var(--faint)}
|
|
573
|
+
.b270-community-reader-details{flex:1;min-width:0;overflow-wrap:anywhere}
|
|
574
|
+
.b270-reader-progress{display:flex;align-items:center;gap:8px;max-width:280px;margin-top:6px;flex-wrap:wrap}
|
|
575
|
+
.b270-reader-progress .b270-bar{position:relative;flex:1 1 80px;min-width:0}
|
|
576
|
+
.b270-reader-progress .b270-bar>i{background:var(--community-progress-fill)}
|
|
577
|
+
.b270-progress-today{position:absolute;top:0;bottom:0;width:1px;background:var(--ink);box-shadow:0 0 0 1px var(--card);pointer-events:none}
|
|
578
|
+
.b270 .b270-reader-progress-count{font-size:12px;font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}
|
|
579
|
+
.b270-community-status{margin-top:3px}
|
|
566
580
|
.b270-li .b270-admin-progress{text-decoration:none}
|
|
567
581
|
.b270-li .b270-admin-progress:hover,.b270-li .b270-admin-progress:focus-visible{color:var(--gold)}
|
|
568
582
|
.b270-li .stat{margin-left:auto;text-align:right}
|
data/lib/bible270/version.rb
CHANGED