Skip to content

docs(task): add property description for interactive#8562

Merged
jdx merged 1 commit intojdx:mainfrom
roele:issues/8507
Mar 12, 2026
Merged

docs(task): add property description for interactive#8562
jdx merged 1 commit intojdx:mainfrom
roele:issues/8507

Conversation

@roele
Copy link
Copy Markdown
Contributor

@roele roele commented Mar 11, 2026

No description provided.

Copilot AI review requested due to automatic review settings March 11, 2026 18:31
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, 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 interactive property. This addition helps users understand how to configure tasks for direct shell interaction, optimizing I/O handling and improving overall task concurrency without sacrificing system stability.

Highlights

  • Documentation: Added a new section to the task configuration documentation, detailing the interactive property. This includes its type, default value, and a comprehensive explanation of its role in managing standard I/O and enhancing task concurrency.
Changelog
  • docs/tasks/task-configuration.md
    • Added documentation for the interactive property, including its type, default value, and a description of its functionality.
Activity
  • No specific activity (comments, reviews, progress updates) has been recorded for this pull request yet.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Mar 11, 2026

Greptile Summary

This PR adds a missing property description for the interactive task configuration option in the mise documentation. The change is documentation-only and correctly explains how interactive tasks use an exclusive global write lock to get sole access to stdin/stdout/stderr while still allowing non-interactive tasks to run concurrently under a shared read lock — behaviour confirmed in src/task/task_executor.rs.

Key changes:

  • Adds a new ### interactive section to docs/tasks/task-configuration.md immediately after the raw section, with type, default, and a prose description.

Issue found:

  • The description compares interactive to "the broad raw setting that forces single-threaded execution (by setting jobs = 1)". The jobs = 1 reduction only applies to the global raw setting (e.g. MISE_RAW=true); the per-task raw property (documented in the directly preceding section) does not change the job count. The wording is ambiguous and could mislead readers.

Confidence Score: 4/5

  • This is a documentation-only change and is safe to merge after clarifying one slightly misleading sentence.
  • The new section is accurate about the locking mechanism and parallel execution behaviour, all of which is confirmed in source. The only concern is an ambiguous reference to the raw setting forcing jobs = 1, which applies to the global setting but not the per-task property described just above in the same file.
  • docs/tasks/task-configuration.md — review the raw vs global raw comparison in the interactive description.

Important Files Changed

Filename Overview
docs/tasks/task-configuration.md Adds a new interactive property description. The locking behaviour described is accurate, but the comparison to raw "forcing single-threaded execution (by setting jobs = 1)" is ambiguous — that only applies to the global raw setting, not the per-task raw property documented in the preceding section.

Sequence Diagram

sequenceDiagram
    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()
Loading

Last reviewed commit: 2ecda3d

Comment on lines +268 to +271
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.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.:

Suggested change
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.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 interactive task property, including type/default.
  • Explain how interactive affects stdin/stdout/stderr handling and concurrency behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +268 to +271
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.
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds documentation for the interactive task property. The added description is a good start, but it's a bit verbose. I've suggested a more concise and readable version to improve clarity for users.

Comment on lines +268 to +271
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.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Suggested change
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.

@jdx jdx merged commit c72f46d into jdx:main Mar 12, 2026
39 of 40 checks passed
@roele roele deleted the issues/8507 branch March 13, 2026 06:32
mise-en-dev added a commit that referenced this pull request Mar 13, 2026
### 🚀 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)
fragon10 pushed a commit to fragon10/mise that referenced this pull request Mar 27, 2026
Co-authored-by: mise-en-dev <release@mise.jdx.dev>
fragon10 pushed a commit to fragon10/mise that referenced this pull request Mar 27, 2026
### 🚀 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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants