houseaccount 0.8.1 → 0.9.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 +19 -0
- data/README.md +10 -8
- data/config/locales/houseaccount.en.yml +4 -1
- data/lib/houseaccount/version.rb +1 -1
- data/lib/houseaccount.rb +8 -4
- data/public/index.html +2 -2
- data/public/js/houseaccount.js +15 -15
- data/public/{v0.8.1 → v0.9.0}/css/houseaccount.css +1 -1
- data/public/{v0.8.1 → v0.9.0}/js/houseaccount.js +15 -15
- metadata +19 -19
- /data/public/{v0.8.1 → v0.9.0}/font/bootstrap-icons-6LILWPE2.woff2 +0 -0
- /data/public/{v0.8.1 → v0.9.0}/font/quicksand-500-latin-QHYSRFVK.woff2 +0 -0
- /data/public/{v0.8.1 → v0.9.0}/font/quicksand-500-latin-ext-QZ4PXVHB.woff2 +0 -0
- /data/public/{v0.8.1 → v0.9.0}/font/quicksand-500-latin-ext.woff2 +0 -0
- /data/public/{v0.8.1 → v0.9.0}/font/quicksand-500-latin.woff2 +0 -0
- /data/public/{v0.8.1 → v0.9.0}/font/quicksand-500-vietnamese-RRA5CUQB.woff2 +0 -0
- /data/public/{v0.8.1 → v0.9.0}/font/quicksand-500-vietnamese.woff2 +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/bootstrap.css +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/dawn.css +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/dracula.css +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/gruvbox.css +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/monokai.css +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/nord.css +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/one_dark.css +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/solarized.css +0 -0
- /data/public/{v0.8.1 → v0.9.0}/theme/tokyo_night.css +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eda698b249d0a859fdd7e065f4eb5e03b80aac58f18427980f71fc4afa64544d
|
|
4
|
+
data.tar.gz: 5235bd2a69be8fccb8c1e0d0eb084211a8ac5300ffc38d4a9f5b1c7d74f48313
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5098a845c0501400495e7cd5452ba5d6ed070d7bffd0f511ea424e525df08ed34782e5cc70a7a4462d4962eb14fc357c5f1df013116720e3a784242ee19ecf6b
|
|
7
|
+
data.tar.gz: 6923638ae33a328473bb3e343d9296fbf3b332c2f722c6bc9c7a77cb35c258a8fe1943f00204166d1a0458a34b4de48c426360f8e4ab9bf706d6fdc567881e9c
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,25 @@ For more information about changelogs, check [Keep a Changelog](http://keepachan
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## 0.9.0 - 2026-09-14
|
|
11
|
+
|
|
12
|
+
* [Breaking change] A one-time code carries the line for the phone again
|
|
13
|
+
|
|
14
|
+
0.8.0 took `@host #code` out because it is plainly visible in the message that arrives.
|
|
15
|
+
Visible is what it is for: it is Apple's own format, it tells a reader which site the code
|
|
16
|
+
belongs to, and it binds the code to that domain so no other site can ask for it. Without
|
|
17
|
+
it iOS falls back to guessing at the text, which it does not do reliably — the suggestion
|
|
18
|
+
above the keyboard stopped appearing. `HouseAccount.one_time_code` takes `host:` again,
|
|
19
|
+
defaulting to the application's own.
|
|
20
|
+
|
|
21
|
+
* [Fix] A seventh digit leaves no bar behind in the first slot
|
|
22
|
+
|
|
23
|
+
The real field lies transparently across all six slots, and its hidden text sits crammed
|
|
24
|
+
against the left edge rather than under them. A keystroke iOS cannot place answers by
|
|
25
|
+
selecting inside that field, and the grab handles it draws for a selection are its own to
|
|
26
|
+
paint — so one surfaced over the first slot. The selection is collapsed back to the end
|
|
27
|
+
once the code is whole.
|
|
28
|
+
|
|
10
29
|
## 0.8.1 - 2026-09-14
|
|
11
30
|
|
|
12
31
|
* [Fix] The wall is drawn again after a page Turbo morphs
|
data/README.md
CHANGED
|
@@ -20,10 +20,10 @@ gem install houseaccount
|
|
|
20
20
|
|
|
21
21
|
```ruby
|
|
22
22
|
# Gemfile
|
|
23
|
-
gem 'houseaccount', '~> 0.
|
|
23
|
+
gem 'houseaccount', '~> 0.9.0'
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
`~> 0.
|
|
26
|
+
`~> 0.9.0` stops short of `0.10`, since below 1.0 a minor release may break whatever it likes.
|
|
27
27
|
Rails 8.1 and Ruby 3.2 are the minimum.
|
|
28
28
|
|
|
29
29
|
A page takes the gem's layout, and wears the same head:
|
|
@@ -60,7 +60,7 @@ which Pages redirects away from.
|
|
|
60
60
|
|
|
61
61
|
With the gem in the bundle an app serves `/css/houseaccount.css`, `/js/houseaccount.js`,
|
|
62
62
|
`/theme/*`, `/font/*`, `/logo/*` and `/favicon/*` itself — and its own version's copy under
|
|
63
|
-
`/v0.
|
|
63
|
+
`/v0.9.0/`, which is what the head helper links, cached for a year — answers a 400, 404, 406, 422 or 500
|
|
64
64
|
with the house's own page, and has these helpers in every view:
|
|
65
65
|
|
|
66
66
|
```erb
|
|
@@ -181,13 +181,15 @@ HouseAccount::Message.new side: :left, text: answer.note, sender: 'Claude', at:
|
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
A code sent to a phone is the same words from every app, `HouseAccount.one_time_code`, in
|
|
184
|
-
each voice they are said in. `written` is the
|
|
185
|
-
|
|
184
|
+
each voice they are said in. `written` is the sentence a person reads and, under it, the
|
|
185
|
+
`@host #code` line that offers the code above the keyboard on the phone it arrived on;
|
|
186
|
+
`spoken` is the sentence alone, its digits one at a time so a listener can write them down.
|
|
187
|
+
The host is the application's default one unless `host:` says otherwise, and the words are
|
|
186
188
|
the gem's `config/locales` entry.
|
|
187
189
|
|
|
188
190
|
```ruby
|
|
189
191
|
HouseAccount.one_time_code(contact.pin).written
|
|
190
|
-
# => "Enter this 6-digit code to proceed: 482913"
|
|
192
|
+
# => "Enter this 6-digit code to proceed: 482913\n\n@houseaccount.com #482913"
|
|
191
193
|
HouseAccount.one_time_code(contact.pin).spoken
|
|
192
194
|
# => "Enter this 6-digit code to proceed: 4, 8, 2, 9, 1, 3"
|
|
193
195
|
```
|
|
@@ -203,8 +205,8 @@ Those follow the latest release. Every release is also kept whole under its own
|
|
|
203
205
|
forever and cached for a year, for a page that would rather move on its own terms:
|
|
204
206
|
|
|
205
207
|
```html
|
|
206
|
-
<link rel='stylesheet' href='https://design.houseaccount.com/v0.
|
|
207
|
-
<script type='module' src='https://design.houseaccount.com/v0.
|
|
208
|
+
<link rel='stylesheet' href='https://design.houseaccount.com/v0.9.0/css/houseaccount.css'>
|
|
209
|
+
<script type='module' src='https://design.houseaccount.com/v0.9.0/js/houseaccount.js'></script>
|
|
208
210
|
```
|
|
209
211
|
|
|
210
212
|
A host with a Content Security Policy allows that origin for `style-src`, `script-src` and
|
|
@@ -4,7 +4,10 @@ en:
|
|
|
4
4
|
ask: Ask a question
|
|
5
5
|
close: Close
|
|
6
6
|
okay: Okay
|
|
7
|
-
one_time_code:
|
|
7
|
+
one_time_code: |-
|
|
8
|
+
Enter this 6-digit code to proceed: %{pin}
|
|
9
|
+
|
|
10
|
+
@%{host} #%{pin}
|
|
8
11
|
send: Send
|
|
9
12
|
spoken_one_time_code: 'Enter this 6-digit code to proceed: %{pin}'
|
|
10
13
|
typing: Typing
|
data/lib/houseaccount/version.rb
CHANGED
data/lib/houseaccount.rb
CHANGED
|
@@ -29,10 +29,14 @@ module HouseAccount
|
|
|
29
29
|
MARKS.key?(name) ? name : :houseaccount
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
# The
|
|
33
|
-
#
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
# The words that carry a 6-digit code to a phone, in both voices. `written` is the sentence
|
|
33
|
+
# a person reads and, under it, the line Safari matches against the page about to be filled,
|
|
34
|
+
# `@host #code`, which offers the code above the keyboard so nobody leaves for Messages to
|
|
35
|
+
# copy it. `spoken` is the sentence alone, its digits one at a time so a listener can write
|
|
36
|
+
# them down, and without a line meant for a phone rather than a person. Every app of the
|
|
37
|
+
# house that sends a code sends these, from `config/locales`.
|
|
38
|
+
def self.one_time_code(pin, host: Rails.application.default_url_options[:host])
|
|
39
|
+
Copy.new written: I18n.t('houseaccount.one_time_code', pin:, host:),
|
|
36
40
|
spoken: I18n.t('houseaccount.spoken_one_time_code', pin: pin.chars.join(', '))
|
|
37
41
|
end
|
|
38
42
|
end
|
data/public/index.html
CHANGED
|
@@ -66,8 +66,8 @@
|
|
|
66
66
|
</div>
|
|
67
67
|
<div class='col-12'>
|
|
68
68
|
<div class='card p-3'>
|
|
69
|
-
<strong>Pinned to a version — the latest is 0.
|
|
70
|
-
<span class='design-url'>https://design.houseaccount.com/v0.
|
|
69
|
+
<strong>Pinned to a version — the latest is 0.9.0</strong>
|
|
70
|
+
<span class='design-url'>https://design.houseaccount.com/v0.9.0/css/houseaccount.css · /v0.9.0/js/houseaccount.js · /v0.9.0/theme/nord.css</span>
|
|
71
71
|
<span class='small fg-2 mt-1'>Every release stays at its own prefix forever, whole and cached for a year, for a page that moves on its own terms. The unversioned paths follow the latest.</span>
|
|
72
72
|
</div>
|
|
73
73
|
</div>
|