- Call out the "RESOURCE_EXHAUSTED" error metric (#808) (ebc5704b)
- Containerize integration tests. (#809) (f8763040)
- Move BT chunk processing into retry (#806) (7edbcc76)
- Containerize integration tests. (11710e11)
- test: update test strategy to include links to metrics (#810) (8cda9ac1)
- Address insecure sub header fetch. (#803) (53d90aa9)
- Do not return status 200 for router messages (#801) (a3d23013, closes #800)
- update actix-ws to 0.3 (#799) (6141a905)
- deps-dev: bump werkzeug from 3.0.3 to 3.0.6 in /tests (#790) (50ab4a01)
- load: update scripts to use artifact registry (#792) (d64178f4)
- notification-tests: specify platform linux/amd64 in docker-compose.yml so that Docker knows to use an emulation layer when running on an arm based machine (ae303044)
- integration: replace pytest.skip with pytest markers (#798) (84f1fe8e)
- Add database tracking and report for Push Reliability (#769) (e95063cc)
- Do not double-check VAPID aud (#772) (ea04db68)
- pass settings to vapid when processing subscription request (#771) (3cc5a565)
- minor fixes for GAR deploy CircleCI jobs (#764) (e0d87663)
- using google_project_number for OIDC authentication (#763) (92772f93)
- fixed workflow_dispatch runs for docker.yml GHA workflow (#752) (2acc5816)
- README fenix debug link (8f769696)
- jsonwebtoken validation errors (#709) (372f3940)
- circleci: now using correct project IDs, cleaned up env var names (#762) (7b51e776)
- prefer git tag for docker image tag (#768) (9afbe422)
- Updates for rust 1.81 (#766) (39a1aa55)
- clean up old GHA and Docker Hub deployment workflows (#765) (59167492)
- added missing use_oidc gcr-auth param (#761) (b3740a81)
- Simplify publish_docs workflow (#749) (9fb9fb37)
- add summary-only option to coverage json (#751) (ed1cfcb2)
- Updates for rust 1.80 (#740) (b235155e)
- Update for 2024-June (#716) (b1c0f445)
- deps-dev:
- bump cryptography from 42.0.7 to 43.0.1 in /tests (#757) (dfe96855)
- bump flask-cors from 4.0.1 to 5.0.0 in /tests (#755) (b22a3da7)
- bump certifi from 2024.2.2 to 2024.7.4 in /tests (#731) (fda011e6)
- bump urllib3 from 2.2.1 to 2.2.2 in /tests (#714) (8f905098)
- bump requests from 2.31.0 to 2.32.0 in /tests (#707) (65f1ab01)
- bump flask-cors from 4.0.0 to 4.0.1 in /tests (#703) (61bf2f0a)
- bump jinja2 from 3.1.3 to 3.1.4 in /tests (#701) (c69028e0)
- bump werkzeug from 3.0.2 to 3.0.3 in /tests (#700) (39368eda)
- remove dynamodb legacy db impl (#720) (71b32192)
- remove adm features (#729) (6402531e)
- remove aws feature flag for logging aws ec2 (#728) (e11e7d8b)
- remove User last_connect (#712) (35b698b1)
- autopush-common remove legacy autopush (#708) (7ade0026)
- remove autopush crate (#706) (180675c5)
- Replace Bottle with FastAPI (#668) (d49458e6)
- Update mobile debugging link in README.md (b09814a8)
- Normalize and explain TTLs maximums (#742) (b8e524fe)
- Add ability to track messages based on known VAPID keys (#739) (b5256019)
- Add metrics to return the number of channels per UAID (#736) (b980d44c)
- push Docker images to GAR (#746) (97e91939)
- use GHA to build and push images to GAR (#750) (4d1f7e93)
- Add junit XML test reporting for unit tests on CI. (d978b541)
- [SYNC-4365]: Report test results and coverage on CI (#744) (e45d1753)
- add APNS timeouts for a2 (#741) (d321de3e)
- bump up msg_limit for autoconnect settings (#738) (fde9b673)
- add implicit updates of channel records to update_user (#734) (4aef2806)
- Trigger an
update_user()
for channel checks and mobile messages (#730) (843eeed4) - add VAPID quality tracking metric messages (#417) (604fd946)
- Add
profile_app_id
routing hint to bigtable requests (#639) (8e0ffff0) - Record the VAPID
sub
with database errors (#681) (ae66e496) - Add integration test for mobile HTTP calls (#532) (9bc1ae98)
- remove
use_webpush
as a required flag (#522) (f58d3752) - Load test fixups (#584) (a783a05a)
- Make more errors use ReportableError trait (#632) (b2d41173)
- Move "ADM" router support behind a feature flag. (#629) (38830f0d)
- fixturize pytest (#694) (20ed0da9)
- remove the unused metrics module (#698) (a17857f8)
- Reduce some of the more common errors from the logs (#695) (444f82a3)
- minor fixes for GAR deploy CircleCI jobs (#764) (1883d278)
- using google_project_number for OIDC authentication (#763) (4445fcfb)
- circleci: now using correct project IDs, cleaned up env var names (#762) (d4fc2079)
- push Docker images to GAR (#746) (2995239d)
- Re-tag 1.71.5
- update openssl per RUSTSEC-2024-0357 (52d9da33)
- Re-tag 1.71.3
- update per RUSTSEC-2024-0336 (#682) (e6293090)
- upgrade all integration tests to asyncio async await (#667) (c7448f45)
- a couple retry logic error messages were incorrect (#676) (6cb6549b)
- Ensure that status and labels are propagated for DB errors (#679) (5a1f2099)
- emit pool timeouts/conditional failures as metrics (not sentry) (#671) (b4f01af8)
- Switch to randomized UAID for health check (#670) (06093787)
- load: Document the process for calibrating users per worker (#661) (c89627fd)
- load: Document the process for calibrating worker count (#666) (de752ec4)
- add initial async features for client (#653) (22f058e6)
- deps-dev:
- introduce end_median for dual. (#663) (38d6a6d1)
- Switch to lighter weight health check (#662) (133bcb53)
- Swtich to lighter weight health check (bed0f7f4)
- dual mode needs its own spawn_sweeper (#658) (1b4d5a9a)
- further special case another form of an incomplete router record (#655) (396c7b04)
- evict idle connections from bigtable's db pool (#654) (70b1e7b2)
- don't skip DbError in the ReportableError chain (#649) (c9b97d13)
- include tags/extras across the exception chain (#648) (fb2b0ee7)
- Make bigtable calls retryable (#591) (12dd7b41)
- special case "chid-only" records (#646) (5ab83fb8)
- report db pool metrics (#644) (93d4cd38)
- Add timeouts for bigtable operations (#611) (34964235)
- don't ignore add_user errors (#640) (6a91bce5)
- retry get_user when the add_user condition fails (#637) (87ed38c3)
- Add missing doc diagram. (#623) (12bce705)
- prefer the simpler delete to avoid the admin API (#636) (0b7265ed)
- don't add_channels when there's none to add (#634) (b0ffa8cd)
- have Bigtable match DynamoDB's metrics (#627) (0ce81aab)
- have bigtable remove_channel write conditionally (#625) (60c6675b)
- "recycle" the user object in update_token_route (#621) (4bd48278)
- fix add/update_user version field handling on migrations (#619) (1ff88e79)
- dual update_user calling add_user (c80866d6)
- add metadata headers for bigtable (#586) (e043fb02)
- simplify StoredNotifAutopushUser's on_start (#614) (c2841113)
- simplify StoredNotifAutopushUser's on_start (0d0e99e6)
- retry dynamodb HttpDispatch errors (#605) (cb1482de)
- Elevate big table settings dump for deployment debug (#609) (7d29c16d)
- put old AWS crap behind a feature flag (#606) (04df79e5)
- deps-dev:
- add secondary_write for channels (#597) (37b377ae)
- Isolate dynamodb to feature flag only (#612) (158e01c4)
- Add errors for health check reporting (#610) (37a0724a)
- reset the WebSocket every time it disconnects (#607) (9bb964c6)
- cleanup add_channels to use mutate_row (#583) (db2e02ed)
- add a new test that produces stored notifs (#598) (a6bd3cd7)
- filter reads by latest cell (#599) (e012955a)
- [SYNC-3835] pydocstyle implementation (#585) (aa5773da)
- Add integration test for
dual
mode (#582) (76848753) - don't store duplicated message columns (#581) (7f2396aa)
- store the channel_id metadata in a single bigtable row (#574) (1716f205)
- errors when deleting and provisioning load test clusters (#593) (925130a1)
- fix remove_node_id's condition check to be more reliable (#590) (dc077623)
- fetch messages shouldn't read the current timestamp's notif (#577) (fc99e774)
- Clarify how the index for Row is used between reading and writing to Bigtable (#573) (09fe7ac2)
- channel_ids should continue being represented in hyphenated format (#561) (661a705d)
- Use standard chidmessageid parser for remove_message (#555) (42775f9e)
- filter by timestamp (#548) (b7cd357b)
- don't assume topic chidmessageids in remove_message (#553) (e6729c06)
- Add proper update_user logic for Bigtable (#503) (89c3bd98)
- kill the delete_all_data_from_table flag (#541) (8c99f47c)
- copy over the channels when migrating the user (#539) (e36b3fef)
- remove unneeded clone operation (#521) (53b6f03f)
- set all column families (message) to maxversions=1 (#566) (464c87a5)
- read via row ranges instead of regex (#564) (0a96e1b8)
- Be more clear and consistent about features around
dual
(#557) (60c8b333) - save some cloning (possibly) (#563) (03afd7cc)
- run integration tests against Bigtable (#558) (356f24cf)
- run unit tests against the bigtable emulator (#547) (21e0d40c)
- Add database routing support (#473) (5aea6548)
- Report BigTableErrors with extra data (#530) (c7fa922f)
- support dual mode data storage (#369) (6624a19a)
- quiet remove_node_id's conditional failure case errors (#517) (7fe9d489)
- update to the new autoconnect url (#538) (ac5c691f)
- Document VAPID key should be base64 encoded (#535) (c9b9d6bd)
- replace AUTOPUSH_ENDPOINT_URL and AUTOPUSH_SERVER_URL with LOCUST_HOST in load tests (#523) (b72dee15)
- add build_load_test and deploy-load-test job to build-test-deploy ci workflow (05b6d448)
- update python dependencies and fix mypy errors (a5d8828d)
- upload integration test results to CircleCI test insights (#519) (ff882fea)
- lint & make integration tests in autopush-rs (#518) (e3d38c6c)
- deps: bump openssl from 0.10.57 to 0.10.60 (#525) (3b52f7b7)
- demote
retry
message, dump vapid claims. (#510) (cc4048c7) - add actix_max_connections/workers settings (#515) (6f6289c3)
- Add metrics for user creation/deletion. (#506) (bd2e0117)
- only capture some SMError backtraces (#508) (8f6e03e3)
- correct the ua.expiration metric's tag (#502) (ca002ec8)
- add ReportableError::reportable_source (#500) (40487b76)
- handle already connected users (#495) (eb53beca)
- further detect common io errors in megaphone's updater (#492) (5421f581)
- split router endpoints into their own app (#491) (bbde5823)
- defer Error::source methods to inner kind's (#486) (a9a17963)
- emit metrics for megaphone polling (#488) (ea302228)
- further clean up (#399) (61d784f8)
- capture sentry events for the unidentified state (#484) (09db55f2)
- Convert WSError(Timeout for Pong) to metric (#478) (cd597d39)
- hide common SessionClosed errors from sentry (#470) (f069c2c9)
- tag 1.69.1 (#466) (c8192503)
- allow invalid uaids in autoconnect (#464) (6da8c45e)
- tag 1.68.3 (#456) (2a97e678)
- Use the calling crate's name and version for init_logging() (#461) (d3bd4c07)
- Reject Legacy GCM endpoints (#459) (aaa47139)
- re-enable slog's envlogger (#452) (e76b1198)
- AutopushUser fails with WebSocketConnectionClosedException (5f8efb2d)
- Use
warn!()
to supplement sentry errors, since they don't show up regularly. (#449) (4eaa9a06)
- tag 1.68.1 (#448) (b55bbe76)
- don't emit backtraces in Display (#447) (392f4e1e)
- tag 1.68.0 (#446) (00d19b1a)
- emit a tag in autoconnect's metrics (#435) (67186854)
- Add send notification task to locust load test file (453ba8d4)
- add an autoconnect-web Error type (#432) (58086e77)
- switch the load tester to pypy-3.10 (#426) (5b4d6d71)
- Update loadtests user and tests (d4af1bfe)
- Add GCP BigTable support (#364) (608c52fe)
- consolidate the sentry middlwares into autopush_common (e65486b9)
- add stacktraces to some sentry events (#406) (0ded4de1)
- Topic messages shouldn't have sortkey_timestamps (#402) (eeff8d71)
- build/deploy an autoconnect docker (#396) (9ed4e6f0)
- make DbClient's message table month optional (#393) (ab3614b7)
- remove legacy table rotation (#389) (6aa107f5)
- fill in some autoconnect TODO docs (#410) (74ffdb05)
- Update docs for modern version of autopush (#388) (d36fb527)
- Add better error messaging for GCM/FCM processing (#445) (2e48f504)
- missing class-picker option in Kubernetes config (9d0faf7c)
- apply fixes from code review 2 (7ea158d2)
- apply fixes from code review (142c4d2c)
- load test docker build error in GCP (e7e7539e)
- remove print statement (2134d050)
- load test script modifies kubernetes config on first run only (89dc80bc)
- use explicit path (a51fca5c)
- remove mozsvc-common (#394) (814ff49e)
- remove mozsvc-common (#394) (66bb74f9)
- validate message schema in load tests with models (0d8c1c2f)
- add a load test shape (f84e2665)
- calibrate load tests (7a6c099f)
- update user, spawn rate and time in load tests (b9a88e5a)
- add python linters and formatters to CI (615b93ad)
- deps:
- emit metrics also in the common Response error case (#384) (5bd09339)
- deps: bump requests from 2.30.0 to 2.31.0 in /tests (#380) (cdf91df6)
- switch to latest release a2 library (#362) (728fe169)
- add broadcast (megaphone) support (#381) (97d3a3ae)
- complete (mostly) the WebPushClient (#379) (f7110214)
- move tests to python3 (08bd46b8)
- disable sentry's debug-images feature (#375) (ed730974)
- more db_client -> db (61beb2e1)
- options -> app_state (5a6a35a5)
- reduce settings duplication w/ deserialize_with (4f3e4501)
- move broadcast/protocol/registry into a common crate (#357) (fa9109dc)
- metric message table rotations (#371) (647ffb14)
- quiet more router errors from sentry (#368) (f90fc066)
- add the initial autoconnect-ws/state machine crates (#363) (b4298eab)
- reduce the number of errors reported to sentry.io (#358) (a9a88f34)
- Add metrics to try and analyze UpdateItem bug. (#344) (7641d18d)
- Add extra to sentry. [CONSVC-1886] (#333) (008e3e8c)
- don't eat WebpushSocket poll_complete errors (#374) (f8e65255)
- Add back missing metrics (#372) (19525593)
- make CORS default less restrictive. (#348) (d421e8de)
- channel_id should be hyphenated (#365) (0067ae42)
- release 1.65.0 (#324) (060a520)
- silence data overflow error in sentry (#327) (202fba6)
- add metrics for vapid errors (#340) (922fcf8d)
- add timeouts for Client::reqwest calls [CONSVC-3289] (#329) (e0c370ae)
- modernize to rust 1.65 (#337) (07b67bd)
- add additional metrics for message tracking (#330) (65ac1a3)
- Add mobile debugging steps to README (#339) (9238056)
- Fix typo in README.md file (thanks @dev-aniketj) (#341)
- allow for standard base64 private keys (#323) (7ec9e541)
- tag 1.64.0 (#322) (3b888782)
- add jitter to retry (#319) (3272fdec)
- various mini-patches for FxA integration work (#321) (b2b6bfd3)
- Added more verbose
trace!
anddebug!
logging messages. - ignore padding errors for VAPID keys
- bumped up default max bytes to handle base64 encoded 4096 block
- record the VapidError as an info before we send it to metrics
- Added more verbose
- tag 1.63.0 (#312) (f40a14a7)
-
Update for Jun 2022: Alters env var key names (#313) (1ec85899) Broke: Environment var key changes from:
AUTOPUSH_
=>AUTOPUSH__
AUTOEND_
=>AUTOEND__
- tag 1.62.0 (#304) (1425b896)
- Fix GCM handling (#309) (96cef485)
- Add tool to generate endpoints (#307) (2829fa42)
- tag 1.60.0 (#300) (ef47c7a7)
- bug: Do not report non-actionable errors to sentry (#299) (3d18b10d2)
- feat: return more explicit VAPID error message (#299) (3d18b10d2)
- 1.59.1 (#297) (01d39582)
- tag 1.59 (#296) (8b8e5fb3)
- cleanup cargo audit invocation (#290) (23818662)
- tag 1.58.0 (#289) (e47f697b)
- Q3 dependency update (#286) (627456d9, closes #285)
- Dep update for Jul 2021 (#283) (230fb191)
- library update for Jun 2021 (#280) (5e9aabfe)
- tag 1.57.8 (#277) (35f0b406)
- Report bridge status via
__heartbeat__
(#295) (4e85e401, closes #294) - Standardize to
/__error__
for sentry error check (#278) (3f0dc8f4, closes #274)
- Drop aesgcm128 support (#268) (d8b7ca83)
- tag 1.57.7 (#271) (4857f0b1)
- tag 1.57.6 (802bfdfe)
- tag 1.57.5 (#258) (a95b7b97)
- update dependencies for Mar 2021 (7ec16f08, closes #256)
- tag 1.57.4 (#253) (b4c5e5e3)
- Set baseline hyper version (8bb5998c, closes #251)
- Update dependencies where possible. (#250) (d9446f63)
- move a2 under mozilla-services (#245) (1300a4dc, closes #236)
- release/1.57.3 (#243) (9bc9fef0)
- tag 1.57.1 (#239) (0f168c93)
- Include minimal debug info in release builds (#215) (fd659e3e, closes #77)
- Support "gcm" as an alias to "fcm" (#211) (fd0d63d2, closes #204)
- Add the log-check route and remove unused ApiError variants/impls (#209) (1b0b18b3, closes #208)
- Amazon Device Messaging router (#207) (c587446a, closes #165)
- Use autoendpoint-rs in integration tests (#205) (31d2d19c, closes #168)
- Add the unregister user route (#195) (b4bb1636, closes #179)
- APNS Router (#201) (ce51957f, closes #164)
- New channel endpoint (#189) (6cc9a7dc)
- Update token endpoint (#188) (bb395fb2, closes #177)
- Sentry integration for autoendpoint (#196) (674d7d2c, closes #155)
- Delete message endpoint (#186) (6a7fa492, closes #175)
- User registration (#185) (6df3e36b, closes #176)
- Route notifications to FCM (Android) (#171) (d9a0d9d7, closes #162)
- Route notifications to autopush connection servers (#167) (e73dff17, closes #161)
- Return detailed autoendpoint errors (#170) (91d483ab, closes #159)
- Record the encoding in a metric if there is an encrypted payload (#166) (8451d3f9)
- Validate autoendpoint JWT tokens (#154) (04fee7f9, closes #103)
- Validate user subscription data in autoendpoint (#160) (8efa42c8, closes #156)
- Basic autoendpoint extractors (#151) (b08fdbdd)
- enforce VAPID
aud
(#225) (e3963262) - Fix debug info setting being ignored (#219) (35a9d4f6)
- Check the max data size against the final message payload (#212) (4e07ff07, closes #203)
- Drop 0 TTL WebPush notifications if they aren't delivered the first time (#210) (a28cb295)
- Fix having extra slashes in the endpoint URL (#206) (f943659e)
- Drop unknown FCM users (#197) (068f54dd, closes #173)
- Strip padding and double quotes from encryption and crypto-key headers (#200) (e20fc6af, closes #192)
- Copy and upgrade parts of DynamoStorage into autoendpoint (#174) (120a46b7, closes #172)
- Use errnos from validation errors (#184) (147aed84)
- Add a fernet_key.py script for generating Fernet keys (#218) (aa0e9d96, closes #217)
- Add a sample config for autopush and fix some settings (#216) (5badbfbe)
- Add a sample config for autoendpoint and normalize router settings (#214) (3b30d694)
- release 1.57.0 (fc46f768)
- Re-enable cargo-audit in CI (#221) (e8179a85)
- Update Docker rust to 1.45 (#193) (9dd589ce)
Includes autoendpoint
- Fix debug info setting being ignored (#219) (35a9d4f6)
- Check the max data size against the final message payload (#212) (4e07ff07, closes #203)
- Drop 0 TTL WebPush notifications if they aren't delivered the first time (#210) (a28cb295)
- Fix having extra slashes in the endpoint URL (#206) (f943659e)
- Drop unknown FCM users (#197) (068f54dd, closes #173)
- Strip padding and double quotes from encryption and crypto-key headers (#200) (e20fc6af, closes #192)
- Copy and upgrade parts of DynamoStorage into autoendpoint (#174) (120a46b7, closes #172)
- Use errnos from validation errors (#184) (147aed84)
- Add a fernet_key.py script for generating Fernet keys (#218) (aa0e9d96, closes #217)
- Add a sample config for autopush and fix some settings (#216) (5badbfbe)
- Add a sample config for autoendpoint and normalize router settings (#214) (3b30d694)
- Include minimal debug info in release builds (#215) (fd659e3e, closes #77)
- Support "gcm" as an alias to "fcm" (#211) (fd0d63d2, closes #204)
- Add the log-check route and remove unused ApiError variants/impls (#209) (1b0b18b3, closes #208)
- Amazon Device Messaging router (#207) (c587446a, closes #165)
- Use autoendpoint-rs in integration tests (#205) (31d2d19c, closes #168)
- Add the unregister user route (#195) (b4bb1636, closes #179)
- APNS Router (#201) (ce51957f, closes #164)
- New channel endpoint (#189) (6cc9a7dc)
- Update token endpoint (#188) (bb395fb2, closes #177)
- Sentry integration for autoendpoint (#196) (674d7d2c, closes #155)
- Delete message endpoint (#186) (6a7fa492, closes #175)
- User registration (#185) (6df3e36b, closes #176)
- Route notifications to FCM (Android) (#171) (d9a0d9d7, closes #162)
- Route notifications to autopush connection servers (#167) (e73dff17, closes #161)
- Return detailed autoendpoint errors (#170) (91d483ab, closes #159)
- Record the encoding in a metric if there is an encrypted payload (#166) (8451d3f9)
- Validate autoendpoint JWT tokens (#154) (04fee7f9, closes #103)
- Validate user subscription data in autoendpoint (#160) (8efa42c8, closes #156)
- Basic autoendpoint extractors (#151) (b08fdbdd)
- add a badge for the matrix channel (12e3aa07)
- update deps (82cc33ee, closes #131)
- add pr template (9a083f42)
- force cargo install to use cargo.lock (2bdcd004)
- report Megaphone errors to Sentry (0b6eed61)
- simplify srv usage (1086de7b)
- split connection node from common for later endpoint (e523d739, closes #99)
- force update smallvec 0.6 & crossbeam-epoch (memoffset) (abbd6257, closes #110)
- adapt to new woothee/tungstenite (906cc2c5, closes #110)
- update deps minus hyper 0.12 (eaaccc09)
- update dependencies (b4e159d4)
- capture additional errors that shouldn't be reported to Sentry (3f5f24f6, closes #87)
- return correct not found for disconnected client and fix tests (5d6d29df, closes #89)
- some cleanup after cargo fixes (6c118212)
- cargo fix --edition-idioms (909965f3)
- cargo fix --edition (00592dd6)
- update dependencies (9244c7fd, closes #91)
- cargo fmt (1.31.0) (801b1e13)
- update Cargo.lock to bump requests to >= 2.20.0 (5e837376, closes #84)
- quick workaround for rusoto's hyper upgrade (06eff39b)
- upgrade to latest rust (4230d0cf)
- upgrade test_integrations deps (93a5df21)
- upgrade dependencies minus hyper and woothee (790ebdbb)
- ignore invalid state transitions (464e5f93)
- don't include ports for schemes they aren't needed for (4698f06f)
- use latest sentry (79b0fedb)
- upgrade sentry to 0.8.0 and log out errors (3ec1d3c8, closes #5)
- return broadcast errors for invalid broadcast id's (ee7cb913, closes #59)
- notify other nodes if user has reconnected for missed messages (10152fcb, closes #58)
- rustfmt update (583d07a7)
- don't render topic/timestamp to the ua (8aa47af4)
- support webpush API pings (2366efe4, closes #55)
- log out disconnect reason with session statistics (1109aa2f)
- include CIRCLE_TAG in the cache key (d85cee70)
- limit valid message tables to the last 3 (69adfb4e)
- log out failed conversion items and use histogram for timers (05a71d9b)
- emit metrics for any failed notif conversions (4a50700f, closes #33)
- log the nack code in metrics (b795566d, closes #34)
- add dockerflow requirements (13c0fffc, closes #29)
- update dependencies (f7ded753, closes #25)
- disable default app user for now (2b7d1a9e)
- fix hostname lookup not including a port (b6f57cb8)
- resolve intermittent monthly integration test fails (3ee6614c)
- detailed resolver errors (6bb28548)
- Dockerfile/ci fixes (b4f3f912)
- transfer python integration tests and docker/circlci building (60deca51, closes #1)
- initial transfer of Rust autopush code (2e4818db)
- update documentation (1d244864)