Roland
1951ca548d
Using stubs to simplify tests.
CodeQL / Analyze (push) Has been cancelled
Controller Tests / controller-tests (push) Has been cancelled
Jest Tests / jest-tests (push) Has been cancelled
2026-05-07 20:07:46 -06:00
Roland
63d768bdc3
Reporting download progress using download context.
2026-05-07 20:07:31 -06:00
Roland
8f0bb78722
Converting RSS and Video Downloaders to new testable strategy.
2026-05-07 20:07:31 -06:00
Roland
8f49f33ba2
Passing download down archive downloader.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-05-07 15:54:53 -06:00
Roland
c644d83a5b
Migrating map downloaders.
2026-05-07 15:54:53 -06:00
Roland
9a8ad7c3de
Migrating Kiwix downloaders.
2026-05-07 15:54:53 -06:00
Roland
a29df682ef
Migrating FileDownloader.
2026-05-07 15:54:53 -06:00
Roland
6c3698ccd7
Migrating ScrapeDownloader.
2026-05-07 15:54:53 -06:00
Roland
f80b3ea769
Fixing bug where Channel Downloader would create empty videos.xml channel if RSS feed was sent to it.
2026-05-07 15:54:53 -06:00
Roland
4080b7a641
Refactoring ArchiveDownloader so that it is more testable.
2026-05-07 15:54:53 -06:00
Roland
0a2e343201
Adding new key to download settings for feature to skip already downloaded resources.
CodeQL / Analyze (push) Has been cancelled
Controller Tests / controller-tests (push) Has been cancelled
Jest Tests / jest-tests (push) Has been cancelled
2026-05-05 20:24:10 -06:00
Roland
86b7782361
Adding toggle to skip already downloaded archives and files.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-05-05 14:48:35 -06:00
Roland
5eefc2098f
Skipping post-processing until the end when files are being uploaded, processing each time is very slow.
2026-05-05 14:09:24 -06:00
Roland
ba63170e55
Consolidating deletion endpoints.
CodeQL / Analyze (push) Has been cancelled
Controller Tests / controller-tests (push) Has been cancelled
Jest Tests / jest-tests (push) Has been cancelled
2026-05-03 19:14:30 -06:00
Roland
09a967535b
Models like Archive/Video/Doc can be deleted, even if they are tagged. User is shown a warning and must confirm deletion of tagged files.
2026-05-03 19:14:15 -06:00
Roland
513ae52a6e
Using style on extension page description.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-05-03 13:57:33 -06:00
Roland
d29660ca75
Splitting dependabot PRs to avoid massive breaking PRs.
2026-05-03 12:18:39 -06:00
Roland
08612fb9b6
Checking if postgres is ready faster to speed up docker container startup.
2026-05-03 12:09:12 -06:00
dependabot[bot]
da86e6a88d
Bump python-dotenv from 1.0.1 to 1.2.2
...
Bumps [python-dotenv](https://github.com/theskumar/python-dotenv ) from 1.0.1 to 1.2.2.
- [Release notes](https://github.com/theskumar/python-dotenv/releases )
- [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md )
- [Commits](https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.2 )
---
updated-dependencies:
- dependency-name: python-dotenv
dependency-version: 1.2.2
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-05-03 11:58:11 -06:00
dependabot[bot]
76833bdc09
Bump the controller-dependencies group in /controller with 12 updates
...
Updates the requirements on [fastapi](https://github.com/fastapi/fastapi ), [uvicorn](https://github.com/Kludex/uvicorn ), [pydantic](https://github.com/pydantic/pydantic ), [jinja2](https://github.com/pallets/jinja ), [psutil](https://github.com/giampaolo/psutil ), [pysmart](https://github.com/truenas/py-SMART ), [pyyaml](https://github.com/yaml/pyyaml ), [docker](https://github.com/docker/docker-py ), [pytest](https://github.com/pytest-dev/pytest ), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio ), [pytest-xdist](https://github.com/pytest-dev/pytest-xdist ) and [httpx](https://github.com/encode/httpx ) to permit the latest version.
Updates `fastapi` to 0.136.1
- [Release notes](https://github.com/fastapi/fastapi/releases )
- [Commits](https://github.com/fastapi/fastapi/compare/0.100.0...0.136.1 )
Updates `uvicorn` to 0.46.0
- [Release notes](https://github.com/Kludex/uvicorn/releases )
- [Changelog](https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md )
- [Commits](https://github.com/Kludex/uvicorn/compare/0.23.0...0.46.0 )
Updates `pydantic` to 2.13.3
- [Release notes](https://github.com/pydantic/pydantic/releases )
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md )
- [Commits](https://github.com/pydantic/pydantic/compare/v2.0...v2.13.3 )
Updates `jinja2` to 3.1.6
- [Release notes](https://github.com/pallets/jinja/releases )
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst )
- [Commits](https://github.com/pallets/jinja/compare/3.1.0...3.1.6 )
Updates `psutil` to 7.2.2
- [Changelog](https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst )
- [Commits](https://github.com/giampaolo/psutil/compare/v5.9.0...v7.2.2 )
Updates `pysmart` to 1.4.2
- [Release notes](https://github.com/truenas/py-SMART/releases )
- [Changelog](https://github.com/truenas/py-SMART/blob/master/CHANGELOG.md )
- [Commits](https://github.com/truenas/py-SMART/compare/v1.3.0...v1.4.2 )
Updates `pyyaml` to 6.0.3
- [Release notes](https://github.com/yaml/pyyaml/releases )
- [Changelog](https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES )
- [Commits](https://github.com/yaml/pyyaml/compare/6.0...6.0.3 )
Updates `docker` to 7.1.0
- [Release notes](https://github.com/docker/docker-py/releases )
- [Commits](https://github.com/docker/docker-py/compare/6.0.0...7.1.0 )
Updates `pytest` to 9.0.3
- [Release notes](https://github.com/pytest-dev/pytest/releases )
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst )
- [Commits](https://github.com/pytest-dev/pytest/compare/7.0.0...9.0.3 )
Updates `pytest-asyncio` to 1.3.0
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases )
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.21.0...v1.3.0 )
Updates `pytest-xdist` to 3.8.0
- [Release notes](https://github.com/pytest-dev/pytest-xdist/releases )
- [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst )
- [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.0.0...v3.8.0 )
Updates `httpx` to 0.28.1
- [Release notes](https://github.com/encode/httpx/releases )
- [Changelog](https://github.com/encode/httpx/blob/master/CHANGELOG.md )
- [Commits](https://github.com/encode/httpx/compare/0.24.0...0.28.1 )
---
updated-dependencies:
- dependency-name: fastapi
dependency-version: 0.136.1
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: uvicorn
dependency-version: 0.46.0
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: pydantic
dependency-version: 2.13.3
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: jinja2
dependency-version: 3.1.6
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: psutil
dependency-version: 7.2.2
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: pysmart
dependency-version: 1.4.2
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: pyyaml
dependency-version: 6.0.3
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: docker
dependency-version: 7.1.0
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: pytest
dependency-version: 9.0.3
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: pytest-asyncio
dependency-version: 1.3.0
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: pytest-xdist
dependency-version: 3.8.0
dependency-type: direct:production
dependency-group: controller-dependencies
- dependency-name: httpx
dependency-version: 0.28.1
dependency-type: direct:production
dependency-group: controller-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-05-03 11:56:30 -06:00
dependabot[bot]
90d23b17d7
Bump protocol-buffers-schema from 3.6.0 to 3.6.1 in /app
...
Bumps [protocol-buffers-schema](https://github.com/mafintosh/protocol-buffers-schema ) from 3.6.0 to 3.6.1.
- [Commits](https://github.com/mafintosh/protocol-buffers-schema/compare/v3.6.0...v3.6.1 )
---
updated-dependencies:
- dependency-name: protocol-buffers-schema
dependency-version: 3.6.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-05-03 11:56:17 -06:00
Roland
a9a460c54c
Creating browser extension to facilitate starting downloads. Chrome/Brave and Firefox supported.
...
The extension is hosted in a sibling repo and
is distributed off-store. Each WROLPi release ships the prebuilt artifacts
under wrolpi/static/extensions/ and serves them at /api/extensions/<file>:
- wrolpi-chrome.zip Load-Unpacked sideload for Chrome / Brave / Edge
- wrolpi-firefox.xpi Mozilla-signed (unlisted self-distribution),
one-click install in any Firefox
- versions.json Per-browser version metadata for the install page
Backend (modules/archive/api.py, wrolpi/root_api.py):
- POST /api/archive/upload accepts an optional repeated `tagNames`
multipart form field; the upload switch handler applies tags to the
new FileGroup via FileGroup.set_tags(). Unknown tag names are auto-
created inside a per-name SAVEPOINT so concurrent inserts on the same
novel name don't abort the transaction (Tag.name has unique=True).
- GET /api/extensions returns metadata (per-file availability + size +
versions.json contents) for the install page.
- GET /api/extensions/<filename> serves the binary, whitelisted by
filename. Firefox .xpi is served as application/x-xpinstall WITHOUT a
Content-Disposition: attachment header, so Firefox triggers its
add-on install handler instead of saving the file.
Frontend (app/src/):
- New /admin/extension page (linked from AdminRoute) detects the user's
browser via navigator.userAgent and renders an install card per
Firefox / Chromium / Other. Pulls metadata from /api/extensions to
show file size and version, and gracefully reports 'Not yet
available' when binaries are missing.
- Dashboard's Getters component supports a deep link from the
extension's 'Configure Download' button:
/?downloader=<archive|video|...>&download_url=<u1>&download_url=<u2>
On mount, the matching downloader form auto-opens with URLs pre-
filled. Query params are cleared on close so a refresh doesn't
re-open the modal.
- DownloadMenu and the per-downloader forms accept an `initialUrls`
seed via the existing `download` prop pattern, joined with newlines
for the `urls` textarea (and first URL for single-URL forms).
Behavior is fully backwards compatible: pre-existing API callers can
still POST to /api/archive/upload without `tagNames`, and the
DashboardPage modal continues to open via the existing button click
when no deep-link query params are present.
2026-05-03 11:48:50 -06:00
Roland
ae460af8d6
URLs can be dropped onto download textarea.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-05-02 13:35:08 -06:00
Roland
7bf1c80847
Fixing bug where pagination would show an extra link that would load no results.
CodeQL / Analyze (push) Has been cancelled
Controller Tests / controller-tests (push) Has been cancelled
Jest Tests / jest-tests (push) Has been cancelled
2026-04-30 17:40:26 -04:00
dependabot[bot]
57e75370b4
Bump follow-redirects from 1.15.6 to 1.16.0 in /app
...
CodeQL / Analyze (push) Has been cancelled
Controller Tests / controller-tests (push) Has been cancelled
Jest Tests / jest-tests (push) Has been cancelled
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects ) from 1.15.6 to 1.16.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases )
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.6...v1.16.0 )
---
updated-dependencies:
- dependency-name: follow-redirects
dependency-version: 1.16.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 16:50:19 -06:00
dependabot[bot]
f9fd89bc02
Bump pillow from 12.1.1 to 12.2.0
...
Bumps [pillow](https://github.com/python-pillow/Pillow ) from 12.1.1 to 12.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases )
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst )
- [Commits](https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0 )
---
updated-dependencies:
- dependency-name: pillow
dependency-version: 12.2.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 16:49:38 -06:00
dependabot[bot]
8c53f50f13
Bump mathjs from 14.0.1 to 15.2.0 in /app
...
Bumps [mathjs](https://github.com/josdejong/mathjs ) from 14.0.1 to 15.2.0.
- [Changelog](https://github.com/josdejong/mathjs/blob/develop/HISTORY.md )
- [Commits](https://github.com/josdejong/mathjs/compare/v14.0.1...v15.2.0 )
---
updated-dependencies:
- dependency-name: mathjs
dependency-version: 15.2.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 16:49:08 -06:00
dependabot[bot]
4830143c3a
Bump aiohttp in /controller in the controller-dependencies group
...
---
updated-dependencies:
- dependency-name: aiohttp
dependency-version: 3.13.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: controller-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 16:48:19 -06:00
Roland
6b12e97cf0
Changing model file icon to teal tube.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-04-15 14:04:07 -06:00
Roland
5dd5933451
Adding 3mf file viewer to FilePreview.
2026-04-15 14:03:56 -06:00
Roland
575a1b2a80
Reworking file preview buttons to be consistent across screens.
2026-04-15 13:18:45 -06:00
Roland
29133b1e56
Reworking StlViewer size so that it is no longer cropped by the window.
2026-04-15 12:53:27 -06:00
Roland
f555855b15
Updating raspberry pi package list file name.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-04-14 16:52:33 -06:00
Roland
66cecce5e6
Adding Doc filter button so users can search just PDFs/EPUB/etc.
2026-04-14 15:35:35 -06:00
Roland
9468448a54
Modifying Video/Channel/RSS Downloaders so that they can download videos, but audio only. These audio files are grouped under their channel directories.
2026-04-14 15:33:01 -06:00
Roland
52e186f34d
Bumping version for file deletion fix.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-04-14 11:47:10 -06:00
Roland
8fb9e35aef
Displaying confirmation modal when deleting tagged files, rather than just refusing to delete them.
2026-04-14 11:46:50 -06:00
Roland
4380cab88c
Bumping version for map search.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-04-13 17:32:53 -06:00
Roland
cefa29e67c
Adding simple search to epub viewer.
2026-04-13 17:23:20 -06:00
Roland
8a75cf9057
Linking to specific page or section of an EPUB/PDF when user searches.
2026-04-13 16:47:02 -06:00
Roland
673d851501
Displaying upgrade logs when user clicks 'View output' during upgrade on Controller.
2026-04-13 16:47:02 -06:00
Roland
c726654de9
Map search added to global search. Preview cards are displayed for all results in new Map tab.
...
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
Map viewer has simple search.
Map search databases can be downloaded from CDN, or built locally. Map searches can be built offline, but will not have enriched things like state names downloaded from Wikidata.
2026-04-13 12:17:08 -06:00
Roland
aaa3c0aff7
Updating readme with Protomaps.
CodeQL / Analyze (push) Has been cancelled
Controller Tests / controller-tests (push) Has been cancelled
Jest Tests / jest-tests (push) Has been cancelled
2026-04-11 15:36:02 -06:00
Roland
74a4198f8d
Not using flexbox when measuring navbar item widths so that Admin link is not cropped.
CodeQL / Analyze (push) Has been cancelled
Controller Tests / controller-tests (push) Has been cancelled
Jest Tests / jest-tests (push) Has been cancelled
2026-04-10 15:27:15 -06:00
Roland
651dbd84e9
Grouping dependabot PRs by month.
2026-04-10 15:13:13 -06:00
Roland
1294b14c10
Adding button to bulk tag file groups for collection items. Always displaying selection column on collection page tables.
CodeQL / Analyze (push) Waiting to run
Controller Tests / controller-tests (push) Waiting to run
Jest Tests / jest-tests (push) Waiting to run
2026-04-09 16:18:26 -06:00
Roland
4b34d37838
Navigation links automatically hide based on screen width, rather than hard breaks.
2026-04-09 16:17:38 -06:00
Roland
74c04fe5f6
Rounding drive stats for similar df performance.
2026-04-09 15:32:49 -06:00
Roland
a8b756b01a
Deleting archives by file group id, rather than archive id.
2026-04-09 15:29:28 -06:00
Roland
dc23278afb
Display upgrade banner on Controller dashboard while upgrade is running.
2026-04-09 15:22:27 -06:00