What's Changed
- Update purge script to match codebase cleanup by @jdlorimer in #206
- Small typo fix by @aried3r in #208
- Copy project into image instead of cloning to avoid stale images on Docker Hub by @bltavares in #216
- Resolve 3 typos in util.py by @dezren39 in #219
- only use stdin if it has a value by @pigmonkey in #229
- Add "prefers-color-scheme: dark" support by @sbrl in #240
- Fix json export date parsing by @t-mw in #241
- V0.4.3+ by @shakkhar in #264
- Fix grammar errors by @OliverParoczai in #277
- Fix a leaking file descriptor. by @Julian in #281
- guess encoding via chardet if available by @michaelbub in #322
- v0.4.3 (pre-release, bugfixes for v0.4.0) by @pirate in #274
- New feature: change user-agent for curl. by @comsomisha in #337
- Bug fix with youtube-dl option by @comsomisha in #338
- Fix example in Dockerfile. The source for a mount must be absolute. by @MartinMSPedersen in #343
- Bump base of v0.4.3 branches up to latest master version by @pirate in #321
- Ui enhancements for snapshot addition by @cdvv7788 in #349
- Title encoding issue by @cdvv7788 in #350
- Allow feed loading from the add links view by @cdvv7788 in #351
- Add pytest and initial tests by @cdvv7788 in #352
- fix: Add missing permission to add view (post) by @cdvv7788 in #359
- fix legacy index.html by @apkallum in #360
- fix: Create user home to avoid warning by @cdvv7788 in #361
- Depth flag by @cdvv7788 in #356
- Test Mock alternative. Proof of concept. by @cdvv7788 in #357
- Add fix by @cdvv7788 in #362
- fix: timestamp comparison in from_json function by @apkallum in #363
- feat: Add canonical link http header to the static response by @cdvv7788 in #366
- fix: htmlencode titles before rendering the static html index and detail by @cdvv7788 in #365
- Wget find paths when using ports by @cdvv7788 in #370
- Fix timestamp parsing issue by @apkallum in #368
- refactor: Move logging.py to main module to avoid circular import issues by @cdvv7788 in #371
- fix: Remove imports causing circular import issues by @cdvv7788 in #373
- Added entrypoint to fix permission errors by @afreydev in #367
- Docker compose fix by @afreydev in #375
- fix: Use w3lib to improve the encoding extraction by @cdvv7788 in #378
- #372 Rename logging module to avoid conflicts by @cdvv7788 in #379
- refactor: Remove old bin/archivebox by @cdvv7788 in #381
- feat: Fallback to link detail when there is an issue loading a link by @cdvv7788 in #382
- fix: Add notice for issues with index detail by @cdvv7788 in #383
- Test GitHub action by @afreydev in #384
- ensure correct permissions for output folder by @apkallum in #385
- fix: Add missing colors to dict by @cdvv7788 in #387
- docs: Update readme for release 0.4 by @cdvv7788 in #386
- fix: Remove link from sql index on remove command by @cdvv7788 in #388
- fix: Guess timestamps and add placeholders to support older indices by @cdvv7788 in #389
- refactor: Organize code to remove flake8 issues by @cdvv7788 in #390
- ensure correct permissions for archived items by @apkallum in #391
- Support old index case: cmd is string by @cdvv7788 in #392
- v0.4 (first Django release) by @pirate in #207
- Delete isolated quote in ArchiveBox.conf.default by @imlonghao in #394
- Typo - CHROME was spelled CROME x2 by @jkonrath in #397
- #409: Change import that was not working by @cdvv7788 in #410
- fix: Use pip cache instead of venv folder by @cdvv7788 in #411
- Oneshot command by @cdvv7788 in #396
- typo: Fix docker image name by @imlonghao in #420
- tests: Correct pip cache folder by @cdvv7788 in #424
- #399 Singlefile support by @cdvv7788 in #403
- Archivebox not working when using only singlefile extractor by @cdvv7788 in #430
- docs: Improve message for missing singlefile binary by @cdvv7788 in #434
- fix: utc timing for initial command log as well by @apkallum in #435
- Change roadmap links to wiki by @zachscheider in #436
- Switch Docker to use chromium instead of Google Chrome by @pirate in #440
- feat: Initial version of readability extractor by @cdvv7788 in #426
- Skip invalid URLs when archiving by @pirate in #448
- fix: Issue with timeout in readability by @cdvv7788 in #446
- A round of fixes by @pirate in #449
- Add options to ease management of node related extractors by @cdvv7788 in #451
- fix: Add a default cmd by @cdvv7788 in #459
- fix: Escape JSON output on singlefile by @cdvv7788 in #466
- Bump bl from 4.0.2 to 4.0.3 by @dependabot[bot] in #464
- Docker build by @afreydev in #470
- Replace index.json with index.sql as the main index by @cdvv7788 in #452
- View refactor by @cdvv7788 in #460
- First part migrating to Pathlib by @apkallum in #465
- Feature: Add @postlight/mercury-parser as an alternative to Readability by @ttimasdf in #478
- Headers extractor by @afreydev in #475
- fix: ensure chrome data dir is none when appropiate by @apkallum in #480
- fix: Syntax issue on config module by @cdvv7788 in #482
- Header extractor Improved by @afreydev in #481
- Oneshot fix by @cdvv7788 in #485
- fix: Wget absolute path generating issues by @cdvv7788 in #486
- fix: Remove trailing slash from public index by @cdvv7788 in #488
- os.path replacement by @afreydev in #495
- Add a bookmarklet by @adamwolf in #498
- Added network host by @afreydev in #505
- Tags migration by @afreydev in #479
- Updated image by @afreydev in #509
- feat: Add config for extractor args by @cdvv7788 in #506
- Add parser for Wallabag Atom feeds by @ehainry in #507
- feat: Remove index.json and index.html generation by @cdvv7788 in #502
- feat: Update usage of get-env in gh-actions (deprecation) by @cdvv7788 in #512
- fix: CHROME_USER_DATA_DIR by @cdvv7788 in #517
- Feature: add og:title metadata as alternative title by @ttimasdf in #493
- tests: Add tests for several different ways to extract the title by @cdvv7788 in #518
- Update license year by @Uzay-G in #519
- fix: Move wheel in setup.py to avoid wheel building issue by @cdvv7788 in #522
- Fixed docker-compose.yml url by @LaazV in #524
- Tag list filter by @jdcaballerov in #536
- feat: Add extract flag to add command by @cdvv7788 in #535
- hotfix: Fixes 500 error on Admin search by @jdcaballerov in #540
- File icons improvement by @TrAyZeN in #537
- Create a Workflow for publishing ARM Docker Images by @chrismeller in #541
- Fix string checks in schedule by @mAAdhaTTah in #547
- Move ArchiveResult from detail index.json history to database model by @cdvv7788 in #525
- Poc setup django on init by @cdvv7788 in #515
- Hotfix public page search by @jdcaballerov in #559
- fix "inconsisntencies" typo in error message by @hawkrives in #563
- Remove legacy templates by @jdcaballerov in #567
- refactor: Move indexing logic out of logging module by @cdvv7788 in #555
- Add parser for Pocket API by @mAAdhaTTah in #528
- #544 update: --index-only flag by @cdvv7788 in #568
- feat: Add --extract flag to update command by @cdvv7788 in #569
- Full-text search (rebased) by @pirate in #570
- Remove walrus operator from the codebase by @cdvv7788 in #571
- Add ripgrep by @jdcaballerov in #572
- Set info as default logging level for sonic by @jdcaballerov in #574
- Use sonic as default search backend for docker-compose by @jdcaballerov in #573
- fix: Issue with oneshot command by @cdvv7788 in #575
- Draft PR to Add Archive Mode Options to Web UI by @BlipRanger in #580
- Remove setup django by @cdvv7788 in #582
- Add ripgrep configs by @jdcaballerov in #584
- Snapshot Grid Feature implementation by @jdcaballerov in #583
- Add submodules and links by @jdcaballerov in #587
- Ignore tests inside vendored modules by @jdcaballerov in #588
- v0.5.0 Release by @pirate in #552
- Minor v0.5 release bugfixes from dev by @pirate in #607
- Extractors bugs by @cdvv7788 in #608
- Docs: Remove broken link to "#screenshots" by @mikaelf in #610
- Fix dependency dict entries by @thedanbob in #623
- Reduce indexing chunk size to avoid overflowing sonic's buffer when unicode multi-point characters push char-count past 20,000 by @jdcaballerov in #625
- Implement CodeQL Static Analysis by @mario-campos in #624
- Publish tag to Docker Hub by @mAAdhaTTah in #612
- fix: Refactor
should_save_extractormethods to acceptoverwriteparameter by @thedanbob in #628 - Set archivebox UID/GID via envvars by @thedanbob in #635
- Fix issue #617 by using mark_safe in combination with format_html by @aspensmonster in #632
- v0.5.4 Release by @pirate in #636
- v0.5.6 Release by @pirate in #652
- v0.6.0 Release beta 1 by @pirate in #655
- Bump y18n from 5.0.1 to 5.0.5 by @dependabot[bot] in #685
- v0.6.0 Release by @pirate in #680
- add command: --parser option (fixes #235) by @FliegendeWurst in #669
- fix bookmarklet script by @dryrain39 in #708
- point to master image, not latest by @FiddlyRumpus in #739
- Docs: Improve spelling on readme by @Namdrib in #766
- Exempt /add route from CSRF by @tjhorner in #777
- Bump ws from 5.2.2 to 5.2.3 by @dependabot[bot] in #784
- Discard Referer header from iframe and link to original URL by @Inndy in #799
- Update setup.sh in #804
- Fix Pinboard RSS parsing valid links as
Noneby @overhacked in #822 - healthcheck endpoint by @ajgon in #873
- Update README.md by @adamwolf in #884
- Fixes Add button behavior on Safari by @adamwolf in #886
- Tweak JS so Safari can choose admin actions by @adamwolf in #885
- Avoid KeyError on Pocket API parser by @bltavares in #843
- (#847) Decode error output hints to string if needed by @TheCakeIsNaOH in #904
- Change logfile open to write mode only by @tuupola in #906
- Fix #725 - correctly parse tags on json import by @hannah98 in #908
- Bump ansi-regex from 5.0.0 to 5.0.1 by @dependabot[bot] in #910
- Bump jszip from 3.6.0 to 3.7.1 by @dependabot[bot] in #909
- Added TAG_SEPARATOR_PATTERN option for splitting tags by @hannah98 in #911
- Fix typo: volumes section in docker-compose.yml should use array notation by @akhilleusuggo in #918
- Fix broken URI fragment in README.md by @xfq in #942
- Fix typo in README.md by @hyfen in #932
- Fix bin_version: set LANG=C when calling executables to avoid parsing localized output by @pellaeon in #936
- Fix arch installation command by @CrazyPython in #923
- Update pywb entrypoint by @kusold in #961
- Fix missing input redirection in a hint text by @rossvor in #967
- improve title extractor by @prnake in #924
- Bump node-fetch from 2.6.1 to 2.6.7 by @dependabot[bot] in #969
- Add PikaPods as commercial hosting option by @m3nu in #974
- Attempted to warn on #984 and #1014 by @turian in #1020
- Method typo? by @EsEnZeT in #1048
- Added standalone dockerfile instructions by @turian in #1023
- Add missing migration 0021 by @turian in #1027
- get setup.sh to run on FreeBSD again (13.x) by @mwestza in #1068
- Warn on broken steps, use yt-dlp to avoid youtube-dl errors, and don't crash on bad UTF-8 by @turian in #1026
- Add SINGLEFILE_ARGS to control single-file arguments by @ntevenhere in #1021
- Support for Reverse Proxy authentication backends (like authelia) by @ajgon in #866
- Bump moment from 2.29.3 to 2.29.4 by @dependabot[bot] in #1081
- Install the CodeSee workflow. in #1103
- Revert "Install the CodeSee workflow." by @pirate in #1104
- add systemd config by @fa0311 in #1115
- add CHROME_TIMEOUT args by @fa0311 in #1120
- add explicitly specify --headless=new by @fa0311 in #1123
- Add missing closing quote to style attribute by @tejr in #1128
- Fix for Issue #1008 by @dcalano in #1131
- Add FAVICON_PROVIDER option for custom favicon service by @mrled in #1146
- Set /app permissions in the Dockerfile by @mrled in #1147
- Update export_browser_history.sh by @jess-sol in #1152
- Add links to new social media profiles under Further Reading by @pirate in #1153
- fix: make oneshot command return successful exit code by @sissbruecker in #1154
- Update docker-compose.yml scheduled task image and container name by @pirate in #1159
- Fix Instapaper export link in README.md by @wogong in #1194
- bin_version means to modify, not replace environ by @overhacked in #1197
- More reliably detect Google Chrome major version number by @overhacked in #1199
- Fix hyphen placement in util.URL_REGEX by @overhacked in #1205
- Bump word-wrap from 1.2.3 to 1.2.4 by @dependabot[bot] in #1186
- Fix archive_org icon "exists" by @DanielBatteryStapler in #1211
- After a timeout, chrome will leave behind a SingletonLock, which prev… by @spresse1 in #1219
- Update singlefile to the latest version and switch it to single-file-cli by @spresse1 in #1221
- Add Readwise Reader API parser by @mAAdhaTTah in #1168
- Add LDAP support by @DanielBatteryStapler in #1214
- Skip first line of the "JSON" file by @barthalion in #996
- README: update outdated links by @jamesob in #1229
- Fix HTML title parsing bugs. by @benmuth in #1242
- Add config options to initialize admin user on first run without prompting by @benmuth in #1245
- Replace
setup.pywith PDM, update Python, NodeJS, package versions, andDockerfileby @pirate in #1249 - Fix docker build by @c01o in #1252
- Add method-specific URL allow/deny lists by @overhacked in #1195
- Fix readwise token by @mAAdhaTTah in #1259
- Remove
playwrightfrom armv7 by @c01o in #1254 - Fix
python_testsby @c01o in #1255 - Add new SQLite FTS5 full-text search backend by @overhacked in #1241
- Fix archivebox user UID & GID by @malteo in #1267
- search index extract html text by @overhacked in #1244
- Bump yt-dlp from 2023.10.13 to 2023.11.14 by @dependabot[bot] in #1271
- make local auth working along with ldap auth so that local superuser … by @vladimirdulov in #1281
- make get_commit_hash more precisce by using exact ref by @pirate in #1270
- Show banner and hints to upgrade when ArchiveBox is out of date by @benmuth in #1274
- 0.7.2 Release Candidate by @pirate in #1297
- Fallback to not
chown'ing./data/archivedir if it's a network mount that prevents ownership changes by @gnattu in #1312 - Make "DOCS" link in navigation bar open in new tab by @TrisSherliker in #1323
- Fixes #1193 Bug: Search sometimes shows the same snapshot twice by @neel-suthar in #1330
- Fix for Bug: Search sometimes shows the same snapshot twice #1193 by @neel-suthar in #1331
- Show the upgrade notification only in specific views by @benmuth in #1314
- ability to populate is_staff and is_superuser flags at LDAP authentication by @vladimirdulov in #1335
- Update README.md by @pirate in #1336
- Fix generic_json parser by @jimwins in #1365
- Make it a little easier to run specific tests by @jimwins in #1371
- Add COOKIES_FILE support for singlefile extractor by @naoph in #1372
- Update README.md Browser Extension link by @rdela in #1374
- Use feedparser for RSS parsing by @jimwins in #1362
- Use
COOKIES_FILEto fetch page titles by @benmuth in #1364 - Add
_EXTRA_ARGSfor various extractors by @benmuth in #1360 - Add generic_jsonl parser by @jimwins in #1370
- Revise md section not formatting properly in html by @n-hebert in #1382
- Update to Django 4.2.x by @jimwins in #1388
- REST API v1 using
django-ninjaby @Brandl in #1397 - fix the URL_REGEX used in generic_html parsers by @tqobqbq in #1396
- Add Railway self-host option by @boehs in #1417
- Add Webhooks support to new REST API by @pirate in #1418
- Add ability to view configuration in Admin UI (ability to edit coming later...) by @pirate in #1420
- Fix quotation by @Brandl in #1421
- Change phrasing by @boehs in #1419
- Bump cryptography from 42.0.6 to 42.0.7 by @dependabot[bot] in #1422
- Text Search and Filters don't work at the same time in the web UI #1316 by @neel-suthar in #1333
- Path validation fixes for wget_output_path() by @pirate in #1424
- Update README.md by @pirate in #1427
- Update README.md to fix typo by @ckcr4lyf in #1434
- Refactor Snapshot and ArchiveResult to use
ulidandtypeidinstead ofuuidv4by @pirate in #1430 - Add new plugin system to separate out ArchiveBox components by @pirate in #1432
- New Snapshot detail page UI by @pirate in #1429
- Bump pydantic from 2.7.2 to 2.7.3 by @dependabot[bot] in #1447
- Bump pydantic-core from 2.18.3 to 2.18.4 by @dependabot[bot] in #1446
- Bump uuid6 from 2023.5.2 to 2024.1.12 by @dependabot[bot] in #1444
- fix README typo by @benharri in #1478
- ABID, Admin UI, and REST API improvements to prepare for v0.8 release by @pirate in #1488
- Implement searching individual fields by @sclu1034 in #1457
- v0.8.+: Massive speed improvements for Admin UI & common queries, v3 plugins progress, and bugfixes by @pirate in #1498
- Fixed typo in opening paragraph by @ssoel in #1516
- Move novnc web-ui to 8081 by @agowa in #1522
- Add OpenContainer Image Format Annotations as Labels to Docker Image by @mpgirro in #1525
- Cleanup of new plugin system to remove unecessary pydantic complexity by @pirate in #1534
- Fix API crash by @benmuth in #1569
- playwright: support PLAYWRIGHT_BROWSERS_PATH environment variable by @andrew-d in #1583
- v0.8.6-rc: Moving plugins to independent python packages with finite state machine interfaces by @pirate in #1576
- Update config.yml by @pirate in #1598
- fix syntax errors by @pyrox0 in #1609
- fix syntax error in archivebox/core/models.py by @pyrox0 in #1621
- Fix typo in timestamp scale factor by @1over137 in #1627
- Fix two small errors in abx-{readwise,spec-config} by @ckiee in #1635
- Kill the timer process if it doesn't properly terminate. by @benmuth in #1649
- fix(export_browser_history): tilde doesn't expand in quotes by @pirate in #1661
- Add link to Proxmox installer by @NelsonMinar in #1682
- Improve test suite and remove mock dependencies by @pirate in #1719
- Improve filesystem based hook architecture by @pirate in #1720
- Improve concurrency control between plugin hooks by @pirate in #1721
- Rename media plugin to ytdlp by @pirate in #1722
- Add MAX_URL_ATTEMPTS option to ArchiveBox by @pirate in #1723
- Add Claude Code GitHub Workflow by @pirate in #1724
- fix: Use CustomUserAdmin to fix user creation bug by @pirate in #1726
- Fix: Make CUSTOM_TEMPLATES_DIR configurable again by @pirate in #1725
- Implement tags editor widget for Django admin by @pirate in #1729
- Convert snapshot index from JSON to JSONL by @pirate in #1730
- Fix hook file overwrites in plugin directory by @pirate in #1732
- Process.launch()/kill()/.pidfile/.wait()/etc. centralize process handling logic on model methods by @pirate in #1734
- Persona system and CHROME_USER_DATA_DIR by @pirate in #1731
- archivebox create|list|update|delete | ... piping support by @pirate in #1735
- Review output file paths and data directory structure by @pirate in #1736
- Reduce code duplication between Chrome utilities by @pirate in #1737
- Consolidate Chrome test helpers across all plugin tests by @pirate in #1738
- Change hook timeout enforcement strategy by @pirate in #1739
- Add real-world use cases to CLI pipeline plan by @pirate in #1740
- Add unit tests for JSONL CLI pipeline commands (Phase 5 & 6) by @pirate in #1743
- Add pluginmap management command by @pirate in #1742
- Delete pid_utils.py and migrate to Process model by @pirate in #1741
- Improve admin snapshot list/grid views with better UX by @pirate in #1744
- Fix CLI tests to use subprocess and remove mocks by @pirate in #1746
- Add comprehensive tests for machine/process models, orchestrator, and search backends by @pirate in #1745
- Add persona CLI command with browser cookie import by @pirate in #1747
- Add tests for accessibility, parse_dom_outlinks, and consolelog plugins by @pirate in #1749
- Add DNS traffic recorder plugin by @pirate in #1748
- Clean up on_Crawl hooks and remove dead code by @pirate in #1751
- Remove redundant chrome_validate hook, rename wget_validate to wget_i… by @pirate in #1752
- Add thumbnail previews to live progress header by @pirate in #1753
- Fix: Make SingleFile use SINGLEFILE_CHROME_ARGS with fallback to CHROME_ARGS by @pirate in #1754
- Implement native LDAP authentication by @pirate in #1756
- FIX: docker build by @pellaeon in #1760
- Tag current maintainer of AUR package by @jasongodev in #1761
- Allow tags in JSON to be CSV or array of strings by @danielalanbates in #1767
- Update documentation and dependencies for v0.9.0 release by @pirate in #1770
- Add Debian and Homebrew package build automation by @pirate in #1771
- Add configurable server security modes by @pirate in #1773
- Remove slug field from Tag model by @pirate in #1789
- [codex] Add static ArchiveBox landing page by @pirate in #1791
- Update docker-compose.yml by @pirate in #1802
- Support URLs up to 8000 chars with TextField storage by @pirate in #1817
- fix: pass archive_results=[] to LiveBusUI.print_summary() in _run_install by @slmingol in #1826
- Add PostgreSQL backend support alongside SQLite by @pirate in #1839
New Contributors
- @aried3r made their first contribution in #208
- @bltavares made their first contribution in #216
- @dezren39 made their first contribution in #219
- @t-mw made their first contribution in #241
- @OliverParoczai made their first contribution in #277
- @Julian made their first contribution in #281
- @michaelbub made their first contribution in #322
- @comsomisha made their first contribution in #337
- @MartinMSPedersen made their first contribution in #343
- @apkallum made their first contribution in #360
- @afreydev made their first contribution in #367
- @imlonghao made their first contribution in #394
- @jkonrath made their first contribution in #397
- @zachscheider made their first contribution in #436
- @dependabot[bot] made their first contribution in #464
- @ttimasdf made their first contribution in #478
- @adamwolf made their first contribution in #498
- @ehainry made their first contribution in #507
- @Uzay-G made their first contribution in #519
- @LaazV made their first contribution in #524
- @jdcaballerov made their first contribution in #536
- @TrAyZeN made their first contribution in #537
- @chrismeller made their first contribution in #541
- @mAAdhaTTah made their first contribution in #547
- @hawkrives made their first contribution in #563
- @BlipRanger made their first contribution in #580
- @mikaelf made their first contribution in #610
- @thedanbob made their first contribution in #623
- @mario-campos made their first contribution in #624
- @aspensmonster made their first contribution in #632
- @FliegendeWurst made their first contribution in #669
- @dryrain39 made their first contribution in #708
- @FiddlyRumpus made their first contribution in #739
- @Namdrib made their first contribution in #766
- @tjhorner made their first contribution in #777
- @Inndy made their first contribution in #799
- @overhacked made their first contribution in #822
- @ajgon made their first contribution in #873
- @TheCakeIsNaOH made their first contribution in #904
- @tuupola made their first contribution in #906
- @akhilleusuggo made their first contribution in #918
- @xfq made their first contribution in #942
- @hyfen made their first contribution in #932
- @pellaeon made their first contribution in #936
- @CrazyPython made their first contribution in #923
- @kusold made their first contribution in #961
- @rossvor made their first contribution in #967
- @prnake made their first contribution in #924
- @m3nu made their first contribution in #974
- @turian made their first contribution in #1020
- @EsEnZeT made their first contribution in #1048
- @mwestza made their first contribution in #1068
- @ntevenhere made their first contribution in #1021
- @fa0311 made their first contribution in #1115
- @tejr made their first contribution in #1128
- @dcalano made their first contribution in #1131
- @mrled made their first contribution in #1146
- @jess-sol made their first contribution in #1152
- @sissbruecker made their first contribution in #1154
- @wogong made their first contribution in #1194
- @DanielBatteryStapler made their first contribution in #1211
- @spresse1 made their first contribution in #1219
- @barthalion made their first contribution in #996
- @jamesob made their first contribution in #1229
- @benmuth made their first contribution in #1242
- @c01o made their first contribution in #1252
- @malteo made their first contribution in #1267
- @vladimirdulov made their first contribution in #1281
- @gnattu made their first contribution in #1312
- @TrisSherliker made their first contribution in #1323
- @neel-suthar made their first contribution in #1330
- @jimwins made their first contribution in #1365
- @naoph made their first contribution in #1372
- @rdela made their first contribution in #1374
- @n-hebert made their first contribution in #1382
- @Brandl made their first contribution in #1397
- @tqobqbq made their first contribution in #1396
- @boehs made their first contribution in #1417
- @ckcr4lyf made their first contribution in #1434
- @benharri made their first contribution in #1478
- @sclu1034 made their first contribution in #1457
- @ssoel made their first contribution in #1516
- @agowa made their first contribution in #1522
- @mpgirro made their first contribution in #1525
- @andrew-d made their first contribution in #1583
- @pyrox0 made their first contribution in #1609
- @1over137 made their first contribution in #1627
- @ckiee made their first contribution in #1635
- @NelsonMinar made their first contribution in #1682
- @jasongodev made their first contribution in #1761
- @danielalanbates made their first contribution in #1767
- @slmingol made their first contribution in #1826
Full Changelog: https://github.com/ArchiveBox/ArchiveBox/commits/v0.9.35rc162