diff --git a/pyproject.toml b/pyproject.toml index bd514a9..0d01052 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "plba" -version = "0.3.10" +version = "0.3.11" description = "Platform runtime for business applications" readme = "README.md" requires-python = ">=3.11" diff --git a/src/app_runtime/control/trace_presenter.py b/src/app_runtime/control/trace_presenter.py index 0937a12..9d09fdc 100644 --- a/src/app_runtime/control/trace_presenter.py +++ b/src/app_runtime/control/trace_presenter.py @@ -98,18 +98,19 @@ class TraceResponseRenderer: :root {{ color-scheme: dark; --bg: #000000; - --fg: #cfcfc2; + --fg: #ececec; + --step: #ffffff; --link: #66d9ef; - --error: #f92672; - --warning: #e6db74; - --info: #a6e22e; - --debug: #ae81ff; + --error: #ff817d; + --warning: #e5801d; + --info: #73a0cf; + --other: #ececec; }} body {{ margin: 0; background: var(--bg); color: var(--fg); - font: 12px/1 "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace; + font: 13px/1.1 "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace; }} .page {{ padding: 14px 16px 24px; @@ -133,7 +134,7 @@ class TraceResponseRenderer: color: var(--info); }} .msg-debug {{ - color: var(--debug); + color: var(--other); }} @media (max-width: 640px) {{ .page {{ @@ -182,12 +183,12 @@ class TraceResponseRenderer: for record in trace_view.records: current_step = str(record.step or "") if previous_step is None: - lines.append(self._html_plain_line(escape(current_step))) + lines.append(self._html_step_line(current_step)) lines.append(self._html_plain_line("")) elif current_step != previous_step: lines.append(self._html_plain_line("")) lines.append(self._html_plain_line("--------------------------------------------------")) - lines.append(self._html_plain_line(escape(current_step))) + lines.append(self._html_step_line(current_step)) lines.append(self._html_plain_line("")) previous_step = current_step lines.extend(self._html_message_lines(record, request.include_attrs_json)) @@ -200,6 +201,9 @@ class TraceResponseRenderer: def _html_plain_line(self, content: str) -> str: return f"
{content or ' '}
" + def _html_step_line(self, content: str) -> str: + return f"
{escape(content) or ' '}
" + def _html_colored_line(self, content: str, level: str) -> str: level_class = self._level_class(level) return f"
{escape(content)}
" @@ -219,6 +223,6 @@ class TraceResponseRenderer: return "msg-error" if level == "WARNING": return "msg-warning" - if level == "DEBUG": - return "msg-debug" - return "msg-info" + if level == "INFO": + return "msg-info" + return "msg-debug" diff --git a/tests/test_trace_endpoint.py b/tests/test_trace_endpoint.py index b58211c..73e5199 100644 --- a/tests/test_trace_endpoint.py +++ b/tests/test_trace_endpoint.py @@ -203,16 +203,21 @@ def test_trace_endpoint_returns_html_page_with_related_links() -> None: assert response.headers["content-type"].startswith("text/html") assert "background: var(--bg);" in response.text assert "--bg: #000000;" in response.text - assert "--fg: #cfcfc2;" in response.text - assert 'font: 12px/1 "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;' in response.text + assert "--fg: #ececec;" in response.text + assert "--step: #ffffff;" in response.text + assert "--info: #73a0cf;" in response.text + assert "--warning: #e5801d;" in response.text + assert "--error: #ff817d;" in response.text + assert "--other: #ececec;" in response.text + assert 'font: 13px/1.1 "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;' in response.text assert '
trace_id: trace-1
' in response.text assert '
parent_id: parent-1
' in response.text assert '
child_ids:
' in response.text assert '
- child-1
' in response.text assert '
- child-2
' in response.text - assert '
load_stocks
' in response.text + assert '
load_stocks
' in response.text assert '
--------------------------------------------------
' in response.text - assert '
filter_stocks
' in response.text + assert '
filter_stocks
' in response.text assert "loaded prices" in response.text assert "filtered suspicious ticker" in response.text assert "2026-04-28T10:11:12+00:00 | INFO | ok" not in response.text