this repo has no description

Update site build: remove sidebar from site pages, add universe step, redesign homepage

Site pages (blog, notebooks) don't need the reference sidebar — it's only
for @doc output. Also adds the opam universe build step to deploy-site.sh,
copies odoc.support into the site tree, and refreshes the homepage with
recent entries and an about section.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+38 -145
+9 -2
deploy-site.sh
··· 45 45 echo " site built → $SITE_HTML/" 46 46 47 47 echo "" 48 - echo "=== Step 3: Build reference docs ===" 48 + echo "=== Step 3: Build universes for interactive code cells ===" 49 + jtw opam astring brr note mime_printer fpath rresult \ 50 + opam-format bos odoc.model tyxml yojson uri jsonm -o "$SITE_HTML/_opam" 51 + echo " universe built → $SITE_HTML/_opam/" 52 + 53 + echo "" 54 + echo "=== Step 4: Build reference docs ===" 49 55 dune build @doc 2>&1 | tail -5 || true 50 56 echo " reference docs built → $DOC_HTML/reference/" 51 57 52 58 echo "" 53 - echo "=== Step 4: Merge reference docs into site ===" 59 + echo "=== Step 5: Merge reference docs into site ===" 54 60 # Copy @doc reference output into the site's reference/ directory. 55 61 # The site build already creates reference/index.html from reference/index.mld; 56 62 # we add the API docs packages alongside it. 57 63 cp -r "$DOC_HTML/reference/"* "$SITE_HTML/reference/" 64 + cp -r "$DOC_HTML/odoc.support" "$SITE_HTML/odoc.support" 58 65 echo " merged reference docs into site tree" 59 66 60 67 echo ""
+3 -4
site-builder/gen_rules.ml
··· 130 130 prl " (target (dir _html))"; 131 131 prl " (deps"; 132 132 List.iter (fun rel -> prl " %s" (odocl_target rel)) mld_files; 133 - prl " _odoc/sidebar.odoc-sidebar"; 133 + (* sidebar.odoc-sidebar is generated but not used — reference docs 134 + (built via @doc) have their own sidebar; site pages don't need one. *) 134 135 List.iter (fun asset -> prl " %s" asset) assets; 135 136 prl " )"; 136 137 prl " (action"; ··· 138 139 (* HTML generate *) 139 140 List.iter 140 141 (fun rel -> 141 - prl 142 - " (run odoc html-generate --shell jon-shell --sidebar \ 143 - _odoc/sidebar.odoc-sidebar -o _html %s)" 142 + prl " (run odoc html-generate --shell jon-shell -o _html %s)" 144 143 (odocl_target rel)) 145 144 mld_files; 146 145 (* Support files *)
+1 -135
site/dune.inc
··· 1198 1198 _odoc/notebooks/oxcaml/page-local.odocl 1199 1199 _odoc/projects/page-index.odocl 1200 1200 _odoc/reference/page-index.odocl 1201 - _odoc/sidebar.odoc-sidebar 1202 1201 static/assets/jon.jpg) 1203 1202 (action 1204 1203 (progn ··· 1207 1206 html-generate 1208 1207 --shell 1209 1208 jon-shell 1210 - --sidebar 1211 - _odoc/sidebar.odoc-sidebar 1212 1209 -o 1213 1210 _html 1214 1211 _odoc/blog/2025/03/page-code-block-metadata.odocl) ··· 1217 1214 html-generate 1218 1215 --shell 1219 1216 jon-shell 1220 - --sidebar 1221 - _odoc/sidebar.odoc-sidebar 1222 1217 -o 1223 1218 _html 1224 1219 _odoc/blog/2025/03/page-index.odocl) ··· 1227 1222 html-generate 1228 1223 --shell 1229 1224 jon-shell 1230 - --sidebar 1231 - _odoc/sidebar.odoc-sidebar 1232 1225 -o 1233 1226 _html 1234 1227 _odoc/blog/2025/03/page-module-type-of.odocl) ··· 1237 1230 html-generate 1238 1231 --shell 1239 1232 jon-shell 1240 - --sidebar 1241 - _odoc/sidebar.odoc-sidebar 1242 1233 -o 1243 1234 _html 1244 1235 _odoc/blog/2025/04/page-index.odocl) ··· 1247 1238 html-generate 1248 1239 --shell 1249 1240 jon-shell 1250 - --sidebar 1251 - _odoc/sidebar.odoc-sidebar 1252 1241 -o 1253 1242 _html 1254 1243 _odoc/blog/2025/04/page-meeting-the-team.odocl) ··· 1257 1246 html-generate 1258 1247 --shell 1259 1248 jon-shell 1260 - --sidebar 1261 - _odoc/sidebar.odoc-sidebar 1262 1249 -o 1263 1250 _html 1264 1251 _odoc/blog/2025/04/page-ocaml-docs-ci-and-odoc-3.odocl) ··· 1267 1254 html-generate 1268 1255 --shell 1269 1256 jon-shell 1270 - --sidebar 1271 - _odoc/sidebar.odoc-sidebar 1272 1257 -o 1273 1258 _html 1274 1259 _odoc/blog/2025/04/page-odoc-3.odocl) ··· 1277 1262 html-generate 1278 1263 --shell 1279 1264 jon-shell 1280 - --sidebar 1281 - _odoc/sidebar.odoc-sidebar 1282 1265 -o 1283 1266 _html 1284 1267 _odoc/blog/2025/04/page-semantic-versioning-is-hard.odocl) ··· 1287 1270 html-generate 1288 1271 --shell 1289 1272 jon-shell 1290 - --sidebar 1291 - _odoc/sidebar.odoc-sidebar 1292 1273 -o 1293 1274 _html 1294 1275 _odoc/blog/2025/04/page-this-site.odocl) ··· 1297 1278 html-generate 1298 1279 --shell 1299 1280 jon-shell 1300 - --sidebar 1301 - _odoc/sidebar.odoc-sidebar 1302 1281 -o 1303 1282 _html 1304 1283 _odoc/blog/2025/05/page-ai-for-climate-and-nature-day.odocl) ··· 1307 1286 html-generate 1308 1287 --shell 1309 1288 jon-shell 1310 - --sidebar 1311 - _odoc/sidebar.odoc-sidebar 1312 1289 -o 1313 1290 _html 1314 1291 _odoc/blog/2025/05/page-docs-progress.odocl) ··· 1317 1294 html-generate 1318 1295 --shell 1319 1296 jon-shell 1320 - --sidebar 1321 - _odoc/sidebar.odoc-sidebar 1322 1297 -o 1323 1298 _html 1324 1299 _odoc/blog/2025/05/page-index.odocl) ··· 1327 1302 html-generate 1328 1303 --shell 1329 1304 jon-shell 1330 - --sidebar 1331 - _odoc/sidebar.odoc-sidebar 1332 1305 -o 1333 1306 _html 1334 1307 _odoc/blog/2025/05/page-lots-of-things.odocl) ··· 1337 1310 html-generate 1338 1311 --shell 1339 1312 jon-shell 1340 - --sidebar 1341 - _odoc/sidebar.odoc-sidebar 1342 1313 -o 1343 1314 _html 1344 1315 _odoc/blog/2025/05/page-oxcaml-gets-closer.odocl) ··· 1347 1318 html-generate 1348 1319 --shell 1349 1320 jon-shell 1350 - --sidebar 1351 - _odoc/sidebar.odoc-sidebar 1352 1321 -o 1353 1322 _html 1354 1323 _odoc/blog/2025/05/page-ticks-solved-by-ai.odocl) ··· 1357 1326 html-generate 1358 1327 --shell 1359 1328 jon-shell 1360 - --sidebar 1361 - _odoc/sidebar.odoc-sidebar 1362 1329 -o 1363 1330 _html 1364 1331 _odoc/blog/2025/06/page-index.odocl) ··· 1367 1334 html-generate 1368 1335 --shell 1369 1336 jon-shell 1370 - --sidebar 1371 - _odoc/sidebar.odoc-sidebar 1372 1337 -o 1373 1338 _html 1374 1339 _odoc/blog/2025/06/page-week23.odocl) ··· 1377 1342 html-generate 1378 1343 --shell 1379 1344 jon-shell 1380 - --sidebar 1381 - _odoc/sidebar.odoc-sidebar 1382 1345 -o 1383 1346 _html 1384 1347 _odoc/blog/2025/07/page-index.odocl) ··· 1387 1350 html-generate 1388 1351 --shell 1389 1352 jon-shell 1390 - --sidebar 1391 - _odoc/sidebar.odoc-sidebar 1392 1353 -o 1393 1354 _html 1394 1355 _odoc/blog/2025/07/page-odoc-3-live-on-ocaml-org.odocl) ··· 1397 1358 html-generate 1398 1359 --shell 1399 1360 jon-shell 1400 - --sidebar 1401 - _odoc/sidebar.odoc-sidebar 1402 1361 -o 1403 1362 _html 1404 1363 _odoc/blog/2025/07/page-retrospective.odocl) ··· 1407 1366 html-generate 1408 1367 --shell 1409 1368 jon-shell 1410 - --sidebar 1411 - _odoc/sidebar.odoc-sidebar 1412 1369 -o 1413 1370 _html 1414 1371 _odoc/blog/2025/07/page-week27.odocl) ··· 1417 1374 html-generate 1418 1375 --shell 1419 1376 jon-shell 1420 - --sidebar 1421 - _odoc/sidebar.odoc-sidebar 1422 1377 -o 1423 1378 _html 1424 1379 _odoc/blog/2025/07/page-week28.odocl) ··· 1427 1382 html-generate 1428 1383 --shell 1429 1384 jon-shell 1430 - --sidebar 1431 - _odoc/sidebar.odoc-sidebar 1432 1385 -o 1433 1386 _html 1434 1387 _odoc/blog/2025/08/page-index.odocl) ··· 1437 1390 html-generate 1438 1391 --shell 1439 1392 jon-shell 1440 - --sidebar 1441 - _odoc/sidebar.odoc-sidebar 1442 1393 -o 1443 1394 _html 1444 1395 _odoc/blog/2025/08/page-ocaml-lsp-mcp.odocl) ··· 1447 1398 html-generate 1448 1399 --shell 1449 1400 jon-shell 1450 - --sidebar 1451 - _odoc/sidebar.odoc-sidebar 1452 1401 -o 1453 1402 _html 1454 1403 _odoc/blog/2025/08/page-ocaml-mcp-server.odocl) ··· 1457 1406 html-generate 1458 1407 --shell 1459 1408 jon-shell 1460 - --sidebar 1461 - _odoc/sidebar.odoc-sidebar 1462 1409 -o 1463 1410 _html 1464 1411 _odoc/blog/2025/08/page-week33.odocl) ··· 1467 1414 html-generate 1468 1415 --shell 1469 1416 jon-shell 1470 - --sidebar 1471 - _odoc/sidebar.odoc-sidebar 1472 1417 -o 1473 1418 _html 1474 1419 _odoc/blog/2025/09/page-build-ids-for-day10.odocl) ··· 1477 1422 html-generate 1478 1423 --shell 1479 1424 jon-shell 1480 - --sidebar 1481 - _odoc/sidebar.odoc-sidebar 1482 1425 -o 1483 1426 _html 1484 1427 _odoc/blog/2025/09/page-caching-opam-solutions.odocl) ··· 1487 1430 html-generate 1488 1431 --shell 1489 1432 jon-shell 1490 - --sidebar 1491 - _odoc/sidebar.odoc-sidebar 1492 1433 -o 1493 1434 _html 1494 1435 _odoc/blog/2025/09/page-caching-opam-solutions2.odocl) ··· 1497 1438 html-generate 1498 1439 --shell 1499 1440 jon-shell 1500 - --sidebar 1501 - _odoc/sidebar.odoc-sidebar 1502 1441 -o 1503 1442 _html 1504 1443 _odoc/blog/2025/09/page-giving-hub-cl-an-upgrade.odocl) ··· 1507 1446 html-generate 1508 1447 --shell 1509 1448 jon-shell 1510 - --sidebar 1511 - _odoc/sidebar.odoc-sidebar 1512 1449 -o 1513 1450 _html 1514 1451 _odoc/blog/2025/09/page-index.odocl) ··· 1517 1454 html-generate 1518 1455 --shell 1519 1456 jon-shell 1520 - --sidebar 1521 - _odoc/sidebar.odoc-sidebar 1522 1457 -o 1523 1458 _html 1524 1459 _odoc/blog/2025/09/page-odoc-bugs.odocl) ··· 1527 1462 html-generate 1528 1463 --shell 1529 1464 jon-shell 1530 - --sidebar 1531 - _odoc/sidebar.odoc-sidebar 1532 1465 -o 1533 1466 _html 1534 1467 _odoc/blog/2025/11/page-foundations-of-computer-science.odocl) ··· 1537 1470 html-generate 1538 1471 --shell 1539 1472 jon-shell 1540 - --sidebar 1541 - _odoc/sidebar.odoc-sidebar 1542 1473 -o 1543 1474 _html 1544 1475 _odoc/blog/2025/11/page-index.odocl) ··· 1547 1478 html-generate 1548 1479 --shell 1549 1480 jon-shell 1550 - --sidebar 1551 - _odoc/sidebar.odoc-sidebar 1552 1481 -o 1553 1482 _html 1554 1483 _odoc/blog/2025/12/page-an-svg-is-all-you-need.odocl) ··· 1557 1486 html-generate 1558 1487 --shell 1559 1488 jon-shell 1560 - --sidebar 1561 - _odoc/sidebar.odoc-sidebar 1562 1489 -o 1563 1490 _html 1564 1491 _odoc/blog/2025/12/page-claude-and-dune.odocl) ··· 1567 1494 html-generate 1568 1495 --shell 1569 1496 jon-shell 1570 - --sidebar 1571 - _odoc/sidebar.odoc-sidebar 1572 1497 -o 1573 1498 _html 1574 1499 _odoc/blog/2025/12/page-index.odocl) ··· 1577 1502 html-generate 1578 1503 --shell 1579 1504 jon-shell 1580 - --sidebar 1581 - _odoc/sidebar.odoc-sidebar 1582 1505 -o 1583 1506 _html 1584 1507 _odoc/blog/2025/page-index.odocl) ··· 1587 1510 html-generate 1588 1511 --shell 1589 1512 jon-shell 1590 - --sidebar 1591 - _odoc/sidebar.odoc-sidebar 1592 1513 -o 1593 1514 _html 1594 1515 _odoc/blog/2026/01/page-index.odocl) ··· 1597 1518 html-generate 1598 1519 --shell 1599 1520 jon-shell 1600 - --sidebar 1601 - _odoc/sidebar.odoc-sidebar 1602 1521 -o 1603 1522 _html 1604 1523 _odoc/blog/2026/01/page-weeknotes-2026-03.odocl) ··· 1607 1526 html-generate 1608 1527 --shell 1609 1528 jon-shell 1610 - --sidebar 1611 - _odoc/sidebar.odoc-sidebar 1612 1529 -o 1613 1530 _html 1614 1531 _odoc/blog/2026/01/page-weeknotes-2026-04-05.odocl) ··· 1617 1534 html-generate 1618 1535 --shell 1619 1536 jon-shell 1620 - --sidebar 1621 - _odoc/sidebar.odoc-sidebar 1622 1537 -o 1623 1538 _html 1624 1539 _odoc/blog/2026/02/page-index.odocl) ··· 1627 1542 html-generate 1628 1543 --shell 1629 1544 jon-shell 1630 - --sidebar 1631 - _odoc/sidebar.odoc-sidebar 1632 1545 -o 1633 1546 _html 1634 1547 _odoc/blog/2026/02/page-weeknotes-2026-06.odocl) ··· 1637 1550 html-generate 1638 1551 --shell 1639 1552 jon-shell 1640 - --sidebar 1641 - _odoc/sidebar.odoc-sidebar 1642 1553 -o 1643 1554 _html 1644 1555 _odoc/blog/2026/page-index.odocl) ··· 1647 1558 html-generate 1648 1559 --shell 1649 1560 jon-shell 1650 - --sidebar 1651 - _odoc/sidebar.odoc-sidebar 1652 1561 -o 1653 1562 _html 1654 1563 _odoc/blog/page-index.odocl) ··· 1657 1566 html-generate 1658 1567 --shell 1659 1568 jon-shell 1660 - --sidebar 1661 - _odoc/sidebar.odoc-sidebar 1662 1569 -o 1663 1570 _html 1664 1571 _odoc/drafts/page-index.odocl) 1665 - (run 1666 - odoc 1667 - html-generate 1668 - --shell 1669 - jon-shell 1670 - --sidebar 1671 - _odoc/sidebar.odoc-sidebar 1672 - -o 1673 - _html 1674 - _odoc/page-index.odocl) 1572 + (run odoc html-generate --shell jon-shell -o _html _odoc/page-index.odocl) 1675 1573 (run 1676 1574 odoc 1677 1575 html-generate 1678 1576 --shell 1679 1577 jon-shell 1680 - --sidebar 1681 - _odoc/sidebar.odoc-sidebar 1682 1578 -o 1683 1579 _html 1684 1580 _odoc/notebooks/foundations/page-foundations1.odocl) ··· 1687 1583 html-generate 1688 1584 --shell 1689 1585 jon-shell 1690 - --sidebar 1691 - _odoc/sidebar.odoc-sidebar 1692 1586 -o 1693 1587 _html 1694 1588 _odoc/notebooks/foundations/page-foundations10.odocl) ··· 1697 1591 html-generate 1698 1592 --shell 1699 1593 jon-shell 1700 - --sidebar 1701 - _odoc/sidebar.odoc-sidebar 1702 1594 -o 1703 1595 _html 1704 1596 _odoc/notebooks/foundations/page-foundations11.odocl) ··· 1707 1599 html-generate 1708 1600 --shell 1709 1601 jon-shell 1710 - --sidebar 1711 - _odoc/sidebar.odoc-sidebar 1712 1602 -o 1713 1603 _html 1714 1604 _odoc/notebooks/foundations/page-foundations2.odocl) ··· 1717 1607 html-generate 1718 1608 --shell 1719 1609 jon-shell 1720 - --sidebar 1721 - _odoc/sidebar.odoc-sidebar 1722 1610 -o 1723 1611 _html 1724 1612 _odoc/notebooks/foundations/page-foundations3.odocl) ··· 1727 1615 html-generate 1728 1616 --shell 1729 1617 jon-shell 1730 - --sidebar 1731 - _odoc/sidebar.odoc-sidebar 1732 1618 -o 1733 1619 _html 1734 1620 _odoc/notebooks/foundations/page-foundations4.odocl) ··· 1737 1623 html-generate 1738 1624 --shell 1739 1625 jon-shell 1740 - --sidebar 1741 - _odoc/sidebar.odoc-sidebar 1742 1626 -o 1743 1627 _html 1744 1628 _odoc/notebooks/foundations/page-foundations5.odocl) ··· 1747 1631 html-generate 1748 1632 --shell 1749 1633 jon-shell 1750 - --sidebar 1751 - _odoc/sidebar.odoc-sidebar 1752 1634 -o 1753 1635 _html 1754 1636 _odoc/notebooks/foundations/page-foundations6.odocl) ··· 1757 1639 html-generate 1758 1640 --shell 1759 1641 jon-shell 1760 - --sidebar 1761 - _odoc/sidebar.odoc-sidebar 1762 1642 -o 1763 1643 _html 1764 1644 _odoc/notebooks/foundations/page-foundations7.odocl) ··· 1767 1647 html-generate 1768 1648 --shell 1769 1649 jon-shell 1770 - --sidebar 1771 - _odoc/sidebar.odoc-sidebar 1772 1650 -o 1773 1651 _html 1774 1652 _odoc/notebooks/foundations/page-foundations8.odocl) ··· 1777 1655 html-generate 1778 1656 --shell 1779 1657 jon-shell 1780 - --sidebar 1781 - _odoc/sidebar.odoc-sidebar 1782 1658 -o 1783 1659 _html 1784 1660 _odoc/notebooks/foundations/page-foundations9.odocl) ··· 1787 1663 html-generate 1788 1664 --shell 1789 1665 jon-shell 1790 - --sidebar 1791 - _odoc/sidebar.odoc-sidebar 1792 1666 -o 1793 1667 _html 1794 1668 _odoc/notebooks/foundations/page-index.odocl) ··· 1797 1671 html-generate 1798 1672 --shell 1799 1673 jon-shell 1800 - --sidebar 1801 - _odoc/sidebar.odoc-sidebar 1802 1674 -o 1803 1675 _html 1804 1676 _odoc/notebooks/page-index.odocl) ··· 1807 1679 html-generate 1808 1680 --shell 1809 1681 jon-shell 1810 - --sidebar 1811 - _odoc/sidebar.odoc-sidebar 1812 1682 -o 1813 1683 _html 1814 1684 _odoc/notebooks/oxcaml/page-local.odocl) ··· 1817 1687 html-generate 1818 1688 --shell 1819 1689 jon-shell 1820 - --sidebar 1821 - _odoc/sidebar.odoc-sidebar 1822 1690 -o 1823 1691 _html 1824 1692 _odoc/projects/page-index.odocl) ··· 1827 1695 html-generate 1828 1696 --shell 1829 1697 jon-shell 1830 - --sidebar 1831 - _odoc/sidebar.odoc-sidebar 1832 1698 -o 1833 1699 _html 1834 1700 _odoc/reference/page-index.odocl)
+25 -4
site/index.mld
··· 1 1 {0 jon.recoil.org} 2 2 3 - Welcome to jon.recoil.org. This site is built with OxCaml. 3 + Built using {{:https://github.com/ocaml/odoc}odoc}, the OCaml documentation generator. Because when you have a hammer... 4 4 5 - {1 Sections} 5 + {1 Recent entries} 6 6 7 7 {ul 8 - {- {{!/jon-site/blog/page-index}Blog}} 9 - {- {{!/jon-site/notebooks/page-index}Notebooks}} 8 + {- {{!blog/2026/02/page-"weeknotes-2026-06"}Weeknotes for week 6}} 9 + {- {{!blog/2026/01/page-"weeknotes-2026-04-05"}Weeknotes for weeks 4-5}} 10 + {- {{!blog/2026/01/page-"weeknotes-2026-03"}Weeknotes for week 3}} 11 + {- {{!blog/2025/12/page-"claude-and-dune"}Claude and Dune}} 12 + {- {{!blog/2025/12/page-"an-svg-is-all-you-need"}An SVG is all you need}} 13 + {- {{!blog/2025/11/page-"foundations-of-computer-science"}Foundations of Computer Science}} 14 + {- {{!blog/2025/09/page-"caching-opam-solutions2"}Caching opam solutions - part 2}} 15 + {- {{!blog/2025/09/page-"odoc-bugs"}Odoc bugs}} 16 + {- {{!blog/2025/09/page-"caching-opam-solutions"}Caching opam solutions}} 17 + {- {{!blog/2025/09/page-"build-ids-for-day10"}Build IDs for Day10}} 10 18 } 19 + 20 + {1 About me} 21 + 22 + {%html: <img src="/static/assets/jon.jpg" style="border-radius: 50%; margin-bottom: 1rem; display: block; max-width: 150px;" >%} 23 + 24 + Fellow of {{:https://www.chu.cam.ac.uk/}Churchill College}, SRA at {{:https://www.cl.cam.ac.uk/}Department of Computer Science and Technology}, 25 + member of {{:https://www.cst.cam.ac.uk/research/eeg}Energy and Environment Group}, Bookfighter at the {{:https://nevermoor.fandom.com/wiki/Gobleian_Library}Gobleian Library}, 26 + Professional Old Dude at {{:https://tarides.com/}Tarides}. 27 + 28 + Something something something... OCaml wins! 29 + 30 + {1 About this site} 31 + See {{!blog/2025/04/page-"this-site"}this-site} for more information about this site.