summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-10-14README: update coverage badgecoverage-bot
2026-10-14processor, storage: clear queues before shutting down proceesor and storage ↵eltrac
worker
2026-10-14processor: log before write; logging afterwards doesn't mean write is completedeltrac
2026-10-14core, storage: add storage worker that handles writes asynchronously and ↵eltrac
thread-safely fix
2026-10-13bump version to v0.7.1eltrac
2026-10-13retriever: no reducing empty microformatseltrac
2026-10-13retriever: fix mftype inferring not working with multi valueseltrac
2026-10-13handler: fix JSON response missing proper Content-Typeeltrac
- wrap-defaults middleware should be placed outside of wrap-json-response, otherwise Content-Type would be in correct - remove unused static resources
2026-10-13style: cljfmt everythingeltrac
2026-10-13README: update coverage badgecoverage-bot
2026-10-13wrapper: fix not downloading photo with relative urlseltrac
2026-10-13retriever, test: refactor retriever; accurate MF type matchingeltrac
- microformats type inferring is more accurate - before: check if microformats h-entry has a type key (:like-of, :in-reply-to...) - now: check if such key's value equals to target URL, so it makes sure this like/reply/repost/rsvp is sent to this target - use ring.util.http-response to simplify response - `?mftype=` filter no longer depends on microformats reduction - retriever.clj is overall cleaner
2026-10-13utils.url: fix not removing trailing slash of a root path URLeltrac
2026-10-13README: update coverage badgecoverage-bot
2026-10-13test: add basic test suite for storage layereltrac
also remove post-conditional assertion from edn-storage/use-store, since tests have that covered
2026-10-11bump version to v0.7.0eltrac
2026-10-11retriever: fix mftype filter not working because type mismatcheltrac
microformats type in original response body (not converted to string by middleware) is a keyword, not a string. comparing a keyword to a string is always false.
2026-10-11proceesor, storage: better error handling; no interrupting pipelineeltrac
- print clear stack trace using timbre when capturing exceptions - don't pass nil to url/normalize; if url/normalize gets a nil, instead of NPE, it now returns an empty string - capture exceptions in processor pipeline to keep it from dying - http.downloader now checks response status instead of blindly downloading anything
2026-10-10deps: upgrade asm and squint-cljseltrac
2026-10-10test, doc: fix failed tests; update coverage badge manuallyeltrac
2026-10-10test: cover most forms of retriever; set shorter http timeout in verifier testeltrac
2026-10-10retriever: improve page partitioner robustnesseltrac
- fix page partitioning function not handling Long as a valid page number - better error handling when partitioning API page frames this is a temporary fix. retriever needs refactoring.
2026-10-10README: update coverage badgecoverage-bot
2026-10-10test: fix config-test erroreltrac
2026-10-10CI: run tests when source is modified; run coverage when tests are modifiedeltrac
2026-10-10test: cover config, core, webserver; add edge cases in existing testseltrac
- test loading and merging config - test start-system and graceful shutdown - test /endpoint and /api/send - test receiver handling nil input - test webserver startup and graceful shutdown
2026-10-10config, core: use WEEPINBELL_CONFIG env var to set custom config file patheltrac
- config/load-config now accepts one arg, which is the config file path - core uses WEEPINBELL_CONFIG env, fallback to "config.edn"
2026-10-10receiver: should not call normalize if source/target is nileltrac
if source or target is nil, it would not return an error message but will throw an uncaught exception java.lang.NullPointerException: Cannot invoke "String.length()" because "this.input" is null this is fixed by nil-guarding normalize function call
2026-10-10edn_storage, handler, core: decouple stroage conformity responsibilityeltrac
- handler and core no longer care if storage is a valid vtable - use-store assert storage is valid before it was returned - AssertionError should be spotted while testing
2026-10-09bump version to v0.7.0-SNAPSHOTeltrac
SNAPSHOT because it's not fully tested yet.
2026-10-09mf.searcher: find-type now recursively search in childreneltrac
add recursive find-type tests
2026-10-09user manual: fix factual error, edn cannot use functions as valueseltrac
2026-10-09verifier, http.client: retry timeout HTTP requestseltrac
- add weepinbell.http.client/with-retry macro - retry only requests that returns :error with type TimeoutException - retry is done asynchronously - with-retry should return a Future - retry verifier requesting source and target, 3 times with 5 seconds backoff
2026-10-09license: add "addition permission" exception to EPL-licensed libraries #60eltrac
2026-10-08handler, fe: add /api/send as an alias of /endpointeltrac
frontend uses /api/send instead of configurable /endpoint
2026-10-08fe: migrate from ClojureScript to squinteltrac
- initialize NPM, ignore node_modules - initialize squint project, remove Leiningen and cljsbuild - migrate ClojureScript code to Squint - add NPM scripts and bb tasks for squint development - update README.md
2026-10-08config, storage: replace clojure.edn with fast-edn for speedeltrac
2026-10-08fe: backend should be frontend-agnosticeltrac
2026-10-08fe: add bb task that treeshakes pico.min.csseltrac
- add a bb task that uses PurgeCSS to treeshake pico.min.css - add a bb task that cleanly builds Bellsprout - use purged pico css in Bellsprout - write docs about Bellsprout
2026-10-07handler: add /api/count #48eltrac
2026-10-07test: fix failed test due to non-existing namespaceeltrac
2026-10-07test, verifier, utils: fix failed testseltrac
- some namespaces tests require did not get renamed - url/extract might throw AssertionError if input contains non-HTTP(S) urls. it should not check schemes. - verifier doesn't need to filter non-HTTP(S) urls since they will return false anyway, and plus it makes localhost urls in tests fail
2026-10-07handler: pluggable services in API routes/handlerseltrac
2026-10-07processor, webserver: move two main subsystems to own dir and make facadeseltrac
add docstrings format code
2026-10-07verifier, utils: fix verification failure when page contains invalid URLeltrac
- URISyntaxException was not caught in url/normalize, causing normalization failure which leads to verification failure when there is one invalid URL, even though valid URL exists - skip non-HTTP(S) urls when verifying
2026-10-07receiver, verifier, retriever, storage: URL normalizationeltrac
utils: add url utilities for accurate comparison - add url/normalize taht reconstructs URL, strips unnecessary components, reorders query string and ensures determinism - add url/url= that uses url/normalize receiver: normalize URLs before checking and putting in queue - use url= and normalize from utils.url - rename verify-request to check-request to avoid confusion with verifier.clj verifier: check if source includes target URL more accurately - implement url/extract with robinst/autolink-java, which extracts a vector a URLs from string - check if source includes target by 1. extracting all links from source body 2. normalizing all links before comparing with target link (with url= func) - refactor verify-headers -> match-content-types, with a higher order function and clearer description retriever, storage: use url= instead of = when comparing urls
2026-10-06dev: hot reloadingeltrac
- add start/stop/restart/watch functions in 'user namespace (dev profile) - add lein alias `dev` that starts file watcher and REPL - every time source code is changed, `lein dev` reloads modified namespaces and restarts system - add `lein dev` to Contributors' Guide
2026-10-06core, processor: refactor startup; graceful shutdowneltrac
- implement a functional rewrite of core.clj, no more `def`, no more states. callable from an REPL - handle SIGINT/SIGTERM and perform graceful shutdown - print clear logs when starting up and shutting down
2026-10-04user manual: add Migration to indexeltrac
2026-10-04API: remove typed APIeltrac
- /api/likes removed - /api/replies removed - /api/reposts removed