zApp release notes
==================

4.0.0
---------

zApp 4 is a redesign: one window, in the ZapperBox TV look, where your
computer and each of your ZapperBoxes are tabs side by side. The player,
exports and keyboard shortcuts work as before.

New:
  * One window for everything. Across the top, a tab for This Computer
    and one for each ZapperBox; down the left, Recordings, Remote,
    Settings and Help. The separate local library, device list and box
    recordings screens are gone.
  * zApp remembers your boxes. Add a box once and its tab is there every
    time zApp starts, without waiting for a network search. A box that
    can't be reached shows Offline, with Retry and Remove. Right-click a
    box's tab to give it a name of your own in zApp, or to remove it.
  * Add a box by its IP address. Add ZapperBox searches your network as
    the device list did, and also takes a typed address, so a box on
    another part of your network, which the search can't see, can now
    be added. zApp checks that a box answers there and is sharing its
    library before adding it.
  * Recordings are grouped by series, as a grid of posters or as a list
    whose rows open to show their episodes. Click a series for its own
    page: its seasons, and a card for each episode with Play or Resume,
    Download or Export, Delete and Details. A search carries over into
    the series, showing just the episodes that match, with Show all for
    the rest.
  * See what's new on a box. A recording is marked NEW until you open
    its series, play it or download it, and each box's tab counts its
    new recordings. Nothing is new the first time you add a box. A
    filter shows only the new ones, and another only what you haven't
    downloaded yet.
  * See what you've already downloaded. A box recording that is already
    on your computer is marked "✓ On this computer", and its Download
    button is disabled.
  * Delete recordings, with Undo. Deleting a box recording moves it to
    the box's own Deleted list; deleting one on your computer moves it
    to the Recycle Bin or the Trash. Either way, Undo brings it back.
    Delete all, on a series' page, deletes every episode after asking
    first.
  * The Activity list, at the top right, shows every download and export
    with its progress, its place in the queue, and how it ended. Cancel
    from there, play a finished download, or open the folder an export
    went to. Jobs stay listed until you clear them, so a message about
    a download that finished while you were watching something is no
    longer lost.
  * Exports queue up, like downloads: start several and they run one
    after another, alongside any downloads.
  * Quitting while downloads or exports are running or waiting asks
    first.
  * A Settings screen for the recordings folder, the export folder (with
    Reset to default), the export video and audio choices, and Show ATSC
    3.0 recordings.
  * A Help screen with the keyboard shortcuts, the User Guide and About.
    F1 opens it. Over a playing video, F1 still shows the shortcuts on
    top of the video.
  * Ctrl+F (Command-F on a Mac) jumps to the search box from anywhere.
  * The Remote screen lists your boxes and opens the remote control on
    the one you pick. Picking a different box closes the open remote and
    starts it on the new one.
  * A new app icon: the zap mark, without the white square.

Changed:
  * You no longer have to choose a recordings folder when zApp first
    starts. You can watch your boxes without one; the first time you
    download a recording, zApp asks where to keep it, starting at a
    ZapperBox Recordings folder in Videos (Windows) or Movies (Mac).
  * The menus have moved into the window. Show ATSC-3 and the Export
    menu are in Settings; Disconnect from ZapperBox is in the top bar,
    beside the name of the box you are streaming from; the remote
    control is the Remote item in the side rail.
  * Windows: there is no menu bar. Its items (Open, User Guide, About
    and Exit) are in the ⋯ button at the top right, and their keyboard
    shortcuts still work. The title bar takes the window's dark colours
    on Windows 11. macOS keeps its menu bar, with File and Help.
  * zRemote 1.1.1, the remote control bundled with zApp, opens directly
    on the box zApp asks for.
  * Box posters no longer make the box log "Unhandled state 282" errors.
    zApp used to send several poster requests at once on one connection,
    which the box doesn't accept; it now sends one at a time.

Known issues:
  * Mac: zApp is built for both Apple Silicon and Intel Macs, but has
    not yet been tested on an Intel Mac.

3.1.1
---------

