fix(powershell): Get-ChildItem's table, PowerShell's parameters and messages for file cmdlets - #413
Conversation
…s fail with PowerShell's messages - Get-ChildItem (and ls, dir, gci under PowerShell): a table per folder under "Directory: C:\...", folders first; dot files visible, only .git hidden; -Force, -Hidden, -Name, -Recurse, -Depth, -Directory, -File, -Filter and wildcards; shortened parameters resolved as PowerShell does (ls -a / ls -la refused with its messages). Into a pipe, one name per line. - New-Item, mkdir, Move-Item, Copy-Item, Remove-Item, cd: PowerShell 7.6 messages instead of GNU ones; New-Item refuses an existing file; Move-Item refuses to overwrite a file without -Force and renames to a missing dir/. - Lessons ls and ls -la get PowerShell variants; bash shown on Windows 34 -> 32. All expected outputs checked on PowerShell 7.6 (en-US), 1 October 2026. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed listings keep the table - psParams.ts: one parameter binder for Get-ChildItem, Remove-Item, Copy-Item and Move-Item, as PowerShell 7.6 resolves names (prefixes, ambiguity, the real .NET type in "Missing an argument"), -Name:value, positions, comma lists and `--`. - Under the windows env, rm/cp/mv are Remove-Item/Copy-Item/Move-Item: `rm -rf` is refused, `rm a b` is refused, `rm a, b` removes both. Remove-Item deletes an empty folder without -Recurse; Copy-Item without -Recurse copies the folder, empty. - New-Item -Force replaces a file with an empty one; New-Item -ItemType Directory -Force and mkdir -Force accept an existing folder. - Get-ChildItem writes its table into a file redirection, Tee-Object and Out-File; Measure-Object prints PowerShell's full list. - Reference page: Get-ChildItem's columns, -Name, the ls -la and rm -rf traps. - CHANGELOG and STORY entries for the Windows fidelity work. Every expected value comes from a real PowerShell 7.6 capture (en-US). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Sorry @thierryvm, you've used your own review budget of 250,000 diff characters for the last 7 days.
You can request another review in 2 days and 15 hours by commenting @sourcery-ai review. Upgrade to get a review now.
Guide du reviewerCette PR remplace la simulation des commandes de fichiers de type Unix sous Windows par une implémentation partagée orientée PowerShell 7.6 : Diagramme de séquence pour la sortie
|
| Modification | Détails | Fichiers |
|---|---|---|
Implémentation d’un chemin de listage et de formatage de sortie Get-ChildItem compatible avec PowerShell pour Windows. |
|
src/app/data/terminalEngine.tssrc/app/data/commandExamples.tssrc/app/data/curriculum.tssrc/test/shellLayer.test.tssrc/test/terminalEngine.test.ts |
| Centralisation des métadonnées de paramètres PowerShell et de la liaison des arguments pour les cmdlets liées aux fichiers. |
|
src/app/data/commands/psParams.tssrc/app/data/commands/windows.tssrc/app/data/terminalEngine.ts |
| Alignement des alias de fichiers Windows et du comportement et des messages des cmdlets de fichiers sur la sémantique de PowerShell. |
|
src/app/data/commands/windows.tssrc/app/data/terminalEngine.tssrc/test/terminalEngine.test.tssrc/test/shellLayer.test.ts |
| Mise à jour du contenu pédagogique et de la documentation du projet afin d’expliquer l’expérience Windows PowerShell. |
|
src/app/data/curriculum.tssrc/app/data/commandExamples.tssrc/app/data/commandCatalogue.tsCHANGELOG.mdSTORY.mdsrc/test/lessonTheoryGaps.ts |
Conseils et commandes
Interagir avec Sourcery
- Déclencher une nouvelle review : commentez
@sourcery-ai reviewsur la pull request. - Poursuivre les discussions : répondez directement aux commentaires de review de Sourcery.
- Générer une issue GitHub à partir d’un commentaire de review : demandez à Sourcery de créer une issue à partir d’un commentaire de review en y répondant. Vous pouvez également répondre à un commentaire de review avec
@sourcery-ai issuepour créer une issue à partir de celui-ci. - Générer un titre de pull request : écrivez
@sourcery-ain’importe où dans le titre de la pull request pour générer un titre à tout moment. Vous pouvez également commenter@sourcery-ai titlesur la pull request pour générer ou régénérer le titre à tout moment. - Générer un résumé de pull request : écrivez
@sourcery-ai summaryn’importe où dans le corps de la pull request pour générer un résumé de PR à tout moment, exactement à l’endroit souhaité. Vous pouvez également commenter@sourcery-ai summarysur la pull request pour générer ou régénérer le résumé à tout moment. - Générer le guide du reviewer : commentez
@sourcery-ai guidesur la pull request pour générer ou régénérer le guide du reviewer à tout moment. - Résoudre tous les commentaires de Sourcery : commentez
@sourcery-ai resolvesur la pull request pour résoudre tous les commentaires de Sourcery. Cette option est utile si vous avez déjà traité tous les commentaires et ne souhaitez plus les voir. - Ignorer toutes les reviews de Sourcery : commentez
@sourcery-ai dismisssur la pull request pour ignorer toutes les reviews existantes de Sourcery. Cette option est particulièrement utile si vous souhaitez repartir de zéro avec une nouvelle review. N’oubliez pas de commenter@sourcery-ai reviewpour déclencher une nouvelle review !
Personnaliser votre expérience
Accédez à votre tableau de bord pour :
- Activer ou désactiver des fonctionnalités de review telles que le résumé de pull request généré par Sourcery, le guide du reviewer et d’autres fonctionnalités.
- Modifier la langue de review.
- Ajouter, supprimer ou modifier des instructions de review personnalisées.
- Ajuster d’autres paramètres de review.
Obtenir de l’aide
- Contactez notre équipe d’assistance pour toute question ou remarque.
- Consultez notre documentation pour obtenir des guides et des informations détaillés.
- Restez en contact avec l’équipe Sourcery en nous suivant sur X/Twitter, LinkedIn ou GitHub.
Original review guide in English
Reviewer's Guide
This PR replaces the Windows Unix-like file-command simulation with a shared PowerShell 7.6-oriented implementation: Get-ChildItem now formats listings and pipelines like PowerShell, file cmdlets share realistic parameter binding and aliases, Windows errors and filesystem edge cases are aligned with captured PowerShell behavior, and lessons/tests/documentation are updated accordingly.
Sequence diagram for PowerShell-style Get-ChildItem output
sequenceDiagram
actor User
participant Engine as TerminalEngine
participant Binder as parsePsArgs
participant ChildItems as cmdChildItem
participant FS as VirtualFilesystem
participant Sink as OutputSink
User->>Engine: ls -Force
Engine->>ChildItems: childItems(state, args)
ChildItems->>Binder: parsePsArgs(GET_CHILD_ITEM, args)
Binder-->>ChildItems: switches and values
ChildItems->>FS: enumerate matching children
FS-->>ChildItems: folders and files
ChildItems->>ChildItems: format table rows
ChildItems-->>Engine: Directory, Mode, LastWriteTime, Length, Name
Engine->>Sink: write formatted table
Sequence diagram for shared PowerShell parameter binding
sequenceDiagram
actor User
participant Engine as TerminalEngine
participant Binder as parsePsArgs
participant Resolver as resolvePsParam
participant Cmdlet as FileCmdlet
User->>Engine: rm -r a.txt
Engine->>Binder: parsePsArgs(REMOVE_ITEM, args)
Binder->>Resolver: resolvePsParam(REMOVE_ITEM, r)
Resolver-->>Binder: Recurse
Binder->>Binder: bind positional Path
Binder-->>Engine: PsArgs
Engine->>Cmdlet: Remove-Item with Recurse and Path
Cmdlet-->>Engine: command result
User->>Engine: rm -rf a.txt
Engine->>Binder: parsePsArgs(REMOVE_ITEM, args)
Binder->>Resolver: resolvePsParam(REMOVE_ITEM, rf)
Resolver-->>Binder: parameter-not-found error
Binder-->>Engine: PowerShell error
Flow diagram for PowerShell file-cmdlet aliases
flowchart TD
Command["Windows file command"] --> Alias{"Alias resolution"}
Alias -->|ls / dir / gci| GCI["Get-ChildItem"]
Alias -->|rm / ri / del| Remove["Remove-Item"]
Alias -->|cp / copy| Copy["Copy-Item"]
Alias -->|mv / move| Move["Move-Item"]
GCI --> Binding["Shared PowerShell parameter binding"]
Remove --> Binding
Copy --> Binding
Move --> Binding
Binding --> Execution["Filesystem operation and PowerShell errors"]
File-Level Changes
| Change | Details | Files |
|---|---|---|
| Implemented a PowerShell-compatible Get-ChildItem listing and output formatting path for Windows. |
|
src/app/data/terminalEngine.tssrc/app/data/commandExamples.tssrc/app/data/curriculum.tssrc/test/shellLayer.test.tssrc/test/terminalEngine.test.ts |
| Centralized PowerShell parameter metadata and argument binding for file-related cmdlets. |
|
src/app/data/commands/psParams.tssrc/app/data/commands/windows.tssrc/app/data/terminalEngine.ts |
| Aligned Windows file aliases and file-cmdlet behavior with PowerShell semantics and messages. |
|
src/app/data/commands/windows.tssrc/app/data/terminalEngine.tssrc/test/terminalEngine.test.tssrc/test/shellLayer.test.ts |
| Updated educational content and project documentation to explain the Windows PowerShell experience. |
|
src/app/data/curriculum.tssrc/app/data/commandExamples.tssrc/app/data/commandCatalogue.tsCHANGELOG.mdSTORY.mdsrc/test/lessonTheoryGaps.ts |
Tips and commands
Interacting with Sourcery
- Trigger a new review: Comment
@sourcery-ai reviewon the pull request. - Continue discussions: Reply directly to Sourcery's review comments.
- Generate a GitHub issue from a review comment: Ask Sourcery to create an
issue from a review comment by replying to it. You can also reply to a
review comment with@sourcery-ai issueto create an issue from it. - Generate a pull request title: Write
@sourcery-aianywhere in the pull
request title to generate a title at any time. You can also comment
@sourcery-ai titleon the pull request to (re-)generate the title at any time. - Generate a pull request summary: Write
@sourcery-ai summaryanywhere in
the pull request body to generate a PR summary at any time exactly where you
want it. You can also comment@sourcery-ai summaryon the pull request to
(re-)generate the summary at any time. - Generate reviewer's guide: Comment
@sourcery-ai guideon the pull
request to (re-)generate the reviewer's guide at any time. - Resolve all Sourcery comments: Comment
@sourcery-ai resolveon the
pull request to resolve all Sourcery comments. Useful if you've already
addressed all the comments and don't want to see them anymore. - Dismiss all Sourcery reviews: Comment
@sourcery-ai dismisson the pull
request to dismiss all existing Sourcery reviews. Especially useful if you
want to start fresh with a new review - don't forget to comment
@sourcery-ai reviewto trigger a new review!
Customizing Your Experience
Access your dashboard to:
- Enable or disable review features such as the Sourcery-generated pull request
summary, the reviewer's guide, and others. - Change the review language.
- Add, remove or edit custom review instructions.
- Adjust other review settings.
Getting Help
- Contact our support team for questions or feedback.
- Visit our documentation for detailed guides and information.
- Keep in touch with the Sourcery team by following us on X/Twitter, LinkedIn or GitHub.
#414) Voie C — docs-only, scope vérifié, 0 risque runtime, smoke test preview PASS
Summary
Windows learners saw a Linux terminal wearing a PowerShell prompt:
lsprinted bare names,ls -laworked, dot files were "hidden", andrm -rfdeleted folders. This PR makes the Windows environment answer like PowerShell 7.6. Every expected value comes from a realpwshcapture (en-US, 1 October 2026).Get-ChildItem (
ls,dir,gci)Directory: C:\…, then Mode / LastWriteTime / Length / Name, folders first, case-insensitive order. Length is the UTF-8 byte count..gitis hidden (d--h-), and-Forceshows it.-Name,-Force,-Hidden,-Recurse,-Depth,-Directory,-File,-Filterand a wildcard in the path all work.> file,| Tee-Objectand| Out-File. Into any other cmdlet it emits one name per line, so| Measure-Objectcounts items.Measure-Objectprints PowerShell's full list.Parameter binding (
commands/psParams.ts, shared by Get-ChildItem, Remove-Item, Copy-Item and Move-Item)ls -a,rm -f,cp -p).-Name:valueworks, bare words bind to their positions (an extra one is refused), comma lists work, and--ends parameters.File cmdlets
rm,cpandmvareRemove-Item,Copy-ItemandMove-Item.rm -rfandrm a bare refused;rm -randrm a, bwork.-Forceit empties the file, and with-ItemType Directory -Force(ormkdir -Force) an existing folder is accepted.-Force, and renames todirwhendir/is missing.-Recurse. For a non-empty one it shows a note instead of the interactive confirmation it cannot simulate.-Recursecopies the folder, empty.Content
lsandls -lalessons get a PowerShell version (contentByEnv). Ratchet: bash shown on Windows 34 → 32.-Name, and adds two pitfalls:ls -laandrm -rfin PowerShell.Verification
terminal-fidelity-auditor, 175 commands against real pwsh 7.6: the Get-ChildItem table and every lesson block MATCH, 0 THEORY-WRONG. This PR fixes F1 (parameter types), F3 (formatting consumers), F4 (Measure-Object), F5 (rm/cp/mv aliases), F10 (Copy-Item folder) and part of F12 (Remove-Item on an empty folder).feature-dev:code-reviewer, two passes: the first found no CRITICAL or IMPORTANT issue, and its three minor points (New-Item -Force,ls > file,-Path:x) are fixed. The second pass found one IMPORTANT issue, extra positionals silently ignored; it is fixed and checked against real pwsh.theory:gaps90 → 90, bash shown on Windows 32 → 32.Not in this PR (Windows debt, tracked)
ls DOCUMENTS).mkdir a b(F6).cdto a file (F13).| Select-Object/| Sort-Objectafter Get-ChildItem print names instead of the table (F3, other cmdlets).🤖 Generated with Claude Code
Résumé par Sourcery
Faire en sorte que le terminal Windows reproduise fidèlement les listes de répertoires PowerShell, la gestion des paramètres, les opérations sur les fichiers, le formatage de la sortie et la documentation destinée aux apprenants.
Nouvelles fonctionnalités :
Get-ChildItem, le filtrage, la récursivité et la liaison de paramètres compatible avec PowerShell.rm,cp,mv,New-Item, ainsi que pour la suppression et la copie de répertoires, y compris les alias, les arguments positionnels et les messages d’erreur courants.Corrections de bugs :
Tee-Object, deOut-Fileet deMeasure-Objectsur le formatage attendu.Améliorations :
Documentation :
Tests :
Get-ChildItem.Tâches de maintenance :
Original summary in English
Summary by Sourcery
Make the Windows terminal faithfully model PowerShell directory listings, parameter handling, file operations, output formatting, and learner-facing documentation.
New Features:
Bug Fixes:
Enhancements:
Documentation:
Tests:
Chores: