{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":388506119,"defaultBranch":"main","name":"notifier","ownerLogin":"croque-scp","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-07-22T15:14:10.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/82894914?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715537537.0","currentOid":""},"activityList":{"items":[{"before":"b1001b52031baf2e29174f9c2affe8ee5e3cea9a","after":"3ad07ae50475f6605e612642684aae4e0a3de17d","ref":"refs/heads/rename-configs","pushedAt":"2024-07-19T06:58:14.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Create title change function and edit lock helper","shortMessageHtmlLink":"Create title change function and edit lock helper"}},{"before":"940047c7523643f2145f4a01c2ed73e2758ee3e9","after":"db90f03a025287677a3f2b48977f432b2227df5d","ref":"refs/heads/main","pushedAt":"2024-06-20T13:38:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Discard runs that didn't start on the hour\n\nI started a run between hours a few weeks back to let a database\nmigration finish without interrupting an actual run. This made the graph\nillegible by decreasing the smallest duration between two individual\nruns, making chartjs unable to automatically determine the best width\nfor each column (it made them way too thin). Resolved by discarding any\nruns that start more than 3 minutes after the start of each hour.","shortMessageHtmlLink":"Discard runs that didn't start on the hour"}},{"before":"2660bbe0c1f75c409a6e2ba876430cff61614218","after":"940047c7523643f2145f4a01c2ed73e2758ee3e9","ref":"refs/heads/main","pushedAt":"2024-06-17T13:06:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Stack data in notification count graph","shortMessageHtmlLink":"Stack data in notification count graph"}},{"before":"b139c72bbfad6fe0cbe60625e9988ef59152c395","after":"2660bbe0c1f75c409a6e2ba876430cff61614218","ref":"refs/heads/main","pushedAt":"2024-06-07T07:52:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Stack data in notification count graph","shortMessageHtmlLink":"Stack data in notification count graph"}},{"before":"d08a6b198fe641cf0de57be008c8393bca1b6adf","after":"b139c72bbfad6fe0cbe60625e9988ef59152c395","ref":"refs/heads/main","pushedAt":"2024-06-06T13:04:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Fix recent successful runs count","shortMessageHtmlLink":"Fix recent successful runs count"}},{"before":"1ea018320d1a8453005e8bb15e3ccb8c029fc138","after":"d08a6b198fe641cf0de57be008c8393bca1b6adf","ref":"refs/heads/main","pushedAt":"2024-06-06T10:09:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Fix recent successful runs count","shortMessageHtmlLink":"Fix recent successful runs count"}},{"before":"de4e1488dc3f7e2b1f0505d717caf7ce4d82684e","after":"1ea018320d1a8453005e8bb15e3ccb8c029fc138","ref":"refs/heads/main","pushedAt":"2024-06-05T10:59:46.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Mark the current run as successful","shortMessageHtmlLink":"Mark the current run as successful"}},{"before":"6e9131dfe5ae60162fd2aa9d711534b688dc0e7a","after":"de4e1488dc3f7e2b1f0505d717caf7ce4d82684e","ref":"refs/heads/main","pushedAt":"2024-05-23T14:58:13.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Use interwiki's resize script","shortMessageHtmlLink":"Use interwiki's resize script"}},{"before":"be7d04a6a6ca0d34099281925236c725929cb32e","after":"6e9131dfe5ae60162fd2aa9d711534b688dc0e7a","ref":"refs/heads/main","pushedAt":"2024-05-23T14:57:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Use interwiki's resize script","shortMessageHtmlLink":"Use interwiki's resize script"}},{"before":"79aa8fb03dada4a14725b70f3bbf651fd07e9503","after":"be7d04a6a6ca0d34099281925236c725929cb32e","ref":"refs/heads/main","pushedAt":"2024-05-21T13:10:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Accept manual height setting for resizer\n\nThis resize script can now be called from other applications in a more\ngeneric way","shortMessageHtmlLink":"Accept manual height setting for resizer"}},{"before":"013e120085d67b7309495e1e20fd5e80305ec721","after":"79aa8fb03dada4a14725b70f3bbf651fd07e9503","ref":"refs/heads/main","pushedAt":"2024-05-21T12:44:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Redirect pages root to repo","shortMessageHtmlLink":"Redirect pages root to repo"}},{"before":null,"after":"728d4ea2e285b96ec38e1479a1b819ef8562e79a","ref":"refs/heads/confirmation","pushedAt":"2024-05-12T18:12:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Make digester produce normal and confirmation messages","shortMessageHtmlLink":"Make digester produce normal and confirmation messages"}},{"before":"e28aa93eeeca562f662d85b0bcf6b3ba7ce1367d","after":"013e120085d67b7309495e1e20fd5e80305ec721","ref":"refs/heads/main","pushedAt":"2024-05-10T01:42:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Rename vague API class for specificity","shortMessageHtmlLink":"Rename vague API class for specificity"}},{"before":"b99bec02880f2a774995f0d02ea8743e71f43ed6","after":"e28aa93eeeca562f662d85b0bcf6b3ba7ce1367d","ref":"refs/heads/main","pushedAt":"2024-05-09T21:29:40.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Merge pull request #105 from croque-scp/always-log-end-time\n\nAlways log end time","shortMessageHtmlLink":"Merge pull request #105 from croque-scp/always-log-end-time"}},{"before":"54f2ed7689e69e848c4835871b1543c02c37da83","after":null,"ref":"refs/heads/always-log-end-time","pushedAt":"2024-05-09T21:29:40.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"}},{"before":"498a60c1d5e45e0406a07322d7e87a22a5caf45a","after":"54f2ed7689e69e848c4835871b1543c02c37da83","ref":"refs/heads/always-log-end-time","pushedAt":"2024-05-09T20:21:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Add test case for early recorded finish","shortMessageHtmlLink":"Add test case for early recorded finish"}},{"before":"87d2684d1b699c1ae74bfba501d6f45794c8fc6e","after":"498a60c1d5e45e0406a07322d7e87a22a5caf45a","ref":"refs/heads/always-log-end-time","pushedAt":"2024-05-09T20:09:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Move log dump catch to context manager","shortMessageHtmlLink":"Move log dump catch to context manager"}},{"before":"865ac448dddcb702623289cb848e25a6a19dfb50","after":"87d2684d1b699c1ae74bfba501d6f45794c8fc6e","ref":"refs/heads/always-log-end-time","pushedAt":"2024-05-09T20:05:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Move log dump catch to context manager","shortMessageHtmlLink":"Move log dump catch to context manager"}},{"before":null,"after":"865ac448dddcb702623289cb848e25a6a19dfb50","ref":"refs/heads/always-log-end-time","pushedAt":"2024-05-09T19:03:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Record final timestamp even when run fails","shortMessageHtmlLink":"Record final timestamp even when run fails"}},{"before":"8397be518ef5e82200a8f9141b8ea2189dd2e167","after":"b99bec02880f2a774995f0d02ea8743e71f43ed6","ref":"refs/heads/main","pushedAt":"2024-05-09T17:38:51.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Protect ID lookup from redirects","shortMessageHtmlLink":"Protect ID lookup from redirects"}},{"before":null,"after":"b1001b52031baf2e29174f9c2affe8ee5e3cea9a","ref":"refs/heads/rename-configs","pushedAt":"2024-05-08T15:09:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Create title change function and edit lock helper","shortMessageHtmlLink":"Create title change function and edit lock helper"}},{"before":"a4d48f5b0e5ad28ecb71c9366d5f758e905f9335","after":"8397be518ef5e82200a8f9141b8ea2189dd2e167","ref":"refs/heads/main","pushedAt":"2024-05-04T19:48:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Make the status frontend be a link to the stats page","shortMessageHtmlLink":"Make the status frontend be a link to the stats page"}},{"before":"7fe588561b94727fc47fe97aa5b1cde7e0efad5b","after":"a4d48f5b0e5ad28ecb71c9366d5f758e905f9335","ref":"refs/heads/main","pushedAt":"2024-05-04T14:34:16.000Z","pushType":"pr_merge","commitsCount":7,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Merge pull request #100 from croque-scp/reopt-post-download\n\nTrack last seen post timestamp per wiki","shortMessageHtmlLink":"Merge pull request #100 from croque-scp/reopt-post-download"}},{"before":"b34798064f9b46b9d143b857452e7eee189a06b8","after":null,"ref":"refs/heads/reopt-post-download","pushedAt":"2024-05-04T14:34:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"}},{"before":"2a85c2ce007d149e9974ab14d1e694a080ae6666","after":"7fe588561b94727fc47fe97aa5b1cde7e0efad5b","ref":"refs/heads/main","pushedAt":"2024-05-04T13:13:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Delete posts that share a timestamp with a user\n\nWhen a user is notified about a post, their last notified timestamp is\nset to the timestamp of the most recent post they were notified about.\n\nBefore this commit, a post was only deleted when a user's timestamp is\ngreater than its. Because a user's timestamp will necessarily be equal\nto that of at least one post in the database, this causes one post per\nuser to be erroneously kept when it should be deleted.\n\nDeleting posts where a user shares its timestamp fixes this, and is safe\nto do because we can guarantee the user has already been notified about\nit. The only time that might not be true is if two posts are made during\nthe same second (already unlikely) _and_ Wikidot refreshes the RSS feed\nbetween the two, including one but not the other. I consider this\nimpossible.\n\nThis is an O(n) problem, because there can be at most one post per user\nthat falls afoul of this, but hey whatever","shortMessageHtmlLink":"Delete posts that share a timestamp with a user"}},{"before":"60fc0aebbbafa62797c29ea725a44dbdec0d4315","after":"b34798064f9b46b9d143b857452e7eee189a06b8","ref":"refs/heads/reopt-post-download","pushedAt":"2024-05-04T13:12:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Use wiki check timestamp as annual delete reference\n\nIt can never be reliable to use the notifiable_posts table for any sort\nof aggregate data, because any and all of it is liable to be deleted.\nTherefore, using the latest post's timestamp as the 'now' check is\nactually deleting posts that are a year older than the latest queued\nnotification in my database - which could be anything.\n\nConversely, the max of the post check timestamps across all registered\nwikis is simply the timestamp of the latest post on Wikidot that the\nservice has ever seen, which is updated every hour and is much more\nreliable.","shortMessageHtmlLink":"Use wiki check timestamp as annual delete reference"}},{"before":"5b675ff98deacc0bed720f2f0ca7e230af355ac2","after":"60fc0aebbbafa62797c29ea725a44dbdec0d4315","ref":"refs/heads/reopt-post-download","pushedAt":"2024-05-04T01:15:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Fix output value from timestamp query","shortMessageHtmlLink":"Fix output value from timestamp query"}},{"before":"45449ade160caff96206758f0722211fda1c516b","after":"5b675ff98deacc0bed720f2f0ca7e230af355ac2","ref":"refs/heads/reopt-post-download","pushedAt":"2024-05-04T00:46:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Store highest post timestamp per wiki","shortMessageHtmlLink":"Store highest post timestamp per wiki"}},{"before":"95a390ff5d0caf6bb47cee604c9a72cd54b8c07a","after":"45449ade160caff96206758f0722211fda1c516b","ref":"refs/heads/reopt-post-download","pushedAt":"2024-05-04T00:21:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Init latest post timestamp with wiki addition","shortMessageHtmlLink":"Init latest post timestamp with wiki addition"}},{"before":null,"after":"95a390ff5d0caf6bb47cee604c9a72cd54b8c07a","ref":"refs/heads/reopt-post-download","pushedAt":"2024-05-03T23:26:47.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rossjrw","name":"Ross Williams","path":"/rossjrw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29130152?s=80&v=4"},"commit":{"message":"Add migration to track post timestamp with wiki","shortMessageHtmlLink":"Add migration to track post timestamp with wiki"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEg6Gr0gA","startCursor":null,"endCursor":null}},"title":"Activity ยท croque-scp/notifier"}