Skip to content

Releases: RdWing/dvmconsole

DVM Console NEO 0.8.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 21:15

DVM Console NEO 0.8.0

Console NEO comes to iPhone and iPad. Monitor channels, transmit, build
patches, and review recorded calls wherever you take your console. Version 0.8.0
brings these core console capabilities to mobile, powered by the same radio and
audio runtime as desktop, with a touch interface built for each device. Moving
your saved configurations and tone patterns between devices is easier, too.

This release was republished to correct microphone access in the signed macOS
packages. If the microphone permission prompt did not appear in the original
0.8.0 download, replace the app with the updated package.

Highlights

  • Your console, now on iPhone and iPad. Join the public TestFlight beta and take Console NEO with
    you. Use the compact touch list on iPhone or spread out with Cards and List on
    iPad. iPad remembers your preferred view and switches to List temporarily when
    the window narrows.
  • Hold an iPad card's title and drag it to any grid position, including empty
    space. Other cards stay put. In mobile List, hold a row and drop it onto
    another row in the same zone to insert it there. The dragged row stays above
    its neighbors. Card positions and List order save independently for each
    configuration.
  • The mobile status ribbon shows the RX-enabled channel count and receiving
    channel names. FNE and zone headings show activity dots and channel names, and
    tapping receiving status reveals the active channel. Wide iPad lists use
    multiple columns, with connection controls in FNE headings.
  • Build a configuration in mobile Studio: add channels, enter aliases and
    encryption keys, attach files, and review saved revisions. Save and reload
    confirmations appear in centered dialogs. To move a configuration to another
    device, export a ZIP bundle from the Configuration Library on desktop or
    mobile, then import it through Files, including iCloud Drive. You can also
    transfer saved tone patterns between devices, including patterns longer than
    30 seconds.
  • Keep listening in the background while connected to an FNE or playing a web
    stream. Stopping every source clears the live player and releases idle audio.
    Play saved recordings while disconnected; when playback finishes, the app
    releases audio if nothing else needs it. Returning to the app or using the
    speaker control retries paused listening.
  • Set up mobile audio with hold/toggle PTT, talk-permit tone, receive mute
    during transmit, mic gain/EQ/AGC and presets, per-protocol receive processing,
    and per-FNE receive buffering. Mic gain spans −12 to +12 dB. PTT mute status
    keeps expanded List rows at a stable height. Optional RX filters and
    compression affect local listening, while recordings and forwarded patch audio
    stay independent of those settings.
  • Keep your place in desktop Event History as new calls arrive. When you return
    to the top, History follows the newest entries again. Mobile History includes
    playback, filtering, export and retention controls. Recording deletion
    requires a second tap on the same button to confirm.
  • Both Apple Silicon and Intel macOS packages are signed with Developer ID and
    notarized by Apple, with stapled tickets for offline Gatekeeper checks.

Mobile also includes tones, web streams, groups and patches, multi-select TX,
P25 subscriber commands, searchable Help and diagnostics. This release improves
touch spacing, larger-text layouts, safe-area backgrounds, PTT release handling
and recording-playback indicators.

Join the mobile beta

Open the public TestFlight invitation on your iPhone or iPad.
Install TestFlight if prompted, then accept the invitation and install Console NEO.
Use TestFlight for beta updates and feedback. An App Store release is planned
after beta testing; mobile builds are distributed separately from desktop packages.

Before upgrading

Desktop continues to use the NEO application-data location introduced in 0.7.0.
Back up configuration and operator settings before upgrading.

See the mobile guide
and changelog for details.

Packages

Extract desktop ZIP archives before launching; make Linux AppImages executable.

Platform Package
Apple Silicon macOS dvmconsole-0.8.0-osx-arm64.zip
Intel macOS dvmconsole-0.8.0-osx-x64.zip
Windows x64 dvmconsole-0.8.0-win-x64.zip
Windows ARM64 dvmconsole-0.8.0-win-arm64.zip
Linux x64 DVMConsole-0.8.0-x86_64.AppImage
Linux ARM64 DVMConsole-0.8.0-aarch64.AppImage
iPhone and iPad Public TestFlight beta

Both macOS packages are signed with Developer ID and notarized by Apple.
Windows packages and Linux AppImages remain unsigned.

Safety and compatibility

macOS 14 and newer is supported; macOS 12 and 13 remain best-effort targets.
Linux requires PipeWire and GLIBC 2.34 or newer. The iPhone/iPad deployment target
is iOS 15; qualification on iOS 15 hardware remains outstanding. Serial and
OS-global keyboard PTT, independent physical channel outputs, and floating
windows remain desktop capabilities.

On iOS, locking the screen or switching apps releases manual PTT and cancels
tones. Listening and recording depend on iOS audio execution and interruptions;
there is no guaranteed background duration. Test audio routes, clear and secure
calls, patches, and recordings with the devices and networks you intend to use.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This is an independently maintained downstream of
DVMProject/dvmconsole.

DVM Console NEO 0.7.0

Choose a tag to compare

@github-actions github-actions released this 09 Sep 09:59

