Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
402be66
chore: prepare 2.0 packaging, Explorer integration and ffprobe
WillTDA Aug 27, 2026
4b496da
feat(core): add the 2.0 conversion architecture
WillTDA Aug 27, 2026
bcdb2c9
feat: move the renderer behind a context-isolated bridge, add token l…
WillTDA Aug 27, 2026
0614e66
docs: capture the shared Electron house style
WillTDA Aug 27, 2026
8f5fbe1
feat: replace the queue list with a job card grid
WillTDA Aug 27, 2026
6f0ea00
fix: clearing a card's format reverts it to the unset state
WillTDA Aug 27, 2026
0ad7d36
fix: make every counted string in the UI agree with its number
WillTDA Aug 27, 2026
f7b70f7
feat: checkbox selection, and keep the simple path two clicks
WillTDA Aug 27, 2026
e4e16e5
fix: Escape closes Credits, and existing output prompts again
WillTDA Aug 28, 2026
06761f1
feat: New Job dialog for per-file encoding settings
WillTDA Aug 28, 2026
49fd421
refactor: drop "job" from the interface, move bulk edit into the sele…
WillTDA Aug 28, 2026
26b5d7e
fix: stop selects clipping their text, move presets out of advanced o…
WillTDA Aug 28, 2026
a66005f
feat: choose between manual settings and a pipeline, one or the other
WillTDA Aug 28, 2026
92df565
chore: 2.0.0-alpha.2
WillTDA Aug 28, 2026
4f1d06b
fix: seven defects from the first manual test pass
WillTDA Aug 28, 2026
6e23b36
chore: 2.0.0-alpha.3
WillTDA Aug 28, 2026
dc090ba
feat: a pipeline editor, reached from a navigation rail
WillTDA Aug 30, 2026
1b90ca8
chore: 2.0.0-alpha.4
WillTDA Aug 30, 2026
09eaca3
revert: remove pipelines, and raise the window minimum
WillTDA Aug 30, 2026
c20826f
chore: remove the orphaned preset channels and name-template token
WillTDA Aug 30, 2026
49dca08
fix: drag and drop, and hide the bulk actions until something is sele…
WillTDA Aug 30, 2026
68a6128
fix: make the cross-kind conversions the app already offers actually …
WillTDA Aug 30, 2026
ec9a756
feat: choose which frames a conversion writes, and show them
WillTDA Aug 30, 2026
340c76e
fix: name the reason a conversion failed, and the span it is covering
WillTDA Aug 31, 2026
c10bd67
chore: update dependencies, Electron 41 to 44
WillTDA Aug 31, 2026
77cdae9
docs: mark the manual checklist passed, drop the withdrawn section
WillTDA Sep 2, 2026
3bd5be8
fix: keep the queue honest while an output-exists prompt is open
WillTDA Sep 2, 2026
07c3e16
feat: say which files a folder ingest skipped, and why
WillTDA Sep 2, 2026
38f6fe8
feat: choose what a folder ingest picks up
WillTDA Sep 2, 2026
64448ca
fix: give mirrored output the source root it needs
WillTDA Sep 2, 2026
3e380e3
feat: work out how a set of clips can be joined
WillTDA Sep 2, 2026
9d6b923
feat: join clips into one file, from the rail
WillTDA Sep 2, 2026
956df65
fix: clear the four failures alpha.5's QA pass found
WillTDA Sep 8, 2026
dd5c487
fix: one press of Cancel All ends the batch, not one file
WillTDA Sep 11, 2026
0ce9b92
chore: keep test-media out of the installer, Electron 44.3
WillTDA Sep 11, 2026
e45934e
fix: hold the header and the rail still, and give Join the same front…
WillTDA Sep 11, 2026
c4c3384
chore: 2.0.0-beta.1
WillTDA Sep 11, 2026
5b68927
feat: show the first and last frames when trimming a video
WillTDA Sep 23, 2026
920d70f
fix: trim in whole seconds, with Shift for single frames
WillTDA Sep 23, 2026
632aa9b
feat: exact start and end times, and trim handles that never overlap
WillTDA Sep 23, 2026
a3b9320
Update Electron to v44.4.5
WillTDA Sep 23, 2026
b688e01
chore: 2.0.0-beta.2
WillTDA Sep 23, 2026
23f9b87
Take the house kit: tokens, theme, menu, rail, Settings and Credits
WillTDA Sep 30, 2026
929adc7
Give the Credits tab the app's name, not package.json's npm name
WillTDA Sep 30, 2026
37d8401
Take the house updater: Settings > Update, channels and automatic dow…
WillTDA Sep 30, 2026
fadf372
Take everything shared from the house kit, and do DFC's own pass
WillTDA Oct 1, 2026
bb9e69e
Name the kit by its package only, in two comments
WillTDA Oct 1, 2026
ed4719b
Pack ffmpeg and ffprobe per platform, for Linux too, and only once
WillTDA Oct 1, 2026
974dc65
Run the common-root test on Linux too, with each platform's own root
WillTDA Oct 1, 2026
b659b97
Name the Linux files for the app and version, and add a Linux section…
WillTDA Oct 1, 2026
f47816c
Give DFC's two prompts a detail line, in the kit's new prompt look
WillTDA Oct 1, 2026
a28e7a5
Record the Windows manual pass of 2026-10-01 in MANUAL-TESTING, with …
WillTDA Oct 1, 2026
111435b
Say skipped files as skipped, not cancelled, in the toast and the bar
WillTDA Oct 1, 2026
a925ff8
Time an animated GIF by its frames, so it can be trimmed and shows it…
WillTDA Oct 1, 2026
3ce75f3
Open the file picker where the last pick was made, kept between launches
WillTDA Oct 1, 2026
d07d5ea
Settings has no General tab: say Update and Credits in both manual-pa…
WillTDA Oct 1, 2026
3134014
Say in MANUAL-TESTING what was done about each thing the pass found, …
WillTDA Oct 1, 2026
35381ce
Tick the boxes Will ran before the next beta: Open with, drags, Escap…
WillTDA Oct 1, 2026
f89c5a7
chore: 2.0.0-beta.3
WillTDA Oct 1, 2026
2ab6dcc
Run the tests on Windows and Ubuntu for pushes and pull requests, and…
WillTDA Oct 1, 2026
bee60ed
Take @diamonddigitaldev/electron-kit 0.1.0-beta.1 from npm, pinned, a…
WillTDA Oct 1, 2026
8aa9df3
Approve the install scripts so npm 12.1 runs them too, and fail CI if…
WillTDA Oct 1, 2026
07791e0
Merge pull request #4 from diamonddigitaldev/electron-kit
WillTDA Oct 2, 2026
f254dc6
Call it a desktop app everywhere, and give the README installation st…
WillTDA Oct 2, 2026
cc48c39
Merge pull request #5 from diamonddigitaldev/desktop-wording
WillTDA Oct 2, 2026
25e4241
chore: 2.0.0-beta.4, on electron-kit 0.1.0-beta.3
WillTDA Oct 2, 2026
a7d9cb3
Merge pull request #6 from diamonddigitaldev/kit-0.1.0-beta.3
WillTDA Oct 2, 2026
2f6cc0a
Fix three card bugs: Cancel flicker, blank last frame, options on a c…
WillTDA Oct 5, 2026
e9a0b23
Merge pull request #7 from diamonddigitaldev/card-fixes
WillTDA Oct 5, 2026
8b93068
Build with the kit's config(): the asking installer, Open With on Lin…
WillTDA Oct 6, 2026
851b7aa
chore: 2.0.0-beta.6, on electron-kit 0.1.0-beta.8
WillTDA Oct 6, 2026
ec1c5ff
Merge pull request #8 from diamonddigitaldev/kit-0.1.0-beta.8
WillTDA Oct 6, 2026
99c4a31
Restart Now's busy question is cleared however a conversion or a join…
WillTDA Oct 6, 2026
0096351
Manual testing: 2.0.0-beta.6 passed
WillTDA Oct 7, 2026
dc977ec
Manual testing: say how beta.6 was signed off
WillTDA Oct 7, 2026
ef1dde5
A converted card locks until Convert Again, which runs it again
WillTDA Oct 15, 2026
e12fb21
Overwrite writes beside the file and swaps it in, so a failed run can…
WillTDA Oct 16, 2026
3e25cc3
Join trims each clip with the Advanced Options slider and its frames
WillTDA Oct 16, 2026
da86291
Manual testing: overwrite onto itself, and Join's trim
WillTDA Oct 16, 2026
459a2d0
chore: 2.0.0-beta.7; manual testing cleared as passed
WillTDA Oct 16, 2026
59d239a
Merge pull request #9 from diamonddigitaldev/busy-flags-finally
WillTDA Oct 16, 2026
ce886bb
Merge pull request #10 from diamonddigitaldev/convert-again
WillTDA Oct 16, 2026
dc35fc4
Join says "Joining XX%" under its bar, and locks its settings while i…
WillTDA Oct 16, 2026
b06c587
Manual testing: Join's progress text and its lock
WillTDA Oct 16, 2026
7e49afc
chore: 2.0.0-beta.8
WillTDA Oct 16, 2026
2e9b270
Merge pull request #11 from diamonddigitaldev/join-progress
WillTDA Oct 16, 2026
98c70d6
Join's clip list scrolls while a join runs
WillTDA Oct 23, 2026
946bd3b
Manual testing: Join's list scrolling while locked
WillTDA Oct 23, 2026
69a4f48
chore: 2.0.0-beta.9
WillTDA Oct 23, 2026
295bac4
Merge pull request #12 from diamonddigitaldev/join-scroll-fix
WillTDA Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
23 changes: 23 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Weekly, with patches and minors grouped into one pull request. Majors come
# one at a time, and are taken on evidence: the real app driven, not only the
# tests passing. The workflows' actions are kept current the same way.

