{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":155063469,"defaultBranch":"main","name":"jadaptive-app-builder","ownerLogin":"ludup","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-10-28T11:25:00.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6527203?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1720547575.0","currentOid":""},"activityList":{"items":[{"before":"4d7a8219e09430254f5981194d5630894c7d018a","after":"0bae0ef516bae128473bbcb0a3af9a531756f259","ref":"refs/heads/develop","pushedAt":"2024-07-15T23:01:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Make sure everything has a default search column","shortMessageHtmlLink":"Make sure everything has a default search column"}},{"before":"e1c2400187727fb06d978e17727319063fccb77f","after":"4d7a8219e09430254f5981194d5630894c7d018a","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:36:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Improvements to home page resolution. This is now implemented as a interface `HomePageResolver` instead of an annotation `HomePage`. I needed to make decisions what home page to use dynamically. Apart from the use of the annotation mean that it was static, and only the presence or not of an extension determining what the home page would be.\n\nThe second problem was that the home page was always set up upon `AuthenticationState` creation. This meant it could and would happen before any kind of login. The same home page would then persist right through to the session itself. Instead, no home page is now set by default on the state. If the home page is null, the caller is expected to resolve the default. There is a new helper method in `AuthenticationService.getCurrentPage()` that should be used where appropriate.","shortMessageHtmlLink":"Improvements to home page resolution. This is now implemented as a in…"}},{"before":"e65a64324f0ada097497b37bdb5dbaf20a7e0d75","after":"e1c2400187727fb06d978e17727319063fccb77f","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:32:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Improved look of About page.","shortMessageHtmlLink":"Improved look of About page."}},{"before":"dfce2c4a23309064c5e4145985c024b3ffee9954","after":"e65a64324f0ada097497b37bdb5dbaf20a7e0d75","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:31:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Unwanted space being rendered around footer theme menu causing scrollbar.","shortMessageHtmlLink":"Unwanted space being rendered around footer theme menu causing scroll…"}},{"before":"2048fef239db7e7831ebe02162989125fe8831ec","after":"dfce2c4a23309064c5e4145985c024b3ffee9954","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:29:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Dashboard permission.","shortMessageHtmlLink":"Dashboard permission."}},{"before":"99c8f8bcf46deec5ca00685f6df0c5f3f0604514","after":"2048fef239db7e7831ebe02162989125fe8831ec","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:26:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"i18n for upload widget changes.","shortMessageHtmlLink":"i18n for upload widget changes."}},{"before":"467cde74d57c7b2e84c4699081d60d45acd25553","after":"99c8f8bcf46deec5ca00685f6df0c5f3f0604514","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:25:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Utility to create a `` tag.","shortMessageHtmlLink":"Utility to create a <small> tag."}},{"before":"8d7691530ad8d7a55b57e547cf8565ba656e2531","after":"467cde74d57c7b2e84c4699081d60d45acd25553","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:24:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Scrollbars showing on every page due to weirdly laid out footer.","shortMessageHtmlLink":"Scrollbars showing on every page due to weirdly laid out footer."}},{"before":"e5a7469dfb2f672aef8d8779643c18f883df8ac7","after":"8d7691530ad8d7a55b57e547cf8565ba656e2531","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:23:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Allow upload widget to upload single files, and submit automatically","shortMessageHtmlLink":"Allow upload widget to upload single files, and submit automatically"}},{"before":"271d2a6e873065d1f128306a73136443a831b00d","after":"e5a7469dfb2f672aef8d8779643c18f883df8ac7","ref":"refs/heads/develop","pushedAt":"2024-07-15T20:22:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Do not set feedback if it is already set.","shortMessageHtmlLink":"Do not set feedback if it is already set."}},{"before":"e0a7f547dd59e344b12e19725281937b506e2c03","after":"271d2a6e873065d1f128306a73136443a831b00d","ref":"refs/heads/develop","pushedAt":"2024-07-11T22:48:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Introduces About page.","shortMessageHtmlLink":"Introduces About page."}},{"before":"b3cb05f12dc65a3ee5ce0c84d10568d7714ab476","after":"e0a7f547dd59e344b12e19725281937b506e2c03","ref":"refs/heads/develop","pushedAt":"2024-07-11T22:45:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"`HtmlPageExtender` applicability (i.e. `isExtending()` method), the results of this were effectively being cached in the `PageCache`. This meant that it would only ever be called once for a particular page. Because it might get called when authenticated, the results would always be as if unauthenticated. To put it another way, no extender could make decisions as to whether to extend a page based on current state.","shortMessageHtmlLink":"HtmlPageExtender applicability (i.e. isExtending() method), the r…"}},{"before":"5bae861e46d86d9e07395b77b556a62befb84b36","after":"4d6801ee5829f0cbe9c4dc768ac14de03f4a2038","ref":"refs/heads/0.5.0","pushedAt":"2024-07-11T08:44:53.000Z","pushType":"push","commitsCount":23,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Merge remote-tracking branch 'origin/develop' into 0.5.0\n\n# Conflicts:\n#\tjadaptive-api/src/main/java/com/jadaptive/api/ui/pages/TemplatePage.java\n#\tjadaptive-api/src/main/java/com/jadaptive/api/ui/pages/ext/AbstractObjectRenderer.java\n#\tjadaptive-api/src/main/java/com/jadaptive/api/ui/wizards/AbstractWizard.java\n#\tjadaptive-boot/src/main/java/com/jadaptive/app/db/DocumentHelper.java","shortMessageHtmlLink":"Merge remote-tracking branch 'origin/develop' into 0.5.0"}},{"before":null,"after":"5eba3dd9ace71520db983011b6d7a14cf69c04bc","ref":"refs/heads/tmp_backup_credentials","pushedAt":"2024-07-09T17:52:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"WIP backup credentials","shortMessageHtmlLink":"WIP backup credentials"}},{"before":"df0b450f19552e0c2be061a5f6d3b55be74f7906","after":"b3cb05f12dc65a3ee5ce0c84d10568d7714ab476","ref":"refs/heads/develop","pushedAt":"2024-07-08T18:24:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Allow default for optional authentication.\nRemoved pf4j updater\nRemoved google analytics configuration","shortMessageHtmlLink":"Allow default for optional authentication."}},{"before":"126e338df2586ae75ae0f9238955f175c1102580","after":"df0b450f19552e0c2be061a5f6d3b55be74f7906","ref":"refs/heads/develop","pushedAt":"2024-07-05T21:50:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Infrastructure that ultimately allows Amcharts to use its dark theme when the bootswatch theme is dark.","shortMessageHtmlLink":"Infrastructure that ultimately allows Amcharts to use its dark theme …"}},{"before":"6f17dbc3b9857bbb33639674927945e1ca31d66b","after":"126e338df2586ae75ae0f9238955f175c1102580","ref":"refs/heads/develop","pushedAt":"2024-07-05T13:14:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Check for AuthenticationPage","shortMessageHtmlLink":"Check for AuthenticationPage"}},{"before":"951be3dce19449d071f4259136e0acce91d55c65","after":"6f17dbc3b9857bbb33639674927945e1ca31d66b","ref":"refs/heads/develop","pushedAt":"2024-07-04T20:19:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Tidy up of Dashboard","shortMessageHtmlLink":"Tidy up of Dashboard"}},{"before":"1b0e1a7f2d9e73273408707b9f90792dfe6d949c","after":"951be3dce19449d071f4259136e0acce91d55c65","ref":"refs/heads/develop","pushedAt":"2024-07-03T22:03:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"i18n text. Be more forgiving if auth page doesn't implemented the undecorated pattern.","shortMessageHtmlLink":"i18n text. Be more forgiving if auth page doesn't implemented the und…"}},{"before":"44b7794d09ac6ea9148ae350f84f85b007b3b1e7","after":"1b0e1a7f2d9e73273408707b9f90792dfe6d949c","ref":"refs/heads/develop","pushedAt":"2024-07-03T19:49:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Prevent too many redirects when adding a required authentication mechanism that the admin user does not have credentials with. Instead, check if the user can authenticate with the next AuthenticationPage and show an appropriate error before attempting to load the next authenticator.","shortMessageHtmlLink":"Prevent too many redirects when adding a required authentication mech…"}},{"before":"93c1c4dd6ba338c65c0063265e31dad2c980a533","after":"44b7794d09ac6ea9148ae350f84f85b007b3b1e7","ref":"refs/heads/develop","pushedAt":"2024-07-03T08:40:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Add a check for update-state API call.","shortMessageHtmlLink":"Add a check for update-state API call."}},{"before":"1d4374daa352ec33bdab0bf15253c0ef490e5c6b","after":"93c1c4dd6ba338c65c0063265e31dad2c980a533","ref":"refs/heads/develop","pushedAt":"2024-07-02T20:55:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Provide a way to programmatically access the current http / https port. This doesn't appear to work when in an extension, thus is in the core. `TomcatConfig` allows an HTTP port to be specified to allow HTTP as well as HTTPS access (useful for the prototype \"app launch\" feature of VMSee)","shortMessageHtmlLink":"Provide a way to programmatically access the current http / https por…"}},{"before":"840e7d79fe86a9941c4c05c8baeb9c86e0f2cb36","after":"1d4374daa352ec33bdab0bf15253c0ef490e5c6b","ref":"refs/heads/develop","pushedAt":"2024-07-02T19:27:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Generic server starting status page.","shortMessageHtmlLink":"Generic server starting status page."}},{"before":"2f7b909143c05e45489bf48f0e1a451c078812ec","after":"840e7d79fe86a9941c4c05c8baeb9c86e0f2cb36","ref":"refs/heads/develop","pushedAt":"2024-07-02T16:12:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Tidy up of authentication actions for reset, change 2FA option etc.","shortMessageHtmlLink":"Tidy up of authentication actions for reset, change 2FA option etc."}},{"before":"0f4dab8ee535b9d189a11852a866726d8a645664","after":"2f7b909143c05e45489bf48f0e1a451c078812ec","ref":"refs/heads/develop","pushedAt":"2024-07-01T23:39:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Ability for quick setup items to be shown on user dashboard.","shortMessageHtmlLink":"Ability for quick setup items to be shown on user dashboard."}},{"before":"c7259bf77ed567db6d015e1660e78fc91ed289f4","after":"0f4dab8ee535b9d189a11852a866726d8a645664","ref":"refs/heads/develop","pushedAt":"2024-07-01T14:34:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Show file details in help.","shortMessageHtmlLink":"Show file details in help."}},{"before":"6a2c5860298d28413ba73de35fc410d02bab2722","after":"c7259bf77ed567db6d015e1660e78fc91ed289f4","ref":"refs/heads/develop","pushedAt":"2024-07-01T12:01:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ludup","name":"Lee David Painter","path":"/ludup","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6527203?s=80&v=4"},"commit":{"message":"Fixed file type\nOrganised imports.","shortMessageHtmlLink":"Fixed file type"}},{"before":"055d02be77aadf38bd3b7876a4ec55fbe1be1502","after":"6a2c5860298d28413ba73de35fc410d02bab2722","ref":"refs/heads/develop","pushedAt":"2024-06-30T22:45:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Modernised some code, functionally the same in the end, but I happened to be working in this area.","shortMessageHtmlLink":"Modernised some code, functionally the same in the end, but I happene…"}},{"before":"050e8e6ccd28c19a58d235c3c6379f58ec9a4874","after":"055d02be77aadf38bd3b7876a4ec55fbe1be1502","ref":"refs/heads/develop","pushedAt":"2024-06-28T13:10:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Regression meant SSH interface might start up twice.","shortMessageHtmlLink":"Regression meant SSH interface might start up twice."}},{"before":"f1e30112c546069806821b1ec4f3d6dc3c3ad8f3","after":"050e8e6ccd28c19a58d235c3c6379f58ec9a4874","ref":"refs/heads/develop","pushedAt":"2024-06-28T10:44:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brett-smith","name":"Brett Smith","path":"/brett-smith","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10938912?s=80&v=4"},"commit":{"message":"Some infrastructure to support rolling back of non-database changes. It was found that if there are operations during the setup wizard that are NOT database changes, then if there is a problem later on, that means there is a database rollback, those out-of-band operations are not undone.\n\nThis particularly shows itself on the VPN. It now does 3 main things that are outside of database transactions.\n\n * Setup a Wireguard interface\n * Start an SSH server\n * Integrate with VMSee.\n\nIf the last step (integration with VMSee) fails, then the low level wireguard interfaces and the SSH server socket will be left running, but the database objects that supports these will be gone. This causes all kinds of oddities if you then try and correct the last step (e.g. wrong tenant) domain, and you will be effectively stuck in the setup wizard. Only a *reboot* will clear this.\n\nThis cannot really be dealt with on a case by case basis. There needs to be framework to allow other types of transaction behaviour.\n\nTo address this, I have added `TransactionService.tx()`. This `ThreadLocal` may be called anywhere inside a transaction, and has an `undoable()` method which may be passed a `Runnable` that is called if the transaction fails.\n\nThis is not perfect, as it still means the transaction is not undone in the exact same order as it should really be. Instead, the database changes are undone, and then any other `undoable()` actions are running. This may not be in the exact same order that they were run, but it should be good enough to support the setup wizard case.\n\nLonger term we really need a better transaction API.","shortMessageHtmlLink":"Some infrastructure to support rolling back of non-database changes. …"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEgDGWngA","startCursor":null,"endCursor":null}},"title":"Activity · ludup/jadaptive-app-builder"}