DVM Console NEO 0.7.0

Version 0.7.0 brings NEO to Linux and Windows ARM64, makes first-time
configuration easier, and improves everyday transmission, listening, and
recording. It also strengthens recovery when devices, connections, or storage
fail.

Highlights

  • Linux x64 and ARM64 AppImages and Windows ARM64 packages join the existing
    macOS and Windows builds. Linux uses PipeWire audio and supports global
    keyboard PTT through X11 or a compatible Wayland desktop.
  • Configuration Studio makes it easier to start from scratch with FNEs, zones,
    channels, aliases, keys, web streams, and group definitions. Navigation stays
    where you put it, and large configurations take less work to edit and save
    while retaining custom YAML fields.
  • PTT prepares the microphone immediately and holds its audio back through the
    talk-permit tone and a short settling period. Multi-channel release starts
    together, keyboard control is more reliable, and lost global capture releases
    keyboard PTT safely.
  • RX and TAR selections survive device and recording failures. Receive recovery
    avoids shutdown stalls, and alert sends restore listening after failures.
    Alerts and microphone PTT cannot start over one another. Receive audio
    handles device changes and simultaneous calls more reliably, with fewer
    allocations during busy operation. Cards and List avoid unnecessary updates,
    and List retains keyboard expansion without changing saved card layouts.
  • Right-click any of the three toolbar alert buttons to assign a saved tone
    pattern or imported audio. Both send to ALERT-enabled channels. Short
    uppercase names keep the toolbar compact, and the tone window shows
    destinations alongside searchable preset lists with Load and Send controls.
  • Patches can preserve inbound source IDs. Local RX tone and compression
    adjustments affect only listening, leaving TAR recordings and forwarded audio
    unaffected without interrupting patch decoding.
    Under overload, destinations discard
    stale queued audio and report skipped or shortened forwarding instead of
    accumulating long delays. Source TAR recordings remain intact, and closing a
    session stops pending patch audio while finishing active call-end signaling.
  • TAR recovers recording-folder ownership after configuration changes, reports
    failures more clearly, and protects interrupted work. A second console can
    read recordings but cannot record into another live console's folder.
    Event History stays responsive during playback, and the active recording's
    play control changes to stop. Intel Macs correctly distinguish separate
    recording files, and canceled playback releases its input.
  • Settings imports transfer card positions and receive selections between
    installations. Unreadable settings are protected from automatic overwrite,
    file recovery is stronger, and diagnostic exports redact more identifying
    information. Repeated settings changes and large preset libraries do less
    work on the interface thread. Active searches remain available after deleting
    their last matching preset.
  • Web streams have movable receive-only cards with volume controls matching
    channel cards. Local encryption keys are scoped to their FNE system, and DMR
    offers optional channel-key matching for receive.
  • A refreshed README introduces the NEO branding and puts downloads and setup
    instructions near the top. The updated user guide explains settings transfer,
    microphone preparation, recording recovery, and what happens when patches
    cannot keep up.

Before upgrading

NEO now keeps its settings and managed configurations in
DVMProject/dvmconsole-neo, separate from the earlier shared
DVMProject/dvmconsole folder. On a pristine first launch, an optional assistant
can copy selected settings, profiles, managed configurations, and their
companions. Nothing is preselected. Existing recordings, logs, unknown files,
and the original folder are left alone.

Existing unscoped encryption keys remain readable; choose an FNE system when
creating new keys in Studio. Apple Voice Processing has been retired, and
saved selections move to DVM Console processing. Windows communications
processing remains available.

When moving to another computer, import and load the matching codeplug before
importing settings. Enable Restore selected channels on startup to restore
its saved receive selections. Codeplug YAML alone does not carry card positions.
Check audio routes, patch membership, transmit selections, and recording policy
on the destination; start web streams deliberately there.

If TAR was disabled following a recording error in an earlier build, check the
recording folder and re-enable TAR on the affected channels. Use a separate root
for each simultaneously running console that needs to record.

Packages

Extract the complete ZIP before starting NEO. On Linux, make the AppImage
executable before running it.

Platform Package
Apple Silicon macOS dvmconsole-0.7.0-osx-arm64.zip
Intel macOS dvmconsole-0.7.0-osx-x64.zip
Windows x64 dvmconsole-0.7.0-win-x64.zip
Windows ARM64 dvmconsole-0.7.0-win-arm64.zip
Linux x64 DVMConsole-0.7.0-x86_64.AppImage
Linux ARM64 DVMConsole-0.7.0-aarch64.AppImage

The packages are unsigned and not notarized.

Safety and compatibility

macOS 14 and newer is supported; macOS 12 and 13 remain best-effort targets.
Linux requires PipeWire and GLIBC 2.34 or newer. Global keyboard PTT on Wayland
also requires desktop support for the GlobalShortcuts portal. Test audio,
PTT, secure/clear calls, patching, and recording with the devices and FNEs you
intend to use. Simultaneous-call capacity depends on the host, protocols, and
routing; the release does not promise lossless patch forwarding under overload.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For setup and operating instructions, see the
user guide. The
changelog lists
changes since 0.6.2 and earlier version history.

