- Settings -> Account: change your own password (current + new), session
preserved via update_session_auth_hash.
- Custom labels: per-user palette in Settings -> Labels; apply/remove from a
message's ... menu (menu stays open, checkmark = applied). Labels are unified
with tags; chip colours sync to the global TagColor. New Label model +
migration 0017; POST /a/{id}/label (session, owner-scoped, palette-validated).
- Sidebar Keep/Deleted folders are now always shown; count badge only when
non-empty. Updates the stale 'hide when empty' note in CLAUDE.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
36 lines
1.2 KiB
HTML
36 lines
1.2 KiB
HTML
{% extends "artifacts/settings_base.html" %}
|
|
|
|
{% block settings_content %}
|
|
<h2>Account</h2>
|
|
<p><strong>Username:</strong> {{ request.user.username }}</p>
|
|
|
|
<h3>API Keys</h3>
|
|
<p>
|
|
Posting to AgentFeed uses named API keys — one per agent or script, each
|
|
revocable on its own. You have {{ key_count }} key{{ key_count|pluralize }}.
|
|
</p>
|
|
<p><a href="{% url 'settings-api-keys' %}">Manage API keys →</a></p>
|
|
|
|
<h3>Change password</h3>
|
|
<p>Enter your current password, then choose a new one.</p>
|
|
<form method="post" class="password-change">
|
|
{% csrf_token %}
|
|
{% if password_form.non_field_errors %}
|
|
<ul class="form-errors">
|
|
{% for error in password_form.non_field_errors %}<li>{{ error }}</li>{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
{% for field in password_form %}
|
|
<label class="form-field">
|
|
<span>{{ field.label }}</span>
|
|
{{ field }}
|
|
{% if field.errors %}
|
|
<ul class="form-errors">
|
|
{% for error in field.errors %}<li>{{ error }}</li>{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
</label>
|
|
{% endfor %}
|
|
<button type="submit">Change password</button>
|
|
</form>
|
|
{% endblock %}
|