Files
procyon/templates/settings.html
2026-10-06 23:43:21 -07:00

69 lines
3.9 KiB
HTML

{% extends "base.html" %}
{% block nav_settings %}active{% endblock %}
{% block title %}Settings{% endblock %}
{% block content %}
<h1>Settings</h1>
<p class="sub">Configure the LLM backend, email (SMTP), proxy, and resume.</p>
<form method="post" action="/settings" class="panel">
<h2 style="margin-top:0">LLM backend (inference runs on your LAN Ollama host, never this CT)</h2>
<label>Base URL</label>
<input name="llm_base_url" value="{{ settings.llm_base_url }}">
<label>Model</label>
<input name="llm_model" value="{{ settings.llm_model }}">
<p class="muted" style="font-size:12px">Default: nightmare Ollama (qwen3.8fast). The pipeline falls back to keyword matching if the model is saturated.</p>
<h2>Email (SMTP)</h2>
<label>Host</label><input name="smtp_host" value="{{ settings.smtp_host }}">
<label>Port</label><input name="smtp_port" value="{{ settings.smtp_port }}">
<label>Username (iCloud email)</label><input name="smtp_user" value="{{ settings.smtp_user }}" placeholder="indianaholmes1@icloud.com">
<label>Password (iCloud app-specific password)</label><input name="smtp_pass" type="password" value="{{ settings.smtp_pass }}" placeholder="generate at appleid.apple.com">
<label>From name</label><input name="from_name" value="{{ settings.from_name }}">
<label>From email</label><input name="from_email" value="{{ settings.from_email }}">
<label>Resume phone</label><input name="resume_phone" value="{{ settings.resume_phone }}">
<label>Resume email</label><input name="resume_email" value="{{ settings.resume_email }}">
<h2>Discovery</h2>
<label>Optional proxy URL (your own Nord proxy CT, e.g. http://10.30.20.154:3128)</label>
<input name="proxy_url" value="{{ settings.proxy_url }}" placeholder="leave blank for direct">
<label>Extra RSS feeds (one per line)</label>
<textarea name="rss_feeds" rows="3">{{ settings.rss_feeds }}</textarea>
<h2>Firecrawl (self-hosted search)</h2>
<label>Firecrawl URL</label>
<input name="firecrawl_url" value="{{ settings.firecrawl_url }}">
<label>Enabled</label>
<select name="firecrawl_enabled">
<option value="1" {% if settings.firecrawl_enabled == '1' %}selected{% endif %}>On</option>
<option value="0" {% if settings.firecrawl_enabled == '0' %}selected{% endif %}>Off</option>
</select>
<label>Search queries (one per line)</label>
<textarea name="firecrawl_queries" rows="4">{{ settings.firecrawl_queries }}</textarea>
<h2>Autopilot (scheduled)</h2>
<label>Enabled</label>
<select name="autopilot_enabled">
<option value="1" {% if settings.autopilot_enabled == '1' %}selected{% endif %}>On</option>
<option value="0" {% if settings.autopilot_enabled == '0' %}selected{% endif %}>Off</option>
</select>
<label>Max apps to auto-prepare per run</label>
<input name="autopilot_max_prepare" value="{{ settings.autopilot_max_prepare }}">
<label>Auto-send emails (skip the human Approve gate)</label>
<select name="auto_send">
<option value="0" {% if settings.auto_send != '1' %}selected{% endif %}>Off (approve manually)</option>
<option value="1" {% if settings.auto_send == '1' %}selected{% endif %}>On (auto-send to scraped emails)</option>
</select>
<p class="muted" style="font-size:12px">Runs every 6h via systemd timer (procyon-autopilot.timer). When Auto-send is On, prepared apps are emailed to their scraped contact automatically (audit + fabrication guards still apply). Jobs with a URL but no email still need you to apply via the posting.</p>
<h2>Master resume</h2>
<label>Path to master resume .txt on this CT (empty = auto library)</label>
<input name="master_resume" value="{{ settings.master_resume }}" placeholder="/opt/procyon/resumes/master.txt">
<br><br>
<div class="flex">
<button class="btn" type="submit">Save settings</button>
<button class="btn ghost" type="submit" formaction="/settings/test-smtp">Test SMTP</button>
</div>
</form>
{% endblock %}