AstraOS Ver. 1.52 - Letzte Aenderung Kasten serverseitig Grid-Layout fix
All checks were successful
Deploy AstraOS Panel / deploy (push) Successful in 13s
All checks were successful
Deploy AstraOS Panel / deploy (push) Successful in 13s
This commit is contained in:
parent
2164b23962
commit
bdd95ce153
|
|
@ -61,13 +61,16 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-3 gap-8">
|
||||
|
||||
<div class="glow-card opacity-0 translate-y-8 bg-black/40 rounded-xl p-6 backdrop-blur
|
||||
{% if maintenance_active %}border border-yellow-500/30{% else %}border border-purple-500/20{% endif %}">
|
||||
<h3 class="text-xl font-semibold mb-2 {% if maintenance_active %}text-yellow-300{% else %}text-purple-300{% endif %}">Letzte Änderung</h3>
|
||||
<p class="text-base font-bold text-slate-100 truncate" id="last-commit-msg">wird geladen…</p>
|
||||
<p class="text-xs text-slate-500 mt-0.5" id="last-commit-author">–</p>
|
||||
<p class="text-xs text-purple-400 mt-1 font-mono" id="last-commit-time">–</p>
|
||||
<p class="text-base font-bold text-slate-100 truncate">{{ last_commit.message if last_commit else '–' }}</p>
|
||||
<p class="text-xs text-slate-500 mt-0.5">von {{ last_commit.author if last_commit else '–' }}</p>
|
||||
<p class="text-xs text-purple-400 mt-1 font-mono">{{ last_commit.time_str if last_commit else '–' }}</p>
|
||||
</div>
|
||||
|
||||
<div class="glow-card opacity-0 translate-y-8 bg-black/40 rounded-xl p-6 backdrop-blur
|
||||
{% if maintenance_active %}border border-yellow-500/30{% else %}border border-purple-500/20{% endif %}">
|
||||
<h3 class="text-xl font-semibold mb-2 {% if maintenance_active %}text-yellow-300{% else %}text-purple-300{% endif %}">Aktive Nutzer</h3>
|
||||
|
|
@ -136,33 +139,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<script>
|
||||
// Letzte Änderung (Commit) laden
|
||||
fetch('https://git.astra-os.de/api/v1/repos/MrWhiff/AstraOS-Panel/commits?limit=1', {signal: AbortSignal.timeout(4000)})
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
const commit = data?.[0];
|
||||
const msgEl = document.getElementById('last-commit-msg');
|
||||
const authEl = document.getElementById('last-commit-author');
|
||||
const timeEl = document.getElementById('last-commit-time');
|
||||
if (!commit || !msgEl) return;
|
||||
// Commit-Message (erste Zeile)
|
||||
msgEl.textContent = (commit.commit?.message || '–').split('\n')[0];
|
||||
// Autor
|
||||
const author = commit.commit?.author?.name || commit.author?.login || '–';
|
||||
authEl.textContent = `von ${author}`;
|
||||
// Relative Zeit
|
||||
const d = commit.created || commit.commit?.author?.date;
|
||||
if (d) {
|
||||
const diff = Math.round((Date.now() - new Date(d).getTime()) / 60000);
|
||||
if (diff < 60) timeEl.textContent = `vor ${diff} Min.`;
|
||||
else if (diff < 1440) timeEl.textContent = `vor ${Math.round(diff/60)} Std.`;
|
||||
else timeEl.textContent = new Date(d).toLocaleDateString('de-DE', {day:'2-digit', month:'short', hour:'2-digit', minute:'2-digit'});
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
const el = document.getElementById('last-commit-msg');
|
||||
if (el) el.textContent = 'nicht verfügbar';
|
||||
});
|
||||
|
||||
|
||||
gsap.registerPlugin(ScrollTrigger);
|
||||
|
|
|
|||
|
|
@ -851,7 +851,38 @@ def dashboard():
|
|||
"time_str": _dt_to_str(last_user_time)
|
||||
}
|
||||
}
|
||||
return render_template('dashboard.html', stats=stats, active_page='dashboard')
|
||||
# Letzten Commit von Forgejo laden
|
||||
last_commit = None
|
||||
try:
|
||||
forgejo_token = os.environ.get('FORGEJO_API_TOKEN', '')
|
||||
headers = {'Authorization': f'token {forgejo_token}'} if forgejo_token else {}
|
||||
r = requests.get(
|
||||
'https://git.astra-os.de/api/v1/repos/MrWhiff/AstraOS-Panel/commits?limit=1',
|
||||
headers=headers, timeout=3
|
||||
)
|
||||
if r.status_code == 200:
|
||||
commits = r.json()
|
||||
if commits:
|
||||
c = commits[0]
|
||||
msg = (c.get('commit', {}).get('message') or '–').split('\n')[0]
|
||||
author = c.get('commit', {}).get('author', {}).get('name') or c.get('author', {}).get('login') or '–'
|
||||
raw_date = c.get('created') or c.get('commit', {}).get('author', {}).get('date')
|
||||
if raw_date:
|
||||
from datetime import timezone
|
||||
dt = datetime.fromisoformat(raw_date.replace('Z', '+00:00'))
|
||||
diff_min = int((datetime.now(timezone.utc) - dt).total_seconds() / 60)
|
||||
if diff_min < 60:
|
||||
time_str = f'vor {diff_min} Min.'
|
||||
elif diff_min < 1440:
|
||||
time_str = f'vor {diff_min // 60} Std.'
|
||||
else:
|
||||
time_str = dt.strftime('%d. %b %Y, %H:%M')
|
||||
else:
|
||||
time_str = '–'
|
||||
last_commit = {'message': msg, 'author': author, 'time_str': time_str}
|
||||
except Exception:
|
||||
pass
|
||||
return render_template('dashboard.html', stats=stats, active_page='dashboard', last_commit=last_commit, maintenance_active=bool(maint.get('enabled')))
|
||||
@app.route('/logout')
|
||||
@login_required
|
||||
def logout():
|
||||
|
|
|
|||
Loading…
Reference in a new issue