build: github acik kaynak hazirligi — LICENSE/CI/topluluk dosyalari eklendi, binary'ler takipten cikarildi, README EN, kok dokumanlar docs/'a tasindi

This commit is contained in:
Alhan
2026-08-06 05:49:43 +03:00
parent cd3f573f57
commit 8972ef7225
35 changed files with 560 additions and 151 deletions

30
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,30 @@
---
name: Bug report
about: Report a bug to help us improve
title: "[Bug] "
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To reproduce**
Steps to reproduce the behavior:
1. Open '...'
2. Click on '...'
3. See error
**Expected behavior**
What you expected to happen.
**Screenshots / screen recording**
If applicable, add screenshots to help explain your problem.
**Environment**
- OS / distro: [e.g. Ubuntu 24.04, Windows 11]
- imajViewer version: [e.g. 1.1.0 — from `pubspec.yaml` or release name]
- Desktop environment / GPU: [e.g. XFCE + llvmpipe, or NVIDIA driver]
**Additional context**
Anything else relevant (log output, image that triggers the bug, etc.)

View File

@@ -0,0 +1,19 @@
---
name: Feature request
about: Suggest an idea for imajViewer
title: "[Feature] "
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem?**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
Other approaches or workarounds you've tried.
**Additional context**
Screenshots, mockups, or any other context about the feature request.

18
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,18 @@
## Description
<!-- What does this PR do? What problem does it solve? -->
## Related issue
<!-- Link the issue this PR closes, e.g. Closes #12 -->
## Changes
- [ ] Feature / fix implemented
- [ ] `flutter test` passes
- [ ] `flutter analyze` shows no new issues
- [ ] Changelog updated (if user-facing change)
## Screenshots (if applicable)
<!-- Before/after or new UI -->