Changed:
  * Exports now go to a ZapperBox Exports folder inside your Videos
    (Windows) or Movies (Mac) folder, created the first time you export,
    instead of straight into Videos or Movies. If you chose your own
    export folder, zApp keeps using it.
  * If the export folder you chose can't be found — a USB drive that
    isn't plugged in, say — zApp exports to the ZapperBox Exports folder
    instead and tells you so, rather than stopping. Your choice is kept,
    and used again once the folder is back.
  * The messages when an export starts and when it finishes now say
    which folder the file is going to.

Fixed:
  * A recording that a ZapperBox was still recording could be downloaded,
    giving you only the part recorded so far. Its Download button is now
    disabled until the recording ends, and pointing at it says so; click
    Refresh after it ends to enable it.
  * After searching and playing a recording you had watched before, the
    keyboard stopped working over the video — the space bar, arrow keys
    and M did nothing, and typing went to the hidden search box. They
    now work as soon as the recording starts. Affected both the local
    library and a ZapperBox's recordings.
  * After searching and then clearing the search box, clicking Refresh
    scrolled the list to a recording that matched the old search. The
    list now stays at the top.
  * Mac: choosing a folder left an empty window titled "Offscreen" on
    the screen after the folder window closed. It no longer appears, and
    the folder window now opens over zApp instead of in the corner of
    the screen.

3.1.0
---------

New:
  * Going back to a list now pauses the video. Returning to the local
    library, the ZapperBox device list or a box's recordings — with the
    back arrow, Esc or the Library menu — used to leave the recording
    playing and talking away behind the list. Playback stays paused when
    you go back to the video; press Play, or the space bar, to carry on.
  * Search a ZapperBox's recordings. The list of recordings on a box now
    has the same search box as your local library, filtering as you type
    on the program name and the episode title. A box's whole list is
    already on your computer by the time you see it, so searching is
    instant and does not go back to the box. Picking a different box
    starts with an empty search.
  * Ctrl+Q quits on Windows, as it does in most Windows applications.
    File > Exit shows the shortcut, and Alt+F4 still works as before.
    (On a Mac, Command-Q already did this.)

Changed:
  * The playback keys — space bar, arrow keys and M — now do nothing
    while a list is covering the video, since they would be acting on a
    picture you cannot see. They already behaved this way while you were
    typing in the search box. Esc, F and the menu shortcuts are
    unaffected.
  * The export button in the local library has an icon of its own: a film
    frame marked MP4, in place of the plain film icon, which gave no hint
    of what the button produced. The button itself is unchanged.

Fixed:
  * A recording on a ZapperBox that you had already watched to the end
    would offer to resume at the very end — "Resume from 1:00:57" on a
    recording 1:00:57 long — instead of starting again. zApp now
    recognises a finished recording and starts it from the beginning,
    and clears the saved position on the box when a recording really
    does play to the end. This also covers recordings you watched to the
    end on the TV rather than in zApp. Local recordings were never
    affected.
  * When a recording on a ZapperBox played through to its end, zApp
    dropped back to your local library. It now returns to that box's
    list of recordings, where you started from.

3.0.0
---------

