read.markets/app/templates/log.html
Giorgio Gilestro 824d849c63 brand: rename product to "Read the Markets" (read.markets)
The product is now "Read the Markets" served at https://read.markets,
with the app at https://app.read.markets. "Cassandra" survives only as
the in-product AI persona (system prompt + "Ask Cassandra" chat label).

Centralised the brand in app/branding.py: BRAND_NAME, BRAND_SHORT,
DOMAIN, SITE_URL, APP_URL, EMAIL_FROM_DEFAULT. Jinja templates pull
{{ BRAND_NAME }} via globals registered in templates_env.py; Python
code reads branding.BRAND_NAME directly. The future-rename surface
is now a one-liner.

Updated: FastAPI app title, every page title (dashboard, news, log,
settings, upload, login, verify), header brand div, auth-card brands,
OTP email subject + HTML + plain-text bodies (incl. uppercase header
tag), OpenRouter X-Title + HTTP-Referer attribution headers, README.
Email tests now assert against branding.BRAND_NAME rather than the
literal string.

Internal identifiers deliberately kept on the legacy "cassandra" name
to avoid invalidating live sessions / advisory locks / configs:
cookies (cassandra_session, cassandra_pending) + itsdangerous salts,
MariaDB GET_LOCK keys, CASSANDRA_TOKEN env var, cassandra.css filename,
pyproject package name, localStorage prefs, outbound User-Agent strings.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 19:39:38 +01:00

55 lines
2.1 KiB
HTML

{% extends "base.html" %}
{% block title %}{{ BRAND_NAME }} · Strategic Log{% endblock %}
{% block main %}
<section class="panel log-page" style="grid-column: 1 / -1;">
<div class="panel-header">
<span class="title">Strategic Log Archive</span>
<span class="meta">
selected {{ selected_iso }}
&nbsp;·&nbsp;
<span class="meta__hint">new logs use:</span>
<span class="badge badge--tone-{{ current_tone | lower }}">tone {{ current_tone | lower }}</span>
<span class="badge badge--analysis-{{ current_analysis | lower }}">analysis {{ current_analysis | lower }}</span>
</span>
</div>
<div class="log-page__body">
<aside class="log-page__cal"
hx-get="/api/log/days?month={{ selected_month }}&selected={{ selected_iso }}"
hx-trigger="load"
hx-swap="innerHTML">
<div class="empty">loading calendar…</div>
</aside>
<article id="log-content"
class="log-page__content"
hx-get="/api/log/by-date/{{ selected_iso }}?as=html"
hx-trigger="load"
hx-swap="innerHTML">
<div class="empty">loading log…</div>
</article>
<aside id="chat-sidebar" class="log-page__chat">
<div class="chat-header">
<span class="chat-title">Ask Cassandra</span>
<span class="chat-hint">grounded on the latest log + live data</span>
</div>
<div id="chat-thread" class="chat-thread">
<div class="chat-msg chat-msg--system">
Ask about today's analysis. The model sees the latest strategic log,
live market readings across all groups, and the last 24h of
thesis-filtered headlines. Refresh wipes this conversation.
</div>
</div>
<form id="chat-form" class="chat-form" autocomplete="off">
<textarea id="chat-input" rows="2"
placeholder="e.g. why is the defence sleeve flat through Hormuz?"
required></textarea>
<button id="chat-send" type="submit">Send</button>
</form>
</aside>
</div>
</section>
<script src="{{ url_for('static', path='/js/chat.js') }}" defer></script>
{% endblock %}