113
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,113 @@
name: Build & Release
on:
push:
branches: [main]
tags: ['v*']
workflow_dispatch:
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Install packaging tools
run: |
sudo apt-get update
sudo apt-get install -y patchelf fakeroot dpkg
- name: Get dependencies
run: flutter pub get
- name: Build Linux release
run: flutter build linux --release
- name: Build .deb package
run: bash dist/rebuild-deb.sh
- name: Upload .deb artifact
uses: actions/upload-artifact@v4
with:
name: imajviewer-linux
path: dist/imajviewer_*.deb
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Get dependencies
run: flutter pub get
- name: Build Windows release
run: flutter build windows --release
- name: Install Inno Setup
run: |
choco install innosetup --no-progress -y
- name: Sync version from pubspec.yaml
shell: pwsh
run: |
$version = (Select-String -Path pubspec.yaml -Pattern '^version:\s*([0-9]+\.[0-9]+\.[0-9]+)').Matches[0].Groups[1].Value
(Get-Content windows/installer.iss -Raw) -replace '#define MyAppVersion "[^"]+"', "#define MyAppVersion `"$version`"" | Set-Content windows/installer.iss
Write-Host "Inno Setup version: $version"
- name: Build Inno Setup installer
shell: cmd
run: |
"C:\ProgramData\chocolatey\bin\ISCC.exe" windows\installer.iss
- name: Upload installer artifact
uses: actions/upload-artifact@v4
with:
name: imajviewer-windows
path: |
build/windows/x64/runner/Release/
dist/imajviewer_setup_*.exe
create-release:
needs: [build-linux, build-windows]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download Linux artifacts
uses: actions/download-artifact@v4
with:
name: imajviewer-linux
path: release-artifacts
- name: Download Windows artifacts
uses: actions/download-artifact@v4
with:
name: imajviewer-windows
path: release-artifacts/windows
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
name: "imajViewer ${{ github.ref_name }}"
body: |
imajViewer ${{ github.ref_name }}
See the [changelog](CHANGELOG.md) for details.
### Downloads
- Linux: `.deb` package (Ubuntu/Debian)
- Windows: Inno Setup installer
files: |
release-artifacts/imajviewer_*.deb
release-artifacts/windows/dist/imajviewer_setup_*.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

5
.gitignore vendored
View File

@@ -44,10 +44,9 @@ app.*.map.json
/android/app/profile
/android/app/release
# Distribution binaries — only keep under dist/
# Distribution binaries — release assets, not tracked in git
*.deb
*.tar.gz
*.exe
!dist/*.deb
!dist/*.exe
deb/usr/lib/imajviewer/
release/

35
CHANGELOG.md Normal file
View File

@@ -0,0 +1,35 @@
# Changelog
All notable changes to imajViewer are documented in this file.
## [1.1.0] - 2026-08-06
### Fixed
- `Ctrl+Q` now closes the window reliably (`onKeyEvent` rework)
- Pan freeze regression on effect-applied images (root cause analysis)
### Added
- Navigation arrows (visible on hover)
- Settings window: folder sorting by time/name, print, shortcut info
- Print support (printing package, A4 fit)
- Title bar hover transparency
- Shader warmup — right-click effects no longer stutter on first use
## [1.0.1] - 2026-07-27
### Fixed
- Zoom/pan issues on large images
- Image provider memoize — repeated opens no longer reload from disk
### Changed
- Version now sourced from `pubspec.yaml` (single source of truth)
## [1.0.0] - 2026-07-22
### Added
- Initial release: ultra-lightweight image viewer
- Formats: PNG, JPEG, JFIF, WebP, BMP, GIF, WBMP
- Pan (left drag), zoom (wheel, cursor-centered), fill/fit toggle (double click)
- Contrast / saturation / brightness / rotate gestures
- Drag & drop, window position memory, set-as-default-viewer
- Linux (.deb) and Windows (setup.exe) installers

64
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,64 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances
of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
alhan@softmediadesign.com. All complaints will be reviewed and investigated
promptly and fairly.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
[homepage]: https://www.contributor-covenant.org

55
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,55 @@
# Contributing to imajViewer
Thanks for taking the time to contribute! 🎉
## Development setup
- [Flutter SDK](https://docs.flutter.dev/get-started/install) (stable channel)
- Linux: GTK dev libraries (`libgtk-3-dev`, `ninja-build`, `clang`, `cmake`)
- Windows: Visual Studio 2022 Build Tools with "Desktop development with C++"
```bash
flutter pub get
flutter build linux # or: flutter build windows --release
```
## Code style
- Follow `flutter_lints` (see `analysis_options.yaml`)
- Keep changes minimal and focused — no drive-by refactors
- Use existing patterns in `lib/` (services, widgets, screens)
## Tests
Run the test suite before opening a PR:
```bash
flutter test
```
## Commit conventions
We use conventional commit prefixes:
- `feat:` — new feature
- `fix:` — bug fix
- `perf:` — performance improvement
- `build:` — build/packaging/CI changes
- `docs:` — documentation only
## Pull request process
1. Fork the repository
2. Create a branch: `git checkout -b fix/describe-the-fix`
3. Make your changes, run `flutter test`
4. Commit with a conventional message
5. Open a PR against `main` and describe what you changed and why
## Reporting bugs
Open an issue using the bug report template. Include:
- imajViewer version (from `pubspec.yaml` or the release name)
- OS and desktop environment
- Steps to reproduce
- Expected vs. actual behavior

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Alhan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

215
README.md
View File

@@ -1,162 +1,113 @@
# imajViewer
Ultra hafif görüntü izleyici. Flutter ile yazıldı — Linux & Windows desteği.
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Build](https://github.com/alhan/imajviewer/actions/workflows/build.yml/badge.svg)](https://github.com/alhan/imajviewer/actions/workflows/build.yml)
[![Release](https://img.shields.io/github/v/release/alhan/imajviewer)](https://github.com/alhan/imajviewer/releases/latest)
## Özellikler
Ultra-lightweight image viewer written in Flutter — Linux & Windows.
- **Dosya formatları:** PNG, JPEG, JFIF, WebP, BMP, GIF, WBMP
- **Pan:** Sol tık + sürükle
- **Zoom:** Fare tekerleği (imleç merkezli, rotate modunda viewport merkezli)
- **Fill/Fit geçişi:** Sol çift tık
- **Contrast ayarı:** Sağ tık + dikey sürükle
- **Saturation ayarı:** Ctrl + Sağ tık + dikey sürükle
- **Brightness ayarı:** Ctrl+Shift + Sağ tık + dikey sürükle
- **Rotate:** Shift + Sağ tık + dikey sürükle (~100px = 90°)
- **Reset (tüm efektler):** Sağ çift tık
- **Gezinme okları:** Sol/sağ alt köşede, mouse resme girince görünür (hover'da kırmızı)
- **Ayarlar (gear):** Title bar'da; klasör sıralaması (zamana/isme göre), yazdırma, kısayollar
- **Yazdırma:** Ayarlar penceresinden resmi yazıcıya gönderir (A4, sığdır)
- Sürükle-bırak ile resim açma
- Pencere boyutu/konumu hatırlama (JSON persistence)
- Varsayılan görüntü izleyici olarak ayarlanabilir
- Yeni pencere öncekinin yanında açılır (cascade — taşarsa alt satır)
- Taskbar gruplama (Linux: `StartupWMClass`, otomatik)
![imajViewer](imajviewer.png)
## Linux Kurulum
## Features
**Flutter SDK gerekmez**`dist/` dizininde hazır .deb paketi gelir.
- **Formats:** PNG, JPEG, JFIF, WebP, BMP, GIF, WBMP
- **Pan:** Left drag
- **Zoom:** Mouse wheel (cursor-centered; viewport-centered in rotate mode)
- **Fill/Fit toggle:** Double left click
- **Contrast:** Right drag + vertical move
- **Saturation:** Ctrl + Right drag + vertical move
- **Brightness:** Ctrl+Shift + Right drag + vertical move
- **Rotate:** Shift + Right drag + vertical move (~100px = 90°)
- **Reset (all effects):** Double right click
- **Navigation arrows:** bottom corners, visible on hover
- **Settings (gear):** sort by time/name, print, shortcut info
- **Print:** send the image to a printer (A4, fit)
- Drag & drop to open images
- Window size/position memory (JSON persistence)
- Set as default image viewer
- Cascade placement for new windows
- Taskbar grouping (Linux: `StartupWMClass`)
### .deb paketi ile kurulum (Önerilen)
## Install
### Linux (.deb, recommended)
No Flutter SDK needed — grab the latest `.deb` from the
[Releases page](https://github.com/alhan/imajviewer/releases/latest):
```bash
git clone https://git.softmediadesign.com/git_alhan/imajviewer.git
cd imajviewer
sudo dpkg -i dist/imajviewer_1.0.0_amd64.deb
sudo apt-get install -f # eksik bağımlılıklar varsa
sudo dpkg -i imajviewer_*_amd64.deb
sudo apt-get install -f # install missing dependencies, if any
```
### install.sh ile kurulum (kaynaktan/build)
After install, open an image with `xdg-open <file>` or double-click it.
```bash
git clone https://git.softmediadesign.com/git_alhan/imajviewer.git
cd imajviewer
./install.sh
```
### Windows (installer)
Kurulum sonrası `xdg-open <dosya>` ile açabilir veya dosyaya çift tıklayabilirsiniz.
Aynı uygulamanın pencereleri taskbar'da otomatik gruplanır.
Download `imajviewer_setup_*.exe` from the
[Releases page](https://github.com/alhan/imajviewer/releases/latest) and run it.
The installer:
### Kaldırma
- Installs to Program Files
- Adds a Start Menu shortcut (optional desktop shortcut)
- Registers file associations (PNG, JPG, JPEG, WebP, BMP, GIF)
- Supports uninstall (Settings > Apps)
```bash
rm -rf ~/.local/lib/imajviewer ~/.local/bin/imajviewer \
~/.local/share/applications/imajviewer.desktop \
~/.local/share/icons/hicolor/64x64/apps/imajviewer.png
```
### Build from source
## Windows Kurulum
### Seçenek 1 — Inno Setup Installer (Önerilen)
`dist/imajviewer_setup_1.0.0.exe` dosyasını çift tıklayarak kurun. Yönetici yetkisi ister.
Kurulum şunları yapar:
- Program Files altına kurulum
- Başlat menüsü kısayolu
- İsteğe bağlı masaüstü kısayolu
- Kayıt defterine dosya ilişkilendirmeleri (PNG, JPG, JPEG, WebP, BMP, GIF)
- Kaldırma desteği (Ayarlar > Uygulamalar)
### Seçenek 2 — MSIX Paketi
`build\windows\x64\runner\Release\imajviewer.msix` dosyasını PowerShell ile kurun:
```powershell
Add-AppxPackage -Path "build\windows\x64\runner\Release\imajviewer.msix"
```
> **Not:** MSIX imzalı değildir. Kurulum için Windows Developer Mode açık olmalıdır
> (Ayarlar > Geliştiriciler için > Geliştirici Modu).
### Seçenek 3 — Portable (Kendin Derle)
| Gereksinim | Açıklama |
| Requirement | Notes |
|---|---|
| [Flutter SDK](https://docs.flutter.dev/get-started/install/windows) | stable channel |
| Visual Studio 2022 Build Tools | "Desktop development with C++" iş yükü |
| Windows Developer Mode | Ayarlar > Geliştiriciler için > Geliştirici Modu |
```powershell
git clone https://git.softmediadesign.com/git_alhan/imajviewer.git
cd imajviewer
flutter pub get
flutter build windows --release
```
Çıktı: `build\windows\x64\runner\Release\` dizini. `imajviewer.exe` ile birlikte tüm DLL'ler burada — taşınabilir, başka makinelere kopyalanabilir.
### Installer'ı Yeniden Oluşturma
```powershell
flutter pub get
flutter build windows --release
"C:\ProgramData\chocolatey\bin\ISCC.exe" windows\installer.iss
```
Çıktı: `dist\imajviewer_setup_1.0.0.exe`
## Klavye / Fare Kısayolları
| Etkileşim | Eylem |
|---|---|
| Sol tık + sürükle | Pan |
| Fare tekerleği | Zoom (imleç merkezli) |
| Sol çift tık | Fill / Fit geçişi |
| Sağ tık + dikey sürükle | Contrast (0.0 2.0) |
| Ctrl + Sağ tık + dikey sürükle | Saturation (0.0 2.0) |
| Ctrl+Shift + Sağ tık + dikey sürükle | Brightness (-100 100) |
| Shift + Sağ tık + dikey sürükle | Rotate (serbest) |
| Sağ çift tık | Reset (tüm efektler) |
| Sol / Sağ ok | Önceki / sonraki resim |
| Ctrl + Q | Pencereyi kapat |
| Ctrl + Shift + Q | Tüm pencereleri kapat |
## CI / Otomatik Build
Gitea Actions ile Windows build ve Inno Setup installer otomatik oluşturulur:
- **Trigger:** `main` dalına push
- **İş akışı:** `.gitea/workflows/build-windows.yml`
- **Çıktı:** `imajviewer.exe` + tüm DLL'ler, `imajviewer_setup_*.exe`
- **Tag bazlı release:** `v*` tag'i push'lanırsa Gitea Release oluşturulur (`GITEA_TOKEN` gerekli)
## Sistem Gereksinimleri — Donanım Hızlandırma (VM önerisi)
Uygulama yazılımsal render (llvmpipe) altında çalışır, ancak efekt sürüklemesi
büyük görsellerde kare atlayabilir. Sanal makinede akıcı kullanım için:
- **virtio-gpu + VirGL**: QEMU/libvirt'ta `virtio-vga-gl` / `virtio-gpu-gl`
(mesa VirGL yoluyla hızlandırılmış GL). `/dev/dri` görünür hale gelir,
llvmpipe yerine donanım render'ı kullanılır.
- **PCIe Passthrough**: gerçek GPU'nun VM'e bağlanması (en yüksek performans).
## Geliştirme
Flutter SDK gereklidir.
| [Flutter SDK](https://docs.flutter.dev/get-started/install) | stable channel |
| Linux: GTK dev libs | `libgtk-3-dev`, `ninja-build`, `clang`, `cmake` |
| Windows: VS 2022 Build Tools | "Desktop development with C++" workload |
```bash
flutter pub get
flutter build linux # Linux
flutter build windows # Windows
flutter build windows --release # Windows
```
### .deb paketini güncelleme
Linux output: `build/linux/x64/release/bundle/`
Windows output: `build\windows\x64\runner\Release\` (portable: copy the whole
folder including `imajviewer.exe` and all DLLs).
## Keyboard & Mouse Shortcuts
| Interaction | Action |
|---|---|
| Left drag | Pan |
| Mouse wheel | Zoom (cursor-centered) |
| Double left click | Fill / Fit toggle |
| Right drag + vertical | Contrast (0.0 2.0) |
| Ctrl + Right drag + vertical | Saturation (0.0 2.0) |
| Ctrl+Shift + Right drag + vertical | Brightness (-100 100) |
| Shift + Right drag + vertical | Rotate (free) |
| Double right click | Reset (all effects) |
| Left / Right arrow | Previous / next image |
| Ctrl + Q | Close window |
| Ctrl + Shift + Q | Close all windows |
## CI / Releases
GitHub Actions builds Linux `.deb` and Windows installer on every push to
`main`. Pushing a `v*` tag creates a GitHub Release with both installers as
assets.
## Development
```bash
flutter pub get
flutter analyze
flutter test
```
To rebuild the `.deb` locally:
```bash
flutter build linux --release
bash dist/rebuild-deb.sh
```
## Lisans
## License
MIT
[MIT](LICENSE)

26
SECURITY.md Normal file
View File

@@ -0,0 +1,26 @@
# Security Policy
## Reporting a vulnerability
Please do **not** open a public issue for security vulnerabilities.
Report them privately via GitHub's Security Advisories:
1. Go to the repository's **Security** tab
2. Click **Report a vulnerability**
3. Describe the issue, affected versions, and steps to reproduce
You can also email the maintainer directly: alhan@softmediadesign.com
We will acknowledge reports within 5 business days and keep you informed as the
issue is triaged and fixed. Please allow time for a fix to be released before
disclosing the vulnerability publicly.
## Supported versions
| Version | Supported |
|---------|--------------------|
| latest | ✅ Fully supported |
| older | ❌ Best effort only |
We recommend always running the latest release.

View File

@@ -1 +0,0 @@
[{"family":"MaterialIcons","fonts":[{"asset":"fonts/MaterialIcons-Regular.otf"}]}]

View File

@@ -1 +0,0 @@
{"format-version":[1,0,0],"native-assets":{}}

View File

@@ -1 +0,0 @@
{"app_name":"imajviewer","version":"1.0.0","build_number":"1","package_name":"imajviewer"}

Binary file not shown.

Binary file not shown.

View File

@@ -1 +0,0 @@
{"format-version":[1,0,0],"native-assets":{}}

Binary file not shown.

View File

View File

@@ -1,7 +1,11 @@
# imajViewer — Dokümantasyon İndeksi
| Tarih | Dosya | Konu |
|---|---|---|
||---|---|---|
| 2026-08-06 | [rapor-github-acik-kaynak.md](rapor-github-acik-kaynak.md) | **Rapor** — GitHub açık kaynak hazırlığı (gereksinimler, riskler, plan) |
| 2026-08-06 | [Implementation.md](Implementation.md) | Teknik uygulama dokümanı (kökten taşındı) |
| 2026-08-06 | [PRD.md](PRD.md) | Product Requirements Document (kökten taşındı) |
| 2026-08-06 | [update_plan_01.md](update_plan_01.md) | Pan sınırlama & zoom merkezi sorunu (kökten taşındı) |
| 2026-08-06 | [rapor-pan-kilitleme-nuks.md](rapor-pan-kilitleme-nuks.md) | **Rapor** — efekt uygulanmış görselde pan sırasında kilitlenme nüksü (analiz, açık sorular) |
| 2026-08-06 | [rapor-gezinme-ayarlar-print.md](rapor-gezinme-ayarlar-print.md) | **Rapor** — gezinme okları (hover), ayarlar/gear (sıralama), yazdırma (printing paketi) |
| 2026-08-06 | [rapor-sag-tik-donma-analizi.md](rapor-sag-tik-donma-analizi.md) | **Rapor** — sağ tuş efektlerinde donma analizi + slider UI değerlendirmesi |

View File

@@ -0,0 +1,88 @@
# Rapor — imajViewer'ı GitHub'da Açık Kaynak Yapmak
> Tarih: 2026-08-06
> Konu: GitHub'a açık kaynak repo koymak için gerekenler + mevcut repo durumu + geçmiş/silinme sorusu + "pro" hale getirme planı
## 1. Sorunun cevabı: dosya silersem GitHub'a eski dosyalar gider mi?
**Çalışma ağacından gider, geçmişten GİTMEZ.**
- Aynı repo geçmişini (aynı commit zincirini) GitHub'a push edersen: sildiğin dosyalar
son sürümde (en son commit'te) görünmez, ama **git geçmişindeki eski commit'lerde
aynen durur**. GitHub'da eski commit'lere tıklayan herkes o dosyaları görür ve indirebilir.
- Üstelik bu geçmiş 391 MB binary taşıyor (aşağıda detay). GitHub'a geçmişle gitmek hem
bu yükü hem de "eski dosyalar hâlâ orada" sorununu getirir.
- **Öneri:** GitHub için geçmişsiz / tek commit'li temiz başlangıç yap. Ya `git init` ile
yeni repo (sıfır geçmiş), ya da squash ile tek commit. O zaman ne sildiysen tamamen gider.
## 2. GitHub'a açık kaynak repo koymak için gerekenler (checklist)
| Öğe | Durum | Not |
|---|---|---|
| LICENSE dosyası | ❌ YOK | README'de "MIT" yazıyor ama kökte LICENSE dosyası yok. GitHub lisansı bunu algılamaz |
| README | ⚠️ Var | Gitea URL'leri içeriyor, Türkçe, badge yok (detay: madde 4) |
| CONTRIBUTING.md | ❌ YOK | Katkı kuralları (kod stili, test, PR süreci) |
| CODE_OF_CONDUCT.md | ❌ YOK | GitHub topluluk standartları için beklenir |
| SECURITY.md | ❌ YOK | Güvenlik açığı bildirim yolu (private advisory) |
| CHANGELOG.md | ❌ YOK | 1.0.0 → 1.1.0 geçmişi yazılı değil |
| CI (GitHub Actions) | ❌ YOK | Sadece `.gitea/workflows/` var — GitHub bunu ÇALIŞTIRMAZ, `.github/workflows/` gerekir |
| Issue/PR template | ❌ YOK | `.github/ISSUE_TEMPLATE/` + `PULL_REQUEST_TEMPLATE.md` |
| .gitignore | ✅ Var | İyi durumda (build/, .dart_tool/ ignore ediliyor) |
| Repo metadata | ❌ | description + topics (image-viewer, flutter, linux, windows) + lisans seçimi |
| Releases | ⚠️ | v1.1.0 tag + .deb/.exe asset'leri GitHub Releases'e taşınmalı |
| FUNDING.yml | ❌ | Opsiyonel |
## 3. KRİTİK: Sızıntı / hijyen riskleri
1. **Gömülü token:** `git remote -v` çıktısında origin URL'si
`https://git_alhan:1254baa3...@git.softmediadesign.com/...` — token URL'e gömülü.
Bu dosya `.git/config`'te; push ile GitHub'a gitmez (config transfer edilmez).
Ama GitHub'a yeni remote eklerken bu URL'yi yanlışlıkla kopyalamamaya dikkat.
Token'ı Gitea'dan yenilemek en temizi.
2. **Kişisel dosyalar repoda:** `imajviewer.desktop` (yerel .desktop, mode 600),
`Implementation.md`, `PRD.md`, `update_plan_01.md`, `docs/session-*.md`,
`docs/rapor-*.md` — iç geliştirme notları. Açık kaynak repo'da hepsi durmamalı.
3. **Binary dosyalar git'te:** `deb/` (16 MB libflutter_linux_gtk.so vb. — build çıktısı)
ve `dist/` (.deb, .exe — sürüm paketleri) git ile takip ediliyor. Binary'ler git'e
girmez; release asset'i olur. `.gitignore`'da `*.deb`/`*.exe` var ama `!dist/*.deb`
istisnası ve `deb/` dizini bunlarııkta bırakıyor.
4. **Mutlak yol:** `pubspec.yaml``msix_config.logo_path: C:/projects/imajviewer/...`
— yerel Windows yolu. GitHub runner'ında msix adımı kırılır; göreli yol olmalı.
5. **Geçmiş 391 MB:** En büyük blob'lar: setup.exe 24 MB ×4 kopya, libflutter_linux_gtk.so
16 MB, .deb'ler 8-11 MB ×8, tar.gz 9 MB. GitHub'da dosya limiti 100 MB — şu an
geçmiyor ama repo 1 GB'a yaklaşırsa GitHub uyarır, şişkinlik de kötü görünür.
## 4. README düzeltmeleri
- Klon/curl komutlarındaki `git.softmediadesign.com` URL'leri GitHub URL'si olmalı
- `.deb` kurulum adımındaki sürüm `1.0.0` yazılmış, güncel `1.1.0`
- Türkçe → açık kaynak için İngilizce (veya TR+EN iki dilli) önerilir
- Badge'ler (build status, license, release) + ekran görüntüsü (imajviewer.png var)
- "Gitea Actions" bölümü → "GitHub Actions" olarak yeniden yazılmalı
## 5. "Pro" hale getirme planı (uygulama adımları, onay sonrası)
1. **Kök temizliği:** `imajviewer.desktop` sil; iç dokümanları (Implementation/PRD/
update_plan/docs) taşı ya da sil — karar gerekiyor (aşağıda).
2. **Binary'leri git'ten çıkar:** `git rm --cached deb/ dist/*.deb dist/*.exe`,
`.gitignore`'u düzelt (deb/ tamamen ignore; dist/'te sadece rebuild-deb.sh kalsın).
Not: `git rm --cached` sadece ileriye dönük temizler; geçmişteki 391 MB durur —
tam temizlik için ya filter-repo ya da temiz başlangıç gerekir.
3. **Lisans:** Köke `LICENSE` (MIT) ekle.
4. **README'yi yeniden yaz:** İngilizce, GitHub linkleri, badge, screenshot.
5. **Topluluk dosyaları:** CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md,
CHANGELOG.md, `.github/` (issue/PR template + workflows/build-windows.yml).
6. **CI'ı GitHub'a uyarla:** `.gitea/workflows/build-windows.yml``.github/workflows/`:
`GITEA_TOKEN``GITHUB_TOKEN` (otomatik), release adımı
`softprops/action-gh-release` ile GitHub Release + .deb/.exe asset.
7. **pubspec.yaml:** `logo_path`'i göreli yap (CI'da msix kırılmasın).
8. **GitHub'a aktarım:** Yeni boş GitHub repo → `git remote add github <url>`
temiz tek commit (squash/orphan) → `git push github main`. Gitea ayrı kalır.
## 6. Açık kararlar (senin onayın gerekiyor)
1. README dili: İngilizce mi, TR mi, iki dilli mi? (açık kaynak görünürlüğü için İngilizce önerilir)
2. `docs/` ve kök dokümanlar: iç raporlar/session notları ne olacak? (yerel yedek alınır mı?)
3. Geçmiş: temiz tek commit mi, yoksa tüm geçmiş GitHub'a taşınsın mı? (öneri: temiz tek commit)
4. GitHub hesabı/org: repo hangi hesaba? Repo adı: `imajviewer` mi `imajViewer` mi?
5. Lisans: MIT kesin mi? (README'de MIT yazıyor, dosya yok)

View File

@@ -1,10 +0,0 @@
[Desktop Entry]
Type=Application
Name=imajViewer
Comment=Ultra hafif görüntü izleyici
Exec=imajviewer %F
Icon=imajviewer
Terminal=false
Categories=Graphics;Viewer;RasterGraphics;
MimeType=image/png;image/jpeg;image/webp;image/bmp;image/gif;image/jpg;image/vnd.wap.wbmp;
StartupNotify=false

View File

@@ -7,7 +7,7 @@ msix_config:
display_name: ImajViewer
publisher_display_name: imajviewer
identity_name: imajviewer.imajviewer
logo_path: C:/projects/imajviewer/windows/runner/resources/app_icon.ico
logo_path: windows/runner/resources/app_icon.ico
install_certificate: false
sign_msix: false