docs(task): add property description for interactive#8562
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request improves the clarity and completeness of the task configuration documentation by introducing a detailed description of the Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
Greptile SummaryThis PR adds a missing property description for the Key changes:
Issue found:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant TaskA as Interactive Task
participant TaskB as Non-interactive Task
participant TaskC as Non-interactive Task
participant Lock as TASK_RUNTIME_LOCK (RwLock)
TaskB->>Lock: acquire_read_lock() [shared]
TaskC->>Lock: acquire_read_lock() [shared]
Note over TaskB,TaskC: Run in parallel ✓
TaskA->>Lock: acquire_write_lock() [exclusive]
Note over Lock: Waits until all readers release
TaskB-->>Lock: release_read_lock()
TaskC-->>Lock: release_read_lock()
Lock-->>TaskA: write lock granted
Note over TaskA: Sole access to stdin/stdout/stderr
TaskA-->>Lock: release_write_lock()
Last reviewed commit: 2ecda3d |
| Connects the task directly to the shell's stdin/stdout/stderr. Instead of the broad `raw` setting that forces | ||
| single-threaded execution (by setting `jobs = 1`), `interactive` tasks acquire an exclusive global write lock, | ||
| ensuring sole access to standard I/O. Concurrently, non-interactive tasks can proceed in parallel, significantly | ||
| enhancing task concurrency and user experience for interactive processes without sacrificing system stability. |
There was a problem hiding this comment.
Potentially misleading raw comparison
The description says the raw setting "forces single-threaded execution (by setting jobs = 1)". This is only true for the global raw setting (e.g. MISE_RAW=true or raw = true in the global config) — confirmed in src/config/settings.rs:
if settings.raw {
settings.jobs = 1;
}The per-task raw = true property (which the reader has just finished reading about in the section above) does not set jobs = 1; it only changes output handling to interleaved mode (TaskOutput::Interleave) and connects stdin/stdout/stderr directly. Since this section immediately follows the per-task raw documentation, "the broad raw setting" is ambiguous and a reader could incorrectly conclude that the per-task raw forces the job count to 1.
Consider clarifying that the reference is to the global raw config/env setting, e.g.:
| Connects the task directly to the shell's stdin/stdout/stderr. Instead of the broad `raw` setting that forces | |
| single-threaded execution (by setting `jobs = 1`), `interactive` tasks acquire an exclusive global write lock, | |
| ensuring sole access to standard I/O. Concurrently, non-interactive tasks can proceed in parallel, significantly | |
| enhancing task concurrency and user experience for interactive processes without sacrificing system stability. | |
| Connects the task directly to the shell's stdin/stdout/stderr. Unlike the global `raw` setting (which forces | |
| single-threaded execution by setting `jobs = 1`), `interactive` tasks acquire an exclusive global write lock, | |
| ensuring sole access to standard I/O. Non-interactive tasks continue to run in parallel under a shared read | |
| lock, improving overall task concurrency and user experience for interactive processes. |
There was a problem hiding this comment.
Pull request overview
Adds documentation for the interactive task configuration property so users understand how to run tasks that require direct terminal I/O while preserving parallelism for non-interactive tasks.
Changes:
- Document new
interactivetask property, including type/default. - Explain how
interactiveaffects stdin/stdout/stderr handling and concurrency behavior.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| Connects the task directly to the shell's stdin/stdout/stderr. Instead of the broad `raw` setting that forces | ||
| single-threaded execution (by setting `jobs = 1`), `interactive` tasks acquire an exclusive global write lock, | ||
| ensuring sole access to standard I/O. Concurrently, non-interactive tasks can proceed in parallel, significantly | ||
| enhancing task concurrency and user experience for interactive processes without sacrificing system stability. |
There was a problem hiding this comment.
The comparison to raw is inaccurate in the context of the raw task property: raw = true does not force jobs = 1 (only the global --raw/Settings.raw path sets jobs = 1). Please reword this to avoid claiming raw sets jobs automatically—e.g., explain that raw often requires running with jobs = 1 to avoid garbled output, whereas interactive enforces exclusivity via a runtime lock.
| Connects the task directly to the shell's stdin/stdout/stderr. Instead of the broad `raw` setting that forces | |
| single-threaded execution (by setting `jobs = 1`), `interactive` tasks acquire an exclusive global write lock, | |
| ensuring sole access to standard I/O. Concurrently, non-interactive tasks can proceed in parallel, significantly | |
| enhancing task concurrency and user experience for interactive processes without sacrificing system stability. | |
| Connects the task directly to the shell's stdin/stdout/stderr. Unlike running mise in global `--raw` / `Settings.raw` | |
| mode (which forces single-threaded execution by setting `jobs = 1`) or using the `raw` task property (which often | |
| needs to be combined with `jobs = 1` to avoid garbled output), `interactive` tasks acquire an exclusive global write | |
| lock to standard I/O so they run alone on the terminal while non-interactive tasks can still proceed in parallel. |
| Connects the task directly to the shell's stdin/stdout/stderr. Instead of the broad `raw` setting that forces | ||
| single-threaded execution (by setting `jobs = 1`), `interactive` tasks acquire an exclusive global write lock, | ||
| ensuring sole access to standard I/O. Concurrently, non-interactive tasks can proceed in parallel, significantly | ||
| enhancing task concurrency and user experience for interactive processes without sacrificing system stability. |
There was a problem hiding this comment.
The current description is a bit verbose and contains some marketing-like phrasing. For technical documentation, it's best to be direct and concise. I've suggested a rephrasing that is more direct and broken into paragraphs for better readability.
| Connects the task directly to the shell's stdin/stdout/stderr. Instead of the broad `raw` setting that forces | |
| single-threaded execution (by setting `jobs = 1`), `interactive` tasks acquire an exclusive global write lock, | |
| ensuring sole access to standard I/O. Concurrently, non-interactive tasks can proceed in parallel, significantly | |
| enhancing task concurrency and user experience for interactive processes without sacrificing system stability. | |
| Connects the task directly to the shell's stdin, stdout, and stderr. This is useful for tasks that require user input. | |
| An `interactive` task acquires an exclusive lock on standard I/O. Unlike the `raw` setting (which forces `jobs = 1`), this allows other non-interactive tasks to run in parallel. |
### 🚀 Features - **(github)** use release latest endpoint to get latest release by @roele in [#8516](#8516) - **(install)** add shared and system install directories by @jdx in [#8581](#8581) - **(vfox)** add provenance metadata to lockfile for tool plugins by @malept in [#8544](#8544) ### 🐛 Bug Fixes - **(aqua)** expose main binary when files field is empty and symlink_bins is enabled by @AlexanderTheGrey in [#8550](#8550) - **(env)** redact secrets in `mise set` listing and task-specific env by @jdx in [#8583](#8583) - **(prepare)** install config tools before running prepare steps by @jdx in [#8582](#8582) - **(task)** allow ctrl-c to interrupt tool downloads during `mise run` by @jdx in [#8571](#8571) - **(tasks)** add file task header parser support for spaces around = by @roele in [#8574](#8574) ### 📚 Documentation - **(task)** add property description for interactive by @roele in [#8562](#8562) - add missing `</bold>` closing tag by @muzimuzhi in [#8564](#8564) - rebrand site with new chef logo and warm culinary palette by @jdx in [#8587](#8587) ### 📦️ Dependency Updates - update ghcr.io/jdx/mise:alpine docker digest to de4657e by @renovate[bot] in [#8577](#8577) - update ghcr.io/jdx/mise:copr docker digest to eef29a2 by @renovate[bot] in [#8578](#8578) - update ghcr.io/jdx/mise:rpm docker digest to 5a96587 by @renovate[bot] in [#8580](#8580) - update ghcr.io/jdx/mise:deb docker digest to 464cf7c by @renovate[bot] in [#8579](#8579) ### 📦 Registry - fix flatc version test mismatch by @jdx in [#8588](#8588) ### Chore - **(registry)** skip spark test-tool by @jdx in [#8572](#8572) ### New Contributors - @AlexanderTheGrey made their first contribution in [#8550](#8550) ## 📦 Aqua Registry Updates #### New Packages (6) - [`bahdotsh/mdterm`](https://github.com/bahdotsh/mdterm) - [`callumalpass/mdbase-lsp`](https://github.com/callumalpass/mdbase-lsp) - [`facebook/ktfmt`](https://github.com/facebook/ktfmt) - [`gurgeous/tennis`](https://github.com/gurgeous/tennis) - [`tektoncd/pipelines-as-code`](https://github.com/tektoncd/pipelines-as-code) - [`weedonandscott/trolley`](https://github.com/weedonandscott/trolley) #### Updated Packages (2) - [`apple/container`](https://github.com/apple/container) - [`cocogitto/cocogitto`](https://github.com/cocogitto/cocogitto)
Co-authored-by: mise-en-dev <release@mise.jdx.dev>
### 🚀 Features - **(github)** use release latest endpoint to get latest release by @roele in [jdx#8516](jdx#8516) - **(install)** add shared and system install directories by @jdx in [jdx#8581](jdx#8581) - **(vfox)** add provenance metadata to lockfile for tool plugins by @malept in [jdx#8544](jdx#8544) ### 🐛 Bug Fixes - **(aqua)** expose main binary when files field is empty and symlink_bins is enabled by @AlexanderTheGrey in [jdx#8550](jdx#8550) - **(env)** redact secrets in `mise set` listing and task-specific env by @jdx in [jdx#8583](jdx#8583) - **(prepare)** install config tools before running prepare steps by @jdx in [jdx#8582](jdx#8582) - **(task)** allow ctrl-c to interrupt tool downloads during `mise run` by @jdx in [jdx#8571](jdx#8571) - **(tasks)** add file task header parser support for spaces around = by @roele in [jdx#8574](jdx#8574) ### 📚 Documentation - **(task)** add property description for interactive by @roele in [jdx#8562](jdx#8562) - add missing `</bold>` closing tag by @muzimuzhi in [jdx#8564](jdx#8564) - rebrand site with new chef logo and warm culinary palette by @jdx in [jdx#8587](jdx#8587) ### 📦️ Dependency Updates - update ghcr.io/jdx/mise:alpine docker digest to de4657e by @renovate[bot] in [jdx#8577](jdx#8577) - update ghcr.io/jdx/mise:copr docker digest to eef29a2 by @renovate[bot] in [jdx#8578](jdx#8578) - update ghcr.io/jdx/mise:rpm docker digest to 5a96587 by @renovate[bot] in [jdx#8580](jdx#8580) - update ghcr.io/jdx/mise:deb docker digest to 464cf7c by @renovate[bot] in [jdx#8579](jdx#8579) ### 📦 Registry - fix flatc version test mismatch by @jdx in [jdx#8588](jdx#8588) ### Chore - **(registry)** skip spark test-tool by @jdx in [jdx#8572](jdx#8572) ### New Contributors - @AlexanderTheGrey made their first contribution in [jdx#8550](jdx#8550) ## 📦 Aqua Registry Updates #### New Packages (6) - [`bahdotsh/mdterm`](https://github.com/bahdotsh/mdterm) - [`callumalpass/mdbase-lsp`](https://github.com/callumalpass/mdbase-lsp) - [`facebook/ktfmt`](https://github.com/facebook/ktfmt) - [`gurgeous/tennis`](https://github.com/gurgeous/tennis) - [`tektoncd/pipelines-as-code`](https://github.com/tektoncd/pipelines-as-code) - [`weedonandscott/trolley`](https://github.com/weedonandscott/trolley) #### Updated Packages (2) - [`apple/container`](https://github.com/apple/container) - [`cocogitto/cocogitto`](https://github.com/cocogitto/cocogitto)
No description provided.