feat: Add a new hotkey to handle cd-on-quit whenever needed#924
feat: Add a new hotkey to handle cd-on-quit whenever needed#924yorukot merged 3 commits intoyorukot:mainyorukot/superfile:mainfrom ahmed-habbachi:feat/919/add-dedicated-hotkey-for-cd_on_quitahmed-habbachi/superfile:feat/919/add-dedicated-hotkey-for-cd_on_quitCopy head branch name to clipboard
Conversation
WalkthroughA new global hotkey cd_quit was introduced to trigger quitting with directory change. The model’s quit flow now accepts a cdOnQuit flag, set via the new hotkey or config. Help text, default hotkey configs, and docs were updated. A unit test validates that cd_quit writes the last directory and exits. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant TUI as Superfile TUI
participant Model as handleKeyInput
participant Quit as quitSuperfile(cdOnQuit)
participant FS as LastDir file
User->>TUI: Press cd_quit (e.g., Shift+Q)
TUI->>Model: Key event
Model->>Model: Set cdOnQuit = true
Model->>Quit: quitSuperfile(cdOnQuit=true)
alt cdOnQuit true
Quit->>FS: Write "cd '<currentDir>'"
else cdOnQuit false
Quit->>FS: Skip write
end
Quit-->>TUI: tea.Quit command
TUI-->>User: Exit
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~15 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changesNone found. Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
|
If I am correct there is nothing I should do right? this is a normal failure for a first contribution? |
981eb1e to
66e358e
Compare
|
(1) Please add note about this in (2) Update I will still need to test this. I am not sure how this will work, might need to set LastDir variable during model startup too. |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
website/src/content/docs/list/hotkey-list.md (2)
19-22: Keep hotkey‐notation consistent with other uppercase bindingsEvery other uppercase binding in this table adds the “(shift+X)” hint – e.g.
A(shift+a),F,L(shift+l).
For consistency, append the hint toQ.-| Quit superfile and cd to current folder | `Q` | `cd_quit` | +| Quit superfile and cd to current folder | `Q` (shift+q) | `cd_quit` |
25-27: Grammar & clarity in the explanatory noteMinor wording tweaks improve readability and fix subject/verb agreement.
-Quit superfile and cd to current folder "cd_quit" require the same scripts as ["cd_on_quit"](/configure/superfile-config/#cd_on_quit) setting +The `"cd_quit"` hotkey requires the same shell-integration scripts as the ["cd_on_quit"](/configure/superfile-config/#cd_on_quit) setting.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
src/superfile_config/hotkeys.toml(1 hunks)src/superfile_config/vimHotkeys.toml(1 hunks)website/src/content/docs/list/hotkey-list.md(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- src/superfile_config/vimHotkeys.toml
🚧 Files skipped from review as they are similar to previous changes (1)
- src/superfile_config/hotkeys.toml
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: lazysegtree
PR: yorukot/superfile#0
File: :0-0
Timestamp: 2025-04-12T12:00:32.688Z
Learning: In PR #767 for yorukot/superfile, the focus is on moving code (especially sidebar-related functionality) to a more organized structure without changing functionality. Pre-existing issues should be ignored since the purpose is code reorganization, not fixing existing problems.
Learnt from: lazysegtree
PR: yorukot/superfile#781
File: src/internal/ui/sidebar/render.go:46-48
Timestamp: 2025-04-28T03:48:46.327Z
Learning: The user (lazysegtree) prefers to keep PRs focused and manageable in size, sometimes intentionally leaving TODO comments to track minor issues for later PRs rather than addressing everything at once.
website/src/content/docs/list/hotkey-list.md (1)
Learnt from: lazysegtree
PR: yorukot/superfile#752
File: src/internal/ui/prompt/model.go:14-17
Timestamp: 2025-04-04T04:02:58.343Z
Learning: In the superfile codebase, hotkey configuration validation happens in the LoadHotkeysFile() function, which ensures that all hotkey slices are non-empty and contain valid values. If validation fails, the application exits early with an error message, eliminating the need for runtime checks when accessing slice elements.
In this issue I didn't rework the cd on quit functionality and I wanted to keep the cd_on_quit config working for those who needs it and as it is my first commit (tbh), I'll probably pick the enhancement issue after wards #706 |
|
@ahmed-habbachi The problem is current implementation will lead to invalid behaviour. The cd on quit functionality is not designed in a way that you can simple toggle it via hotkeys like this. The spf bash function doesn't cares about whether user pressed Q or Shift+Q, it always cds to what is in LastDir file. Consider this
@yorukot Please make sure to have a valid behaviour before merging this. |
|
I agree this should be fixed. |
|
its been a long time that I did work on this but I tried to reproduce the issue but I couldn't the LastDir file is being removed by the shell function I guess. |
|
@ahmed-habbachi you are right rm -f -- "$SPF_LAST_DIR" > /dev/nullThere is this line in the cd_on_quit function. That cleans the file. So there wont be any issue. My above comment about invalid behaviour isn't valid. Please (1) Rebase your branch with latest master We can help you if you have less time, or have technical difficulties, reach out to us here, or on discord. |
8f28d0c to
2fbb93b
Compare
There was a problem hiding this comment.
Gates Failed
Prevent hotspot decline
(2 hotspots with Large Method, Complex Method)
Gates Passed
2 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
| Prevent hotspot decline | Violations | Code Health Impact | |
|---|---|---|---|
| default_config.go | 1 rule in this hotspot | 8.89 → 8.87 | Suppress |
| model.go | 1 rule in this hotspot | 8.20 → 8.19 | Suppress |
Quality Gate Profile: The Bare Minimum
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
src/internal/model_test.go (1)
103-103: Tighten wording for readabilityUse a concise, consistent phrasing for the checklist comment and subtest name.
- // 3 - Cd on quit test that LastDir is written on + // 3 - CdQuit writes LastDir file- t.Run("Cd on quit test that LastDir is written on", func(t *testing.T) { + t.Run("CdQuit writes LastDir file", func(t *testing.T) {Also applies to: 143-143
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
src/internal/common/config_type.go(1 hunks)src/internal/default_config.go(1 hunks)src/internal/model.go(6 hunks)src/internal/model_test.go(2 hunks)src/superfile_config/hotkeys.toml(1 hunks)src/superfile_config/vimHotkeys.toml(1 hunks)website/src/content/docs/list/hotkey-list.md(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
- src/superfile_config/hotkeys.toml
- src/superfile_config/vimHotkeys.toml
- src/internal/common/config_type.go
- src/internal/default_config.go
- src/internal/model.go
- website/src/content/docs/list/hotkey-list.md
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: lazysegtree
PR: yorukot/superfile#0
File: :0-0
Timestamp: 2025-04-12T12:00:32.688Z
Learning: In PR #767 for yorukot/superfile, the focus is on moving code (especially sidebar-related functionality) to a more organized structure without changing functionality. Pre-existing issues should be ignored since the purpose is code reorganization, not fixing existing problems.
Learnt from: lazysegtree
PR: yorukot/superfile#781
File: src/internal/ui/sidebar/render.go:46-48
Timestamp: 2025-04-28T03:48:46.327Z
Learning: The user (lazysegtree) prefers to keep PRs focused and manageable in size, sometimes intentionally leaving TODO comments to track minor issues for later PRs rather than addressing everything at once.
Learnt from: lazysegtree
PR: yorukot/superfile#781
File: src/internal/model_render.go:254-256
Timestamp: 2025-04-28T04:27:33.074Z
Learning: When race conditions or other issues that are unrelated to the current PR's focus are identified during review, lazysegtree prefers creating separate GitHub issues to track them rather than addressing them in the current PR. This helps maintain PR focus and scope.
Learnt from: lazysegtree
PR: yorukot/superfile#979
File: src/internal/common/predefined_variable.go:47-47
Timestamp: 2025-08-06T10:54:31.417Z
Learning: When lazysegtree says a review is "inaccurate and pre-existing issues. Not much useful," it means I should focus specifically on bugs or problems introduced by the current PR changes, not architectural concerns or code quality issues that were already present. The refactoring work in superfile PRs is generally well-implemented and should be evaluated on whether the specific changes work correctly, not on broader codebase architecture.
Learnt from: lazysegtree
PR: yorukot/superfile#967
File: src/internal/key_function.go:45-47
Timestamp: 2025-08-02T11:47:07.713Z
Learning: lazysegtree prefers to track technical debt and architectural improvements in dedicated GitHub issues when they are identified during PR reviews but are beyond the scope of the current PR, particularly for complex refactoring needs like input handling architecture that would require significant changes.
Learnt from: lazysegtree
PR: yorukot/superfile#970
File: src/internal/ui/processbar/model.go:11-26
Timestamp: 2025-08-02T17:00:37.262Z
Learning: lazysegtree prefers to track memory leak issues and feature enhancements via dedicated GitHub issues when identified during PR reviews but are beyond the current PR scope, particularly for processbar-related improvements like cleanup mechanisms and keyboard shortcuts.
🔇 Additional comments (1)
src/internal/model_test.go (1)
153-164: Good addition: validates CdQuit behavior end-to-endThe subtest correctly drives CdQuit, asserts quit state, and verifies LastDir contents. This aligns with the requested coverage for the new hotkey.
|
Thanks @ahmed-habbachi . Can you (1) Can you make sure to pass CICD build. Use (2) There are new changes in the repo. Can you rebase again. |
Add note about the new hotkey in the website in both the hotkey-list and vimHotkeys Add a note to mention that we still need the scripts from cd_on_quit config
2fbb93b to
ed0df6e
Compare
There was a problem hiding this comment.
Gates Failed
Prevent hotspot decline
(2 hotspots with Large Method, Complex Method)
Gates Passed
2 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
| Prevent hotspot decline | Violations | Code Health Impact | |
|---|---|---|---|
| default_config.go | 1 rule in this hotspot | 8.89 → 8.87 | Suppress |
| model.go | 1 rule in this hotspot | 8.28 → 8.27 | Suppress |
Quality Gate Profile: The Bare Minimum
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
ed0df6e to
b5a8fbf
Compare
There was a problem hiding this comment.
Gates Failed
Prevent hotspot decline
(2 hotspots with Large Method, Complex Method)
Gates Passed
2 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
| Prevent hotspot decline | Violations | Code Health Impact | |
|---|---|---|---|
| default_config.go | 1 rule in this hotspot | 8.89 → 8.87 | Suppress |
| model.go | 1 rule in this hotspot | 8.28 → 8.27 | Suppress |
Quality Gate Profile: The Bare Minimum
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
@lazysegtree I wasn't comfortable with the test results as when I test it shows everything passed but I think I didn't run the unit test properly, the issue was that I am accessing the LastDir variable directly from the config and it is not pointing the correct file path I had to use this instead: lastDirFile := filepath.Join(variable.SuperFileStateDir, "lastdir") |
|
@ahmed-habbachi Use this to run test. ➜ ~/Workspace/kuknitin/superfile git:(main) [8:39:52] make dev
🚀 Starting superfile development workflow
==> Tidying Go modules...
✓ Go modules tidied
==> Formatting Go code...
✓ Code formatted
==> Running golangci-lint...
✓ Linting passed
==> Running unit tests...
? github.com/yorukot/superfile [no test files]
? github.com/yorukot/superfile/src/cmd [no test files]
? github.com/yorukot/superfile/src/config [no test files]
? github.com/yorukot/superfile/src/config/icon [no test files]
ok github.com/yorukot/superfile/src/internal (cached)
ok github.com/yorukot/superfile/src/internal/common (cached)
? github.com/yorukot/superfile/src/internal/ui [no test files]
ok github.com/yorukot/superfile/src/internal/ui/metadata (cached)
? github.com/yorukot/superfile/src/internal/ui/notify [no test files]
ok github.com/yorukot/superfile/src/internal/ui/processbar (cached)
ok github.com/yorukot/superfile/src/internal/ui/prompt (cached)
ok github.com/yorukot/superfile/src/internal/ui/rendering (cached)
ok github.com/yorukot/superfile/src/internal/ui/sidebar (cached)
ok github.com/yorukot/superfile/src/internal/utils (cached)
? github.com/yorukot/superfile/src/pkg/file_preview [no test files]
? github.com/yorukot/superfile/src/pkg/string_function [no test files]
✓ Unit tests passed
==> Building spf binary...
✓ Build completed successfully
🎉 All steps completed successfully!
Binary location: ./bin/spf
Binary size: 21M
➜ ~/Workspace/kuknitin/superfile git:(main) [8:39:59] |
|
To run your specific test ➜ ~/Workspace/kuknitin/superfile git:(main) [8:40:41] go test github.com/yorukot/superfile/src/internal -run="TestQuit" -coun
t=1
ok github.com/yorukot/superfile/src/internal 0.318s
➜ ~/Workspace/kuknitin/superfile git:(main) [8:40:55] |
b5a8fbf to
a84a942
Compare
There was a problem hiding this comment.
Gates Failed
Prevent hotspot decline
(2 hotspots with Large Method, Complex Method)
Gates Passed
2 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
| Prevent hotspot decline | Violations | Code Health Impact | |
|---|---|---|---|
| default_config.go | 1 rule in this hotspot | 8.89 → 8.87 | Suppress |
| model.go | 1 rule in this hotspot | 8.28 → 8.27 | Suppress |
Quality Gate Profile: The Bare Minimum
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
lazysegtree
left a comment
There was a problem hiding this comment.
LGTM. Validated changes via manual testing.
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [yorukot/superfile](https://github.com/yorukot/superfile) | minor | `v1.3.3` -> `v1.4.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>yorukot/superfile (yorukot/superfile)</summary> ### [`v1.4.0`](https://github.com/yorukot/superfile/releases/tag/v1.4.0) [Compare Source](yorukot/superfile@v1.3.3...v1.4.0) Hey folks. Releasing v1.4.0 with many new features, improvements, and bug fixes. We have an async file preview now, a zoxide panel, and various new features improving UX. #### Install: [**Click me to know how to install**](https://github.com/yorukot/superfile?tab=readme-ov-file#installation) #### Highlights - We have the Zoxide Panel now. Ensure zoxide is installed on your system, set `zoxide_support` to `true` in the config, and press `z` to use zoxide. <img width="645" height="295" alt="Image" src="https://github.com/user-attachments/assets/238f6549-5318-49d1-a3a0-14cf8a686955" /> - File previewing is now async, meaning reduced lag while scrolling through images, or on slow systems. - Many bug fixes. See 'Detailed Change Summary' ##### Internal Updates - Most file operations are now truly async with the usage of the recommended `tea.Cmd` pattern. - Enabled many new linters to improve code quality. - Moved golangci-lint to v2. Now developers don't need to keep the old v1 in their systems. - Refactored file preview in its own package for better maintainability and readability. - Fixed flaky unit tests. #### Detailed Change Summary <details><summary>Details</summary> <p> ##### Update - feat: File operation via tea cmd [#​963](yorukot/superfile#963) by @​lazysegtree - feat: processbar improvements, package separation, better channel management [#​973](yorukot/superfile#973) by @​lazysegtree - feat: enable lll and recvcheck linter, fix tests, more refactors [#​977](yorukot/superfile#977) by @​lazysegtree - feat: Remove channel for notification models [#​979](yorukot/superfile#979) by @​lazysegtree - feat: enable cyclop, funlen, gocognit, gocyclo linters, and refactor large functions [#​984](yorukot/superfile#984) by @​lazysegtree - feat: Add a new hotkey to handle cd-on-quit whenever needed [#​924](yorukot/superfile#924) by @​ahmed-habbachi - feat: added option to permanently delete files [#​987](yorukot/superfile#987) by @​hupender - feat: Preview panel separation [#​1021](yorukot/superfile#1021) by @​lazysegtree - feat: Add search functionality to help menu [#​1011](yorukot/superfile#1011) by @​iZarrios - feat: Use zoxide lib [#​1036](yorukot/superfile#1036) by @​lazysegtree - feat: Add zoxide directory tracking on navigation [#​1041](yorukot/superfile#1041) by @​lazysegtree - feat: Zoxide integration [#​1039](yorukot/superfile#1039) by @​lazysegtree - feat: Select mode with better feedback [#​1074](yorukot/superfile#1074) by @​lazysegtree - feat: owner/group in the metadata [#​1093](yorukot/superfile#1093) by @​xelavopelk - feat: Async zoxide [#​1104](yorukot/superfile#1104) by @​lazysegtree ##### Bug Fix - fix: sorting in searchbar [#​985](yorukot/superfile#985) by @​hupender - fix: Async rendering, Include clipboard check in paste items, and update linter configs [#​997](yorukot/superfile#997) by @​lazysegtree - fix: Move utility functions to utils package [#​1012](yorukot/superfile#1012) by @​lazysegtree - fix: Refactoring and separation of preview panel and searchbar in help menu [#​1013](yorukot/superfile#1013) by @​lazysegtree - fix(filePanel): allow focusType to be set correctly [#​1033](yorukot/superfile#1033) by @​faisal-990 - fix(ci): Update gomod2nix.toml, allow pre release in version output, release 1.4.0-rc1, bug fixes, and improvements [#​1054](yorukot/superfile#1054) by @​lazysegtree - fix(nix): resolve build failures in the nix flake [#​1068](yorukot/superfile#1068) by @​Frost-Phoenix - fix: Retry the file deletion to prevent flakies (#​938) [#​1076](yorukot/superfile#1076) by @​lazysegtree - fix(issue-1066): Fixed issue where enter was not searchable [#​1078](yorukot/superfile#1078) by @​Simpaqt - fix(#​1073): Tech debt fix [#​1077](yorukot/superfile#1077) by @​Simpaqt - fix: fix deleted directory not able to remove from pins (#​1067) [#​1081](yorukot/superfile#1081) by @​yorukot - fix: fix child process spawning attached [#​1084](yorukot/superfile#1084) by @​guemidiborhane - fix: always clear images when showing a FullScreenStyle [#​1094](yorukot/superfile#1094) by @​snikoletopoulos - fix: Allow j and k keys in zoxide [#​1102](yorukot/superfile#1102) by @​lazysegtree - fix: Zoxide improvements and 1.4.0-rc2 [#​1105](yorukot/superfile#1105) by @​lazysegtree - fix: rename cursor beginning on wrong character because of multiple dots in name (#​813) [#​1112](yorukot/superfile#1112) by @​SyedAsadK - fix: check and fix file panel scroll position on height changes [#​1095](yorukot/superfile#1095) by @​snikoletopoulos ##### Optimization - perf(website): optimize font loading and asset organization [#​1089](yorukot/superfile#1089) by @​yorukot ##### Documentation - docs: fix incorrect zoxide plugin config name [#​1049](yorukot/superfile#1049) by @​shree-xvi - docs(hotkeys): Fix typo in vimHotkeys.toml comments [#​1080](yorukot/superfile#1080) by @​wleoncio - docs: add section for core maintainers in README.md [#​1088](yorukot/superfile#1088) by @​yorukot - chore: add winget install instruction to readme and website [#​943](yorukot/superfile#943) by @​claykom ##### Dependencies - chore(deps): update dependency go to v1.25.0, golangci-lint to v2, golangci-lint actions to v8 [#​750](yorukot/superfile#750) by @​renovate[bot] - chore(deps): update amannn/action-semantic-pull-request action to v6 [#​1006](yorukot/superfile#1006) by @​renovate[bot] - chore(deps): update actions/first-interaction action to v3 [#​1005](yorukot/superfile#1005) by @​renovate[bot] - chore(deps): update actions/checkout action to v5 [#​1004](yorukot/superfile#1004) by @​renovate[bot] - chore(deps): bump astro from 5.10.1 to 5.12.8 [#​982](yorukot/superfile#982) by @​dependabot[bot] - fix(deps): update module golang.org/x/mod to v0.27.0 [#​989](yorukot/superfile#989) by @​renovate[bot] - fix(deps): update dependency @​expressive-code/plugin-collapsible-sections to v0.41.3 [#​990](yorukot/superfile#990) by @​renovate[bot] - fix(deps): update dependency sharp to v0.34.3 [#​992](yorukot/superfile#992) by @​renovate[bot] - fix(deps): update dependency @​expressive-code/plugin-line-numbers to v0.41.3 [#​991](yorukot/superfile#991) by @​renovate[bot] - chore(deps): update dependency go to v1.25.0 [#​994](yorukot/superfile#994) by @​renovate[bot] - fix(deps): update astro monorepo [#​995](yorukot/superfile#995) by @​renovate[bot] - fix(deps): update dependency @​astrojs/starlight to ^0.35.0 [#​1000](yorukot/superfile#1000) by @​renovate[bot] - fix(deps): update module github.com/urfave/cli/v3 to v3.4.1 [#​1001](yorukot/superfile#1001) by @​renovate[bot] - fix(deps): update module golang.org/x/text to v0.28.0 [#​1003](yorukot/superfile#1003) by @​renovate[bot] ##### Misc - chore: migrate from superfile.netlify.app to superfile.dev [#​1087](yorukot/superfile#1087) by @​yorukot - refactor(filepanel): replace filePanelFocusType with isFocused boolean [#​1040](yorukot/superfile#1040) by @​faisal-990 - refactor(ansi): Migrate from github.com/charmbracelet/x/exp/term/ansi to github.com/charmbracelet/x/ansi [#​1044](yorukot/superfile#1044) by @​faisal-990 - refactor: common operation on pinned directory file using PinnedManager [#​1085](yorukot/superfile#1085) by @​Manaswa-S - test: unit tests for pinned manager [#​1090](yorukot/superfile#1090) by @​Manaswa-S </p> </details> #### New Contributors * @​hupender made their first contribution in yorukot/superfile#985 * @​ahmed-habbachi made their first contribution in yorukot/superfile#924 * @​iZarrios made their first contribution in yorukot/superfile#1011 * @​faisal-990 made their first contribution in yorukot/superfile#1033 * @​shree-xvi made their first contribution in yorukot/superfile#1049 * @​Simpaqt made their first contribution in yorukot/superfile#1078 * @​wleoncio made their first contribution in yorukot/superfile#1080 * @​guemidiborhane made their first contribution in yorukot/superfile#1084 * @​Manaswa-S made their first contribution in yorukot/superfile#1085 * @​xelavopelk made their first contribution in yorukot/superfile#1093 * @​snikoletopoulos made their first contribution in yorukot/superfile#1094 * @​SyedAsadK made their first contribution in yorukot/superfile#1112 **Full Changelog**: <yorukot/superfile@v1.3.3...v1.4.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDYuMCIsInVwZGF0ZWRJblZlciI6IjQxLjE0Ni4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->


Resolves #923
This PR introduces a new hotkey defaulted to "shift+q" (cd_quit = ['Q']) to change directory upon quitting superfile.
I tried to add the new hotkey without affecting the cd-on-quit configuration, so it stays relevant for anyone that wants to always change directory when quitting.
Summary by CodeRabbit
New Features
Documentation
Tests