====== FTN Nodelist Editor ====== A PyQt6 desktop application for Linux to create, view, edit, and maintain FidoNet-style (FTN) nodelists, including Fido, FSX, and RetroNet formats. This tool is intended to assist network coordinators in maintaining accurate and consistent nodelists, as well as bootstrapping new FTN networks. ---- ===== Project Goals ===== * Read existing FTN nodelist files * Display nodelist hierarchy in a tree view * Edit node information via structured editor fields * Validate common FTN constraints * Save modified nodelists back to disk * Generate new nodelists for new networks ---- ===== Supported Formats ===== * Fido-style nodelists * FSX extensions * RetroNet conventions * Comment preservation ---- ===== Application Layout ===== ==== Main Window ==== * Menu bar * File → New * File → Open * File → Save * File → Save As * File → Exit * Editor panel (top) * Address fields (Zone / Net / Node / Point) * Sysop * Location * Flags * Misc data * Tree view (bottom) * Zone * Region * Net * Node * Point * Action buttons * Save * Cancel ---- ===== v0.1 Feature Scope ===== ==== Included ==== * Load and parse existing nodelists * Structured in-memory data model * Tree-based navigation * Field-based editor panel * Add / delete nodes via context menu * Validation: * Required fields * Duplicate addresses * Unsaved-change detection * New nodelist creation ==== Deferred (Post v0.1) ==== * Undo / Redo * Diff preview * Multiple output formats * Template system * NODEDIFF generation ---- ===== Internal Architecture ===== ==== Directory Layout ==== ftn-nodelist-editor/ ├── app.py ├── ui/ ├── model/ ├── parser/ ├── validation/ └── resources/ ==== Design Principles ==== * UI operates on structured objects, not raw text * Parsing and serialization are isolated * Errors are non-fatal and reported to the user * Future formats supported via parser modules ---- ===== Development Notes ===== * Target platform: Linux * Toolkit: PyQt6 * Encoding awareness required (CP437 vs UTF-8) * Preserve comments and ordering on save ---- ===== Future Ideas ===== * Network-wide statistics view * Echomail announcement generator * Export node blocks * Visual diff viewer * Plug-in validation rules ---- ===== Status ===== * Planning: IN PROGRESS * Initial parser:*