New:
  * Export a recording to a standard MP4 file. A recording on disk is a
    folder of stream data that only zApp and VLC can open; exporting
    turns one into a single .mp4 that plays anywhere — media servers,
    phones, tablets, video editors. Each row in the local library gets
    an export button, with a progress bar and a cancel while it runs.
    Covers recordings in the local library; recordings still on a
    ZapperBox have to be downloaded first.
  * ATSC-3 recordings are exported differently: their HEVC video and
    Dolby AC-4 soundtracks are copied into the .mp4 exactly as
    broadcast, with no re-encoding, so an export takes seconds rather
    than minutes and loses no quality. The Export menu's codec choices
    apply to ATSC-1 recordings only. Be aware that relatively few
    players can decode AC-4 audio, so check that yours does before
    relying on an export. Closed captions are not yet included in
    ATSC-3 exports.
  * A new Export menu on the menu bar, between Library and Help, holds
    the settings. Choose H.264 (the default, and the one that plays
    everywhere) or HEVC (roughly half the file size, and slower to
    produce). Keep the original Dolby AC-3 soundtrack, or convert it to
    AAC for players and browsers that will not play AC-3. Pick the
    folder exports are saved to — the menu shows the current one, so
    there is no hunting for where a file went.
  * Exported files are named the way media servers expect, taken from
    the recording's own guide data: "Show Name - s04e08 - Episode
    Title.mp4" for a series episode, "Movie Name (1991).mp4" for a
    film, and a dated form for daily programmes that carry no episode
    number. Both soundtracks of a dual-audio recording are carried
    across, as are the closed captions.
  * The info panel now shows when a programme was first shown, under
    the date it was recorded — "Originally aired" for a series episode,
    "Released" for a film. Shown for recordings on a ZapperBox as well
    as local ones, and omitted when the guide data does not carry it.
  * Queue up downloads from a ZapperBox. Starting a download no longer
    locks the other buttons: click download on a second recording and it
    joins a queue, starting automatically when the one before it
    finishes. Queued recordings show their place in line, and can be
    taken back out of the queue if you change your mind. Cancelling the
    download that is running moves straight on to the next one rather
    than abandoning the rest, so you can queue up an evening's viewing
    and leave it to work through them.
  * Hold Left or Right on the Remote Control to rewind or fast-forward.
    A tap still moves through menus as before; holding starts a smooth
    scan and letting go stops it. Works with the mouse and with the
    keyboard arrow keys. Previously a held key sent a rapid stream of
    single presses, which the box turned into a series of jerky
    individual jumps.
  * License text for the bundled ffmpeg (GPL v2) ships under
    third-party/, alongside the license texts already there, together
    with a written offer for the source code of every open-source
    component zApp includes.

Fixed:
  * The Remote Control now finds ZapperBoxes reliably on machines with
    more than one network connection. It could come up empty while zApp
    itself found the same box — most visibly with a VPN running, or
    when the box was reached through a second network adapter. zApp's
    own device discovery already had this fix; the remote did not.
  * macOS: browsing a ZapperBox's recordings failed on macOS 15 and
    later with "Host unreachable", and Remote Control key presses could
    go unanswered. zApp and the Remote Control now ask for permission to
    use your local network the first time they need it; choose Allow.
    If you chose Don't Allow, turn it back on in System Settings >
    Privacy & Security > Local Network.

2.0.0
---------

New:
  * Recording length in the local library list, shown alongside the
    season/episode and channel. The network library already showed this.
  * Built-in remote control. The Library menu's new Remote Control item
    opens an on-screen ZapperBox remote in its own window — the same
    buttons as the physical remote, sent to the box over your network.
    Useful when the real remote is out of reach, or for driving the box
    while you are working at the computer. Keyboard shortcuts work too,
    and the matching on-screen key lights up as you press them.
  * The remote opens already pointed at the ZapperBox you are browsing,
    so there is nothing to set up. If you have not picked a box yet it
    asks you to choose one, and it remembers that choice for next time.
    It runs alongside zApp rather than inside it, so playback carries on
    while you use it, and it stays open if you close zApp.
  * Aspect-ratio control. A new Aspect Ratio setting (Auto / 16:9 / 4:3)
    in the settings panel lets you override the picture shape when a
    recording is detected wrong.
  * Network streaming from ZapperBox devices. zApp can now discover
    ZapperBox devices on the local network and stream their DVR
    recordings directly — no need to copy recordings to a local folder
    first. Use the Library menu to browse discovered devices, pick a
    box, and watch its recordings with resume support. The existing
    local-folder library continues to work alongside the network mode.
  * Details for network recordings. The info button (in the recordings
    list and on the playback toolbar) shows the same show/episode
    details and poster art for network recordings as for local ones.
  * Download recordings for offline viewing. Each network recording now
    has a download button that copies it from the ZapperBox into your
    local library folder, with a progress bar and cancel. Once
    downloaded it plays from the local library with no network
    connection — including both audio tracks on dual-audio recordings.