DVM Console NEO 0.6.2

Choose a tag to compare

@github-actions github-actions released this 01 Sep 10:39

DVM Console NEO 0.6.2

Version 0.6.2 fixes managed configuration handling, Configuration Studio,
keyboard PTT, receive metering, and shutdown recording finalization.

Configuration workflows

  • File > Import Codeplug makes the managed-library boundary explicit, while
    Open Recent now lists recently opened managed revisions instead of source
    paths.
  • Studio uses file pickers for encryption-key and RID-alias companions. RID
    aliases use one FNE owner chooser and one native Choose file… picker. The
    selected file is copied into that configuration's managed draft, only the
    selected FNE receives a portable reference to the copy, and the original and
    other FNE lists remain unchanged.
  • A new configuration can proceed directly from FNE system to channel. Studio
    creates the first zone when needed and creates managed keys.clear and
    aliases.yml companions when their first entries are added.
  • Full export uses the current draft's key and alias contents. YAML and copied
    companions are read back byte-for-byte before success is reported. A missing
    optional companion is reported and omitted without preventing the YAML
    export. Sanitized support copies use valid non-secret placeholders for
    removed operational values, so they still pass the normal import validator.
  • Import can recover zone entries that were accidentally placed in the YAML
    systems list. The managed copy is repaired with a warning; the imported
    source file is never rewritten.

Studio reliability

  • Import, activation, save, reload, and storage-picker completion return to the
    Avalonia UI thread before changing window state.
  • Adding, duplicating, or deleting an FNE system no longer leaves duplicate or
    unstable Studio rows. Selection changes no longer feed editor events back
    into collection rebuilds or cause a stack-overflow crash. Duplicated zones
    receive unique channel and stream names, and validation issues open the
    affected stream or field. Undo no longer loses its Redo branch to generated
    editor events while restored bindings settle.
  • Invalid hexadecimal key-ID text remains visible as a validation error without
    replacing the previously valid key ID. Read-only documents consistently
    disable key, alias, group, system, stream, and zone mutation controls.
  • Channel rows are editable in place for name, destination, mode, DMR slot,
    encryption algorithm, receive-only state, and card size. Inline edits remain
    synchronized with the inspector and use the same validation and Undo/Redo
    history. Name receives the largest flexible share, Destination stays compact
    so Mode and Slot remain usable, and the slot control is hidden on non-DMR
    rows. Studio switches to its compact channel list when the inspector would
    otherwise squeeze those columns below usable widths.
  • Zones and channels appear only in the hierarchy beneath their FNE system.
    The FNE Systems page can create the selected system's first zone and channel,
    the whole navigation rail scrolls even when the pointer is over the tree, and
    a selected zone branch remains collapsed when the operator closes it.
  • A single Add creates and selects a RID alias row. Its RID and alias update
    in place as they are entered; no extra placeholder row or delete pass is
    required. FNE selection resolves the exact managed alias copy when source
    files share a filename; if the selected FNE has no alias file, Add creates
    its portable managed file and first editable row. Import/replace copies an
    external list into the selected FNE's managed draft, leaves the source and
    other FNEs unchanged, and keeps internal runtime paths out of the RID list.
  • Closing a dirty draft offers Save, Discard, or Cancel. If an immutable
    revision commits but materialization or settings reconciliation fails, Studio
    identifies the recoverable revision instead of claiming that nothing was
    saved.
  • Studio commits against the managed identity carried by the document being
    edited, so a stale window identity cannot revise a different library entry.
    Saving a new configuration now offers to disconnect and load it immediately;
    added and duplicated FNE systems are present when the session reloads.
  • When a restored catalog refers to a revision that is no longer present, the
    managed library repairs the entry from its existing current pointer or newest
    valid revision. An entry with no recoverable revision is deactivated instead
    of crashing application startup.
  • Configuration Studio now opens centered within the current display's usable
    working area, including on 1920x1080 displays with Windows desktop scaling.

PTT, receive, and shutdown

  • Space PTT remains usable on channel controls. Toggle-mode card PTT and global
    or active-system keyboard PTT remain keyed when the DVM Console
    window loses focus, while physical key release, suspension, and shutdown
    still release transmit state.
  • Clicking a channel's visible Release control always unkeys the live
    transmission, including when another PTT source started it or internal source
    state became desynchronized.
  • Global and active-system PTT menus mark the currently applied key, including
    the disabled None option.
  • The P25 logical-call continuation window is 0.9 seconds, closer to the DMR and
    NXDN windows. FNE client identification now uses NEO_<version>.
  • Recording finalization no longer waits out a fixed shutdown grace period after
    work has completed. Blocked finalization remains bounded and cancelable.
  • Alert/QCII pattern fields are explicitly labeled Frequency and
    Duration (sec).
  • Rapidly changing receive streams no longer let an older stream's decaying
    level blank the current call's audio meter. Configuration Studio uses plain
    numeric text fields, without spinner buttons, for FNE Port, Peer ID, and RID
    aliases. DMR slot selection uses a 1/2 dropdown in both the channel table
    and inspector.
  • Live call-history updates and recording-catalog refreshes no longer modify
    the same history collection at once during session teardown.

