[draft] feat: Introduce a Terminal UI that can browse job, step, task and attachments.#997
Draft
leongdl wants to merge 2 commits intoaws-deadline:mainlinefrom
Draft
[draft] feat: Introduce a Terminal UI that can browse job, step, task and attachments.#997leongdl wants to merge 2 commits intoaws-deadline:mainlinefrom
leongdl wants to merge 2 commits intoaws-deadline:mainlinefrom
Conversation
164cd95 to
3047909
Compare
…tui] Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Fixes: N/A — new feature
What was the problem/requirement? (What/Why)
There is no terminal-based way to interactively browse Deadline Cloud jobs, steps, tasks, sessions, and attachments. Users must rely on the AWS console or run multiple CLI commands manually to navigate the job hierarchy. The existing
deadline browsecommand only covers attachment browsing for a single job.This PR adds
deadline job tui, an interactive terminal UI that lets users drill through the full job → step → task hierarchy, view sessions, and browse/download job attachments — all from a single command.The TUI is gated behind an optional
[tui]extra. If a user runsdeadline job tuiwithout it installed, they get a clear error:What was the solution? (How)
Added a new
deadline job tuisubcommand with arich-based terminal UI. The implementation is organized as:src/deadline/client/cli/_groups/_job_tui/_common.py— shared rendering utilities (header, help bar, status icons, key input, screen management)src/deadline/client/cli/_groups/_job_tui/_job_list.py— paginated job list browsersrc/deadline/client/cli/_groups/_job_tui/_step_list.py— paginated step list browsersrc/deadline/client/cli/_groups/_job_tui/_task_list.py— paginated task list browsersrc/deadline/client/cli/_groups/_job_tui/_session_list.py— session list for a tasksrc/deadline/client/cli/_groups/_job_tui/_attachment_browser.py— file tree browser for job/task attachmentssrc/deadline/client/cli/_groups/job_group.py—tuicommand registration and orchestration loopssrc/deadline/client/cli/_groups/browse_group.py— existingdeadline browseentry point (updated to share code)Navigation:
↑/↓to browse,→/Enterto drill in,←/Escto go back,afor attachments,lfor sessions,cto copy IDs,n/pfor pagination,qto quit.The
richdependency is optional viapip install 'deadline[tui]'and is lazily imported — the rest of the CLI works without it.What is the impact of this change?
deadline job tuirich >= 13.0(only when[tui]extra is installed)deadline browsecommand continues to work as beforeHow was this change tested?
See DEVELOPMENT.md for information on running tests.
downloadorasset_syncmodules? NoUnit tests added:
test/unit/deadline_client/cli/test_cli_job_tui_common.pytest/unit/deadline_client/cli/test_cli_job_tui_job_list.pytest/unit/deadline_client/cli/test_cli_job_tui_step_list.pytest/unit/deadline_client/cli/test_cli_job_tui_task_list.pytest/unit/deadline_client/cli/test_cli_job_tui_session_list.pytest/unit/deadline_client/cli/test_cli_job_tui_attachment_browser.pyManual testing with the branch
To test this locally against the feature branch:
Was this change documented?
deadline job tui --help. Design docs added underdocs/design/.Does this PR introduce new dependencies?
New optional dependency:
rich >= 13.0— only installed when the user opts in viapip install 'deadline[tui]'. It is not added to the coredependencieslist, so it has zero impact on users who don't use the TUI.richis a well-maintained, widely-used library (200M+ monthly downloads, MIT license).Is this a breaking change?
No. This is a purely additive feature — a new subcommand (
deadline job tui) behind an optional extra. No existing commands, APIs, or defaults are changed.Does this change impact security?
No. The TUI reads data via existing Deadline Cloud API calls using the user's configured credentials. No new file/directory creation patterns, no new network endpoints, no privilege escalation.
Screenshots!
Job -> Step -> Task -> Job Attachments -> Input | output -> Preview