{
    "object_kind": "push",
    "event_name": "push",
    "before": "0ac16ad5177b25743e3e6ee7801cde4db6c61b8b",
    "after": "2522733127bf115542028bcc0e1aeda58a0e50b6",
    "ref": "refs\/heads\/main",
    "ref_protected": true,
    "checkout_sha": "2522733127bf115542028bcc0e1aeda58a0e50b6",
    "message": null,
    "user_id": 19,
    "user_name": "Bohunka Zsolt",
    "user_username": "bohunkazsolt",
    "user_email": "[REDACTED]",
    "user_avatar": "https:\/\/www.gravatar.com\/avatar\/495e14a024c9ddd64b339a3ee5bcce2be2e8468e23180b4ee001574938728865?s=80&d=identicon",
    "project_id": 206,
    "project": {
        "id": 206,
        "name": "leadmachine",
        "description": null,
        "web_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "avatar_url": null,
        "git_ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "git_http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git",
        "namespace": "LeadMachine",
        "visibility_level": 0,
        "path_with_namespace": "leadmachine\/leadmachine",
        "default_branch": "main",
        "ci_config_path": "",
        "homepage": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git"
    },
    "commits": [
        {
            "id": "50da4780313949a658aff9a8d2feb775c6425a27",
            "message": "Add rate limiting and backoff logic for live calls and transcripts (D-120).\n\n- **Backend**:\n  - Introduced separate, generous rate limits (300 requests\/minute) for live call-related endpoints (e.g., GET `\/calls\/{id}` and `\/calls\/{id}\/transcript`) to prevent interruptions during live sessions. Standard rate remains 120 requests\/minute for other endpoints.\n  - Updated `AppServiceProvider` to conditionally apply rate limits based on the endpoint type, segregating live call traffic from other API requests.\n  - Added `AppRateLimiterTest` to ensure correct application of rate limits for both live and general requests.\n\n- **Frontend**:\n  - Implemented 429 response handling with a 5-second backoff period for live transcript polling to avoid continuous retries after hitting server limits.\n  - Enhanced `_poll` function in `live_call_screen.dart` to manage backoff logic and maintain a smooth user experience during rate-limited periods.\n  - Updated API error handling for live sessions, preserving the current state while waiting for backoff to expire.\n\n- **Testing**:\n  - Added backend unit tests to validate rate limit configurations and user-based key generation logic.\n  - Extended frontend tests to ensure proper backoff behaviors during excessive request scenarios.\n",
            "title": "Add rate limiting and backoff logic for live calls and transcripts (D-120).",
            "timestamp": "2026-10-11T18:59:51+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/50da4780313949a658aff9a8d2feb775c6425a27",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "backend\/tests\/Unit\/AppRateLimiterTest.php"
            ],
            "modified": [
                "backend\/app\/Providers\/AppServiceProvider.php",
                "frontend\/lib\/features\/live_call\/live_call_screen.dart"
            ],
            "removed": []
        },
        {
            "id": "3ce2b1aadb7140af8ca994a9797c5dd136a42fed",
            "message": "Add test coverage for admin services delegation and CSS for web admin interface (D-109).\n\n- **Backend**:\n  - Introduced `AdminServicesDelegationTest` to verify that JSON admin APIs correctly delegate to services (`MarketRules`, `ConfigChanges`, `LabWorkbench`), ensuring response consistency with services (shape, errors, and status).\n  - Validated JSON API behavior for rules retrieval, invalid payloads, service logic, version rollbacks, and lab operations.\n  - Covered market-specific and error edge cases for APIs.\n\n- **Frontend**:\n  - Added a standalone `admin.css` for the web admin interface, adhering to mockups and Flutter tokens for styling without Tailwind\/Vite.\n  - Implemented BEM-like class naming (`lm-*`) for modular styling of admin components: buttons, forms, table, modal, sidebar, etc.\n  - Included locally hosted fonts (`Geist`, `Geist Mono`) with OFL licensing.\n\n- **Docs**:\n  - Improved inline comments in added tests and CSS for ease of understanding and maintenance.\n  - Described styling and test objectives in `DEVELOPMENT.md`.\n",
            "title": "Add test coverage for admin services delegation and CSS for web admin interface (D-109).",
            "timestamp": "2026-10-11T19:00:25+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/3ce2b1aadb7140af8ca994a9797c5dd136a42fed",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "backend\/public\/admin-assets\/admin.css",
                "backend\/public\/admin-assets\/fonts\/Geist-Bold.ttf",
                "backend\/public\/admin-assets\/fonts\/Geist-Medium.ttf",
                "backend\/public\/admin-assets\/fonts\/Geist-Regular.ttf",
                "backend\/public\/admin-assets\/fonts\/Geist-SemiBold.ttf",
                "backend\/public\/admin-assets\/fonts\/GeistMono-Medium.ttf",
                "backend\/public\/admin-assets\/fonts\/GeistMono-Regular.ttf",
                "backend\/public\/admin-assets\/fonts\/OFL.txt",
                "backend\/resources\/views\/admin\/placeholder.blade.php",
                "backend\/tests\/Feature\/AdminServicesDelegationTest.php"
            ],
            "modified": [],
            "removed": []
        },
        {
            "id": "2522733127bf115542028bcc0e1aeda58a0e50b6",
            "message": "Merge branch 'main' of git.dunahousedev.hu:leadmachine\/leadmachine\n",
            "title": "Merge branch 'main' of git.dunahousedev.hu:leadmachine\/leadmachine",
            "timestamp": "2026-10-11T19:00:29+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/2522733127bf115542028bcc0e1aeda58a0e50b6",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [],
            "modified": [
                ".gitlab-ci.yml"
            ],
            "removed": []
        }
    ],
    "total_commits_count": 3,
    "push_options": [],
    "repository": {
        "name": "leadmachine",
        "url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "description": null,
        "homepage": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "git_http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git",
        "git_ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "visibility_level": 0
    },
    "output": [
        "\/etc\/apache2\/sites-available\/bohunkazsolt.leadmachine.dunahousedev.hu.conf exists.",
        "\/etc\/apache2\/sites-available\/leadmachine.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:leadmachine\/leadmachine",
        "   0ac16ad..2522733  main       -> origin\/main",
        "HEAD is now at 2522733 Merge branch 'main' of git.dunahousedev.hu:leadmachine\/leadmachine",
        "--OK--"
    ]
}