booru-viewer/installer.iss
pax 2fbf2f6472 0.2.0: mpv backend, popout viewer, preview toolbar, API retry, SearchState refactor
Video:
- Replace Qt Multimedia with mpv via python-mpv + OpenGL render API
- Hardware-accelerated decoding, frame-accurate seeking, proper EOF detection
- Translucent overlay controls in both preview and popout
- LC_NUMERIC=C for mpv locale compatibility

Popout viewer (renamed from slideshow):
- Floating toolbar + controls overlay with auto-hide (2s)
- Window auto-resizes to content aspect ratio on navigation
- Hyprland: hyprctl resizewindowpixel + keep_aspect_ratio prop
- Window geometry persisted to DB across sessions
- Smart F11 exit sizing (60% monitor, centered)

Preview toolbar:
- Bookmark, Save, BL Tag, BL Post, Popout buttons above preview
- Save opens folder picker menu, shows Save/Unsave state
- Blacklist actions have confirmation dialogs
- Per-tab button visibility (Library: Save + Popout only)
- Cross-tab state management with grid selection clearing

Search & pagination:
- SearchState dataclass replaces 8 scattered attrs + defensive getattr
- Media type filter dropdown (All/Animated/Video/GIF/Audio)
- API retry with backoff on 429/503/timeout
- Infinite scroll dedup fix (local seen set per backfill round)
- Prev/Next buttons hide at boundaries, "(end)" status indicator

Grid:
- Rubber band drag selection
- Saved/bookmarked dots update instantly across all tabs
- Library/bookmarks emit signals on file deletion for cross-tab sync

Settings & misc:
- Default site option
- Max thumbnail cache setting (500MB default)
- Source URLs clickable in info panel
- Long URLs truncated to prevent splitter blowout
- Bulk save no longer auto-bookmarks
2026-04-06 13:43:46 -05:00

65 lines
2.0 KiB
Plaintext

; booru-viewer Windows Installer
[Setup]
AppName=booru-viewer
AppVersion=0.2.0
AppPublisher=pax
AppPublisherURL=https://git.pax.moe/pax/booru-viewer
DefaultDirName={localappdata}\booru-viewer
DefaultGroupName=booru-viewer
OutputBaseFilename=booru-viewer-setup
OutputDir=dist
Compression=lzma2
SolidCompression=yes
SetupIconFile=icon.ico
UninstallDisplayIcon={app}\booru-viewer.exe
PrivilegesRequired=lowest
[Files]
Source: "dist\booru-viewer\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs
[Icons]
Name: "{group}\booru-viewer"; Filename: "{app}\booru-viewer.exe"
Name: "{autodesktop}\booru-viewer"; Filename: "{app}\booru-viewer.exe"; Tasks: desktopicon
[Tasks]
Name: "desktopicon"; Description: "Create desktop shortcut"; GroupDescription: "Additional shortcuts:"
[Run]
Filename: "{app}\booru-viewer.exe"; Description: "Launch booru-viewer"; Flags: nowait postinstall skipifsilent
[Code]
var
RemoveDataCheckbox: TNewCheckBox;
procedure InitializeUninstallProgressForm();
var
UninstallPage: TNewStaticText;
begin
RemoveDataCheckbox := TNewCheckBox.Create(UninstallProgressForm);
RemoveDataCheckbox.Parent := UninstallProgressForm;
RemoveDataCheckbox.Left := 10;
RemoveDataCheckbox.Top := UninstallProgressForm.ClientHeight - 50;
RemoveDataCheckbox.Width := UninstallProgressForm.ClientWidth - 20;
RemoveDataCheckbox.Height := 20;
RemoveDataCheckbox.Caption := 'REMOVE ALL USER DATA (BOOKMARKS, CACHE, LIBRARY — DATA LOSS)';
RemoveDataCheckbox.Font.Color := clRed;
RemoveDataCheckbox.Font.Style := [fsBold];
RemoveDataCheckbox.Checked := False;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
AppDataDir: String;
begin
if CurUninstallStep = usPostUninstall then
begin
if RemoveDataCheckbox.Checked then
begin
AppDataDir := ExpandConstant('{userappdata}\booru-viewer');
if DirExists(AppDataDir) then
DelTree(AppDataDir, True, True, True);
end;
end;
end;