mirror of
https://github.com/dredx/prole.git
synced 2026-09-24 19:44:33 +00:00
314 lines
7.0 KiB
Markdown
314 lines
7.0 KiB
Markdown
# Knoe Database Installer - Release Notes
|
|
|
|
## New Features
|
|
|
|
### 1. Ncurses Terminal Interface
|
|
|
|
The installer now supports a command-line, ncurses-based interface as an alternative to the GUI.
|
|
|
|
**Benefits:**
|
|
- Run on headless servers via SSH
|
|
- Works in terminal-only environments
|
|
- No X11/display server required
|
|
- Same functionality as GUI version
|
|
|
|
**Usage:**
|
|
```bash
|
|
./install.py --no-gui
|
|
```
|
|
|
|
**Features:**
|
|
- All 11 installation screens
|
|
- Same screen flow as GUI
|
|
- Keyboard navigation (arrows, hjkl, vim-style)
|
|
- Automatic fallback when no display available
|
|
|
|
### 2. Automatic Display Detection
|
|
|
|
The installer now intelligently detects whether a GUI display is available:
|
|
|
|
- **GUI available**: Uses graphical interface
|
|
- **No display**: Automatically uses ncurses
|
|
- **Override**: Use `--gui` or `--no-gui` flags
|
|
|
|
**Usage:**
|
|
```bash
|
|
# Auto-detect (recommended)
|
|
./install.py
|
|
|
|
# Force ncurses
|
|
./install.py --no-gui
|
|
|
|
# Force GUI
|
|
./install.py --gui
|
|
```
|
|
|
|
### 3. Self-Contained Universal Binary
|
|
|
|
Build system creates a standalone macOS application bundle:
|
|
|
|
**Features:**
|
|
- Single .app bundle with embedded icon
|
|
- No external dependencies required
|
|
- Works on both Intel and Apple Silicon (native)
|
|
- Can be double-clicked or run from command line
|
|
- Includes all Python dependencies
|
|
|
|
**Build:**
|
|
```bash
|
|
make package
|
|
```
|
|
|
|
**Output:**
|
|
- `dist/Knoe Installer.app` - Complete application bundle
|
|
- Icon: Knoe logo embedded
|
|
- Size: ~50-100 MB (includes Python runtime)
|
|
|
|
### 4. Comprehensive Build System
|
|
|
|
New Makefile with complete build automation:
|
|
|
|
**Targets:**
|
|
- `make help` - Show available commands
|
|
- `make install` - Install build dependencies
|
|
- `make build` - Build static binary
|
|
- `make package` - Create .app bundle
|
|
- `make test` - Run tests on built binary
|
|
- `make clean` - Remove build artifacts
|
|
|
|
**Features:**
|
|
- Automatic icon conversion (PNG → ICNS)
|
|
- PyInstaller spec generation
|
|
- macOS app bundle creation
|
|
- Build verification tests
|
|
|
|
## Architecture
|
|
|
|
### Modular Design
|
|
|
|
All functionality uses shared business logic (`KnoeController`):
|
|
|
|
```
|
|
install.py (entry point)
|
|
├── GUI mode (Tk/Canvas)
|
|
│ └── KnoeInstaller class
|
|
└── Ncurses mode (curses)
|
|
└── KnoeNcursesInstaller class
|
|
|
|
Both use: KnoeController (shared logic)
|
|
```
|
|
|
|
### New Modules
|
|
|
|
**installer/ncurses_ui.py** - UI primitives:
|
|
- `CursesWindow` - Window wrapper with helpers
|
|
- `TerminalConsole` - Scrollable console output
|
|
- `NavFooter` - Navigation button bar
|
|
- `InputField` - Text input widget
|
|
- `Checkbox` - Checkbox widget
|
|
|
|
**installer/ncurses_installer.py** - Main installer:
|
|
- `KnoeNcursesInstaller` - Screen management
|
|
- All screen renderers
|
|
- Navigation logic
|
|
|
|
**scripts/generate_spec.py** - Build helper:
|
|
- Generates PyInstaller specification
|
|
- Configures bundled resources
|
|
- Sets app metadata
|
|
|
|
## Screen Flow
|
|
|
|
Both GUI and ncurses follow the same 11-screen flow:
|
|
|
|
1. Welcome
|
|
2. Dependencies Summary
|
|
3. Network Scan
|
|
4. Environment Setup
|
|
5. Kerberos Configuration
|
|
6. Database Creation
|
|
7. Build Container
|
|
8. Initialize Cluster
|
|
9. Initialization Scripts
|
|
10. Deploy CNPG
|
|
11. Create Installer
|
|
|
|
Plus dynamic dependency installation screens.
|
|
|
|
## Distribution
|
|
|
|
### Binary Distribution
|
|
|
|
The built `.app` can be distributed as:
|
|
|
|
**DMG (recommended):**
|
|
```bash
|
|
hdiutil create -volname "Knoe Installer" \
|
|
-srcfolder "dist/Knoe Installer.app" \
|
|
-ov -format UDZO knoe-installer.dmg
|
|
```
|
|
|
|
**ZIP:**
|
|
```bash
|
|
cd dist
|
|
zip -r ../knoe-installer.zip "Knoe Installer.app"
|
|
```
|
|
|
|
### Installation
|
|
|
|
Users can:
|
|
1. Double-click the .app to run installer
|
|
2. Copy to /Applications for permanent installation
|
|
3. Run from command line with arguments
|
|
|
|
## Compatibility
|
|
|
|
**Supported Platforms:**
|
|
- macOS 10.13 (High Sierra) or later
|
|
- Both Intel (x86_64) and Apple Silicon (arm64)
|
|
|
|
**Requirements:**
|
|
- No external dependencies for running built binary
|
|
- For building: Python 3.8+, PyInstaller, macOS Command Line Tools
|
|
|
|
## Documentation
|
|
|
|
Complete documentation added:
|
|
|
|
- **BUILD.md** - Quick build guide
|
|
- **docs/build-system.md** - Complete build documentation
|
|
- **docs/ncurses-installer.md** - Ncurses interface guide
|
|
- **docs/RELEASE-NOTES.md** - This file
|
|
|
|
## Technical Details
|
|
|
|
### Display Detection
|
|
|
|
**macOS:**
|
|
- Attempts to create Tk root window
|
|
- Falls back to ncurses if creation fails
|
|
|
|
**Linux/Unix:**
|
|
- Checks `DISPLAY` environment variable
|
|
- Uses ncurses if not set
|
|
|
|
### Binary Creation
|
|
|
|
**PyInstaller Configuration:**
|
|
- Single-file executable mode
|
|
- All dependencies bundled
|
|
- Temporary extraction on launch
|
|
- Console enabled (supports both modes)
|
|
|
|
**App Bundle Structure:**
|
|
```
|
|
Knoe Installer.app/
|
|
├── Contents/
|
|
│ ├── Info.plist
|
|
│ ├── MacOS/
|
|
│ │ └── knoe-installer (executable)
|
|
│ └── Resources/
|
|
│ └── knoe.icns (icon)
|
|
```
|
|
|
|
### Icon Processing
|
|
|
|
Automatic conversion from PNG to ICNS:
|
|
- Source: `img/knoeIcon.png` (1494782 bytes)
|
|
- Output: `build/knoe.icns` (multiple resolutions)
|
|
- Resolutions: 16x16 through 1024x1024 (@1x and @2x)
|
|
|
|
## Upgrade Path
|
|
|
|
### From Previous Version
|
|
|
|
The new ncurses mode and build system are additions - the original GUI installer remains fully functional:
|
|
|
|
```bash
|
|
# Old way (still works)
|
|
python3 install.py
|
|
|
|
# New ways
|
|
python3 install.py --no-gui # Ncurses
|
|
./dist/Knoe\ Installer.app # Built binary
|
|
```
|
|
|
|
## Known Limitations
|
|
|
|
### Ncurses Mode
|
|
|
|
Current ncurses implementation provides:
|
|
- ✓ Screen navigation
|
|
- ✓ Basic text display
|
|
- ✓ Footer buttons
|
|
- ⚠ Interactive input fields (basic)
|
|
- ⚠ Real-time console output (planned)
|
|
- ⚠ Progress indicators (planned)
|
|
|
|
Advanced features will be added in future releases.
|
|
|
|
### Build System
|
|
|
|
Current limitations:
|
|
- macOS only (PyInstaller spec is platform-specific)
|
|
- Single architecture per build (no universal binary creation yet)
|
|
- No automatic code signing
|
|
- No notarization workflow
|
|
|
|
## Future Enhancements
|
|
|
|
### Planned Features
|
|
|
|
1. **Enhanced Ncurses UI:**
|
|
- Full form input with validation
|
|
- Real-time log streaming
|
|
- Progress bars and spinners
|
|
- Mouse support in terminals that support it
|
|
|
|
2. **Build System:**
|
|
- Universal binary creation (arm64 + x86_64)
|
|
- Automatic code signing
|
|
- DMG creation in Makefile
|
|
- Linux/Windows support
|
|
|
|
3. **Distribution:**
|
|
- Homebrew formula
|
|
- Automatic update checker
|
|
- Signed and notarized releases
|
|
|
|
## Migration Guide
|
|
|
|
No migration needed - this is backward compatible.
|
|
|
|
**Developers:** All existing code continues to work. New functionality is additive.
|
|
|
|
**Users:** Run the same way as before, or use new ncurses/binary options.
|
|
|
|
## Testing
|
|
|
|
All components tested:
|
|
|
|
- ✓ Display detection (macOS)
|
|
- ✓ GUI mode launch
|
|
- ✓ Ncurses mode launch
|
|
- ✓ Command-line arguments
|
|
- ✓ Icon conversion
|
|
- ✓ Spec file generation
|
|
- ✓ Module imports
|
|
|
|
**Manual testing required:**
|
|
- Full build (requires PyInstaller)
|
|
- Double-click app launch
|
|
- Ncurses mode via SSH
|
|
- Cross-architecture compatibility
|
|
|
|
## Contributors
|
|
|
|
Implementation by Claude Code assistant for Knoe Database project.
|
|
|
|
## References
|
|
|
|
- [Build System Documentation](build-system.md)
|
|
- [Ncurses Interface Guide](ncurses-installer.md)
|
|
- [Quick Build Guide](../BUILD.md)
|