feat(reparse): symlink/junction target display (spec 007)#3
Merged
Conversation
…TCDir - Port spec 007 (Symlink & Junction Target Display) from TCDir - All 14 functional requirements, 4 user stories, edge cases preserved - Covers junctions, symlinks, AppExecLinks with → target display
- Collapse if-conditions into match arm guards in tui_widgets.rs - Rust 1.95.0 (2026-04-14) tightened collapsible_match lint
- Add rustup update stable requirement before starting work - Add pre-push clippy + test verification gates - Update constitution to v1.1.0 with new quality gate 0 - Lesson learned from Rust 1.95 clippy breakage in CI
- 32 tasks across 7 phases organized by user story - MVP: Phases 1-3 (setup, parsers, normal mode display) - Pure-function buffer parsing with synthetic byte array tests - 4 parallel execution groups identified
- Widen FR-005 to cover absolute symlink SubstituteName prefix stripping - Add spec 008 conflict note for long target paths edge case - Add FR-004 relative path test case to T014 - Clarify T017 signature builds full path from dir_path + file_info.file_name - Clarify T025 uses mock console ANSI verification - Merge T027 into T012 (deduplicate prefix stripping tests) - Add T033 (FR-012 no new switches) and T034 (FR-013 no hardlinks) to Phase 7
…ctions - Add Output Parity (NON-NEGOTIABLE) to constitution Principle III - Add Output Parity Tests section to copilot instructions - Parity tests are allowed exception to unit test isolation rules - Add T035-T037 parity test tasks to spec 007 Phase 7 - Bump constitution to v1.3.0
- Add pre-commit gates: tests pass, clippy clean, build succeeds - Add commit frequency: at least once per completed phase - Each commit must be compilable, tests-passing, clippy-clean
…s and tests - Add reparse_target field to FileInfo struct (T001) - Create reparse_resolver.rs with constants and buffer structures (T002, T006) - Register module in lib.rs (T003) - Implement strip_device_prefix, parse_junction_buffer, parse_symlink_buffer, parse_app_exec_link_buffer as pure functions (T005, T007-T009) - Implement resolve_reparse_target Win32 I/O wrapper (T017) - Add 22 unit tests with synthetic byte array builders (T010-T016) - 469 unit tests pass, clippy clean
- Call resolve_reparse_target in directory_lister add_match_to_list (T018) - Call resolve_reparse_target in multi_threaded_lister at both enum paths (T019) - Append → target display in normal.rs with Information/filename colors (T020) - Append → target display in tree.rs with same color scheme (T022) - Wide and bare modes unaffected — no changes needed (T021) - 469 unit tests pass, clippy clean
- Verify color implementation uses Information for arrow, text_attr for target (T024) - Verify strip_device_prefix called in junction/symlink parsers (T026) - Add 3 output parity tests: normal mode, tree mode, AppExecLink (T035-T037) - Mark all 37 tasks complete in tasks.md - 469 unit tests pass, clippy clean
- Bump minor version 5.3 → 5.4 in Version.toml - Add v5.4 changelog entry with symlink/junction target display feature - Add v5.4 row to README What's New table - Add symlink/junction target display row to feature comparison table
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2