version: 2
updates:
- package-ecosystem: npm
directory: "/"
target-branch: "2.0.0"
schedule:
interval: weekly
groups:
minor-and-patch:
update-types: [minor, patch]

- package-ecosystem: github-actions
directory: "/"
target-branch: "2.0.0"
schedule:
interval: weekly
groups:
actions:
update-types: [minor, patch]
61 changes: 61 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: CI

# The tests, on Windows and Ubuntu, for every push to a release branch and
# every pull request. They run under Node, with no window: the shared UI's own
# real-Electron and visual tests are @diamonddigitaldev/electron-kit's.

on:
push:
branches: [master, '2.0.0']
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
test:
name: Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest]
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false

- uses: actions/setup-node@v7
with:
node-version: 24
cache: npm
cache-dependency-path: package-lock.json

# npm 12, as on the development machine: it only runs the install scripts
# package.json allows (ffmpeg-static downloads its binary in one).
- name: Install npm 12
run: npm install -g npm@12

# Windows runners install global packages outside Node's own folder, and
# setup-node puts Node's folder, with its bundled npm, first on PATH.
- name: Put npm 12 first on PATH
if: runner.os == 'Windows'
shell: pwsh
run: npm prefix -g >> $env:GITHUB_PATH

- name: Install dependencies
run: |
npm --version
npm ci

