[Bug] Quarantine Vault "Release" button always crashes: ModalScreen has no push_screen
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 84/100
Research direction
Read app/ui/tui.py around QuarantineVaultModal.action_release_selected and the existing test in tests/test_quarantine_vault_modal.py. Start by reproducing the crash with the Release button, then check how the app opens other screens. Done means the directory picker opens, the selected file is released to the chosen destination, and a pilot test verifies the released status and file location.
Written by the indexing model from the issue text.
Description
Summary
QuarantineVaultModal.action_release_selected calls self.push_screen(DirectorySelectModal(...), callback). QuarantineVaultModal is a ModalScreen, and Textual Screen objects have no push_screen method; only App does. Every attempt to release a quarantined file therefore raises AttributeError, so files can never be released from quarantine through the TUI.
Location
app/ui/tui.py:5489:class QuarantineVaultModal(A11yMixin, ModalScreen[None])app/ui/tui.py:5931-5969:action_release_selected, ending withself.push_screen(DirectorySelectModal(base_dir), _dir_selected_callback)
Evidence / reproduction
A scratch script stages a file through QuarantineInterceptorService.stage_incoming_file, opens QuarantineVaultModal, selects the job and calls action_release_selected():
RELEASE EXC: AttributeError 'QuarantineVaultModal' object has no attribute 'push_screen'
$ uv run python -c "from textual.screen import ModalScreen; print(hasattr(ModalScreen,'push_screen'))"
False
mypy reports app/ui/tui.py:5969: error: "QuarantineVaultModal" has no attribute "push_screen", but the error is hidden by ignore_errors for app.ui.*. tests/test_quarantine_vault_modal.py:68 only asserts that the button exists; it never presses it.
Expected vs actual
- Expected: pressing Release opens the directory picker and then moves the staged file to the chosen directory.
- Actual: an unhandled
AttributeErroroccurs in the button handler, and nothing is released.
Suggested fix
Use self.app.push_screen(DirectorySelectModal(base_dir), _dir_selected_callback). Add a pilot test that clicks #btn-quarantine-release, submits a directory in the picker, and asserts the record status becomes RELEASED and the file exists at the destination.
Severity
high
- Dominant language
- Python
- Stars
- 1
- Forks
- 0
- Avg merge
- 16h 3m
- Merged PRs (30d)
- 255
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from fderuiter/sortify
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Maintainers usually reply within 1 day
All issues in fderuiter/sortify
Similar issues
-
Edit tool converts CRLF files to LFPossibly taken @RaphaelFakhri claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
huggingface/tau#774 ·
Maintainers usually reply within 1 day
-
show ignores the row limit when a column or table name contains "limit"Possibly taken @RaphaelFakhri claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 2 days
-
documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
eclipse-score/inc_someip_gateway#356 ·
Maintainers usually reply within 2 days