0000000000000000000000000000000000000000 71458fdd9cbd201a1e3879b58035091682f87614 donnRep <dhon.email06@gmail.com> 1785488677 +0800	commit (initial): Initial baseline commit of approved prototype
71458fdd9cbd201a1e3879b58035091682f87614 52cd604aa4d0d5352005b946a77dbaa0b65548af donnRep <dhon.email06@gmail.com> 1785489295 +0800	commit: Add unit-based fields alongside existing hour fields (Phase 2)
52cd604aa4d0d5352005b946a77dbaa0b65548af 0df4d3c7607877ff8d3e22b28e64313990921689 donnRep <dhon.email06@gmail.com> 1785489839 +0800	commit: Add Admin Settings module for Academic Period management (Phase 3)
0df4d3c7607877ff8d3e22b28e64313990921689 9948ef938b76b83d437d1411936b6b84885c27fd donnRep <dhon.email06@gmail.com> 1785490577 +0800	commit: Redesign collapsible panels as accessible Bootstrap accordions
9948ef938b76b83d437d1411936b6b84885c27fd 1310d28773c90eac577380a204a88c309756e2a6 donnRep <dhon.email06@gmail.com> 1785491440 +0800	commit: Subject unit fields + full Track and Track-Subject management (Phase 4a-4c)
1310d28773c90eac577380a204a88c309756e2a6 64961443929c4fe1fc6cfcb4c216f29b214c9df5 donnRep <dhon.email06@gmail.com> 1785492166 +0800	commit: Move Admin Settings into a topbar settings menu
64961443929c4fe1fc6cfcb4c216f29b214c9df5 791b5f7ee26c97d16fc53713f31717c60008e4be donnRep <dhon.email06@gmail.com> 1785505387 +0800	commit: Convert Subjects/Sections/Rooms to AJAX partial-refresh (Phase 4d, part 1)
791b5f7ee26c97d16fc53713f31717c60008e4be b2e7df5f97497093be87b705f006d035b756c934 donnRep <dhon.email06@gmail.com> 1785505631 +0800	commit: Convert Tracks and Track-Subject assignments to AJAX (Phase 4d, part 2)
b2e7df5f97497093be87b705f006d035b756c934 311e0be89a3d0a97ba01c54a2d3573c0da9096ea donnRep <dhon.email06@gmail.com> 1785505926 +0800	commit: Convert Time Slots to AJAX, completing Phase 4d
311e0be89a3d0a97ba01c54a2d3573c0da9096ea 43e512d13851493d73340022602a2863151caebc donnRep <dhon.email06@gmail.com> 1785506502 +0800	commit: Add unit-based scheduling data services (Phase 5)
43e512d13851493d73340022602a2863151caebc 93dcd9d0d9d6d1e2e94c9cb3407c379c54f95bdf donnRep <dhon.email06@gmail.com> 1785507390 +0800	commit: Rebuild Scheduling as a two-panel interface with hierarchical selector (Phase 6)
93dcd9d0d9d6d1e2e94c9cb3407c379c54f95bdf 977d65e7f5f670439a76c9643793fc77cc7f4884 donnRep <dhon.email06@gmail.com> 1785508390 +0800	commit: Add AJAX save/delete, warning-confirm flow, and three-dot cell menu (Phase 7)
977d65e7f5f670439a76c9643793fc77cc7f4884 13aaf39ab9390eb520136aa47c7a496cc4511003 donnRep <dhon.email06@gmail.com> 1785509233 +0800	commit: Finish hours-to-units migration and remove prototype labels (Phase 8)
13aaf39ab9390eb520136aa47c7a496cc4511003 f84cd0338013cbba3c17d501b06fc7ffa97dff37 donnRep <dhon.email06@gmail.com> 1785561637 +0800	commit: Implement the dynamic left panel: click empty cell -> Subject -> Teacher -> Room -> Save
f84cd0338013cbba3c17d501b06fc7ffa97dff37 95782b9473518a04ee476084efa93a9499df3a3e donnRep <dhon.email06@gmail.com> 1785562634 +0800	commit: Implement drag swap/move/copy for the timetable grid (spec 2.13)
95782b9473518a04ee476084efa93a9499df3a3e 0468e591d7d066be7688a43e6f9458f670c31d6f donnRep <dhon.email06@gmail.com> 1785563677 +0800	commit: Add Excel-style fill drag: copy into multiple cells in one gesture
0468e591d7d066be7688a43e6f9458f670c31d6f ca6d80a5e5845b8a63bf80c809f67d2617cc47ed donnRep <dhon.email06@gmail.com> 1785564100 +0800	commit: Fix fill-drag only copying into one cell
ca6d80a5e5845b8a63bf80c809f67d2617cc47ed 7b017228033f08fe2ea20422bf72d11f1a6e35bb donnRep <dhon.email06@gmail.com> 1785564970 +0800	commit: Split drag into two unambiguous gestures: relocate vs fill/copy
