<feed xmlns='http://www.w3.org/2005/Atom'>
<title>stack/infra, branch main</title>
<subtitle>Personal infrastructure stack.</subtitle>
<id>https://git.doan.luuduct.ai/stack/atom?h=main</id>
<link rel='self' href='https://git.doan.luuduct.ai/stack/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/'/>
<updated>2026-10-31T18:08:08Z</updated>
<entry>
<title>Forbid Rust lints and enforce strict typed TypeScript linting</title>
<updated>2026-10-31T18:08:08Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-31T18:08:08Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=a80df869a92c330fbad9695057720b11a18af901'/>
<id>urn:sha1:a80df869a92c330fbad9695057720b11a18af901</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Migrate browser code and tests to strict TypeScript</title>
<updated>2026-10-31T17:25:30Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-31T17:25:30Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=9139398d465f5899cc31bc4cdd54daa7392ca550'/>
<id>urn:sha1:9139398d465f5899cc31bc4cdd54daa7392ca550</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove retired chat placeholder and stale deployment documentation</title>
<updated>2026-10-31T15:12:51Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-31T15:12:51Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=ef61fc5aca6eca613a055c507a060b70bd537a37'/>
<id>urn:sha1:ef61fc5aca6eca613a055c507a060b70bd537a37</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Show crypto download progress and centralize license links</title>
<updated>2026-10-31T13:05:08Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-31T13:05:08Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=fbb06ab09681079c01cc9b4eb13731ef17f4ab41'/>
<id>urn:sha1:fbb06ab09681079c01cc9b4eb13731ef17f4ab41</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Package private chat for HTTPS and verify portable encrypted recovery</title>
<updated>2026-10-31T12:39:18Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-31T12:39:18Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=d809d86182ab802472ae7d5e74cab66ba7bfa397'/>
<id>urn:sha1:d809d86182ab802472ae7d5e74cab66ba7bfa397</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Centralize deployment settings in the root environment file</title>
<updated>2026-10-31T03:36:11Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-31T03:36:11Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=6933ec28be3dac0dc17cd634c663db3b4818caad'/>
<id>urn:sha1:6933ec28be3dac0dc17cd634c663db3b4818caad</id>
<content type='text'>
Document public domains, ports, upstreams, chat binding, and backup defaults alongside private settings. Validate shared configuration and render Caddy, cgit, and website links from an explicit public allowlist while preserving one installation environment file.
</content>
</entry>
<entry>
<title>Implement experimental file-based encrypted private chat</title>
<updated>2026-10-31T02:39:57Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-31T02:39:57Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=e6b350a1d48ca0490b7a3447bb8d0a4235514b76'/>
<id>urn:sha1:e6b350a1d48ca0490b7a3447bb8d0a4235514b76</id>
<content type='text'>
Add fixed-suite Rust/WASI identity files, signed challenge authentication, ciphertext-only SQLite storage, a minimal LibreJS-compatible interface, and consistent backup snapshots. Keep production unchanged and document the local workflow, limits, source distribution, and browser recovery tests.
</content>
</entry>
<entry>
<title>Prove OpenSSL PQ crypto in browser WASI and document the migration</title>
<updated>2026-10-30T22:24:45Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-30T22:24:45Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=cf2f0e8c6752c401f152a8e534ba166839d4307e'/>
<id>urn:sha1:cf2f0e8c6752c401f152a8e534ba166839d4307e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Render the license page in cgit and stack the site footer links</title>
<updated>2026-10-30T21:29:50Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-30T21:29:50Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=b46ece18a424eaea3f396ddae7e45e91d1c0e742'/>
<id>urn:sha1:b46ece18a424eaea3f396ddae7e45e91d1c0e742</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove the completed migration helper and document private downloads</title>
<updated>2026-10-30T21:13:52Z</updated>
<author>
<name>Doan Luu Duc Tai</name>
<email>doan@luuduct.ai</email>
</author>
<published>2026-10-30T21:13:52Z</published>
<link rel='alternate' type='text/html' href='https://git.doan.luuduct.ai/stack/commit/?id=d546193ee543a5b1a0a097d0a7deca76e81b7de2'/>
<id>urn:sha1:d546193ee543a5b1a0a097d0a7deca76e81b7de2</id>
<content type='text'>
</content>
</entry>
</feed>