In-app documentation

The searchable guide now includes Configuration Troubleshooting. Its
Configuration Studio, managed companion, TAR, Event History, tones, audio, and
settings instructions match the current controls and storage behavior.

Packages

Extract the complete archive before starting DVM Console NEO.

Platform Package
Apple Silicon macOS dvmconsole-0.6.2-osx-arm64.zip
Intel macOS dvmconsole-0.6.2-osx-x64.zip
Windows x64 dvmconsole-0.6.2-win-x64.zip

The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.

Safety and compatibility

  • Existing 0.6.1 managed configurations and operator settings do not require a
    migration. YAML remains the interoperable import/export format.
  • This release does not change FNE packet formats, vocoder payloads, encryption
    signaling, or the supported macOS 14+ and Windows x64 targets.
  • Import compatibility repair and shorter P25 logical episode grouping affect
    managed presentation and history behavior; they do not modify the imported
    source file or over-the-wire traffic.
  • Automated tests and package checks do not replace live FNE, radio,
    microphone, speaker, Bluetooth, serial PTT, system-wide keyboard PTT, or
    Windows hardware acceptance on the destination systems.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For the complete history, see the
changelog.

DVM Console NEO 0.6.1

Choose a tag to compare

@github-actions github-actions released this 31 Aug 10:09

DVM Console NEO 0.6.1

Version 0.6.1 is a small hotfix for the compact List workspace. It also expands
the bundled network-disabled demo.

Hotfixes

  • Restore List control colors and PTT input, including hold, toggle, and
    keyboard Space operation. Expanded rows also stay in place while their detail
    panel opens or closes.
  • Save the exact main-window size and position before Quit completes.
  • Provide a larger multi-zone workspace in the network-disabled demo.

Packages

Extract the complete archive before starting DVM Console NEO.

Platform Package
Apple Silicon macOS dvmconsole-0.6.1-osx-arm64.zip
Intel macOS dvmconsole-0.6.1-osx-x64.zip
Windows x64 dvmconsole-0.6.1-win-x64.zip

The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.

Safety and compatibility

  • FNE packet formats, vocoder payloads, transmit pacing, encryption signaling,
    and codeplug structure are unchanged.
  • Existing 0.6.0 managed configurations and operator settings do not require
    migration.
  • The expanded demo is network-disabled and does not contain operational system
    data.
  • Live FNE, radio, microphone, speaker, Bluetooth, serial PTT, and Windows
    hardware acceptance remain separate tests on the destination systems.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For the complete history, see the
changelog.

DVM Console NEO 0.6.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 05:42

DVM Console NEO 0.6.0

Version 0.6.0 completes the first portability refactor. It keeps macOS and
Windows as the supported runtime targets while separating the console runtime,
shared Avalonia presentation, audio, vocoder, storage, and optional physical
PTT capabilities needed by future Linux, iOS, and Android hosts.

This release is based on the complete v0.5.5 runtime baseline. It includes the
v0.5.4 configuration-save, TAR correlation, typed FNE state, cancellable web
stream, receive lifecycle, decoder ownership, mixer-tail, and native-audio
reliability changes, plus the v0.5.5 canceled-stream Off-state correction.

Operator changes

  • File > Configuration Library manages configurations as immutable app-owned
    revisions. Opening an external YAML codeplug imports it; later saves never
    overwrite that source file.
  • File > New Configuration can create a complete configuration in Studio.
    YAML remains available through full and sanitized export.
  • View > Channel view > Cards/List selects the desktop renderer. Cards stay
    the default and retain their existing geometry and colors. List is virtualized,
    grouped by system and zone, and becomes the temporary renderer below 600
    logical pixels.
  • Card layout, routes, gain, balance, recording policy, encryption selections,
    groups, patches, and authorized web-stream state are stored per managed
    configuration. A compatible legacy layout is attributed during first import.
  • Configuration Studio and Console Settings use denser desktop rows while
    retaining responsive phone-width layouts and accessible touch targets.
  • Event History retains the newest 5,000 current-session calls and events even
    when they do not have TAR recordings. The compact Activity sidebar continues
    to show at most 100 matching entries, and TAR catalog retention is unchanged.

Portability boundaries

  • DvmConsole.Application owns the application-session façade, stable IDs,
    immutable runtime snapshots, commands, meters, logs, lifecycle coordination,
    recording playback, generated audio, web streams, and patches without an
    Avalonia dependency.
  • DvmConsole.Presentation owns reusable Avalonia controls, pages, view models,
    styles, responsive policy, List rendering, Configuration Studio, and the
    Configuration Library without desktop lifetimes, pickers, filesystem paths,
    serial ports, or native APIs.
  • Audio is split into abstractions, managed DSP/codecs, macOS CoreAudio,
    Windows WASAPI, and desktop selection projects. The Windows adapter is the
    only audio project that references NAudio.
  • Vocoder abstractions are separate from the current native implementation.
  • Focused/global keyboard and serial PTT live in desktop-only projects. The
    application accepts no physical PTT factories, leaving on-screen PTT
    available to a future mobile host.
  • Configuration, asset, and recording APIs use stable IDs and stream/document
    handles. Desktop-only path and reveal-in-file-manager behavior stays in the
    desktop host.