# ffmpeg-static downloads FFmpeg in an install script, which npm only runs
# when package.json's allowScripts approves it. Without the binary, the
# tests that need it skip, and electron-builder leaves it out of the build
# without a word, so this fails instead.
- name: Check FFmpeg and FFprobe are there
run: node -e "for (const [name, file] of [['FFmpeg', require('ffmpeg-static')], ['FFprobe', require('ffprobe-static').path]]) { require('fs').accessSync(file); console.log(name + ':', file); }"

- name: Run the tests
run: npm test
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
node_modules/
dist/
package-lock.json
# Local test media and its conversion output. Generated by hand while testing;
# never part of the repo.
test-media/
27 changes: 23 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

![license](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)
![version](https://img.shields.io/badge/version-1.0.0-brightgreen?style=flat-square)
![platform](https://img.shields.io/badge/platform-Windows-lightgrey?style=flat-square)
![platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux-lightgrey?style=flat-square)

[![discord](https://img.shields.io/discord/667479986214666272?logo=discord&logoColor=white&style=flat-square)](https://diamonddigital.dev/discord)
[![buy me a coffee](https://img.shields.io/badge/-Buy%20Me%20a%20Coffee-ffdd00?logo=Buy%20Me%20A%20Coffee&logoColor=000000&style=flat-square)](https://www.buymeacoffee.com/willtda)
Expand All @@ -30,9 +30,28 @@

## Installation

1. Download the latest release from the [releases page](https://github.com/diamonddigitaldev/Diamond-File-Converter/releases).
2. Run the installer and follow the on-screen instructions.
3. Launch Diamond File Converter and start converting!
Download the files for your system from the [releases page](https://github.com/diamonddigitaldev/Diamond-File-Converter/releases). In the names below, `<version>` is the release's version, such as `2.0.0`.

### Windows

Download **Diamond-File-Converter-Setup-`<version>`.exe** and run it. It asks who it's for: only you (the default, with no administrator prompt) or everyone on the computer. If Diamond File Converter is already installed for everyone, as every version before 2.0.0-beta.6 was, that copy is updated instead. It then asks which file types to open with it, all ticked, and whether to add **Convert with Diamond File Converter** to the menu files and folders show when you right-click them.

> [!NOTE]
> You may get a Windows SmartScreen popup when trying to run the installer. This is normal as the installer is not signed.

### Linux

- **Debian, Ubuntu and derivatives:** download **Diamond-File-Converter-`<version>`.deb**, then run `sudo apt install ./Diamond-File-Converter-<version>.deb`. Diamond File Converter is then in your applications menu under Sound & Video.
- **Fedora, openSUSE and others using RPM:** download **Diamond-File-Converter-`<version>`.rpm** and install it with your package manager, such as `sudo dnf install ./Diamond-File-Converter-<version>.rpm`.
- **Anywhere else:** download **Diamond-File-Converter-`<version>`.AppImage**, make it executable with `chmod +x`, and run it.

Linux builds start with 2.0. With the `.deb` or `.rpm`, the app is in your file manager's "Open with" for the files it converts. Opening files from a terminal (`diamond-file-converter file.mp4`) works too.

### On every system

FFmpeg and FFprobe are bundled, so there is nothing else to install and nothing to add to your PATH. The `latest.yml`, `latest-linux.yml` and `.blockmap` files on each release are for the app's updater: you don't need to download them.

To go back to an earlier version, uninstall the app and install that version from the releases page.

## Usage

Expand Down
Loading
Loading