fillercut 1.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fillercut-1.2.4/.github/workflows/release.yml +270 -0
- fillercut-1.2.4/.gitignore +44 -0
- fillercut-1.2.4/AGENTS.md +1761 -0
- fillercut-1.2.4/CHANGELOG.md +1193 -0
- fillercut-1.2.4/CLAUDE.md +1 -0
- fillercut-1.2.4/DESIGN.md +173 -0
- fillercut-1.2.4/KNOWN_ISSUES.md +1460 -0
- fillercut-1.2.4/LICENSE +21 -0
- fillercut-1.2.4/PKG-INFO +417 -0
- fillercut-1.2.4/README.md +371 -0
- fillercut-1.2.4/README.tr.md +368 -0
- fillercut-1.2.4/docs/assets/smartscreen.png +0 -0
- fillercut-1.2.4/docs/images/ui-isleniyor.png +0 -0
- fillercut-1.2.4/docs/images/ui-review.png +0 -0
- fillercut-1.2.4/docs/images/ui-tamamlandi.png +0 -0
- fillercut-1.2.4/docs/images/ui-video-sec.png +0 -0
- fillercut-1.2.4/experiments/amf_usage/README.md +81 -0
- fillercut-1.2.4/experiments/amf_usage/izgara.py +409 -0
- fillercut-1.2.4/experiments/amf_usage/sonuclar/izgara.md +48 -0
- fillercut-1.2.4/experiments/amf_usage/sonuclar/kosular.json +1156 -0
- fillercut-1.2.4/experiments/download_spike/README.md +98 -0
- fillercut-1.2.4/experiments/download_spike/kaynak_olcum.py +135 -0
- fillercut-1.2.4/experiments/expand_silence/README.md +72 -0
- fillercut-1.2.4/experiments/expand_silence/faz0.py +441 -0
- fillercut-1.2.4/experiments/expand_silence/faz1_ab.py +465 -0
- fillercut-1.2.4/experiments/expand_silence/ortak.py +171 -0
- fillercut-1.2.4/experiments/expand_silence/sonuclar/faz0.json +1238 -0
- fillercut-1.2.4/experiments/expand_silence/sonuclar/faz0.md +88 -0
- fillercut-1.2.4/experiments/expand_silence/sonuclar/faz1.json +865 -0
- fillercut-1.2.4/experiments/expand_silence/sonuclar/faz1.md +84 -0
- fillercut-1.2.4/experiments/filler_leak/README.md +138 -0
- fillercut-1.2.4/experiments/filler_leak/asr_runner.py +427 -0
- fillercut-1.2.4/experiments/filler_leak/baseline.py +530 -0
- fillercut-1.2.4/experiments/filler_leak/faz1_confidence.py +453 -0
- fillercut-1.2.4/experiments/filler_leak/faz2_vowel_run.py +572 -0
- fillercut-1.2.4/experiments/filler_leak/korpus.py +186 -0
- fillercut-1.2.4/experiments/filler_leak/sonuclar/baseline.json +843 -0
- fillercut-1.2.4/experiments/filler_leak/sonuclar/baseline.md +105 -0
- fillercut-1.2.4/experiments/filler_leak/sonuclar/faz1.json +7751 -0
- fillercut-1.2.4/experiments/filler_leak/sonuclar/faz1.md +60 -0
- fillercut-1.2.4/experiments/filler_leak/sonuclar/faz2.json +1353 -0
- fillercut-1.2.4/experiments/filler_leak/sonuclar/faz2.md +72 -0
- fillercut-1.2.4/experiments/paketleme_spike/README.md +100 -0
- fillercut-1.2.4/experiments/paketleme_spike/acilis_sure.py +148 -0
- fillercut-1.2.4/experiments/paketleme_spike/backend_sure.py +147 -0
- fillercut-1.2.4/experiments/paketleme_spike/onedir_onefile.md +66 -0
- fillercut-1.2.4/experiments/pywebview_spike/README.md +81 -0
- fillercut-1.2.4/experiments/pywebview_spike/delta_olcum.py +85 -0
- fillercut-1.2.4/experiments/pywebview_spike/kol.py +92 -0
- fillercut-1.2.4/experiments/wcpp_threads/README.md +69 -0
- fillercut-1.2.4/experiments/wcpp_threads/olcum.py +250 -0
- fillercut-1.2.4/experiments/wcpp_threads/sonuclar/ham_log.txt +89 -0
- fillercut-1.2.4/experiments/wcpp_threads/sonuclar/kosular.json +4815 -0
- fillercut-1.2.4/packaging/THIRD_PARTY_NOTICES.md +55 -0
- fillercut-1.2.4/packaging/entry_cli.py +11 -0
- fillercut-1.2.4/packaging/entry_ui.py +31 -0
- fillercut-1.2.4/packaging/fillercut.ico +0 -0
- fillercut-1.2.4/packaging/fillercut.iss +298 -0
- fillercut-1.2.4/packaging/fillercut.spec +157 -0
- fillercut-1.2.4/packaging/ikon_uret.py +147 -0
- fillercut-1.2.4/packaging/webview2.json +26 -0
- fillercut-1.2.4/packaging/webview2_indir.py +136 -0
- fillercut-1.2.4/pyproject.toml +114 -0
- fillercut-1.2.4/scripts/build_exe.ps1 +134 -0
- fillercut-1.2.4/scripts/build_setup.ps1 +125 -0
- fillercut-1.2.4/scripts/release_notlari.py +169 -0
- fillercut-1.2.4/src/fillercut/__init__.py +22 -0
- fillercut-1.2.4/src/fillercut/assets/__init__.py +196 -0
- fillercut-1.2.4/src/fillercut/assets/manifest.json +43 -0
- fillercut-1.2.4/src/fillercut/audio/__init__.py +1 -0
- fillercut-1.2.4/src/fillercut/audio/extractor.py +119 -0
- fillercut-1.2.4/src/fillercut/audio/probe.py +98 -0
- fillercut-1.2.4/src/fillercut/audio/silence.py +161 -0
- fillercut-1.2.4/src/fillercut/cli.py +870 -0
- fillercut-1.2.4/src/fillercut/config.py +492 -0
- fillercut-1.2.4/src/fillercut/detect/__init__.py +1 -0
- fillercut-1.2.4/src/fillercut/detect/fillers.py +149 -0
- fillercut-1.2.4/src/fillercut/detect/silence.py +40 -0
- fillercut-1.2.4/src/fillercut/export/__init__.py +15 -0
- fillercut-1.2.4/src/fillercut/export/fcp7.py +281 -0
- fillercut-1.2.4/src/fillercut/export/medya.py +289 -0
- fillercut-1.2.4/src/fillercut/export/srt.py +245 -0
- fillercut-1.2.4/src/fillercut/gunluk.py +205 -0
- fillercut-1.2.4/src/fillercut/kurulum/__init__.py +16 -0
- fillercut-1.2.4/src/fillercut/kurulum/indir.py +314 -0
- fillercut-1.2.4/src/fillercut/kurulum/yollar.py +235 -0
- fillercut-1.2.4/src/fillercut/models.py +141 -0
- fillercut-1.2.4/src/fillercut/pipeline.py +719 -0
- fillercut-1.2.4/src/fillercut/plan/__init__.py +1 -0
- fillercut-1.2.4/src/fillercut/plan/cutplan.py +458 -0
- fillercut-1.2.4/src/fillercut/render/__init__.py +1 -0
- fillercut-1.2.4/src/fillercut/render/encoder.py +429 -0
- fillercut-1.2.4/src/fillercut/render/render.py +220 -0
- fillercut-1.2.4/src/fillercut/report/__init__.py +1 -0
- fillercut-1.2.4/src/fillercut/report/html_report.py +409 -0
- fillercut-1.2.4/src/fillercut/report/json_report.py +379 -0
- fillercut-1.2.4/src/fillercut/report/review_server.py +197 -0
- fillercut-1.2.4/src/fillercut/surec.py +91 -0
- fillercut-1.2.4/src/fillercut/transcribe/__init__.py +1 -0
- fillercut-1.2.4/src/fillercut/transcribe/base.py +48 -0
- fillercut-1.2.4/src/fillercut/transcribe/fw_backend.py +176 -0
- fillercut-1.2.4/src/fillercut/transcribe/reanchor.py +145 -0
- fillercut-1.2.4/src/fillercut/transcribe/wcpp_backend.py +290 -0
- fillercut-1.2.4/src/fillercut/web/__init__.py +7 -0
- fillercut-1.2.4/src/fillercut/web/app.py +252 -0
- fillercut-1.2.4/src/fillercut/web/fs.py +535 -0
- fillercut-1.2.4/src/fillercut/web/geri_bildirim.py +140 -0
- fillercut-1.2.4/src/fillercut/web/jobs.py +730 -0
- fillercut-1.2.4/src/fillercut/web/kurulum.py +276 -0
- fillercut-1.2.4/src/fillercut/web/native.py +483 -0
- fillercut-1.2.4/src/fillercut/web/review.py +629 -0
- fillercut-1.2.4/src/fillercut/web/static/app.js +1582 -0
- fillercut-1.2.4/src/fillercut/web/static/index.html +294 -0
- fillercut-1.2.4/src/fillercut/web/static/style.css +830 -0
- fillercut-1.2.4/src/fillercut/web/waveform.py +86 -0
- fillercut-1.2.4/tests/__init__.py +0 -0
- fillercut-1.2.4/tests/conftest.py +6 -0
- fillercut-1.2.4/tests/data/korpus_gt.json +53 -0
- fillercut-1.2.4/tests/data/transcript_sample.json +24 -0
- fillercut-1.2.4/tests/data/wcpp_output_sample.json +60 -0
- fillercut-1.2.4/tests/data/wcpp_reference_tr.json +155 -0
- fillercut-1.2.4/tests/make_fixture.py +61 -0
- fillercut-1.2.4/tests/test_assets.py +161 -0
- fillercut-1.2.4/tests/test_cli.py +797 -0
- fillercut-1.2.4/tests/test_cli_setup.py +287 -0
- fillercut-1.2.4/tests/test_config.py +638 -0
- fillercut-1.2.4/tests/test_cutplan.py +248 -0
- fillercut-1.2.4/tests/test_detect_silence.py +49 -0
- fillercut-1.2.4/tests/test_encoder.py +606 -0
- fillercut-1.2.4/tests/test_export_fcp7.py +329 -0
- fillercut-1.2.4/tests/test_export_medya.py +204 -0
- fillercut-1.2.4/tests/test_export_srt.py +458 -0
- fillercut-1.2.4/tests/test_extractor.py +184 -0
- fillercut-1.2.4/tests/test_fillers.py +163 -0
- fillercut-1.2.4/tests/test_gunluk.py +306 -0
- fillercut-1.2.4/tests/test_html_report.py +234 -0
- fillercut-1.2.4/tests/test_integration.py +137 -0
- fillercut-1.2.4/tests/test_json_report.py +559 -0
- fillercut-1.2.4/tests/test_konsol_kodlama.py +255 -0
- fillercut-1.2.4/tests/test_korpus_gt.py +129 -0
- fillercut-1.2.4/tests/test_kurucu.py +350 -0
- fillercut-1.2.4/tests/test_kurulum_indir.py +413 -0
- fillercut-1.2.4/tests/test_kurulum_yollar.py +191 -0
- fillercut-1.2.4/tests/test_models.py +148 -0
- fillercut-1.2.4/tests/test_paketleme.py +323 -0
- fillercut-1.2.4/tests/test_paketleme_pypi.py +90 -0
- fillercut-1.2.4/tests/test_pipeline.py +1336 -0
- fillercut-1.2.4/tests/test_probe.py +180 -0
- fillercut-1.2.4/tests/test_reanchor.py +254 -0
- fillercut-1.2.4/tests/test_release.py +235 -0
- fillercut-1.2.4/tests/test_render.py +422 -0
- fillercut-1.2.4/tests/test_review_edits.py +276 -0
- fillercut-1.2.4/tests/test_review_server.py +140 -0
- fillercut-1.2.4/tests/test_silence.py +223 -0
- fillercut-1.2.4/tests/test_surec.py +215 -0
- fillercut-1.2.4/tests/test_transcribe.py +295 -0
- fillercut-1.2.4/tests/test_ui_yasam_dongusu.py +402 -0
- fillercut-1.2.4/tests/test_version.py +50 -0
- fillercut-1.2.4/tests/test_wcpp.py +745 -0
- fillercut-1.2.4/tests/test_web_app.py +275 -0
- fillercut-1.2.4/tests/test_web_fs.py +192 -0
- fillercut-1.2.4/tests/test_web_geri_bildirim.py +194 -0
- fillercut-1.2.4/tests/test_web_hapis.py +264 -0
- fillercut-1.2.4/tests/test_web_istatistik.py +313 -0
- fillercut-1.2.4/tests/test_web_jobs.py +504 -0
- fillercut-1.2.4/tests/test_web_kurulum.py +338 -0
- fillercut-1.2.4/tests/test_web_media.py +241 -0
- fillercut-1.2.4/tests/test_web_native.py +495 -0
- fillercut-1.2.4/tests/test_web_review.py +857 -0
- fillercut-1.2.4/tests/test_web_secim.py +221 -0
- fillercut-1.2.4/tests/test_web_yildiz.py +211 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
name: Release (Windows)
|
|
2
|
+
|
|
3
|
+
# v1.2 Faz 5 — dağıtım epic'inin kapanışı.
|
|
4
|
+
#
|
|
5
|
+
# Bu workflow `vulkan-build.yml`in YERİNE geçti (o dosya silindi). Sebep bir
|
|
6
|
+
# kronik yara: eski akışta tag push'unda Release'i ELLE açmak gerekiyordu;
|
|
7
|
+
# açılmazsa workflow Release'i whisper.cpp notlarıyla kendisi açıyor ve
|
|
8
|
+
# uygulamanın başlığını/notlarını eziyordu. Artık Release'i workflow açıyor
|
|
9
|
+
# ve notlar TEK KAYNAKTAN — CHANGELOG.md'den — üretiliyor. Manuel adım YOK.
|
|
10
|
+
#
|
|
11
|
+
# İki workflow aynı tag'e koşarsa Release için YARIŞIRLAR; bu yüzden tek
|
|
12
|
+
# dosya ve tek job. Job bölmemenin ikinci sebebi: artefakt round-trip'i
|
|
13
|
+
# (upload/download-artifact) tamamen gereksizleşiyor, iki çıktı da aynı
|
|
14
|
+
# çalışma dizininde duruyor.
|
|
15
|
+
#
|
|
16
|
+
# Action sürümleri her action'ın KENDİ `action.yml`'sindeki `runs.using`
|
|
17
|
+
# alanından doğrulandı (hepsi node24, 2026-09-02):
|
|
18
|
+
# actions/checkout@v7 · actions/setup-python@v7 · actions/upload-artifact@v7
|
|
19
|
+
# Kayan pin (@main/@master) YOK — kilidi tests/test_release.py'de.
|
|
20
|
+
|
|
21
|
+
on:
|
|
22
|
+
workflow_dispatch:
|
|
23
|
+
inputs:
|
|
24
|
+
whispercpp_ref:
|
|
25
|
+
description: "whisper.cpp tag/ref (sabit: v1.9.1; bilinçli değiştirilmedikçe dokunma)"
|
|
26
|
+
required: true
|
|
27
|
+
default: "v1.9.1"
|
|
28
|
+
push:
|
|
29
|
+
tags:
|
|
30
|
+
- "v*" # v1.2.0 / v1.2.0-rc.1 → build + Release
|
|
31
|
+
|
|
32
|
+
# Release açmak ve asset yüklemek için (gh release create/upload).
|
|
33
|
+
# Manuel dispatch'te release adımı koşmaz; izin zararsız.
|
|
34
|
+
permissions:
|
|
35
|
+
contents: write
|
|
36
|
+
|
|
37
|
+
env:
|
|
38
|
+
PACKAGE_NAME: fillercut-whisper-cli-vulkan-win-x64
|
|
39
|
+
# Runner en-US'tur: boruya yazan Python'un yerel kodlaması cp1252 olur ve
|
|
40
|
+
# Türkçe mesajlar UnicodeEncodeError verir (v1.2.0-rc.1 koşusu, adım 12 —
|
|
41
|
+
# indirme BAŞARILIYDI, çöküş başarı mesajındaydı). UTF-8 modu bunu uçtan
|
|
42
|
+
# uca kapatır; script'lerin kendi savunma satırı ikinci katmandır.
|
|
43
|
+
PYTHONUTF8: "1"
|
|
44
|
+
WHISPERCPP_REF: ${{ inputs.whispercpp_ref || 'v1.9.1' }}
|
|
45
|
+
# Inno Setup derleyicisi runner'a KURULUR ve hash'i doğrulanır — WebView2
|
|
46
|
+
# bootstrapper'ıyla aynı desen (packaging/webview2.json). Sürüm PIN'li:
|
|
47
|
+
# aynı .iss farklı ISCC sürümünde farklı kurucu üretebilir.
|
|
48
|
+
INNO_URL: "https://github.com/jrsoftware/issrc/releases/download/is-6_7_3/innosetup-6.7.3.exe"
|
|
49
|
+
INNO_SHA256: "9c73c3bae7ed48d44112a0f48e66742c00090bdb5bef71d9d3c056c66e97b732"
|
|
50
|
+
|
|
51
|
+
jobs:
|
|
52
|
+
release:
|
|
53
|
+
runs-on: windows-latest
|
|
54
|
+
steps:
|
|
55
|
+
- name: Checkout Filler-Cut
|
|
56
|
+
uses: actions/checkout@v7
|
|
57
|
+
|
|
58
|
+
- name: Checkout whisper.cpp (sabit tag)
|
|
59
|
+
uses: actions/checkout@v7
|
|
60
|
+
with:
|
|
61
|
+
repository: ggml-org/whisper.cpp
|
|
62
|
+
ref: ${{ env.WHISPERCPP_REF }}
|
|
63
|
+
path: whisper.cpp
|
|
64
|
+
|
|
65
|
+
# ─── 1) whisper-cli Vulkan derlemesi ────────────────────────────────
|
|
66
|
+
# whisper.cpp resmi release'lerinde Windows Vulkan paketi YOK (upstream
|
|
67
|
+
# ggml-org/whisper.cpp#3673) — sadece CPU, BLAS, CUDA var. Bu adımlar o
|
|
68
|
+
# boşluğu doldurur: sabit tag'den kaynak derleme, vendor-agnostic Vulkan
|
|
69
|
+
# backend (tek binary ile NVIDIA/AMD/Intel).
|
|
70
|
+
- name: Vulkan SDK kur (LunarG)
|
|
71
|
+
shell: pwsh
|
|
72
|
+
run: |
|
|
73
|
+
winget install --id KhronosGroup.VulkanSDK --silent `
|
|
74
|
+
--accept-source-agreements --accept-package-agreements
|
|
75
|
+
$sdk = Get-ChildItem "C:\VulkanSDK" -Directory |
|
|
76
|
+
Sort-Object Name -Descending | Select-Object -First 1
|
|
77
|
+
if (-not $sdk) { throw "Vulkan SDK kurulamadı (C:\VulkanSDK boş)" }
|
|
78
|
+
echo "VULKAN_SDK=$($sdk.FullName)" >> $env:GITHUB_ENV
|
|
79
|
+
echo "VULKAN_SDK=$($sdk.FullName)"
|
|
80
|
+
|
|
81
|
+
- name: Configure (CMake, Vulkan ON)
|
|
82
|
+
shell: pwsh
|
|
83
|
+
run: |
|
|
84
|
+
# GGML_NATIVE=OFF: dağıtım binary'si runner CPU'suna göre optimize
|
|
85
|
+
# edilmesin, her x64 CPU'da çalışsın (upstream release deseni).
|
|
86
|
+
# BUILD_SHARED_LIBS=ON: ggml DLL'leri ayrı üretilsin (zip'e girecek).
|
|
87
|
+
cmake -S whisper.cpp -B whisper.cpp/build `
|
|
88
|
+
-DGGML_VULKAN=ON `
|
|
89
|
+
-DGGML_NATIVE=OFF `
|
|
90
|
+
-DBUILD_SHARED_LIBS=ON `
|
|
91
|
+
-DCMAKE_BUILD_TYPE=Release
|
|
92
|
+
|
|
93
|
+
- name: Build (whisper-cli)
|
|
94
|
+
shell: pwsh
|
|
95
|
+
run: cmake --build whisper.cpp/build --config Release --target whisper-cli -j
|
|
96
|
+
|
|
97
|
+
- name: Smoke test 1 — binary çalışıyor mu
|
|
98
|
+
shell: pwsh
|
|
99
|
+
run: |
|
|
100
|
+
# Runner'da GPU yok; --version backend init etmeden çıkar (v1.8.7+).
|
|
101
|
+
& whisper.cpp\build\bin\Release\whisper-cli.exe --version
|
|
102
|
+
if ($LASTEXITCODE -ne 0) { throw "whisper-cli --version patladı" }
|
|
103
|
+
|
|
104
|
+
- name: Smoke test 2 — uçtan uca transkripsiyon (CPU fallback)
|
|
105
|
+
shell: pwsh
|
|
106
|
+
run: |
|
|
107
|
+
# tiny.en (~78 MB) + repo içindeki jfk.wav. Runner'da Vulkan sürücüsü
|
|
108
|
+
# yok → ggml CPU backend'e düşer; amaç binary'nin bozuk olmadığını
|
|
109
|
+
# kanıtlamak, hız ölçmek değil (hız ölçümü KNOWN_ISSUES.md KI-1'de).
|
|
110
|
+
curl -L -o ggml-tiny.en.bin `
|
|
111
|
+
https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.en.bin
|
|
112
|
+
& whisper.cpp\build\bin\Release\whisper-cli.exe `
|
|
113
|
+
-m ggml-tiny.en.bin -f whisper.cpp\samples\jfk.wav -nt
|
|
114
|
+
if ($LASTEXITCODE -ne 0) { throw "smoke transkripsiyon patladı" }
|
|
115
|
+
|
|
116
|
+
- name: Paketle (exe + ggml DLL'leri + LICENSE)
|
|
117
|
+
shell: pwsh
|
|
118
|
+
run: |
|
|
119
|
+
$bin = "whisper.cpp\build\bin\Release"
|
|
120
|
+
$stage = "stage\$env:PACKAGE_NAME"
|
|
121
|
+
New-Item -ItemType Directory -Force $stage | Out-Null
|
|
122
|
+
Copy-Item "$bin\whisper-cli.exe" $stage
|
|
123
|
+
# whisper.dll, ggml.dll, ggml-base.dll, ggml-cpu.dll, ggml-vulkan.dll
|
|
124
|
+
Copy-Item "$bin\*.dll" $stage
|
|
125
|
+
# MIT bile olsa binary dağıtımında lisans metni taşınmalı.
|
|
126
|
+
Copy-Item whisper.cpp\LICENSE $stage
|
|
127
|
+
Get-ChildItem $stage | Format-Table Name, Length
|
|
128
|
+
Compress-Archive -Path "$stage\*" -DestinationPath "$env:PACKAGE_NAME.zip"
|
|
129
|
+
|
|
130
|
+
# ─── 2) Uygulama exe'leri + kurucu ──────────────────────────────────
|
|
131
|
+
- name: Python kur
|
|
132
|
+
uses: actions/setup-python@v7
|
|
133
|
+
with:
|
|
134
|
+
python-version: "3.12"
|
|
135
|
+
|
|
136
|
+
- name: Bağımlılıklar
|
|
137
|
+
shell: pwsh
|
|
138
|
+
run: |
|
|
139
|
+
python -m venv .venv
|
|
140
|
+
.venv\Scripts\python.exe -m pip install --upgrade pip
|
|
141
|
+
# `native` extra'si ZORUNLUDUR (KI-12): pywebview kurulu degilse
|
|
142
|
+
# PyInstaller onu bundle'a koyamaz, exe calisma aninda
|
|
143
|
+
# "pywebview kurulu degil" deyip tarayici fallback'ine duser ve
|
|
144
|
+
# native pencere HIC acilmaz. Spec'teki webview hidden import'lari
|
|
145
|
+
# eksik pakette yalnizca WARNING uretir — build yesil kalir.
|
|
146
|
+
# v1.2.0-v1.2.2 kuruculari tam olarak bu yuzden tarayici aciyordu.
|
|
147
|
+
.venv\Scripts\python.exe -m pip install -e ".[dev,native]"
|
|
148
|
+
# build_exe.ps1 / build_setup.ps1 .venv\Scripts\python.exe bekler.
|
|
149
|
+
|
|
150
|
+
- name: Inno Setup kur (pin'li + hash doğrulamalı)
|
|
151
|
+
shell: pwsh
|
|
152
|
+
run: |
|
|
153
|
+
$ErrorActionPreference = 'Stop'
|
|
154
|
+
$exe = "$env:RUNNER_TEMP\innosetup.exe"
|
|
155
|
+
Invoke-WebRequest -Uri $env:INNO_URL -OutFile $exe
|
|
156
|
+
$hash = (Get-FileHash $exe -Algorithm SHA256).Hash.ToLower()
|
|
157
|
+
if ($hash -ne $env:INNO_SHA256) {
|
|
158
|
+
throw "Inno Setup SHA-256 uyuşmuyor: beklenen $env:INNO_SHA256, gelen $hash"
|
|
159
|
+
}
|
|
160
|
+
# Inno'nun kendi kurucusu da Inno ile üretilmiştir; standart sessiz
|
|
161
|
+
# bayrakları alır. /DIR ile konum sabitlenir ki ISCC yolu tahmin
|
|
162
|
+
# edilmesin — build_setup.ps1 FILLERCUT_ISCC'yi okur.
|
|
163
|
+
$dir = "$env:RUNNER_TEMP\InnoSetup6"
|
|
164
|
+
$kur = Start-Process $exe -PassThru -Wait -ArgumentList `
|
|
165
|
+
"/VERYSILENT","/SUPPRESSMSGBOXES","/NORESTART","/SP-","/DIR=$dir"
|
|
166
|
+
if ($kur.ExitCode -ne 0) { throw "Inno Setup kurulumu başarısız (kod $($kur.ExitCode))" }
|
|
167
|
+
$iscc = Join-Path $dir 'ISCC.exe'
|
|
168
|
+
if (-not (Test-Path $iscc)) { throw "ISCC.exe bulunamadı: $iscc" }
|
|
169
|
+
echo "FILLERCUT_ISCC=$iscc" >> $env:GITHUB_ENV
|
|
170
|
+
# ISCC argümansız çağrılınca kullanımı STDERR'e yazar ve sıfırdan
|
|
171
|
+
# farklı kodla çıkar; `Stop` altında bu terminating hata olurdu
|
|
172
|
+
# (aynı sınıf tuzak PyInstaller'da da yaşandı). Sürüm doğrulaması
|
|
173
|
+
# bu yüzden `Continue` altında yapılır ve kod OKUNMAZ.
|
|
174
|
+
$eskiEAP = $ErrorActionPreference
|
|
175
|
+
$ErrorActionPreference = 'Continue'
|
|
176
|
+
& $iscc 2>&1 | Select-Object -First 2
|
|
177
|
+
$ErrorActionPreference = $eskiEAP
|
|
178
|
+
|
|
179
|
+
- name: Sürümü etiketten türet
|
|
180
|
+
shell: pwsh
|
|
181
|
+
run: |
|
|
182
|
+
# Tag koşusunda sürüm ETİKETTEN gelir (v1.2.0 → 1.2.0,
|
|
183
|
+
# v1.2.0-rc.1 → 1.2.0-rc.1). Dispatch'te tag yok; paket sürümü
|
|
184
|
+
# kullanılır ve release adımı zaten koşmaz.
|
|
185
|
+
$ref = "${{ github.ref }}"
|
|
186
|
+
if ($ref.StartsWith('refs/tags/')) {
|
|
187
|
+
$surum = "${{ github.ref_name }}" -replace '^v',''
|
|
188
|
+
} else {
|
|
189
|
+
$surum = (.venv\Scripts\python.exe -c "from fillercut import __version__; print(__version__)").Trim()
|
|
190
|
+
}
|
|
191
|
+
echo "SURUM=$surum" >> $env:GITHUB_ENV
|
|
192
|
+
echo "Sürüm: $surum"
|
|
193
|
+
|
|
194
|
+
- name: exe + kurucu build
|
|
195
|
+
shell: pwsh
|
|
196
|
+
run: .\scripts\build_setup.ps1 -Surum $env:SURUM
|
|
197
|
+
|
|
198
|
+
# ─── 3) Artefaktlar ─────────────────────────────────────────────────
|
|
199
|
+
# Her koşuda üretilir (dispatch'te manuel doğrulama için) ama 30 günde
|
|
200
|
+
# silinir + indirmek GitHub hesabı ister — kalıcı dağıtım Release'tir.
|
|
201
|
+
- name: Artifact — whisper-cli zip
|
|
202
|
+
uses: actions/upload-artifact@v7
|
|
203
|
+
with:
|
|
204
|
+
name: ${{ env.PACKAGE_NAME }}
|
|
205
|
+
path: ${{ env.PACKAGE_NAME }}.zip
|
|
206
|
+
retention-days: 30
|
|
207
|
+
|
|
208
|
+
- name: Artifact — kurucu
|
|
209
|
+
uses: actions/upload-artifact@v7
|
|
210
|
+
with:
|
|
211
|
+
name: Filler-Cut-Setup
|
|
212
|
+
path: dist_setup/Filler-Cut-Setup-*.exe
|
|
213
|
+
retention-days: 30
|
|
214
|
+
|
|
215
|
+
# ─── 4) Release (yalnız tag push'u) ─────────────────────────────────
|
|
216
|
+
- name: Release oluştur / güncelle
|
|
217
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
218
|
+
shell: pwsh
|
|
219
|
+
env:
|
|
220
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
221
|
+
ETIKET: ${{ github.ref_name }}
|
|
222
|
+
REPO: ${{ github.repository }}
|
|
223
|
+
run: |
|
|
224
|
+
$ErrorActionPreference = 'Stop'
|
|
225
|
+
$kurucu = (Get-ChildItem dist_setup -Filter 'Filler-Cut-Setup-*.exe' |
|
|
226
|
+
Select-Object -First 1).FullName
|
|
227
|
+
$zip = "$PWD\$env:PACKAGE_NAME.zip"
|
|
228
|
+
foreach ($a in @($kurucu, $zip)) {
|
|
229
|
+
if (-not (Test-Path $a)) { throw "asset yok: $a" }
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
# Notlar ve başlık CHANGELOG'dan — workflow'a elle YAZILMAZ.
|
|
233
|
+
# rc etiketleri taban sürüme çözülür (v1.2.0-rc.1 → [1.2.0]).
|
|
234
|
+
$notlar = "$env:RUNNER_TEMP\notes.md"
|
|
235
|
+
.venv\Scripts\python.exe scripts\release_notlari.py $env:ETIKET --out $notlar
|
|
236
|
+
$baslik = (.venv\Scripts\python.exe scripts\release_notlari.py $env:ETIKET --baslik).Trim()
|
|
237
|
+
|
|
238
|
+
# Ön-sürüm: etikette '-' varsa (v1.2.0-rc.1). "Latest" olmamalı,
|
|
239
|
+
# yoksa kullanıcı indirme sayfasında rc'yi kararlı sürüm sanar.
|
|
240
|
+
$onSurum = $env:ETIKET -match '-'
|
|
241
|
+
|
|
242
|
+
$ErrorActionPreference = 'Continue'
|
|
243
|
+
gh release view $env:ETIKET --repo $env:REPO 2>&1 | Out-Null
|
|
244
|
+
$varMi = ($LASTEXITCODE -eq 0)
|
|
245
|
+
$ErrorActionPreference = 'Stop'
|
|
246
|
+
|
|
247
|
+
if ($varMi) {
|
|
248
|
+
# İDEMPOTENT: Release zaten varsa BAŞLIK ve NOTLAR KORUNUR —
|
|
249
|
+
# yalnız asset'ler güncellenir. Aynı tag'de ikinci koşu (ya da
|
|
250
|
+
# elle düzenlenmiş notlar) ezilmez. Bu, Faz 5'in çözdüğü kronik
|
|
251
|
+
# yaranın tam tersi davranıştır.
|
|
252
|
+
Write-Host "Release var — notlar korunuyor, asset'ler güncelleniyor"
|
|
253
|
+
gh release upload $env:ETIKET $kurucu $zip --repo $env:REPO --clobber
|
|
254
|
+
if ($LASTEXITCODE -ne 0) { throw "asset yükleme başarısız" }
|
|
255
|
+
} else {
|
|
256
|
+
Write-Host "Release yok — CHANGELOG notlarıyla açılıyor"
|
|
257
|
+
# `$args` OTOMATIK degiskendir (Object[]); ustune yazmak calisir
|
|
258
|
+
# ama okuyan yanilir ve splatting'de siniri belirsizlestirir.
|
|
259
|
+
$ghArgs = @(
|
|
260
|
+
$env:ETIKET, $kurucu, $zip,
|
|
261
|
+
'--repo', $env:REPO,
|
|
262
|
+
'--title', $baslik,
|
|
263
|
+
'--notes-file', $notlar,
|
|
264
|
+
'--verify-tag'
|
|
265
|
+
)
|
|
266
|
+
if ($onSurum) { $ghArgs += @('--prerelease', '--latest=false') }
|
|
267
|
+
gh release create @ghArgs
|
|
268
|
+
if ($LASTEXITCODE -ne 0) { throw "release oluşturma başarısız" }
|
|
269
|
+
}
|
|
270
|
+
gh release view $env:ETIKET --repo $env:REPO --json name,isPrerelease,assets
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*.egg-info/
|
|
4
|
+
.pytest_cache/
|
|
5
|
+
.mypy_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
.venv/
|
|
10
|
+
# Üretilen analiz/çıktı dosyaları repo'ya girmez
|
|
11
|
+
*.wav
|
|
12
|
+
*_temiz.mp4
|
|
13
|
+
rapor.json
|
|
14
|
+
# Kişisel not dosyaları
|
|
15
|
+
Venv komutu.txt
|
|
16
|
+
Venv komutu ve test komutları.txt
|
|
17
|
+
deneme.mkv
|
|
18
|
+
*_transkript.json
|
|
19
|
+
*_temiz.json
|
|
20
|
+
*_review.html
|
|
21
|
+
|
|
22
|
+
#diğer dosyalar
|
|
23
|
+
dtw_lv3.json
|
|
24
|
+
dtw_turbo.json
|
|
25
|
+
kiyas_ki1.py
|
|
26
|
+
|
|
27
|
+
# Kişisel config (yerel binary/model yolları) — repo'ya girmez
|
|
28
|
+
filler-cut.toml
|
|
29
|
+
|
|
30
|
+
# Spike ara dosyaları (experiments/filler_leak) — WAV, ham ASR çıktısı, cache
|
|
31
|
+
experiments/filler_leak/_cache/
|
|
32
|
+
|
|
33
|
+
# Faz 3 paketleme spike ara dosyalari (WAV)
|
|
34
|
+
experiments/paketleme_spike/_cache/
|
|
35
|
+
|
|
36
|
+
# PyInstaller ara/cikti dizinleri
|
|
37
|
+
dist_onefile/
|
|
38
|
+
build_onefile/
|
|
39
|
+
|
|
40
|
+
# Inno Setup kurucusu ciktisi
|
|
41
|
+
dist_setup/
|
|
42
|
+
|
|
43
|
+
# PyPI build ciktisi (python -m build --outdir dist_pypi)
|
|
44
|
+
dist_pypi/
|