CallBackery

 view release on metacpan or  search on metacpan

CHANGES  view on Meta::CPAN

0.60.0 2026-08-27 08:42:19 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - Excel export: new makeExportAction option "extraCols" adds generated
   columns to an XLSX export. The only type so far is "qrCode", which
   embeds the content of a selectable field as a QR code image. The
   content comes from a table key or a code reference, the column is
   placed after its source column or at an explicit insertAfter index,
   and label and size are configurable. Needs Text::QRCode, which is
   loaded only when such a column is exported. CSV exports ignore the
   option.

 - CallBackery::GuiPlugin::AbstractTable used Mojo::Asset::Memory
   without loading it, and only worked because Mojolicious happened to
   have loaded it already.
0.59.0 2026-08-20 08:58:50 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - New optional actionCfg property "noBusyIndicator" for download and
   display actions. When set, the modal busy indicator ("Preparing
   Download ...") is not shown while the download is being prepared, so
   the gui stays usable for actions which take a long time to produce
   their data. Default behaviour is unchanged.

0.58.4 2026-07-31 16:15:51 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - Frontend ui.Login: a login could be lost outright. The credentials
   were copied into the hidden iframe form that exists only to make the
   browser offer to save the password, and that copy ran before the
   login call, unguarded. The iframe reloads /login every time the login
   window appears, so whenever that fetch had not completed yet -- a
   busy server is enough -- getElementById returned null, the handler
   threw on it, and the login request was never sent. The form had
   already disabled itself, so it just sat there greyed out with nothing
   on screen to explain it, and only a reload got the user out of it.
   The password manager hand-off now happens after a successful login
   and is fully guarded, so it can miss the save prompt but can no
   longer come between the user and their session.

0.58.3 2026-07-30 16:11:29 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - Config: restoring a configuration blob replaced the configuration
   database file, giving it a new inode. Every connection open at the
   time stayed attached to the old, now unlinked file: it went on
   reading the pre-restore configuration and failed on its first write
   with SQLITE_READONLY_DBMOVED, which SQLite reports as "attempt to
   write a readonly database". With a prefork server and background
   helpers that is most of the processes on the machine. The
   replacement database is now built beside the live one and copied in
   with SQLite's online backup API, so the inode is preserved and open
   connections simply see the restored data. If the write lock cannot
   be had within 30 seconds the restore now gives up with an error and
   leaves the database untouched, rather than restoring it half way.

0.58.2 2026-07-20 12:54:27 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - Frontend ui.plugin.Form: make sure trigger load does not overwrite
   fix for automated testing which fills forms very quickly

0.58.1 2026-07-16 08:39:18 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - Frontend ui.plugin.Form: a trigger-field change made while form data
   was still loading parked its form reconfiguration in _reconfPending
   and never sent it — the affected form stayed in its stale layout
   (e.g. fields that the reset should reveal never appeared) until the
   user toggled the trigger field again. The pending queue is now
   drained when loading completes.

0.58.0 2026-07-15 17:23:33 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - Session expiry now surfaces as a dedicated RPC code 7 ("session
   expired"), distinct from code 6 ("login required"). allow_rpc_access
   guards plugin instantiation so an expired session no longer escapes as
   a generic error. CallBackery::User gains a per-request `sessionExpired`
   flag for subclasses that enforce a cookie max-age.

 - Frontend data.Server: session expiry shows a single deduplicated
   "Session Expired -> Reload" prompt instead of a storm of error popups.
   Communication failures (server unreachable / proxy returning garbage)
   now retry silently for idempotent reads, then show one "Connection
   problem" dialog with Retry / Reload. MsgBox gains reload/retry buttons.

0.57.0 2026-06-16 08:58:42 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - We are on JSON-RPC 2.0 now. callbackery.data.Server now uses
   qx.io.jsonrpc.Client (qooxdoo 7.x) instead of the deprecated
   qx.io.remote.Rpc. 

   Serverside we have switched to JSON-RPC 2.0 dispatch by the grace
   of Mojolicious::Plugin::Qooxdoo >= 1.1.0,
   which auto-detects qx1 vs 2.0 requests.

   Applications must build against qooxdoo 7.x, and you must upgrade
   frontend and backend together.

   The "qooxdoo/deprecated.qx.io.remote" requirement in the frontend
   Manifest.json is no longer needed and may be dropped (CallBackery no
   longer references qx.io.remote); leaving it in place is harmless, as
   unreferenced library classes are not bundled.

0.56.8 2026-03-27 16:21:24 +0100 Tobias Oetiker <tobi@oetiker.ch>

 - MockUser now has a controller method returning undef, so Abstract::log will fall through to $self->app->log instead of crashing.

0.56.7 2026-03-19 17:46:23 +0100 Tobias Oetiker <tobi@oetiker.ch>

 - protect $self->controller->runEventActions('changeConfig'); in
   GuiPlugin/Abstract.pm from missing controller case

0.56.6 2025-11-04 15:41:29 +0100 Tobias Oetiker <tobi@oetiker.ch>

CHANGES  view on Meta::CPAN

0.18.2 2019-09-10 15:14:45 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - added french translation

0.18.1 2019-09-10 12:13:24 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - updated fr and it translations

0.18.0 2019-08-16 11:34:38 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - add support for per-call log cleaners to prevent login call from spilling the password while logging

0.17.4 2019-07-16 15:48:07 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - directly return the error message without mentioning the key that cause it as this is complicating ui translations

0.17.3 2019-06-04 09:18:24 +0200 Tobias Oetiker <tobi@oetiker.ch>
 
 - textfields CAN be 'null' ...
 
0.17.2 2019-06-04 09:14:58 +0200 Tobias Oetiker <tobi@oetiker.ch>
 
 - fix handling of null and undefined field values for textfields
 
0.17.1 2019-06-04 08:50:03 +0200 Tobias Oetiker <tobi@oetiker.ch>
 
 - do not loop if two fields are reconfigure triggers modifying their own content in the process
 - reload read-only fields after reconfig.

0.17.0 2019-05-31 16:02:43 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - add the triggerFormReset key to form elements, when a widget has this key
   set the form configuration will be re-queried from the server, and the 
   current content of the form will be available in $self->args. In this
   way it is possible to change settings of the form widgets based on the current
   form content, as well as altering the content of selectboxes.

0.16.0 2019-04-23 17:04:50 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - if the getUserConfig returns a sessionCookie property, start using it
   to authenticate and thus skipping the login step. this can be used to
   implement single sign on ... see bdass.

0.15.1 2019-04-03 15:44:12 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - added missing NumberFormatter to archive

0.15.0 2019-04-03 15:13:53 +0200 Tobias Oetiker <tobi@oetiker.ch>

 - added support for numberformating ... 1000 Byte => 1 kByte 
   see Song.pm for example

* 121c4ab - (HEAD -> login-log) log login acctivity (4 minutes ago) <Tobias Oetiker>
* bf1b222 - (origin/master, origin/HEAD, master) fix generator to work with mojo8 (3 months ago) <Tobias Oetiker>
* 4087cfe - trying to get travis going again (3 months ago) <Tobias Oetiker>
* fc77dca - fix some regressions (3 months ago) <Tobias Oetiker>
* 7c715da - fix userform syntax (3 months ago) <Tobias Oetiker>
* dc01dcb - teach Promises to callbackery (3 months ago) <Tobias Oetiker>
* 35bcb56 - 0.13.8 (8 months ago) <Tobias Oetiker>
* f0cb691 - remove stray 0 at the end of the sqlite dump (8 months ago) <Tobias Oetiker>
* 043a79c - (tag: v0.13.7) use database dump in the backup file not the raw db file (8 months ago) <Tobias Oetiker>
* 6dc7875 - (tag: v0.13.4) fix spelling of instanciation ... it is instantiation (8 months ago) <Tobias Oetiker>
* 60c4ec8 - (tag: v0.13.3) must load CallBackery::User (9 months ago) <Tobias Oetiker>
* 2fad13b - (tag: v0.13.2) limit width of note column in forms (9 months ago) <Tobias Oetiker>
* a732cd7 - (tag: v0.13.1) fix call to userObject (9 months ago) <Tobias Oetiker>
* 4878b5b - (tag: v0.13.0) Fighting circular references (9 months ago) <Tobias Oetiker>
* 7547c30 - update PERL_MODULES (10 months ago) <Tobias Oetiker>
* 7d871b9 - (tag: v0.12.9) fix deprecated route syuntax (no more braces) (10 months ago) <Tobias Oetiker>
* d22bf7e - update template PERL_MODULES (10 months ago) <Tobias Oetiker>
* 36e18d1 - (tag: v0.12.8) updated dependncy to require latest qooxdoo plugin (10 months ago) <Tobias Oetiker>
* 71ba760 - widen tests (10 months ago) <Tobias Oetiker>
* 33507d2 - fix cpanmin.us link (10 months ago) <Tobias Oetiker>
* 1716124 - Update README.md (10 months ago) <Tobias Oetiker>
* 3cda105 - Update README.md (10 months ago) <Tobias Oetiker>
* b6b2deb - (tag: v0.12.7) search templates in templates/system (11 months ago) <Tobias Oetiker>
* 1253847 - (tag: v0.12.6) localize $_ before loading locales since this function modifies $_ (11 months ago) <Tobias Oetiker>
* aa50217 - simplify table change detection (12 months ago) <Tobias Oetiker>
* dc13afc - (tag: v0.12.5) new String is not a good thing ... stick with just String (1 year ago) <Tobias Oetiker>
* e65abe4 - add missing Makefile (1 year ago) <Tobias Oetiker>
* b0ff480 - (tag: v0.12.3) fix user object for up and downloads (1 year, 1 month ago) <Tobias Oetiker>
* 88ba138 - (tag: v0.12.2) auto build source version (1 year, 1 month ago) <Tobias Oetiker>
* 5898387 - add a cache-control header for all requests but those going for the resource files. (1 year, 1 month ago) <Tobias Oetiker>
* bd53c60 - (tag: v0.12.0) v0.12.0 (1 year, 2 months ago) <Tobias Oetiker>
* 4e0dfba - additional types supported for table columns: - string - number   including format option (1 year, 2 months ago) <Tobias Oetiker>
* 8d5425f - qxclass changes (1 year, 2 months ago) <Tobias Oetiker>
* 6494665 - local class (1 year, 2 months ago) <Tobias Oetiker>
* ae4f5ed - local class (1 year, 2 months ago) <Tobias Oetiker>
* 851f7d3 - add bin makefile handle qxpath seperately (1 year, 2 months ago) <Tobias Oetiker>
* 6c7450c - app names with - and not _ please (1 year, 2 months ago) <Tobias Oetiker>
* 603bd0e - update to latest CallBackery (1 year, 2 months ago) <Tobias Oetiker>
* 7c52763 - (tag: v0.11.2) handle text fields with 0 (numeric) content properly (1 year, 3 months ago) <Tobias Oetiker>
* 901ce64 - (tag: v0.11.1) fix popup regression (1 year, 4 months ago) <Tobias Oetiker>
* 683f147 - (tag: v0.11.0) make visibility propagation actually work (1 year, 5 months ago) <Tobias Oetiker>
* 8eb8770 - a bunch of changes to enable plugins to hide themselves if they want to (1 year, 5 months ago) <Tobias Oetiker>
* f3c697c - * improve handling of user objects * add support for #focusApp=xxx  location argument (1 year, 5 months ago) <Tobias Oetiker>
* 874ba3c - (tag: v0.10.9) no more transitions for blocker (1 year, 9 months ago) <Tobias Oetiker>
* e1e5f4a - (tag: v0.10.8) 0.10.8 (1 year, 9 months ago) <Tobias Oetiker>
* a401b20 - make download work again (1 year, 9 months ago) <Tobias Oetiker>
* 8a9f180 - do not recursively define SHARE (1 year, 9 months ago) <Tobias Oetiker>
* d04d959 - move blocker tuneing into separate method, so that alternate implemenations are simple (1 year, 9 months ago) <Tobias Oetiker>
* 48146ac - (tag: v0.10.7) blurring blocker effect added (1 year, 9 months ago) <Tobias Oetiker>
* b61ada6 - (tag: v0.10.6) de-slurpify (1 year, 10 months ago) <Tobias Oetiker>
* 9ad58c9 - (tag: v0.10.5) html widget must be added with flex (1 year, 11 months ago) <Tobias Oetiker>
* 282b55b - (tag: v0.10.4) * allow to translate lable property of form fields * unbreak html plugin after _populate move (1 year, 11 months ago) <Tobias Oetiker>
* 4ea1a06 - do not reinstantiate the database handle (1 year, 11 months ago) <Tobias Oetiker>
* 9aff270 - publish user info too (1 year, 11 months ago) <Tobias Oetiker>
* 8e28e7c - new FRONTEND parameter max_width for the maximum width of the ui component (1 year, 11 months ago) <Tobias Oetiker>
*   a837348 - Merge pull request #44 from zaucker/DateTime (1 year, 11 months ago) <Tobias Oetiker>
|\  
| * c3a30ca - Easier extension of plugins (1 year, 11 months ago) <Fritz Zaucker>
* | 1e28f20 - (tag: v0.10.0) added date time to dist (2 years ago) <Tobias Oetiker>
* |   cafe876 - Merge branch 'master' of github.com:oetiker/callbackery (2 years ago) <Tobias Oetiker>
|\ \  
| * \   7cd362b - Merge pull request #43 from zaucker/DateTime (2 years ago) <Tobias Oetiker>
| |\ \  
| | |/  
| | *   608c206 - Merge branch 'master' into DateTime (2 years ago) <Fritz Zaucker>
| | |\  
| | |/  
| |/|   
| | * 12ed8b1 - Add DateTime widget (2 years ago) <Fritz Zaucker>



( run in 6.371 seconds using v1.01-cache-2.11-cpan-c221a9de4ec )