🚀 Jam.py v7.0.114 is Here: Jinja2 Support, Multi-Field Search & Mobile-First Teaser!

43 views
Skip to first unread message

Danijel Kaurin

unread,
Sep 8, 2026, 3:46:19 PMSep 8
to Jam.py Users Mailing List
Hello Jam.py Community,

We are excited to announce the official release of Jam.py version 7.0.114!

This release brings significant performance improvements, enhanced templating flexibility, and handy developer productivity features. Here is everything new in this update:

🌟 What’s New in Version 7.0.114

1. Modern HTML Templating with Jinja2

Jam.py V7 now leverages the Jinja2 library for handling custom HTML page variables.

  • Why the change? Previously, percentage signs (%) in custom CSS rules could trigger app crashes during template dictionary parsing. Jinja2 eliminates this issue entirely, giving you faster page loads, greater reliability, and full access to modern templating features.

  • Action Required: If you use custom login.html, register.html, or other custom template pages, please update your variable syntax:

<!-- Old Syntax NOT WORKING ANYMORE-->
<input type="text" class="form-control" name="login" id="login" placeholder="%(login_text)s" value="%(login)s">

<!-- New Jinja2 Syntax -->
<input type="text" class="form-control" name="login" id="login" placeholder="{{ login_text }}" value="{{ login }}">

2. Multi-Field Typeahead Lookup Search

You can now configure typeahead lookup fields to search across multiple fields simultaneously!

// Example: Search employee records by first name, last name, or email address
function on_edit_form_created(item) {
    item.employee_id.enable_typeahead = true;
    item.employee_id.lookup_search_fields = ['first_name', 'last_name', 'email'];
}

Screenshot 2026-09-08 202052.png

3. Modernized Default HTML Templates

We separated the HTML templates for the App Builder and the Default App Login, introducing sleek, modernized interface templates out of the box.

4. Modern Input Button Layout

Upgrade your form field aesthetic! You can now enable a clean, modernized layout for input field action buttons.

  • How to enable: Navigate to your Project Parameters and check "Modern input buttons".

Screenshot 2026-09-07 205458.png

5. Builder Search Filters & Bug Fixes

  • Tab Search Filters: Quickly filter through events, task items, and item fields directly inside each tab pane of the App Builder. Note: in task tab --> search for task tree works only for item level nodes

  • Fixed several minor issues in the App Builder for a smoother development experience.


Screenshot 2026-09-06 212808.png

6. Jam.py now has 20 bootstrap themes for the UI!

🔮 What’s Next for Jam.py?

We are actively developing a mobile-first application experience:

  • Mobile Cards & Bottom Sheets: Replacing dense data tables with responsive card views and traditional modals with sleek bottom-sheet forms.

  • Native PWA Support: Transform your Jam.py web apps into fast, installable Progressive Web Apps.

  • Custom Jam Datepicker: Replacing the Zebra date-time picker with our custom-built jam-datepicker plugin.

  • New UI Plugins: Dedicated extensions including Kanban boards, photo galleries, and more!

Stay tuned—a live demo of these mobile features will be available soon!

Best regards,

Danijel Kaurin

Jam.py Development Team

Manos Pappas

unread,
Sep 9, 2026, 1:30:15 AMSep 9
to Jam.py Users Mailing List
Hi Danijel,

That is excellent news, downloading it now to test it :)
Many thanks!

Regards,
Manos

Zoi Moravec

unread,
Sep 9, 2026, 2:07:59 AMSep 9
to Jam.py Users Mailing List
Very nice! Amazing!

среда, 9 сентября 2026 г. в 08:30:15 UTC+3, Manos Pappas:

Fabio Lenzarini

unread,
Sep 9, 2026, 4:20:43 AMSep 9
to Zoi Moravec, Jam.py Users Mailing List
Many thanks! Great job

the best way to upgrade a previous Jam.py app?

thanks
Fabio

--
You received this message because you are subscribed to the Google Groups "Jam.py Users Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jam-py+un...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/jam-py/f76faa1b-1ee1-4e82-8797-cd7c5102a8ban%40googlegroups.com.

Manos Pappas

