Added STATUS.md documenting: - Working features (HTTP, HTML parsing, rendering, browser engine) - Known limitations (UI components not yet implemented) - Next steps roadmap (scrolling, link navigation, bookmarks, etc.) - Test results showing successful browsing The core engine is fully functional - main work remaining is implementing the interactive UI components.
4.6 KiB
TUT Browser - Development Status
✅ Working Features (v0.1.0-alpha)
Core Functionality
-
✅ HTTP/HTTPS Client - Fully functional with cpp-httplib
- GET/POST/HEAD requests
- SSL/TLS support
- Cookie management
- Redirect following
- Timeout handling
-
✅ HTML Parsing - Working with gumbo-parser
- Full HTML5 parsing
- DOM tree construction
- Title extraction
- Link extraction with numbering
-
✅ Content Rendering - Basic text-based rendering
- Headings (H1-H6) with bold formatting
- Lists (UL/OL) with bullet points
- Links with [N] numbering and blue underline
- Paragraph and block element handling
- Skip script/style/head tags
-
✅ Browser Engine - Integrated pipeline
- Fetches URLs via HTTP client
- Parses HTML with renderer
- Resolves relative URLs
- Error handling for failed requests
-
✅ UI Framework - FTXUI-based interface
- btop-style four-panel layout
- Address bar input
- Content display area
- Status panels
- Keyboard shortcuts (q to quit, Enter to navigate)
Build & Deployment
- ✅ Binary size: 827KB (well under 1MB target!)
- ✅ Clean compilation with no warnings
- ✅ All tests build successfully
- ✅ CI/CD pipeline configured
- ✅ macOS and Linux support
⚠️ Known Limitations
UI Components (Not Yet Implemented)
-
⚠️ Link Navigation - Links are extracted and numbered, but not yet clickable in UI
setLinks()andonLinkClick()methods declared but not implemented- Tab/Shift+Tab navigation not working yet
- Number key shortcuts not working yet
-
⚠️ Bookmark System - Declared but not implemented
setBookmarks()method exists but no UI implementation- No persistence layer
-
⚠️ History - Declared but not implemented
setHistory()method exists but no UI implementation- No back/forward navigation in UI (though engine supports it)
-
⚠️ Scrolling - Content view not scrollable yet
- j/k, g/G shortcuts not implemented
- Page up/down not working
-
⚠️ Search - Not implemented
- / search command not working
- n/N navigation not working
Feature Gaps
- ⚠️ No form support (input fields, buttons, etc.)
- ⚠️ No image rendering (even ASCII art)
- ⚠️ No CSS parsing (only basic tag-based formatting)
- ⚠️ No JavaScript support (by design)
🎯 Next Steps Priority
Phase 1: Core Interactive Features (High Priority)
-
Implement Content Scrolling (src/ui/content_view.cpp)
- Add scroll position tracking
- Implement j/k, g/G, Space, b keyboard shortcuts
- Add scrollbar indicator
-
Implement Link Navigation (src/ui/main_window.cpp)
- Implement
setLinks()to store link list - Implement
onLinkClick()callback - Add Tab/Shift+Tab navigation
- Add number key shortcuts (1-9 to jump to links)
- Highlight selected link
- Implement
-
Wire Up Back/Forward (src/main.cpp)
- Connect back/forward buttons to engine
- Add Backspace shortcut
- Update navigation buttons state
Phase 2: Enhanced UX (Medium Priority)
-
Implement Search (src/ui/content_view.cpp)
- Add / to start search
- Highlight matches
- n/N to navigate results
-
Add Bookmark System (new files)
- Implement bookmark storage (JSON file)
- Create bookmark panel UI
- Add Ctrl+D to bookmark
- F2 to view bookmarks
-
Add History (new files)
- Implement history storage (JSON file)
- Create history panel UI
- F3 to view history
- Auto-record visited pages
Phase 3: Advanced Features (Low Priority)
-
Improve Rendering
- Better word wrapping
- Table rendering
- Code block formatting
- Better list indentation
-
Add Form Support
- Input field rendering
- Button rendering
- Form submission
-
Add Image Support
- ASCII art rendering
- Image-to-text conversion
📊 Test Results
./test_browse.sh
Test 1: TLDP HOWTO index - ✅ PASSED
Test 2: example.com - ✅ PASSED
Successfully browses:
- https://tldp.org/HOWTO/HOWTO-INDEX/howtos.html
- https://example.com
- Any static HTML page
🚀 Quick Start
# Build
cmake -B build_ftxui -DCMAKE_PREFIX_PATH=/opt/homebrew
cmake --build build_ftxui -j$(nproc)
# Test
./test_browse.sh
# Try it
./build_ftxui/tut https://example.com
📝 Notes
The core browsing engine is fully functional - we can fetch, parse, and render web pages. The main work remaining is implementing the interactive UI components that are already architected but not yet coded.
The codebase is clean, well-structured, and ready for the next phase of development!