Fixed:
  * Recording length now reflects what was actually recorded rather than
    the scheduled program runtime — a show cut short after five minutes
    no longer reads as a full hour. Applies to both libraries.
  * File > Show ATSC-3 now applies to network libraries as well as the
    local one, so the setting means the same thing wherever you are
    browsing.
  * Errors reported by a ZapperBox now read as plain descriptions
    instead of internal codes — "No free tuner is available to share"
    rather than NO_TUNER_AVAILABLE.
  * The ZapperBox Devices list identifies each box by tuner count (Mini,
    Single, Dual or Quad Tuner) instead of its model string, which does
    not indicate how many tuners a box has.
  * The bundled Remote Control names the box it is controlling instead
    of showing its IP address, and lists boxes by tuner class too.
  * Some 16:9 recordings played pillarboxed and horizontally squished.
    These recordings store a non-square pixel shape that zApp wasn't
    accounting for; the correct 16:9 picture is now detected
    automatically a moment after playback starts. If a recording is
    still wrong, use the new Aspect Ratio setting to force it.
  * More reliable ZapperBox discovery on machines with more than one
    network connection (e.g. Wi-Fi plus a VPN, or virtual adapters from
    WSL/Hyper-V). Refresh now probes every network interface, so a box
    on the real LAN is found regardless of which connection Windows
    would otherwise have picked.

1.2.0
-----

Fixed:
  * Improved HLS playlist generation. Audio and video segment duration
    is now calculated with greater accuracy. This will improve seek
    performance and reduce likelyhood of a seek jumping unpredicably
    forwards or backwards.

1.1.3
-----

New:
  * Universal macOS build (Apple Silicon + Intel). The macOS app is now
    a universal binary — a single .app (and .dmg) that runs natively on
    both Apple Silicon and Intel Macs (macOS 13 Ventura or later),
    rather than Apple Silicon only.

Fixed:
  * macOS app could report "zApp is damaged and can't be opened" when
    opened from a downloaded copy. The app was not actually damaged —
    its internal code-signing seal was left stale by the build, which
    macOS Gatekeeper reports with that misleading message. The build
    now re-seals the app correctly. (Downloaded copies of an unsigned
    build can still prompt Gatekeeper until the app is signed +
    notarized; a full no-prompt fix ships with code signing.)

(Features and fixes accumulate here as they land on the master branch.
This section ships in builds reporting version 1.1.3; once a 1.1.3
release is cut, the heading is finalized and a fresh "(in development)"
section opens beneath it for the next cycle.)

1.1.2
-----

New:
  * Windows installer (Inno Setup). In addition to the existing
    zApp.zip, builds now produce zApp-Setup-<version>.exe — a proper
    installer that drops the app into Program Files, adds a Start
    Menu shortcut, and registers an entry under Add/Remove Programs.
    The zip is still produced for users who prefer a portable install.

1.1.1
-----

New:
  * Resume playback from saved position. Picking a recording you've
    watched before now offers Resume / Start Over / Cancel; resume
    jumps directly to the saved point with no visible transition
    through the start of the recording. Position writes back to the
    recording's metadata every ~10 seconds while playing, and resets
    automatically at end-of-stream.
  * Per-recording poster image in the Details popup, shown in the
    upper right alongside the metadata. Recordings without a poster
    image collapse the slot cleanly.
  * Material Symbols icon set, bundled with the app. Replaces the
    Windows-only Segoe Fluent Icons system font; icons now render
    identically regardless of which Windows version the app is
    running on, and the swap is the cross-platform foundation for
    the planned macOS port.
  * Third-party license texts shipped alongside the .exe (under
    third-party/), covering Material Symbols (Apache 2.0), libvlc
    (LGPL 2.1), the VLC plugins (GPL 2), and Qt (LGPL v3 / GPL v3).

Fixed:
  * Rapid arrow-key seeks now compound correctly: pressing Left four
    times skips back the full ~20 seconds. Previously could land at
    -5 seconds, get stuck, or skip the wrong direction depending on
    the timing of libvlc's internal seek transitions.
  * Controls bar pops back to visibility on every keyboard-driven
    playback action (arrows, Space, M, F, volume keys). Previously
    stayed hidden during keyboard seeks because Qt's shortcut
    dispatch path bypassed the auto-hide activity feed.

1.1.0
-----

First officially released build of zApp.

