{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":529447377,"defaultBranch":"trunk","name":"potcake","ownerLogin":"kyleingraham","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-08-27T01:12:02.000Z","ownerAvatar":"https://github.com/avatars/u/25495787?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1698979414.0","currentOid":""},"activityList":{"items":[{"before":"ef9b18bb96559c17e680a41e2ba04677bc2e9f1f","after":"db88be655c05b74e9b5bca3ff8ae474b525c2a1a","ref":"refs/heads/trunk","pushedAt":"2023-11-02T23:44:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Web Application Middleware\n\n\r\n Add new middleware relevant for web applications intended to be\r\n rendered in a web browser:\r\n \r\n useIsSecureRequestMiddleware - Record on request whether it\r\n was delivered via a secure channel.\r\n useHstsMiddleware - Inform browsers that your app should only\r\n be visited via HTTPS.\r\n useStaticFilesMiddleware - Serves static files.\r\n useRoutingMiddleware - Adds the ability to route a request to\r\n a handler. Must be used with and called before\r\n useHandlerMiddleware.\r\n useBrowserHardeningMiddleware - Harden the browser environment\r\n your web app is rendered in.\r\n useHandlerMiddleware - Calls a selected handler after routing.\r\n Must be used with and called after useRoutingMiddleware.\r\n \r\n Middleware are specified in WebAppSettings.middleware.\r\n \r\n Refactor static file handling into a middleware. Some web\r\n application middleware are irrelevant for static files and with the\r\n previous handler implementation there was no ability to opt out of\r\n them. With a static files middleware we can short-circuit early and\r\n keep static file serving lean as we add more middleware.\r\n \r\n Add protection against trusting client-provided security headers\r\n from misconfigured proxies.\r\n \r\n Add conversion of exceptions to requests in middleware system. This\r\n enables surfacing messages on error conditions from deep within\r\n middleware.\r\n \r\n Add core package for exceptions and other centrally-required code.","shortMessageHtmlLink":"Add Web Application Middleware"}},{"before":"5a83db790034c4336c86192150ee252ca799940d","after":"d6d576212a2f4ca42a2001d662adc6d6e1f277e0","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-11-02T23:34:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Cleanup Documentation and Examples","shortMessageHtmlLink":"Cleanup Documentation and Examples"}},{"before":"f4727c12d85280c32f539f4ee1380e38d4b9420e","after":"5a83db790034c4336c86192150ee252ca799940d","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-10-04T01:18:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Correct Typo and Remove Unneeded Debug Output","shortMessageHtmlLink":"Correct Typo and Remove Unneeded Debug Output"}},{"before":"8784495799f00e1cf60afc6d26f284897754654f","after":"f4727c12d85280c32f539f4ee1380e38d4b9420e","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-09-18T02:50:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Improve Middleware System Security\n\n Add protection against trusting client-provided security headers\n from misconfigured proxies.\n\n Add conversion of exceptions to requests in middleware system. This\n enables surfacing messages on error conditions from deep within\n middleware.\n\n Add `core` package for exceptions and other centrally-required code.","shortMessageHtmlLink":"Improve Middleware System Security"}},{"before":"686ccd9fcf0fb70dfcafc39217ddf1665032805c","after":"8784495799f00e1cf60afc6d26f284897754654f","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-08-27T14:33:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add IPv6 Localhost","shortMessageHtmlLink":"Add IPv6 Localhost"}},{"before":"d897277ab94f8efcb661d9335833a852c4867483","after":"686ccd9fcf0fb70dfcafc39217ddf1665032805c","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-08-27T13:07:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Update Static File README","shortMessageHtmlLink":"Update Static File README"}},{"before":"449ee1e3ec61b284ac77b4d7c81fb7a940895b08","after":"d897277ab94f8efcb661d9335833a852c4867483","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-08-27T12:57:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Remove Unused Function and Ambiguous Naming","shortMessageHtmlLink":"Remove Unused Function and Ambiguous Naming"}},{"before":"769a50a23e99d424a373de7ecfd97a6f5814f704","after":"449ee1e3ec61b284ac77b4d7c81fb7a940895b08","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-08-27T12:46:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Bug Fixes and Performance Improvements\n\n Restore public access on Router.parsePath so that it can be\n\taccessed from WebApp.\n\n\tUpdate Router's handler whenever routes or middleware are\n\tmodified. This removes the need to check for handler updates\n\ton every request and ensures that all initialization occurs\n\tbefore threading in vibe.d setup.\n\n\tIncrease the time between tests to allow for slower computers.","shortMessageHtmlLink":"Bug Fixes and Performance Improvements"}},{"before":"13f3f69fb58b68129b568c24e955909e74f2ce65","after":"769a50a23e99d424a373de7ecfd97a6f5814f704","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-08-26T14:58:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Remove Unneeded Comment","shortMessageHtmlLink":"Remove Unneeded Comment"}},{"before":"f72096f21fb137b7de7bcd273302aeff66d657b0","after":"13f3f69fb58b68129b568c24e955909e74f2ce65","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-08-26T14:56:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Restore private on Router parsePath","shortMessageHtmlLink":"Restore private on Router parsePath"}},{"before":null,"after":"f72096f21fb137b7de7bcd273302aeff66d657b0","ref":"refs/heads/add-csrf-protection","pushedAt":"2023-08-26T14:54:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Web Application Middleware\n\n Add new middleware relevant for web applications intended to be\n rendered in a web browser:\n - `useIsSecureRequestMiddleware` - Record on request whether it\n was delivered via a secure channel.\n - `useHstsMiddleware` - Inform browsers that your app should only\n be visited via HTTPS.\n - `useStaticFilesMiddleware` - Serves static files.\n - `useRoutingMiddleware` - Adds the ability to route a request to\n a handler. Must be used with and called before\n `useHandlerMiddleware`.\n - `useBrowserHardeningMiddleware` - Harden the browser environment\n your web app is rendered in.\n - `useHandlerMiddleware` - Calls a selected handler after routing.\n Must be used with and called after `useRoutingMiddleware`.\n\n Middleware are specified in `WebAppSettings.middleware`.\n\n Refactor static file handling into a middleware. Some web\n application middleware are irrelevant for static files and with the\n previous handler implementation there was no ability to opt out of\n them. With a static files middleware we can short-circuit early and\n keep static file serving lean as we add more middleware.","shortMessageHtmlLink":"Add Web Application Middleware"}},{"before":"cca5be10d39e15f384b9e8bec667a19454277e8a","after":null,"ref":"refs/heads/rename-env-var-fetcher","pushedAt":"2023-07-30T15:11:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"}},{"before":"76e995f9accaafd75c827a91a3a662a331a2b926","after":"ef9b18bb96559c17e680a41e2ba04677bc2e9f1f","ref":"refs/heads/trunk","pushedAt":"2023-07-30T15:10:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Rename Environment Variable Fetcher\n\n \r\n Rename Potcake's environment variable fetching function to be a bit\r\n more compact.","shortMessageHtmlLink":"Rename Environment Variable Fetcher"}},{"before":null,"after":"cca5be10d39e15f384b9e8bec667a19454277e8a","ref":"refs/heads/rename-env-var-fetcher","pushedAt":"2023-07-30T15:09:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Rename Environment Variable Fetcher\n\n Rename Potcake's environment variable fetching function to be a bit\n more compact.","shortMessageHtmlLink":"Rename Environment Variable Fetcher"}},{"before":"12b45d5c09e284d2ce1edebfd123d2408a62605c","after":null,"ref":"refs/heads/add-env-var-get","pushedAt":"2023-07-30T13:22:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"}},{"before":"1b182a15fcd4d76beae3f9766517536197d9a4e9","after":"76e995f9accaafd75c827a91a3a662a331a2b926","ref":"refs/heads/trunk","pushedAt":"2023-07-30T13:16:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Environment Variable Convenience Method\n\n \r\n Add a method for fetching an environment variable and optionally\r\n converting it to a given type.\r\n\r\n Additional changes:\r\n \r\n Add additional test for isValidHandler to cover the type of handler\r\n that vibe.d generates in staticTemplate.","shortMessageHtmlLink":"Add Environment Variable Convenience Method"}},{"before":"b04dafbc8c7e6dd988b6453ed4d37cf84d1dcee1","after":"12b45d5c09e284d2ce1edebfd123d2408a62605c","ref":"refs/heads/add-env-var-get","pushedAt":"2023-07-30T01:13:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Fix Doc Typos","shortMessageHtmlLink":"Fix Doc Typos"}},{"before":"76c274e7284e7d6ef764a20ea58ba49dda2c3f9d","after":"b04dafbc8c7e6dd988b6453ed4d37cf84d1dcee1","ref":"refs/heads/add-env-var-get","pushedAt":"2023-07-30T01:06:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Additional Docs","shortMessageHtmlLink":"Add Additional Docs"}},{"before":"7f63ecfd4619772f6d34af710f3e57dd4573834e","after":"76c274e7284e7d6ef764a20ea58ba49dda2c3f9d","ref":"refs/heads/add-env-var-get","pushedAt":"2023-07-30T01:02:43.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Merge branch 'trunk' into add-env-var-get","shortMessageHtmlLink":"Merge branch 'trunk' into add-env-var-get"}},{"before":null,"after":"7f63ecfd4619772f6d34af710f3e57dd4573834e","ref":"refs/heads/add-env-var-get","pushedAt":"2023-07-30T01:01:57.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Environment Variable Convenience Method\n\n Add a method for fetching an environment variable and optionally\n converting it to a given type.\n\n Add additional test for isValidHandler to cover the type of handler\n that vibe.d generates in staticTemplate.","shortMessageHtmlLink":"Add Environment Variable Convenience Method"}},{"before":"bc6fe577d788990ed428699440ebd2b6ef73afe4","after":null,"ref":"refs/heads/app-qol-changes","pushedAt":"2023-07-27T14:07:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"}},{"before":"7a729d8c82fc54e526ddf25f5bc57738c7bfd0c9","after":"1b182a15fcd4d76beae3f9766517536197d9a4e9","ref":"refs/heads/trunk","pushedAt":"2023-07-27T13:42:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Ergonomic Control of Logging Settings\n\n Add ergonomic control of logging settings via new WebAppSettings\r\n fields. Web apps now have an environment concept that describes\r\n where the app is being run. Logging can be configured separately\r\n for each environment. Multiple loggers can also be added per\r\n environment, each with their own log levels and format.\r\n\r\n We also now ensure that fetched settings are read-only. Unprotected \r\n writes to settings does not sound like a good idea in a \r\n multi-threaded application.\r\n\r\n Correct a bug in path/handler validation error messaging.\r\n \r\n Remove half-baked templating flexibility. The flag for adding\r\n template folders caused issues with picking up template changes\r\n during compilation.\r\n\r\n Add direct access to vibe.d settings in WebAppSetting. We don't\r\n want to hide that we're running on vibe.d so why unnecessarily wrap\r\n its settings?","shortMessageHtmlLink":"Add Ergonomic Control of Logging Settings"}},{"before":"13e24376ce29c3304eaa5e47e2340db57660c0e4","after":"bc6fe577d788990ed428699440ebd2b6ef73afe4","ref":"refs/heads/app-qol-changes","pushedAt":"2023-07-27T05:08:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Remove Half-Baked Templating Flexibility\n\n Remove half-baked templating flexibility. The flag for adding\n template folders caused issues with picking up template changes\n during compilation.","shortMessageHtmlLink":"Remove Half-Baked Templating Flexibility"}},{"before":"7a41c69b0238f8dc8a954f0a20a7d862dcb9d864","after":"13e24376ce29c3304eaa5e47e2340db57660c0e4","ref":"refs/heads/app-qol-changes","pushedAt":"2023-07-27T04:54:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add README Entries for New Features","shortMessageHtmlLink":"Add README Entries for New Features"}},{"before":"57d1febcd3bbcaca7f74084a2d5ec115ab6e67dc","after":null,"ref":"refs/heads/add-web-app-package","pushedAt":"2023-07-27T04:25:13.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"}},{"before":"0beed47acaba8400c3aa1ae473c958e370487a87","after":"7a41c69b0238f8dc8a954f0a20a7d862dcb9d864","ref":"refs/heads/app-qol-changes","pushedAt":"2023-07-27T04:22:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Testing for rootRouteConfig","shortMessageHtmlLink":"Add Testing for rootRouteConfig"}},{"before":"bb6bdd69ae330d3089a38fd8d32c22a9a4eeac24","after":"0beed47acaba8400c3aa1ae473c958e370487a87","ref":"refs/heads/app-qol-changes","pushedAt":"2023-07-27T04:13:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Improve Documentation","shortMessageHtmlLink":"Improve Documentation"}},{"before":"94614b0f466064860d1927be841504b6a4c18518","after":"bb6bdd69ae330d3089a38fd8d32c22a9a4eeac24","ref":"refs/heads/app-qol-changes","pushedAt":"2023-07-27T04:00:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Tests for Logging\n\n Add tests for new logging functionality.\n\n Ensure that fetched settings are read-only. Writable settings does\n not sound like a good idea in a multi-threaded application.\n\n Correct bug in path/handler validation error messaging.","shortMessageHtmlLink":"Add Tests for Logging"}},{"before":null,"after":"94614b0f466064860d1927be841504b6a4c18518","ref":"refs/heads/app-qol-changes","pushedAt":"2023-07-25T01:57:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Ergonomic Control of Logging Settings\n\n Add ergonomic control of logging settings via new WebAppSettings\n fields. Web apps now have an environment concept that describes\n where the app is being run. Logging can be configured separately\n for each environment. Multiple loggers can also be added per\n environment, each with their own log levels and format.","shortMessageHtmlLink":"Add Ergonomic Control of Logging Settings"}},{"before":"02638c66f5976e1beb39142b100912be1e9c6338","after":"7a729d8c82fc54e526ddf25f5bc57738c7bfd0c9","ref":"refs/heads/trunk","pushedAt":"2023-07-14T01:21:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kyleingraham","name":"Kyle Ingraham","path":"/kyleingraham","primaryAvatarUrl":"https://github.com/avatars/u/25495787?s=80&v=4"},"commit":{"message":"Add Features for Easy Web App Creation\n\n Restructure Potcake for easy web app creation. Web apps can be \r\n created through two new objects. WebApp and WebAppSettings. Through \r\n them we provide the following features:\r\n - Django-style routing\r\n - Static file serving (with collection of files from multiple \r\n directories)\r\n - Django-style URL reversing\r\n - Middleware\r\n - Settings management\r\n\r\n Details:\r\n\r\n Revamp URL dispatching to provide an ergonomic API free of \r\n templates. Path parsing is now done at runtime which frees us from \r\n the struggles templates bring. Templates are great but use of them \r\n for central data structures forces user code to be templated. It \r\n also makes some API structures impossible to right. For example, \r\n with templates the user cannot store configuration as data prior to \r\n instantiating the WebApp if the configuration uses templates that \r\n need the WebApp. Also, each instantiation is a new type if the \r\n template arguments differ. This prevents storing template \r\n instantiations in a collection. We make heavy use of delegates for \r\n storing code to use an object instead of objects themselves. This is\r\n handy for storing disparate objects in a collection when they all \r\n are alike in the actions carried out using them.\r\n \r\n Add the ability to obtain a route path by supplying a pre-registered\r\n name and path arguments (reversing). The reversing function makes \r\n use of a new reference to the initialized app at runtime.\r\n \r\n Add toPath functions to path converters for converting path \r\n arguments to their string representations in paths. Return a common \r\n exception from path converters to aid signaling when a reversed path\r\n cannot be created. Use Variant instead of emplacing and cast for \r\n easier-to-use code.\r\n \r\n Rehash Router associative arrays for performance.\r\n \r\n Add static file handling via two approaches:\r\n - Single-directory approach where all files are stored in a single\r\n directory in development and production.\r\n - Collecting approach where static files are merged into one \r\n directory and served from a single routh path.\r\n\r\n Add `staticPath` method for building static paths in templates.\r\n\r\n Add WebApp.addRoutes for adding all routes at once using a \r\n collection. Make a trailing '/' optional when calling a route if the\r\n route's path was specified with a trailing '/'\r\n \r\n Streamline static file serving for the single directory case. The \r\n developer can configure serving via the settings object and all \r\n static serving for all cases is now done via serveStaticFiles.\r\n\r\n Wrap all modules in @safe.","shortMessageHtmlLink":"Add Features for Easy Web App Creation"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADplAwugA","startCursor":null,"endCursor":null}},"title":"Activity ยท kyleingraham/potcake"}