unread,
Sep 9, 2026, 4:41:23 AMSep 9
to Jam.py Users Mailing List
Hi Fabio,

If you mean from a previous v7 jam application, I've only changed the custom code on my custom login.html page, that's all.
If you mean from a previous v5 jam application, I've converted my application in stages with the first stage doing the steps as explained in the documentation: https://jampy-docs.readthedocs.io/projects/V7/en/latest/how_to/how_to_migrate_to_v7.html

Regards,
Manos

r rad

unread,
Sep 10, 2026, 5:21:12 AM (13 days ago) Sep 10
to Jam.py Users Mailing List

Hello 

This is great job. Tanks to many!

PS. Are yours changes go on language messages?

Radosav

Fabio Lenzarini

unread,
Sep 14, 2026, 6:24:17 AM (9 days ago) Sep 14
to r rad, Jam.py Users Mailing List
Hi Manos,

I didn't explain myself clearly.

I have an older version of Jam7 on my PC.

I created an application using that version.

I'd like to upgrade everything to version 114.

Here's what I would do:

  1. Back up my application (Export to zip)
  2. Update Jam (pip install --upgrade jam.py-v7)
  3. Restore the application


Are these the correct steps?


thanks

Ciao

Fabio


Manos Pappas

unread,
Sep 14, 2026, 6:41:44 AM (9 days ago) Sep 14
to Jam.py Users Mailing List
Hi Fabio,

Since your application already uses Jam v7, you do not even to export/import it.
I simply stop my v7 applications (e.g stopping apache), update jam v7 on the venv I use (using pip ) and then simply restart the application server (apache).
The only thing that requires manual actions is if you are using custom login or html pages that use system variables; these need to be changed to use the new syntax as explained here:
<!-- Old Syntax NOT WORKING ANYMORE-->
<input type="text" class="form-control" name="login" id="login" placeholder="%(login_text)s" value="%(login)s">

<!-- New Jinja2 Syntax -->
<input type="text" class="form-control" name="login" id="login" placeholder="{{ login_text }}" value="{{ login }}">

That's all you have to do.

Best regards,
Manos

Fabio Lenzarini

unread,
Sep 14, 2026, 7:18:35 AM (9 days ago) Sep 14
to Manos Pappas, Jam.py Users Mailing List
many thank, work!
ciao
Fabio

Fabio Lenzarini

unread,
Sep 14, 2026, 3:07:05 PM (9 days ago) Sep 14
to Manos Pappas, Jam.py Users Mailing List
Is the image management working properly for you?
2026-09-14 21_04_44-Impostazioni.png

Danijel Kaurin

unread,
Sep 14, 2026, 4:17:55 PM (9 days ago) Sep 14
to Fabio Lenzarini, Manos Pappas, Jam.py Users Mailing List
Hi Fabio.

I fixed this. Please upgrade the package.

Regards

Fabio Lenzarini

unread,
Sep 15, 2026, 5:00:26 AM (8 days ago) Sep 15
to Danijel Kaurin, Manos Pappas, Jam.py Users Mailing List
Thanks, now work fine, but I can't see a "delete" button to empty the image.
I can only change the picture.

ciao
Fabio

Danijel Kaurin

unread,
Sep 15, 2026, 1:25:32 PM (8 days ago) Sep 15
to Fabio Lenzarini, Manos Pappas, Jam.py Users Mailing List
Hi Fabio,

I'm afraid you need to implement that logic within your application, as that option is not included for image fields in Jam's core.

Regards,

Danijel

Dean D. Babic

unread,
Sep 16, 2026, 11:10:30 AM (7 days ago) Sep 16
to Jam.py Users Mailing List
HI Fabio,
this is actually documented, the image is deleted with pressing CTRL and double-click on the image:
https://jam-py-v7.github.io/jampy-docs-v7/intro/tutorial02/index.html
"To clear an image, hold down the Ctrl key and double-click the image."

Not sure how to do that on a mobile phone tho :)

Cheers

Fabio Lenzarini

unread,
Sep 21, 2026, 6:42:31 AM (2 days ago) Sep 21
to Dean D. Babic, Jam.py Users Mailing List
Reply all
Reply to author
Forward
0 new messages