Reliability and efficiency

  • Runtime control snapshots are content-deduplicated; meter samples and logs do
    not rebuild the full console state. List meters are coalesced per dispatcher
    turn and ignore visually insignificant changes.
  • Programmatic gain restoration no longer feeds back as an operator command.
  • TAR playback decodes a first block before opening the output endpoint and
    records source, decoder, prefetch, endpoint, and first-output timing.
  • Configuration Library filesystem work runs away from Avalonia synchronization
    contexts while remaining compatible with the existing synchronous startup
    bridge.
  • Filesystem identities follow the target platform's case rules, avoiding
    accidental recording or revision collisions.

Removed

  • The unused external FFmpeg fallback and DVM_FFMPEG environment variable.
    Managed PCM WAV, MPEG/MP3, and Ogg Opus decoding remain supported.
  • The abandoned high-quality Bluetooth option and macOS native activation ABI.
    Ordinary Bluetooth route handling, cold-profile safety, Keep Mic Warm, and
    Apple Voice Processing remain unchanged.

Packages

Extract the complete archive before starting DVM Console NEO.

Platform Package
Apple Silicon macOS dvmconsole-0.6.0-osx-arm64.zip
Intel macOS dvmconsole-0.6.0-osx-x64.zip
Windows x64 dvmconsole-0.6.0-win-x64.zip

The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.

Evidence and support boundary

Automated validation covers architecture boundaries, migrations, immutable
revisions, settings compatibility, desktop behavior, media/runtime behavior,
PTT release paths, and headless responsive rendering. Package checks cover
architecture, native libraries, documentation, privacy strings, private-data
exclusion, and size/file-count budgets.

This release does not claim Linux, iOS, or Android runtime support. Live FNE,
radio, default-device, Bluetooth, microphone, serial, and Windows hardware
acceptance remain distinct tests on the destination systems.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For the complete history, see the
changelog.

DVM Console NEO 0.5.5

Choose a tag to compare

@github-actions github-actions released this 30 Aug 20:11

DVM Console NEO 0.5.5

Version 0.5.5 is a reliability update for configuration saves, recording
history, FNE session state, web streams, and audio teardown. It also replaces
several duplicated lifecycle policies with shared implementations so the live
runtime and its validation paths make the same decisions.

Fixed

  • Configuration Studio now reads the latest editor state before it plans and
    commits a save. It rejects duplicate destination paths, checks for external
    file changes at commit time, keeps staged secrets and backups private,
    and adopts the saved settings snapshot in the running application.
  • Configuration validation accepts supported system, mode, card-size, and
    encryption tokens without depending on letter case or surrounding spaces. It
    rejects a system port that cannot reserve the adjacent metadata port.
  • YAML updates preserve empty known collections and no longer use list position
    as a fallback when placing vendor fields.
  • A web stream can be stopped while its connection or decoder is still opening.
    Slow startup work no longer holds the control gate needed by Stop or disposal,
    and a canceled start now reliably finishes in the Off state.
  • New TAR recordings carry the receive episode that produced them. History uses
    that identity before applying a bounded time-based fallback for older files,
    which keeps rapid calls on the same channel from sharing the wrong recording.
  • Clear and Secure recording filters exclude calls whose encryption state is
    still unknown. Recording path containment follows the case-sensitivity rules
    of the host filesystem.
  • FNE connection state and login retry cadence now follow typed peer state and
    transport events instead of diagnostic message wording. Compatible UDP
    receives return promptly after shutdown.
  • NXDN late entry starts from the configured privacy policy, while explicit
    clear metadata can still override it. DMR and NXDN receive sessions no longer
    retain unused encryption state.
  • Analog transmit sends a padded final PCM frame before the call terminator.
    Full and partial PCM frame handoffs are not replayed if a downstream callback
    fails.
  • Mixer lanes remain owned until the output device accepts their final samples.
    macOS playback and capture release native streams and high-quality Bluetooth
    overrides after startup, pump, stop, or disposal failures.
  • WAV, MPEG, Opus, and FFmpeg readers reject overlapping reads and coordinate
    cancellation with disposal. MPEG startup can be cancelled even when decoder
    construction blocks.
  • Desktop state changes that resume after asynchronous work return to the UI
    dispatcher, and settings write failures are reported through the application
    error path.

Engineering changes

  • Configuration saving and settings persistence now have dedicated
    coordinators instead of being owned by window event handlers and the main
    view model.
  • Filesystem path identity is centralized so save planning and recording
    containment use the same platform rules.
  • The allocation-free receive stream state machine is the canonical lifecycle
    engine. The immutable reducer adapts its input through that engine rather
    than maintaining a second policy implementation.
  • Application-owned FNE code has nullable analysis enabled and uses a finite
    compatibility suppression list for pinned upstream source.
  • macOS CI now builds and tests the native CoreAudio component. The capture ring
    is allocated after the device's negotiated sample rate is known.

