From 472df9015e2984c8ba02bec9177869b7890a5b86 Mon Sep 17 00:00:00 2001 From: Marouane-elfadli Date: Thu, 29 Oct 2026 15:08:27 +0100 Subject: [PATCH 1/5] Add .lst as text and .bik (Bink Video) as video Added 'lst' extension to plain text formats and included 'bik' format for video. --- src/Filee.Core/Formats/FormatRegistry.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Filee.Core/Formats/FormatRegistry.cs b/src/Filee.Core/Formats/FormatRegistry.cs index 93fcdea5..37cd7592 100644 --- a/src/Filee.Core/Formats/FormatRegistry.cs +++ b/src/Filee.Core/Formats/FormatRegistry.cs @@ -143,7 +143,7 @@ public static class FormatRegistry // Text logs, source/proxy scripts, style sheets and settings files are read as plain text, never executed (issues // #273, #284, #254, #388, #368, #607, #536, #630, #661, #660). new("txt", "TXT", FormatCategory.Text, - ["txt", "log", "py", "pac", "bat", "cmd", "command", "lua", "css", "ps1", "sql", "ahk", "ini", "rsc"]), + ["txt", "log", "py", "pac", "bat", "cmd", "command", "lua", "css", "ps1", "sql", "ahk", "ini", "rsc", "lst"]), new("md", "Markdown", FormatCategory.Text, ["md", "markdown"]), new("html", "HTML", FormatCategory.Text, ["html", "htm", "xhtml"]), // A web page saved with its pictures in one MIME file (Chrome, Edge, Word); read as the page it holds. @@ -233,6 +233,8 @@ public static class FormatRegistry // Dahua and similar DVR / NVR recordings (#594): FFmpeg's dhav demuxer reads them (H.264 / H.265 video, often // with G.711 or AAC sound). new("dav", "DAV", FormatCategory.Video, ["dav"], Writable: false), + // Bink Video, the game cutscene format of RAD Game Tools (#751): FFmpeg's bink demuxer reads it. Never a target. + new("bik", "BIK", FormatCategory.Video, ["bik"], Writable: false), // Raw H.265 / H.264 streams with no container, as security cameras and VMS software export them (issue #301). new("h265", "H.265", FormatCategory.Video, ["h265", "265", "hevc"], Writable: false), new("h264", "H.264", FormatCategory.Video, ["h264", "264"], Writable: false), From 1bfb5bdd1c77b8f1bd87fa70687054b5634da54f Mon Sep 17 00:00:00 2001 From: Marouane-elfadli Date: Thu, 29 Oct 2026 15:31:33 +0100 Subject: [PATCH 2/5] Add .lst and .bik format support Copier From 27583ecf467eed4e9155730a1a9d585bb1dc6ef1 Mon Sep 17 00:00:00 2001 From: Marouane-elfadli Date: Thu, 29 Oct 2026 15:32:40 +0100 Subject: [PATCH 3/5] Update settings schema and migrations --- src/Filee.Core/Settings/AppSettings.cs | 2 +- src/Filee.Core/Settings/UserDataStore.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Filee.Core/Settings/AppSettings.cs b/src/Filee.Core/Settings/AppSettings.cs index 08f12f75..b173a92f 100644 --- a/src/Filee.Core/Settings/AppSettings.cs +++ b/src/Filee.Core/Settings/AppSettings.cs @@ -123,7 +123,7 @@ public static bool IsFlipKeyAllowed(string key, IEnumerable gest public sealed class AppSettings { /// Current schema version. Increase when the format changes and add a migration. - public const int CurrentSchemaVersion = 55; + public const int CurrentSchemaVersion = 56; public int SchemaVersion { get; set; } = CurrentSchemaVersion; diff --git a/src/Filee.Core/Settings/UserDataStore.cs b/src/Filee.Core/Settings/UserDataStore.cs index 1e16813f..319d4c71 100644 --- a/src/Filee.Core/Settings/UserDataStore.cs +++ b/src/Filee.Core/Settings/UserDataStore.cs @@ -934,6 +934,9 @@ public static bool ApplyToLibrary(int from, List presets, List Date: Thu, 29 Oct 2026 15:34:08 +0100 Subject: [PATCH 4/5] Add tests for LST and Bink formats --- tests/Filee.Core.Tests/BikFormatTests.cs | 35 +++++++++++++++++++++++ tests/Filee.Core.Tests/ScriptTextTests.cs | 1 + 2 files changed, 36 insertions(+) create mode 100644 tests/Filee.Core.Tests/BikFormatTests.cs diff --git a/tests/Filee.Core.Tests/BikFormatTests.cs b/tests/Filee.Core.Tests/BikFormatTests.cs new file mode 100644 index 00000000..050a5a3c --- /dev/null +++ b/tests/Filee.Core.Tests/BikFormatTests.cs @@ -0,0 +1,35 @@ +// Bink Video (.bik, #751): a read-only video source on the video donut, learned by existing libraries. + +using Filee.Core.Formats; +using Filee.Core.Presets; +using Filee.Core.Profiles; +using Filee.Core.Settings; + +namespace Filee.Core.Tests; + +public class BikFormatTests +{ + [Fact] + public void Bik_is_a_video_filee_reads_but_never_writes() + { + var bik = FormatRegistry.Detect("intro.BIK"); + Assert.NotNull(bik); + Assert.Equal(("bik", FormatCategory.Video, false), (bik.Id, bik.Category, bik.Writable)); + Assert.Equal("video", ProfileSelector.Select(BuiltInData.CreateProfiles(), ["intro.bik"])?.Id); + } + + [Fact] + public void Version_55_libraries_learn_bik_and_lst_once() + { + var presets = BuiltInData.CreatePresets(); + var profiles = BuiltInData.CreateProfiles(); + profiles.Single(p => p.Id == "video").Extensions.Remove("bik"); + profiles.Single(p => p.Id == "text").Extensions.Remove("lst"); + + Assert.True(SettingsMigrations.ApplyToLibrary(55, presets, profiles)); + + Assert.Contains("bik", profiles.Single(p => p.Id == "video").Extensions); + Assert.Contains("lst", profiles.Single(p => p.Id == "text").Extensions); + Assert.False(SettingsMigrations.ApplyToLibrary(55, presets, profiles)); + } +} diff --git a/tests/Filee.Core.Tests/ScriptTextTests.cs b/tests/Filee.Core.Tests/ScriptTextTests.cs index 7f730314..e7523fc3 100644 --- a/tests/Filee.Core.Tests/ScriptTextTests.cs +++ b/tests/Filee.Core.Tests/ScriptTextTests.cs @@ -19,6 +19,7 @@ public class ScriptTextTests [InlineData("router-export.rsc")] [InlineData("install.cmd")] [InlineData("query.sql")] + [InlineData("files.lst")] public void Scripts_and_style_sheets_are_text(string name) => Assert.Equal("txt", FormatRegistry.Detect(name)?.Id); [Fact] From 960e645d6b93f4528ec564b7549a17a0d7f43799 Mon Sep 17 00:00:00 2001 From: KnifeLemon Date: Thu, 29 Oct 2026 23:40:08 +0900 Subject: [PATCH 5/5] Keep this PR to .bik; README count 270 and an ENGINES.md note - .lst comes out: #767 asks for .lst -> MP4, which a text format can't give, so it waits for the reporter to say what the file holds. - The settings step v56 learns only bik; its test follows. - README format count 269 -> 270 in all 15 READMEs. - docs/ENGINES.md: Bink is read by FFmpeg's bink demuxer, never written. Co-Authored-By: Claude Opus 5.5 --- README.ar.md | 2 +- README.es.md | 2 +- README.fr.md | 2 +- README.hi.md | 2 +- README.ja.md | 2 +- README.ko.md | 2 +- README.md | 2 +- README.pl.md | 2 +- README.pt-BR.md | 2 +- README.pt-PT.md | 2 +- README.ru.md | 2 +- README.th.md | 2 +- README.tr.md | 2 +- README.zh-CN.md | 2 +- README.zh-TW.md | 2 +- docs/ENGINES.md | 2 ++ src/Filee.Core/Formats/FormatRegistry.cs | 2 +- src/Filee.Core/Settings/UserDataStore.cs | 4 ++-- tests/Filee.Core.Tests/BikFormatTests.cs | 4 +--- tests/Filee.Core.Tests/ScriptTextTests.cs | 1 - 20 files changed, 21 insertions(+), 22 deletions(-) diff --git a/README.ar.md b/README.ar.md index 88dcf132..c5fc7cce 100644 --- a/README.ar.md +++ b/README.ar.md @@ -60,7 +60,7 @@ تظهر الصيغ حيث أنت، ولا يظهر منها إلا ما يناسب الملفات التي تسحبها. - 269 صيغة دون برامج أخرى
+ 270 صيغة دون برامج أخرى
الصور وPDF وWord وExcel وPowerPoint وHWP والكتب الإلكترونية والأرشيفات والخطوط وCAD والنماذج ثلاثية الأبعاد والبيانات الجغرافية، كلها تعمل دون Office أو Hancom Office أو LibreOffice. diff --git a/README.es.md b/README.es.md index b8782d01..3ccfb5db 100644 --- a/README.es.md +++ b/README.es.md @@ -58,7 +58,7 @@ Los formatos aparecen donde ya estás, y solo los que tienen sentido para los archivos que arrastras. - 269 formatos, sin otros programas
+ 270 formatos, sin otros programas
Imágenes, PDF, Word, Excel, PowerPoint, HWP, libros electrónicos, archivos comprimidos, tipografías, CAD, modelos 3D y datos geoespaciales funcionan sin Office, Hancom Office ni LibreOffice. diff --git a/README.fr.md b/README.fr.md index 417f4481..ac74f157 100644 --- a/README.fr.md +++ b/README.fr.md @@ -58,7 +58,7 @@ Les formats apparaissent là où vous êtes déjà, et seulement ceux qui ont un sens pour les fichiers que vous faites glisser. - 269 formats, sans autre logiciel
+ 270 formats, sans autre logiciel
Images, PDF, Word, Excel, PowerPoint, HWP, livres numériques, archives, polices, CAO, modèles 3D et données géospatiales fonctionnent sans Office, Hancom Office ni LibreOffice. diff --git a/README.hi.md b/README.hi.md index 8ecd3642..0a94c73c 100644 --- a/README.hi.md +++ b/README.hi.md @@ -58,7 +58,7 @@ फ़ॉर्मैट वहीं दिखते हैं जहाँ आप पहले से हैं, और सिर्फ़ वही जो आपकी खींची जा रही फ़ाइलों के लिए सही हों। - 269 फ़ॉर्मैट, कोई और सॉफ़्टवेयर नहीं
+ 270 फ़ॉर्मैट, कोई और सॉफ़्टवेयर नहीं
इमेज, PDF, Word, Excel, PowerPoint, HWP, ई-बुक, आर्काइव, फ़ॉन्ट, CAD, 3D मॉडल और भू-स्थानिक डेटा Office, Hancom Office या LibreOffice के बिना काम करते हैं। diff --git a/README.ja.md b/README.ja.md index 8fda0077..00192cf6 100644 --- a/README.ja.md +++ b/README.ja.md @@ -58,7 +58,7 @@ いま作業している場所に、ドラッグ中のファイルに合う形式だけが表示されます。 - 269形式、ほかのソフトは不要
+ 270形式、ほかのソフトは不要
画像、PDF、Word、Excel、PowerPoint、HWP、電子書籍、アーカイブ、フォント、CAD、3Dモデル、地理空間データを、Office、Hancom Office、LibreOfficeなしで変換できます。 diff --git a/README.ko.md b/README.ko.md index a56f3214..8d95f48d 100644 --- a/README.ko.md +++ b/README.ko.md @@ -59,7 +59,7 @@ 끌고 있는 파일에 맞는 형식만 지금 있는 자리에 나타나요. - 269가지 형식, 다른 프로그램 없이
+ 270가지 형식, 다른 프로그램 없이
이미지, PDF, 워드, 엑셀, 파워포인트, HWP, 전자책, 압축 파일, 글꼴, CAD, 3D 모델, 지리 정보 데이터를 오피스·한컴오피스·LibreOffice 없이 변환해요. diff --git a/README.md b/README.md index 100b06ec..91dbc2bc 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The formats appear where you already are, only the ones that make sense for the files you drag. - 269 formats, no other software
+ 270 formats, no other software
Images, PDF, Word, Excel, PowerPoint, HWP, e-books, archives, fonts, CAD, 3D models and geospatial data work without Office, Hancom Office or LibreOffice. diff --git a/README.pl.md b/README.pl.md index 33b34d0c..bffb58ca 100644 --- a/README.pl.md +++ b/README.pl.md @@ -58,7 +58,7 @@ Formaty pojawiają się tam, gdzie już jesteś, i tylko te, które pasują do przeciąganych plików. - 269 formatów bez dodatkowych programów
+ 270 formatów bez dodatkowych programów
Obrazy, PDF, Word, Excel, PowerPoint, HWP, e-booki, archiwa, czcionki, CAD, modele 3D i dane geoprzestrzenne działają bez pakietu Office, Hancom Office i LibreOffice. diff --git a/README.pt-BR.md b/README.pt-BR.md index 063f0694..df78be71 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -58,7 +58,7 @@ Os formatos aparecem onde você já está, só os que fazem sentido para os arquivos que você arrasta. - 269 formatos, sem outro programa
+ 270 formatos, sem outro programa
Imagens, PDF, Word, Excel, PowerPoint, HWP, e-books, arquivos compactados, fontes, CAD, modelos 3D e dados geoespaciais funcionam sem Office, Hancom Office ou LibreOffice. diff --git a/README.pt-PT.md b/README.pt-PT.md index e1b9b661..c6cf9dfd 100644 --- a/README.pt-PT.md +++ b/README.pt-PT.md @@ -58,7 +58,7 @@ Os formatos aparecem onde estás, apenas os que fazem sentido para os ficheiros que arrastas. - 269 formatos, sem outro software
+ 270 formatos, sem outro software
Imagens, PDF, Word, Excel, PowerPoint, HWP, livros digitais, arquivos, tipos de letra, CAD, modelos 3D e dados geoespaciais funcionam sem Office, Hancom Office ou LibreOffice. diff --git a/README.ru.md b/README.ru.md index 0c168ac4..bba93395 100644 --- a/README.ru.md +++ b/README.ru.md @@ -58,7 +58,7 @@ Форматы появляются там, где вы уже работаете, и только те, что подходят перетаскиваемым файлам. - 269 форматов без лишних программ
+ 270 форматов без лишних программ
Изображения, PDF, Word, Excel, PowerPoint, HWP, электронные книги, архивы, шрифты, чертежи CAD, 3D-модели и геоданные работают без Office, Hancom Office и LibreOffice. diff --git a/README.th.md b/README.th.md index 47b17720..0ea89fb9 100644 --- a/README.th.md +++ b/README.th.md @@ -58,7 +58,7 @@ ฟอร์แมตที่เหมาะสมจะแสดงขึ้นตรงจุดที่คุณทำงานอยู่ โดยแสดงเฉพาะฟอร์แมตที่ใช้ได้กับไฟล์ที่คุณลากเท่านั้น - 269 ฟอร์แมต โดยไม่ต้องลงโปรแกรมอื่นเพิ่ม
+ 270 ฟอร์แมต โดยไม่ต้องลงโปรแกรมอื่นเพิ่ม
รูปภาพ, PDF, Word, Excel, PowerPoint, HWP, อีบุ๊ก, ไฟล์บีบอัด, ฟอนต์, CAD, โมเดล 3D และข้อมูลเชิงพื้นที่ ทำงานได้โดยไม่ต้องมี Microsoft Office, Hancom Office หรือ LibreOffice diff --git a/README.tr.md b/README.tr.md index 243686e8..4291b872 100644 --- a/README.tr.md +++ b/README.tr.md @@ -58,7 +58,7 @@ Formatlar zaten bulunduğunuz yerde görünür; yalnızca sürüklediğiniz dosyalara uygun olanlar listelenir. - 269 format, başka yazılım gerekmez
+ 270 format, başka yazılım gerekmez
Görseller, PDF, Word, Excel, PowerPoint, HWP, e-kitaplar, arşivler, yazı tipleri, CAD, 3B modeller ve coğrafi veriler; Office, Hancom Office veya LibreOffice olmadan çalışır. diff --git a/README.zh-CN.md b/README.zh-CN.md index 7dcdae8e..df8b0f89 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -58,7 +58,7 @@ 只显示适合当前拖动文件的格式,就在你所在的位置。 - 269 种格式,无需其他软件
+ 270 种格式,无需其他软件
图片、PDF、Word、Excel、PowerPoint、HWP、电子书、压缩包、字体、CAD、3D 模型和地理信息数据,无需 Office、韩文办公软件或 LibreOffice。 diff --git a/README.zh-TW.md b/README.zh-TW.md index 66289eb8..deef06c3 100644 --- a/README.zh-TW.md +++ b/README.zh-TW.md @@ -58,7 +58,7 @@ 只顯示適合當前拖曳檔案的格式,就在你所在的位置。 - 269 種格式,無需其他軟體
+ 270 種格式,無需其他軟體
圖片、PDF、Word、Excel、PowerPoint、HWP、電子書、壓縮檔、字型、CAD、3D 模型和地理資訊資料,無需 Office、韓文文書軟體或 LibreOffice。 diff --git a/docs/ENGINES.md b/docs/ENGINES.md index 29ef5087..61362f05 100644 --- a/docs/ENGINES.md +++ b/docs/ENGINES.md @@ -1477,6 +1477,8 @@ Dahua DVR / NVR recordings (`.dav`, read only, #594) are read by FFmpeg's `dhav` the target and preset allow it (`CanCopyVideo`), like any other container's; G.711 sound is encoded for targets that can't hold it. The chunks carry the camera's wall-clock time, so FFmpeg reports the recording date as the start time; the output starts at zero. +Bink videos (`.bik`, read only, #751), the cutscene format of many games, are read by FFmpeg's `bink` demuxer and +decoder and go to every video and audio target. FFmpeg has no Bink encoder, so nothing writes `.bik`. A Video CD's `MPEGAV/AVSEQ01.DAT` (MPEG-1 in a RIFF/CDXA wrapper) counts as MPEG: `.dat` is an extension of that format, and FFmpeg reads what the file holds, so a `.dat` with no video in it fails instead of making a file. diff --git a/src/Filee.Core/Formats/FormatRegistry.cs b/src/Filee.Core/Formats/FormatRegistry.cs index 37cd7592..e3ca5105 100644 --- a/src/Filee.Core/Formats/FormatRegistry.cs +++ b/src/Filee.Core/Formats/FormatRegistry.cs @@ -143,7 +143,7 @@ public static class FormatRegistry // Text logs, source/proxy scripts, style sheets and settings files are read as plain text, never executed (issues // #273, #284, #254, #388, #368, #607, #536, #630, #661, #660). new("txt", "TXT", FormatCategory.Text, - ["txt", "log", "py", "pac", "bat", "cmd", "command", "lua", "css", "ps1", "sql", "ahk", "ini", "rsc", "lst"]), + ["txt", "log", "py", "pac", "bat", "cmd", "command", "lua", "css", "ps1", "sql", "ahk", "ini", "rsc"]), new("md", "Markdown", FormatCategory.Text, ["md", "markdown"]), new("html", "HTML", FormatCategory.Text, ["html", "htm", "xhtml"]), // A web page saved with its pictures in one MIME file (Chrome, Edge, Word); read as the page it holds. diff --git a/src/Filee.Core/Settings/UserDataStore.cs b/src/Filee.Core/Settings/UserDataStore.cs index 319d4c71..6e4a5d66 100644 --- a/src/Filee.Core/Settings/UserDataStore.cs +++ b/src/Filee.Core/Settings/UserDataStore.cs @@ -934,9 +934,9 @@ public static bool ApplyToLibrary(int from, List presets, List p.Id == "video").Extensions.Remove("bik"); - profiles.Single(p => p.Id == "text").Extensions.Remove("lst"); Assert.True(SettingsMigrations.ApplyToLibrary(55, presets, profiles)); Assert.Contains("bik", profiles.Single(p => p.Id == "video").Extensions); - Assert.Contains("lst", profiles.Single(p => p.Id == "text").Extensions); Assert.False(SettingsMigrations.ApplyToLibrary(55, presets, profiles)); } } diff --git a/tests/Filee.Core.Tests/ScriptTextTests.cs b/tests/Filee.Core.Tests/ScriptTextTests.cs index e7523fc3..7f730314 100644 --- a/tests/Filee.Core.Tests/ScriptTextTests.cs +++ b/tests/Filee.Core.Tests/ScriptTextTests.cs @@ -19,7 +19,6 @@ public class ScriptTextTests [InlineData("router-export.rsc")] [InlineData("install.cmd")] [InlineData("query.sql")] - [InlineData("files.lst")] public void Scripts_and_style_sheets_are_text(string name) => Assert.Equal("txt", FormatRegistry.Detect(name)?.Id); [Fact]