{
    "object_kind": "push",
    "event_name": "push",
    "before": "2891fe6926a78512b2728d9019bfcefd42ed9d71",
    "after": "e66362f623765c2283da516b7bd552f3fa80de55",
    "ref": "refs\/heads\/main",
    "ref_protected": true,
    "checkout_sha": "e66362f623765c2283da516b7bd552f3fa80de55",
    "message": null,
    "user_id": 22,
    "user_name": "B\u00edr\u00f3 Marcell",
    "user_username": "biromarcell",
    "user_email": null,
    "user_avatar": "https:\/\/www.gravatar.com\/avatar\/52dc890fb46e6c1c30181b64ce67280a6bb8794dec98c20eaf6e1aa110942e7f?s=80&d=identicon",
    "project_id": 203,
    "project": {
        "id": 203,
        "name": "atriumbackend",
        "description": null,
        "web_url": "http:\/\/git.dunahousedev.hu\/atrium\/atriumbackend",
        "avatar_url": null,
        "git_ssh_url": "git@git.dunahousedev.hu:atrium\/atriumbackend.git",
        "git_http_url": "http:\/\/git.dunahousedev.hu\/atrium\/atriumbackend.git",
        "namespace": "atrium",
        "visibility_level": 0,
        "path_with_namespace": "atrium\/atriumbackend",
        "default_branch": "main",
        "ci_config_path": "",
        "homepage": "http:\/\/git.dunahousedev.hu\/atrium\/atriumbackend",
        "url": "git@git.dunahousedev.hu:atrium\/atriumbackend.git",
        "ssh_url": "git@git.dunahousedev.hu:atrium\/atriumbackend.git",
        "http_url": "http:\/\/git.dunahousedev.hu\/atrium\/atriumbackend.git"
    },
    "commits": [
        {
            "id": "e66362f623765c2283da516b7bd552f3fa80de55",
            "message": "Badge: a valodi olvasatlan-szam kerul az app ikonjara\n\nJelzes: tobb olvasatlan uzenet, de az ikonon 1-es all.\n\nSehol nem kuldtunk badge-szamot, ami ket kulonbozo tunetet adott. iOS-en\negyaltalan NEM volt szam (ott az ikon csak akkor mutat badge-et, ha a push\n`aps.badge` mezot tartalmaz), Androidon pedig a launcher az ERTESITESEK\nszamat mutatta \u2014 es mivel a kliens szandekosan beszelgetesenkent EGY\nertesitest posztol, MessagingStyle-lal egymas ala rakva az uzeneteket, egy\negesz szal egynek szamitott.\n\nUj App\\Support\\UnreadBadge: egy lekerdezessel adja meg minden cimzett teljes\nolvasatlan-szamat, ugyanazzal a vizjel-logikaval, amit a beszelgeteslista\nhasznal (ConversationController@index) \u2014 igy az ikon es a lista nem mond\nellent egymasnak.\n\nHarom dontes:\n\n* A NEMITOTT beszelgetesek kimaradnak. Ez az egyetlen pont, ahol a badge\n  szandekosan elt\u00e9r a listatol: a nemitas azt jelenti \"ne szolj emiatt\", es\n  egy olyan szam, amit csak ugy lehet eltuntetni, hogy elolvasod, amit epp\n  elnemitottal, rosszabb a semminel.\n* A NULLA valodi utasitas \u2014 az torli a badge-et \u2014, ezert akinek nincs\n  olvasatlanja, az is kap szamot. Kihagyva a regi szam ott ragadna.\n* A HIANYZO ertek nem nulla. A kliensben a mezo null-ozhato: regi backendnel\n  vagy nyitott appnal erkezo socket-uzenetnel null megy, igy nem toroljuk a\n  badge-et olyankor, amikor nem tudjuk a valodi erteket.\n\nAz APNs-kuldo mostantol eszkozonkent epit payloadot (a badge cimzettenkent\nmas), az FCM pedig az adat-blokkban viszi, mert Androidon nincs\nszerveroldali badge-mezo: a launcher a kliens altal posztolt ertesitesrol\nolvassa le a szamot.\n\n12 teszt: a szamolas szabalyai (uzenet nem beszelgetes, tobb szal osszege,\nsajat uzenet, olvasasi es history-vizjel, nemitas, torolt uzenet,\ncimzettenkenti kulonbseg), plusz a huzalozas \u2014 hogy a szam el is jut a\npushig. Mutacioval ellenorizve: a nemites-szures kivetele egy tesztet, az\n\"uzenet helyett beszelgetes szamolasa\" harmat buktat, koztuk magat a\nbejelentett hibat.\n\nEgy korlat, ami MEGMARAD: olvasas utan a badge csak a kovetkezo push\nerkezesekor frissul. Ahhoz, hogy azonnal nullazodjon, a kliensnek mag\u00e1nak\nkellene irnia az ikon-badge-et, amihez kulon csomag kell.\n\n219 backend teszt zold.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\n",
            "title": "Badge: a valodi olvasatlan-szam kerul az app ikonjara",
            "timestamp": "2026-09-18T15:14:38+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/atrium\/atriumbackend\/-\/commit\/e66362f623765c2283da516b7bd552f3fa80de55",
            "author": {
                "name": "birmar2",
                "email": "biromarcell1994@gmail.com"
            },
            "added": [
                "app\/Support\/UnreadBadge.php",
                "tests\/Feature\/PushBadgeTest.php",
                "tests\/Feature\/UnreadBadgeTest.php"
            ],
            "modified": [
                "app\/Jobs\/SendMessagePush.php",
                "app\/Services\/Push\/ApnsSender.php",
                "app\/Services\/Push\/FcmSender.php"
            ],
            "removed": []
        }
    ],
    "total_commits_count": 1,
    "push_options": [],
    "repository": {
        "name": "atriumbackend",
        "url": "git@git.dunahousedev.hu:atrium\/atriumbackend.git",
        "description": null,
        "homepage": "http:\/\/git.dunahousedev.hu\/atrium\/atriumbackend",
        "git_http_url": "http:\/\/git.dunahousedev.hu\/atrium\/atriumbackend.git",
        "git_ssh_url": "git@git.dunahousedev.hu:atrium\/atriumbackend.git",
        "visibility_level": 0
    },
    "output": [
        "\/etc\/apache2\/sites-available\/biromarcell.atriumbackend.dunahousedev.hu.conf exists.",
        "\/etc\/apache2\/sites-available\/atriumbackend.dunahousedev.hu.conf exists.",
        "Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log",
        "An unexpected error occurred:",
        "BrokenPipeError: [Errno 32] Broken pipe",
        "Ask for help or search for solutions at https:\/\/community.letsencrypt.org. See the logfile \/var\/log\/letsencrypt\/letsencrypt.log or re-run Certbot with -v for more details.",
        "Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log",
        "An unexpected error occurred:",
        "BrokenPipeError: [Errno 32] Broken pipe",
        "Ask for help or search for solutions at https:\/\/community.letsencrypt.org. See the logfile \/var\/log\/letsencrypt\/letsencrypt.log or re-run Certbot with -v for more details.",
        "Fetching origin",
        "From git.dunahousedev.hu:atrium\/atriumbackend",
        "   2891fe6..e66362f  main       -> origin\/main",
        "HEAD is now at e66362f Badge: a valodi olvasatlan-szam kerul az app ikonjara",
        "--OK--"
    ]
}