Releases: internetarchive/openlibrary
Releases · internetarchive/openlibrary
deploy-2026-06-04-at-18-24
Open Library | June 4 Deploy Highlights
- Registration intent preservation: Patrons who hit a login wall mid-action (e.g. borrowing, shelving) are now returned to their intended destination after sign-up — reducing drop-off and friction in the new user funnel
- New "Stopped Reading" shelf and "Works by Decade" reading stats chart added for patrons
- Bug fixes: mobile star ratings, frozen carousels, Solr facet crashes, librarian title sorting
- i18n: Bengali translations updated; translator notes added for reading log strings
- Dev/infra: 7x faster tests, Docker-free pytest, request timeouts, Python/tooling updates
What's Changed
- Update Python by @renovate[bot] in #12643
- Fix librarian work title sorting not ignoring articles by @tfmorris in #11463
- fix: star ratings hidden on Already Read page at mobile/narrow viewports by @Armansiddiqui9 in #12798
- add ability to run pytest outside of docker using uv by @RayBB in #12816
- Speed up FastAPI tests 7x by session-scoping the test client fixture by @RayBB in #12820
- 12714/bug/frozen carousels by @LUC4SWM in #12812
- fix(subjects): guard facet_counts before processing when Solr returns None by @mekarpeles in #12779
- scaffolding for #10262 ol registration by @mekarpeles in #11052
- Use PYTHONPATH instead of pip install for booklending_utils by @cdrini in #12819
- Add timeout to requests in showmarc.py by @mekarpeles in #12817
- 9409/feat/preserve patron intent by @Sadashii in #12764
- Update messages.po for i18n-bn by @prantikbanerjee2006 in #12710
- feat: add 'Stopped Reading' bookshelf and related functionality by @Sadashii in #12400
- i18n: add translator notes to reading log and mybooks shelf strings by @mekarpeles in #12725
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #12836
- Add image download retrying + link to merged PRs to deploy script by @cdrini in #12838
- Fix solr builder for python 3.14 by @cdrini in #12842
- Added 'Works by Decade Published' chart to reading log stats by @Saad259 in #12822
Full Changelog: deploy-2026-05-27-at-19-40...deploy-2026-06-04-at-18-24
deploy-2026-05-27-at-19-40
What's Changed
- refactor: polish OlPopover and OlSelectPopover behavior by @lokesh in #12680
- Fix make i18n warnings by @cdrini in #12771
- Update #11578 -- Fix: Classification dropdown overflow on mobile view by @jimchamp in #12773
- Use amazon search when ISBN isn't suitable by @shoaib-inamdar in #12654
- Fix genre-prefixed subject tag lookup; add genre/subgenre/mood/content_format/literary_form tag types by @Copilot in #12490
- Build modsecurity to avoid it being outdated by @cdrini in #12769
- Migrate lists_json GET/POST endpoints to FastAPI by @Shikhar-395 in #12633
- feat: Add ol-button by @lokesh in #12390
- chore(deps): consolidate Python dependency upgrades (May 2026) by @mekarpeles in #12712
- chore(deps): consolidate JavaScript dependency upgrades (May 2026) by @mekarpeles in #12713
- build: remove black, expand ruff-format to all Python files by @shoaib-inamdar in #12778
- docs: replace Black references with ruff-format by @Shikhar-395 in #12780
- chore(deps): bump vite to ^8.0.5 (latest 8.0.x); unpin Python base image by @mekarpeles in #12711
- fix mybooks routing bug by @RayBB in #12781
- Log ocaid on record disassociation by @jimchamp in #12787
- refactor: remove ACS4 dead code from lending, models, borrow by @mekarpeles in #12525
- Update to solr 10 by @cdrini in #12786
- build: finalize eslint formatting for remaining legacy files by @harshgupta2125 in #12783
- Avoid
AttributeErroron add book action by @jimchamp in #12733 - chore(docker): upgrade base image from bookworm to trixie (python 3.12.13) by @mekarpeles in #12719
- i18n: localize hardcoded JS strings in check-in and reading log components by @AhmedxSaid in #12533
- Preserve selected edition when moving books between reading shelves by @Copilot in #11849
- Add range validation to is_valid_date for month and day (#12754) by @tranmin001 in #12782
- Increase fastapi workers by @cdrini in #12784
- Remove solr_restarter service no longer needed by @cdrini in #12791
- Update vendor/infogami digest to 1fd8b76 by @renovate[bot] in #12806
- Fix author search name sort by @tfmorris in #12809
- Rollback slick to v1.6.0 to resolve UI bug by @cdrini in #12814
- feat: add daily incremental importer for Better World Books via OPDS 2.0 feed by @ronibhakta1 in #12793
- Set PYTHONPATH in olbase image to avoid manually specifying it for scripts by @cdrini in #12811
Full Changelog: deploy-2026-05-19-at-19-10...deploy-2026-05-27-at-19-40
deploy-2026-05-19-at-19-10
What's Changed
- Update actions/deploy-pages action to v5 by @renovate[bot] in #12647
- Update actions/configure-pages action to v6 by @renovate[bot] in #12645
- Update actions/github-script action to v9 by @renovate[bot] in #12648
- chore(deps): update actions/setup-node action to v6 by @renovate[bot] in #12651
- chore(deps): update actions/setup-python action to v6 by @renovate[bot] in #12667
- chore(deps): update astral-sh/setup-uv action to v8 by @renovate[bot] in #12669
- chore(deps): update codecov/codecov-action action to v6 by @renovate[bot] in #12670
- chore(deps): update actions/upload-pages-artifact action to v5 by @renovate[bot] in #12668
- feat: migrate list_view_json endpoint to FastAPI by @shoaib-inamdar in #12556
- chore: delete unused
codegen_api_docs.ymlby @omkar-334 in #12673 - Add ol-select-popover component by @lokesh in #12635
- chore: update browserslist to track MediaWiki Grade A modern support by @lokesh in #12684
- Migrate lists_delete endpoint to FastAPI by @Sanket17052006 in #12538
- Use shared haproxy for solr by @cdrini in #12679
- fix(security): bump JS dev deps to resolve 8 high-severity Dependabot alerts by @mekarpeles in #12700
- Fix missing f-string in facet_wrapper assert message (#12649) by @tranmin001 in #12691
- Update JSON schema from openlibrary-client by @hornc in #12723
- Fix: alignment of action buttons in search grid view by @Armansiddiqui9 in #12696
- Fix tag_deploy regression and add SKIP_TRANSFER for deploy reruns by @mekarpeles in #12665
- fix(security): open redirect in BarcodeScanner + overly-broad regex in models.py by @mekarpeles in #12701
- chore(renovate): add stabilization delay, weekly schedule, and PR cap by @mekarpeles in #12638
- refactor: split AffiliateLinks into AffiliateLinksLoadingIndicator.html for loading indicator by @Sanket17052006 in #12687
- feat: add source toggle to OLMarkdownEditor by @lokesh in #12682
- refactor(css): replace hardcoded spacing values with semantic tokens by @Armansiddiqui9 in #12370
- Migrate list editions functionality to FastAPI by @Sadashii in #12545
- refactor(fastapi): use APIKeyCookie for OpenAPI security scheme by @shoaib-inamdar in #12717
- Fix open redirect vulnerability in login flow by @jimchamp in #12730
- refactor: move affiliate store logic from template to Python by @Sanket17052006 in #12731
- feat: migrate list_subjects_json endpoint to FastAPI by @harshgupta2125 in #12606
- Delete unused search_amazon stub (#12732) by @manrajs1 in #12734
- Don't make solr queries for list covers when unused by @cdrini in #12741
- fix: Follow button shows login link for authenticated users on book page lists by @mekarpeles in #12720
- Prevent FastAPI login handler from redirecting off site by @jimchamp in #12742
- Increase max requests for Gunicorn to 5000 by @mekarpeles in #12728
- Update Croatian translation by @milotype in #12749
- Fix: Add missing alt text to avatar images (#12707) by @shaiksahilrizwan in #12721
- Fix: Make native select visible on focus for keyboard accessibility (#12708) by @shaiksahilrizwan in #12727
- Fix seen type annotation in author redirects by @charliesheh in #12739
- Add image template: Generalise wording to apply to authors also by @hornc in #12744
- Add solr replica to ol-solr2 by @cdrini in #12706
- Fix MyBooksDropper partial 500ing while making solr query by @cdrini in #12763
- fix: restore TSV format for ratings, reading-log, and covers data dumps by @arijiiiitttt in #12526
- Read recaptcha URL from configuration file by @jimchamp in #12766
- Remove unused cache engines by @manrajs1 in #12765
New Contributors
- @omkar-334 made their first contribution in #12673
- @tranmin001 made their first contribution in #12691
- @charliesheh made their first contribution in #12739
- @arijiiiitttt made their first contribution in #12526
Full Changelog: deploy-2026-05-08-at-01-51...deploy-2026-05-19-at-19-10
deploy-2026-05-08-at-01-51
What's Changed
- Feature: Add DB events to Sentry by @scottbarnes in #9026
- Reorder pre-commit hooks for faster feedback by @mr-alarcon in #12472
- Feature - New WYSIWYG editor via tiptap by @Sadashii in #12182
- Delete openlibrary/templates/admin/memory directory by @RayBB in #12458
- delete endpoints already migrated to fastapi by @RayBB in #12470
- remove old solr editions code by @RayBB in #12469
- Remove verbose output from i18n pre-commit hook by @arjunrawal1 in #12477
- Team Page json by @mekarpeles in #8461
- Remove WMD reference from olmarkdown.py docstring by @Sanket17052006 in #12481
- make _do_search_query async for CarouselLoadMore in fastapi by @RayBB in #12482
- Remove PartialDataHandler ABC and unused sync stub methods by @manrajs1 in #12483
- fix: normalize tag names to lowercase for consistent subject page matching by @mekarpeles in #12473
- remove do_search by @RayBB in #12475
- Delete some no longer used code by @cdrini in #12486
- Avoid web.cookies() for pd and sfw checks by @ragini-pandey in #12492
- Different rate limits for logged in users by @cdrini in #12501
- make _do_subjects_query async by @Sanket17052006 in #12495
- make _do_browse_query async by @RayBB in #12484
- Replace deprecated web strip helpers by @Abhishek764 in #12507
- Refactor: Remove unused scripts/generate-api-docs.py (#12510) by @LUC4SWM in #12517
- Replaced web.urlquote with urllib.parse.quote by @Saad259 in #12516
- i18n(fr): add missing French translations for Locate button and welcome card by @AhmedxSaid in #12502
- refactored subject_search and author_search to remove template-side network requests by @Saad259 in #12532
- web.safeunicode by @acaligac in #12520
- fix: correct typo 'riased' → 'raised' in work.py comment by @AhmedxSaid in #12528
- updates eslint exemption list to active PRs only by @harshgupta2125 in #12539
- refactor: remove unused @public functions by @AhmedxSaid in #12536
- Add more API users by @cdrini in #12541
- asyncify code for trending and availability fastapi by @RayBB in #12508
- Update
/api/unlink.jsonhandler by @jimchamp in #12402 - i18n/zh Updated Chinese Translation by @yingren-wang in #12474
- Fix: Restore historical ordering of messages.pot - Fixes #12465 by @tfmorris in #12467
- refactor: remove @public from functions not called in HTML templates by @AhmedxSaid in #12537
- Replace web.re_compile with re.compile by @mr-alarcon in #12521
- feat: migrate Amazon PA-API to Creators API (side-by-side) by @mekarpeles in #12364
- Sort grep output where it is extracted by @cdrini in #12548
- Update messages.po by @prantikbanerjee2006 in #12543
- Note memcache.other calls in olspy by @cdrini in #12437
- Fix solr-updater and book page errors when invalid identifier by @cdrini in #12547
- chore(deps): consolidate JS dependency upgrades (security + maintenance) by @mekarpeles in #12559
- chore(deps): consolidate Python security dependency upgrades by @mekarpeles in #12558
- chore(deps): consolidate Python dependency upgrades by @mekarpeles in #12584
- chore(deps): consolidate JS dependency upgrades (security + maintenance) by @mekarpeles in #12585
- Update Croatian translation by @milotype in #12552
- chore(deps): update haproxy docker tag to v2.9.15 by @renovate[bot] in #12587
- chore(deps): consolidate Python dependency upgrades (round 2) by @mekarpeles in #12595
- chore(deps): consolidate JS dependency upgrades (round 2) by @mekarpeles in #12596
- Add CSS guide and expand AI docs with wiki frontend content by @lokesh in #12160
- Add SELinux relabel option to bind mount volumes in local composer co… by @aczietlow in #11944
- chore(deps): update dependency babel to v2.18.0 by @renovate[bot] in #12598
- chore(deps): consolidate Python dependency upgrades (round 3) by @mekarpeles in #12602
- chore(deps): consolidate JS dependency upgrades (round 3) by @mekarpeles in #12603
- chore(deps): update dependency mypy to v1.20.2 by @renovate[bot] in #12614
- Restrict access to '/api/versions' endpoint by @cdrini in #12616
- Update infogami submodule by @jimchamp in #12622
- Disable Matomo analytics on /verify_human page by @Copilot in #12551
- add name option when wrapping async functions by @RayBB in #12625
- Fixed missing whitespace around highlights in ol-chip by @ragini-pandey in #12493
- Refactor partials.py to remove init and use @classmethod (#12485) by @manrajs1 in #12575
- Switch history page to numbered pagination by @lokesh in #12624
- feat: add data-ol-link-track click tracking to Follow and reading log buttons by @Copilot in #12367
- chore(deps): consolidate Python dependency upgrades (round 4) by @mekarpeles in #12612
- chore(deps): consolidate JS dependency upgrades (round 4) by @mekarpeles in #12613
- Add handler to associate IA
ocaids with OL edition records by @jimchamp in #12429 - Throw error when visiting follower page while unauthenticated by @jimchamp in #12631
- ensure get_solr_works and site/request ContextVars work from scripts by @RayBB in #12259
- Fix worldcat links have spaces by @cdrini in #12653
- Fix: Add descriptive alt text to footer social icons by @LUC4SWM in #12652
- Fixed checked-out button in carousel to link to book page by @samyuktha2004 in #12152
- modsecurity by @mekarpeles in #12592
- Fix: add id and aria-labels to edit profile inputs (#12554) by @shaiksahilrizwan in #12646
- build: remove protected files from Ruff & Black configs by @shoaib-inamdar in #12662
- Update recaptcha domain by @jimchamp in #12661
- Add more UAs to list by @cdrini in #12659
- Update edition matching query in unlink handler by @jimchamp in #12641
New Contributors
- @mr-alarcon made their first contribution in #12472
- @arjunrawal1 made their first contribution in #12477
- @manrajs1 made their first contribution in #12483
- @Abhishek764 made their first contribution in #12507
- @LUC4SWM made their first contribution in https://gi...
deploy-2026-04-29-at-00-25
What's Changed
- Check server storage before olsystem deploy, too by @cdrini in #12423
- Fix affiliate server generate undefined by @cdrini in #12426
- Tweak solr weights/boosts - switch from additive boosting to multiplactive boosting by @cdrini in #12357
- update bwb api url to avoid 301 by @RayBB in #12427
- Fix multiple Connection instances in webpy breaking RunAs by @cdrini in #12407
- Add script to detect and fix HTML-escaped unicode in OL dumps (dry-run) by @Chisomnwa in #12224
- Cache avatar url by @Saad259 in #12355
- Fix history page pagination off-by-one by @lokesh in #12430
- fix: remove duplicate legend in Advanced Search form (#12381) by @rayrishu19-wq in #12387
- fix: remove unused parameter from welcome.html by @rattnak in #12411
- Fix case-insensitive language name sorting (#11962) by @numericals-org in #12395
- feat: interactive testing environment dashboard on /status (#11506) by @mekarpeles in #12241
- Expand py-spy monitoring by @cdrini in #12428
- Classify more API usage by @cdrini in #12436
- Adding ol-web3 to web head cluster by @cdrini in #12433
- Update Infogami for
transaction_detailstable by @jimchamp in #12434 - Asyncify solr calls of /api/books and /api/volumes by @cdrini in #12401
- substituting /static/images for /images in all urls -fixes 12208 by @jack-wines in #12352
- Update api user list by @cdrini in #12445
- Fix: improve French translations (spelling and grammar) by @MahdiiFakhfakh in #12444
- Added internationalization support for Philippines(PH) translation by @bdb-lab in #12233
- Update unicode fixer script by @jimchamp in #12435
- Remove Vue files from temporary ESLint formatting exemptions by @akramcodez in #12453
- build: apply ruff-format and black to more python files by @ragini-pandey in #12452
- Don't show error response on internalerror page by @cdrini in #12457
- feat: migrate price_api endpoint to FastAPI (#11999) by @shoaib-inamdar in #12439
- Fix /merges endpoint sql injection risk by @cdrini in #12460
- Add types to _get_db by @cdrini in #12462
- Prevent expensive query.json queries by @cdrini in #12466
- Add account security check endpoint by @mekarpeles in #12464
- Replace caret (visual whitespace) with whitespace in MARC LCCN subfields by @hornc in #12468
- i18n: Add missing Arabic translation for 'Preview Only' in ar/message… by @hichemferjani in #12456
New Contributors
- @Chisomnwa made their first contribution in #12224
- @rayrishu19-wq made their first contribution in #12387
- @rattnak made their first contribution in #12411
- @jack-wines made their first contribution in #12352
- @MahdiiFakhfakh made their first contribution in #12444
- @bdb-lab made their first contribution in #12233
- @ragini-pandey made their first contribution in #12452
- @hichemferjani made their first contribution in #12456
Full Changelog: deploy-2026-04-21-at-19-56...deploy-2026-04-29-at-00-25
deploy-2026-04-21-at-19-56
What's Changed
- fix: add noopener noreferrer to external links with target blank by @akramcodez in #12348
- Exclude dev DB dump from pre-commit fixes by @Shikhar-395 in #12377
- Add workflow to label PRs when changes requested by @Sanket17052006 in #12376
- Update stats gathering functions by @jimchamp in #11844
- Update actions where needed by @jimchamp in #12226
- migrate LazyCarouselPartial to async by @shoaib-inamdar in #12293
- Fix: Validate that the publisher exists before writing to the follows table. by @Saad259 in #12135
- build: enforce consistent quote style with ruff-format and black by @shoaib-inamdar in #12373
- fix: disable 'Want to Read' button until JS loads by @bhardwajparth51 in #12139
- Add solr haproxy prometheus exporter + fix ping path by @cdrini in #12371
- Set BWB request timeout by @cdrini in #12382
- Localize
titleattribute in template by @jimchamp in #12358 - Adopt ol-chip for subject tags, author page, and publisher page by @linhkhanhhoang in #12261
- refactor(css): replace raw em values with tokens in headings.css by @Armansiddiqui9 in #12374
- fix: add FastAPI route alias for
.jsoncheck-in POSTs to match legacy web.py behavior. by @akramcodez in #12394 - Add bulk search link to advanced search by @Shikhar-395 in #12396
- Update
wrap_jsonpto handle lists by @jimchamp in #12397 - move get_betterworldbooks_metadata and get_amazon_metadata out of AffiliateLinks template by @Sanket17052006 in #12393
- build: remove tests and partials.py from ruff/black formatting denylist by @shoaib-inamdar in #12405
- Bump bundlesizes to fix CI by @cdrini in #12406
- make betterworldbooks async by @RayBB in #12404
- Don't show trap links to recognized bots by @cdrini in #12413
- Add more api partners to monitoring by @cdrini in #12418
- Delete openlibrary/macros/DonateModal.html by @RayBB in #12403
New Contributors
- @linhkhanhhoang made their first contribution in #12261
Full Changelog: deploy-2026-04-14-at-21-41...deploy-2026-04-21-at-19-56
deploy-2026-04-09-at-21-09
What's Changed
- Add tests for detect_missing_i18n + fix some bugs by @cdrini in #12118
- ol-chip: use close icon, add border-radius-chip token by @lokesh in #12145
- Add OlPopover Lit web component by @lokesh in #12126
- Migrate all pagination to ol-pagination web component by @lokesh in #12169
- Remove unused Font Awesome font files by @lokesh in #12174
- Migrate ratings endpoints from web.py to FastAPI by @Shikhar-395 in #12001
- fix my books dropper icon by @RayBB in #12207
- Return JSON when IA->OL unlink request fails by @jimchamp in #11994
- Add
frontendtarget to Makefile by @jimchamp in #12204 - Migrate public_observations endpoint to FastAPI by @Sanket17052006 in #12205
- feat: migrate book_availability to FastAPI by @bhardwajparth51 in #12181
- update docs to better align with new docs site by @RayBB in #12229
- fix a few broken docs links by @RayBB in #12230
- Updated browse endpoint to use parse_comma_separated_list by @Sanket17052006 in #12228
- chore(deps): update dependency stylelint to v17 by @renovate[bot] in #11841
- refactor: Standardize spacing using design tokens by @Armansiddiqui9 in #12203
- Fixed series autocomplete to correctly resolve OL IDs and URLs, added tests. by @Saad259 in #12123
- chore(deps): update dependency vite to v6.4.1 [security] by @renovate[bot] in #10681
- chore(deps): update dependency webpack to v5.104.1 [security] by @renovate[bot] in #11824
- chore(deps): update dependency vite to v8 by @renovate[bot] in #12235
- refactor: remove web.ctx.site by @bhardwajparth51 in #12215
- fix: reading goal link not restored after unsetting goal by @yuanglili in #12103
- improve copilot instructions by @RayBB in #12238
- make contributing.md reflect current process by @RayBB in #12239
- Add /type/language JSON schema to schemata by @bettercallok in #12083
- Add missing translation. Fixes #12187 by @tfmorris in #12188
- Remove unused reduce_seeds function from engine.py by @Adeelp1 in #12179
- Update list of known partner user agents by @cdrini in #12247
- remove web.py partials code by @RayBB in #11895
- Update local dev environment to postgres 18 by @cdrini in #12236
- Add DOCKER_COMPOSE_COMMAND option to restart_servers.sh by @cdrini in #12234
- make FulltextSearchSuggestion partial async by @Sanket17052006 in #12265
- Bumped precommit with sqlfluff version 4.1.0 by @Sanket17052006 in #12243
- make BookPageListsPartial async by @Sanket17052006 in #12272
- Update Copilot i18n guidelines for reviews by @Shikhar-395 in #12274
- Mark account routes as internal and include in schema by @Sadashii in #12264
- Remove orphaned layout/v2.css by @lokesh in #12147
- Restore z-index on #test-body-mobile to fix header dropdown stacking by @lokesh in #12275
- add Lokesh to Slack digests by @RayBB in #12278
- add stale PR bot by @RayBB in #12279
- Add Matomo retention dimension: Days Since Registration by @mekarpeles in #12227
- Add fail2ban monitor by @cdrini in #12251
- Update dependency requests to v2.33.0 [SECURITY] by @renovate[bot] in #12198
- Make search facets fully asynchronous by @Sadashii in #12262
- Re-enable http2 by @cdrini in #12286
- fix: enable PLC0415 lint rule for openlibrary/fastapi/ directory by @shoaib-inamdar in #12291
- fix: move PLC0415 inline imports to top-level in 11 test/config files by @shoaib-inamdar in #12295
- fix bug with weekly status bot label filtering by @RayBB in #12301
- emphasize community values in contributing guidelines by @RayBB in #12269
- i18n: Add Telugu (te) translations for missing UI strings - Fixes #12216 by @VemuriHaritha in #12218
- chore(deps): update eslint (major) by @renovate[bot] in #12306
- Fix advanced search mobile overflow by @KevinSailema in #12308
- Remove unused SubjectProcessor and stale engine test by @Shikhar-395 in #12315
- refactor: replace hardcoded spacing values with semantic tokens by @Armansiddiqui9 in #12294
- Consolidate cover previews on search results to show 4 stacked covers and adjust result details. by @Saad259 in #12090
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #12307
- scripts: Add fully_reset_environment.sh and update docker/README.md by @modi02 in #12318
- fix: Add wait_for_solr to prevent race condition on startup (#11013) by @Shikhar-395 in #11570
- docker: make home wait for solr via healthcheck in compose.override.yaml by @modi02 in #12325
- migrate /api/books and /api/volumes to fastapi by @RayBB in #11922
- Default request context lang to 'en' to silent unhelpful error logs by @cdrini in #12336
- Enable end-of-file-fixer for all file types in pre-commit by @Saad259 in #12331
- Add dev carousel to homepage by @shreya8040 in #12330
- fix: disable homepage caching in local development environment by @KrishnaShuk in #12335
- Replace postgres wait loop with Docker healthcheck by @numericals-org in #12339
- Adjust Gunicorn worker settings in production config by @cdrini in #12341
New Contributors
- @yuanglili made their first contribution in #12103
- @Adeelp1 made their first contribution in #12179
- @VemuriHaritha made their first contribution in #12218
- @KevinSailema made their first contribution in #12308
- @modi02 made their first contribution in #12318
- @shreya8040 made their first contribution in #12330
- @numericals-org made their first contribution in #12339
Full Changelog: deploy-2026-03-26-at-03-26...deploy-2026-04-09-at-21-09
deploy-2026-03-26-at-03-26
What's Changed
- refactor: merge neck.html into head.html by @lokesh in #12114
- Remove legacy-header.css and dead header selectors by @lokesh in #12108
- Implement pagination web component on Trending page by @lokesh in #12035
- New web component ol-chip by @lokesh in #12012
- Add delete button to Tag edit view by @jimchamp in #12141
- Refactor: replace deprecated font-family aliases with design tokens by @harshgupta2125 in #11970
- Add some types to OLConnection by @cdrini in #12113
- Migrate browse endpoint to FastAPI by @Sanket17052006 in #12006
- Migrate booknotes endpoint to FastAPI by @Armansiddiqui9 in #12007
- fix proxy deprecated post by @bhardwajparth51 in #12122
- Remove haproxy_monitor in favour of prometheus by @cdrini in #12086
- refactor: Define primitive and semantic spacing variables by @lokesh in #12116
- Migrate existing trending_books_api endpoint to FastAPI and added tests by @bhardwajparth51 in #12000
- Fix/fixes to contributing.md by @Sadashii in #12184
- Update nginx configurations by @jimchamp in #12076
- fix: redirect to book page with flash message after returning a book by @bhardwajparth51 in #11947
- Fix get_language_name missing language parameter by @cdrini in #12117
- Update infogami submodule to latest master (dee3ca9) by @cdrini in #12194
- remove deprecated borrow and read pages for fastapi by @RayBB in #11836
- closes #12168 nginx reverse proxy opds by @mekarpeles in #12170
- TOTP auth by @mekarpeles in #11288
New Contributors
- @harshgupta2125 made their first contribution in #11970
- @Sanket17052006 made their first contribution in #12006
- @Armansiddiqui9 made their first contribution in #12007
Full Changelog: deploy-2026-03-19-at-18-02...deploy-2026-03-26-at-03-26
deploy-2026-03-19-at-18-02
What's Changed
- remove all references to LESS by @RayBB in #11998
- build: Update project dependencies in requirements.txt. by @ronibhakta1 in #12027
- Issue refinement workflow bug fixes and improvements by @lokesh in #12029
- Simple datetime refactoring to remove deprecated utcnow() usage by @hornc in #12026
- Allow new 'list_type' field in list search by @cdrini in #12022
- Use
alternate_namesfully for existing Author matching by @hornc in #11923 - Update staff member list for in-test(?) AI prompt by @hornc in #12008
- Remove dead code: openlibrary/utils/bulkimport.py by @Copilot in #12037
- use @cache instead of @web.memoize for i18n by @RayBB in #12016
- refactor: Use css part for ol-read-more button styling by @lokesh in #11817
- Make pre-commit autoupdate PRs monthly instead of weekly by @cdrini in #12040
- Update the wiki links to new docs site by @Sadashii in #12064
- Fix/fix wiki links by @Sadashii in #12065
- point all links to docs site by @Sadashii in #12066
- Rely on infogami-style setup to avoid duplicate setup calls by @cdrini in #12046
- fix partials user access in fastapi by @RayBB in #12055
- use get_current_user when adding a book by @RayBB in #12059
- Add missing languages to languages.page by @vijayalakshmipokala in #12056
- Rename OlPagination event from update:page to ol-pagination-change by @lokesh in #12072
- migrate checkins to fastapi by @RayBB in #11925
- Fix/homepage preview button by @lokesh in #12036
- Fix: Preview button on homepage does nothing when clicked by @bhardwajparth51 in #11903
- Update AI design docs and web component standards by @lokesh in #12071
- Fix: Using translated language name on language page titles by @Saad259 in #12041
- Hide sort menu for series lists by @IvanPisquiy06 in #12060
- Feat: Add autocomplete attribute to certain user-data specific fields by @Sadashii in #12080
- Expose solr edismax params for testing by @cdrini in #11790
- fix: align focus ring on search input to container border by @akramcodez in #12069
- fix: prevent caching of failed carousel search results by @KrishnaShuk in #11900
- Limit for series list by @IvanPisquiy06 in #12099
- Restore legacy 'scans' sort option by @cdrini in #12087
- refactor: replace @web.memoize with @functools.cache by @bhardwajparth51 in #12057
- Add shortlist of user-agent rate limit by @cdrini in #12115
- fix: add spam filtering for lists (closes #11905) by @shoaib-inamdar in #12045
- unused notifications by @hornc in #12120
- Add HMAC authentication to patron anonymization handler by @jimchamp in #11993
- Update messages.po by @prantikbanerjee2006 in #11948
- Remove history table from book and author pages by @jimchamp in #12092
New Contributors
- @Sadashii made their first contribution in #12064
- @vijayalakshmipokala made their first contribution in #12056
- @IvanPisquiy06 made their first contribution in #12060
- @shoaib-inamdar made their first contribution in #12045
Full Changelog: deploy-2026-03-05-at-16-24...deploy-2026-03-19-at-18-02
deploy-2026-03-05-at-16-24
What's Changed
- fix: Block duplicate OCAIDs in edition editor by @395ShikharSingh in #11862
- add missing i18n strings by @RayBB in #11859
- feat: Pagination web component by @lokesh in #11811
- Update Croatian translation by @milotype in #11865
- Add solr fields needed for editions table by @cdrini in #9029
- refactor: Utilize new border radius LESS vars by @lokesh in #11596
- Lower min weight/dimension from 0.01 to 0.001 to fix silent edit fail… by @395ShikharSingh in #11882
- Fix recaptcha missing due to plugin change by @cdrini in #11883
- Secure various handlers by @jimchamp in #11888
- Fix failing checks by @jimchamp in #11889
- remove old reading-goal,subjects,publishers web.py code by @RayBB in #11892
- Migrate all partials components to FastAPI by @RayBB in #11773
- feat: Add AI agent docs by @lokesh in #11881
- Reinstate
recentchanges_viewPOST handler by @jimchamp in #11897 - add pre-commit info to agents.md and symlink claude.md by @RayBB in #11898
- Restore "clamper" functionality for e.g. subjects, without using jQuery by @agmckee in #11872
- add prometheus monitoring for fastapi by @RayBB in #11893
- fix: Add ARIA attributes and roles to print disability dynamic section by @mystic-06 in #11560
- Fix: Increased blog feed cache timeout to 1 day by @Saad259 in #11908
- Book page subject editing by @jimchamp in #11719
- Add PDF/EPUB IA links to search.json providers for open access books by @ronibhakta1 in #11731
- fix: full text content flashes before being truncated with by @lokesh in #11812
- feat: add ebook mode to search, automatically filtering for borrowable ebooks by @ronibhakta1 in #11826
- Add ebook filter to mybooks + use standard sort dropper by @cdrini in #11868
- Fix ebooks toggle visibility on author page by @bhardwajparth51 in #11914
- feat: add sqlfluff SQL linter to pre-commit by @nightcityblade in #11873
- unify fastapi file formatting by @RayBB in #11924
- fix invalid list keys being added to lists by @RayBB in #11749
- migrate
/people/{username}/books/{key}.jsonto fastapi by @RayBB in #11926 - cleanup 'old_plugins' code to have explicit imports by @RayBB in #11762
- use pagination model for mybooks by @RayBB in #11931
- Remove
thingdbas source for patron preferences by @jimchamp in #11933 - Add OL_MOUNT_DIR support to compose.override.yaml for git worktree development by @Copilot in #11921
- Add Solr auto-rebuild health check for local dev by @mekarpeles in #11902
- Don't copy compose.override.yaml during deploy by @cdrini in #11935
- 11719/book page subject editing fix by @mekarpeles in #11936
- making solr start +x by @mekarpeles in #11937
- enable ruff check on fastapi api files in prep for migration by @RayBB in #11940
- enable FAST (FastAPI) Ruff rule by @RayBB in #11932
- Show Internet Archive identifier to librarians and admins for non-viewable books by @Copilot in #11616
- i18 bn by @prantikbanerjee2006 in #11676
- Fix: Sort language autocomplete results alphabetically with prefix ma… by @Saad259 in #11929
- ignore beads by @mekarpeles in #11942
- move merge status up by @RayBB in #11943
- Simplify history comments by @hornc in #11469
- Update ia.py to fix the undefined IA base url by @krishnapatel17 in #8610
- remove translated readmes by @RayBB in #11946
- remove languages from main readme by @RayBB in #11950
- remove gitter from the readme by @RayBB in #11951
- Deprecate LESS by @lokesh in #11885
- Filter
new-accountregistration events from/recentchangesdisplay by @Copilot in #11958 - Issue Refinement Bot by @mekarpeles in #11953
- make logo responsive to dark mode by @RayBB in #11952
- Add some types to coverstore by @cdrini in #11593
- Migrate /cdn/archive.org JS proxy endpoint to FastAPI by @bhardwajparth51 in #11969
- prep work for migrating internal apis to fastapi by @RayBB in #11971
- fastapi/server static assets by @RayBB in #11967
- Make list pages edition-aware by @cdrini in #11959
- Add support for series by @cdrini in #11678
- Allow new author records to use more fields from import data by @hornc in #11927
- prepare lists api for fastapi by @RayBB in #11976
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #11876
- setup boilerplate for fastapi lists.py by @RayBB in #11977
- add boilerplate for internal api migration to fastapi by @RayBB in #11978
- refactor for fastapi: use static methods by @RayBB in #11979
- refactor price api in prep for fastapi by @RayBB in #11980
- turn make_dark into a static method by @RayBB in #11983
- refactor best book award in prep for fastapi by @RayBB in #11984
- refactor ratings in prep for fastapi by @RayBB in #11985
- refactor lists delete in prep for fastapi by @RayBB in #11986
- refactor list_subjects_json in prep for fastapi by @RayBB in #11987
- refactor list_seeds in prep for fastapi by @RayBB in #11988
- refactor lists_json_get in prep for fastapi by @RayBB in #11990
- Remove some dead files by @cdrini in #11949
- Update links in CONTRIBUTING.md by @RayBB in #11995
- fix import bug in mybooks api by @RayBB in #11992
- simplify fastapi auth and use latest infogami by @RayBB in #11850
- add dependency note to copilot instructions by @RayBB in #11997
- refactor lists_json_post in prep for fastapi by @RayBB in #11991
New Contributors
- @mystic-06 made their first contribution in #11560
- @Saad259 made their first contribution in #11908
- @bhardwajparth51 made their first contribution in #11914
- @nightcityblade made their first contribution in #11873
- @krishnapatel17 made their first contribution in #8610
Full Changelog: https://github.com/internetarchive/openlibrary/co...