From ef2babcd97676ad4d8512b53152c79bbcb6c68b4 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Wed, 6 Jul 2022 17:41:06 +0530 Subject: Take over streaming terminal output to the browser. --- .../ansi2html_terminal_user_feedback.gmi | 41 ++++++++-------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/issues/binderlite/ansi2html_terminal_user_feedback.gmi b/issues/binderlite/ansi2html_terminal_user_feedback.gmi index c0cba55..59da2ae 100644 --- a/issues/binderlite/ansi2html_terminal_user_feedback.gmi +++ b/issues/binderlite/ansi2html_terminal_user_feedback.gmi @@ -1,40 +1,27 @@ -# ansi2html terminal user feedback +# Terminal output to the browser * status: ongoing, in progress * type: feature-request -* assigned: jgart +* assigned: aruni * priority: medium * keywords: binderlite, notebooks, ansi2html -## Description +## ansi2html -https://builds.sr.ht/~sircmpwn/job/610711 +Drew Devault uses ani2html in builds.sr.ht, the continuous integration system/app that is part of the SourceHut suite. builds.sr.ht generates terminal output using jinja templates and a relatively small python library called ansi2html. It is already packaged by guix upstream as python-ansi2html (It could use an update). -https://builds.sr.ht/~sircmpwn/job/611028 - -This issue proposes an alternative way to generate terminal output to the browser -from a process that does not dependent on js libraries but still looks great. - -Drew Devault uses this method in builds.sr.ht, the continuous integration -system/app that is part of the SourceHut suite. - -builds.sr.ht generates terminal output using jinja templates and a relatively -small python library called ansi2html. It is already packaged by guix upstream -as python-ansi2html (It could use an update). - -https://github.com/pycontribs/ansi2html -https://pypi.org/project/ansi2html/ +=> https://github.com/pycontribs/ansi2html +=> https://pypi.org/project/ansi2html/ Here are two examples of it in action at builds.sr.ht: +=> https://builds.sr.ht/~sircmpwn/job/610711 +=> https://builds.sr.ht/~sircmpwn/job/611028 -https://builds.sr.ht/~sircmpwn/job/610711 - -https://builds.sr.ht/~sircmpwn/job/611028 - -And, the relevant places in builds.sr.ht code base: - -https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/buildsrht/templates/job.html#L117 +And, the relevant places in the builds.sr.ht code base: +=> https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/buildsrht/templates/job.html#L117 +=> https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/buildsrht/blueprints/jobs.py#L333 -https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/buildsrht/blueprints/jobs.py#L333 +Here's a diagram showing how it will integrate with binderlite. +=> binderlite_ansi2html_terminal_diagram.png -I've added a diagram showing how it will integrate with binderlite. +ansi2html lets us send terminal output to the browser without depending on javascript libraries. However, the downside is that it cannot "stream" terminal output to the browser as it is generated. The only way to get the latest terminal output is to reload the page. -- cgit v1.2.3