AutoClicker V7: Maven build, native installers, 7 yeni ozellik, katmanli mimari - #5
Merged
Conversation
- pom.xml eklendi: bagimliliklar (flatlaf 3.4.1, jnativehook 2.2.2, junit 5), maven-shade ile calistirilabilir fat-jar, surefire test, release 17, UTF-8 - AutoClicker.java -> src/main/java/com/ohualtex/autoclicker/ altina tasindi, package bildirimi eklendi - Maven wrapper (mvnw/mvnw.cmd/.mvn) eklendi - katki saglayanlar Maven kurmadan derleyebilir - run.bat artik mvnw ile fat-jar derleyip target/autoclicker.jar baslatiyor (elle jar indirme/javac kaldirildi) - .gitignore: maven-wrapper.properties *.properties kuralindan haric tutuldu
- core/Humanizer: anti-ban gecikme hesabi saf hale geldi, Random enjekte edilebilir (seedlenebilir test) - core/ShutdownCommand: OS->kapatma komutu eslemesi saf fonksiyona ayrildi (exec/UI'den bagimsiz) - AutoClicker bu siniflari kullaniyor (getHumanizedDelay delege, executeLimitAction ShutdownCommand.forOs) - src/test: HumanizerTest (+-%15 menzil, sinir degerler, determinizm) ve ShutdownCommandTest (Win/mac/Linux/bilinmeyen/null) - mvn test yesil
- .github/workflows/build.yml: her push/PR'da Temurin JDK 21 ile mvn clean verify - Maven bagimlilik cache + uretilen fat-jar artifact olarak yukleniyor
- pom version 7.0; shade manifest'ine Implementation-Version eklendi - Pencere basligi sabit string yerine JAR manifest surumunden okunuyor (appVersion(), fallback 'dev') - Boylece her asamada yalnizca pom surumu bump'lanir, baslik otomatik guncellenir
- nativeKeyPressed en basta ESC kontrolu: makro calisirken kosulsuz durdurur + beep - ESC yapilandirilabilir hotkey'den bagimsiz ve degistirilemez; hizli makro/yazma sirasinda garantili cikis - stopFromPanic() yardimcisi (stopWorker + durum BEKLIYOR) - pom surumu 7.1
- ShutdownCommand'e iptal komutu eklendi (Win: shutdown -a, Linux: shutdown -c, mac: killall shutdown) - executeShutdownWithCancel: kapatma OS gecikmesiyle baslar, gecikme penceresinde "Kapatmayi Iptal Et" sunulur - AFK ise kapanir; kullanici varsa tek tikla iptal eder - bloklayan on-onay AFK senaryosunu bozmaz - i18n: shut_title/shut_pending/shut_cancel_btn/shut_cancelled (6 dil); ShutdownCommandTest iptal komutunu dogruluyor
- validateLimitInput: limitor aciksa deger pozitif tam sayi degilse makro baslamaz - Gecersiz deger ani durdurma/PC kapatma tetiklemesini onler (en tehlikeli kenar durum) - FlatLaf "JComponent.outline=error" ile alan kirmizi cerceveli + beep + durum uyarisi - i18n: lim_invalid (6 dil)
- createCpsPanel alanlari: araliga sigmayan/gecersiz deger FlatLaf "JComponent.outline=error" ile kirmizi cerceve - Bos alan notr birakilir; gecerli deger cerceveyi temizler - Onceden gecersiz CPS girdisi sessizce yutuluyordu
- core/ConfigPaths: OS'a gore yazilabilir config dizini secimi (Win: %APPDATA%\AutoClicker, digerleri: ~/.autoclicker) - saf ve test edilebilir - AutoClicker config'i CWD yerine bu dizine yazip okuyor; eski CWD config.properties varsa bir kez tasiniyor (geriye uyum) - jpackage ile Program Files'a kurulunca ayarlar artik salt-okunur dizine yazilmaya calismayacak - ConfigPathsTest (Win+APPDATA, Win fallback, Linux, mac) - pom surumu 7.2
- scripts/make-installer.bat (Windows) ve make-installer.sh (macOS/Linux) - app-image turu: WiX gerektirmez, JRE gomulu dist/AutoClicker/AutoClicker.exe uretir (kullanicida Java gerekmez) - .exe/.msi installer icin WiX, .deb/.rpm icin dpkg/rpmbuild gerektigi not edildi - .gitignore: dist/ eklendi - Yerelde dogrulandi: dist\AutoClicker\AutoClicker.exe (125 MB, JRE dahil)
- .github/workflows/release.yml: 'v*' tag push'unda Windows/Linux/macOS matrisinde calisir - Her OS: mvn clean verify -> jpackage app-image -> zip -> Release'e yukle (prerelease) - Linux ayrica fat-jar (autoclicker.jar) yukler; surum etiketi v-onsuz jpackage'a gecirilir - WiX/dpkg/rpmbuild bagimliligindan kacinmak icin app-image+zip (her platformda guvenilir)
- core/MousePath: iki nokta arasi ease-in-out (smoothstep) ara noktalar + mesafeye gore adim sayisi (saf, test edilebilir) - smoothMove(): mevcut konumdan hedefe egriyle hareket; zincir "Fareyi Tasi" adimi artik ani isinlanma yerine yumusak hareket - MousePathTest: baslangic/bitis, monotonluk, sifir-mesafe, uzun-mesafe adim siniri - pom 7.3
- Ayarlar'a Zamanlayici bolumu: "Gecikmeli baslat" + saniye alani - toggle gecikme acikken geri sayim baslatir (Swing Timer), bitince aktif sekme makrosunu calistirir - Geri sayim sirasinda hotkey/ESC iptal eder; startActiveTab() toggle ve zamanlayicidan ortak kullaniliyor - i18n (sched_*) + config persistence (schedUse/schedDelay)
- initTray: SystemTray destekliyse tepsi ikonu + menu (Goster / Baslat-Durdur / Cikis) - Pencere simge durumuna kuculunce tepsiye gizlenir; cift tik veya menu ile geri gelir - Tray ikonu kodla cizilen 16x16 BufferedImage; i18n (tray_show/tray_toggle/tray_exit)
- Her makro sekmesine (Fare/Klavye/Zincir/Piksel) ayri kisayol atanabilir - Ayarlar'a "Sekme Kisayollari" bolumu: ata/temizle butonlari - Hotkey'e basinca idle ise o sekmeye gecip baslatir; calisirken durdurur (toggle semantigi) - nativeKeyPressed atama + eslesme mantigi; config persistence (tabHotkey0..3); i18n tabhk_title
- Zincir sekmesine "Disa Aktar (JSON)" / "Ice Aktar (JSON)" butonlari
- Gson bagimliligi eklendi (fat-jar'a dahil); makro {app,version,actions[]} formatinda paylasilabilir
- Import mevcut listenin yerine yukler; p2 opsiyonel, hatali dosya kullaniciya bildirilir
- i18n: io_export/io_import/io_fail
- Ayarlar'a Profil bolumu: duzenlenebilir ad kutusu + Kaydet/Yukle/Sil - Profiller config dizininde profile-<ad>.properties olarak saklanir (ad sanitize edilir) - saveConfig writeConfigTo(File) ile genellestirildi; loadProfile UI'yi tamamen yeniden kurar (tema/dil/renk dahil) ve aktif config'i esitler - i18n: prof_title/prof_save/prof_load/prof_del
- Zincir sekmesine "● Kaydet" butonu; tekrar/ESC ile durur - Kayit modunda gercek fare tiklamalari (MOVE+CLICK) ve tus basislari ile aralarindaki gecikmeler (DELAY) zincire eklenir - JNativeHook buton farki dogru eslenir (BUTTON2=sag, BUTTON3=orta); tus icin getRawCode (Windows VK ~ AWT VK) - nativeMousePressed/nativeKeyPressed kayit yakalar; i18n rec_start/rec_stop/rec_status
…rildi - JTabbedPane artik field; toggle/startActiveTab/startTab/rebuildUI dogrudan kullaniyor - 5 adet (JTabbedPane)((BorderLayout)getContentPane()...).getLayoutComponent(...) kirilgan cast'i temizlendi - Layout degisiklerine dayaniksiz erisim ortadan kalkti - pom 7.4
- 6 ikon (Mouse/Key/Chain/Pixel/Gear/Info) AutoClicker'dan ui/Icons.java'ya cikarildi - Referanslar Icons.XIcon olarak guncellendi; ana dosya ~50 satir kuculdu - ui paketi olusturuldu (core ve i18n yaninda katmanli yapi)
- 6 dilli ceviri sozlugu AutoClicker'dan ayri com.ohualtex.autoclicker.i18n.Lang sinifina cikarildi - Ana dosya ~110 satir kuculdu; UTF-8 (RU/DE/FR/IT) karakterler korundu (Maven -encoding UTF-8) - AutoClicker i18n.Lang import ediyor; davranis ayni - pom 7.5
- ActionType (enum) ve MacroAction com.ohualtex.autoclicker.model paketine cikarildi - Alanlar public yapildi (capraz-paket erisim); MacroAction i18n.Lang import ediyor - AutoClicker model siniflarini import ediyor; davranis ayni
- config/ConfigStore: config+profil dosya I/O'su (yukle/kaydet/profil listele/sil) UI'dan bagimsiz - AutoClicker writeConfigTo -> gatherProps (UI durumunu props'a toplar); saveConfig/saveProfile ConfigStore kullaniyor - resolveConfigFile + profil dosya mantigi ConfigStore'a tasindi; ConfigPaths artik ConfigStore'da kullaniliyor - Davranis ayni (ayni dizin/dosya/profil semasi)
- startMacro(LimitConfig, MacroBody, onEnd): worker thread + while(isRunning) + iterasyon/limit iskeleti tek yerde - MacroBody fonksiyonel arayuzu her makronun tek-iterasyon govdesini tutuyor (Strategy) - startMouse/Key/Chain/Pixel artik yalnizca snapshot + govde tanimliyor; ~80 satir tekrar kalkti - Davranis bire bir korundu (ayni tikla/tus/tarama/limit mantigi); mvn verify + GUI dogrulandi
- README: indirilebilir native paketler (JRE gomulu), Maven/mvnw ile derleme, v7.3 ozellikleri (record/profil/JSON/tray/zamanlayici/per-sekme hotkey/ESC panik), paket-katmanli mimari, Java 21+, %APPDATA% config notu - build.yml + release.yml: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true (Node 20 deprecation uyarisi giderildi)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Özet
V7 sürüm hattı — tek 2000-satırlık dosyadan, testli/CI'lı/installer'lı, katmanlı mimariye geçiş. 5 alt sürüm (v7.0–v7.5), her biri git tag'li ve native release'li.
src/paket yapısı + fat-jar +core(saf sınıflar) + JUnit + GitHub Actions CI + sürüm tek-kaynak%APPDATA%, jpackage (JRE gömülü), tag-tetikli 3-OS Release otomasyonutabbedPanefield + kırılgan cast temizliği, vektör ikonlaruipaketineLang→i18n,ActionType/MacroAction→model,ConfigStore, MacroEngine (Strategy)Mimari (tek dosya → 7 paket)
config·core(JUnit testli) ·i18n·model·ui+AutoClicker(UI/orkestrasyon)Öne çıkanlar
corepaketinde saf mantık + JUnit testleri (Humanizer, ShutdownCommand, ConfigPaths, MousePath)Test
mvnw clean verifyyeşil (derleme + tüm testler + shade)