0000000000000000000000000000000000000000 3a9728ff92597e0fe374a7879556f49b0de70a8b 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785214404 +0800	commit (initial): feat(moonorm): parameterized injection-safe CRUD query builder (<- SQLAlchemy Core).
3a9728ff92597e0fe374a7879556f49b0de70a8b 1be558e222dc55429cb4fdaed6682063c7200d63 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785214449 +0800	commit: docs(moonorm): add gh-pages API reference site.
1be558e222dc55429cb4fdaed6682063c7200d63 afab8bdff65d5fb1dad9efb7181d24b13675cd4e 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785218625 +0800	commit: feat(moonorm): add JOIN / LEFT JOIN, GROUP BY / HAVING, aggregate columns, and Table descriptor to the query builder.
afab8bdff65d5fb1dad9efb7181d24b13675cd4e 43163ca86dc7a854a0aeda8c1d52b9958d2935a7 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785218655 +0800	commit: docs(moonorm): bump to 0.2.0 and regenerate API reference.
43163ca86dc7a854a0aeda8c1d52b9958d2935a7 d84a8bdac9fb191545d543150bfd5eba0bae37b7 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785221439 +0800	commit: feat(moonorm): add a Driver trait, explicit Session, and a real native SQLite backend that executes built statements.
d84a8bdac9fb191545d543150bfd5eba0bae37b7 f068ac86affc08292facb004b36b0df7a4fd1664 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785221460 +0800	commit: chore(moonorm): bump to 0.3.0.
f068ac86affc08292facb004b36b0df7a4fd1664 839ab86a629d0009f7bcb13882e61b2bc3d76aaa 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785236114 +0800	commit: feat(moonorm): declarative models, FK relationships with explicit eager loading, and nested SAVEPOINT transactions.
839ab86a629d0009f7bcb13882e61b2bc3d76aaa 857f28022f0e90898698ebc9d2650b02fce96af5 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785239567 +0800	commit: @
857f28022f0e90898698ebc9d2650b02fce96af5 28eb824011cdb4cca7553b33afb3c8f0a422d20a 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785240058 +0800	commit: docs(moonorm): correct README — Value constructors are @moondb.*, driver imported under an alias.
28eb824011cdb4cca7553b33afb3c8f0a422d20a 7a454c2d1c462d1af2d441ec5088783888908093 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785256763 +0800	commit: refactor(moonorm): absorb moondb + sqlite/postgres/mysql drivers as in-repo sub-packages.
7a454c2d1c462d1af2d441ec5088783888908093 0fde3859d622d6d014a364f4291f93f61133ec9f 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785259131 +0800	commit: @test(moonorm): DB-stack coverage matrix, plus CTE/subquery, optimistic locking, and migrations.
0fde3859d622d6d014a364f4291f93f61133ec9f 9f4aba05ca5514632281b1c5085aff015de73844 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785273353 +0800	commit: @
9f4aba05ca5514632281b1c5085aff015de73844 110cc392c4f9ce662313edbd9c4e901e6945dbd3 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785273385 +0800	commit (amend): feat(moonorm): connection pool, dialect-aware upsert/RETURNING, window functions, and a real-SQLite end-to-end suite.
110cc392c4f9ce662313edbd9c4e901e6945dbd3 4a3450de27e4a0f883d24d27401b022d38286432 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785303568 +0800	commit: feat(moonorm): from_fields models, batch loading, pool health/lifetime, and isolation-level nested transactions.
4a3450de27e4a0f883d24d27401b022d38286432 f871a2886c6f3e2616fab80f52a3cf9fe257ccbb 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785303828 +0800	commit: fix(moonorm): canonicalize integer key widths in batch grouping; real-SQLite batch-load + pool pre_ping integration tests.
f871a2886c6f3e2616fab80f52a3cf9fe257ccbb cf795130f425c1342edb27d7417ca360e483d192 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785304079 +0800	commit: fix(moonorm): format the integration e2e test.
cf795130f425c1342edb27d7417ca360e483d192 1ab812c58f7ec1f67e1782fdd3ae5ebda298cb92 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785351772 +0800	commit: feat(moonorm): SQL set operations (UNION/UNION ALL/INTERSECT/EXCEPT) and DISTINCT.
1ab812c58f7ec1f67e1782fdd3ae5ebda298cb92 7002eadf342c9254523086cf0ce2e80fffacee6a 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785353223 +0800	commit: feat(moonorm): many-to-many relationships through a junction table.
7002eadf342c9254523086cf0ce2e80fffacee6a 8c04cd4f6458b63906630468f9b29d76d8690429 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785353496 +0800	commit: feat(moonorm): schema reflection from PRAGMA table_info.
8c04cd4f6458b63906630468f9b29d76d8690429 31bb3d7ab0530daa7e3c70715a8fb5b8bc5ede23 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785353681 +0800	commit: feat(moonorm): schema diff for Alembic-style autogenerate.
31bb3d7ab0530daa7e3c70715a8fb5b8bc5ede23 dafbbcc27c9dd24baeb300f00cb2f210c677024d 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785353904 +0800	commit: feat(moonorm): UNIQUE column constraint (SQLAlchemy unique=True).
dafbbcc27c9dd24baeb300f00cb2f210c677024d 7b2cba4e6a34cce9267c53b2d3bc3b6fc12aef0c 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785353974 +0800	commit: feat(moonorm): CREATE INDEX DDL (single/composite/unique).
7b2cba4e6a34cce9267c53b2d3bc3b6fc12aef0c 25c5ec3bd94d6b14958e2545066b9db94c02e616 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785354106 +0800	commit: feat(moonorm): composite primary keys as a table-level constraint.
25c5ec3bd94d6b14958e2545066b9db94c02e616 cf2daa74d2c81fb76c51f6f9645b7d8d2fbc9741 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785354292 +0800	commit: feat(moonorm): column DEFAULT expressions (SQLAlchemy server_default).
cf2daa74d2c81fb76c51f6f9645b7d8d2fbc9741 211373bd155b9360f877e5d5efeea4760e446b1a 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785358514 +0800	commit: feat(moonorm): boolean predicate trees — parameter-safe AND/OR/NOT grouping.
211373bd155b9360f877e5d5efeea4760e446b1a dff157c844c7d29b62998d337f5eba96384a0c68 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785358621 +0800	commit: feat(moonorm): CHECK constraints and foreign-key referential actions.
dff157c844c7d29b62998d337f5eba96384a0c68 8396ad32d2b22c38b9a29903e86cbc8df2b23826 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785358814 +0800	commit: feat(moonorm): extended column types (VARCHAR(n)/NUMERIC/DATETIME/DATE/TIME/UUID/JSON).
8396ad32d2b22c38b9a29903e86cbc8df2b23826 56244706377492dc2dac094978ed87b3d2b76a98 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785358892 +0800	commit: feat(moonorm): AUTOINCREMENT for server-generated primary keys.
56244706377492dc2dac094978ed87b3d2b76a98 3d78a96deb5febc363786f39ed0ce7755e004b12 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785358981 +0800	commit: feat(moonorm): multi-dialect DDL rendering (SQLite/PostgreSQL/MySQL).
3d78a96deb5febc363786f39ed0ce7755e004b12 c551c2e7f151b2f34d56259104edaf5cdd3e14f0 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785359079 +0800	commit: fix(moonorm): annotate the multi-dialect DDL test's model type (broken by 3d78a96).
c551c2e7f151b2f34d56259104edaf5cdd3e14f0 788ae8abb5f1db2a1a82fea6ca3d8dff6f316b83 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785359340 +0800	commit: feat(moonorm): multi-dialect schema reflection (PostgreSQL/MySQL).
788ae8abb5f1db2a1a82fea6ca3d8dff6f316b83 d932d56298c4071d8c6fcc8fbf665b2bb41fca63 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785359889 +0800	commit: feat(moonorm/postgres): SCRAM-SHA-256 crypto core (RFC 5802/7677).
d932d56298c4071d8c6fcc8fbf665b2bb41fca63 b65343f0d14be8aefdcad6aecce267c18dba209b 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785360316 +0800	commit: feat(moonorm/postgres): SCRAM client-final message + base64 decode (RFC 7677).
b65343f0d14be8aefdcad6aecce267c18dba209b dfacd1511e10ebb9e07e1041684783ba52e8d4c6 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785360882 +0800	commit: feat(moonorm/postgres): SASL/SCRAM-SHA-256 wire exchange; CI live-PG on scram-sha-256.
dfacd1511e10ebb9e07e1041684783ba52e8d4c6 25a92fd3c4aa4b098c8d7b971f260244a7bdc42a 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785361544 +0800	commit: feat(moonorm/mysql): caching_sha2_password crypto core — SHA-256, fast scramble, RSA-OAEP full-auth.
25a92fd3c4aa4b098c8d7b971f260244a7bdc42a c644b986e6ce76d53eb94be12b229cc6f0b8a4d6 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785361830 +0800	commit: feat(moonorm/mysql): caching_sha2_password wire auth (fast + RSA full auth); CI live-MySQL8 caching_sha2 job.
c644b986e6ce76d53eb94be12b229cc6f0b8a4d6 7328b8d0c2dc7689d6ad30a7d762facbdcae6b39 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785363347 +0800	commit: feat(moonorm/mysql): Ed25519 signing (SHA-512) for MariaDB client_ed25519 auth.
7328b8d0c2dc7689d6ad30a7d762facbdcae6b39 c3902fd6683fd80480e89b7cb0f4976bab42741c 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785363638 +0800	commit: feat(moonorm/mysql): MariaDB client_ed25519 wire auth; CI live-MariaDB ed25519 job.
c3902fd6683fd80480e89b7cb0f4976bab42741c 89a9b06ce23fe323dcc5647c4619f4c2354c0397 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785364109 +0800	commit: feat(moonorm/moondb): streaming Cursor + Driver::query_stream (default ArrayCursor).
89a9b06ce23fe323dcc5647c4619f4c2354c0397 447fea8503bec5cf4212590252f473ac99d957b3 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785364371 +0800	commit: feat(moonorm): async row streaming — PgConn/MysqlConn query_stream (incremental wire reads).
447fea8503bec5cf4212590252f473ac99d957b3 c23598ec666685db0281bee6eb85152decb49490 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785364740 +0800	commit: chore(moonorm/moondb): bump to 0.1.5 for the streaming Cursor API.
c23598ec666685db0281bee6eb85152decb49490 355a85442f8f5f3b001451fa4da18970cd467e9d 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785365041 +0800	commit: feat(moonorm): streaming query layer — sqlite3_step Cursor + Session::stream/stream_as (yield_per).
355a85442f8f5f3b001451fa4da18970cd467e9d 56697ac697aea04fce617e379a60ac91e644597c 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785366389 +0800	commit: fix(moonorm): adversarial-review hardening — stream pipeline guard, auth fd-leak, OAEP bound, ed25519 empty-pw, sqlite close_v2.
56697ac697aea04fce617e379a60ac91e644597c 8758e9fb9c3506d530ec39e4318281473ff53f70 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785367080 +0800	commit: fix(moonorm): ORM review fixes — empty IN/NOT-IN fold, bare-OFFSET limit, IS NULL, reflect ident guard, bulk insert, EXISTS, SCRAM nonce check.
8758e9fb9c3506d530ec39e4318281473ff53f70 38c2f340eb1d465e861b6a8c6b8bbb964a814ed1 林晨 (Leo Cheng) <chengkelfan@qq.com> 1785367301 +0800	commit: chore(moonorm): release — moon-{sqlite,postgres,mysql} 0.2.0, moonorm 0.7.0 (auth + streaming + review hardening).