Operator behavior

  • Existing YAML codeplugs and operator settings do not require migration.
  • Existing TAR recordings remain readable. New recordings add receive-episode
    identity to their embedded catalog metadata.
  • FNE login retry intervals remain 5, 10, 20, 40, and 60 seconds, capped at 60
    seconds and reset after a successful connection or operator restart.
  • Stopping a web stream during startup now cancels the pending start instead of
    waiting for the network or decoder operation to finish.

Packages

Extract the complete archive before starting DVM Console NEO.

Platform Package
Apple Silicon macOS dvmconsole-0.5.5-osx-arm64.zip
Intel macOS dvmconsole-0.5.5-osx-x64.zip
Windows x64 dvmconsole-0.5.5-win-x64.zip

The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.

Safety and compatibility

  • FNE packet formats, vocoder payloads, transmit pacing, encryption signaling,
    and codeplug structure are unchanged.
  • Automated tests cover configuration transactions, recording correlation,
    stream cancellation, FNE retry state, receive lifecycle, reader ownership,
    native audio cleanup, and transmit tails.
  • Live FNE, radio, Bluetooth, serial PTT, and audio-device acceptance still
    requires testing on the affected systems and routes.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For the complete history, see the
changelog.

DVM Console NEO 0.5.3

Choose a tag to compare

@github-actions github-actions released this 30 Aug 05:39

DVM Console NEO 0.5.3

Version 0.5.3 fixes a transmit-target validation gap found after 0.5.2. A DMR
channel could remain keyable on its locally configured timeslot even when the
connected FNE advertised that talkgroup on the other slot. The FNE could reject
the call start and later report the console's end packets as non-call
terminators.

The console now treats each FNE-sourced talkgroup table as authoritative for
every transmit path.

Fixed

  • DMR transmit targets must match both the advertised talkgroup and timeslot.
    P25, NXDN, and analog targets are matched by destination ID.
  • Channel PTT, multi-channel PTT, patches, alerts, pages, DTMF, and generated
    tones all consult the endpoint's current authority immediately before a call
    starts.
  • A refreshed table updates the channel controls and warns the operator when a
    target becomes unavailable. If that target is already active, DVM Console
    ends the affected console or patch transmission cleanly.
  • Disconnect clears the old authority before reconnect. Ordered notifications
    and session identities prevent delayed callbacks from an outgoing connection
    from overwriting the replacement connection's table.
  • Talkgroup activation and deactivation announcements are length-checked and
    parsed at the FNE transport boundary. Malformed announcements are rejected
    without interrupting normal protocol traffic.

Operator behavior

  • Unavailable controls are disabled. DMR warnings name the rejected talkgroup
    and timeslot.
  • A later table can restore a channel without reconnecting or reloading the
    codeplug.
  • No codeplug or operator-settings migration is required.

Engineering improvements

  • A shared transmit-target policy covers console voice, generated audio, and
    patch forwarding. Each path keeps its existing transmission implementation.
  • The FNE transport session passes traffic timing and talkgroup observers
    separately from its transport-encryption compatibility facade.
  • Inbound frames are validated once before talkgroup observation and protocol
    delivery.
  • Regression tests cover DMR slot mismatches, P25 and other destination checks,
    tone and patch rejection, active-call teardown, ordered reconnect
    notifications, malformed tables, and duplicate validation removal.

Packages

Extract the complete archive before starting DVM Console NEO.

Platform Package
Apple Silicon macOS dvmconsole-0.5.3-osx-arm64.zip
Intel macOS dvmconsole-0.5.3-osx-x64.zip
Windows x64 dvmconsole-0.5.3-win-x64.zip

The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.

Safety and compatibility

  • Existing YAML codeplugs and operator settings remain compatible.
  • FNE wire formats, encryption behavior, vocoder payloads, transmit cadence,
    jitter-buffer targets, mute policy, and TAR recording delivery are unchanged.
  • Automated tests cover the authority and transmission-lifetime paths. Live
    FNE, radio, and audio-device acceptance still requires testing on the affected
    systems and routes.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For the complete history, see the
changelog.

DVM Console NEO 0.5.2

Choose a tag to compare

@github-actions github-actions released this 30 Aug 02:06

DVM Console NEO 0.5.2

Version 0.5.2 is a hotfix for receive audio and session-lifetime problems
reported after 0.5.1. It also makes routine patch and multi-select changes apply
without a YAML save or FNE reconnect, and adds a setting for local generated-tone
monitoring.

