Changelog
Reminder: Changes here will affect only new apps created with the template. If you have already started your app using the template, you will not receive these updates in your existing apps.
Last updated
Reminder: Changes here will affect only new apps created with the template. If you have already started your app using the template, you will not receive these updates in your existing apps.
Last updated
If you have already started your app using the template, you will not automatically receive these updates into your existing app. You will need to manually bring them over into your existing apps if you deem them necessary. I have tried to provide enough explanation below to make this simple but please let me know if you need help.
Fixes to responsiveness and width limits & change to how demo mode works Problem: A user pointed out that large amounts of text in some text fields were not truncated correctly in certain table UIs. Also search boxes and titles of UI elements did not have a min width which made them look bad on certain screen sizes. Solution: I added some min and max widths and heights on certain elements in all of the table and Kanban UIs to improve these things. Problem: Demo mode with a test user was overcomplicated to remove. Solution: I made the Example Dashboard work without needing to login, so now demo users are just visiting the page rather than being logged in with a test account. See the READ ME FIRST page for new instructions on how to remove the demo features.
Added a new Multi-Step Form UI Please see the to understand how it works.
Bugfix - Lemon Squeezy webhook
Problem - I noticed blank subscriptions were being created in the database every time a webhook came from Lemon Squeezy.
Solution - In Step 3 of the lsupdate API workflow (in backend workflows) the conditional search which prevents a new subscription being created if it already exists was searching for the wrong thing (it was constraining by first_subscription_item's ID
but should have been constraining by first_subscription_item's subscription ID
).
For older versions of the template you will need click into the search itself and update that constraint.
Fixed potential security issue in privacy rules
The problem: Having a rule that says This thing's entity is current user's entity
does not guard against a situation where the entity field is empty for both the thing and the user, in which case this privacy rule would pass and data could be leaked.
The solution: Update the rule to say This thing's entity is current user's entity AND current user's entity is not empty
.
Fixed Kanban 2D UI bug I noticed that once a column is empty, you could not drag an item onto that column, so I added a dropzone which allows you to drag into an empty column.
Disabled activity logs and deleted the existing logs Someone mentioned that the template was coming with over 1500 activity log entries in the database, which is not what I intended! I think every time I tested features it was creating the logs. I have deleted them all AND disabled the activity log feature, which was run off a database trigger. Any user who wishes to use the activity logs feature can simply remove this permanently false conditional in the backend workflows.
Fixed a login bug
A user pointed out that if you try to login with an incorrect email, the login fails but the button remains in its "loading" state. I made a small change to fix this. If you want to implement the fix in your own app, you just need to go to the ⚙️ Ftn: Group - Signup/Login reusable element, select the main login/signup button, and add the text shown in red to the conditional tab.
The text is: [hi]no-icon[/hi]
Added two drag-and-drop Kanban board UIs If you want to create a user experience similar to a Trello board, a Kanban board is what you need.
I created two different Kanban UIs, one-dimensional (1D) and two-dimensional (2D). The one-dimensional version is simpler and just allows the moving of items between columns but not up and down within the column. The columns will always be sorted in the order you specify, for example if it's sorted by name and you drop an item with a name starting with Z, the item will automatically show at the bottom no matter where you drop it. The two-dimensional version is slightly more complicated because it allows the reordering of items within each column as well as moving between the columns. This means whatever data type you are displaying must have a numeric field storing the order in which items should be displayed in the list. For example, if your Kanban is showing tasks in different statuses, the tasks should all have an order field of type number and at the point of task creation you will have to assign a unique number to each task. Any questions - let me know in the Slack! Thanks.
In the example I've created, I first run a backend workflow replicate - generate music which runs the Create a prediction API call.
The workflow then schedules another backend workflow replicate - check prediction to run in 10 seconds time. This workflow uses the Get a prediction API call to check if the AI generation is complete. If not, it schedules itself to run again in 10 seconds time. This will continue until it returns a response from Replicate.
Simplified the menu option sets by consolidating the OS admin dashboard tabs into the main OS dashboard tabs option set. This should make it simpler to create multiple dashboards. All the sidebar menus now run off one option set and subtabs run off a second option set. There is a new option set called OS - App Locations which is a list of the menu locations within the app, this is used to decide which tabs to show where. For existing apps I wouldn't recommend trying to bring this change into your app, it's not necessary.
Fixed a bug which was redirecting logged out users to the email confirmation page There was a workflow in the 🖼️ Layout: Dashboard header reusable which would redirect users to the confirmation page if their email address had not been confirmed (i.e. they had not clicked the link in the confirmation email). This was incorrectly redirecting logged out users to the confirmation page. There was also no workflow generally redirecting logged out users away from the dashboard. To fix this I updated the redirect workflow to only occur when the user is logged in, and added another workflow to redirect the user to auth if they are logged out. For older versions of the boilerplate you will need to do the same: 1) In the Layout: Dashboard Header reusable on you will need to add "and the current user is logged in" to this workflow trigger's conditional. This will prevent it redirecting to that page. 2) You should also add another workflow "When user is logged out" with an action "Go to page... auth", which will then correctly redirect logged out users to the auth page.
Simplified the demo mode to make it less work to remove!
Unfortunately to provide a Bubble template it must offer a demo preview mode. Obviously I don't want random people creating things in the database or making changes to test credentials. So there is now one user in the database - test@test.com - and a "demo login" button on the landing page which logs the tester in as test@test.com. There are a load of conditionals on various buttons which make them not clickable if the current user's email is test@test.com. You can remove these conditionals if you want but the point is you don't need to if you don't want to, it shouldn't affect your app (unless you have a user with the email test@test.com). See the updated READ ME FIRST for more information.
Moved the right sidebar into the table reusable elements rather than a shared one on the dashboard In the Table reusable elements (Classic rows, Image grid, Coloured grid, Calendar) I have moved the right sidebar to be within the reusable element itself. This makes it much less fiddly to customise the sidebar to show the information you need for each table. Previously the right sidebar was hidden on the dashboard and triggered with a URL parameter. This added extra complexity but at the time I thought it was the only way to do a full height sidebar. Thanks to some custom CSS it is now within the reusable itself.
Please watch this .
Added Replicate API call for generating music is an excellent service that lets you run all kinds of open source AI models, including your own, via an API. I added in a simple API call to one of the open source models which generates music from a prompt. You will need to add your own Replicate private key in the appropriate place. There are two API calls, one to create a prediction and one to get a prediction. Creating a prediction starts the model running based on the prompt you give it. You then need to check back periodically to see if your prediction has finished running, this is when you use get a prediction. You can replace the model ID with any of the open source Replicate models, but you will also need to update the JSON body so you are sending through the right parameters e.g. if you're creating an image, it won't need a duration.
Fixed signup issue where the "require email confirmation" functionality was not working correctly. I was made aware that switching on "require email confirmation" on specific roles in the OS - User Roles option set was not working correctly. Users who signed up were receiving the confirmation email but somehow their email address was being automatically confirmed without them doing anything. After investigating I discovered this was likely a timing issue with the way the initial signup workflow was running, and I eventually ended up refactoring the entire signup workflow to make it more robust. If you are running into this issue to see how to update your signup/login workflows.
Fixed missing plugin actions (Toast plugin) on accounts + settings reusable Weirdly a few actions related to Toast (confirmation notifications plugin) had gone missing in the workflows so they were showing this... I have deleted and replaced these actions with the correct Toast action. If you need to fix an older version, simply delete any missing actions and add in a Toast action (or copy and paste from elsewhere), similar to below.
Fixed a bug on the email confirmation page The confirmation page is where users are sent if their role requires email confirmation but they have not yet confirmed their email by clicking the link in the automated email. I realised there was an error in one of the workflows on the page which was supposed to trigger when they had confirmed their email and either send the user to onboarding or to their homepage. The conditional below should say is empty rather than isn't empty (this is checking if the user has completed all their onboarding steps). I also added another conditional to the trigger for this entire workflow to say that if the current user's role doesn't require email confirmation, do the same page redirect. This is just in case a user accidentally lands on this page when they shouldn't be there.
Made sure you cannot invite a user without filling out the email and role fields In the UI: Section - Account + Billing, Donnie spotted a bug that allowed you to click the invite button even if you hadn't filled in the email field and role dropdown. I added a conditional on the button to make it not clickable if either were empty.