diff --git a/internal/phonedoor/page.html b/internal/phonedoor/page.html
index 412a841..63f840f 100644
--- a/internal/phonedoor/page.html
+++ b/internal/phonedoor/page.html
@@ -16,8 +16,11 @@
diff --git a/internal/phonedoor/phonedoor_test.go b/internal/phonedoor/phonedoor_test.go
index 626b449..96f5568 100644
--- a/internal/phonedoor/phonedoor_test.go
+++ b/internal/phonedoor/phonedoor_test.go
@@ -181,6 +181,15 @@ func TestPageCarriesThePushKey(t *testing.T) {
}
}
+func TestPageHasARefreshLink(t *testing.T) {
+ var box inbox.Inbox
+
+ body := get(t, &box, http.MethodGet, "/").Body.String()
+ if want := `Refresh`; !strings.Contains(body, want) {
+ t.Errorf("page = %s, want it to contain %s", body, want)
+ }
+}
+
func TestDoorServesOnlyItsRoutes(t *testing.T) {
tests := []struct {
method, path string
diff --git a/internal/phonedoor/static/style.css b/internal/phonedoor/static/style.css
index 2be0edd..05a5e97 100644
--- a/internal/phonedoor/static/style.css
+++ b/internal/phonedoor/static/style.css
@@ -182,6 +182,12 @@ button:hover {
color: var(--ink);
}
+.actions {
+ display: flex;
+ gap: 20px;
+ align-items: center;
+}
+
/* The notifications' state and button look like Bakhyard's header links. Their line is no taller
than the phone's title, so the header keeps its height when they show. */
.push {
@@ -196,15 +202,19 @@ p.push {
color: var(--ink-muted);
}
+a.push,
button.push {
/* The tap target stays 44 px tall, but the header's row makes room only for the text. */
margin-block: -14px;
- padding: 0;
+ padding: 14px 0;
border: 0;
background: none;
+ color: inherit;
+ text-decoration: none;
text-underline-offset: 4px;
}
+a.push:hover,
button.push:enabled:hover {
text-decoration-line: underline;
}