Skip to content

feat(reparse): symlink/junction target display (spec 007)#3

Merged
relmer merged 12 commits into
masterfrom
007-symlink-junction-targets
Apr 21, 2026
Merged

feat(reparse): symlink/junction target display (spec 007)#3
relmer merged 12 commits into
masterfrom
007-symlink-junction-targets

Conversation

@relmer
Copy link
Copy Markdown
Owner

@relmer relmer commented Apr 21, 2026

Closes #2

relmer added 12 commits April 19, 2026 22:07
…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
@relmer relmer merged commit 91dfe4a into master Apr 21, 2026
4 checks passed
@relmer relmer deleted the 007-symlink-junction-targets branch April 21, 2026 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: display symlink, junction, and AppExecLink targets in directory listings

1 participant