Skip to content

AutoClicker V7: Maven build, native installers, 7 yeni ozellik, katmanli mimari - #5

Merged
Ohualtex merged 25 commits into
mainfrom
AutoClicker_V7
Jun 20, 2026
Merged

AutoClicker V7: Maven build, native installers, 7 yeni ozellik, katmanli mimari#5
Ohualtex merged 25 commits into
mainfrom
AutoClicker_V7

Conversation

@Ohualtex

Copy link
Copy Markdown
Owner

Ö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.

Sürüm Katman
v7.0 Maven build + src/ paket yapısı + fat-jar + core (saf sınıflar) + JUnit + GitHub Actions CI + sürüm tek-kaynak
v7.1 Güvenlik: ESC panik tuşu, PC-kapatma iptal penceresi (AFK uyumlu), limit doğrulama, girdi feedback
v7.2 Paketleme: config→%APPDATA%, jpackage (JRE gömülü), tag-tetikli 3-OS Release otomasyonu
v7.3 7 özellik: yumuşak fare, zamanlayıcı, tray ikonu, per-sekme hotkey, JSON import/export, profiller, record/replay
v7.4 Mimari: tabbedPane field + kırılgan cast temizliği, vektör ikonlar ui paketine
v7.5 Ertelenen mimari: Langi18n, ActionType/MacroActionmodel, ConfigStore, MacroEngine (Strategy)

Mimari (tek dosya → 7 paket)

config · core (JUnit testli) · i18n · model · ui + AutoClicker (UI/orkestrasyon)

Öne çıkanlar

  • 🧩 Maven + mvnw — Maven kurmadan derlenir; fat-jar + jpackage native installer
  • 🤖 CI/CD — her push'ta derle+test; tag'de Win/macOS/Linux app-image (JRE gömülü) Release
  • 🆘 ESC panik · ⏺️ record/replay · 👤 profiller · 📤 JSON · 🗂️ tray · ⏱️ zamanlayıcı · 🛡️ yumuşak fare
  • core paketinde saf mantık + JUnit testleri (Humanizer, ShutdownCommand, ConfigPaths, MousePath)

Test

  • mvnw clean verify yeşil (derleme + tüm testler + shade)
  • GitHub Actions build + release pipeline yeşil (Node 24'e sabitlendi)
  • Her sürümde GUI çalışır doğrulandı; davranış-koruyan refactor'lar (MacroEngine, ConfigStore) test+GUI ile teyit edildi
  • Releases: v7.5 = Latest stable, 4 OS asset

Ohualtex added 25 commits June 14, 2026 21:08
- 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)
@Ohualtex
Ohualtex merged commit 0c6c059 into main Jun 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant