Files
FabledSteward/steward/templates/account/index.html
T
bvandeusenandClaude Opus 5.5 6a81cf4aac
CI / lint (push) Successful in 2s
CI / integration (push) Successful in 1m0s
CI / unit (push) Failing after 1m23s
CI / publish (push) Skipped
feat: times in the reader's own zone; the audit log shows exact moments (milestone 490)
- users.time_zone (0034). An account without one takes the browser's zone
  on its first page (POST /account/time-zone/adopt, never over a choice made
  by hand); the session follows the account on every request.
- /account: who you are and the zone every page writes its times in,
  reached from your name in the sidebar.
- formatting.when: 'Today 06:58', 'Yesterday 23:41', 'Tue 6 Oct 14:12',
  '6 Oct 2025 14:12', 24-hour, in the reader's zone; |ago's hover is the
  exact local moment instead of UTC; tz_label() for column headers.
- Audit log: When (EDT) with exact times, one detail fact a line, on classes.
- tzdata in the image, and the airgapped smoke checks a zone resolves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 07:56:27 -04:00

33 lines
1.5 KiB
HTML

{# account/index.html — the signed-in user's own account (milestone 490): who
they are, and the time zone every page writes its times in. #}
{% extends "base.html" %}
{% from "_macros.html" import page_header %}
{% block title %}Your account — Steward{% endblock %}
{% block content %}
{{ page_header("Your account") }}
<p class="page-verdict">
Signed in as <strong>{{ user.username }}</strong> ({{ user.role.value }}) with {{ source }}
· times show in <strong>{{ zone_name }}</strong> ({{ zone_label }})
</p>
<form method="post" action="/account/" class="form-page">{{ csrf_field() }}
<section class="card form-section" aria-labelledby="acct-time">
<h2 id="acct-time" class="section-title">Time zone</h2>
{% if error %}<p class="field-error" role="alert">{{ error }}</p>{% endif %}
<div class="field">
<label class="field-label" for="acct-tz">Show times in</label>
<select class="input" id="acct-tz" name="time_zone">
{% for region, names in zones %}
{% if region %}<optgroup label="{{ region }}">{% endif %}
{% for z in names %}<option value="{{ z }}"{% if z == zone_name %} selected{% endif %}>{{ z.split('/', 1)[1]|replace('_', ' ') if region else z }}</option>{% endfor %}
{% if region %}</optgroup>{% endif %}
{% endfor %}
</select>
<span class="field-hint">Every page writes its times in this zone, on a 24-hour clock.</span>
</div>
</section>
<button type="submit" class="btn">Save</button>
</form>
{% endblock %}