feat: Avatar Position-Offset (translate X/Y)

Backend:
- AgentRecord + SessionRecord: AvatarOffsetX, AvatarOffsetY Properties
- DB-Migration: avatar_offset_x/y REAL DEFAULT 0 auf agents + sessions
- Agent/Session Endpoints: Create + Update lesen/schreiben Offset-Felder
- GetSessionsWithStats: Offset-Felder ans Frontend

Frontend:
- Avatar-Editor: X/Y Offset-Slider (-50% bis +50%) im Modal
  - buildTransformStyle() Helper für transform: scale() translate()
  - getOffsetX()/getOffsetY() Public API
  - Reset bei Clear/AI-Generate/Upload
- ui.js: buildAgentCard + buildSessionCard rendern transform mit Offset
- Agent-Page + Session-Page: initialOffsetX/Y + Save
- CSS: .av-offset-row Styles (gruppiert mit .av-scale-row)
This commit is contained in:
Meleki committed 2026-03-06 21:14:51 +01:00
1 parent 95b3683910
commit 4775b8ded7
10 files changed
+143 -30

No files matched your search

+9 -4
View File
@@ -107,23 +107,28 @@
gap: var(--badge-spacing);
}
.av-scale-row {
.av-scale-row,
.av-offset-row {
display: flex;
align-items: center;
gap: var(--badge-spacing);
}
.av-scale-row label {
.av-scale-row label,
.av-offset-row label {
margin: 0;
white-space: nowrap;
min-width: 2.5em;
}
.av-scale-row input[type="range"] {
.av-scale-row input[type="range"],
.av-offset-row input[type="range"] {
flex: 1;
accent-color: var(--primary);
}
.av-scale-row .av-scale-value {
.av-scale-row .av-scale-value,
.av-offset-row span[class*="-value"] {
font-size: 0.85em;
min-width: 2.5em;
text-align: right;