135 lines
4.8 KiB
Markdown
135 lines
4.8 KiB
Markdown
# Active Context: hosts
|
|
|
|
## Current Work Focus
|
|
|
|
**Project Initialization Phase**: Setting up the foundational structure for the hosts TUI application. The project is in its earliest stage with basic uv configuration and placeholder code.
|
|
|
|
## Recent Changes
|
|
|
|
### Memory Bank Initialization
|
|
- Created complete memory bank structure with all core files
|
|
- Documented project vision, technical context, and system architecture
|
|
- Established clear patterns and design decisions for implementation
|
|
|
|
### Current Project State
|
|
- Basic uv project with Python 3.13 requirement
|
|
- Minimal `main.py` with placeholder "Hello from hosts!" message
|
|
- ruff configured as the only dependency
|
|
- Project structure planned but not yet implemented
|
|
|
|
## Next Steps
|
|
|
|
### Immediate Priorities (Phase 1)
|
|
1. **Set up proper project structure**:
|
|
- Create `src/hosts/` package directory
|
|
- Move main.py to proper location
|
|
- Add `__init__.py` files
|
|
|
|
2. **Add core dependencies**:
|
|
- Add textual for TUI framework
|
|
- Add pytest for testing
|
|
- Configure project entry point in pyproject.toml
|
|
|
|
3. **Implement basic data models**:
|
|
- Create `src/hosts/core/models.py` with HostEntry and HostsFile classes
|
|
- Implement basic validation logic
|
|
- Add type hints and docstrings
|
|
|
|
4. **Create hosts file parser**:
|
|
- Implement `src/hosts/core/parser.py`
|
|
- Handle comments, active/inactive entries
|
|
- Parse existing `/etc/hosts` format
|
|
|
|
### Phase 2 Priorities
|
|
1. **Basic TUI implementation**:
|
|
- Create main application class
|
|
- Implement two-pane layout
|
|
- Add entry list view
|
|
|
|
2. **Read-only functionality**:
|
|
- Load and display hosts file
|
|
- Navigate between entries
|
|
- Show entry details
|
|
|
|
3. **Testing foundation**:
|
|
- Set up pytest configuration
|
|
- Create test fixtures for sample hosts files
|
|
- Implement parser tests
|
|
|
|
## Active Decisions and Considerations
|
|
|
|
### Architecture Decisions Made
|
|
- **Layered architecture**: TUI → Manager → Core → System layers
|
|
- **Command pattern**: For undo/redo functionality
|
|
- **Immutable state**: All operations return new state
|
|
- **Permission model**: Explicit edit mode with sudo management
|
|
|
|
### Design Patterns Chosen
|
|
- **Observer pattern**: For state change notifications
|
|
- **Factory pattern**: For parser creation
|
|
- **Command pattern**: For operations with undo capability
|
|
|
|
### Technical Constraints Acknowledged
|
|
- **Python 3.13+**: Using modern Python features
|
|
- **Unix-like systems**: Primary target (Linux, macOS)
|
|
- **Root access**: Required for `/etc/hosts` modifications
|
|
- **File integrity**: Must preserve existing structure
|
|
|
|
## Important Patterns and Preferences
|
|
|
|
### Code Organization
|
|
- **Separation of concerns**: Clear layer boundaries
|
|
- **Type safety**: Comprehensive type hints
|
|
- **Documentation**: Docstrings for all public APIs
|
|
- **Testing**: TDD approach with high coverage
|
|
|
|
### User Experience Priorities
|
|
- **Safety first**: Read-only by default, explicit edit mode
|
|
- **Keyboard-driven**: Efficient navigation without mouse
|
|
- **Visual clarity**: Clear active/inactive indicators
|
|
- **Error prevention**: Validation before any file writes
|
|
|
|
### Development Workflow
|
|
- **uv for everything**: Package management and execution
|
|
- **ruff for quality**: Linting and formatting
|
|
- **pytest for testing**: Comprehensive test coverage
|
|
- **Incremental development**: Build and test each component
|
|
|
|
## Learnings and Project Insights
|
|
|
|
### Key Insights from Planning
|
|
1. **Permission management is critical**: The sudo handling needs careful design
|
|
2. **File integrity is paramount**: Users trust their hosts file
|
|
3. **DNS integration adds complexity**: But provides significant value
|
|
4. **TUI responsiveness matters**: No blocking operations in UI thread
|
|
|
|
### Risk Areas Identified
|
|
- **Permission escalation**: Security implications of sudo usage
|
|
- **File corruption**: Atomic writes and validation essential
|
|
- **Cross-platform compatibility**: Different hosts file locations
|
|
- **Large file performance**: Memory usage with many entries
|
|
|
|
### Success Factors
|
|
- **Clear separation of read/write modes**: Reduces accidental changes
|
|
- **Comprehensive validation**: Prevents invalid configurations
|
|
- **Intuitive keyboard shortcuts**: Faster than manual editing
|
|
- **Visual feedback**: Users always know current state
|
|
|
|
## Current Development Environment
|
|
|
|
### Tools Ready
|
|
- **uv**: Package manager configured
|
|
- **ruff**: Code quality tool available
|
|
- **Python 3.13**: Runtime environment set
|
|
|
|
### Next Tool Additions Needed
|
|
- **textual**: TUI framework (primary dependency)
|
|
- **pytest**: Testing framework
|
|
- **textual.testing**: TUI testing utilities
|
|
|
|
### Project Structure Status
|
|
- **Current**: Flat structure with main.py
|
|
- **Target**: Proper package structure in src/hosts/
|
|
- **Migration needed**: Move and reorganize files
|
|
|
|
This active context represents the current state as we begin actual implementation of the hosts TUI application.
|