{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":700520323,"defaultBranch":"main","name":"livecomponents","ownerLogin":"om-proptech","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-10-04T18:40:39.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/91255425?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1708946487.0","currentOid":""},"activityList":{"items":[{"before":"b9373069501410561ac4bd2198b238d6ade57400","after":"ecf5fcf5c91ee09f1ffea6ff86a3f2ddf9f43a95","ref":"refs/heads/main","pushedAt":"2024-02-28T17:45:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Add a \"registration\" app to show how to use livecomponents with Django forms","shortMessageHtmlLink":"Add a \"registration\" app to show how to use livecomponents with Djang…"}},{"before":"ff6c3375f63a86bfa4ac5641ebc6dc113e050d90","after":"b9373069501410561ac4bd2198b238d6ade57400","ref":"refs/heads/main","pushedAt":"2024-02-26T11:21:25.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Bump version: 1.11.0 → 1.11.1","shortMessageHtmlLink":"Bump version: 1.11.0 → 1.11.1"}},{"before":"faa66b9586a83c48992e70116be04138a5da927c","after":"ff6c3375f63a86bfa4ac5641ebc6dc113e050d90","ref":"refs/heads/main","pushedAt":"2024-02-08T10:02:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Bump version: 1.10.0 → 1.11.0","shortMessageHtmlLink":"Bump version: 1.10.0 → 1.11.0"}},{"before":"0c0a42c8c63c3df76ef89d7d3c0f47cd0cc9c58d","after":null,"ref":"refs/heads/keep-garbage-collected-sessions","pushedAt":"2024-02-08T10:01:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"}},{"before":"61606256fb799c6c5f33135b1ec410314c508916","after":"faa66b9586a83c48992e70116be04138a5da927c","ref":"refs/heads/main","pushedAt":"2024-02-08T10:01:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Keep sessions marked as deleted\n\nKeep sessions marked as deleted for an hour before purging them from\nthe Redis store. This change is to allow the client to recover from a\nsession deletion when the user navigates back to the page.","shortMessageHtmlLink":"Keep sessions marked as deleted"}},{"before":null,"after":"0c0a42c8c63c3df76ef89d7d3c0f47cd0cc9c58d","ref":"refs/heads/keep-garbage-collected-sessions","pushedAt":"2024-02-05T15:36:31.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Keep sessions marked as deleted\n\nKeep sessions marked as deleted for an hour before purging them from\nthe Redis store. This change is to allow the client to recover from a\nsession deletion when the user navigates back to the page.","shortMessageHtmlLink":"Keep sessions marked as deleted"}},{"before":"aae837373230b573f98759b5891fa429e83b003d","after":"61606256fb799c6c5f33135b1ec410314c508916","ref":"refs/heads/main","pushedAt":"2024-01-25T09:24:28.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Bump version: 1.9.0 → 1.10.0","shortMessageHtmlLink":"Bump version: 1.9.0 → 1.10.0"}},{"before":"f6696d5f971b66dfc73e7669db4df54fae089318","after":"aae837373230b573f98759b5891fa429e83b003d","ref":"refs/heads/main","pushedAt":"2023-12-22T13:16:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Bump version: 1.8.0 → 1.9.0","shortMessageHtmlLink":"Bump version: 1.8.0 → 1.9.0"}},{"before":"99b8f49b5a2e687eb9a262d1f48f0479c7edcdba","after":"f6696d5f971b66dfc73e7669db4df54fae089318","ref":"refs/heads/main","pushedAt":"2023-12-21T15:47:32.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Add ComponentId\n\nComponentId which is a str subclass that can be used to create\nchild component IDs from a parent component ID using\nthe \"|\" separator.","shortMessageHtmlLink":"Add ComponentId"}},{"before":"063025e177fa7bf8c08ee3725b14c0b1ded17eee","after":"99b8f49b5a2e687eb9a262d1f48f0479c7edcdba","ref":"refs/heads/main","pushedAt":"2023-12-19T12:14:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Improve support for stateless live components\n\nStop storing mock state objects in Redis","shortMessageHtmlLink":"Improve support for stateless live components"}},{"before":"42475eaef7d2384b11310562fbfe752da46a6875","after":"063025e177fa7bf8c08ee3725b14c0b1ded17eee","ref":"refs/heads/main","pushedAt":"2023-12-18T17:28:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Fix a bug in the CSVViewer example","shortMessageHtmlLink":"Fix a bug in the CSVViewer example"}},{"before":"77542578f55337717311eeadb2261c6fb0baec4b","after":"42475eaef7d2384b11310562fbfe752da46a6875","ref":"refs/heads/main","pushedAt":"2023-12-18T16:08:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Bump version: 1.7.0 → 1.8.0","shortMessageHtmlLink":"Bump version: 1.7.0 → 1.8.0"}},{"before":"ff84401685e9dc7bafcf95632f618105878a29ef","after":null,"ref":"refs/heads/shared-store","pushedAt":"2023-12-18T16:05:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"}},{"before":"78fe4e4a3767915ccf4fd6a3bb7ee390c2840e4b","after":"77542578f55337717311eeadb2261c6fb0baec4b","ref":"refs/heads/main","pushedAt":"2023-12-18T16:05:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Make accessing other components from get_extra_context_data() easier\n\nBACKWARD INCOMPATIBLE CHANGES\n\n- Modify get_extra_context_data() to accept an instance of\n ExtraContextRequest(). This instance includes the component\n state, component_kwargs, current request, component state address,\n and the state manager. By including the state manager and address,\n it becomes possible to access stores for other components.\n\n- Remove the passing of component kwargs to init_state() and\n update_state(). These kwargs are redundant since both\n InitStateContext and UpdateStateContext already have them.\n\n- Update the example project to reflect these changes.\n\n- Add StatelessLiveComponent as a base class for components that\n do not need to store state.","shortMessageHtmlLink":"Make accessing other components from get_extra_context_data() easier"}},{"before":"0415263afcafc42f0aa6300670568c7ad422e856","after":"ff84401685e9dc7bafcf95632f618105878a29ef","ref":"refs/heads/shared-store","pushedAt":"2023-12-18T14:19:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Make accessing other components from get_extra_context_data() easier\n\nBACKWARD INCOMPATIBLE CHANGES\n\n- Modify get_extra_context_data() to accept an instance of\n ExtraContextRequest(). This instance includes the component\n state, component_kwargs, current request, component state address,\n and the state manager. By including the state manager and address,\n it becomes possible to access stores for other components.\n\n- Remove the passing of component kwargs to init_state() and\n update_state(). These kwargs are redundant since both\n InitStateContext and UpdateStateContext already have them.\n\n- Update the example project to reflect these changes.\n\n- Add StatelessLiveComponent as a base class for components that\n do not need to store state.","shortMessageHtmlLink":"Make accessing other components from get_extra_context_data() easier"}},{"before":null,"after":"0415263afcafc42f0aa6300670568c7ad422e856","ref":"refs/heads/shared-store","pushedAt":"2023-12-18T14:16:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Make accessing other components from get_extra_context_data() easier\n\nBACKWARD INCOMPATIBLE CHANGES\n\n- Modify get_extra_context_data() to accept an instance of\n ExtraContextRequest(). This instance includes the component\n state, component_kwargs, current request, component state address,\n and the state manager. By including the state manager and address,\n it becomes possible to access stores for other components.\n\n- Remove the passing of component kwargs to init_state() and\n update_state(). These kwargs are redundant since both\n InitStateContext and UpdateStateContext already have them.\n\n- Update the example project to reflect these changes.","shortMessageHtmlLink":"Make accessing other components from get_extra_context_data() easier"}},{"before":"de81cc6d96978cd6d9cc75710cacc1135df9fe80","after":"78fe4e4a3767915ccf4fd6a3bb7ee390c2840e4b","ref":"refs/heads/main","pushedAt":"2023-12-18T13:27:45.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Minor fix: rename state_store to state_manager","shortMessageHtmlLink":"Minor fix: rename state_store to state_manager"}},{"before":"8afdb8c90cb192054bb93159fa4344bc6ea856fa","after":"de81cc6d96978cd6d9cc75710cacc1135df9fe80","ref":"refs/heads/main","pushedAt":"2023-12-13T13:45:33.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Bump version: 1.6.0 → 1.7.0","shortMessageHtmlLink":"Bump version: 1.6.0 → 1.7.0"}},{"before":"2f175b7e007246934c58ae348ede58ee07eea22a","after":null,"ref":"refs/heads/extra-context-from-component-kwargs","pushedAt":"2023-12-13T13:39:13.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"}},{"before":"978d0bb76719e5db13cc2d8cdf9ddd56aa3557d6","after":"8afdb8c90cb192054bb93159fa4344bc6ea856fa","ref":"refs/heads/main","pushedAt":"2023-12-13T13:39:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Pass component_kwargs when calling get_extra_context_data()\n\nPrevious version only allows populating the context from the state that\nneeds to be persisted in the store.\n\nHowever, sometimes it's helpful to populate extra context from the data\npassed by parent components without populating Redis with them.\n\nThese changes are backward incompatible and require changing the\nsignature of all get_extra_context_data() methods from:\n\n def get_extra_context_data(self, state: State) -> dict:\n\nto:\n\n def get_extra_context_data(self, state: State, **component_kwargs) -> dict:","shortMessageHtmlLink":"Pass component_kwargs when calling get_extra_context_data()"}},{"before":"596c02b5b5da06e026b786338147432853da120b","after":"2f175b7e007246934c58ae348ede58ee07eea22a","ref":"refs/heads/extra-context-from-component-kwargs","pushedAt":"2023-12-12T16:25:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Pass component_kwargs when calling get_extra_context_data()\n\nPrevious version only allows populating the context from the state that\nneeds to be persisted in the store.\n\nHowever, sometimes it's helpful to populate extra context from the data\npassed by parent components without populating Redis with them.\n\nThese changes are backward incompatible and require changing the\nsignature of all get_extra_context_data() methods from:\n\n def get_extra_context_data(self, state: State) -> dict:\n\nto:\n\n def get_extra_context_data(self, state: State, **component_kwargs) -> dict:","shortMessageHtmlLink":"Pass component_kwargs when calling get_extra_context_data()"}},{"before":null,"after":"596c02b5b5da06e026b786338147432853da120b","ref":"refs/heads/extra-context-from-component-kwargs","pushedAt":"2023-12-12T16:25:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Pass component_kwargs when calling get_extra_context_data()\n\nPrevious version only allows populating the context from the state that\nneeds to be persisted in the store.\n\nHowever, sometimes it's helpful to populate extra context from the data\npassed by parent components without populating Redis with them.\n\nThese changes are backward incompatible and require changing the\nsignature of all get_extra_context_data() methods from:\n\n def get_extra_context_data(self, state: State) -> dict:\n\nto:\n\n def get_extra_context_data(self, state: State, **component_kwargs) -> dict:","shortMessageHtmlLink":"Pass component_kwargs when calling get_extra_context_data()"}},{"before":"ee4efef07d24d4fbb09af13d12af3c02d69bae0c","after":"978d0bb76719e5db13cc2d8cdf9ddd56aa3557d6","ref":"refs/heads/main","pushedAt":"2023-12-05T16:09:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Bump version: 1.5.0 → 1.6.0","shortMessageHtmlLink":"Bump version: 1.5.0 → 1.6.0"}},{"before":"6d9ce9d97e7af177c86fa858a47d283cde4f2961","after":"ee4efef07d24d4fbb09af13d12af3c02d69bae0c","ref":"refs/heads/main","pushedAt":"2023-12-05T15:49:09.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Pass state_addr and component_kwargs to state context objects","shortMessageHtmlLink":"Pass state_addr and component_kwargs to state context objects"}},{"before":"cbce8c19403748cac2a48eeadccb94799909db8c","after":"6d9ce9d97e7af177c86fa858a47d283cde4f2961","ref":"refs/heads/main","pushedAt":"2023-12-05T14:26:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Make the error message on not found HTML template more descriptive","shortMessageHtmlLink":"Make the error message on not found HTML template more descriptive"}},{"before":"8ee0e944ff1164dfc81f529eb7cee94f587dfa44","after":"cbce8c19403748cac2a48eeadccb94799909db8c","ref":"refs/heads/main","pushedAt":"2023-12-05T14:06:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Flatten example project\n\nMove sample apps from example/project/ to example/","shortMessageHtmlLink":"Flatten example project"}},{"before":"5409ee739fff9b0604d4076abf851fe76129d3cb","after":"8ee0e944ff1164dfc81f529eb7cee94f587dfa44","ref":"refs/heads/main","pushedAt":"2023-12-05T10:49:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Bump version: 1.4.2 → 1.5.0","shortMessageHtmlLink":"Bump version: 1.4.2 → 1.5.0"}},{"before":"54c8c36c46b0392a598523e67861f3a8e5114503","after":null,"ref":"refs/heads/nested-component-names","pushedAt":"2023-12-05T10:04:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"}},{"before":"d5ce37b422896b76f53d8a4b7a6ebd15ac2a23d0","after":"5409ee739fff9b0604d4076abf851fe76129d3cb","ref":"refs/heads/main","pushedAt":"2023-12-05T10:04:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Make it possible to use nested components\n\nUpdate hierarch separator from \"/\" to \"|\" and type separator from \".\" to \":\".\nWith this change, components with \"nested/types\" (e.g., \"myapp/mycomponent\")\ncan be used with livecomponents and form the full path that can be parsed.\n\nUpdate \"coffee\" example to use \"coffee/\" component names.","shortMessageHtmlLink":"Make it possible to use nested components"}},{"before":"bf8f4803501ffceb0a26095ef6e3a984c5b1d1ad","after":"54c8c36c46b0392a598523e67861f3a8e5114503","ref":"refs/heads/nested-component-names","pushedAt":"2023-12-04T19:39:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"imankulov","name":"Roman Imankulov","path":"/imankulov","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/75075?s=80&v=4"},"commit":{"message":"Make it possible to use nested components\n\nUpdate hierarch separator from \"/\" to \"|\" and type separator from \".\" to \":\".\nWith this change, components with \"nested/types\" (e.g., \"myapp/mycomponent\")\ncan be used with livecomponents and form the full path that can be parsed.\n\nUpdate \"coffee\" example to use \"coffee/\" component names.","shortMessageHtmlLink":"Make it possible to use nested components"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEB-rtpAA","startCursor":null,"endCursor":null}},"title":"Activity · om-proptech/livecomponents"}