Some research
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# Alpine Linux fish-dev package page (v3.16, ppc64le)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Package details |
|
||||
| Source URL | https://pkgs.alpinelinux.org/package/v3.16/main/ppc64le/fish-dev |
|
||||
| Source type | other |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another architecture's Alpine package-index entry for the same fish version; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# Alpine Linux fish-dev package page (v3.16, s390x)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Package details |
|
||||
| Source URL | https://pkgs.alpinelinux.org/package/v3.16/main/s390x/fish-dev |
|
||||
| Source type | other |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another architecture's Alpine package-index entry for the same fish version; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# Alpine Linux fish package page (v3.16, x86)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Package details |
|
||||
| Source URL | https://pkgs.alpinelinux.org/package/v3.16/main/x86/fish |
|
||||
| Source type | other |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A distro package-index page for fish 3.16-era Alpine builds, surfaced while trying to date isatty's introduction; does not itself state a changelog entry, not independently read in depth.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
# Conclusion: Cross-Shell Syntax for the Command-Not-Found and Plexer Hooks (bash/zsh/fish)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Conclusion |
|
||||
| Tier | N/A |
|
||||
| Date decided | 2026-10-10 |
|
||||
| Decided by | retoor, advised by tai (agent, Claude Sonnet 5) |
|
||||
| Status | Active |
|
||||
| Confidence | High |
|
||||
|
||||
## Question / problem statement
|
||||
|
||||
The original `shell-multiplexer-auto-attach` research (2026-10-09) recommended and specified the bash-only command-not-found hook and plexer auto-wrap hook, but explicitly built on bash's own `.bashrc`/`$-`/`command_not_found_handle` primitives throughout. retoor asked for the same user-visible behavior — a bare `tai` command and any unknown command reaching the agent, and a fresh interactive shell transparently dropping into a managed plexer session — to work identically under zsh and fish, not just bash, and asked specifically how to detect each shell and how to avoid any risk of corrupting an existing shell config file while doing it (duplicate blocks, clobbered content, etc.). Deep research into the exact zsh/fish syntax was explicitly requested before writing any shell-specific code.
|
||||
|
||||
## Conclusion
|
||||
|
||||
**zsh** needs no new syntax at all for the plexer hook: zsh is POSIX-enough that the exact same `[`/`case "$-" in *i*)`/`$TMUX`/`exec` block already used for bash (`PLEXER_BASHRC_BLOCK`) works byte-for-byte unchanged — only the destination file differs (`~/.zshrc` instead of `~/.bashrc`). The only thing that changes for zsh's command-not-found hook is the function name: `command_not_found_handler` (with an "-er" suffix), not bash's `command_not_found_handle`; the body is otherwise identical.
|
||||
|
||||
**fish** needs genuinely new syntax throughout, because it shares no syntax primitives with POSIX shells: `status is-interactive` replaces `case "$-" in *i*)`; `test`/`and`-chained conditions replace `[ ] && [ ]`; the `isatty stdin`/`isatty stdout` builtin replaces `[ -t 0 ]`/`[ -t 1 ]` (fish's own `test` builtin has no `-t` file-descriptor primary, confirmed by an explicit, otherwise-inconclusive search); and the command-not-found hook is a `function fish_command_not_found` definition receiving `$argv`, not a POSIX-named handler function. Critically, fish's `config.fish` is sourced on *every* fish startup — interactive or not, login or not, unlike bash's `.bashrc`/zsh's `.zshrc` — so the `status is-interactive` guard inside the fish plexer block is doing real, load-bearing work (not just defense-in-depth the way it is for bash/zsh), confirmed end-to-end by `FishNonInteractiveSkipTest` actually running a plain non-interactive `fish -c` against the installed hook and checking no plexer socket gets created.
|
||||
|
||||
The config-corruption risk the user was worried about is handled the same way the original bash-only hooks already handled it, extended rather than reinvented: every block (six total now: notfound × {bash, zsh, fish} and plexer × {bash, zsh, fish}) is wrapped in its own unique begin/end marker pair, upserted via `_rc_block_upsert`/removed via `_rc_block_remove` (shared helpers added in this pass, refactored out of the near-duplicate bash-only functions that already existed), which always back up the target file once (`<file>.bak-tai`) before any write and always strip any stale marked block before re-inserting, making install/reinstall/uninstall idempotent and non-duplicating by construction. A dedicated test (`DualHookSameFileIsolationTest` in `tests/bashrc.py`) proves the notfound and plexer blocks coexist in the same rc file (all three shells put both hooks in one file) without clobbering each other or surrounding user content, for all three shells, deterministically and without needing a real shell.
|
||||
|
||||
## Supporting sources
|
||||
|
||||
- `../fishshell-docs-4-8-fish-command-not-found.md` (Tier 1) — the `fish_command_not_found` function mechanism and its `$argv` argument shape.
|
||||
- `../zsh-org-mla-2015-msg00931-command-not-found-handler.md`, `../zsh-org-mla-2009-msg00989-command-not-found-handler.md` (Tier 1) — confirmed the exact zsh function name (`command_not_found_handler`) and that no autoload/registration step is needed beyond the definition.
|
||||
- `../oracle-docs-e88353-zshbuiltins-autoload-x.md` (Tier 1) — ruled `autoload -X` out as something tai's own (static, non-dynamic) zsh handler needed to use.
|
||||
- `../fishshell-docs-3-7-isatty.md` (Tier 1) — confirmed fish's `isatty` builtin (and the absence of `test -t`) as the tty-check primitive for the fish plexer block.
|
||||
- `../fishshell-docs-4-9-status.md` (Tier 1) — confirmed `status is-interactive`/`status is-login` as fish's `$-`-equivalent.
|
||||
- `../fishshell-blog-release-3-4-0.md` (Tier 1) — an honest negative result on pinning `isatty`'s exact introduction version; didn't block the decision (3.2+ is more than sufficient) but recorded rather than silently dropped.
|
||||
- `../fishshell-docs-3-4-index-initialization-files.md` (Tier 1) — the single most consequential finding: `config.fish` is always sourced, making the `status is-interactive` guard load-bearing rather than redundant.
|
||||
- `../github-pyenv-wiki-unix-shell-initialization.md` (Tier 1, secondary/unconfirmed) — corroborating detail on fish's full startup-file ordering; not independently relied on beyond what the official docs already established.
|
||||
- `../man-archlinux-org-fish-1-en-interactive-flag.md` (Tier 1) — confirmed `fish -i` as a real, stable way to force an interactive fish process, used directly in the new integration tests.
|
||||
|
||||
## Alternatives considered and rejected
|
||||
|
||||
- **Renaming the existing `bash-hook`/`plexer-hook` install targets to a single shell-agnostic name** (e.g. `shell-hook`) that auto-detects and writes into whichever rc files are present. Rejected in favor of adding explicit `zsh-hook`/`fish-hook`/`zsh-plexer-hook`/`fish-plexer-hook` targets alongside the untouched originals: explicit, narrowly-scoped, independently testable per shell, and zero risk to the existing bash-hook/plexer-hook behavior and tests already relying on those exact names — consistent with "loud and explicit over silently magic."
|
||||
- **Silently installing into every shell's rc file regardless of whether that shell is present on the machine.** Rejected: writing a dangling hook into `~/.zshrc` on a machine with no zsh installed is exactly the kind of silent, narrow-blast-radius violation this project's own conventions reject. Each new shell-specific install op checks `shutil.which(<shell>)` first and skips loudly (`"zsh-hook: zsh not found, skipped"`) on install/upgrade; uninstall/reinstall still act on the file regardless, so a hook installed before a shell was later removed still gets cleaned up.
|
||||
- **A from-scratch generic per-shell templating system** (e.g. a single parameterized block description compiled to each shell's syntax). Rejected: fish's syntax is different enough (no `[`/`case`/`$-`, no `-t` test primary) that a shared template would need shell-specific escape hatches for nearly every line anyway, buying no real abstraction over just writing fish's own three blocks directly — "boring technology... fewer moving parts" favored the direct approach actually taken.
|
||||
|
||||
## Risks / open questions
|
||||
|
||||
The exact fish version that introduced `isatty` was not pinned down (documented since at least 3.2; see `fishshell-blog-release-3-4-0.md`'s negative result) — not a practical risk for any fish a user would realistically have installed today, but noted rather than silently assumed. The `FISH_PLEXER_BLOCK`'s reliance on `status is-interactive` as config.fish's *only* interactivity gate (unlike bash/zsh, where the rc file itself is normally interactive-scoped too) means a future fish release that changed `status is-interactive`'s semantics would be a higher-blast-radius regression for fish than for bash/zsh; this is exactly why `FishNonInteractiveSkipTest` exists as a real, running-fish-binary test rather than a unit test of the file content alone.
|
||||
|
||||
## Action taken
|
||||
|
||||
Implemented in full in the same session as this research, not deferred: `tai.py` gained `shell_rc_path()`/`shell_present()`, the `ZSH_NOTFOUND_BLOCK`/`FISH_NOTFOUND_BLOCK`/`FISH_PLEXER_BLOCK` constants, the shared `_rc_block_present`/`_rc_block_remove`/`_rc_block_upsert` helpers (the existing bash-only functions were refactored to delegate to these rather than duplicating the logic a third and fourth time), the per-shell `zsh_hook_present`/`upsert_zsh_hook_block`/`remove_zsh_hook_block` family (and fish/plexer equivalents), the shared `op_shell_hook()` plus `op_zsh_hook`/`op_fish_hook`/`op_zsh_plexer_hook`/`op_fish_plexer_hook`, four new `INSTALL_TARGETS` entries, updated `status_lines()`/`install_report()`/the `install` tool's description, and `install_self()` now additionally detects `$SHELL` and installs the matching shell's hook. Tests: new unit tests in `test_tai.py` (`InstallOpsTests`, `InstallTests`) covering install/uninstall/idempotency/skip-when-missing/XDG_CONFIG_HOME/directory-creation for both new shells, all passing alongside the full existing 226-test suite (237 after additions); new real-shell integration tests in `tests/bashrc.py` (`ZshInstallAndAutoWrapTest`, `ZshAntiRecursionTest`, `ZshTmuxActiveSkipTest`, `ZshNonInteractiveSkipTest`, and the fish equivalents, plus `DualHookSameFileIsolationTest`), gated the same way the existing bash tests are (`TAI_CONTAINER_TEST=1`-only); `tests/docker/Dockerfile` now installs `zsh` and `fish` alongside `bash` so those real-shell tests actually run in the disposable container rather than only existing as aspirational code. `README.md`'s Installation section was rewritten to document all eleven install targets accurately (it previously undercounted them and didn't mention `plexer-hook` at all, a pre-existing documentation gap fixed in passing since this edit touched that exact paragraph).
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial conclusion recorded. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish(1) manpage, Debian trixie dyn-mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | table of contents |
|
||||
| Source URL | https://dyn.manpages.debian.org/trixie/fish-common/fish.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A second Debian manpage-archive path (dyn.manpages.debian.org) for the same trixie fish(1) reference; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish(1) manpage, Debian trixie mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | table of contents |
|
||||
| Source URL | https://manpages.debian.org/trixie/fish-common/fish.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A Debian manpage-archive mirror of the fish(1) reference, matching the current wording; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish-doc(1) manpage, Debian unstable mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | table of contents |
|
||||
| Source URL | https://dyn.manpages.debian.org/unstable/fish-common/fish-doc.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A Debian manpage-archive mirror of the fish-doc(1) reference; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,48 @@
|
||||
# fish 3.4.0 release notes
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | fish 3.4.0 release blog post |
|
||||
| Source URL | https://fishshell.com/blog/release-3-4-0 |
|
||||
| Source publisher / author | fish-shell project (fishshell.com) |
|
||||
| Source type | blog post |
|
||||
| Source date (published) | Unknown — not stated (fish 3.4.0's own release date) |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | Medium |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
A dedicated search attempting to pin down exactly which fish version introduced the `isatty` builtin (prompted by it being documented as early as the 3.2 doc mirror, to check whether that's actually when it shipped or just the earliest mirror checked) came back inconclusive. This is the headline release post for fish 3.4.0, included here specifically as negative evidence: it highlights command substitution syntax, a theme-changing terminal interface, faster globbing, and disabling autosuggestions, but does not mention `isatty` at all.
|
||||
|
||||
## Key findings
|
||||
|
||||
- fish 3.4.0's release notes do not mention `isatty`, which is consistent with `isatty` having shipped *before* 3.4.0 (matching the already-documented presence in the 3.2 doc mirror) rather than being introduced by it.
|
||||
- No changelog entry pinning the exact introduction version of `isatty` was found by this search; the project's fish-shell `CHANGELOG.rst` (not fetched) is identified as the next place to check if the exact version ever becomes load-bearing.
|
||||
- This negative result is recorded honestly rather than silently dropped, per this archive's own quality bar on confidence ratings — "isatty exists by 3.2, introduction date not confirmed further back" is the accurate state of knowledge, not "isatty was introduced in 3.2" (which was never actually confirmed, only observed as the earliest doc mirror available).
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- An honest, verifiable negative finding (absence of a mention) rather than a vague "couldn't find it" — a reader can independently check the same release notes and see the same absence.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- Doesn't answer the question it was sought for; the actual introduction version of `isatty` remains unconfirmed beyond "documented by 3.2" (see fishshell-docs-3-7-isatty.md).
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
Not directly load-bearing for tai's implementation (which only needs `isatty` to exist in any fish worth supporting today, confirmed since 3.2), but recorded so this project doesn't silently pretend the exact introduction version was confirmed when it was not.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 3.1)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/3.1/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the fish status command doc page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish_command_not_found docs (fish 3.2)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | fish_command_not_found - what to do when a command wasn't found |
|
||||
| Source URL | https://fishshell.com/docs/3.2/cmds/fish_command_not_found.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Surfaced by the fish_command_not_found query as an older-version mirror of the same doc page; the 4.8 version (fishshell-docs-4-8-fish-command-not-found.md, Tier 1) was read in depth instead, confirming the feature's introduction version.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty builtin docs (fish 3.2)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | isatty - test if a file descriptor is a terminal |
|
||||
| Source URL | https://fishshell.com/docs/3.2/cmds/isatty.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An older-version mirror of the isatty builtin doc page; the 3.7 version (fishshell-docs-3-7-isatty.md, Tier 1) was read in depth instead.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish_command_not_found docs (fish 3.3)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | fish_command_not_found - what to do when a command wasn't found |
|
||||
| Source URL | https://fishshell.com/docs/3.3/cmds/fish_command_not_found.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the same fish_command_not_found doc page, surfaced by the same query; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# fish docs index, fish 3.3 (initialization files section)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | fishshell.com |
|
||||
| Source URL | https://fishshell.com/docs/3.3/index.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An older-version mirror of the fish docs index page covering initialization files (same section read in depth on the 3.4 index, Tier 1, at fishshell-docs-3-4-index-initialization-files.md); also reachable at the bare https://fishshell.com/docs/3.3 URL. Not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty builtin docs (fish 3.3)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | isatty - test if a file descriptor is a terminal |
|
||||
| Source URL | https://fishshell.com/docs/3.3/cmds/isatty.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the isatty builtin doc page, used only to confirm cross-version stability in the Tier 1 dossier; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 3.3)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/3.3/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the fish status command doc page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish_command_not_found docs (fish 3.4)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | fish_command_not_found - what to do when a command wasn't found |
|
||||
| Source URL | https://fishshell.com/docs/3.4/cmds/fish_command_not_found.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the same fish_command_not_found doc page, surfaced by the same query; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
# fish docs index: initialization files (config.fish is always sourced)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | fish documentation index (3.4) |
|
||||
| Source URL | https://fishshell.com/docs/3.4/index.html |
|
||||
| Source publisher / author | fish-shell project (fishshell.com) |
|
||||
| Source type | vendor docs |
|
||||
| Source date (published) | Unknown — not stated |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | High |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
fish's official docs state plainly that its startup files are read "on the startup of every shell, not just interactive ones" — unlike bash's `.bashrc` (interactive-only, non-login) or `.profile`/`.bash_profile` (login-only). `~/.config/fish/config.fish` (respecting `$XDG_CONFIG_HOME`) is read on *every* fish invocation, interactive or not, login or not, and is explicitly the right place to put code that should run unconditionally — with `status is-interactive`/`status is-login` as the documented way to scope behavior within it. Snippets in `~/.config/fish/conf.d/` run before `config.fish`, which runs last so it can override them.
|
||||
|
||||
## Key findings
|
||||
|
||||
- This is the single most consequential difference from bash/zsh for this project: `.bashrc` and `.zshrc` are themselves gated to interactive shells by the shell's own startup logic (roughly), so the bash/zsh plexer block's `case "$-" in *i*)` guard is a belt-and-suspenders check on top of a file that mostly only gets read in the right context anyway. `config.fish` has no such built-in gating — it runs unconditionally, so the `status is-interactive` guard inside `FISH_PLEXER_BLOCK` is doing *all* of the interactivity-scoping work, not just reinforcing it.
|
||||
- The fish FAQ (per the search tool's synthesis) explicitly calls out this exact contrast with `.bashrc`/`.profile`, confirming it's a documented, intentional design difference in fish, not an edge case this research happened to stumble on.
|
||||
- `~/.config/fish/config.fish`'s location follows `$XDG_CONFIG_HOME` — directly informing `shell_rc_path()` in tai.py, which checks `os.environ.get("XDG_CONFIG_HOME")` before falling back to `~/.config`.
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- Official documentation stating the behavior plainly and explicitly contrasting it with bash/zsh conventions, removing any ambiguity about whether the interactivity guard is optional.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- A third-party pyenv wiki page (github-pyenv-wiki-unix-shell-initialization.md, also Tier 1) lists a fuller startup-file ordering (system/user `conf.d`, `vendor_conf.d`, `/etc/fish/config.fish`, then `~/.config/fish/config.fish`) that this search could not independently confirm against the official docs; treated as secondary/unconfirmed per that dossier's own caveat, not relied on for anything load-bearing here.
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
This is the finding that made the `status is-interactive` guard non-optional in `FISH_PLEXER_BLOCK`: without it, installing the plexer hook into `config.fish` would attempt to `exec tai.py --plexer-wrap` on *every* fish invocation, including scripts, `fish -c`, and tooling that shells out to fish non-interactively — exactly the failure mode the user explicitly wanted to avoid. Confirmed end-to-end by the `FishNonInteractiveSkipTest` integration test in `tests/bashrc.py`, which runs a plain `fish -c 'echo marker'` (no explicit sourcing needed, since config.fish always runs) and asserts no plexer socket gets created.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty builtin docs (fish 3.4)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | isatty - test if a file descriptor is a terminal |
|
||||
| Source URL | https://fishshell.com/docs/3.4/cmds/isatty.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the isatty builtin doc page, used only to confirm cross-version stability in the Tier 1 dossier; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 3.4)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/3.4/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the fish status command doc page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty builtin docs (fish 3.5)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | isatty - test if a file descriptor is a terminal |
|
||||
| Source URL | https://fishshell.com/docs/3.5/cmds/isatty.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the isatty builtin doc page, used only to confirm cross-version stability in the Tier 1 dossier; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish_command_not_found docs (fish 3.6)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | fish_command_not_found - what to do when a command wasn't found |
|
||||
| Source URL | https://fishshell.com/docs/3.6/cmds/fish_command_not_found.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the same fish_command_not_found doc page, surfaced by the same query; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty builtin docs (fish 3.6)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | isatty - test if a file descriptor is a terminal |
|
||||
| Source URL | https://fishshell.com/docs/3.6/cmds/isatty.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the isatty builtin doc page, used only to confirm cross-version stability in the Tier 1 dossier; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 3.6)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/3.6/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the fish status command doc page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,49 @@
|
||||
# isatty - test if a file descriptor is a terminal
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | isatty - test if a file descriptor is a terminal |
|
||||
| Source URL | https://fishshell.com/docs/3.7/cmds/isatty.html |
|
||||
| Source publisher / author | fish-shell project (fishshell.com) |
|
||||
| Source type | vendor docs |
|
||||
| Source date (published) | Unknown — not stated |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | High |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
fish ships `isatty` as its own standalone builtin command (distinct from a `test -t` primary), accepting either a numeric file descriptor or one of the names `stdin`/`stdout`/`stderr`, defaulting to fd 0 if no argument is given, and returning exit status 0 when the descriptor is a terminal. A dedicated search for whether fish's `test` builtin itself supports a `-t` file-descriptor primary (the POSIX `test -t` equivalent) came back empty across every doc mirror checked — `isatty` is the only confirmed mechanism for this check in fish.
|
||||
|
||||
## Key findings
|
||||
|
||||
- `isatty` takes a named stream (`stdin`, `stdout`, `stderr`) or a raw fd number; `isatty stdin`/`isatty stdout` is the idiomatic way to check both streams, directly mirroring what the bash/zsh plexer block does with `[ -t 0 ] && [ -t 1 ]`.
|
||||
- Exit status 0 means "is a terminal", non-zero means "is not" — same polarity as POSIX `test -t`, so no inverted-logic trap when porting the bash/zsh condition.
|
||||
- The same behavior is documented identically across every fish doc version mirror checked from 3.2 through 4.5 (the 3.2, 3.3, 3.4, 3.5, 3.6 version pages and the w3cub 4.5 mirror all state the same thing), so this is a long-stable, safe builtin to depend on rather than a recent or version-fragile addition.
|
||||
- fish's `test` builtin was separately confirmed (via the companion search for a changelog/version-introduction date) to not document a `-t` primary at all in any version checked; `isatty` is therefore not an optional shortcut but the only available mechanism for this check in fish.
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- Officially documented, stable across at least five minor versions (3.2–3.6, plus 4.5 via mirror) with word-for-word identical behavior description — a safe primitive to build the plexer hook's tty check on.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- Exact version of introduction could not be pinned down (see the separate, explicitly inconclusive isatty-version-changelog search, Tier 1 dossier fishshell-blog-release-3-4-0.md); documented as early as 3.2 in this search, which is more than sufficient for this project's purposes (any fish worth supporting today postdates 3.2 by years) but is a documented gap, not a guess.
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
Directly the basis for `FISH_PLEXER_BLOCK` in tai.py using `isatty stdin` and `isatty stdout` instead of attempting a `test -t 0`/`test -t 1` primary that fish's `test` builtin does not support.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 4.0)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/4.0/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A version mirror of the fish status command doc page; the 4.9 version (fishshell-docs-4-9-status.md, Tier 1) was read in depth instead, confirming is-interactive/is-login are stable across versions.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 4.1)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/4.1/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the fish status command doc page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 4.2)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/4.2/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the fish status command doc page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 4.3)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/4.3/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the fish status command doc page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# status command docs (fish 4.4)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/4.4/cmds/status.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another version mirror of the fish status command doc page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,50 @@
|
||||
# fish_command_not_found - what to do when a command wasn't found
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | fish_command_not_found - what to do when a command wasn't found |
|
||||
| Source URL | https://fishshell.com/docs/4.8/cmds/fish_command_not_found.html |
|
||||
| Source publisher / author | fish-shell project (fishshell.com) |
|
||||
| Source type | vendor docs |
|
||||
| Source date (published) | Unknown — not stated |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | High |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
fish's analogue of bash's `command_not_found_handle`/zsh's `command_not_found_handler` is a plain user-definable function named `fish_command_not_found`, called whenever fish fails to find a command. It receives the attempted command line as `$argv` (one token per arg, so `$argv[1]` is the missing command name), was introduced in fish 3.2.0, and falls back to fish's own default error message if left undefined or if the function explicitly calls `__fish_default_command_not_found_handler`.
|
||||
|
||||
## Key findings
|
||||
|
||||
- Defined with ordinary fish function syntax: `function fish_command_not_found; ...; end`, no special registration step required beyond defining the function (typically in `config.fish` or an autoloaded `~/.config/fish/functions/fish_command_not_found.fish` file).
|
||||
- `$argv` holds the full attempted command line as separate tokens, directly analogous to bash's `"$@"` inside `command_not_found_handle`.
|
||||
- Introduced in fish 3.2.0; versions before that used a `fish_command_not_found` *event* instead of a function, so a handler meant to support pre-3.2 fish needs a dual event+function definition — not a concern for this project, which only needs to support a function since its own `tai.py` requires modern Python 3 anyway and fish 3.2 (2020) predates any realistic target.
|
||||
- Leaving the function undefined, or having it call `__fish_default_command_not_found_handler`, reproduces fish's normal plain error message — useful as the explicit fallback behavior if tai's own hook is ever uninstalled.
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- Official, current vendor documentation, consistent across every mirrored version from 3.2 through 4.x found in this search — a stable, non-moving target to build on.
|
||||
- Directly structurally parallel to bash/zsh's own mechanism (one function, one argv), which kept the tai.py implementation simple: same body shape (`"$HOME/.local/bin/tai.py" $argv`) as the bash/zsh blocks, just fish function syntax instead of a shell function definition.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- Unlike bash's `command_not_found_handle`/zsh's `command_not_found_handler`, which are ordinary shell functions sourced from any rc file read at the right time, fish's function must specifically be named `fish_command_not_found` — fish does not look for an alternately-named function for this purpose.
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
This is the exact mechanism `FISH_NOTFOUND_BLOCK` in `tai.py` implements: a `function fish_command_not_found; "$HOME/.local/bin/tai.py" $argv; end` block written into `config.fish` by `upsert_fish_hook_block`/`op_fish_hook`, directly parallel to the existing bash/zsh blocks.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
@@ -0,0 +1,48 @@
|
||||
# status - query fish runtime information
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | status - query fish runtime information |
|
||||
| Source URL | https://fishshell.com/docs/4.9/cmds/status.html |
|
||||
| Source publisher / author | fish-shell project (fishshell.com) |
|
||||
| Source type | vendor docs |
|
||||
| Source date (published) | Unknown — not stated |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | High |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
fish has no `$-`-style variable at all; the equivalent of bash/zsh's `case "$-" in *i*)` interactivity check is the `status is-interactive` subcommand (short form `status -i` / `--is-interactive`), which succeeds (exit 0) when fish is connected to a keyboard — i.e. actually interactive, independent of how it was started. A separate `status is-login` (`-l`/`--is-login`) checks login-shell status. Both subcommands are documented identically across every version mirror checked, from fish 3.1 through 4.9.
|
||||
|
||||
## Key findings
|
||||
|
||||
- `status is-interactive` is the single, direct fish replacement for the bash/zsh `case "$-" in *i*)` guard used in `PLEXER_BASHRC_BLOCK` — same semantic question ("is this shell actually interactive"), different syntax entirely.
|
||||
- `status is-login` exists as a separate, distinct check — not needed by tai's plexer hook (which only cares about interactivity, not login status) but confirms fish does expose that distinction too, the same way bash's `shopt login_shell` does.
|
||||
- Behavior is stable and identically worded across fish 3.1, 3.3, 3.4, 3.6, 4.0, 4.1, 4.2, 4.3, 4.4, and 4.9 doc mirrors — this is a long-established, non-fragile part of fish's interface.
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- Official vendor documentation, cross-checked across ten version mirrors with word-for-word consistent behavior — as safe a primitive as `isatty` to build on.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- Unlike `$-`, which is a variable any shell code can inspect without a subcommand call, `status is-interactive` is a command invocation; this is a fish idiom difference, not a limitation, but worth noting since it changes how the guard composes with other conditions (fish's `if cond1; and cond2; and cond3` chaining, rather than a single `&&`-joined test expression).
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
Directly the basis for the `status is-interactive` guard at the top of `FISH_PLEXER_BLOCK` in tai.py — the single most load-bearing line in that block, since `config.fish` (unlike `.bashrc`/`.zshrc`) is sourced on every fish startup regardless of interactivity (see fishshell-docs-3-4-index-initialization-files.md), making this guard do work that bash/zsh get for free from their rc files only being read for interactive shells in the first place.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# void-packages fish bump commit (charnock mirror)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | git.charnock.fr |
|
||||
| Source URL | https://git.charnock.fr/tomcharnock/void-packages/commit/3d6c82797ac59cb517f649c52945109821540f98 |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A Void Linux packaging commit bumping the fish package version, surfaced while trying to date isatty's introduction; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# void-packages fish bump commit, patch view (charnock mirror)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | git.charnock.fr |
|
||||
| Source URL | https://git.charnock.fr/tomcharnock/void-packages/commit/586b1f290d27273ae6eddc4e99579b68ac8b03e8.patch |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
The raw .patch view of another Void Linux fish packaging commit; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# Cynosphere dotfiles commit, patch view
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | gitdab.com |
|
||||
| Source URL | https://gitdab.com/Cynosphere/dotfiles-pub/commit/24e04853691cd564f2c27eeb2eda25bff7919e81.patch |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
The raw .patch view of the same Cynosphere dotfiles commit; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# Cynosphere dotfiles: command_not_found_handler commit
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | zshrc: command not found handler |
|
||||
| Source URL | https://gitdab.com/Cynosphere/dotfiles-pub/commit/24e04853691cd564f2c27eeb2eda25bff7919e81 |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A personal dotfiles commit defining a Windows-style "not recognized" command_not_found_handler; surfaced by the query, described only briefly by the search tool's own summary, not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,47 @@
|
||||
# Unix shell initialization (pyenv wiki)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | Unix shell initialization |
|
||||
| Source URL | https://github.com/pyenv/pyenv/wiki/Unix-Shell-initialization |
|
||||
| Source publisher / author | pyenv project (community wiki) |
|
||||
| Source type | repository |
|
||||
| Source date (published) | Unknown — not stated |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | Medium |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
A third-party wiki page (maintained by the pyenv project, not the fish-shell project) laying out a fuller ordering of fish's startup-file reads: system and user `conf.d` snippet directories, `vendor_conf.d`, then `/etc/fish/config.fish`, and finally `~/.config/fish/config.fish` last — consistent with, and more detailed than, the official fishshell.com docs' own statement that `config.fish` runs after `conf.d` snippets so it can override them.
|
||||
|
||||
## Key findings
|
||||
|
||||
- `~/.config/fish/config.fish` is the *last* file read in fish's startup sequence, meaning anything it does (including tai's plexer-wrap `exec`) runs after every other conf.d snippet and vendor config has already had a chance to run — relevant if another tool's fish integration also lives in conf.d and expects to run before an `exec` replaces the shell process.
|
||||
- The ordering list itself (system conf.d → user conf.d → vendor_conf.d → `/etc/fish/config.fish` → `~/.config/fish/config.fish`) could not be independently confirmed against the official fishshell.com docs within this search; the search tool's own synthesis explicitly flagged this as "secondary, not confirmed against the official docs."
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- Goes into more structural detail than the official docs' own high-level statement, which is useful context even though it isn't independently verified here.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- Third-party, community-maintained wiki content, not primary vendor documentation — explicitly treated as secondary per the quality bar in this archive's own README (confidence ratings are honest, not reassuring). The core fact this project actually relies on (config.fish is always sourced, and sourced last) is corroborated by the official docs (fishshell-docs-3-4-index-initialization-files.md) independently of this page.
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
Secondary corroboration, not a load-bearing fact on its own: reinforces that writing the tai hooks into `config.fish` (rather than a `conf.d` snippet) means they run after everything else, which is the right place for an `exec`-based wrap to live (nothing else gets a chance to run after it anyway, by definition).
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty docs, fish-site repo raw "current" mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | isatty - test if a file descriptor is a terminal |
|
||||
| Source URL | https://raw.githubusercontent.com/fish-shell/fish-site/master/site/docs/current/cmds/isatty.html |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
The raw HTML source of the fish-shell project's own doc-site repo for the "current" isatty page; consistent with the versioned pages already read, not separately opened.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish(1) manpage, linux.die.net mirror (older wording)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | fish(1) - Linux man page |
|
||||
| Source URL | https://linux.die.net/man/1/fish |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An older-wording mirror of the fish(1) manpage; the search tool's own summary flags it (along with the Ubuntu focal copy) as using older phrasing for -i than the current Arch/Debian/openSUSE mirrors. Not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty(1) Linux man page (unrelated POSIX utility)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | isatty(1) - Linux man page |
|
||||
| Source URL | https://linux.die.net/man/1/isatty |
|
||||
| Source type | other |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A different, unrelated isatty(1) command-line utility's man page (not fish's builtin), surfaced as a tangential hit; not independently read and not treated as relevant to fish's own isatty builtin.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish(1) manpage, Arch extra-repo mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | man.archlinux.org |
|
||||
| Source URL | https://man.archlinux.org/man/extra/fish/fish.1.en |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A duplicate Arch Linux manpage mirror (extra-repo path) of the same fish.1 page read in depth at man-archlinux-org-fish-1-en-interactive-flag.md (Tier 1); not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
# fish(1) manpage: -i/--interactive flag
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | FISH(1) |
|
||||
| Source URL | https://man.archlinux.org/man/fish.1.en |
|
||||
| Source publisher / author | fish-shell project, mirrored by the Arch Linux manpage service |
|
||||
| Source type | vendor docs |
|
||||
| Source date (published) | Unknown — not stated |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | High |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
fish's own command-line options include `-i`/`--interactive`, documented (current wording) as forcing interactive mode regardless of how fish was actually started — the direct fish analogue of bash's own `-i` flag, confirming fish can be spawned the same way (`fish -i`) that the existing bash/zsh integration-test fixtures already spawn `bash -i`/`zsh -i`.
|
||||
|
||||
## Key findings
|
||||
|
||||
- `-i`/`--interactive` sits alongside `-l`/`--login`, `-n`/`--no-execute`, and `-P`/`--private` in fish's own options list — a first-class, stable flag, not a hidden or undocumented one.
|
||||
- Current wording (Arch, Debian trixie, openSUSE Tumbleweed mirrors) is terse: "the shell is interactive" / forces interactive mode. Older mirrors (Ubuntu 20.04 focal, an older linux.die.net copy) use slightly different directive-style wording ("specify that fish is to run in interactive mode") describing the same behavior — a wording change across fish/doc versions, not a behavior change.
|
||||
- This directly justifies using `fish -i` to spawn real fish processes in the `FishInstallAndAutoWrapTest`/`FishAntiRecursionTest`/`FishTmuxActiveSkipTest` integration tests in `tests/bashrc.py`, exactly mirroring how the existing bash/zsh tests spawn `bash -i`/`zsh -i`.
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- Confirmed across multiple independent manpage mirrors (Arch, Debian, openSUSE, plus older Ubuntu/linux.die.net copies) with consistent meaning despite wording differences — high confidence this flag behaves as expected on any fish a real test container would have installed.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- None identified beyond the wording-only discrepancy already noted; doesn't change the behavior being relied on.
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
Directly justified the test design in `tests/bashrc.py`'s `_ShellPlexerHookTestBase._spawn_shell(["-i"], ...)` calls for the fish test classes — proof that `fish -i` is a real, stable, documented way to force a real interactive fish process for the end-to-end auto-wrap/anti-recursion/tmux-skip tests, run for real against the fish binary installed in `tests/docker/Dockerfile`.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish manpage index, Arch mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | FISH(1) | fish-shell | FISH(1) | |
|
||||
| Source URL | https://man.archlinux.org/man/fish |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An index-style listing page on the same Arch manpage mirror as the Tier 1 fish.1 page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# Nix home-manager programs.fish.functions option page
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | mynixos.com |
|
||||
| Source URL | https://mynixos.com/home-manager/option/programs.fish.functions |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A Nix home-manager option reference page for declaring fish functions (which is how fish_command_not_found would be set via Nix); tangential, not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# Neowin article on fish 4.2 release
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Fish 4.2 released with several bug fixes and improvements |
|
||||
| Source URL | https://www.neowin.net/amp/fish-42-released-with-several-bug-fixes-and-improvements/ |
|
||||
| Source type | blog post |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A news article covering the fish 4.2 release, surfaced while trying to date isatty's introduction; not independently read, and fish 4.2 postdates isatty's documented presence in 3.2 regardless.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# openmamba fish 3.4.0-1mamba source page
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | A user friendly command line shell for UNIX-like operating systems such as Linux https://fishshell.com |
|
||||
| Source URL | https://src.openmamba.org/rpms/fish/src/tag/3.4.0-1mamba |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An openmamba distro packaging source-tag page for fish 3.4.0, surfaced while trying to date isatty's introduction; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# openmamba fish 3.4.1-1mamba source page
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | A user friendly command line shell for UNIX-like operating systems such as Linux https://fishshell.com |
|
||||
| Source URL | https://src.openmamba.org/rpms/fish/src/tag/3.4.1-1mamba |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another openmamba distro packaging source-tag page, for fish 3.4.1; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# openSUSE Leap 15.6 cnf(1) manpage
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Scroll to navigation |
|
||||
| Source URL | https://manpages.opensuse.org/Leap-15.6/scout-command-not-found/cnf.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
The manpage for openSUSE's own command-not-found helper (cnf), surfaced by the query as a related but distinct mechanism; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish(1) manpage, openSUSE Leap 15.6 mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | table of contents |
|
||||
| Source URL | https://manpages.opensuse.org/Leap-15.6/fish/fish.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An openSUSE Leap 15.6 manpage-archive mirror of the fish(1) reference; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish(1) manpage, openSUSE Leap 16.0 mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | table of contents |
|
||||
| Source URL | https://manpages.opensuse.org/Leap-16.0/fish/fish.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An openSUSE Leap 16.0 manpage-archive mirror of the fish(1) reference; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish-doc(1) manpage, openSUSE Leap 16.0 mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | table of contents |
|
||||
| Source URL | https://manpages.opensuse.org/Leap-16.0/fish/fish-doc.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another openSUSE manpage-archive mirror (Leap 16.0) of the same fish-doc(1) reference; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish(1) manpage, openSUSE Tumbleweed mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | table of contents |
|
||||
| Source URL | https://manpages.opensuse.org/Tumbleweed/fish/fish.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An openSUSE manpage-archive mirror of the fish(1) reference, matching the current wording confirmed on the Arch mirror; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish-doc(1) manpage, openSUSE Tumbleweed mirror
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | table of contents |
|
||||
| Source URL | https://manpages.opensuse.org/Tumbleweed/fish/fish-doc.1.en.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An openSUSE manpage-archive mirror of the fish-doc(1) reference; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# Oracle zshbuiltins manual mirror (E62101_01)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Go to main content |
|
||||
| Source URL | https://docs.oracle.com/cd/E62101_01/html/E62874/zshbuiltins-1.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
Another duplicate Oracle Solaris documentation mirror of the same zshbuiltins manual page; not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,47 @@
|
||||
# zshbuiltins(1): autoload -X (Oracle Solaris docs mirror)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | zshbuiltins(1) |
|
||||
| Source URL | https://docs.oracle.com/cd/E88353_01/html/E37839/zshbuiltins-1.html |
|
||||
| Source publisher / author | Oracle (Solaris documentation, mirroring the upstream zsh manual) |
|
||||
| Source type | vendor docs |
|
||||
| Source date (published) | Unknown — not stated |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | High |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
The formal zsh builtins manual definition of `autoload -X`: marks the *calling function itself* for autoloading, then immediately loads and executes it with the current positional parameters, failing with an error (and leaving the function undefined but marked for autoload) if no definition is found on `$fpath`.
|
||||
|
||||
## Key findings
|
||||
|
||||
- `autoload -X` is specifically for the case where a function calls itself recursively to trigger its own on-demand loading — exactly the trick the 2015 `command_not_found_handler` example (Tier 1, zsh-org-mla-2015-msg00931) uses.
|
||||
- This is a general zsh function-loading mechanism, not something specific to `command_not_found_handler` — it happens to be a convenient tool for *implementing* a dynamic handler, not a required part of defining one.
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- The authoritative formal definition, which let this research confirm precisely what the 2015 mailing-list example's `autoload +X` call was actually doing mechanically, rather than taking the example purely on faith.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- Mirrored vendor documentation (Oracle's Solaris docs), not the canonical zsh.org manual itself; the content matches the well-known standard zsh behavior, so this is treated as a faithful, non-divergent mirror.
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
Confirmed that `autoload -X` is orthogonal to tai's own needs: `ZSH_NOTFOUND_BLOCK` defines a plain, statically-written `command_not_found_handler` with no dynamic loading, so this mechanism is not used in tai.py at all — this dossier's main value was ruling it out as something tai's own handler needed to account for.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# Oracle zshbuiltins manual mirror (F16636_01)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Go to main content |
|
||||
| Source URL | https://docs.oracle.com/cd/F16636_01/html/E71066/zshbuiltins-1.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A duplicate Oracle Solaris documentation mirror of the zshbuiltins manual page (autoload -X), same content as the E88353_01 mirror read in depth (Tier 1); not separately read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# notfoundle Go package (pkg.go.dev)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | pkg.go.dev |
|
||||
| Source URL | https://pkg.go.dev/github.com/brackendawson/notfoundle |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A tangential hit from the fish_command_not_found query -- a Go library with a similar name, unrelated to fish's own mechanism; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# fish_command_not_found manpage (third-party tarball mirror)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | fish command not found.1 |
|
||||
| Source URL | https://rocketleaguechatp.duckdns.org/tarball_dev-kde/usr/share/fish/man/man1/fish_command_not_found.1 |
|
||||
| Source type | other |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An unofficial third-party mirror of the fish manpage tarball turned up by the search; not independently read, and not treated as authoritative given the official fishshell.com docs cover the same content.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty manpage (third-party tarball mirror)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | rocketleaguechatp.duckdns.org |
|
||||
| Source URL | https://rocketleaguechatp.duckdns.org/tarball_dev/usr/share/fish/man/man1/isatty.1 |
|
||||
| Source type | other |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An unofficial third-party mirror of the fish isatty manpage tarball; not independently read, official fishshell.com docs preferred.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish(1) manpage, Ubuntu focal mirror (older wording)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Ubuntu Manpages |
|
||||
| Source URL | https://manpages.ubuntu.com/manpages/focal/man1/fish.1.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An older Ubuntu (20.04 focal) mirror of the fish(1) manpage, using the older directive-style wording for -i per the search tool's own comparison; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish-doc(1) manpage, Ubuntu mirror (resolute)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Ubuntu Manpages |
|
||||
| Source URL | https://manpages.ubuntu.com/manpages/resolute/man1/fish-doc.1.html |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
An Ubuntu manpage-archive mirror of the fish-doc(1) reference; not independently read, official fishshell.com docs preferred.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# fish_command_not_found docs mirror (w3cub, fish 4.5)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | fish command not found |
|
||||
| Source URL | https://docs.w3cub.com/fish~4.5/cmds/fish_command_not_found |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A third-party doc-mirror site's copy of the fish 4.5 fish_command_not_found page; not independently read, official fishshell.com docs preferred.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# isatty builtin docs mirror (w3cub, fish 4.5)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | isatty |
|
||||
| Source URL | https://docs.w3cub.com/fish~4.5/cmds/isatty |
|
||||
| Source type | vendor docs |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A third-party doc-mirror site's copy of the fish 4.5 isatty page; not independently read, official fishshell.com docs preferred.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
# oh-my-zsh command-not-found plugin refactor commit
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | refactor(command-not-found): clean up and reorganize logic |
|
||||
| Source URL | https://code.webartifex.biz/alexander/oh-my-zsh/commit/b54a6dab9cc9db9196aae5d8bc53ac3956855ecf |
|
||||
| Source type | repository |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A commit refactoring oh-my-zsh's command-not-found plugin (which calls Debian's command-not-found tool from inside command_not_found_handler, falling back to a printf + exit 127); described briefly by the search tool's summary, not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# Arch Wiki: Fish
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | wiki.archlinux.org |
|
||||
| Source URL | https://wiki.archlinux.org/title/Fish |
|
||||
| Source type | forum thread |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
The Arch Linux community wiki's fish page (also reachable via the older /index.php/Fish URL form), surfaced while researching config.fish sourcing behavior; not independently read, official fishshell.com docs preferred as the authoritative source.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# zenn.dev article on fish command introspection
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | zenn fish typeof commands |
|
||||
| Source URL | https://zenn.dev/estra/articles/zenn-fish-typeof-commands |
|
||||
| Source type | blog post |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A Japanese-language blog post surfaced by the fish_command_not_found query, tangentially related to fish command introspection; not independently read.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
# zsh-users mailing list: minimal command_not_found_handler example (Peter Stephenson, 2009)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | Zsh Mailing List Archive (zsh-users, 2009, msg00989) |
|
||||
| Source URL | https://zsh.org/mla/users/2009/msg00989.html |
|
||||
| Source publisher / author | Peter Stephenson, via the zsh-users mailing list (zsh.org) |
|
||||
| Source type | forum thread |
|
||||
| Source date (published) | 2009 (exact date not stated in the search result) |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | Medium |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
A much simpler, minimal `command_not_found_handler` example from a second zsh core contributor: checks whether the missing command equals a specific name (`foo`), prints a message and returns 0 if so, and otherwise returns 127 — the return code that reproduces zsh's normal "command not found" message and exit status for every other missing command.
|
||||
|
||||
## Key findings
|
||||
|
||||
- Returning 127 from the handler for anything it doesn't want to specially handle is the documented way to fall through to zsh's normal "command not found" behavior and exit status, rather than silently swallowing the error.
|
||||
- This example is structurally the simplest possible `command_not_found_handler`: no autoload, no dynamic loading, just a plain conditional and a return code — directly comparable in shape to what tai.py actually needed.
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- A minimal, directly comparable example (vs. the more advanced 2015 autoload-based one) that maps cleanly onto tai's own simple "forward everything to the tai binary" use case.
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- tai's own handler doesn't need the 127-fallthrough behavior this example demonstrates, since it unconditionally forwards every missing command to the tai binary rather than special-casing one and falling through for the rest — noted here as a deliberate difference, not an oversight.
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
Reinforces (independently of the 2015 example) that `command_not_found_handler` is just a plain zsh function, confirming there's no hidden registration step `ZSH_NOTFOUND_BLOCK` would need to account for beyond the function definition itself.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# zsh-users mailing list, 2015 thread reply
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Citation Card |
|
||||
| Tier | 2 |
|
||||
| Source title | Zsh Mailing List Archive |
|
||||
| Source URL | https://zsh.org/mla/users/2015/msg00929.html |
|
||||
| Source type | forum thread |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | Search aggregator result listing (not independently opened or quoted) |
|
||||
| Confidence | Not independently verified |
|
||||
| Status | Active |
|
||||
|
||||
## Why it's here
|
||||
|
||||
A reply in the same 2015 zsh-users thread as the Bart Schaefer example (Tier 1); surfaced by the query but not independently read in depth.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Logged as consulted-but-not-analyzed. |
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
# zsh-users mailing list: command_not_found_handler autoload example (Bart Schaefer, 2015)
|
||||
|
||||
## Metadata
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Institute | Molodetz Institute — Research & Retrieval Division |
|
||||
| Subject | shell-multiplexer-auto-attach |
|
||||
| Document type | Source Dossier |
|
||||
| Tier | 1 |
|
||||
| Source title | Zsh Mailing List Archive (zsh-users, 2015, msg00931) |
|
||||
| Source URL | https://www.zsh.org/mla/users/2015/msg00931.html |
|
||||
| Source publisher / author | Bart Schaefer, via the zsh-users mailing list (zsh.org) |
|
||||
| Source type | forum thread |
|
||||
| Source date (published) | 2015 (exact date not stated in the search result) |
|
||||
| Date researched | 2026-10-10 |
|
||||
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
|
||||
| Research method | web search synthesis |
|
||||
| Confidence | Medium |
|
||||
| Status | Active |
|
||||
|
||||
## Summary
|
||||
|
||||
A zsh core contributor's own worked example of `command_not_found_handler`: a zsh-recognized function name that fires when zsh's normal `$fpath`/`$path` lookup fails to find a command, with the example showing it dynamically registering (`FPATH=$PWD; autoload +X $missing_command`) and running a function on the fly before falling through to the usual error.
|
||||
|
||||
## Key findings
|
||||
|
||||
- `command_not_found_handler` is a plain zsh function definition, recognized by name — the zsh analogue of bash's `command_not_found_handle`, differing only in the `handler`/`handle` suffix. No autoload directive is required just to make zsh call it; autoload is only used inside the example body for its own dynamic-function-loading trick, which is unrelated to the hook mechanism itself being active.
|
||||
- The handler runs *after* the parent shell has already forked for the failed command, per Bart Schaefer's own note in the thread — so anything the handler loads or defines does not persist back into the parent shell's own function table.
|
||||
- The example demonstrates `autoload -X` being used *inside* a handler for a specific advanced use case (lazy-loading an unknown function from the current directory); this is a feature of the example's specific technique, not a requirement for using `command_not_found_handler` at all.
|
||||
|
||||
## Pros / strengths
|
||||
|
||||
- Directly from a zsh core contributor, carrying real authority on the mechanism's actual semantics (the fork-before-handler timing detail in particular is not the kind of thing casual documentation usually states explicitly).
|
||||
|
||||
## Cons / limitations / caveats
|
||||
|
||||
- The worked example itself is solving a different, more advanced problem (dynamic function loading) than tai's simple delegate-to-a-binary use case; only the top-level fact (the handler's name and that it's a plain function) was load-bearing for this project, not the autoload trick inside it.
|
||||
|
||||
## Relevance to tai
|
||||
|
||||
Confirms the exact function name (`command_not_found_handler`, not `_handle`) that `ZSH_NOTFOUND_BLOCK` in `tai.py` defines, and confirms no special autoload/registration step is needed beyond the function definition itself — consistent with the simple, bash-parallel block tai.py actually writes.
|
||||
|
||||
## Changelog
|
||||
|
||||
| Date | Change |
|
||||
|---|---|
|
||||
| 2026-10-10 | Initial dossier created. |
|
||||
Reference in New Issue
Block a user