@@ -4,21 +4,19 @@ Parsec is a fast, terminal-based file inspector that provides immediate summarie
44
55## Features
66
7- - ** Split-screen interface** : File tree on the left, detailed summary on the right
8- - ** Directory navigation** : Browse through subdirectories like a file manager
9- - ** Directory preview** : Shows contents of selected directories in the summary pane
10- - ** Fuzzy search** : Quickly find files with real-time fuzzy matching (press ` / ` )
11- - ** Multi-language support** : Go, Python, JavaScript, TypeScript, Rust, Java, C/C++, and more
12- - ** Enhanced file parsing** :
13- - ** Markdown rendering** : Beautiful terminal markdown with syntax highlighting
14- - ** Configuration files** : JSON, YAML, INI, ENV, and more
15- - ** Text files** : Preview with line counts and content display
16- - ** Executable help** : Automatically shows help output for executables
17- - ** Intelligent parsing** : Extracts functions, imports, types, and structs
18- - ** Rich file icons** : Visual file type indicators for over 50 file types
19- - ** Responsive design** : Automatically adapts to terminal resize events
20- - ** Fast navigation** : Keyboard-driven interface with vim-style keybindings
21- - ** Async operations** : Non-blocking file summarization for smooth UX
7+ - Split-screen interface with file tree and detailed summary view
8+ - Directory navigation with live content preview
9+ - Real-time fuzzy search capabilities
10+ - Multi-language support: Go, Python, JavaScript, TypeScript, Rust, Java, C/C++
11+ - Enhanced file parsing:
12+ - Markdown rendering with syntax highlighting
13+ - Configuration file parsing (JSON, YAML, INI, ENV)
14+ - Text file preview with line counts
15+ - Executable help text extraction
16+ - Intelligent parsing of functions, imports, types, and structs
17+ - Responsive design with terminal resize handling
18+ - Keyboard-driven interface with vim-style bindings
19+ - Asynchronous operations for smooth performance
2220
2321## Installation
2422
@@ -37,13 +35,11 @@ go build .
3735# Scan specific directory
3836./parsec /path/to/project
3937
40- # Windows examples
38+ # Windows paths
4139./parsec " C:\Users\username\Projects"
42- ./parsec " C:\Program Files\MyApp"
4340
44- # Unix examples
41+ # Unix paths
4542./parsec /home/user/code
46- ./parsec ~ /Documents/projects
4743
4844# Show help
4945./parsec -h
@@ -62,159 +58,63 @@ go build .
6258| ` r ` | Refresh current directory |
6359| ` q ` or ` Ctrl+C ` | Quit |
6460
65- ### Fuzzy Search Mode
61+ ## Supported File Types
6662
67- | Key | Action |
68- | -----| --------|
69- | ` Type ` | Add characters to search query |
70- | ` Backspace ` | Remove last character |
71- | ` Enter ` | Confirm search and stay filtered |
72- | ` ESC ` | Cancel search and show all files |
73-
74- ## Fuzzy Search
75-
76- Parsec includes powerful fuzzy search capabilities:
77-
78- - ** Real-time filtering** : Files are filtered as you type, with instant results
79- - ** Fuzzy matching** : Find files even with typos or partial names (e.g., ` mago ` matches ` main.go ` )
80- - ** Smart scoring** : Files are ranked by relevance, with better matches appearing first
81- - ** Visual feedback** : Search query and cursor are displayed at the bottom
82- - ** Easy control** : Enter search mode with ` / ` , exit with ` ESC ` , or confirm with ` Enter `
83-
84- ### Example Usage
85- - Press ` / ` to start searching
86- - Type ` mai ` to find ` main.go ` , ` Makefile ` , etc.
87- - Type ` sum.go ` to find ` ui/summary.go `
88- - Use ` Backspace ` to refine your search
89- - Press ` Enter ` to keep the filtered results
90- - Press ` ESC ` to show all files again
91-
92- ## Directory Navigation
93-
94- Parsec supports intuitive directory navigation with live preview:
95-
96- - ** Current path display** : Shows your current location at the top
97- - ** Directory preview** : Hover over any directory to see its contents in the summary pane
98- - ** Enter directories** : Press ` Enter ` on a directory to navigate into it
99- - ** Go up** : Use the ` .. ` entry (marked with ⬆️) to go up one level
100- - ** Breadcrumb navigation** : Current directory path is displayed relative to starting point
101- - ** Smart filtering** : Only shows source files and relevant directories
102- - ** Content statistics** : See file/directory counts and listings before entering
103-
104- ## Architecture
105-
106- ### Core Components
107-
108- - ** File Walker** : Lists directory contents and identifies file types
109- - ** Summarizer Engine** : Parses files using language-specific regex patterns
110- - ** TUI Components** : Split-pane interface with responsive layout
111- - ** Async Worker** : Background file processing for smooth interaction
112-
113- ### Supported File Types
114-
115- | Category | Extensions | Features Detected |
116- | ----------| ------------| -------------------|
117- | ** Programming Languages** | | |
118- | Go | ` .go ` | Functions, types, structs, imports |
119- | Python | ` .py ` | Functions, classes, imports |
120- | JavaScript | ` .js ` | Functions, classes, imports |
121- | TypeScript | ` .ts ` | Functions, interfaces, types, imports |
122- | Rust | ` .rs ` | Functions, structs, enums, uses |
123- | Java | ` .java ` | Functions, classes, imports |
124- | C/C++ | ` .c ` , ` .cpp ` , ` .h ` , ` .hpp ` | Functions, structs, includes |
125- | ** Documentation** | | |
126- | Markdown | ` .md ` , ` .markdown ` | Headers, links, ** rendered content** |
127- | Text | ` .txt ` , ` .rst ` | Content preview, line count |
128- | ** Configuration** | | |
129- | JSON | ` .json ` | Configuration keys, structure |
130- | YAML | ` .yaml ` , ` .yml ` | Configuration keys, structure |
131- | INI/Config | ` .ini ` , ` .cfg ` , ` .conf ` | Sections, configuration keys |
132- | Environment | ` .env ` | Environment variables |
133- | ** Data Files** | | |
134- | XML | ` .xml ` | Content preview, structure |
135- | CSV | ` .csv ` | Content preview, data format |
136- | Log Files | ` .log ` | Content preview, line count |
137- | ** Executables** | ` .exe ` , ` .bin ` , etc. | ** Automatic help display** |
63+ | Category | Extensions | Features |
64+ | ----------| ------------| -----------|
65+ | Programming | ` .go ` ` .py ` ` .js ` ` .ts ` ` .rs ` ` .java ` ` .c ` ` .cpp ` | Functions, types, imports |
66+ | Documentation | ` .md ` ` .markdown ` ` .rst ` | Headers, links, rendered content |
67+ | Configuration | ` .json ` ` .yaml ` ` .ini ` ` .env ` | Keys, structure |
68+ | Data | ` .xml ` ` .csv ` ` .log ` | Content preview |
69+ | Executables | ` .exe ` ` .bin ` | Help text extraction |
13870
13971## Project Structure
14072
14173```
14274parsec/
143- ├── main.go # Application entrypoint and UI coordination
144- ├── ui/
145- │ ├── filelist.go # File navigation component
146- │ └── summary.go # Summary display component
147- ├── core/
148- │ └── summarize.go # File parsing and analysis logic
149- ├── utils/
150- │ └── filewalker.go # Filesystem traversal utilities
151- └── README.md
75+ ├── main.go # Application entrypoint
76+ ├── ui/ # Interface components
77+ ├── core/ # Analysis engine
78+ ├── utils/ # Utilities
79+ └── docs/ # Documentation
15280```
15381
154- ## Recent Improvements
155-
156- ### Responsive Layout (v1.1)
157- - Fixed terminal resize handling inconsistencies
158- - Improved component dimension calculations
159- - Added minimum size constraints for small terminals
160- - Enhanced scroll position management during resize events
161-
162- ### Stable Scrolling (v1.2)
163- - Fixed scrolling behavior to only move content within borders
164- - Eliminated border/frame shifting during scroll operations
165- - Implemented fixed-height content areas with padding
166- - Improved visual stability during navigation
167-
168- ### Directory Navigation (v1.3)
169- - Added support for browsing through subdirectories
170- - Implemented breadcrumb navigation with current path display
171- - Added parent directory navigation with ".." entries
172- - Enhanced file list to show only current directory contents
173- - Improved Enter key functionality for directory traversal
174-
175- ### Enhanced File Parsing (v1.4)
176- - ** Markdown rendering** : Beautiful terminal markdown using Glamour with syntax highlighting
177- - ** Configuration file support** : JSON, YAML, INI, ENV with key extraction
178- - ** Text file previews** : Content display with line counts for all text-based files
179- - ** Executable help** : Automatic help command detection and display for executables
180- - ** Rich file icons** : Over 50 file type icons including programming languages, configs, and data files
181- - ** Improved content display** : Better formatting for different file types with appropriate sections
182-
183- ### Fuzzy Search (v1.5)
184- - ** Real-time search** : Instant file filtering as you type with ` / ` key
185- - ** Fuzzy matching** : Smart algorithm finds files even with partial or mistyped names
186- - ** Search persistence** : Option to keep filtered results or return to full list
187- - ** Visual feedback** : Clear search interface with query display and cursor
188- - ** Enhanced navigation** : Quickly jump to any file in large directories
189-
190- ### Performance Optimizations
191- - Async file summarization prevents UI blocking
192- - Efficient regex-based parsing for multiple languages
193- - Smart directory filtering to skip non-source directories
194- - Optimized fuzzy search with intelligent ranking
195-
196- ### Code Quality Improvements (v1.6)
197- - ** Codebase cleanup** : Removed unused methods and duplicate code for better maintainability
198- - ** Consolidated parsers** : Simplified file type handling by consolidating similar parsers
199- - ** Extracted common logic** : Unified file selection and summarization logic
200- - ** Improved constants** : Centralized UI dimension constants to eliminate duplication
201-
202- ### Directory Preview (v1.7)
203- - ** Smart directory inspection** : When selecting a directory, shows its contents in the summary pane
204- - ** File and folder counts** : Displays statistics about directory contents (files vs directories)
205- - ** Rich file listings** : Shows up to 20 items with appropriate file type icons
206- - ** Empty directory handling** : Special message for empty directories with navigation hints
207- - ** Parent directory info** : Clear indication when selecting ".." with destination path
208- - ** Instant feedback** : Async loading prevents UI blocking for large directories
209-
21082## Contributing
21183
84+ Parsec welcomes contributions from the community. Please review our contribution guidelines before getting started:
85+
86+ - [ Code of Conduct] ( CODE_OF_CONDUCT.md )
87+ - [ Contributing Guidelines] ( CONTRIBUTING.md )
88+ - [ Security Policy] ( SECURITY.md )
89+
90+ ### Development Process
91+
212921 . Fork the repository
213932 . Create a feature branch
214943 . Make your changes
215- 4 . Test with various file types and terminal sizes
95+ 4 . Test thoroughly
216965 . Submit a pull request
21797
98+ ### Reporting Issues
99+
100+ When reporting bugs, please include:
101+ - Operating system details
102+ - Steps to reproduce
103+ - Expected vs actual behavior
104+ - Error messages if applicable
105+
106+ ## Security
107+
108+ For security concerns, please review our [ Security Policy] ( SECURITY.md ) before submitting a report.
109+
110+ ## Dependencies
111+
112+ Dependencies are managed through Go modules and automatically updated via Dependabot. Major version updates are handled manually to ensure stability.
113+
218114## License
219115
220- MIT License - see LICENSE file for details.
116+ MIT License - see [ LICENSE] ( LICENSE ) file for details.
117+
118+ ## Versioning
119+
120+ Parsec follows semantic versioning. The first stable release will be tagged as v1.0.0 once all core features are thoroughly tested.
0 commit comments