Releases: PP5PK/DR_List_Manager
Release list
Fourth release
🎙️ DR List Manager — v5.1.3
Patch release — single bug fix since v5.1.2.
🔧 Fix
Repeater Tone missing "Hz" suffix after edit
When editing a repeater and pressing Enter to keep the current Repeater Tone value (e.g., 88,5Hz), the Hz suffix was silently dropped from the saved record. The field was stored as 88,5 instead of 88,5Hz, producing a non-conforming CSV line that would only be corrected later by running the validation engine.
Root cause: the form strips the Hz suffix before passing the value to read_tone() for a cleaner display in the [current: 88,5] hint. When the user pressed Enter, the function returned the raw default (88,5) without re-appending Hz. Selecting a tone by number from the table was unaffected, as that path already appended Hz.
Fix: read_tone() now returns "${default_val}Hz" on Enter, making both input paths (Enter on default and table selection) consistent.
73 de PP5PK — Mafra, SC, Brazil
Full Changelog: v5.1.2...v5.1.3
Third Release
🎙️ DR List Manager — v5.1.2
Patch release with two targeted fixes since v5.1.0.
🔧 Fixes
Gateway auto-update on callsign change (v5.1.1)
When editing a DV repeater and changing its Repeater Call Sign, the Gateway Call Sign prompt was still suggesting the old gateway value instead of generating a new default from the updated callsign.
Before: changing PY5OLD A → PY5NEW A still suggested PY5OLD G as the gateway.
After: the gateway default is always recalculated from the current callsign — now correctly suggests PY5NEW G.
Root cause: the default value expression ${gw_call:-$gw_def} only used $gw_def when $gw_call was empty. During editing, the old gateway was never empty, so the freshly computed $gw_def was ignored. Fixed by always using $gw_def directly.
File permissions set to 644 (v5.1.2)
Files created or modified by the application now receive chmod 644 permissions automatically, ensuring they are readable by the web server for download access on hosted environments (e.g., cloud.dvbr.net).
A helper function set_perms() was added and applied across all 16 file-write operations in the script: CSV creation, editing, validation output, import merge, export copy, group rename/move/remove, repeater add/edit/delete, database clear, and new database creation.
73 de PP5PK — Mafra, SC, Brazil
Full Changelog: v5.1.0...v5.1.2
Second Release
🎙️ DR List Manager — v5.1.1
Major release with redesigned input interface, enhanced validation engine, and new group/database management features.
⬆️ Upgrade from v3.8.2
This release includes significant changes across the entire application. Existing CSV databases are fully compatible — no migration required.
✨ What's New
🖥️ Redesigned Input Interface
- Two-line prompt format — field labels, hints, and current values are displayed on the first line; a clean
>marker on the second line receives input. Inspired by the XLX Reflector User Manager for visual consistency across projects. - Clearable fields — Name, Sub Name, and Repeater Call Sign (analog duplex) now display a
[-=clear]hint. Typing-at these prompts erases the field value, solving a long-standing limitation where editing couldn't empty a previously filled field. - Review & confirm before save — after filling all fields in the add/edit form, a complete entry box with all 17 fields is displayed for visual review. The user must confirm with
ybefore the record is written to the CSV. - Intro messages — edit mode displays "Press Enter on a [current:] field to keep its value"; add mode displays "Fill in all required fields".
🛡️ Enhanced Validation Engine
- Structural error detection — lines with missing or extra field delimiters (≠17 fields) are now caught before parsing. The raw CSV data is displayed alongside the misaligned field view, and the user can correct interactively or skip.
- Error field highlighting — when validation errors are found, the specific fields with problems are highlighted in red within the entry detail box, making it immediately clear which values need attention.
- Conflict side-by-side display — callsign conflicts and duplicate entries now show both the current entry (in red) and the conflicting entry (in yellow) as full 17-field boxes, with the raw CSV data of the conflicting line retrieved from the database.
- Improved duplicate key — duplicate detection now uses a 5-field key (Group No + Name + Frequency + Repeater Call Sign + Mode) instead of the previous 3-field key. This eliminates false positives when the same location has both a DV and an FM repeater on the same frequency.
- UTC Offset range validation — the regex now validates the actual range of real-world time zones (±14:00), rejecting values like
25:00or99:99that the previous pattern accepted. - Auto-correction summary — the number of automatic corrections applied during validation is now displayed at the end of the process alongside the ignored lines count.
- Detailed error messages — conflict errors now specify the type (e.g., "Callsign Conflict: 'PY5LL A' — DV callsigns require total exclusivity") and identify the conflicting entry by line number.
👥 Group Management — Move Group
- New option: Move Group (Menu 3 → 3) — changes a group's number to a new, unoccupied slot (1–50). All repeater entries belonging to the group are updated atomically via a single
awkpass. - Available (free) group numbers are displayed for convenience.
- A confirmation summary shows the before/after state and the number of affected repeaters before executing.
📦 Database Management — Create New Database
- New option: Create New Database (Menu 5 → 5) — creates a fresh, empty CSV file with the standard 17-column header.
- File name is validated for safe characters,
.csvextension is auto-appended if missing, and existing files are protected from overwrite. - The new database is automatically selected as the active base upon creation.
- Menu options renumbered: Delete is now option 6, Clear is now option 7.
🔧 Bug Fixes
exportar_base/export_base—cpcommand now checks for errors (disk full, permission denied) instead of always reporting success.- Temporary file excluded from file listings —
temp_corrigido.csvis now filtered from the CSV file picker in both Select Base and Import CSV menus, preventing accidental selection of the validation scratch file. ler_tom/read_toneHz stripping — correction mode now strips theHzsuffix before passing the default value, consistent with the main form behavior.rpt_toneinitialized in add mode — the variable is now explicitly set to empty string in the add-mode defaults, preventing potential undefined behavior.
📋 Other Improvements
- Dynamic headers —
show_header()adapts to terminal width (capped at 80 columns) with centered title text in white and blue borders. - Dynamic separators —
separator()function replaces all fixed-width separator lines throughout the application. Xnavigation — all menus now useXto go back/exit (previously0in some menus).- Gray parenthetical hints — menu items with descriptions in parentheses (e.g., "Move linked repeaters") are now displayed in gray for visual distinction.
- Default values in orange — the
[current: value]hint in all three input engines displays the value in orange usingecho -enfor proper ANSI rendering. show_entry_box()— reusable function for displaying formatted 17-field entry boxes with optional field highlighting, used across validation errors, conflict display, and save confirmation.
📁 CSV Format
Unchanged from v3.8.2. The database uses a 17-field semicolon-separated CSV, compatible with ICOM DR List CSV import:
Group No;Group Name;Name;Sub Name;Repeater Call Sign;Gateway Call Sign;
Frequency;Dup;Offset;Mode;TONE;Repeater Tone;RPT1USE;Position;Latitude;Longitude;UTC Offset
Decimal separator:
,(comma)
Field separator:;(semicolon)
🚀 Usage
chmod +x DR_list_manager.sh
./DR_list_manager.shNo external dependencies beyond standard GNU/Linux utilities (bash, awk, tput, mktemp).
📌 Notes
- Default database file on startup:
Repeater_list.csv(auto-created if absent) - All CSV files are read from and written to the current working directory
- Terminal width adapts dynamically up to 80 columns
- Tested on bash 5.x — not POSIX
shcompatible
73 de PP5PK — Mafra, SC, Brazil
Full Changelog: v3.8.2...v5.1.1
First release
🎙️ DR List Manager — v3.8.2
First public release of DR_list_manager.sh — a Bash-based interactive manager for ICOM DR-mode repeater lists.
Overview
DR_list_manager.sh is a terminal-driven tool for creating, editing, validating, and exporting repeater lists in the semicolon-separated CSV format used by ICOM transceivers in DR (Digital Repeater) mode. It supports D-Star (DV), FM, and FM-N channel types and follows the Brazilian decimal notation standard (0,000000 instead of 0.000000) required by the ICOM CSV spec.
✨ Features
📋 Repeater Management
- Add repeaters with a fully guided, field-by-field input form
- Edit existing repeaters with inline value preservation — press
Enterto keep any current value - Duplicate detection — prevents adding identical entries to the same database
- Delete repeaters with confirmation prompt and automatic pre-deletion backup
- Support for all three repeater types:
DV,FM, andFM-N - Mode-specific field logic (e.g. Gateway Call Sign only for DV duplex; TONE/TSQL only for FM modes)
🗂️ Group Management
- Organize repeaters into up to 50 named groups
- Rename groups — updates the name across all linked repeaters automatically
- Remove groups — with choice to move all linked repeaters to another group, or delete them entirely
🔍 Advanced Query
- Search the database with up to 3 combined filters simultaneously
- Filterable fields: Group, Mode, RPT1USE, Call Sign (partial match), Frequency (partial match)
- Results displayed in a paginated table that adapts to the current terminal height
- Navigate results pages or jump directly to a repeater's detail/edit view from the query results
🛡️ Database Validation Engine
- Deep field-by-field validation for all 17 CSV columns
- Automatic corrections applied silently where unambiguous:
- Decimal point → comma conversion (
145.500000→145,500000) - Missing
Hzsuffix on Repeater Tone field - Offset reset to
0,000000for simplex (DUP=OFF) entries - TONE and Repeater Tone forced to ICOM defaults for DV mode
- Decimal point → comma conversion (
- Interactive correction prompted for unresolvable errors (invalid field format, callsign conflicts, duplicate keys)
- Progress indicator shown during validation of large files
- Full validation summary logged on completion
📦 Database Management (Option 5)
- Select Base — switch between multiple CSV files in the working directory, or create a new one
- Import CSV — validate and integrate an external CSV into the current base:
- Choose Replace (overwrite) or Append (merge)
- On Append: interactive resolution of group name conflicts when the same group number exists in both files
- Export — creates a dated snapshot copy (
RptYYYYMMDD_NN.csv) with sequential numbering - Validate Database — run the validation engine against the active base in-place
- Delete Database — safely remove a secondary CSV file (current base is protected)
- Clear Database — wipe all records while preserving the CSV header
🖥️ Terminal UI
- Dynamic header and separator components that adapt to actual terminal width (capped at 74 columns)
- ANSI color scheme using blue/green/amber/orange — designed with accessibility in mind (avoids red/green-only contrasts)
- Three interactive input engines:
read_field— free text with regex validation, auto-uppercase for callsigns, auto-comma for decimal fieldsread_option— numbered menu for fixed-choice fieldsread_tone— visual table of all 50 standard ICOM CTCSS tones
- Universal
Xkey to cancel any operation at any prompt without losing data
🔒 Reliability & Safety
- PID lock file (
/tmp/dr_list_manager.lock) — prevents concurrent instances from corrupting the CSV - Stale lock detection and automatic cleanup on startup
- Automatic backup created before every destructive operation (
CSV_FILE.backup) - Backup retention policy: files older than 7 days are purged on startup
- Operation log (
dr_manager.log) records every significant action with timestamps:ADD,EDIT,DELETE,IMPORT,EXPORT,RENAME_GROUP,MOVE_GROUP,VALIDATE, and more
📁 CSV Format
The database uses a 17-field semicolon-separated CSV, compatible with ICOM DR List CSV import:
Group No;Group Name;Name;Sub Name;Repeater Call Sign;Gateway Call Sign;
Frequency;Dup;Offset;Mode;TONE;Repeater Tone;RPT1USE;Position;Latitude;Longitude;UTC Offset
Decimal separator:
,(comma)
Field separator:;(semicolon)
🚀 Usage
chmod +x DR_list_manager.sh
./DR_list_manager.shNo external dependencies beyond standard GNU/Linux utilities (bash, awk, tput, mktemp).
📌 Notes
- Default database file on startup:
Repeater_list.csv(auto-created if absent) - All CSV files are read from and written to the current working directory
- Tested on bash 5.x — not POSIX
shcompatible
73 de PP5PK — Mafra, SC, Brazil
Full Changelog: https://github.com/PU5KOD/DR_List_Manager/commits/v3.8.2