After Stop (or at the cap, or from Settings → Diagnosztika's past sessions) one dialog drafts the issue: title, description, the steps drafted from the session's markers and page changes (a marker without a label is named by its time), the environment (version, browser, system, window, language). Beside it, what goes with it: the browser and server logs — each reviewable line by line, an unticked line is not sent — and the screenshots, removable, with paste / drop / pick to add more. - it saves as it goes (debug_sessions.draft, migration 0090): the rendered markdown in the user's language, the excluded rows, and its own fields to reopen as it was; a sent session is read-only - the zip export (issue.md, client.log, server.log, screenshots) is built from the saved draft by app/issues/bundle.py — the one definition the Gitea delivery (S4) will share; .log, not .jsonl, which Gitea refuses - the log line's level tags and clock move to components/logLineParts so the review list draws a level the way both log viewers do
28 lines
901 B
Python
28 lines
901 B
Python
"""add debug_sessions.draft — the issue being written from a session (E16 S3)
|
|
|
|
Revision ID: 0090_debug_session_draft
|
|
Revises: 0089_debug_sessions
|
|
Create Date: 2026-09-19
|
|
|
|
The composer saves as it goes: the title, the rendered markdown body that an export or an issue
|
|
carries, the log rows the user took out, and the form's own fields so reopening it later (Settings →
|
|
Diagnosztika lists past sessions) shows what was written. NULL until the composer first saves.
|
|
"""
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
|
|
revision: str = "0090_debug_session_draft"
|
|
down_revision: str | None = "0089_debug_sessions"
|
|
branch_labels: str | None = None
|
|
depends_on: str | None = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column("debug_sessions", sa.Column("draft", JSONB, nullable=True))
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column("debug_sessions", "draft")
|