Fixed

  • Confirmed P25 terminators now release the physical receive stream promptly,
    including short calls that have not filled the live-playback startup cushion.
    If voice definitively restarts a reused stream ID, the new stream receives a
    fresh decoder while the logical call episode keeps its established output
    lane.
  • Patch forwarding now closes a source when the ordered receive worker reaches
    the terminator. Audio already held by the adaptive jitter buffer is processed
    first, so patching does not need a second fixed terminator hold.
  • A failed patch target now releases its route before reporting the failure, so
    the next audio block can restart the target instead of remaining attached to
    the failed outbound session.
  • System and zone mutes now apply when a live-speaker lane is created and when
    receive playback resumes after transmit. Muted resources still decode, update
    call state, feed patches, and deliver audio to TAR for recording.
  • FNE connect, disconnect, and replacement transitions are serialized. A
    disconnect cancels an in-progress start, and the outgoing session releases its
    FNE peer identity before the replacement becomes active.
  • Session-owned callbacks are ignored after disposal begins. The shutdown
    deadline now covers the complete application cleanup sequence, including
    auxiliary windows and settings writers.
  • Final shutdown now stops FNE sessions before the remaining audio and UI
    cleanup. A peer waiting in exponential login retry is cancelled immediately
    instead of delaying Quit until its current retry interval ends.

Operator changes

  • Configuration Studio applies group membership, direction, and enabled state
    directly to the active codeplug's operator settings. Apply changes keeps
    Studio open, while Apply & close applies the same state and closes the
    window. Neither action rewrites YAML, disconnects FNE sessions, or reloads the
    codeplug.
  • Group definition changes, including add, rename, type change, and delete,
    remain YAML changes and still use Review & Save.
  • General settings now include Monitor generated tones locally. Turning it
    off skips the attenuated local monitor for generated tones, DTMF, presets, and
    QCII pages without changing the transmitted audio.

Engineering improvements

  • Live speaker admission now uses one mute policy, while decoded-sample delivery
    to TAR remains independent from speaker playback.
  • Patch receive processing has one ordered boundary for call-state observation,
    decoding, and source teardown.
  • Session replacement and final shutdown separate FNE quiescence from the
    remaining audio and UI disposal work. This prevents overlapping peer identity
    ownership during reload and avoids carrying login backoff into shutdown.
  • Regression coverage includes short P25 calls, stream-ID reuse, mute-scope
    composition, TAR capture while muted, transmit-to-receive restoration,
    patch-target recovery, overlapping connection transitions, stale UI
    callbacks, bounded shutdown, login-backoff cancellation, immediate group
    state, and disabled local tone monitoring.

Packages

Extract the complete archive before starting DVM Console NEO.

Platform Package
Apple Silicon macOS dvmconsole-0.5.2-osx-arm64.zip
Intel macOS dvmconsole-0.5.2-osx-x64.zip
Windows x64 dvmconsole-0.5.2-win-x64.zip

The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.

Safety and compatibility

  • Existing YAML codeplugs remain compatible. Operator settings migrate to
    schema 9 automatically; the local tone monitor remains enabled unless the
    operator turns it off.
  • FNE packet formats, encryption behavior, vocoder payloads, transmit cadence,
    and jitter-buffer targets are unchanged.
  • Automated tests cover the reported lifecycle and audio-policy paths. Live
    Windows audio, radio, FNE, reload, and shutdown acceptance still requires
    testing on the affected workstation and route.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For the complete history, see the
changelog.

DVM Console NEO 0.5.1

Choose a tag to compare

@github-actions github-actions released this 29 Aug 17:46

DVM Console NEO 0.5.1

Version 0.5.1 is a hotfix for a reported Windows transmit audio problem.
Diagnostic logs showed outbound P25 vocoder packets slipping well beyond their
intended cadence. The delay from each late timer wakeup was being carried into
the packets that followed, so a busy or coarse-grained scheduler could make a
transmission progressively slower and uneven.

Fixed

  • Outbound audio now follows absolute 20 ms frame-start deadlines. Encoding,
    transport work, and a late timer wakeup count against the current interval
    instead of extending every later interval.
  • A wakeup that is less than one frame late keeps the next established deadline.
    If transmission falls a full frame behind, the cadence starts again from the
    current time rather than emitting an immediate catch-up burst.
  • Patch forwarding uses the same absolute scheduler. Its first frame still waits
    for one interval, and its bounded queue still stops a patch that has become
    too stale to transmit safely.

Engineering improvements

  • Patch cadence startup now uses a named factory instead of a boolean option,
    making the intended first-frame behavior explicit at the call site.
  • The cadence contract now states that each instance belongs to one serial
    transmit stream.
  • Deterministic tests cover repeated timer overshoot, sub-frame and whole-frame
    lateness, delayed patch startup, non-tick clock frequencies, and recovery
    without packet bursts.

Packages

Extract the complete archive before starting DVM Console NEO.

Platform Package
Apple Silicon macOS dvmconsole-0.5.1-osx-arm64.zip
Intel macOS dvmconsole-0.5.1-osx-x64.zip
Windows x64 dvmconsole-0.5.1-win-x64.zip

The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.

