feat: two-screen layout redesign with log viewer, resources panel, and bug fixes - #47
feat: two-screen layout redesign with log viewer, resources panel, and bug fixes#47alefisico wants to merge 23 commits into
Conversation
Strip overview.py to a list-only WorkflowListView that posts a WorkflowSelected message on row activation; update DashboardScreen in app.py to use the new widget and handle navigation to detail screen. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sh method Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace StyledProgress percentage strings with render_progress_bar(), which renders coloured block-character bars (e.g. █████░░░░░ 50%) in all tables and the workflow detail overview. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove unused AppBody class from app.py, fix missing return/parameter type annotations in widgets.py and app.py, and fix wrong type annotation and missing status arg in views/detail.py. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Logs tab now shows file content immediately on job select; file selector appears only when job has multiple log files - Progress display shows percentage only, no visual bar - Add ShellCmdHandler to logger plugin (patched in dev env) to capture shell commands from Snakemake's SHELLCMD event Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
cademirch
left a comment
There was a problem hiding this comment.
Thanks for the PR. Gave a quick look through and left some comments. I'll try to get around to testing this out locally soon.
There was a problem hiding this comment.
These don't seem to be testing anything meaningful. Can we drop these?
| ) | ||
|
|
||
|
|
||
| class ResourcesPanel(Container): |
There was a problem hiding this comment.
This is just the resources requested by the job - which is all we have until we either parse benchmark files or wait for Snakemake to send benchmark info thru the logger interface. I think this should be more clear that this was resources requested by the job and not resources used.
There was a problem hiding this comment.
ok, I will make it clear that these are resources requested
| except NoMatches: | ||
| pass | ||
|
|
||
| log_widget = Log(id="log-content", highlight=False) |
There was a problem hiding this comment.
I need to test this out, but I think I prefer the log file modal here, since it has more screen real estate there is less line wrapping. Is there a reason the log file modal was replaced with textual Log?
There was a problem hiding this comment.
I think it is a matter of taste, I personally prefer this way. But maybe I can keep both views if you want
| [tool.pixi.feature.dev.pypi-dependencies] | ||
| snkmt = { path = ".", editable = true } | ||
| snakemake-logger-plugin-snkmt = { git = "https://github.com/cademirch/snakemake-logger-plugin-snkmt.git", editable = true, branch="dev" } | ||
| snakemake-logger-plugin-snkmt = { git = "https://github.com/alefisico/snakemake-logger-plugin-snkmt.git", editable = true } |
There was a problem hiding this comment.
Will need to change this. Note to self - this is why I want to move the logger into this repo, get rid of this dev dependency dance.
Releases might be more annoying though.
There was a problem hiding this comment.
good catch. Yeah I will revert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4abee05 to
7568c59
Compare
7568c59 to
7a23fed
Compare
|
Okay, I've had a chance to play around with this. I like the look of the layout, but the UX is a little confusing to me. It is a little clunky to have to select a job to view its logs on the TabViewer. My impression was that the Overview/Logs/Resources/Errors tab panes were for the selected Rule. I think that would be more intuitive. Such that when you select a rule, the tab pane gives you quick access to the overview of that rule and all of the jobs logs, etc. I've had ideas to do this using the Tree widget from textual. Overall I think this is the right direction and want to use this PR to develop this further. I'll try to make some mock ups of what im thinking when I have a chance. |
|
Sounds good. Yeah, feel free to improve it as you think is best. |
|
Hi @alefisico - I saw that you pushed some updates to this, sorry I have not had time to take a look yet. I will try to take a look this weekend! |
|
Hi @alefisico sorry for my delay on this. I am on vacation until mid July so I will review this when I get back |
Layout:
Replaced the single-screen layout (large workflow list + three cramped right panels) with a two-screen approach: a full-width workflow list as the default view, pushing a detail screen on selection. Esc returns to the list.
The detail screen has a left panel (rules drill-down → jobs) and a right tabbed panel (Overview / Logs / Resources / Errors).
New features:
Bug fixes:
list_rule_jobsandget_jobnow eagerly loadjob.filesviaselectinloadto preventMissingGreenleterrors when accessing file relationships outside the async session context