0000000000000000000000000000000000000000 8805a5e8caf7d2cef4297b0bb3ea62d74ffc429d fullstackcoder <muratdemirtastr@gmail.com> 1754521951 +0300	commit (initial): Initial commit: Flask access control system with TCP device management
8805a5e8caf7d2cef4297b0bb3ea62d74ffc429d 01c63f307654cec5092bc90756f50c37c3f26ac9 fullstackcoder <muratdemirtastr@gmail.com> 1754592163 +0300	commit: accessServer.py tamamen yeniden yazıldı - Tüm indentation hataları düzeltildi ve eksik route'lar eklendi
01c63f307654cec5092bc90756f50c37c3f26ac9 47666a58853e8c1fbe180698945d308ef96b6837 fullstackcoder <muratdemirtastr@gmail.com> 1754592450 +0300	commit: Cihaz ayarları sayfasında getdeviceinfo komutu kaldırıldı - Sadece veritabanından son JSON verisi alınıyor
47666a58853e8c1fbe180698945d308ef96b6837 5d7f41f97f00068d3d0a9885c708cc1d531e0e7c fullstackcoder <muratdemirtastr@gmail.com> 1754599502 +0300	commit: Dosya yapısını modüler hale getirdim - accessServer.py'yi parçalara böldüm
5d7f41f97f00068d3d0a9885c708cc1d531e0e7c 0d3bee8ce73cfe5992efae56730f7f93a60e5757 fullstackcoder <muratdemirtastr@gmail.com> 1754599858 +0300	commit: Circular import hatası düzeltildi - routes.py fonksiyon olarak yeniden yazıldı
0d3bee8ce73cfe5992efae56730f7f93a60e5757 7bd4adc1133c2b238fe0e65d41224ba887df2b2a fullstackcoder <muratdemirtastr@gmail.com> 1754600141 +0300	commit: setdatetime yıl formatı düzeltildi - 2025 yerine 25 gönderiliyor
7bd4adc1133c2b238fe0e65d41224ba887df2b2a 4e70614a0eb29e30766428b47df654c4c5336377 fullstackcoder <muratdemirtastr@gmail.com> 1754785631 +0300	commit: feat: Complete user management system overhaul
4e70614a0eb29e30766428b47df654c4c5336377 88b42ce5875c21e3830c4aad64630f65d47c5d0c fullstackcoder <muratdemirtastr@gmail.com> 1754793061 +0300	commit: feat: Kullanıcı düzenleme sayfası lokalizasyonu ve geri buton tasarımı iyileştirmeleri
88b42ce5875c21e3830c4aad64630f65d47c5d0c b2e39938d223d1360ad1b785ea260cb0fc5e6bca fullstackcoder <muratdemirtastr@gmail.com> 1754856433 +0300	commit: Stop auto-labeling TCPSERVER logs as 'Mobil uygulama giriş'; only log device events, leave notes empty unless set by mobile action
b2e39938d223d1360ad1b785ea260cb0fc5e6bca c0064f61dcabf49657336a7c1ff17e0c1583e3b2 fullstackcoder <muratdemirtastr@gmail.com> 1754856474 +0300	commit: On mobile grant success, also insert a central access_logs record (access_type=3, is_granted=1)
c0064f61dcabf49657336a7c1ff17e0c1583e3b2 d48c1d1830150dad500b2d01b8b21dfbb1d5f78d fullstackcoder <muratdemirtastr@gmail.com> 1754857389 +0300	commit: Mobile grant: write central access_logs with is_terminal=2 and device-like timestamp; add delete APIs for access/device logs; fix templates to call APIs
d48c1d1830150dad500b2d01b8b21dfbb1d5f78d 0094a097d6945776a91c19b2fdf2d0cef82e6fe4 fullstackcoder <muratdemirtastr@gmail.com> 1754857868 +0300	commit: Align mobile + central timestamps; enrich notes only for is_terminal=2; add debug logging for action
0094a097d6945776a91c19b2fdf2d0cef82e6fe4 773b0b1a92ed10b037fb20b0f381ff0105228e6b fullstackcoder <muratdemirtastr@gmail.com> 1754858056 +0300	commit: Stabil note mapping: store mobile notes in mobile_access_notes keyed by access_logs.id; enrich only for is_terminal=2; fix deletes to clear mapping
773b0b1a92ed10b037fb20b0f381ff0105228e6b f402fc1f1ccb9992901f6552720211b83deb641e fullstackcoder <muratdemirtastr@gmail.com> 1754858266 +0300	commit: Device-origin access logs: show 'Cihaz Verisi' in notes; keep mobile notes only for is_terminal=2
f402fc1f1ccb9992901f6552720211b83deb641e 0f5a082a49f14f3008f5cb2b50adfbb979c8275f fullstackcoder <muratdemirtastr@gmail.com> 1754858478 +0300	commit: Dashboard: show notes; device entries as 'Cihaz Verisi', mobile notes via mobile_access_notes; include id/is_terminal in fallback query
0f5a082a49f14f3008f5cb2b50adfbb979c8275f ca04279c57a80f69f662e5b5eb947909af300977 fullstackcoder <muratdemirtastr@gmail.com> 1754858667 +0300	commit: Home dashboard: show notes for central logs (device='Cihaz Verisi', mobile from mobile_access_notes); include id/is_terminal across queries
ca04279c57a80f69f662e5b5eb947909af300977 a98d9df307c1480cd2cdd98ba9249113b5a1d2d9 fullstackcoder <muratdemirtastr@gmail.com> 1754859119 +0300	commit: Label mobile-origin TCP SERVER entries as 'MOBIL SAYFA' and change Card UUID header to 'UUID'
a98d9df307c1480cd2cdd98ba9249113b5a1d2d9 80e3618f4759e84fbe866f7ac12626af3c125e7d fullstackcoder <muratdemirtastr@gmail.com> 1754859597 +0300	commit: Filtering: search across all cells (name, uuid, device, notes, type, status, timestamp) on home and access-logs; add 1000 dummy logs via script
80e3618f4759e84fbe866f7ac12626af3c125e7d 41bec19da6777bca702c291ddb0038f1af0e1ab0 fullstackcoder <muratdemirtastr@gmail.com> 1754859740 +0300	commit: Restore pagination: home uses page/per_page slicing; access-logs keeps pagination block
41bec19da6777bca702c291ddb0038f1af0e1ab0 4d0503d3e1727b822f52e7c1c0396e5ef288ab1f fullstackcoder <muratdemirtastr@gmail.com> 1754860180 +0300	commit: Fix pagination: home and access-logs full controls + anchor + clamp per_page to 50; remove LIMIT from admin fetch
4d0503d3e1727b822f52e7c1c0396e5ef288ab1f e65d3b094021129c3ce02b1491ea2cdc96bf8c09 fullstackcoder <muratdemirtastr@gmail.com> 1754860506 +0300	commit: Home pagination: compute total_pages from total_access and log state
e65d3b094021129c3ce02b1491ea2cdc96bf8c09 444197de0612dcf0ae06346fbbfb125a84dcc2e4 fullstackcoder <muratdemirtastr@gmail.com> 1754860652 +0300	commit: Home (non-admin): fetch up to 1000 user_access_logs so pagination (50/page) shows multiple pages
444197de0612dcf0ae06346fbbfb125a84dcc2e4 8cf2db979b344f49efa1842f1e9b0057aaaf8b26 fullstackcoder <muratdemirtastr@gmail.com> 1754860818 +0300	commit: Dashboard: always render pagination controls; links carry page/per_page and anchor
8cf2db979b344f49efa1842f1e9b0057aaaf8b26 9a6b1855476718a581db38bd052b929cf5987a43 fullstackcoder <muratdemirtastr@gmail.com> 1754860933 +0300	commit: Pagination: show pages 1..min(total_pages,20) for both home and access-logs
9a6b1855476718a581db38bd052b929cf5987a43 0b460bced3050176324cc1d9dce061cca67168b0 fullstackcoder <muratdemirtastr@gmail.com> 1754861086 +0300	commit: Home (non-admin): merge user_access_logs with central access_logs (up to 1000), sort desc, then paginate 50/page
0b460bced3050176324cc1d9dce061cca67168b0 0cb4d2a357f1553643b80ce0ce9723f5e95ba316 fullstackcoder <muratdemirtastr@gmail.com> 1754861235 +0300	commit: Filtering: match human-readable tokens (button/buton, MOBIL SAYFA, statuses) across all cells on home and access-logs
0cb4d2a357f1553643b80ce0ce9723f5e95ba316 6ae4366eefb7e77de34e6a035290832910863473 fullstackcoder <muratdemirtastr@gmail.com> 1754861334 +0300	commit: Home filtering: apply global filter before pagination over merged list (all cells + type tokens)
6ae4366eefb7e77de34e6a035290832910863473 8852d212b5275ee175439dd8e0c18e5825a3efa4 fullstackcoder <muratdemirtastr@gmail.com> 1754868222 +0300	commit: Dashboard: force UUID->name resolution before filtering; fix users.db close indentation in mapping blocks
8852d212b5275ee175439dd8e0c18e5825a3efa4 d5068a506e32cb56c4d90bc0f885f59200912e2e fullstackcoder <muratdemirtastr@gmail.com> 1754868296 +0300	commit: Dashboard stats: exclude MOBIL/WEB SAYFASI (is_terminal=2) from Toplam Geçiş and granted/denied; keep pagination counts using total_rows
d5068a506e32cb56c4d90bc0f885f59200912e2e c4286d68d1372ca088e93d2d535b3349e8681766 fullstackcoder <muratdemirtastr@gmail.com> 1754868406 +0300	commit: Access Logs: robust UUID->name resolution (strip, bulk resolve) to avoid 'Bilinmeyen Kullanıcı' when UUID exists
c4286d68d1372ca088e93d2d535b3349e8681766 eec9669e4d28d5b4fa940034e54bc319ff0ce13d fullstackcoder <muratdemirtastr@gmail.com> 1754868575 +0300	commit: Realtime: only reload on new access_logs (check-updates returns latest_id; frontend tracks lastKnownLogId)
eec9669e4d28d5b4fa940034e54bc319ff0ce13d d31e93a87469e942cbf168413b9440a43aaa6cad fullstackcoder <muratdemirtastr@gmail.com> 1754869048 +0300	commit: Dashboard: show last_login under welcome section (users.db last_login)
d31e93a87469e942cbf168413b9440a43aaa6cad 55b20b0109c50fbcab93eba47d30d0ca780b08c0 fullstackcoder <muratdemirtastr@gmail.com> 1754869279 +0300	commit: BUTTON UUID: show user_name as '<Cihaz Adı> BUTTON' on Dashboard and Access Logs when card_uuid is BUTTON-1/2
55b20b0109c50fbcab93eba47d30d0ca780b08c0 218461f37b0fafeedebb753b426ede4a57bbef2b fullstackcoder <muratdemirtastr@gmail.com> 1754869452 +0300	commit: Fix: replace 'except Exception as _' with 'as e' and correct malformed try/except block near last_login_value
218461f37b0fafeedebb753b426ede4a57bbef2b 4c27086acf84e62c2d9c6be05b3a778be8410c7f fullstackcoder <muratdemirtastr@gmail.com> 1754869598 +0300	commit: Last login: read from data.db fallback to users.db; show N/A if missing
4c27086acf84e62c2d9c6be05b3a778be8410c7f 583d2d81f3c3084c662ca3646de8e74f7ed61922 fullstackcoder <muratdemirtastr@gmail.com> 1754869676 +0300	commit: Format last_login without microseconds (YYYY-MM-DD HH:MM:SS)
583d2d81f3c3084c662ca3646de8e74f7ed61922 02bf1055867fbeccc268b090e9f800ed7bcdf188 fullstackcoder <muratdemirtastr@gmail.com> 1754869760 +0300	commit: Dashboard: show 'Bilinmeyen Kullanıcı' when UUID has no resolved name (consistent with access-logs)
02bf1055867fbeccc268b090e9f800ed7bcdf188 641d66497cf58158473804c45755af26edfdfb93 fullstackcoder <muratdemirtastr@gmail.com> 1754870838 +0300	commit: getdeviceinfo: auto-upsert mastercarduuid into device_cards (user_name='mastercard', terminal_mode_access=1)
641d66497cf58158473804c45755af26edfdfb93 35f4d416d16a3f5ab7f7735aab7d7af7df13b0ec fullstackcoder <muratdemirtastr@gmail.com> 1754871182 +0300	commit: Users: show mastercard per device (device_cards user_name='mastercard') under device badges
35f4d416d16a3f5ab7f7735aab7d7af7df13b0ec 571f348ec90c497d3107b689595420f62da8088a fullstackcoder <muratdemirtastr@gmail.com> 1754871387 +0300	commit: Mastercard user: auto-create/update MASTERCARD NFC user (card_uuid=mastercarduuid) and assign to device on getdeviceinfo
571f348ec90c497d3107b689595420f62da8088a 263e40112a926c0d1fcb7d8f128784eebaaf4159 fullstackcoder <muratdemirtastr@gmail.com> 1754871614 +0300	commit: Users: ensure MASTERCARD NFC user per device (from device_cards) and remove inline mastercard badge display
263e40112a926c0d1fcb7d8f128784eebaaf4159 f277ce7967acef8e3053f061bbe678004b513b1b fullstackcoder <muratdemirtastr@gmail.com> 1754871829 +0300	commit: Fix mastercard user insert bindings and ensure email defined for data.db mirror
f277ce7967acef8e3053f061bbe678004b513b1b 5dfeab511c18ad4a31dddc21c7761566151ab6da fullstackcoder <muratdemirtastr@gmail.com> 1754871982 +0300	commit: Set profile_image='mastercard.png' for MASTERCARD users (create/update in users.db and data.db)
5dfeab511c18ad4a31dddc21c7761566151ab6da fc4e34587d5a93620fdc2c271753b09a639e0d12 fullstackcoder <muratdemirtastr@gmail.com> 1754872235 +0300	commit: Fix SQL syntax: use double quotes for COALESCE/NULLIF string literal in profile_image update
fc4e34587d5a93620fdc2c271753b09a639e0d12 dc53f8b84ebed502e7357355ac116c1facccac0f fullstackcoder <muratdemirtastr@gmail.com> 1754872338 +0300	commit: Users: support '@mastercard.png' style profile_image pointing to static/img/; fallback to uploads/ if not prefixed
dc53f8b84ebed502e7357355ac116c1facccac0f dacdc45e7aacb079b122e3d347870a80f70a8eb9 fullstackcoder <muratdemirtastr@gmail.com> 1754872865 +0300	commit: Allow deleting MASTERCARD: add blocklist to prevent auto re-create; don't delete '@' static avatars; fix avatar cache and cleanup
dacdc45e7aacb079b122e3d347870a80f70a8eb9 ccda225edf3886a12c27d01812c79506e31a01ed fullstackcoder <muratdemirtastr@gmail.com> 1754874270 +0300	commit: Use @mastercard.png for MASTERCARD profile_image (users.db + data.db + update path)
ccda225edf3886a12c27d01812c79506e31a01ed ce1152f801e2847d76c6d9a127be0624dc69fbf8 fullstackcoder <muratdemirtastr@gmail.com> 1754874975 +0300	commit: Add 5s suppression window for MASTERCARD re-creation after bulk delete; expose tcp_manager.suppress_mastercard(5)
ce1152f801e2847d76c6d9a127be0624dc69fbf8 f8a47f3685bc3e645e829260993edc8c507bd558 fullstackcoder <muratdemirtastr@gmail.com> 1754875152 +0300	commit: Dashboard home: sync mobile TCP SERVER notes from mobile_access_notes so 'Admin Panel' vs 'Mobil Sayfa' matches access-logs
f8a47f3685bc3e645e829260993edc8c507bd558 f740f42ae2afe12789f680d950f79b2432c20844 fullstackcoder <muratdemirtastr@gmail.com> 1754875371 +0300	commit: PDF: fix filter indentation and ensure rows fetched for non-admin when no devices; avoid empty results
f740f42ae2afe12789f680d950f79b2432c20844 80ac0e6183114bfb805ab4e9b3ce502723382f6f fullstackcoder <muratdemirtastr@gmail.com> 1754875638 +0300	commit: PDF: default 'Bilinmeyen Kullanıcı'; Access type override to WEB SAYFASI when note='Admin Panel' and MOBIL SAYFA otherwise; ensure dashboard item.access_type=3 when mobile note found
80ac0e6183114bfb805ab4e9b3ce502723382f6f ff863fa8fa5114cf0853f7546257bf618ae82a82 fullstackcoder <muratdemirtastr@gmail.com> 1754876656 +0300	commit: UI ve çeviri güncellemeleri
ff863fa8fa5114cf0853f7546257bf618ae82a82 428b3e46eda6c47fcaf27aaf279363b53deeede3 fullstackcoder <muratdemirtastr@gmail.com> 1754876867 +0300	commit: access_logs: ikon alt metinlerini boşalt ve aria-hidden ile kopyalama tutarlılığını sağla
428b3e46eda6c47fcaf27aaf279363b53deeede3 f9a11bd181b5fff18de4b5eed353633e2363f4f9 fullstackcoder <muratdemirtastr@gmail.com> 1754877289 +0300	commit: access_logs: not zenginleştirmeyi tutarlı yap; mobile_access_notes öncelikli, user_access_logs geri dönüş; uid zorunluluğunu kaldır
f9a11bd181b5fff18de4b5eed353633e2363f4f9 79cd5f644a229d0bbf3c6bffdbf8c35a84110179 fullstackcoder <muratdemirtastr@gmail.com> 1754877683 +0300	commit: UI: access_logs tablosunu ortak partial'a taşı; dashboard ve access-logs aynı görünüme geçti
79cd5f644a229d0bbf3c6bffdbf8c35a84110179 f170ce47eac3ce00a7b5178f0c4882004ee3471f fullstackcoder <muratdemirtastr@gmail.com> 1754877878 +0300	commit: dashboard: duplicate table head/structure removed; use shared partial directly
f170ce47eac3ce00a7b5178f0c4882004ee3471f ab825692576496073e22402a7133c0e85ed24d29 fullstackcoder <muratdemirtastr@gmail.com> 1754878387 +0300	commit: access_logs: ortak hazırlayıcı fonksiyon; home tablo verisi artık access-logs ile aynı kaynaktan
ab825692576496073e22402a7133c0e85ed24d29 2bd62efd63c3c2e6e97226d5b1305a5fcfaebb30 fullstackcoder <muratdemirtastr@gmail.com> 1754878696 +0300	commit: fix: duplicate /access-logs route removed to avoid endpoint overwrite
2bd62efd63c3c2e6e97226d5b1305a5fcfaebb30 29789b6af32ea7ee9730c235b5ab8f7bb60d2c40 fullstackcoder <muratdemirtastr@gmail.com> 1754879012 +0300	commit: fix: ensure uconn.close() is outside loops; improve UUID->name resolution consistency
29789b6af32ea7ee9730c235b5ab8f7bb60d2c40 dbc814a417424f79f88a286fc81b22682502f3bc fullstackcoder <muratdemirtastr@gmail.com> 1754879276 +0300	commit: access_logs: UUID->isim son-garanti eşlemesini ekle; users.db kapatma konumlarını düzelt
dbc814a417424f79f88a286fc81b22682502f3bc 0554fd07808442f110c27889fbf1ffe0739bf6c9 fullstackcoder <muratdemirtastr@gmail.com> 1754879490 +0300	commit: dashboard: pagination sabit 50/ sayfa; en fazla 5 sayfa ile sınırla
0554fd07808442f110c27889fbf1ffe0739bf6c9 9e39bb42f4f4fcb871966aa6c63d16d175e73f54 fullstackcoder <muratdemirtastr@gmail.com> 1754879576 +0300	commit: mobile: pasif kullanıcı için open-device erişimini 403 ile engelle
9e39bb42f4f4fcb871966aa6c63d16d175e73f54 9f7bbb8ad3fb8c5f31b01d72014139248a321e5c fullstackcoder <muratdemirtastr@gmail.com> 1754879677 +0300	commit: dashboard: total_logs context eklendi (partial uyumluluğu)
9f7bbb8ad3fb8c5f31b01d72014139248a321e5c 09bb1cc398afe77416eff18368db35c62f38fbc2 fullstackcoder <muratdemirtastr@gmail.com> 1754880112 +0300	commit: mobile: dashboard kullanıcı türünü anlık DB'den oku + periyodik kontrol; login'e dil seçimi eklendi; başlıklar title-case
09bb1cc398afe77416eff18368db35c62f38fbc2 73951700f3262f15fc46164ae2dfaa851c9c9faa fullstackcoder <muratdemirtastr@gmail.com> 1754880265 +0300	commit: mobile-login: dil seçici web login ile aynı sağ üst dropdown olarak güncellendi
73951700f3262f15fc46164ae2dfaa851c9c9faa cff35eff49574edbfdabf6c3611158400a767461 fullstackcoder <muratdemirtastr@gmail.com> 1754880489 +0300	commit: access_logs: boş durum görünümü ortalanmış ve şık hale getirildi; deleteLog çağrısı sadeleştirildi
cff35eff49574edbfdabf6c3611158400a767461 55fc689be4eca9f81fc21d4fac8597914e373136 fullstackcoder <muratdemirtastr@gmail.com> 1754880679 +0300	commit: mobile: dil seçimi dropdownları next parametresi ile düzeltildi; dashboard ve login'de lokalizasyon akışı çalışır
55fc689be4eca9f81fc21d4fac8597914e373136 da4906e6df1f699161b39bc41b05cc64023fea9f fullstackcoder <muratdemirtastr@gmail.com> 1754880805 +0300	commit: mobile-login: metinler lokalizasyon anahtarlarına taşındı; İngilizce seçiminde login metinleri değişir
da4906e6df1f699161b39bc41b05cc64023fea9f 8a81bd88f5af2a24a7246e1320c59db220d914e1 fullstackcoder <muratdemirtastr@gmail.com> 1754880926 +0300	commit: mobile: login placeholder'lar lokalize edildi; dashboard dil seçimi kaldırıldı
8a81bd88f5af2a24a7246e1320c59db220d914e1 cb71fbf7890898ddc380958f55200058a976ab04 fullstackcoder <muratdemirtastr@gmail.com> 1754881071 +0300	commit: mobile: dashboard ve login lokalizasyonları genişletildi; JS metinleri tojson ile güvenli eklendi
cb71fbf7890898ddc380958f55200058a976ab04 5cc17928040cc6391bfa7277603f8474fabed1f8 fullstackcoder <muratdemirtastr@gmail.com> 1754881140 +0300	commit: i18n: login_password_placeholder eklendi ve mobil login'de kullanıldı
5cc17928040cc6391bfa7277603f8474fabed1f8 82f093d9bc90c97c8c7958fc73898cee03bf50b4 fullstackcoder <muratdemirtastr@gmail.com> 1754881241 +0300	commit: i18n(en): login_username/login_password/login_button eklendi
82f093d9bc90c97c8c7958fc73898cee03bf50b4 93251e24555fc78b7df07535f67d07b45523cca3 fullstackcoder <muratdemirtastr@gmail.com> 1754881464 +0300	commit: dashboard: TR sabit metinler i18n'e taşındı; granted/denied/last_access/no_transitions lokalize edildi
93251e24555fc78b7df07535f67d07b45523cca3 575ad582686f167fd4d0db0d3a3d8ce09e73a1d7 fullstackcoder <muratdemirtastr@gmail.com> 1754881741 +0300	commit: i18n: access_logs description ve TCP SERVER etiketleri lokalize edildi; dashboard metinleri tamamlandı
575ad582686f167fd4d0db0d3a3d8ce09e73a1d7 8163bac95e44b4faef534853c53d0ce32e6e4332 fullstackcoder <muratdemirtastr@gmail.com> 1754881935 +0300	commit: i18n: dashboard/access logs eksik EN anahtarları eklendi (welcome_message, totals, table headers, pagination); TR tamamlandı
8163bac95e44b4faef534853c53d0ce32e6e4332 89b6f521359ec05bf3fa894c03fa113ae777ef43 fullstackcoder <muratdemirtastr@gmail.com> 1754887761 +0300	commit: chore: commit current state (as requested)
89b6f521359ec05bf3fa894c03fa113ae777ef43 0735a2e78f99a1146a7330a526b142f7ab608f0a fullstackcoder <muratdemirtastr@gmail.com> 1754915571 +0300	commit: i18n and mobile fixes: add-user localization and JS validation; real device is_connected in /api/devices; normalize tcp_tipi; mobile login flash + error_msg with i18n; enforce time window in /mobile/api/open-device; robust device permission check (ID/serial/prefix); edit-user page i18n for account status, access messages, online/offline; add missing translations (card_uuid_placeholder/hint, user_type, mobile_password_info, user_can_access, account_status_info); date quick-set UX improvements
0735a2e78f99a1146a7330a526b142f7ab608f0a a4855fc22d1ae4771a2cf5ba090b41b84fc24175 fullstackcoder <muratdemirtastr@gmail.com> 1754922063 +0300	commit: routes.py: mobile_open_device kimlik normalizasyonu, izin kontrolü, bağlantı ve bölge mantığı; add_user: enable_time_limits boş tarih/saat otomatik doldurma; derleme temiz
a4855fc22d1ae4771a2cf5ba090b41b84fc24175 03e89bc3577cebf940af2225fc8b1a1bbbf920ec fullstackcoder <muratdemirtastr@gmail.com> 1754922673 +0300	commit: device_settings: device_data string JSON.parse; robust fallback in /api/deviceinfo to find getdeviceinfo by device_id when IP match missing; ensure fields remotetarget, timestamp, mastercarduuid populate
03e89bc3577cebf940af2225fc8b1a1bbbf920ec 5c6fd9a302c8667b27c7fc5998b3e44254ac6de1 fullstackcoder <muratdemirtastr@gmail.com> 1754924426 +0300	commit: Disable JSON logs entirely; cache-only getdeviceinfo. Trigger immediate getdeviceinfo after device_command; refresh settings UI post-command.
5c6fd9a302c8667b27c7fc5998b3e44254ac6de1 595388cfa7362f7953fe71aaf7adef18d02c57b3 fullstackcoder <muratdemirtastr@gmail.com> 1754926000 +0300	commit: Unify add/edit device form into device_form.html; switch routes to use it; add English localization keys for device form; harmonize POST field names.
595388cfa7362f7953fe71aaf7adef18d02c57b3 7dfa5d06f998bdbe8a3eba690c8054428e4b9f9e fullstackcoder <muratdemirtastr@gmail.com> 1754927722 +0300	commit: device_form: match background styling with other pages; ensure device_tcp_server/client labels;
7dfa5d06f998bdbe8a3eba690c8054428e4b9f9e a8f0c970dc249532be9d433812d306541ce0a454 fullstackcoder <muratdemirtastr@gmail.com> 1754927859 +0300	commit: device_form: add translation fallbacks for device_type label and TCP Client/Server options
a8f0c970dc249532be9d433812d306541ce0a454 f2ab83c0e82a481fdf00d353281db776b51c2edd fullstackcoder <muratdemirtastr@gmail.com> 1754927933 +0300	commit: device_form: move Device ID to top; hide IP field when TCP Server is selected via JS
f2ab83c0e82a481fdf00d353281db776b51c2edd 2c831dcc9f8f51029674ea2b53d3ce0cf2782dcd fullstackcoder <muratdemirtastr@gmail.com> 1754928326 +0300	commit: tcp_manager: support concatenated JSON messages by streaming parser; process accessLog items one-by-one; handle streamed getdeviceinfo updates
2c831dcc9f8f51029674ea2b53d3ce0cf2782dcd e64885d6b59ad3fe2db36e828e4e7ae4ced7abfd fullstackcoder <muratdemirtastr@gmail.com> 1754929056 +0300	commit: devices: change Edit button to direct link instead of JS redirect to work even if row click is blocked
e64885d6b59ad3fe2db36e828e4e7ae4ced7abfd 7d416def61336d0fd5ee65dedaaff4f2b24cf861 fullstackcoder <muratdemirtastr@gmail.com> 1754929189 +0300	commit: devices: disable row click navigation; add Info button with getdeviceinfo modal showing human-friendly fields
7d416def61336d0fd5ee65dedaaff4f2b24cf861 eca5f761a3ddc16dc9ab58b3d6f62afbccd65f47 fullstackcoder <muratdemirtastr@gmail.com> 1754929341 +0300	commit: devices: realign table columns to match headers (ID, Name, Serial, Firmware, IP, Status, Actions)
eca5f761a3ddc16dc9ab58b3d6f62afbccd65f47 2d3a00963042e6b1645899b0709c5589c189b59c fullstackcoder <muratdemirtastr@gmail.com> 1754929624 +0300	commit: devices: enrich Info modal with DHCP/Static (ETH/WiFi), RS485 baudrate, heapfree, terminal mode, device time; fix JS syntax
2d3a00963042e6b1645899b0709c5589c189b59c 0c546e4787393415337715ea814d61f9c75352da fullstackcoder <muratdemirtastr@gmail.com> 1754929813 +0300	commit: deviceinfo: update firmware/IP on streamed getdeviceinfo; improve firmware extraction (version fallback)
0c546e4787393415337715ea814d61f9c75352da 4b75ef974fb36a53e4d72044189fca8ba206ab35 fullstackcoder <muratdemirtastr@gmail.com> 1754930502 +0300	commit: devices: parse DHCP arrays for eth/wifi; show mode and full IP details from eth/wifi dhcp/static arrays
4b75ef974fb36a53e4d72044189fca8ba206ab35 7991f02e03c2a9413e95c1801b24fcf92e972839 fullstackcoder <muratdemirtastr@gmail.com> 1754930777 +0300	commit: devices: show logsize and logfilesize (in KB) in Info modal
7991f02e03c2a9413e95c1801b24fcf92e972839 761aa366b2826d9555d5145539023ddc4e40a573 fullstackcoder <muratdemirtastr@gmail.com> 1754930994 +0300	commit: devices: add deviceErrors bitmask decode with test input; fix JS literals to avoid template conflicts
761aa366b2826d9555d5145539023ddc4e40a573 087cc64ec0a03ac97d54f9128579ed974f6837ef fullstackcoder <muratdemirtastr@gmail.com> 1754931250 +0300	commit: devices: localize device_errors; remove deviceErrors test UI; fix JS quoting
087cc64ec0a03ac97d54f9128579ed974f6837ef 36e1b2561c4e69ee2b3263cd25f5e80ad0e4d9a9 fullstackcoder <muratdemirtastr@gmail.com> 1754931358 +0300	commit: devices: support logSize/logFileSize (camelCase) keys in Info modal alongside legacy keys
36e1b2561c4e69ee2b3263cd25f5e80ad0e4d9a9 a313bade2e814b926fe24a5d4847aa1ecd21f630 fullstackcoder <muratdemirtastr@gmail.com> 1754931423 +0300	commit: devices: remove underline from floating + button (text-decoration none)
a313bade2e814b926fe24a5d4847aa1ecd21f630 ba14a78cb747e07808d27fb032833ab0055028e2 fullstackcoder <muratdemirtastr@gmail.com> 1754931471 +0300	commit: devices: show log file size with 3 decimal places (KB)
ba14a78cb747e07808d27fb032833ab0055028e2 13dc96ccf78ea719a91837317ec8878ab7a84a9d fullstackcoder <muratdemirtastr@gmail.com> 1754931752 +0300	commit: navbar: add Access Logs link; show profile company; fix floating FAB underline
13dc96ccf78ea719a91837317ec8878ab7a84a9d a52288deca792443d93a0c2062428cdbc01be4f1 fullstackcoder <muratdemirtastr@gmail.com> 1754932316 +0300	commit: devices: avoid uppercase transform to prevent Turkish dotted I issue in headers/buttons/status
a52288deca792443d93a0c2062428cdbc01be4f1 2f32c2cdac24a48e1edb31ef91c823b702b62c39 fullstackcoder <muratdemirtastr@gmail.com> 1754932487 +0300	commit: tcp: increase command response timeout to 5s; stop waiting further once success/error received; add small sleep to loop
2f32c2cdac24a48e1edb31ef91c823b702b62c39 21b6bdb5a31e41cd68d9bce2e2a289e15e48c4a6 fullstackcoder <muratdemirtastr@gmail.com> 1754932846 +0300	commit: navbar/profile: pass user profile_image and company to devices/users templates; add Access Logs link; fix missing avatar/company
21b6bdb5a31e41cd68d9bce2e2a289e15e48c4a6 a6dfa4e57e36401303bcbda896b27305c87c9478 fullstackcoder <muratdemirtastr@gmail.com> 1754933230 +0300	commit: devices/users: pass correct user avatar/company to templates (query data.db/users.db); fix users empty-state message
a6dfa4e57e36401303bcbda896b27305c87c9478 f8e394b4c293b4022aa3711b31788a267a8f8dea fullstackcoder <muratdemirtastr@gmail.com> 1754933725 +0300	commit: users: pass user_devices_map to template (fix UndefinedError)
f8e394b4c293b4022aa3711b31788a267a8f8dea 8007860e830a4379c0781a2857e53399ab01f2d0 fullstackcoder <muratdemirtastr@gmail.com> 1754934985 +0300	commit: users: use current_user from data.db for navbar avatar/company; add cache-bust; restore avatars in list
8007860e830a4379c0781a2857e53399ab01f2d0 c80fa193bbb04c1b414626e53ad7b85b87577ee1 fullstackcoder <muratdemirtastr@gmail.com> 1754935194 +0300	commit: access-logs: add navbar consistent with other pages; pass current_user/user_name to template
c80fa193bbb04c1b414626e53ad7b85b87577ee1 5fbf8b7b6bd44215bc5b6e4d4cc9b2f003819fa7 fullstackcoder <muratdemirtastr@gmail.com> 1754935452 +0300	commit: navbar: unify with dashboard across devices/users/access-logs; pass user/current_user for avatars
5fbf8b7b6bd44215bc5b6e4d4cc9b2f003819fa7 8046c344a399a1706d8994b79251842278708d99 fullstackcoder <muratdemirtastr@gmail.com> 1754935636 +0300	commit: mobile open-device: fix datetime/ts_now scope; insert access_logs with numeric id; avoid NameError
8046c344a399a1706d8994b79251842278708d99 1e11d8a4ffeb012b3ed5b7471ca5e2fcf276a20d fullstackcoder <muratdemirtastr@gmail.com> 1754935779 +0300	commit: devices: pass static_bust for avatar cache-busting in navbar
1e11d8a4ffeb012b3ed5b7471ca5e2fcf276a20d 857c9ffb83bb20d82cb48383bf6f7983bfda079c fullstackcoder <muratdemirtastr@gmail.com> 1754936036 +0300	commit: navbar avatars: prefer users.db for current/profile images; fallback to data.db across devices/users/access-logs
857c9ffb83bb20d82cb48383bf6f7983bfda079c fa3c8431bc4e27ac98d73077c8c34a39441d4963 fullstackcoder <muratdemirtastr@gmail.com> 1754936291 +0300	commit: profile: sync users.db updates (including profile_image) to data.db so avatars match across pages
fa3c8431bc4e27ac98d73077c8c34a39441d4963 080a118c3f51aff997116bac7ea685e205727292 fullstackcoder <muratdemirtastr@gmail.com> 1754937105 +0300	commit: users: Clear Filter label fix and remove all-caps on buttons; i18n user_type title-case; devices: ensure Connected/Disconnected and Device IP labels via translations
080a118c3f51aff997116bac7ea685e205727292 7b8b43ca7390c141cd5db20e16c7e717e35bb6fe fullstackcoder <muratdemirtastr@gmail.com> 1754937471 +0300	commit: tcp: optimize mastercard upsert; skip DB write and log when no change (idempotent)
7b8b43ca7390c141cd5db20e16c7e717e35bb6fe 9a0b357f35fd42323ae1fa1d08ae8b6bdf0d527f fullstackcoder <muratdemirtastr@gmail.com> 1754938137 +0300	commit: login: add TR/EN keys and localized error messages; use flash categories on login page
9a0b357f35fd42323ae1fa1d08ae8b6bdf0d527f 28ffd1be1e9f7d78085916d20920d51a908cb309 fullstackcoder <muratdemirtastr@gmail.com> 1754938331 +0300	commit: devices: add RFID, Logs, and Clock Sync buttons; implement sync via setdatetime with PC time; link RFID to settings
28ffd1be1e9f7d78085916d20920d51a908cb309 4ab7bb8bcaefb6d57b42efa9a0a36b1f03d779ff fullstackcoder <muratdemirtastr@gmail.com> 1754938491 +0300	commit: devices: fix clock sync endpoint to /api/device_command and correct payload schema
4ab7bb8bcaefb6d57b42efa9a0a36b1f03d779ff a502836d8f72c30ff791a6b133e99666225590cb fullstackcoder <muratdemirtastr@gmail.com> 1754938614 +0300	commit: devices: show setdatetime command in UI (alert + console) for debugging
a502836d8f72c30ff791a6b133e99666225590cb 294f304ede6cf87590039bac59f1747635450682 fullstackcoder <muratdemirtastr@gmail.com> 1754939080 +0300	commit: devices: remove debug alert for setdatetime command (keep console log)
294f304ede6cf87590039bac59f1747635450682 e59d91bbf5b59caed4737c801c52a520aa7b25c8 fullstackcoder <muratdemirtastr@gmail.com> 1754940778 +0300	commit: devices: implement device readlog API and modal; fetch logs from device and display parsed accessLog entries or raw text
e59d91bbf5b59caed4737c801c52a520aa7b25c8 feb2b4fd3a5e013647f575116857bbd4c5fdbc23 fullstackcoder <muratdemirtastr@gmail.com> 1754941027 +0300	commit: device edit: make serial and IP editable; update DB to allow serial_no change and clear IP when type is server
feb2b4fd3a5e013647f575116857bbd4c5fdbc23 84ef912be803748724c181d7bf3f400ba6e32c54 fullstackcoder <muratdemirtastr@gmail.com> 1754941278 +0300	commit: device logs: match access logs table layout; remove raw text fallback and show empty-state table
84ef912be803748724c181d7bf3f400ba6e32c54 0fb6c1aba64fcc13613d42a9b4bda247b7f3eab6 fullstackcoder <muratdemirtastr@gmail.com> 1754941429 +0300	commit: devices: open device logs in separate page via /device-logs/<id> to match access logs view
0fb6c1aba64fcc13613d42a9b4bda247b7f3eab6 deb0feb58f41af0ec110fee588492cfb1af1ac09 fullstackcoder <muratdemirtastr@gmail.com> 1754941589 +0300	commit: device-logs: pull fresh logs via readlog, parse accessLog entries, render like access logs; add navbar user info
deb0feb58f41af0ec110fee588492cfb1af1ac09 d6c2a06d84e293e9cec34663e45c0f81b48ee387 fullstackcoder <muratdemirtastr@gmail.com> 1754941792 +0300	commit: device-logs: use tcp_manager._iter_json_stream and support accessLog/AccessLog in data or root
d6c2a06d84e293e9cec34663e45c0f81b48ee387 cbfc2eb21b937e6fbefa3f8d041ae77d7ba2248e fullstackcoder <muratdemirtastr@gmail.com> 1754942644 +0300	commit: device-logs: broaden parser (list root, accesslog variants, single-event objects) and keep syntax valid
cbfc2eb21b937e6fbefa3f8d041ae77d7ba2248e 53e1af6a2de898f735c570261df7afbbe607075b fullstackcoder <muratdemirtastr@gmail.com> 1754942808 +0300	commit: device-logs: add binary 40-byte struct fallback parser (accessType,isgranted,timeStamp,accessUUID,terminalMode)
53e1af6a2de898f735c570261df7afbbe607075b 9815448b7339ff880935e5699c1827b569f50c57 fullstackcoder <muratdemirtastr@gmail.com> 1754942922 +0300	commit: device-logs: pass per_page to template to fix UndefinedError
9815448b7339ff880935e5699c1827b569f50c57 e235682ca44cf96fb11a427bea603b2d98827cd5 fullstackcoder <muratdemirtastr@gmail.com> 1754943257 +0300	commit: device-logs: add clear endpoint sending raw 'clearlog' (always success UX); add device-specific PDF export; fix delete button invocation
e235682ca44cf96fb11a427bea603b2d98827cd5 f9bb40ffc9fffd77ff32fbe1d32602555c67c70c fullstackcoder <muratdemirtastr@gmail.com> 1754943364 +0300	commit: device-logs: fix PDF output encoding for bytearray to avoid AttributeError
f9bb40ffc9fffd77ff32fbe1d32602555c67c70c 823a72da29bfad66b6702e8373822fa81d55c51e fullstackcoder <muratdemirtastr@gmail.com> 1754943653 +0300	commit: device-logs: resolve user_name from card_uuid (users.db first, fallback data.db); fix filter usability
823a72da29bfad66b6702e8373822fa81d55c51e f9bb40ffc9fffd77ff32fbe1d32602555c67c70c fullstackcoder <muratdemirtastr@gmail.com> 1754944156 +0300	reset: moving to HEAD~1
f9bb40ffc9fffd77ff32fbe1d32602555c67c70c f3b2b11540dfef254b80d0db8b4c846ca868162f fullstackcoder <muratdemirtastr@gmail.com> 1754944407 +0300	commit: device-logs: add navbar context, robust filtering (adsoyad), and JSON console logging of parsed entries; pass per_page/page/navbar vars to template
f3b2b11540dfef254b80d0db8b4c846ca868162f 0fa2b7e18f98277ac9ec1a29f15bf2c945684e77 fullstackcoder <muratdemirtastr@gmail.com> 1754945333 +0300	commit: device-logs: treat isgranted==222 as True (binary and JSON); keep others False
0fa2b7e18f98277ac9ec1a29f15bf2c945684e77 3d109444984c89365ca5d70392bd71def546bd6e fullstackcoder <muratdemirtastr@gmail.com> 1754945661 +0300	commit: device-logs: i18n for buttons and status badges; remove actions column; use existing translation keys
3d109444984c89365ca5d70392bd71def546bd6e 0b3a5e0ad13e5cc88856cd65e87b00247a8ee406 fullstackcoder <muratdemirtastr@gmail.com> 1754946403 +0300	commit: device-logs: add top margin to accommodate fixed navbar (prevent overlap)
0b3a5e0ad13e5cc88856cd65e87b00247a8ee406 b9a24bbd30814d7478556f4201a1f42582ff851e fullstackcoder <muratdemirtastr@gmail.com> 1754947021 +0300	commit: device-logs: robust user name resolution from card_uuid (trim/cast + device_cards fallback); PDF download no-cache and timestamped filename
b9a24bbd30814d7478556f4201a1f42582ff851e 1cad7d13a2e7534b5e2a600f1f132512fba140fe fullstackcoder <muratdemirtastr@gmail.com> 1754947210 +0300	commit: device-logs: fix UUID name resolution (trim equality only); ensure mastercard labeled as MASTERCARD via device_cards fallback
1cad7d13a2e7534b5e2a600f1f132512fba140fe 6aef9c4a90958e076070cb52f42364e069e490d1 fullstackcoder <muratdemirtastr@gmail.com> 1754947565 +0300	commit: device-logs: reverse PDF order (latest first); header shows 'Device Logs - <device_id>'; ensure Clear Filter i18n fallback
6aef9c4a90958e076070cb52f42364e069e490d1 1592a6e73e76398301af597af361411d437cd89f fullstackcoder <muratdemirtastr@gmail.com> 1754947696 +0300	commit: device-logs: change Card UUID header to 'UUID'; add Access Logs link in navbar; add profile dropdown (Profile, Logout)
1592a6e73e76398301af597af361411d437cd89f 2580ccafb4025167b966923fded18516edd619bc fullstackcoder <muratdemirtastr@gmail.com> 1754947843 +0300	commit: device-logs: match Access Logs icon to other pages; swap Users and Access Logs order; hide caret on profile dropdown
2580ccafb4025167b966923fded18516edd619bc 1d9528f911eb095ce0c69b5abbc25090a31437bd fullstackcoder <muratdemirtastr@gmail.com> 1754947984 +0300	commit: navbar: unify Access Logs icon to fas fa-clipboard-list on devices and dashboard
1d9528f911eb095ce0c69b5abbc25090a31437bd d934604bea935b9648010626bfcf0c8c1c7e3661 fullstackcoder <muratdemirtastr@gmail.com> 1754948615 +0300	commit: device-logs: add debug logs and copy access-logs bulk uuid->name resolution (users.user_uuid or card_uuid)
d934604bea935b9648010626bfcf0c8c1c7e3661 7182566e79dcabbba0321d561150f795b61a6b2c fullstackcoder <muratdemirtastr@gmail.com> 1754948866 +0300	commit: device-logs: add explicit debug logs for unresolved UUIDs (pre/post filter)
7182566e79dcabbba0321d561150f795b61a6b2c ab2f467f4fe9fc69027a746665b70ad2d7684fc4 fullstackcoder <muratdemirtastr@gmail.com> 1754949651 +0300	commit: device-logs: add detailed debug logging and enhance UUID->name mapping (include user_uuid), run bulk resolution regardless of date filter; minor refactors
ab2f467f4fe9fc69027a746665b70ad2d7684fc4 5dac384e4108fe29d08068763736794040149a08 fullstackcoder <muratdemirtastr@gmail.com> 1754949980 +0300	commit: device-logs(pdf): add UUID->name mapping (card_uuid|user_uuid + device_cards fallback) and include Name column; align status/type fields
5dac384e4108fe29d08068763736794040149a08 63968ae6db87577c1877090264bb0ac0cc767c6f fullstackcoder <muratdemirtastr@gmail.com> 1754950137 +0300	commit: device-logs: fallback to localized unknown_user when name is empty for page and PDF; ensure translations include unknown_user (TR/EN)
63968ae6db87577c1877090264bb0ac0cc767c6f d2fe2df62df8697ed2825fc3c6c88b898e1311eb fullstackcoder <muratdemirtastr@gmail.com> 1754950278 +0300	commit: i18n: add en strings for device_logs_title and clear_filter; device logs page uses translation for title; ensure English shows 'Device Logs - <deviceid>' and 'Clear Filter'
d2fe2df62df8697ed2825fc3c6c88b898e1311eb 214a3831b508de261a0aaa45c400e5a2951b3003 fullstackcoder <muratdemirtastr@gmail.com> 1754950395 +0300	commit: UI(devices): style secondary buttons with gradient colors (no more plain white) on devices page
214a3831b508de261a0aaa45c400e5a2951b3003 d5fea6da3d15bedc0f1aa1f9ced19e22feaffc2e fullstackcoder <muratdemirtastr@gmail.com> 1754950644 +0300	commit: RFID: add device cards page (/device/<id>/cards) mirroring users UI; wire devices page RFID button to new route; show cards from device_cards table
d5fea6da3d15bedc0f1aa1f9ced19e22feaffc2e 3e6062bde547738d1618fa42ce99c0d18897f4d7 fullstackcoder <muratdemirtastr@gmail.com> 1754950753 +0300	commit: UI(device-cards): replace navbar with dashboard navbar structure (menus + user dropdown)
3e6062bde547738d1618fa42ce99c0d18897f4d7 850a7ff86f326c26ec70fe79131c97ee9992c956 fullstackcoder <muratdemirtastr@gmail.com> 1754950956 +0300	commit: device-cards navbar: show user profile image and company like dashboard; pass user object from route
850a7ff86f326c26ec70fe79131c97ee9992c956 7d94fb5bcb1199473a0bd97359f425e2c648a439 fullstackcoder <muratdemirtastr@gmail.com> 1754951977 +0300	commit: NFC sync: add APIs to sync (getcards) and push addcards in batches of 50 with setok/setfail/nomorespace handling; add clear device cards API; device cards page UI with 'NFC Kartları Eşitle/Sync NFC Cards' button, hex column and text filter; add random NFC user generator (50)
7d94fb5bcb1199473a0bd97359f425e2c648a439 925a5214a7be27ee404fc82df1fe5e5a9a9fc47d fullstackcoder <muratdemirtastr@gmail.com> 1755010877 +0300	commit: Connectivity: tighten is_device_connected (30s last_response, 60s last_ping); stop trusting device_info_cache; devices page uses stricter check to avoid false positives
925a5214a7be27ee404fc82df1fe5e5a9a9fc47d da606488fa6dc0f96447b006cf9cb9c0834744ea fullstackcoder <muratdemirtastr@gmail.com> 1755014491 +0300	commit: login: enable Flask flash messages (remove custom override); ensure localized error flashes render on login page
da606488fa6dc0f96447b006cf9cb9c0834744ea 30557971de7dbdc1a036d470c27097dabe5e6c61 fullstackcoder <muratdemirtastr@gmail.com> 1755014701 +0300	commit: login: remove duplicate flash render block to prevent showing the same error twice
30557971de7dbdc1a036d470c27097dabe5e6c61 f45d7fabbcba0f8ac41b88cd680e8c1906c003ee fullstackcoder <muratdemirtastr@gmail.com> 1755029615 +0300	commit: RFID: add multi-select deletecards with updatecards on saveok/setok; user delete triggers deletecards; edit user pushes addcards; Add User: NFC capture via device access logs with 15s modal, filter NFC only and ignore old logs; cards sync uses device response not DB and filters out MASTERCARD; add /api/access_logs/latest; i18n for NFC modal; tighten logs; misc fixes
f45d7fabbcba0f8ac41b88cd680e8c1906c003ee 41abbfc0ce63f324e896a6023246f5362bc898d0 fullstackcoder <muratdemirtastr@gmail.com> 1755030469 +0300	commit: Cards sync: reset card_collection on readstarted and deduplicate on readfinished to prevent duplicate listing on repeated sync; device_cards reload stays clean
41abbfc0ce63f324e896a6023246f5362bc898d0 4e29e4f481a94e5c16eb45023b045b8129f85ed7 fullstackcoder <muratdemirtastr@gmail.com> 1755030658 +0300	commit: device_cards: enrich rows with user name mapping from assigned users (users.db) and normalize hex/dec to fill Unknown User; keep original fields and render enriched list
4e29e4f481a94e5c16eb45023b045b8129f85ed7 4c8030fa15c954d400799051cfd8d3de42bdfcc8 fullstackcoder <muratdemirtastr@gmail.com> 1755034672 +0300	commit: Devices: RFID management from device only (no DB). Device cards page shows User+UUID (no index), filtering and bulk delete. Push flow: dedupe, batch 50, addcards then updatecards; handle saveok/setok/nomorespace/jsonfailed errors; exclude MASTERCARD from push. TCP manager: disable getcards DB writes; update logs.
4c8030fa15c954d400799051cfd8d3de42bdfcc8 be7262f36b226bc55f16a1202e91fd12d2115532 fullstackcoder <muratdemirtastr@gmail.com> 1755090124 +0300	commit: add_user: if NFC card set and device not in terminal mode (isTerminal false via getdeviceinfo cache), push NFC UUID to device with addcards
be7262f36b226bc55f16a1202e91fd12d2115532 001cb36bf6e805f276dcda17da8d32294520e0e1 fullstackcoder <muratdemirtastr@gmail.com> 1755090288 +0300	commit: add_user: make email optional; do not auto-generate email when empty (store NULL)
001cb36bf6e805f276dcda17da8d32294520e0e1 957976bfcfeec5c5393a4c6fc6cc1bc37799c4c8 fullstackcoder <muratdemirtastr@gmail.com> 1755090524 +0300	commit: add_user: avoid UNIQUE constraint error on users.email by checking duplication; if taken, store NULL and warn
957976bfcfeec5c5393a4c6fc6cc1bc37799c4c8 a3e6acc241dee1a05d95da1b4873ea6d7e2110dd fullstackcoder <muratdemirtastr@gmail.com> 1755090679 +0300	commit: delete_user: add debug logs for deletecards send/resp and updatecards trigger; warn on send failure
a3e6acc241dee1a05d95da1b4873ea6d7e2110dd d7894101b1d8bf3d5f7e9c68ac10cfd53278fde1 fullstackcoder <muratdemirtastr@gmail.com> 1755090744 +0300	commit: mastercard: stop auto-generating email addresses; store NULL for email in users.db and data.db mirrors
d7894101b1d8bf3d5f7e9c68ac10cfd53278fde1 8673553a882ad37c8e8943cc061fc990cc281b92 fullstackcoder <muratdemirtastr@gmail.com> 1755090791 +0300	commit: delete_user: trigger updatecards also when response contains 'success' (not only saveok/setok); broaden response check
8673553a882ad37c8e8943cc061fc990cc281b92 7b4c46d65503e78af7c408404705c2354c035c66 fullstackcoder <muratdemirtastr@gmail.com> 1755091200 +0300	commit: terminal mode: on access logs, auto-evaluate UUID vs device_cards; send grantaccess on match else denyaccess; robust hex/dec normalization; detailed logs
7b4c46d65503e78af7c408404705c2354c035c66 42ebe1d714c6a229778d1910126f991d9b224a2a fullstackcoder <muratdemirtastr@gmail.com> 1755091341 +0300	commit: terminal mode: determine isTerminal via cache first then DB; support isTerminal/isterminal/is_terminal keys; fix false negatives
42ebe1d714c6a229778d1910126f991d9b224a2a 8f7174ae74e59c2247ea2dc7c1ae2c17c1c007d8 fullstackcoder <muratdemirtastr@gmail.com> 1755091582 +0300	commit: terminal mode: prevent loops by only acting when access log says isterminal=true and add 3s cooldown per device+uuid
8f7174ae74e59c2247ea2dc7c1ae2c17c1c007d8 ff628a0ff04810afd4094abd6936e0c06f7a337b fullstackcoder <muratdemirtastr@gmail.com> 1755091734 +0300	commit: terminal mode: also authorize via assigned users' card_uuid (users.db + data.db), normalize device id/serial when checking assignments
ff628a0ff04810afd4094abd6936e0c06f7a337b cc78d9bec73fd7beb925beef13904243e2bba250 fullstackcoder <muratdemirtastr@gmail.com> 1755092036 +0300	commit: access-logs/home/pdf: robust UUID->name mapping from users.card_uuid (both DBs) and device_cards with hex/dec normalization; avoid defaulting to unknown_user when resolvable
cc78d9bec73fd7beb925beef13904243e2bba250 935df7fc668e24ce7b04848b5a8c0d78041a659e fullstackcoder <muratdemirtastr@gmail.com> 1755092279 +0300	commit: download-pdf: resolve user_name from users.card_uuid and device_cards with hex/dec normalization; align with access-logs mapping
935df7fc668e24ce7b04848b5a8c0d78041a659e 2c0771ccf245544a17f5fe8a6833fa2319be9495 fullstackcoder <muratdemirtastr@gmail.com> 1755092550 +0300	commit: device-logs: fill empty user_name from users.card_uuid and device_cards with hex/dec normalization to match access-logs/pdf behavior
2c0771ccf245544a17f5fe8a6833fa2319be9495 7c1b387e63a62d832459b9686345487ee0459cce fullstackcoder <muratdemirtastr@gmail.com> 1755092733 +0300	commit: device-logs: replace 'Unknown User' placeholders by resolving names via card_uuid map; treat localized unknown text as empty for mapping
7c1b387e63a62d832459b9686345487ee0459cce 060088afd56f14327d7865126a1d5215eaad0f21 fullstackcoder <muratdemirtastr@gmail.com> 1755092943 +0300	commit: device-logs PDF: resolve user_name from users.card_uuid and device_cards (with hex/dec normalization) and override Unknown User
060088afd56f14327d7865126a1d5215eaad0f21 ba09c97bddf56cc81861576d3138bb5874c1176c fullstackcoder <muratdemirtastr@gmail.com> 1755093477 +0300	commit: device-logs: normalize card_uuid field from uuid/UUID before name mapping
ba09c97bddf56cc81861576d3138bb5874c1176c cfae552572b5d0bcfb48952189aede872bbf623f fullstackcoder <muratdemirtastr@gmail.com> 1755547178 +0300	commit: Çalışma alanındaki tüm değişiklikler kaydedildi
cfae552572b5d0bcfb48952189aede872bbf623f 69f6bb14760983e1800dfcd6ffaf13b3c7e2441a fullstackcoder <muratdemirtastr@gmail.com> 1755559231 +0300	commit: /api/user/<id> endpointi ve kullanıcı detayları için backend düzeltmeleri yapıldı
69f6bb14760983e1800dfcd6ffaf13b3c7e2441a a28e25462d67bf65c294b0ded13cc9c7bc460f7f fullstackcoder <muratdemirtastr@gmail.com> 1755641645 +0300	commit: tcp: enforce encrypted crypto handshake, parse new getpublickey format, queue pending commands, remap sockets and add debug logs
a28e25462d67bf65c294b0ded13cc9c7bc460f7f 2aca5862163183223d100a2fb47c94681921b70c fullstackcoder <muratdemirtastr@gmail.com> 1755652820 +0300	commit: Fix crypto communication issues and complete AES-256-CBC implementation
2aca5862163183223d100a2fb47c94681921b70c a28e25462d67bf65c294b0ded13cc9c7bc460f7f fullstackcoder <muratdemirtastr@gmail.com> 1755658029 +0300	reset: moving to HEAD~1
a28e25462d67bf65c294b0ded13cc9c7bc460f7f 28fe780421bac01b7e0006b067a280f8e77eab08 fullstackcoder <muratdemirtastr@gmail.com> 1755682100 +0300	commit: remove crypto: delete crypto_utils.py and remove crypto features from routes and tcp_manager
28fe780421bac01b7e0006b067a280f8e77eab08 902314336adef46b14b2ef6084706aa2e6a040ff fullstackcoder <muratdemirtastr@gmail.com> 1755707040 +0300	commit: Add device-specific crypto keys and fix crypto handshake
902314336adef46b14b2ef6084706aa2e6a040ff 28fe780421bac01b7e0006b067a280f8e77eab08 fullstackcoder <muratdemirtastr@gmail.com> 1755709513 +0300	reset: moving to 28fe780
28fe780421bac01b7e0006b067a280f8e77eab08 53c50c8b84fe5060b5bfc9b70457b3507a3e1383 fullstackcoder <muratdemirtastr@gmail.com> 1755715179 +0300	commit: chore: commit local changes
53c50c8b84fe5060b5bfc9b70457b3507a3e1383 3de12a471aef0d87866dc0142eba4ae3cb647659 fullstackcoder <muratdemirtastr@gmail.com> 1755727441 +0300	commit: fix: terminal mode access log handling ve timestamp format düzeltmeleri
3de12a471aef0d87866dc0142eba4ae3cb647659 e6efc30e1ba680efb7b11da8efd7cd4397cd277d fullstackcoder <muratdemirtastr@gmail.com> 1755727534 +0300	commit: fix: terminal modda çift access log kaydı sorunu düzeltildi
e6efc30e1ba680efb7b11da8efd7cd4397cd277d 29799ec2d8927f473c5ddacfbf22b5094607533b fullstackcoder <muratdemirtastr@gmail.com> 1755727634 +0300	commit: fix: terminal mode access log kaydını basitleştir
29799ec2d8927f473c5ddacfbf22b5094607533b a81ed34fdfa54a143290a8b9b9086b03d3361faa fullstackcoder <muratdemirtastr@gmail.com> 1755728010 +0300	commit: fix: terminal modda sistem erişim kontrolü ve cihaz kararını manipüle etme
a81ed34fdfa54a143290a8b9b9086b03d3361faa 2029798087463b3a1f58a525aabc0131a0780da6 fullstackcoder <muratdemirtastr@gmail.com> 1755728117 +0300	commit: fix: terminal modda çift access log kaydı önlendi
2029798087463b3a1f58a525aabc0131a0780da6 55f3de95c8054874f79091cdc1b2abfef2659b97 fullstackcoder <muratdemirtastr@gmail.com> 1755728191 +0300	commit: fix: terminal modda çift komut gönderimini önle
55f3de95c8054874f79091cdc1b2abfef2659b97 bcf2eab5313fc0d3da29012aeab99c12d58fc31a fullstackcoder <muratdemirtastr@gmail.com> 1755728341 +0300	commit: fix: terminal mode basitleştirildi - tek karar, tek kayıt
bcf2eab5313fc0d3da29012aeab99c12d58fc31a 62c2036e12a97651ff0e2ca3cbcfecda91f764a1 fullstackcoder <muratdemirtastr@gmail.com> 1755728559 +0300	commit: debug: access log mesaj hash'i eklendi
62c2036e12a97651ff0e2ca3cbcfecda91f764a1 4fb908751804dd15df6e5e36b52f12c82d1233e5 fullstackcoder <muratdemirtastr@gmail.com> 1755728731 +0300	commit: debug: send_command_to_device komut loglama eklendi
4fb908751804dd15df6e5e36b52f12c82d1233e5 453c070cf8b797fce1049216b2eb59990a29d886 fullstackcoder <muratdemirtastr@gmail.com> 1755728914 +0300	commit: fix: UUID format dönüşümü eklendi (decimal ↔ hex)
453c070cf8b797fce1049216b2eb59990a29d886 1cfbd17bc55ef98b65aef1c838517826c5cd4afd fullstackcoder <muratdemirtastr@gmail.com> 1755729091 +0300	commit: fix: UUID arama case-insensitive yapıldı
1cfbd17bc55ef98b65aef1c838517826c5cd4afd 9f3ec1df00267ba0c17f263c40f40bb47de8e310 fullstackcoder <muratdemirtastr@gmail.com> 1755729193 +0300	commit: debug: UUID arama exception logları eklendi
9f3ec1df00267ba0c17f263c40f40bb47de8e310 fab2ce5cea842b03f73ff99161a09bd6994f88a5 fullstackcoder <muratdemirtastr@gmail.com> 1755729250 +0300	commit: debug: mobil grantaccess komut debug eklendi
fab2ce5cea842b03f73ff99161a09bd6994f88a5 7abcf76f7c722cf77e56dcf1c2711e653fa88edf fullstackcoder <muratdemirtastr@gmail.com> 1755729456 +0300	commit: fix: SQL kolon isimleri düzeltildi
7abcf76f7c722cf77e56dcf1c2711e653fa88edf e14a59c0cb401a3b92157762be410c193af223e7 fullstackcoder <muratdemirtastr@gmail.com> 1755729804 +0300	commit: fix: terminal modda kullanıcı edit'te cihaza kart gönderme engellendi
e14a59c0cb401a3b92157762be410c193af223e7 a9e56b45aa4aefba98c7800136fa02d3fffe829c fullstackcoder <muratdemirtastr@gmail.com> 1755731398 +0300	commit: fix: terminal mode improvements and user UUID validation
a9e56b45aa4aefba98c7800136fa02d3fffe829c 20ca4c3f7e502e842194825fa5801894a9b42a32 fullstackcoder <muratdemirtastr@gmail.com> 1755731610 +0300	commit: refactor: clean up debug logs and improve code readability
20ca4c3f7e502e842194825fa5801894a9b42a32 0b5a06fb378e0eab7166dddf2cc449da29ae714c fullstackcoder <muratdemirtastr@gmail.com> 1755732973 +0300	commit: refactor: remove excessive logging and improve user experience