Safety and compatibility

  • No codeplug or operator-settings migration is required.
  • FNE packet formats, encryption behavior, vocoder payloads, transmit queue
    limits, and patch teardown behavior are unchanged.
  • Automated tests reproduce scheduler delays deterministically. Windows radio,
    FNE, and audio-device acceptance still requires testing on the affected
    workstation and route.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For the complete history, see the
changelog.

DVM Console NEO 0.5.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 01:54

DVM Console NEO 0.5.0

Version 0.5.0 introduces Configuration Studio, a graphical way to maintain the
same interoperable YAML codeplug DVM Console already loads. It brings systems,
zones, channels, streams, groups, encryption keys, aliases, and file management
into one draft-and-review workflow without changing the main operator workspace.

Added

  • Configuration Studio opens as a separate modeless window from File >
    Configuration Studio
    . File > New Configuration starts a new draft, and
    View > Groups opens Studio directly on the Groups page.
  • The navigation tree follows FNE system, zone, and channel ownership. Dense
    tables keep large configurations scannable, while the inspector edits the
    selected record and reports field errors as they occur.
  • The slide-out zone layout editor uses the same channel-card template,
    dimensions, colors, and two-dimensional canvas as the main console. Its
    controls are disabled, but cards can be selected and moved to prepare the
    saved layout.
  • Review and save groups changes by codeplug, local key file, alias file, and
    operator settings. Studio checks for external edits, validates the staged
    set, creates restricted backups, replaces files atomically, and restores
    earlier files if a later write fails.
  • Full interoperable export retains codeplug credentials, addresses, stream
    URLs, identifiers, and references to local key material. Sanitized support
    export removes those values. Review either copy before sharing it.
  • TAR History now shows a stop control while a recording is playing. Generated
    tones, DTMF, pages, and alerts also play through an attenuated local monitor;
    the transmitted PCM is unchanged.

Changed

  • Studio presents YAML mode: p25 as P25 Phase 1. P25 Phase 1 channels do
    not show a slot field, while DMR slots are displayed as whole numbers.
  • Encryption editors use named, protocol-aware algorithm choices. Studio derives
    algorithm IDs and required key lengths for P25 Phase 1, DMR, and NXDN, and
    keeps the 0x prefix visible for hexadecimal key IDs.
  • Group name and type stay in the YAML codeplug. Membership, one-way direction,
    source order, and enabled state are stored as operator settings scoped to the
    normalized codeplug path. Saving as a new path copies that state without
    removing the original.
  • Unknown YAML mapping fields are retained while their containing records remain
    in the draft. Edited sections use canonical formatting. Anchors, aliases,
    custom tags, duplicate keys, and multi-document files open read-only because
    Studio cannot rewrite them safely.
  • Saving the active codeplug does not hot-apply topology changes. Studio offers
    a save-only path or a disconnect-and-reload path that uses the existing safe
    session replacement flow.

Fixed

  • Validation details now identify the severity, section, exact field path, and
    plain-language cause. Errors block saving; warnings remain visible without
    blocking it.
  • Add, duplicate, delete, reorder, algorithm-selection, and layout commands no
    longer terminate Studio when a draft is incomplete or a selection changes.
    The channel list keeps its own scrollbar while the layout drawer is open, and
    a selected overflow row no longer flickers at the drawer boundary.
  • Renames, duplicate display names, reorder operations, undo and redo, and Save
    As now retain stable draft identities. Group and layout settings follow the
    intended record instead of relying on its current display name.
  • Delayed FNE status and P25 KMM callbacks are ignored after session teardown,
    preventing them from scheduling work against a disposed console.
  • Generated-audio monitoring and TAR playback cancellation are idempotent, and
    a local monitor-output failure does not interrupt the radio transmission.
  • Malformed Opus, configuration, FNE, and recording inputs are rejected earlier.
    Receive episode and stream bookkeeping is bounded, and recording scans and
    retention cleanup do not follow linked paths outside the configured root.

Packages

Extract the complete archive before starting DVM Console NEO.

Platform Package
Apple Silicon macOS dvmconsole-0.5.0-osx-arm64.zip
Intel macOS dvmconsole-0.5.0-osx-x64.zip
Windows x64 dvmconsole-0.5.0-win-x64.zip

The packages are unsigned and not notarized. Signing and notarization status is
reported with the release.

Safety and compatibility

  • Existing YAML codeplugs remain the source of truth. Studio does not add group
    membership or other operator-only state to the codeplug schema, so compatible
    older DVM Console versions can continue to load files saved by Studio.
  • Existing global group settings migrate to the last active codeplug when its
    path is known. The settings schema update is automatic.
  • Comments and hand formatting inside rewritten sections are not guaranteed to
    remain unchanged. Studio shows this limitation in review and records backups
    under the DVM Console application-data folder.
  • P25 Phase 2 is not active. The YAML value mode: p25 continues to mean P25
    Phase 1.

DVMHost/FNE R06A00 or newer is recommended. This software is for personal,
non-commercial, amateur, and educational use and must not be used in
public-safety or life-safety-critical applications.

This repository is an independently maintained downstream version of
DVMProject/dvmconsole.

For the complete history, see the
changelog.