CHANGELOG.md
Rama master · réplica de lectura del repositorio original.
# Change Log
## [1.10.15] - 2026-10-29
### Changed
- Upgraded Python dependencies other than `nltk`. Note that if you are
using third-party Python packages, you may encounter dependency
conflicts. It is possible that your interviews will need to be
updated.
- Upgraded CodeMirror.
## [1.10.14] - 2026-10-22
### Changed
- Upgraded `CairoSVG`, `certifi`, `Mako`, `multidict`, `PyJWT`,
`urllib3`, and `Werkzeug`.
### Fixed
- Avoid red shadow on signature images added to PDF files.
## [1.10.13] - 2026-10-01
### Fixed
- Issue with converting question to data when the `code` variant of
`show if` caused a multiple choice question not to appear on the
screen.
- The "Are you sure?" message was appearing when a new Playground
interview was saved.
## [1.10.12] - 2026-09-27
### Added
- Configuration directive for setting a default value for the `send
question data` feature.
### Fixed
- Adjusted the code that calls S3 so that it is compatible with
servers that do not return `Content-Type`.
- Added `DBPORT` to `Docker/env.list`.
## [1.10.11] - 2026-09-20
### Fixed
- The address autocomplete feature was not actually as configurable as
the documentation suggested.
- The `css class` of a radio or checkbox item was attached to the
`<input>` but not to the `<label>`. It is now attached to both.
## [1.10.10] - 2026-09-12
### Fixed
- Input sanitization for LDAP login method.
## [1.10.9] - 2026-09-12
### Changed
- The `editable: False` option for `pdf template file` is implemented
a different way, which should provide improved accessibility.
- For purposes of salutations and pronouns, gender is
case-insensitive.
## [1.10.8] - 2026-09-07
### Changed
- The `_edit_button()` and `_delete_button()` methods now have a third
positional argument, `item`. *Note that this is a breaking change*
if you use `_edit_button()` or `_delete_button()`, so you will need
to update your methods.
- Checkboxes and radio buttons no longer use JavaScript.
- Users of screen readers will hear "Deleted" after pressing a
"Delete" button on a `table`.
- Changed aria settings of the elements containing flash messages, so
that messages are announced to screen readers. If you have modified
`alert container html` and/or `alert html`, you may want to make
note of these changes.
- Users of screen readers now see a "Skip to main content" link that
focuses the question, bypassing navigation.
- When the spinner appears, users of screen readers will hear
"Please wait."
- When fields appear due to a `show if` being triggered, users of
screen readers will hear "Additional fields have appeared."
- Users of screen readers will hear the list of sections in the
navigation bar as separate items.
- The progress bar's `aria-valuenow` is now always an integer.
- Updated the progressive disclosure recipe to use
`<details>`/`<summary>`.
- Changed the HTML of "terms" to add `role="button"` and to use a
trigger based on focus.
- Removed `bootstrap-fileinput` plugin for styling file input
elements.
- After a new screen is loaded, the focus will switch either to a form
field or to the text of the `question`.
- Removed the unnecessary `visually-hidden` `<legend>` messages that
provided context (e.g. "press one of the following buttons");
replaced `<fieldset>` with `<div>`.
- The `log()` function now accepts a `priority` of `aria`, which shows
a message in a `visually-hidden` `<div>` inside of `#daflash`.
### Fixed
- Fixed issue with the session id not being set in the global
variables immediately after a `new_session` is created.
- Prevented error message appearing under some circumstances when a
package is deleted.
## [1.10.7] - 2026-08-01
### Fixed
- Downgraded `nltk` in order to avoid requiring a system upgrade.
## [1.10.6] - 2026-08-01
### Added
- New permission `read_packages` so that users without
`admin` or `developer` privileges can use the API to obtain a list
of packages.
### Changed
- Upgraded Python dependencies. Note that if you are using third-party
Python packages, you may encounter dependency conflicts. It is
possible that your interviews will need to be updated.
- Python 3.12 or later is now required, so if you are running an old
Docker container with Python 3.10 or earlier, you cannot upgrade
beyond version 1.10.5.
- Upgraded Font Awesome and CodeMirror.
- `hide continue button` and `disable continue button` now accept a
YAML boolean rather than only a Python expression.
- The `submit` screen part can be specified on a `question`.
- `DAOAuth` can be configured with `extra_auth_args` and
`url_style_short`.
- The Package Management page shows the same report as the
Configuration page.
### Fixed
- Action buttons were not listed in data version of a question.
- Bug where the use of `value()` could raise an exception.
## [1.10.5] - 2026-07-13
### Fixed
- Issue with `_reorder_buttons()`.
- `role="alert"` not added to flash messages that are part of the
HTML.
## [1.10.4] - 2026-07-06
### Fixed
- Issue with the Playground variables list not being able to be
generated.
## [1.10.3] - 2026-07-04
### Fixed
- Issue with `table css class`.
- Issue with Google Drive and OneDrive sync.
## [1.10.2] - 2026-07-01
### Added
- The `enable translation` Configuration directive.
### Changed
- If `enable playground` is false, the Playground page, the Utilities
page, and other code associated with interview development will not
be loaded.
### Fixed
- Problem with Celery not being fully configured.
- Bug in fax configuration.
- Added input santiation on admin-only endpoint /logfile.
- Added Twilio verification to /sms endpoint.
## [1.10.1] - 2026-06-29
### Fixed
- Errors related to add-on package installation.
## [1.10.0] - 2026-06-28
### Added
- The `enable api`, `enable email server`, `enable object storage`,
`enable daglobal`, `enable json storage`, `enable sms interface`,
`enable faxing`, and `enable tts` Configuration directives.
- The `pip trusted host` Configuration directive.
### Changed
- The internal organization of the source code has changed
significantly. Documented functionality has not changed, but if your
code imports undocumented names, you may find that the name has
moved to another module. Testing your interviews on a development
server is recommended before upgrading a production server.
- `pluggy` is now used to give `docassemble.base` access to
functionality in `docassemble.webapp`.
- Flask blueprints are now used for features of
`docassemble.webapp`. Configuration directives like `enable
training` and `allow log viewing` will now prevent the importing of
the code underlying the disabled features. Turning off these
features can decrease uWSGI memory usage by 29%.
- SQLAlchemy models now inherit from `sqlalchemy.org.DeclarativeBase`
rather than `db.model`.
- Celery tasks are now invoked using signatures.
- Added a dependency on `pyopenssl` not because it is needed, but
because a version conflict with `cryptography` will prevent the
web application from starting.
### Fixed
- Issue with `list collect` and `input type: hidden`.
## [1.9.13] - 2026-06-03
### Fixed
- Issue with converting fillable PDFs to PDF/A.
## [1.9.12] - 2026-05-11
### Fixed
- Issue with `Flask.SocketIO`.
## [1.9.11] - 2026-05-08
### Fixed
- Issue with `value()` and `undefine()` on systems running Python 3.13
or above.
## [1.9.10] - 2026-05-03
### Fixed
- Pickle error introduced in 1.9.9.
## [1.9.9] - 2026-05-03
### Changed
- In the Docker image, the underlying operating system is upgraded
from 24.04 to 26.04, the version of PostgreSQL in the image is
upgraded from 16 to 18, and the version of Python in the image is
upgraded from 3.12 to 3.14. Note that Python 3.14 may raise errors
that Python 3.12 did not, or it may change which versions of
third-party Python packages are available to be installed. (System
upgrade required.)
- `unoconv` has been replaced with `unoserver`. The `enable unoconv`
and `ENABLEUNOCONV` settings have not changed names. (System upgrade
required.)
- When images are included in documents assembled using Pandoc or
`docx template file`, alt text is included.
- The `prevent going back` modifier can now refer to a Python
expression.
### Fixed
- The use of keymaps with CodeMirror was only functional for emacs; it
is now functional for `emacs`, `vscode`, or `vim`.
- Raw attachments are now included when attachments are downloaded as
a ZIP file.
## [1.9.8] - 2026-04-12
### Changed
- The instructions for writing Python modules that define `SQLObject`
have changed.
- If you include a `variables snapshot db` item in your configuration,
and there is any problem connecting to the database, the web
application will not start, and you will need to fix the problem
using command line tools, just as if you made a mistake in the `db`
configuration.
### Fixed
- Typo in `setuptools` specification of packages generated by the
Playground.
- Non-thread-safe methods of loading external databases in the
`SQLObject` and `variables snapshot db` features.
- Issue with converting Markdown to PDF when the Markdown includes
tables, with the latest version of Pandoc.
- Issue with `alembic` disabling `logging`.
- The `numpy` and `scipy` packages were inadvertently upgraded,
preventing Python 3.10 users from upgrading.
- The `include_docx_template()` function did not handle non-string
keyword arguments.
## [1.9.7] - 2026-04-05
### Changed
- Removed unnecessary Python dependencies from `docassemble.webapp`
and `docassemble.base`.
- Removed all dependencies from `docassemble.demo`. If you want to be
able to run all of the demo interviews, you will need to install
`ics`, `openai`, `anthropic`, `gspread`, and `matplotlib` manually.
- Upgraded `setuptools`.
- Improved debugging of `CustomDataType` JavaScript.
- Made changes to the code for compatibility with Python 3.13.
- Changed the default value of `user can request developer account` to
`False`.
- Allowed `auth0` configuration to set an `audience domain` different
from the `domain`.
### Fixed
- Problem with NGINX log rotation.
## [1.9.6] - 2026-03-27
### Fixed
- Removed dependency on `telnyx`.
## [1.9.5] - 2026-03-24
### Fixed
- Issue with upgrade of `werkzeug` and `flask`.
## [1.9.4] - 2026-03-24
### Changed
- Upgraded `werkzeug` and `flask`.
### Fixed
- Issue introduced in 1.9.3 that prevented the `nltk` daemon from
starting.
## [1.9.3] - 2026-03-23
### Added
- Files in `docassemble.demo` for the recipe in the documentation
that demonstrates the `AIHelper` class.
### Changed
- The `objects from file` block and the `objects_from_file()` function
now return a `DAList` instead of a `list` when `use_objects` is
true and a list of items is encountered in the data structure.
- Downgraded `numpy`, `scipy`, and `scikit-learn` to allow Python 3.10
to continue to be used.
- Upgraded `bootstrap-fileinput`.
- Migrated the websockets interface from `eventlet` to `gevent`.
- Moved code that depends on `nltk` into a daemon in order to optimize
restart speed (system upgrade required).
- Moved some package loads from server start time to runtime in order
to optimize restart speed.
- Updated restart process so that code runs in parallel.
- A restart after a Configuration change no longer runs
`create_tables`.
- Applied security updates recommended by `dependabot`.
- Upgraded `docxcompose`.
- Updated documentation links and test scripts.
- Changed names of buttons in the Profile settings.
### Fixed
- Truncated `pip` logs to avoid errors during upgrade process.
- Issue with default values of custom data types after a `validation
code` validation error.
## [1.9.2] - 2026-01-27
### Added
- The `allow external auth to bypass local auth` Configuration
directive.
### Changed
- The `.bates_number()` method of `DAFile` now accepts parameters
`offset_horizontal`, `offset_vertical`, and `font_size`.
- Upgraded `azure-core`, `wheel`, `numpy`, and `pyasn1`.
- Downgraded `contourpy` to avoid requiring Python 3.11.
## [1.9.1] - 2026-01-11
### Fixed
- Applied security-related patch upgrades.
- Issue with `include_docx_template()` used in a Celery process.
## [1.9.0] - 2025-12-31
### Added
- The `.cancel_add_or_edit()` method of `DADict`.
- The methods `_edit_button()`, `_delete_button()`, and
`_add_action_button()` of the `DADict` class, so that `DADict` can
be subclassed for customizing the appearance of these buttons.
- The `remove()` class method of `DAGlobal` that can be used to delete
any key from the data store, for any given base.
### Changed
- Upgraded Python dependencies. Note that if you are using third-party
Python packages, you may encounter dependency conflicts. It is
possible that your interviews will need to be updated.
- Upgraded Font Awesome, Bootstrap, and CodeMirror.
- Use process-local rather than thread-local variables to store global
information in the context of the Celery background task system.
- The `plain()`, `bold()`, and `italic()` functions will return the
empty string if given blank space.
- Added additional information to Mako error messages.
- The `.complete_elements()` method of `DAList` and `DADict` now
returns an object of the same class, rather than a pure Python data
structure.
- The Google Drive sync and OneDrive sync result page now wait for
the server to finish restarting.
### Fixed
- Avoided `KeyError` error messages related to `gathering_mode` and
`save_status`.
- Avoided translation of non-user-facing Mako template text in field
modifiers.
- Fix to dictionary gathering.
- The restart process from the Configuration page could show a 502
error to the user when the Python app is behind a reverse proxy.
- The Microsoft Azure mail sending feature did not support sending to
bcc recipients.
## [1.8.18] - 2025-11-01
### Fixed
- Bugs with the Monitor system introduced in 1.8.0.
- Bug where generated `pyproject.toml` files contained the license in
the wrong place.
## [1.8.17] - 2025-10-05
### Added
- Support for using Basic Auth when using Gotenberg.
### Fixed
- Make symbolic links in `files` relative instead of absolute.
- Prevent the `temporary` and `once_temporary` parameters to
`interview_url()` and `interview_url_action()` from passing through
to the URL.
- When single-server mode is in use and the `db` database is remote,
avoid creating or restoring the `db` database locally.
- The daily cron job should backup the local PostgreSQL database even
if there is a non-PostgreSQL database as the main database.
- Only call `supervisorctl` if `supervisord` is in use.
- Incorrect output filename when using CloudConvert.
## [1.8.16] - 2025-09-27
### Fixed
- Issue introduced in 1.8.15 related to unpickling Celery return
values.
## [1.8.15] - 2025-09-27
### Added
- The `celery task routes` Configuration directive.
### Changed
- The `mmdc()` function in `docassemble.base.mermaid` is
deprecated. The module will be removed in a future version.
### Fixed
- The `continue button field` information was not submitted when
`maximum image size` feature was used.
- If a signature image after trimming is very small, the trimmed
version is not used.
## [1.8.14] - 2025-09-15
### Added
- The `login_method` and `phone_number` attributes of `user_info()`.
- The `log to std` Configuration directive to log all output to
STDERR.
- The `enable training` Configuration directive for disabling the
Train page.
- The `enable monitor` Configuration directive for disabling the
Monitor page.
## [1.8.13] - 2025-09-07
### Added
- On the Playground Packages page, if the GitHub button is clicked,
developers can deselect particular files from the commit.
### Changed
- The number of fonts installed in the underlying Ubuntu operating is
reduced to the minimum fonts required by `libreoffice`, `texlive`,
`ttf-mscorefonts-installer`, `fonts-liberation`, and
`fonts-dejavu-core`. The removal of these fonts may affect DOCX to
PDF conversion, especially if you are using languages other than
English. If the environment variable `DAEXTRAFONTS` is `true`, then
these additional fonts will be installed during container
startup. You can also install particular fonts using the `PACKAGES`
environment variable. This change only takes effect on new
installations or system upgrades.
- Likewise, the Google Fonts will now be installed when the container
starts, and only if the environment variable `DAGOOGLEFONTS` is
`true`. This change only takes effect on new installations or system
upgrades.
### Fixed
- Made `ruamel.yaml` objects thread-local due to issues on `arm64`
architectures.
## [1.8.12] - 2025-09-01
### Added
- The `'wait'` option for the `command()` function, which causes the
user's web browser to wait a number of seconds and then query the
interview logic again.
- The `BackgroundAction` object for calling `background_action()` and
retrieving the result transparently.
- The `[NO_EMOJIS]` command to turn off interpretation of inline icons
(e.g. `:face-smile:`).
### Fixed
- Bug with `interview delete days by filename` when days are `0`.
- Service account authentication with `DAGoogleAPI` is now using a
different method that does not cause `google-api-python-client` to
trigger an exception.
## [1.8.11] - 2025-08-21
### Changed
- The `action_call` JavaScript function takes a fifth parameter
(`readOnly`). If set to a true value, the server processes the
action without saving any changes to the interview answers, and
without preventing other concurrent processes from accessing the
interview answers.
- The `/api/session/action` takes an optional data value `read_only`,
which behaves similarly.
- The `run_action_in_session()` function takes an optional keyword
parameter `read_only`, which behaves similarly.
### Fixed
- Issue with `use nginx to serve files` on the Logs page.
- Issue with input validation on the License field of the Playground
Packages page.
## [1.8.10] - 2025-08-18
### Changed
- When `set_save_status('ignore')` is called, the lock on the
interview answers will be released. After
`set_save_status('ignore')` is called, the save status cannot be
changed to something else.
### Fixed
- Issues with compatibility with Python 3.10.
## [1.8.9] - 2025-08-17
### Changed
- Incorporated `szimek/signature_pad` JavaScript into the operation of
`datatype: signature`.
### Fixed
- Updated advanced usage of `address autocomplete` in light of the
switch to the "Places API (New)" API.
## [1.8.8] - 2025-08-15
### Fixed
- Error when installing add-on packages created by earlier versions.
## [1.8.7] - 2025-08-14
### Added
- Support for single-sign-on with Authentik.
- Support for sending email with Microsoft Azure using the Graph API.
### Fixed
- On the Playground Packages page, adapted the input validation on the
License field to better align with PEP 621 and PEP 639.
## [1.8.6] - 2025-08-12
### Fixed
- Issues with comboboxes.
## [1.8.5] - 2025-08-11
### Fixed
- Issue with pyproject.toml files.
- Issue with comboboxes.
## [1.8.4] - 2025-08-10
### Fixed
- Revised Redis code for compatibility with Redis servers.
- Revised datetime code for compatibility with Python 3.10.
## [1.8.3] - 2025-08-10
### Fixed
- Downgraded `scipy` and `contourpy` for compatibility with Python 3.10.
## [1.8.2] - 2025-08-10
### Fixed
- Downgraded `numpy` for compatibility with Python 3.10.
## [1.8.1] - 2025-08-10
### Fixed
- Dependency problem with 1.8.0.
## [1.8.0] - 2025-08-10
### Added
- The `javascript defer` Configuration directive. If set to `True`,
then the `<script>` tags that load JavaScript files will have the
`defer` tag set. This is recommended for speeding up the loading of
the page.
- The `use nginx to serve files` Configuration directive. If set to
`True`, then file downloads will be served in a more efficient
manner, transferring the load from Python to NGINX to process the
contents of the file. Since this feature requires a change to the
NGINX configuration file template, a system upgrade is required if
you want to enable this feature. Alternatively, you can manually
edit the NGINX configuration file template.
- Methods `_reorder_buttons()`, `_edit_button()`, `_delete_button()`,
and `_add_action_button()` of the `DAList` class, so that `DAList`
can be subclassed for customizing the appearance of these buttons.
- The Configuration directive `use places api new` under `google` for
enabling use of the Google "Places API (New)."
### Changed
- Upgraded Python dependencies. Note that if you are using third-party
Python packages, you may encounter dependency conflicts. It is
possible that your interviews will need to be updated.
- Upgraded Font Awesome, Bootstrap, and CodeMirror.
- The default action for the menu/navigation bar `exit link` is now
`leave` (which leaves interview answers intact) instead of `exit`
(which deletes interview answers).
- On the Playground Packages page, the License must now contain a
valid SPDX identifier for a license, like `MIT` or `GPL-3.0`.
- Changed the behavior of the `.get()` method of `DADict` so that its
behavior does not differ from the `.get()` method of `dict`.
- Packages created from the Playground will now have a
`pyproject.toml` file as well as a `setup.py` file.
- When packages are imported, the `pyproject.toml` file will be
parsed, if it is present.
- The Google "Places API (New)" is now supported for the `address
autocomplete` feature. For backwards compatibility, this is not
enabled by default. Set `use places api new: True` under the
`google` directive in the Configuration to enable use of the new
API. You will need to enable the API in your Google Cloud
Console first.
- When `use places api new` is `True`, then when `address
autocomplete` is used and there is a field for the `zip` attribute
of the `Address`, it will be populated with the ZIP+4, if available.
- When `datatype: ajax` is used, the button on the input element is
non-functional.
- When the `script` modifier on a `question` is used, the contents
should no longer contain `<script>` and `</script>` tags; if present
they will be stripped out. Using `script` modifiers is discouraged;
it is better to use a JavaScript file and listen for the
`daPageLoad` event.
- Replaced `variables_snapshot_connection()` with
`variables_snapshot_connect()`. For backwards compatibility,
`variables_snapshot_connection()` still works the same way.
### Fixed
- Adjusted for Sendgrid reversing order of attachments.
## [1.7.7] - 2025-06-10
### Added
- The `describe file types` attachment modifier.
### Fixed
- Issue with retrieving the JSON representation of `question` that
uses `list collect` and `uncheck others`.
## [1.7.6] - 2025-05-23
### Added
- The `datalist` input type.
### Fixed
- Issue with `error page javascript` not running under some
circumstances.
- Issue where `depends on` would not be triggered by changes to
variables on a `list collect` screen unless the variable was the
variable being sought.
- Using `.add_action()` on a `DADict` no longer requires that the
interview logic runs `.gather()` on the `DADict`.
## [1.7.5] - 2025-05-11
### Added
- `error page` as a page type customizable in the Configuration.
### Fixed
- `rtf to docx` format did not work with standalone `attachment`
blocks.
- Issue with popovers triggered by `focus` events.
- Issue with `list collect` and `show if`.
## [1.7.4] - 2025-04-30
### Fixed
- Accessibility issues with help icons.
## [1.7.3] - 2025-04-25
### Fixed
- Downgraded Python packages to adjust for a Google library being
behind.
## [1.7.2] - 2025-04-24
### Fixed
- Issue with Convert API.
- Stack trace shown when not expected.
## [1.7.1] - 2025-04-13
### Added
- The `DASSLCIPHERS` environment variable and `nginx ssl ciphers`
Configuration directive for controlling the `ssl_ciphers` NGINX
configuration option.
### Fixed
- Problem when `valid formats` with `code` was used with `docx
template file`.
## [1.7.0] - 2025-04-09
### Added
- Under `attachment`, `valid formats` can now contain `code`.
### Changed
- Upgraded Python dependencies. Note that if you are using third-party
Python packages, you may encounter dependency conflicts. It is
possible that your interviews will need to be updated.
- Upgraded Font Awesome, Bootstrap, and CodeMirror.
- In the container, upgraded Python version from 3.10 to 3.12.
- Dropped Twitter sign-on support.
- The Playground Packages page, when generating a package, will
specify a dependency using a GitHub URL if the package was loaded on
the server from a GitHub URL.
## [1.6.5] - 2025-03-04
### Fixed
- Bug introduced in 1.6.4, affecting miniOrange users only.
## [1.6.4] - 2025-03-01
### Added
- The `allow external auth with multiple methods` Configuration
directive.
- The miniOrange WordPress plugin external authentication method.
### Changed
- Users who registered with one external authentication method cannot
log in using a different authentication method connected to the same
email address unless the `allow external auth with multiple methods`
Configuration directive is set to `True`.
### Fixed
- Trapped exception where service account credentials contain invalid
JSON.
## [1.6.3] - 2025-02-16
### Fixed
- Setting `label above field: False` did not work as intended.
- Running `.geocode()` will now set the `zip` attribute.
## [1.6.2] - 2024-12-24
### Fixed
- The `next` parameter on the registration page was not being
followed.
- HTML generated by `add_action()` and `action_button_html()` was not
consistent.
## [1.6.1] - 2024-12-07
### Fixed
- Rendering issue with radio buttons and checkboxes on Safari.
## [1.6.0] - 2024-11-30
### Added
- The `filter`, `sort key`, and `sort reverse` options for `table` to
allow the presented table to be filtered and sorted.
### Changed
- Upgraded Python dependencies. Note that if you are using third-party
Python packages, you may encounter dependency conflicts. It is
possible that your interviews will need to be updated.
- Upgraded Font Awesome, CodeMirror, and Socket.IO.
### Fixed
- The Share button in the Playground provided a relative URL instead
of an absolute URL.
## [1.5.16] - 2024-10-16
### Changed
- The `address autocomplete` will now populate the `.sublocality`
field with `sublocality`, `sublocality_level_1`,
`sublocality_level_2`, whichever is first available.
- URL parameters `utm_source`, `utm_medium`, `utm_campaign`,
`utm_term`, and `utm_content` will be preserved when analytics is
configured and the `/run` endpoint is used.
- Upgraded Pandoc to version 3.5.11 (system upgrade required).
## [1.5.15] - 2024-10-13
### Fixed
- Problem with the `wrap lines in playground` feature.
## [1.5.14] - 2024-10-03
### Fixed
- Issue with `objects` block when a variable name is index of an
attribute.
## [1.5.13] - 2024-10-01
### Fixed
- Issue with `object_checkboxes` and `object_multiselect` when used as
elements in a `DAList`.
## [1.5.12] - 2024-09-30
### Changed
- Upgraded pikepdf.
### Fixed
- Issue with `object_checkboxes` and `object_multiselect` when used as
elements in a `DAList` or `DADict`.
## [1.5.11] - 2024-09-26
### Changed
- Different appearance when a document is reduced to a thumbnail
image.
### Fixed
- When a new Playground is initialized, the name of the YAML file was
missing in the sidebar dropdown and the share link.
- When a "flash" message with the Bootstap color "success" was shown
at the top of the screen, the timeout for removing the message
could remove messages that the user had not yet had the opportunity
to read.
- In a `review` screen, error messages about invalid variable names
were not shown in all cases where the variable name was invalid.
## [1.5.10] - 2024-09-19
### Added
- Option in the `/api/playground` GET endpoint for downloading the ZIP
file of a Playground package.
## [1.5.9] - 2024-09-18
### Fixed
- Downgraded `pikepdf` to fix problem with populating PDF fields.
## [1.5.8] - 2024-09-16
### Added
- The `.cancel_add_or_edit()` method of `DAList`.
### Changed
- The browser's use of dark mode is now remembered as part of the
session data, and screenshots in the Playground match the mode.
- Upgraded `cryptography` and `flask-cors`.
- When `docx template file` is used with `fields`, Jinja2 can now make
changes to objects in the interview answers.
### Fixed
- Replaced `pycurl` with `requests` because it was causing problems
for the `.from_url()` method of `DAFile`.
- Pressing Tab to navigate to the CodeMirror editor now focuses the
editor appropriately.
- Problem with pushing to GitHub from Playground, introduced in last
version.
## [1.5.7] - 2024-09-05
### Changed
- Migrated the text editor in the Playground and the Configuration
from CodeMirror 5 to CodeMirror 6. Searching is now accomplished
with Ctrl-f. Dark mode support is improved. The mixed-mode syntax
highlighting of Python code in `code` blocks is no longer
available. (CodeMirror 6 is a complete rewrite.) Pressing F11 for
full-screen mode and Ctrl-space for autocomplete are still
available.
- The `GoogleAPI` class can now be used with ARM processors.
- The "Share" button in the Playground now copies the hyperlink to the
clipboard when you click it.
### Fixed
- The `floating label` labels are now visible on comboboxes.
## [1.5.6] - 2024-09-01
### Added
- The `auto jinja filter` option under `features`.
### Fixed
- Adapted `syslog-ng` to Ubuntu 24.04.
## [1.5.5] - 2024-08-20
### Fixed
- Adjusted for an issue with `python-docx` and/or `docxcompose`
creating corrupt DOCX files when the DOCX template was created by
LibreOffice.
## [1.5.4] - 2024-08-20
### Fixed
- Downgraded `uWSGI` due to issues with workers not being killed
promptly during the restart process.
## [1.5.3] - 2024-08-18
### Fixed
- Upgraded `nltk` because version 3.8.2 was deleted from PyPI.
- Extended the wait time for server restarts to wait for all of the
background processes to finish restarting.
## [1.5.2] - 2024-08-16
### Fixed
- Dark mode CSS visibility problem introduced by the fix in 1.5.0 that
addressed the `focus-visible` problem.
## [1.5.1] - 2024-08-15
### Fixed
- Problem with sending email due to change in Flask-Mail.
- The effect of `sessions are unique` was changed to be more like
the effect of `require login`.
## [1.5.0] - 2024-08-14
### Added
- The `max celery processes` Configuration directive.
### Changed
- Upgraded Python dependencies. Note that if you are using third-party
Python packages, you may encounter dependency conflicts. Although
these version upgrades did not require any changes to
**docassemble** core code, it is possible that your interviews will
need to be updated.
- Upgraded Font Awesome.
- If `ask_object_type` is used and `object_type` is also set, the
`object_type` will be ignored.
- When converting PDF to PNG, the resolution will be what it would be
if the long edge of each page was scaled to 11 inches.
- The `exit link` can be set to `exit_logout` in order to log the user
out in addition to deleting the user's session.
### Fixed
- The Jinja2 `safe` filter can be used to insert content that contains
Jinja2 templating features.
- Issue with keyboard navigation where the `focus-visible` indication
was not appearing on radio buttons and checkboxes.
- On machines with a large number of CPU cores but limited memory, so
many `celery` workers could be spawned that the system's memory
could be exhausted, unless the Configuration sets a lower number of
`celery processes`. Now, the number of `celery` workers spawned by
default will not be greater than the number of gigabytes of total
memory divided by two. This limit can be overridden by setting `max
celery processes` to a different limit, or by setting `celery
processes` to a specific number of workers.
## [1.4.112] - 2024-08-02
### Changed
- The default value of a non-`required` multiple-choice text field is
now `''` instead of `'None'`. The default value when the field is
not filled out is based on its `datatype`, e.g., `0` for `datatype:
integer`. The default data type is `text`.
### Fixed
- The `rendering font` feature had been inadvertently disabled.
- Commas entered into numeric fields were causing the field not to
validate; now any invalid characters are removed.
## [1.4.111] - 2024-07-23
### Fixed
- Word sidebar uploads did not save in the selected project.
## [1.4.110] - 2024-07-22
### Added
- The option of giving an item under `review` a `css class`.
### Changed
- The `bg-secondary-subtle` class is now used place of `bg-light`
since it has a better appearance in dark mode.
### Fixed
- Actions in the `menu_items` were not launched using Ajax.
- If `ask_object_type` is used, the `object_type` will be set to
`None`.
- When `hide corner interface` was used, the `navigation bar html` was
not shown.
## [1.4.109] - 2024-07-12
### Fixed
- Bug related to Playground package generation, introduced in 1.4.108.
## [1.4.108] - 2024-07-10
### Changed
- The standard `.gitignore` can be customized with the Configuration
directive `default gitignore`.
- When using `_use_jinja2=False`, the DOCX file is still processed for
images and other global elements.
### Fixed
- Missing method `.age_in_months()`.
- The `get_user_info()` function returned `None` if the user was not
logged in, even if anonymous users are given the permission to
access user information.
- Text analysis algorithm received insufficient information when the
`question` is represented as data.
- The `modtime` of entries created or modified by
`store_variables_snapshot()` was inconsistent because initial
entries used the default PostgreSQL datetime, and entries that were
changed used `datetime.datetime.utcnow()`.
- An exception could arise in rare circumstances due to
interview-specific settings being accessed by a function that was
called outside of the context of a particular interview.
## [1.4.107] - 2024-06-10
### Changed
- The `attachment options` block now supports setting default
`metadata` for attachments.
- ZIP files generated by the Packages page of the Playground contain a
standard `.gitignore`.
### Fixed
- Problems with Google Fonts affecting Markdown document assembly
(system upgrade required).
- Problem with form validation in the Packages folder of the
Playground.
## [1.4.106] - 2024-06-08
### Added
- The `manual` feature of `attachment`, which allows a `DAFile` to be
attached to an `attachment`.
- The `privileges` and `permissions` attributes of the `user_info()`
function.
- The `request_url` attribute of `current_context()`. This returns a
dictionary containing the elements of the URL of the currently
executing request. Note that this URL does not always match the URL
that the user sees in the navigation bar in the browser, because
many requests are Ajax requests. The dictionary keys are `args`,
`base_url`, `full_path`, `path`, `scheme`, `url`, `url_root`.
- A `__config__` variable is now available when using `# use jinja` in
interview YAML files so that items in the Configuration are
accessible.
### Changed
- The `validate()`, `transform()`, and `default_for()` methods of a
`CustomDataType` are now called with a third positional parameter
that is a dictionary containing the data attributes for the given
field. This change is backwards-compatible, so if your method does
not expect the additional positional parameter, it is not called
with the additional positional parameter.
### Fixed
- In the Playground, variables representing errors defined by `except`
statements showed up as undefined variables.
- If `# use jinja` is enabled and there were Jinja2 errors in the
template, the Playground page could not load.
## [1.4.105] - 2024-06-01
### Changed
- The `validate()`, `transform()`, and `default_for()` methods of a
`CustomDataType` are now called with an additional positional
parameter that is the name of the variable as a string. This change
is backwards-compatible, so if your method does not expect the
additional positional parameter, it is not called with the
additional positional parameter.
- When using a `datatype` that references a `CustomDataType`, `data`
attributes will be added to the `<input>` element containing the
values of field modifiers `minlength`, `maxlength`, `min`, `max`,
`step`, `scale`, `currency symbol`, and `field metadata`, if those
modifiers are present. The `field metadata` are available as a JSON
string in the `field-metadata` data attribute.
### Fixed
- Bug that prevented the Configuration directive `initial dict` from
functioning.
- Added `aria-required` and moved `role="radiogroup"` for
accessibility compliance.
- Bug with `button style` Configuration parameter.
## [1.4.104] - 2024-05-06
### Changed
- Changes to HTML for accessibility purposes.
- Upgraded Bootstrap to version 5.3.3, jQuery to version 3.7.1, Font
Awesome to verson 6.5.2, and Pillow to version 10.3.0.
- Upgraded Ubuntu to 24.04 and Pandoc to version 3.1.13 (system
upgrade required).
### Fixed
- Bug with `progress bar multiplier`.
- CSS error with radio buttons and labels above fields.
## [1.4.103] - 2024-04-29
### Added
- Interface in the Word sidebar for changing the Playground project.
- Additional language functions accessible through methods on standard
classes.
- `attachment` object of the result of `current_context()` containing
information about the attachment currently being assembled.
### Changed
- Changes to HTML for accessibility purposes.
### Fixed
- PostgreSQL error in multiserver configuration when two servers try
to delete a package at the same time.
- The `ask_object` feature did not work when `new_object_type` was
used with `.using()`.
## [1.4.102] - 2024-03-18
### Fixed
- Bug with `ip address ban enabled`.
## [1.4.101] - 2024-03-15
### Added
- The `noun_is_singular` keyword parameter to the `noun_plural()`
function.
### Changed
- The `date_difference()` function's `describe()` method will now
describe times.
- In error messages from YAML parsing, fall back to displaying YAML
with `repr()` if displaying the YAML as YAML fails.
### Fixed
- Bug with `ip address ban enabled`.
- Bug with displaying interview logic history.
## [1.4.100] - 2024-03-07
### Fixed
- Problems with comboboxes and `disable others`.
- Problem with TIFF to PDF conversion not using compression.
- Problem with `show if` when comparing a `variable` to the empty
string.
- An empty `js show if` caused the field not to be shown, instead of
being ignored.
## [1.4.99] - 2024-03-02
### Changed
- `DAWeb` no longer requires the `data` parameter to be a dictionary;
it will pass the `data` parameter directly to `requests`.
- Upgraded `redis`, `celery`, `aiohttp`, and `Pillow`.
## [1.4.98] - 2024-02-29
### Fixed
- Issue with one of the fixes in 1.4.97.
## [1.4.97] - 2024-02-29
### Added
- The `pdftk` option under `attachment` and `features` for filling in
`pdf template file` attachments using pdftk instead of pikepdf.
### Changed
- During the Docker image build process, `pandoc` will run once, so
that the first user to assemble a document with `pandoc` will not
experience slowness due to LaTeX needing to generate files.
- Appearance streams will be generated when using `pdf template file`.
- Error messages related to problems in the source code will no longer
be displayed to the user unless the user is an administrator or
developer. If you want these error messages to appear to all users,
set `debug: True` and `development site is protected: True` in the
Configuration. The error messages will be available in
`docassemble.log`.
### Fixed
- Fixed security issue identified by Riyush Ghimire, affecting
versions 1.4.53 to 1.4.96, that could cause contents of files in the
filesystem to be revealed. This is a high severity issue and
upgrading as soon as possible is recommended.
- Fixed security issue identified by Riyush Ghimire, affecting
versions up to 1.4.96, that allowed an open redirect URL to be formed.
- Fixed security issue identified by Riyush Ghimire, affecting
versions up to 1.4.96, that would allow HTML or JavaScript
injection.
## [1.4.96] - 2024-02-14
### Fixed
- Issue with installation of SSL certificates stored on S3.
## [1.4.95] - 2024-02-04
### Fixed
- The `small screen navigation` option under `features` could not be
overridden to `True`.
- The `nice_number()` function sometimes did not properly detect
whether a number was an integer.
## [1.4.94] - 2024-01-23
### Added
- The `raw html` special field type under `fields` and `review`. This
is similar to `html` but allows modification of the structure of the
HTML in the list as a whole.
## [1.4.93] - 2024-01-20
### Added
- The `current_context()` function, which is the new function to use
in place of `user_info()` for attributes that are not related to the
logged in user. The object returned by `current_context()` also has
a new attribute, `inside_of`, which can be used to detect whether
the Python code that is currently executing is executing inside of a
particular type of document assembly process.
### Changed
- The `user_info()` function had previously provided much of the
information that the `current_context()` function now
provides. However, the name `user_info()` was not suitable for that
information. A deprecation warning will be logged if code accesses
the attributes of `user_info()` that do not relate to the logged-in
user. In a future version, accessing these attributes will raise an
exception.
- The behavior of the object returned from `user_info()` is different,
which might be a breaking change if you used `user_info()` in a
certain way. Previously, `user_info()` returned an object with
static attributes. Now, the attributes of the object returned by
`user_info()` are dynamic attributes (using the `@property`
decorator). If you set `u = user_info()` and `u` becomes a variable
in the interview answers, `u.id` will always return the user id of
the current logged-in user, not necessarily the user who was logged
in when `u` was defined.
- The new function `current_context()` works the same way. If you set
`c = current_context()` then `c.current_section` will be the current
section at the time the attribute was accessed, not the time that
`c` was defined.
- Another difference in the way that `user_info()` operates is that if
the user is not logged in, the attributes other than `first_name`
and `last_name` will exist, but will be `None`. Previously, those
attributes did not exist, and accessing them would raise an
`AttributeError`. If you want to test whether the user is logged in,
use `user_logged_in()`.
### Fixed
- A non-`required` boolean field value that was not filled out was set
to `False` instead of `None` as the documentation specified. The
default value is now `None`.
- The `words` directive was unable to load translations from
Playground packages.
## [1.4.92] - 2024-01-17
### Fixed
- The `reconsider` and `need` modifiers were not active on all
`mandatory` blocks.
- The `depends on` and `on change` features did not work on all `code`
blocks executed during `process_action()`.
- Playground raised exception if `playground examples` is an empty
list.
## [1.4.91] - 2024-01-07
### Changed
- Improved error messages when Python code contains errors.
### Fixed
- Error when YAML parsing did not succeed.
## [1.4.90] - 2024-01-05
### Fixed
- Error when YAML parsing did not succeed.
## [1.4.89] - 2023-12-23
### Added
- The `invite_user()` function.
### Changed
- Upgraded dependencies.
- The `/api/user/<user_id>` PATCH endpoint now allows changing whether
the user is `active`.
- Changed the background color of the signature canvas to grey when
dark mode is in effect.
## [1.4.88] - 2023-12-03
### Changed
- When `min` or `max` is used with a `datatype: date` or `datatype:
datetime`, the minimum and/or maximum are now indicated in the HTML
so that browser widgets know what they are.
- When the browser uses dark mode, the red asterisk is less bright.
- When `grid` is used, items are aligned to the bottom of the row.
### Fixed
- Bug in `/api/playground_install`.
- Fixed formatting in `grid` mode when label is empty.
- When browsing other users' playgrounds, the Download and GitHub
buttons in the Packages folder did not work as intended.
## [1.4.87] - 2023-11-28
### Changed
- Set a specific maximum number of open file descriptors (1048576) to
avoid problems with `ulimit -n` being too high on some kernels
(system update required).
## [1.4.86] - 2023-11-26
### Added
- The `disabled` field modifier for showing a field on the screen that
is always disabled.
- The `under text` field modifier for showing help text under a form
field in a smaller font.
- The `item grid` field modifier, which is similar to the `grid`
modifier, but affects whether the choices in a list of radio buttons
or checkboxes wrap.
- The `developer can install` Configuration directive.
- The `debug startup process` Configuration directive for logging the
timing of the different parts of the `uwsgi` loading process.
- The `current_section` attribute of the output of `user_info()`.
- The `owner password` option under `attachment` for protecting a PDF
file with an owner password.
- Support for login using Zitadel.
### Changed
- The CSS for `<code>` elements no longer collapses spaces.
### Fixed
- The UI of fields with `datatype: range` were not shown as disabled
even if the underlying `<input>` was disabled.
- Sync and Run did not work correctly in some browsers because of a
JavaScript timing issue.
- Module files in zipped packages were not detected unless a root
directory was used.
## [1.4.85] - 2023-11-02
### Added
- The `run oauthlib on http` Configuration directive. You may need to
set this to `True` if you use the `oauthlib` library on a server
that uses `http://` instead of `https://`.
### Fixed
- If integration with GitHub goes wrong, the user could continue to
see errors after correcting the configuration.
## [1.4.84] - 2023-10-26
### Fixed
- An incorrect `instanceName` was used when a variable name in an
`objects`, `objects from file` or `data` block contained an iterator
variable.
## [1.4.83] - 2023-10-25
### Added
- The `default rendering font` Configuration directive. This allows
you to specify a system-wide font that should be used for rendering
form fields when using an `attachment` with `pdf template file` and
`editable: False`.
### Changed
- The feature from 1.4.79, described below as "`pdftk` will render
form fields to text using the `msttcorefonts` version of Arial,
which has better support for Unicode characters," has been removed
because with this font, `pdftk` rendered text too small when the
font size in the field was "Auto." To reenable this feature, specify
a `default rendering font` in your Configuration, or specify a
`rendering font` with each attachment.
### Fixed
- Error when non-`str` values are used as `datatype: checkboxes`
values.
- The `css class` of a `question` persisted after the Continue button
was pressed.
## [1.4.82] - 2023-10-15
### Changed
- Selected dependencies upgraded.
- Users whose accounts are made inactive will be immediately logged
out.
- When a relative file reference is given to `bootstrap theme` in
`features`, the reference will be resolved using the package in
which the immediate YAML file is located, rather than the package of
the main interview file.
- The `docassemble.webapp` package now depends on `certbot`,
`certbot-apache`, `certbot-nginx`, and `acme`, even though it does
not use these packages. This is because upgrades to
`docassemble.webapp` may upgrade dependencies of `certbot` and cause
`certbot` to fail.
### Fixed
- The web server that responds while docassemble is starting up no
longer returns 404 errors (system upgrade required).
- Incorrect input validation of email field when editing profile of a
user who uses the phone-based login method.
## [1.4.81] - 2023-10-03
### Fixed
- Test for appropriate system version before using a `rendering font`.
### Changed
- Added clipboard button next to API key.
- Avoid exceptions when invalid values are passed to `ordinal()` and
`ordinal_number()`.
## [1.4.80] - 2023-10-01
### Changed
- Added error message if more than one of `show if`, `hide if`,
`disable if`, or `enable if` is used on the same field. The only
situation in which these can be combined on a single field is if one
is using the `code` form and the other is not.
### Fixed
- Inefficient JavaScript for handling nested `show if` field
modifiers.
- The input validation error message for entering a non-number did not
appear if the validation failed on the regular expression pattern.
## [1.4.79] - 2023-09-18
### Added
- The `rendering font` option to `attachment`.
### Changed
- `pdftk` will render form fields to text using the `msttcorefonts`
version of Arial, which has better support for Unicode characters.
- Updated the collection of Material Icons.
### Fixed
- Exception raised in certain circumstances when using `depends on`.
- When `hide corner interface` was used, on small screens the toggler
still showed.
## [1.4.78] - 2023-09-16
### Added
- The `pen color` modifier for the `signature` block.
- The `file css class` field modifier for `datatype: file` and
`datatype: files` fields. This can be set to `None` to disable the
Bootstrap File Input plugin for the file upload input element.
### Fixed
- Errors with the Apache web server option (system upgrade required).
- Error with `js show if` when used in conjunction with `grid`.
## [1.4.77] - 2023-09-10
### Added
- The `hide continue button` and `disable continue button` modifiers
for `question`.
- The `offset` option for the `grid` field modifier for inserting
horizontal space before a field.
### Fixed
- Error when calling `.privilege_access()` on a `DAFile`.
- Error when using social logins.
## [1.4.76] - 2023-09-09
### Added
- The `grid` field modifier for displaying fields side-by-side in a
responsive flexbox.
- The `tabular` modifier for the `review` block, which will cause the
items to be displayed in an HTML `<table>`.
- The `abbreviate` optional keyword parameter of the `states_list()` function.
### Changed
- Altered the CSS of `radio`, `yesno`, `yesnowide`, and `checkboxes`
labels so that the text will not wrap under the bullet.
- Configuration will not save if there are duplicate keys in the YAML.
### Fixed
- Avoided `KeyError` when combining `terms` and `autoterms`.
## [1.4.75] - 2023-09-05
- No changes, version advanced by accident.
## [1.4.74] - 2023-09-05
### Fixed
- Bug with `datatype: object`.
## [1.4.73] - 2023-09-04
### Added
- The `gotenberg url` Configuration directive, which allows for the
use of an external Gotenberg server for DOCX to PDF
conversion.
- The Docker environment variable `SUPERVISORLOGLEVEL`, which can be
set to `debug` so that application log messages can be viewed with
`docker logs` (system upgrade required).
### Changed
- Additional fonts are installed in the operating system to support
a greater variety of languages (system upgrade required).
- Upgraded pdftk and Pandoc (system upgrade required).
- Disabled autocomplete on login and register pages.
- The `DAFileList` is now initialized with the `complete_attribute`
set to `initialized` and the `object_type` of `DAFile`.
### Fixed
- Issue with JSON representation of the question when fields were
generated by code.
- When using Keycloak, logging out resulted in an error message due to
a change in the Keycloak code.
## [1.4.72] - 2023-08-23
### Changed
- The pseudo-fields `favorite_fruit[nota]` and `favorite_fruit[aota]`
referring to the "None of the above" and "All of the above"
checkboxes in a `datatype: checkboxes` field can now be used in a
boolean `show if`.
## [1.4.71] - 2023-08-22
### Changed
- The `val()`, `getField()`, and `setField()` JavaScript functions can
references pseudo-fields `favorite_fruit[nota]` and
`favorite_fruit[aota]` to refer to the "None of the above" and "All
of the above" checkboxes in a `datatype: checkboxes` field.
### Fixed
- Bug introduced in 1.4.70 relating to GitHub URLs.
## [1.4.70] - 2023-08-20
### Changed
- When installing a package with a GitHub URL, the
`#egg=mypackagename` feature of GitHub URLs is now respected, and
the name of the package will be extracted from `#egg` instead of
from the GitHub repository name.
- Grouped the `initialize`, `postgres`, and `redis` Supervisor
processes into a group called `main` so that they shut down
simultaneously rather than sequentially.
### Fixed
- The `js show if` feature did not work correctly when an expression
reference two different fields.
- The `auto terms` and `terms` features interfered with each other
when the same term was referenced in each.
- Bug in locale-setting code.
- The system for forcing the admin user to change their password when
the password is `password` introduced unnecessary delay on page
loads.
- The "Please wait while docassemble starts . . ." page would refresh
into an error rather than refresh into the default interview under
some conditions.
## [1.4.69] - 2023-08-15
### Fixed
- The `val()` JavaScript function erroneously returned encoded values
for `datatype: object` and `datatype: object_radio` fields. The
function has been modified so that it returns the `instanceName` of
the selected object.
- The combobox HTML did not set an `aria-label`.
- Markdown-to-HTML conversion in popover `help` text was not
full-featured.
## [1.4.68] - 2023-08-10
### Changed
- The `ldap login` feature now supports TLS and anonymous binding.
### Fixed
- Error with exporting tables to Excel, caused by the upgrade of the
Pandas dependency.
- The way that locale-related functions actually worked did not match
the way they were documented; they have been fixed so that they
match the way they are documented. The `update_locale()` function is
also now imported by default.
- Bug with handling of non-required object fields that are not
answered.
## [1.4.67] - 2023-07-28
### Changed
- Upgraded `webdriver_manager`.
- The `.delete()` method of `DAGlobal` will now exit silently if
called on a `DAGlobal` object that has already been deleted.
## [1.4.66] - 2023-07-24
### Changed
- Upgraded dependencies. Packages that might require code changes
include `selenium` (now at version 4) and `matplotlib` (see the
"Generating a graph and inserting it into a document" recipe). Due
to incompatibilities with the latest version of `markdown`, the
`mdx_smartypants` extension is no longer being used. Instead the
standard `smarty` extension is used. There are some differences
between the two extensions, such as the transformation of ellipses.
### Fixed
- Adapted code so no error will be raised if docassemble tries to
create a directory where one already exists. A race condition of
some sort seemed to be causing such errors for some users.
## [1.4.65] - 2023-07-13
### Fixed
- The `navigation: horizontal` feature was not functional.
## [1.4.64] - 2023-07-11
### Fixed
- Issue with the `NameError` exception change in 1.4.63.
## [1.4.63] - 2023-07-02
### Changed
- If a `NameError` exception arises out of code in a module file,
**docassemble** will raise an exception instead of treating the
exception as a reference to an undefined variable.
### Fixed
- Issue with using `default admin account` to set a default API key if
an external Redis server is not being used (requires system
upgrade).
## [1.4.62] - 2023-06-21
### Fixed
- Issue with administrative interviews not appearing in the menu.
- Issue with unchecked checkbox fields subject to a `show if` not
being located for purposes of placing an error message.
- Issue with failing to process false values of `object_checkboxes`.
## [1.4.61] - 2023-06-18
### Fixed
- Issues with the timing of `change` event triggers on the combobox.
## [1.4.60] - 2023-06-17
### Fixed
- Bug with `datatype: raw`.
## [1.4.59] - 2023-06-12
### Fixed
- Adapted the fix made in 1.4.58 to work correctly with objects with
random instance names.
## [1.4.58] - 2023-06-10
### Added
- The optional keyword argument `evaluate` of `force_ask()`.
### Changed
- The CSS of `signature` screens was changed so that the compact mode
only takes effect if the screen is small and has a landscape
orientation.
### Fixed
- The `value()` function (which is used by `reconsider()` and the
`reconsider` modifier) did not raise the correct undefined variable
exceptions when the variable name included variable aliases. The
code was fixed so that the exceptions raised correspond with the
exceptions that would be raised if the expression was evaluated by
Python. It is possible that interview logic in existing interviews
may rely upon the quirks of the previous version of the code, so it
is important (as it always is) to test interviews before deploying
this version in production.
- The JSON representation of a `question` did not show fields that
were generated by `code`.
- Error with the `rtf to docx` file type.
- The `instanceName` of a `DAFileCollection` object generated by an
`attachment` or `attachments` block was set to the literal `variable
name` without interpolation of variables.
## [1.4.57] - 2023-06-05
### Fixed
- Modified the change that 1.4.56 made to `force_ask()` and
`reconsider()` to work better with objects with random instance
names.
## [1.4.56] - 2023-06-04
### Added
- The `hide corner interface` option under `features`.
### Changed
- The `administrative interviews` Configuration directive now accepts
items that add custom URLs to the menu.
- `force_ask()` or `reconsider()` will now attempt to act on the
intrinsic name of the referenced variable rather than the literal
string passed to the function.
- The functions `format_date()`, `format_datetime()`, `format_time()`,
`month_of()`, `year_of()`, `day_of()`, `dow_of()`, `qr_code()` are
now available as Jinja2 filters.
- The JavaScript functions `var()`, `getField()`, `setField()`, and
`getFields()` were modified to work better with multiple choice
fields. `getField()` now returns the `<fieldset>` parent element
rather than the first input element. `val()` will return an array of
answers for a checkbox or multiselect. Object-based fields use
instance names as values.
### Fixed
- Items under `administrative interviews` will now appear for users
who are not logged in if the permissions allow anonymous users to
see the item.
- When a `datatype: checkboxes` field has `required: False`, the "None
of the above" selection does not need to be selected.
## [1.4.55] - 2023-05-21
### Fixed
- Issue with the "Run" button in the variables sidebar in the
Playground, introduced by the upgrade of Flask in 1.4.52.
## [1.4.54] - 2023-05-21
### Fixed
- Updated `setup.py` to require Python 3.10. Version 1.4.53 has been
deleted from PyPI so that users with Python 3.8 cannot upgrade past
1.4.52.
## [1.4.53] - 2023-05-21
### Added
- The `delete` keyword parameter to `set_session_variables()`.
### Changed
- Use `importlib.resources` instead of `pkg_resources`.
## [1.4.52] - 2023-05-17
### Changed
- Upgraded Flask.
- `depends on` will now invalidate dependencies.
### Fixed
- Allow use of True and False as radio button values in `pdf template
file` document assembly.
- Allow `_use_jinja2` in `include_docx_template()`.
## [1.4.51] - 2023-05-08
### Fixed
- Bug introduced in 1.4.48.
## [1.4.50] - 2023-05-08
### Fixed
- Bug introduced in 1.4.48.
## [1.4.49] - 2023-05-07
### Changed
- A `unoconv` job will not be submitted while another `unoconv` job is
still running.
## [1.4.48] - 2023-05-05
### Fixed
- Avoid exceptions based on invalid version names.
- Issue with Playground variable parser.
## [1.4.47] - 2023-04-29
### Changed
- Names for keys in the dictionary returned by
`all_variables(special='title')` now correspond with the names used
to set the values (with backward compatibility).
- Preserve capitalization when conjugating verbs.
- Upgrade `reportlab`, `docxtpl`, and `pikepdf` dependencies.
### Fixed
- Issue with file inputs not enabling and disabling.
- Bug that caused wrong exception to be raised if DOCX to PDF
conversion failed.
- Replaced `description-file` with `description_file` in `setup.cfg`.
- Error with `/restart_session` endpoint when user not logged in.
## [1.4.46] - 2023-04-19
### Changed
- Added `all` and `any` as Jinja2 filters.
### Fixed
- Issue with placement of server-side validation messages when a
custom data type has a `show if`.
## [1.4.45] - 2023-04-14
### Changed
- Failure to convert DOCX to PDF will raise an Exception.
### Fixed
- JavaScript issue with the "None of the above" checkboxes when
choice-specific `help` is applied to a checkbox choice.
## [1.4.44] - 2023-04-09
### Added
- The `bearer` authentication option for `DAWeb`.
- The `sheets_service()` method of `DAGoogleAPI`.
- Google Fonts (system upgrade required).
### Changed
- Package versions in the Packages folder of the Playground must be
valid Python version numbers.
- Upgraded `cryptography`, `redis`, and `pikepdf`.
- Upgraded Pandoc (system upgrade required).
### Fixed
- Issue with rotation of `supervisord.log`.
- Accessibility problem with toggler in the sections interface.
## [1.4.43] - 2023-03-24
### Added
- `navigation bar html` option for administrative page screen parts.
### Fixed
- Bug introduced in 1.4.42.
- Issue with `/api/resume_url` when URL parameters are provided.
## [1.4.42] - 2023-03-19
### Added
- The `revoke()` method of the object returned from
`background_action()`.
### Changed
- When listing choices in a multiple choice question, you can use
`show if` to conditionally include the choice in the list of
choices.
## [1.4.41] - 2023-03-14
### Changed
- The `check in` feature now sends two additional action arguments,
`_changed` and `_initial`. These arguments are not reported by
`action_arguments()` but can be retrieved with `action_argument()`.
- The `defined()`, `value()`, and `showifdef()` functions now accept a
keyword argument `prior` which can be set to `True` in order to
correctly handle situations where the user has just clicked the Back
button and it is necessary to know the value that a variable had
prior to the user pressing the Back button. If `prior` is `True`,
the set of interview answers that was just discarded will be
accessed first, and then the current interview answers will be
accessed. In situations where the user has not just pressed the Back
button, setting `prior` to `True` has no effect.
- The `countries_list()` and `states_list()` functions now return
alphabetically sorted results. `states_list()` returns an empty
dictionary when the `country_code` is invalid.
- When the second argument of `background_response()` is `'fields'`,
and the first argument is a dictionary of variable names and values,
the value of a dropdown field can be set to a dictionary with keys
`value` and `choices`. The `choices` will replace the options in the
dropdown for that field.
### Fixed
- Upgraded `pikepdf` and fixed issue with way it is called.
## [1.4.40] - 2023-03-07
### Changed
- The `analytics id` subdirective of `google` can refer to a list of
IDs, all of which will be configured.
### Fixed
- The `state_name()` function did not work with countries that lack
"state" abbreviations.
- Cursor was not pointer over combobox drop-down items.
- Better handling of radio buttons in PDF files.
- Support for `/` characters in GitHub branch names.
- Better method of calling `git`.
## [1.4.39] - 2023-02-22
### Fixed
- Moved the `daPageLoad` event trigger until after the setup of the
jQuery Validation Plugin.
## [1.4.38] - 2023-02-20
### Fixed
- Issue with SendGrid e-mail sending.
## [1.4.37] - 2023-02-17
### Added
- The `auto color scheme` Configuration directive.
### Fixed
- Issue with double quotation marks in variable names under `objects`
and `objects from file`.
## [1.4.36] - 2023-02-08
### Fixed
- CSS issue on small screens.
## [1.4.35] - 2023-02-06
### Fixed
- Issue with package upgrading.
## [1.4.34] - 2023-02-06
### Fixed
- Small screen menu button had wrong color.
- E-mail sending bug introduced in 1.4.33.
## [1.4.33] - 2023-02-05
### Changed
- Updated Python and JavaScript dependencies.
- Upgraded Bootstrap to version 5.3.
- Added support for using `min` and `max` with `datatype: time` and
`datatype: datetime`.
- The `data` and `data from code` blocks can be used with an `objects:
objects` modifier, which will cause the data structure to be
interpreted in the manner of `objects_from_file()`. A `gathered`
modifier is also supported.
- `continue button field` can now be used with `buttons` where one of
the items under `buttons` is `continue`.
- The Configuration directive `mail` now accepts a list of
configurations, and `send_mail()` now accepts a `config` keyword
parameter.
### Fixed
- Removed code that transformed `\\_` into `__` in Markdown.
- Ensured that dropdown options are free of HTML.
- Default values of object-based fields did not appear in all
circumstances.
- The `editable: False` option for `pdf template file` now shows
better formatting of fields.
## [1.4.32] - 2023-01-28
### Fixed
- Bug in 1.4.31.
## [1.4.31] - 2023-01-28
### Added
- The `all of the above` and `check others` modifiers for checkbox
fields.
- The `celery modules` Configuration directive.
- Recipe for calling background tasks from Flask endpoints.
### Changed
- When setting up two factor authentication with the authenticator
app, a code is shown in addition to a QR code.
- The way that `objects from file` works has changed; it is no longer
treated as a `mandatory` block, but instead acts like an `objects`
block that is called upon when a variable is needed.
## [1.4.30] - 2023-01-23
### Fixed
- Scrolling issue when moving from one screen to another.
- JavaScript bug.
## [1.4.29] - 2023-01-20
### Fixed
- Follow-up fix to 1.4.28 change regarding unicode values in
`js show if`.
## [1.4.28] - 2023-01-19
### Fixed
- The "branch" drop-down on the Package Management page was not
working on production servers.
- Follow-up fix to 1.4.26 change regarding unicode values in
`datatype: checkboxes`.
- JavaScript warning message from Google API regarding a callback
function.
## [1.4.27] - 2023-01-16
### Changed
- The `jQuery Validation Plugin` settings were adapted to always apply
validation to hidden elements.
## [1.4.26] - 2023-01-15
### Fixed
- Removed dependency on `sklearn`.
- Issue with unicode values in `datatype: checkboxes`.
## [1.4.25] - 2023-01-05
### Fixed
- Rolling backup files on S3 were copied to the wrong directory during
initialization.
- Issue with `objects from file` blocks being run repeatedly if they
are not marked as `mandatory`.
## [1.4.24] - 2022-12-30
### Added
- Option for using `show if` in `action buttons`.
### Fixed
- Error with `pdf template file` and image inclusion introduced in
1.4.21.
- Error with `.from_url()` method of `DAFile`.
## [1.4.23] - 2022-12-10
### Added
- The screen parts `continue button color`, `resume button color`,
`help button color`, and `back button color`.
- The question modifiers `continue button color` and `resume button
color`.
- Additional options `labelauty` and `labelauty nota` under the
`button colors` Configuration directive.
### Changed
- Items in multiple choice lists, when expressed as a dictionary, can
now include keys `css class` and `color`. The HTML element for the
item will have the `css class` as a CSS class. The `color` is
expected to be a Bootstrap color name. This will change the
background color of the HTML element, unless the element is an
`<option>` element. The `css class` and `color` keys have no effect
on combobox items.
- Buttons in `action buttons` can be modified with a `css class`.
## [1.4.22] - 2022-12-08
### Fixed
- Error with the `.fix_up()` method of `DAFile` introduced in 1.4.21.
## [1.4.21] - 2022-12-07
### Added
- The `suppress autofill` directive under `features`.
- The `grid classes` Configuration directive.
- The `alert html` and `alert container html` Configuration
directives.
### Changed
- Replaced `PyPDF2` with `pikepdf`.
- Bates numbering is more efficient.
- The `section` modifier now accepts Mako templating.
### Fixed
- Overzealous matching of `DAContext` variables in `data` blocks.
- Possibly remedied an inefficiency in labelauty.
- Not all object types were allowed in `data from code`.
## [1.4.20] - 2022-11-16
### Fixed
- Updated the CloudConvert API.
- Fixed typo affecting `/run/packagename/directoryname/filename`
links.
## [1.4.19] - 2022-11-13
### Added
- The `wide side by side` directive under `features`.
### Changed
- Better example code for running Alembic from a package that uses
`SQLObject`.
### Fixed
- UI error on administrative screens on mobile.
- Cancel button on Change Password page directed to the wrong place
when `show profile link: False` is in the Configuration.
## [1.4.18] - 2022-11-06
### Added
- Ability to pass options directly to the Google Places JavaScript API
when using `address autocomplete`.
- The `hidden` `input type` for defining variables that are populated
by JavaScript.
### Fixed
- The YAML on the Configuration page can now be searched in its
entirety using the web browser's search feature.
## [1.4.17] - 2022-11-03
### Added
- The `suppress login alerts` Configuration directive.
### Fixed
- Changed NGINX configuration so that requests for hostnames other
than `external hostname` are redirected.
- Changed `list collect` behavior to prevent reaching circularity
limit when quantity of items is very large.
- Issue with validation code on file fields with `show if`.
## [1.4.16] - 2022-11-01
### Fixed
- Issue with alembic not running properly during restart.
## [1.4.15] - 2022-10-31
### Fixed
- Problem with `authorized registration domains`.
## [1.4.14] - 2022-10-25
### Fixed
- Additional fix to allow the use of `table prefix` in `db`.
## [1.4.13] - 2022-10-24
### Changed
- The `include_internal` option of `store_variables_snapshot()`,
`variables_as_json()`, and `all_variables()` now controls whether
the `nav` variable is included in the output.
- The `authorized registration domains` Configuration directive now
applies to social login methods as well as username/password login.
- Increased accessibility of the `datatype: combobox` interface.
### Fixed
- Problem with the exim4 mail configuration.
- Problem when `table prefix` in `db` was used.
## [1.4.12] - 2022-10-02
### Added
- The `mms attachments` option in the `twilio` configuration.
## [1.4.11] - 2022-10-01
### Fixed
- Issues with SMS interface.
## [1.4.10] - 2022-10-01
### Added
- The `signature pen thickness scaling factor` Configuration
directive.
### Changed
- Upgraded Mako to version 1.2.2.
- The field modifiers `address autocomplete`, `label above field`, and
`floating label` can now refer to Python expressions.
- Upgraded Google OAuth.
### Fixed
- Issue with exim4's overinclusive `dc_other_hostnames` setting.
- Error with images in Markdown to DOCX conversion.
- Error with `overlay_pdf()`.
- Error with `temporary session` when user is not logged in.
## [1.4.9] - 2022-09-10
### Added
- The `voices` option of the `voicerss` Configuration.
- The `voice` keyword parameter of the `set_language()` function.
- The `auto login` Configuration directive.
- The `output_to` keyword parameter of the `.convert_to()` method of `DAFile`.
- The `output_to` keyword parameter of the `.export()` method of
`DALazyTableTemplate`.
- The `output_to` keyword parameter of `pdf_concatenate()`,
`docx_concatenate()`, `zip_file()`, `overlay_pdf()`.
- The `extract_pages()` method of `DAFile`.
### Changed
- If an attempt is made to access the contents of a `DAFile` that is
not yet initialized, the `.initialized` attribute will be
sought. The `.initialize()` method sets `.initialized` to
`True`. Thus, if you have a `code` block that calls `.initialize()`
on a `DAFile` called `myfile`, you can attach `sets:
myfile.initialized` to the `code` block and it will be called upon
if the interview logic requires the contents of `myfile`.
- When an `attachment` that has a `name` creates a `DAFileCollection`
object, the `DAFile` attributes will have their `alt_text` set to
the `name` followed by the file type in parentheses.
### Fixed
- Adjusted the `Dockerfile` so that the server can start up even if
the internet is not available.
## [1.4.8] - 2022-08-25
### Fixed
- Google Analytics JavaScript was being called in a way that used to
work but does not work anymore.
## [1.4.7] - 2022-08-24
### Added
- The `module whitelist` and `module blacklist` Configuration
directives.
- The `user profile fields` Configuration directive.
### Changed
- The `SQLObject` methods were changed so that they will raise
exceptions if there is an unexpected error.
- Upgraded jQuery Validation Plugin.
### Fixed
- Fixes to multifactor authentication to make configuration easier.
- JavaScript issues with comboboxes.
## [1.4.6] - 2022-08-13
### Fixed
- Backwards-compatibility issue involving `backports.zoneinfo`. This
is an important fix if you upgraded your system version from 1.3.x
to 1.4.x.
## [1.4.5] - 2022-08-11
### Fixed
- Exception raised due to interaction of `SQLObject` and
`create_session()`.
## [1.4.4] - 2022-08-11
### Fixed
- Bug with default values that evaluate to the empty string.
## [1.4.3] - 2022-08-09
### Fixed
- Bug in User List interface.
## [1.4.2] - 2022-08-08
### Fixed
- Unicode characters in the `id` of a `question` were not sent to the
browser as Unicode.
## [1.4.1] - 2022-08-05
### Changed
- Upgraded `docxtpl`.
### Fixed
- Problem with restarting the server when using a single-server
configuration.
## [1.4.0] - 2022-07-31
### Added
- The `floating labels` feature and the `floating label` field
modifier.
- The `root owned` Configuration directive.
- Support in the Kubernetes implementation for using a read-only file
system where all Configuration changes and package updates take
place using Docker images and the only directories on the server
that are writable are directories for storing runtime information
(e.g. PID files) or log files.
- The `ip address ban enabled` Configuration directive.
- The `old_password` parameter for `set_user_info()` and the API
endpoints for changing user information, so that the user's
encrypted data can be migrated.
- The `transform_json_variables()` function.
- Support for server-side encryption when using S3.
### Changed
- In the Docker container, the operating system is upgraded to Ubuntu
22.04 LTS and Python is upgraded to 3.10.
- `aloe` is no longer a required package. It has a dependency, `nose`,
that is not compatible with Python 3.10. Instead, `behave` is now a
required package.
- Switched to the Azure CLI for managing files in Azure Blob Storage
from shell scripts.
- A restart (e.g., saving the Configuration, installing a package)
will erase any IP address bans caused by failed login attempts.
- The API endpoints for changing information about existing users now
work with `PATCH` as well as `POST`.
### Fixed
- Links in dropdown navigation menu for mobile devices were not
clickable.
- The `session` parameter of `/api/resume_url` was not working (it was
expecting `session_id`.
- Optimized `interview_list` for cases where `action='delete_all'` and
`query` are used together.
- Unnecessary transmittal of background task result to web browser
when the `refresh` option of `background_action()` is used.
- Migration of encrypted `DAStore` objects when password is changed.
- The `set_parts()` function did not support all of the screen parts.
## [1.3.52] - 2022-07-08
### Changed
- Upgraded `atomicwrites`.
## [1.3.51] - 2022-06-18
### Changed
- Upgraded jQuery to 3.6.0.
### Fixed
- Fixed issue with comboboxes introduced in 1.3.50.
## [1.3.50] - 2022-06-11
### Added
- The `enable shared playgrounds` Configuration directive.
### Changed
- Upgraded to Font Awesome 6.1.1.
### Fixed
- In a list of fields in a `review` screen item, the `invalidate`
command was not available.
## [1.3.49] - 2022-06-09
### Added
- Example interviews relating to inserting graphs and cards.
### Changed
- Changed the name of the `explanation()` function to
`logic_explanation()`. NOTE THAT THIS IS A BREAKING CHANGE. However,
you are most likely not using the `explanation()` function, so this
probably will not matter.
### Fixed
- Cleared spurious syslog-ng error message.
- Error getting the data format of a question when `debug` is false.
## [1.3.48] - 2022-06-05
### Fixed
- Error with user profile screen.
## [1.3.47] - 2022-06-04
### Fixed
- Error parsing hostname from Redis URL.
- Number of items not preserved when pressing Back button and arriving
at a `list collect` question.
## [1.3.46] - 2022-06-03
### Added
- The `allow log viewing` (`DAALLOWLOGVIEWING`) Configuration
directive.
- The `forget_prior` keyword parameter for `force_ask()` and
`force_gather()`.
- The `_forget_prior` keyword parameter for `url_action()` and
`interview_url_action()`.
- The `forgetPrior` parameter for the JavaScript functions
`url_action()`, `action_call()`, and `action_perform()`.
- The `logoutpage` Configuration directive.
- The `allow changing password` directive.
### Changed
- Upgraded to Bootstrap 5.2.
- The `interview_url()` and `url_of('interview')` functions now accept
unqualified `i` parameters, which will be interpreted as references
to interview files in the current package.
### Fixed
- The HTML version of the error notification e-mail lacked some of the
information in the plain text version.
- The `next` parameter of `url_of()` was not functional for `leave`,
`logout`, `exit`, and `exit_logout`.
## [1.3.45] - 2022-05-27
### Added
- The `pip index url` (`PIPINDEXURL`) and `pip extra index urls`
(`PIPEXTRAINDEXURLS`) Configuration directives.
- The `allow configuration editing` (`DAALLOWCONFIGURATIONEDITING`)
Configuration directive.
- Docker environment variables `DADEBUG` (corresponding to `debug`)
and `DAENABLEPLAYGROUND` (corresponding to `enable playground`).
- The `insertion_order` option for `.true_values()` and
`.false_values()`.
### Changed
- API keys can now be passed in a header using the format
`Authorization: Bearer H3PLMKJKIVATLDPWHJH3AGWEJPFU5GRT`.
- Removed `pathlib` as a dependency.
- If `allow updates` is set to false, the `/api/package` endpoint
cannot be used to install or uninstall packages.
- If `enable playground` is set to false, the Playground-related APIs
are disabled.
### Fixed
- When a `yesnoradio` or `yesnomaybe` field is not `required` and is
not answered, the variable will now be set to `None` instead of
`False`. THIS MAY BE A BREAKING CHANGE FOR YOU if you relied on
variables being set to `False` when the user did not provide a value
for a `yesnoradio` or `yesnomaybe` field. The documentation for
`required` has always stated that the variable will be set to `None`
if the user does not provide a value, so this change brings the code
into line with the documentation.
- Error when `target_number` is not an `int` and an `.add_action()` is
triggered.
- `docassemble.base.legal` did not import all of
`docassemble.base.util`'s names.
- `set` and `follow up` were not recognized in all valid `review`
block syntax forms.
- The `to` parameter of `send_email()` and `send_sms()` did not
process a `DAList` the same way as a `list`.
- Under some circumstances, the navigation bar showed already-visited
sections as not visited.
- `error action`s resulted in unnecessary contention for access to the
interview answers.
## [1.3.44] - 2022-05-16
### Added
- The `temp_url` variant of `url_of()`, which functions like the
`/api/temp_url` API endpoint.
- The `login_url` variant of `url_of()`, which functions like the
`/api/login_url` API endpoint.
- The `overwrite` parameter for `/api/session/action`.
- The `run_action_in_session()` function.
- A Jinja2 filter called `chain` that concatenates lists or other
iterables (`itertools.chain`).
### Changed
- The `/goto` and `/auto_login` endpoints return a blank page if the
`User-Agent` header indicates that the HTTP client is a bot.
### Fixed
- Added a color conversion strategy to Ghostscript for PDF/A
compliance.
## [1.3.43] - 2022-05-11
### Changed
- Accessibility improvements.
## [1.3.42] - 2022-05-10
### Fixed
- Error in `set_session_variables()`.
## [1.3.41] - 2022-05-09
### Fixed
- `action buttons` were not called using Ajax.
- `response()` was not functional when called from an action via Ajax.
## [1.3.40] - 2022-05-05
### Fixed
- Logged-in user could not delete own interview session using
`interview_list()` without special permissions.
## [1.3.39] - 2022-04-30
### Changed
- Calling `all_variables(simplify=False, include_internal=False)` now
omits `_internal`.
- The HTML now uses `required` and `aria-required="true"` to indicate
required fields.
### Fixed
- `interview_url()` can now receive `session` without also receiving
`i` and `i` will be set to the current filename without overwriting
`session`.
- Calling `create_session()` and other functions for manipulating
other sessions could disrupt `_internal` variables in some
circumstances.
- `url_ask()` can now begin with an action.
- Error in session deletion that caused sessions not to be deleted in
some circumstances.
## [1.3.38] - 2022-04-28
### Changed
- The `permissions` system can now give privileges to `anonymous`
(non-logged in) users.
### Fixed
- Error with new Playground initialization.
## [1.3.37] - 2022-04-25
### Fixed
- Error with user registration.
## [1.3.36] - 2022-04-23
### Fixed
- Error with background tasks.
- Minor user experience issues in Playground.
## [1.3.35] - 2022-04-20
### Added
- Recipe for creating appointment invitations.
### Fixed
- Error with implicit instantiation of dictionary keys after certain
uses of `defined()` or `showifdef()`.
- Issue with populating default values in `time` fields.
- Error with obtaining API keys for non-`admin` users.
## [1.3.34] - 2022-04-19
### Fixed
- Error that interferes with package updates.
## [1.3.33] - 2022-04-19
### Fixed
- Error introduced in 1.3.32 with filenames on download.
## [1.3.32] - 2022-04-19
### Added
- The `DAGlobal` class.
### Changed
- Upgraded dependencies.
### Fixed
- Issue with CSS classes and `disable others`.
## [1.3.31] - 2022-04-13
### Fixed
- Bug in `delete_all` feature of `interview_list()`.
## [1.3.30] - 2022-04-10
### Added
- The `query` option for `interview_list()` and API endpoints like
`/api/interviews`.
- Recipes for setting screen parts and watermarking Markdown-to-PDF
files.
- The `raw_result` keyword parameter for `ocr_file()` and
`ocr_file_in_background()` when used with Google Cloud Vision.
### Changed
- SQL tables now use a uniqueness constraint on primary key columns.
- Errors with bookmarks in PDF templates will be ignored instead of
raising exceptions.
### Fixed
- Problem with the processing of `metadata` in the Markdown-to-PDF
feature.
- Issue with `__getattr__()` causing objects to be created as a result
of testing for their existence.
## [1.3.29] - 2022-04-07
### Added
- The option for using Google Cloud Vision when using `ocr_file()` and
`ocr_file_in_background()`.
### Changed
- When `new template markdown behavior: True` is set in the
Configuration (which is now part of the default initial
configuration), `template` variables do not have the `markdown`
filter automatically applied when they are used in a DOCX template
file. It is recommended that you add this to your Configuration,
and then modify your `docx template file` templates that use
`template` variables, adding ` | markdown` if necessary.
### Fixed
- Improved efficiency of system shutdown. (Requires a system upgrade.)
- Problem with Let's Encrypt certificates not renewing. (Requires a
system upgrade.)
- The `single_worker.log` file was missing from log rotation.
- Erroneous exceptions could be raised if a `DAObject` attribute name
began with `_`. Attributes can begin with `_` but they cannot begin
with `__`.
- The `DBSSLMODE`, `DBSSLCERT`, `DBSSLKEY`, and `DBSSLROOTCERT`
variables were not affected by `ENVIRONMENT_TAKES_PRECEDENCE`.
## [1.3.28] - 2022-03-26
### Added
- The `default language` specifier in `metadata`.
- Recipe for running reports.
### Fixed
- Some functions did not work in `on change` code.
- UI issue with comboboxes.
## [1.3.27] - 2022-03-20
### Changed
- Favicons not present will not be referenced in HTML.
## [1.3.26] - 2022-03-19
### Added
- The `favicon tile color` Configuration directive.
- The `favicon version` Configuration directive.
### Changed
- Favicon feature now uses the package version number when available.
- Favicon feature now supports `site.webmanifest`.
- Additional logging during server restart.
- UI accessibility improvements.
### Fixed
- Problem importing unclassified machine learning entries from JSON.
## [1.3.25] - 2022-03-16
### Changed
- `complete_attribute` can refer to a list of attributes.
### Fixed
- Markdown-to-HTML conversion was not being applied to the `pre` or
`submit` screen parts.
- `[TARGET ...]` was not working in `html`.
- Issues with the Training page.
## [1.3.24] - 2022-03-14
### Added
- The `custom datatypes to load` directive under `features`.
- The `set_variables()` function.
- The `process_objects` parameter for `set_session_variables`.
### Changed
- Support for importing and exporting `datetime.date` and
`datetime.time` objects in the JSON representation of objects.
- `input type: area` text boxes are resizable in both dimensions.
### Fixed
- Issue with `show if` and `labels above fields`.
- Issues with using SSL for external PostgreSQL and Redis connections.
## [1.3.23] - 2022-03-07
### Changed
- Upgraded CodeMirror.
### Fixed
- Error with `overlay_pdf()` introduced in the last version.
## [1.3.22] - 2022-03-05
### Added
- The `permissions` Configuration directive.
- Ability of `admin` users to create API keys with limited permissions.
- The `multi` option of `overlay_pdf()`.
- The `/api/user_invite` API endpoint.
- The `api key` option of `default admin account`.
- The `allow forgot password` Configuration directive.
### Changed
- Upgraded the `boto3` and `docxtpl` libraries.
- The Logs are now shown in a resizable `<textarea>`.
- Safer implementation of `exit link` and `exit url`.
- For safety reasons, `url_of('exit')` and similar URLs no longer
accept `next` parameters.
- The JavaScript for `CustomDataType` objects will only be inserted if
the interview uses the custom datatype.
### Fixed
- URL of exit link was being set to `/interview` in some
circumstances.
- When server-side validation failed, the fields the user saw on the
next screen were not always populated with the user's answers.
- HTML typos in `<form>` elements.
- Problem converting DOCX to PDF when `attachment` filename contained
a space.
- Inaccurate exceptions were sometimes raised when `AttributeError` or
`IndexError` exceptions arise during assembly of a DOCX file.
- Fixes to Google geocoding for situations where the latitude and
longitude are undefined.
## [1.3.21] - 2022-02-05
### Added
- The `fax provider` Configuration directive.
- Option for faxing with Telnyx instead of ClickSend.
### Changed
- The server name of a `DAFile` can be changed using `.set_attributes()`.
- NLTK data files are downloaded during the building of the Docker
image, so that the initial boot process does not require an internet
connection.
## [1.3.20] - 2022-01-25
### Fixed
- Error with the `.convert_to()` method of `DAFile`.
- Issue with display of modules in the Playground variables.
## [1.3.19] - 2022-01-17
### Fixed
- Issue with the sizing of images inside of `terms` descriptions.
## [1.3.18] - 2022-01-15
### Added
- Support for using `md` as one of the `valid formats` in an
`attachment` when using `content` or `content file`.
- The `enable unoconv` Configuration directive (requires system
upgrade). This provides a faster method for converting DOCX files to
PDF.
### Fixed
- When `raw: True` was enabled for an `attachment`, the file was not
included in e-mails sent from the user interface of the `attachment`
block.
- When `raw: True` was enabled for an `attachment`, and the
`DAFileCollection` was passed to `send_email()` or `send_sms()`, the
assembled file was not included.
- Fixed error from 1.3.17 relating to updating references.
## [1.3.17] - 2022-01-13
### Changed
- Environment variable for S3 region for use in shell scripts.
## [1.3.16] - 2022-01-08
### Changed
- Security updates to dependencies.
### Fixed
- Better support for including a variety of image types in documents
by converting the image type to PNG or EPS as appropriate.
- Problem with order of table model module loading.
## [1.3.15] - 2022-01-06
### Added
- The `TestContext` object for testing **docassemble** code from the
command line.
- The `.pngs_ready()` and `.page_path()` methods of `DAFile`, for use
when the `DAFile` is a PDF.
- The `page` and `size` parameters for the `.url_for()` method of
`DAfile`, for use when the `DAFile` is a PDF.
- The `authorized registration domains` Configuration directive.
### Fixed
- CSS error in active subsection headings.
- Error with getting status of background tasks.
- Error with videos included using `[FILE]`.
- Some API keys would not authenticate.
- Error with DAGoogleAPI.
## [1.3.14] - 2021-12-28
### Fixed
- Error in 1.3.11 related to Upgrade button.
## [1.3.13] - 2021-12-28
### Fixed
- Error in 1.3.11 related to oauth logins.
## [1.3.12] - 2021-12-27
### Fixed
- Error in 1.3.11 related to ClickSend.
## [1.3.11] - 2021-12-27
### Changed
- API keys can now only be viewed when initially obtained.
- Code that runs when a module is loading now runs in a context where
the original `admin` user is logged in.
### Fixed
- Bootstrap typo affecting alignment of dropdown menu.
- Issue with machine learning sometimes returning no results when results exist.
## [1.3.10] - 2021-12-16
### Changed
- In the Playground, pressing buttons is disabled during Ajax
requests.
- The Playground "Pull" process now uses SSH to clone repositories
when GitHub integration is enabled, unless a personal access token
is embedded in the URL.
### Fixed
- CSS error resulting in certain validation errors being invisible on
administrative pages.
## [1.3.9] - 2021-12-11
### Added
- The `/api/playground_pull` endpoint for pulling a package into a
Playground.
- The `/api/config` PATCH endpoint for updating specific Configuration
directives.
- The `/api/restart` endpoint for triggering a server restart.
- The `/api/restart_status` endpoint for monitoring the status of a
server restart.
### Changed
- The `/api/config` API endpoint now returns status code 200 on
success, not 204. The response contains a code that can be passed to
`/api/restart_status` to check on the status of the restart.
- The `/api/playground` POST and DELETE endpoints will now return
status code 200 instead of 204 if the server needs to restart. The
response contains a code that can be passed to `/api/restart_status`
to check on the status of the restart.
### Fixed
- NGINX configuration syntax.
- Better error message if Celery is used inside of Celery.
- Gave the single Celery process a unique name.
- Adjust for situation where Ajax request fails without a response.
- Fixed JavaScript errors in some Playground pages.
- Fixed issue where GitHub SSH only worked during a Playground pull if
there was an active package.
- Miscellaneous undefined variables in rarely-run code.
## [1.3.8] - 2021-12-05
### Fixed
- Issues with `show if` and `list collect`.
## [1.3.7] - 2021-12-04
### Added
- The `footer css class` Configuration directive.
### Changed
- Upgraded `pip` from 20.1.1 to 21.1. Previously, `pip` had been
deliberately downgraded because the new resolver caused `pip` to
hang. Hopefully that issue does not appear again.
- The `docassemble-os` Docker repository, which is a dependency of
this Docker repository, is now based on Ubuntu 21.10 rather than
Debian `testing`.
### Fixed
- Bug related to deleting Playground "projects" when S3 or Azure blob
storage is enabled.
- Improved method for detecting variable names in Jinja2 files.
- Increased threshold for detecting whether a server has become
unresponsive during the restart process.
## [1.3.6] - 2021-11-26
### Fixed
- Adjustments to behavior of `skip undefined` with DOCX files.
- Security update of `reportlab` dependency; incorporated `marisol`
into `docassemble.base` because of conflicting dependency.
## [1.3.5] - 2021-11-13
### Added
- Data parameters for `CustomDataType`.
- The `css class` field modifier.
### Fixed
- Adjusted CSS to fix navigation bar and required field CSS issues on
small screens.
- Prevented the enter key from submitting the form in the Playground.
## [1.3.4] - 2021-11-11
### Changed
- Upgraded from Bootstrap 4 to Bootstrap 5. This changes the HTML and
CSS significantly, so you may need to adjust your customizations and
testing scripts. Bootstrap 5 is not necessarily more "attractive"
than Bootstrap 4, but it has better accessibility.
- The Source tab is now represented by a "code" icon.
- The administrative UI was adjusted for consistency.
- Changed the appearance of help on field labels.
## [1.3.3] - 2021-11-07
### Added
- The `short logo` screen part for specifying a different `logo` for
small screens.
- The `navigation bar html` screen part for adding HTML to the
navigation bar.
- The `_screen_size` option for `action_menu_item()` for hiding menu
items depending on the screen size.
### Fixed
- Decreased the `max-width` of the interview title in the navigation
bar to avoid problems with the navigation bar wrapping onto two
lines.
## [1.3.2] - 2021-11-06
### Added
- The `DABreadCrumbs` class for displaying a breadcrumbs UI to the
user when the current question is the result of a nested action.
## [1.3.1] - 2021-11-05
### Added
- The `button colors` Configuration directive for customizing the
Bootstrap colors of buttons.
- The `label above field` modifer that puts the label above the field
for a specific field, which is preferable to using `no label` in
combination with a `note`.
- The `login link style` Configuration directive for enabling
separate "Sign up" and "Sign in" buttons in the upper right corner
instead of "Sign in or sign up to save answers."
### Changed
- Changed the default color of `review` screen edit buttons and the
"add another" button from Bootstrap `success` (green) to `secondary`
(grey).
- Added the Font Awesome pencil icon to `review` screen edit buttons.
- Substituted a different Font Awesome icon for the selected radio
button option so that it is not the same as the icon for a selected
checkbox option.
- Changed the left arrow icon in the "back to question" button so that
it matches the left arrow icon of "Back."
- Added a light grey background color behind `review` screen `button`
items to help differentiate the sections of a review screen.
- When `question help button` is used, the question-related help now
appears below the buttons, and the navigation bar help only
displays the `interview help` (if present).
- The `skip undefined` option now works with `docx template file`.
### Fixed
- Inactive sections in the `sections` sidebar are no longer `<a>`
elements that screen readers may describe as clickable.
## [1.2.108] - 2021-10-29
### Fixed
- On reset, kill zombie LibreOffice processes that might prevent
DOCX-to-PDF conversion from succeeding on the server.
- Changed order of backup to prioritize file storage over logs in case
shutdown process is terminated.
## [1.2.107] - 2021-10-26
### Fixed
- Problem with spinner staying on the screen after certain types of URL
redirects.
## [1.2.106] - 2021-10-22
### Fixed
- Fix to the filename security adjustment in 1.2.105.
## [1.2.105] - 2021-10-18
### Added
- ClickSend fax support.
### Changed
- Additional bracket expressions now valid with Jinja2 `markdown`
filter.
- The blockquote Markdown format now indented on right and
single-spaced when used the the Jinja2 `markdown` filter.
- Filename security in the Playground now allows reading existing
Playground files with names that contain spaces, although the
filename will be changed.
## [1.2.104] - 2021-10-11
### Fixed
- Issue with counting SQL results for non-admin developers.
## [1.2.103] - 2021-10-07
### Fixed
- `check in` actions were not aware of the current `x`, `i`, `j`, etc.
- Population of fields by address autocomplete did not trigger the
`change` event on the fields.
## [1.2.102] - 2021-09-28
### Changed
- Added a check during startup to see if PostgreSQL primary key
sequences have been reset and if so set their values to the maximum
value id in the table.
### Fixed
- Error getting JSON version of question involving `list collect`.
## [1.2.101] - 2021-09-21
### Fixed
- `[BEGIN_CAPTION]` in HTML mode now behaves like `[BEGIN_TWOCOL]` in
that the columns are converted from Markdown and inserted in the
table as paragraphs.
## [1.2.100] - 2021-09-14
### Changed
- Added descriptive log messages to `initialize` service.
- Traceback now included in API when error message is "failure to
assemble interview."
### Fixed
- Issue with package update screen being unresponsive under some
conditions due to HTTP timeout.
- Issue with duplicative entries in `install` table.
- Default in multiple choice question not shown when selected value
was `None`.
- Problem setting code-generated checkbox fields when `restrict input
variables` in effect.
## [1.2.99] - 2021-08-30
### Changed
- The `on_success` and `on_failure` parameters of `DAWeb` methods can
be set to `content`, `text`, or `status_code` in order to return the
undecoded response, decoded response, or status code of the HTTP
request.
### Fixed
- The `pdf_concatenate()` function will no longer try to guess an
appropriate `instanceName` for the returned `DAFile` object.
## [1.2.98] - 2021-08-17
### Added
- Feature for using Jinja2 as a preprocessor to construct YAML.
### Changed
- Disabled `DAGoogleAPI` when the architecture is not `amd64`.
- Adjusted use of `\xspace` for new version of Pandoc.
- If an inactive server in the cluster is detected during the restart
process, the server will be removed from the list of servers.
## [1.2.97] - 2021-08-13
### Added
- Feature for downloading the installed version of a package installed
by uploading a ZIP file or installing a Playground package.
### Changed
- No restoration from backup files is performed if system had an
unsafe shutdown (requires system upgrade).
### Fixed
- Error in `get_geocode_response()`.
- Missing entries in system phrases file for e-mails sent from Flask.
## [1.2.96] - 2021-08-05
### Fixed
- Exception with phone verification.
- Bad error message with OCR functions under certain circumstances.
## [1.2.95] - 2021-08-02
### Added
- API for managing Playground projects.
### Fixed
- Exception raised from cron job.
- Issue with newlines being converted to spaces when inline Markdown
added to DOCX.
- Issue with numbering ordered lists with `markdown` filter.
## [1.2.94] - 2021-07-29
### Fixed
- Issue with `[SKIPLINE]` interfering with other formatting
directives.
- `_internal` could not be set with `set_session_variables()`.
- `docassemble.webapp.createminio` was not updated for the latest
version of the `minio` package.
## [1.2.93] - 2021-07-22
### Fixed
- Issue with `www-data` losing its shell.
## [1.2.92] - 2021-07-22
### Fixed
- Issue with `www-data` losing its shell.
## [1.2.91] - 2021-07-21
### Changed
- Re-ordering a list now triggers `hook_after_gather()`.
- The `inverse navbar` Configuration directive now affects
administrative screens.
### Fixed
- Word-to-Markdown conversion now uses Pandoc's `markdown_phpextra`
format.
## [1.2.90] - 2021-07-12
### Fixed
- Security improvements.
## [1.2.89] - 2021-07-11
### Added
- The `azure maps` and `geocoder service` Configuration directives.
### Changed
- Removed wait times and explicit application exit in LibreOffice PDF
conversion macro.
### Fixed
- PyPDF2 raised exception when another package tried to issue a
warning.
- Nested `show if` conditions did not always show the correct showing
and hiding when the screen first loaded.
- Security issue with `next` parameters in URLs.
## [1.2.88] - 2021-07-04
### Changed
- If `behind https load balancer` is set, the IP address will be
obtained from `X-Real-Ip` or `X-Forwarded-For` rather than from the
remote IP address.
### Fixed
- The `DELETE` endpoint of `/api/interviews` did not delete sessions
owned by non-logged-in users.
- The `refresh` button generated a spurious warning in some
circumstances.
## [1.2.87] - 2021-06-27
### Added
- The `register_jinja_filter()` function.
- The `sv-words.yml` file in the `data/sources` folder of
`docassemble.base` with system phrases in Swedish.
## [1.2.86] - 2021-06-24
### Fixed
- Missing `.delta` attribute of the output of `date_difference()`.
- Syntax error introduced in 1.2.85.
## [1.2.85] - 2021-06-24
### Added
- The `backup file storage` Configuration directive (requires system
upgrade).
### Changed
- When using `docx template file` in combination with `fields` or
`field code`, the interview answers will be used for any variables
not defined in the `fields` or `field code`.
### Fixed
- Issue with exceptions being triggered because keycloak OAuth
information not defined in the Configuration.
- Non-string values in `field code` raised exceptions.
## [1.2.84] - 2021-06-20
### Fixed
- Variable not marked as defined if defined by `code` block triggered
by a different missing variable name.
- Instance names not reset after reordering.
## [1.2.83] - 2021-06-16
### Changed
- The `depends on` invalidation will now be triggered when a variable
is defined while invalidated.
### Fixed
- Misplacement of buttons on desktop `signature` page when
`subquestion` is lengthy.
## [1.2.82] - 2021-06-13
### Added
- Support for login using Keycloak.
### Fixed
- API sessions could not follow action paths.
## [1.2.81] - 2021-06-07
### Added
- Support for additional file types in `fix_up()`.
## [1.2.80] - 2021-06-02
### Added
- The methods `fix_up()` and `uses_acroform()` of `DAFile` and related
classes.
### Changed
- If a PDF file cannot be opened by `PyPDF2`, an attempt will be made
to convert the file with `qpdf`.
## [1.2.79] - 2021-06-01
### Added
- The methods `disable()`, `enable()`, and `enabled()` of the `nav`
object.
### Fixed
- Adjusted `.get_pdf_fields()` so that it works with PDF files in
which the dimensions of a form field are object references.
## [1.2.78] - 2021-05-27
### Fixed
- Error with `depends on` and `generic object` variables.
- Error with websockets.
## [1.2.77] - 2021-05-27
### Added
- The `current_package` and `current_filename` attributes of
`user_info()`.
- The `progress can go backward` setting under `features`.
## [1.2.76] - 2021-05-24
### Added
- Support for using Azure Key Vault References in the Configuration.
### Fixed
- Internet Explorer issue with Word sidebar.
- Issue with Wizard and global variables.
## [1.2.75] - 2021-05-21
### Changed
- When specifying multiple choices using code containing dictionary
items, you can use the keys `label` and `value` in a dictionary to
represent the label that appears on the screen and the value to
which the variable should be set.
- Widths in percentage format (e.g., `50%`) are now valid when
inserting images into PDF files assembled from Markdown.
## [1.2.74] - 2021-05-17
### Added
- Support for using AWS Secrets Manager ARNs in the Configuration.
- The `config from` Configuration directive.
### Fixed
- Issues with the Active checkbox and the Roles multiselect on the edit
user profile page.
- Issue with SQL query for finding a user.
## [1.2.73] - 2021-05-15
### Fixed
- Issue with the "none of the above" option when `uncheck others`
refers to a list.
- Issue with `validate` and `list collect`.
- Issue with `pg_restore`.
## [1.2.72] - 2021-05-15
### Fixed
- Upgraded dependencies.
## [1.2.71] - 2021-05-14
### Changed
- The Docker image now uses Debian `testing` and Python 3.8.10 rather
than `buster` and 3.8.6.
### Fixed
- Issue with validation of Playground Packages form.
## [1.2.70] - 2021-05-13
### Fixed
- Trap potential error in SQL statement when querying admin users for
purposes of processing Modules in the Playground.
## [1.2.69] - 2021-05-13
### Fixed
- Issue with package system where duplicate entries in the package
list cause the upgrade process to raise an exception.
## [1.2.68] - 2021-05-13
### Changed
- Upgraded various dependencies, including `docxtpl`,
the new version of which allows images to be inserted into headers
and footers of DOCX files.
- DO NOT ATTEMPT TO INSTALL 1.2.68 WITHOUT DOWNGRADING PIP FIRST. The
latest versions of `pip` will stall indefinitely or use up all of
the memory in your system because of the way that `pip`'s new
dependency resolution system works. To downgrade `pip`, go to
Package Management, enter `pip==20.1.1` into the "Package on PyPI"
field, then click "Update." Only then should you attempt to click
"Upgrade" to upgrade docassemble to 1.2.68.
### Fixed
- Issue with `interview_url()` and related functions when `style` is
used.
## [1.2.67] - 2021-05-08
### Fixed
- Possible fix to issue with `/interviews` page and `interview_list()`
(this turned out to have been caused by a third-party package that
some people were using).
## [1.2.66] - 2021-05-04
### Fixed
- Suppress Markdown deprecation warning.
## [1.2.65] - 2021-05-04
### Fixed
- A very serious security vulnerability was patched. Everyone should
upgrade to this version AS SOON AS POSSIBLE (upgrade to 1.2.66,
actually). Upgrade by going to Package Management and clicking
Upgrade. If you are on the 1.1.x series, you can upgrade to 1.1.113
with the Upgrade button or by entering `docassemble.webapp==1.1.113`
into the PyPI field. If you are using the `stable` branch, you can
upgrade to 1.0.15.
## [1.2.64] - 2021-05-04
### Added
- The `popover trigger` feature.
### Fixed
- Added validation error on the edit user profile page when changing
e-mail address to an address that is a case-insensitive match to an
e-mail address that already exists.
## [1.2.63] - 2021-05-02
### Changed
- Optimizations for `interview_list()`.
## [1.2.62] - 2021-05-01
### Changed
- Optimizations for the restart process.
## [1.2.61] - 2021-05-01
### Added
- The `resume_existing` option for `login_url`.
## [1.2.60] - 2021-04-30
### Added
- The `multiselect` data type.
## [1.2.59] - 2021-04-28
### Fixed
- Problem with `reset_geolocation()`.
## [1.2.58] - 2021-04-27
### Fixed
- Bug with `list collect` and checkboxes.
### Changed
- The `<fieldset>` containing a question's buttons now has the class
`da-button-set`.
- The `signature_of()` method of the `SigningProcess` class in the
signature recipe now has a width parameter.
## [1.2.57] - 2021-04-26
### Added
- The `authorize()` method of `DAOAuth`, which adds OAuth2
authorization headers to a `DAWeb` object.
### Changed
- The `.geolocate()` method has been renamed to `.geocode()` and other
associated attributes have also been renamed. Backwards
compatibility will be maintained until the next minor version
update.
### Fixed
- The `attachment code` specifier now accepts `DAList` objects.
- Interference between `help` and operation of `show if`.
## [1.2.56] - 2021-04-22
### Fixed
- Screen reader issue with lists.
- Problem with `DATemplate` when used in the context of a DOCX
template.
## [1.2.55] - 2021-04-20
### Added
- `reload` option for `message()`.
### Fixed
- Error with protecting PDFs with password.
## [1.2.54] - 2021-04-15
### Changed
- `DAList` and `DASet` methods will now return objects of the same
subclass.
## [1.2.53] - 2021-04-12
### Changed
- The GitHub integration feature now sets the name of the SSH key to
the `appname` followed by the user ID.
## [1.2.52] - 2021-04-11
### Changed
- Added mechanism in classes `Person`, etc. for indicating what class
should be used for attributes that are objects.
- Added support for QR codes when filling PDF files.
### Fixed
- The `.address_block()` method now supports the `international` and
`show_country` keyword parameters.
## [1.2.51] - 2021-04-07
### Changed
- Added optimizations for network usage on first page load (requires
system update).
## [1.2.50] - 2021-04-04
### Changed
- OCRing in background now uses one process per machine (requires
system update).
## [1.2.49] - 2021-04-03
### Fixed
- Issue with SVM library.
## [1.2.48] - 2021-03-31
### Fixed
- Error with SMS interface.
- Better trapping of unicode errors in case of a YAML error.
## [1.2.47] - 2021-03-26
### Fixed
- Enter key on Playground Packages page.
- Word wrap on buttons.
## [1.2.46] - 2021-03-24
### Fixed
- Error with reading zip files.
- Error when the `complete_attribute` is a `@property`.
## [1.2.45] - 2021-03-19
### Fixed
- Error with `allow reordering`.
## [1.2.44] - 2021-03-16
### Changed
- The `possessify()` function and the object methods that use it will
return a Unicode apostrophe when called from the context of a DOCX
template.
## [1.2.43] - 2021-03-15
### Added
- The `/api/playground_install` endpoint.
- The `bold` and `italic` functions as Jinja2 filters.
### Changed
- As soon as the container starts, a dummy web server begins listening
on port 80 (or `PORT`). This web server turns off before NGINX
starts.
- Verbose `pip` logs no longer saved to `worker.log`.
## [1.2.42] - 2021-03-13
### Changed
- The optional second positional parameter of `noun_plural()` and
`noun_singular()` can now be a list, dictionary, set, or tuple, in
which case the length is used.
- Elements with `aria-hidden="true"` or CSS class `sr-exclude` will
be ignored by the VoiceRSS screen reader.
- `force_ask()`, `force_gather()`, `undefine()`, `forget_result_of()`,
and `reconsider()` now accept generators as positional parameters.
- When given `Person` objects, `send_email()` will include names in
To, Cc, and Bcc if the names are defined.
### Fixed
- A `fields` question with no variable-setting fields or a `continue
button field` did not get marked as answered.
## [1.2.41] - 2021-03-09
### Fixed
- Bug in 1.2.40.
## [1.2.40] - 2021-03-08
### Added
- Support for the `PORT` Docker environment variable, which defaults
to port 80.
## [1.2.39] - 2021-03-06
### Fixed
- Issues with Word add-in.
## [1.2.38] - 2021-03-04
### Fixed
- Default value on combobox fields.
## [1.2.37] - 2021-03-03
### Fixed
- Default value on combobox fields.
## [1.2.36] - 2021-03-02
### Fixed
- Package install errors not being sent to screen.
## [1.2.35] - 2021-02-27
### Added
- The `.item_name()` and `.delitem()` methods of `DAList`.
- The `.item_name()`, `.delitem()`, `.invalidate_item()`, and
`.getitem_fresh()` methods of `DADict`.
- The `restart` option for `/api/package`.
## [1.2.34] - 2021-02-25
### Added
- The `.getattr_fresh()` method.
### Fixed
- Bug in `.from_url()`.
## [1.2.33] - 2021-02-20
### Changed
- When `datatype` is `password`, autocomplete will be turned off.
### Fixed
- `code` with `content file` in `raw` mode.
- `.get_pdf_fields()` raised exception when no fields present.
## [1.2.32] - 2021-02-17
### Fixed
- Issue with logging messages during post-update restart.
## [1.2.31] - 2021-02-16
### Added
- The `post` option for `need`.
### Changed
- Deleting a package in the Playground will now delete the memory of
the last pull of that package.
## [1.2.30] - 2021-02-13
### Fixed
- False positive infinite loop detection with `objects` block.
## [1.2.29] - 2021-02-12
### Fixed
- Package Management issue with waiting for restart.
## [1.2.28] - 2021-02-09
### Changed
- In the question data, `decoration_url` and `decoration_name` have
been converted to a `decoration` dictionary.
### Fixed
- The `title_case` function now converts its parameter to a string.
- Package Management issue with waiting for restart.
## [1.2.27] - 2021-02-05
### Fixed
- Restored default behavior of not converting to HTML in question
data.
## [1.2.26] - 2021-02-04
### Changed
- Added `variable_name` to items under `attachments` in the JSON
representation of a question.
### Fixed
- Removed use of `certbot-auto`.
## [1.2.25] - 2021-01-27
### Added
- The `region` parameter under the `google` Configuration directive,
for biasing the address autocomplete feature.
### Fixed
- Unicode characters in PDF forms were altered if they were not part
of `latin1`.
## [1.2.24] - 2021-01-24
### Not changed
- The license. (Just in case you thought the 1/14/2021 @docassemble
Twitter thread about the dystopian MIT-SAFE License was real.)
### Changed
- The `from_url()` method will now raise an exception if there is an
error retrieving the URL.
- The `avconv` Configuration directive is now called `ffmpeg`.
- Uploading a video no longer runs a conversion to `.ogg`.
### Added
- Option for connecting to a PostgreSQL database using SSL with `db`
and other database configurations. A system update is required to
use this feature.
### Fixed
- Problem writing error messages to the logs when Mailgun mail sending
fails.
- Error in `pdf_concatenate()` when JavaScript in a PDF is text
instead of bytes.
- Non-graceful failure on Google Drive configuration page when API for
obtaining a file listing raises an exception.
## [1.2.23] - 2021-01-07
### Changed
- Expanded the information available in the data view of a question.
- Unicode passed in URL arguments is no longer escaped.
### Fixed
- The `next` parameter now contains the session ID upon attempting to
access a session in an interview with `require login`.
- `depends on` and `on change` now can be used with generic object
and/or index variables even when the fields being changed do not
literally match the variable name specified in `depends on` or `on
change`.
- Problem with `show if` when there are two fields with the same name
visible on the screen at the same time.
## [1.2.22] - 2021-01-04
### Changed
- Expanded the information available in the data view of a question.
### Fixed
- Issue with combobox update triggers.
- Issue with `DADict` objects in `code` for multiple choice lists.
## [1.2.21] - 2020-12-29
### Changed
- The `list collect` feature will now show the `minimum_number` of
entries if `minimum_number` is set.
## [1.2.20] - 2020-12-28
### Fixed
- Error with `generic object` inheritance.
## [1.2.19] - 2020-12-26
### Fixed
- Error in `.object_name()`.
## [1.2.18] - 2020-12-22
### Fixed
- Adapted to new version of `pip`.
## [1.2.17] - 2020-12-22
### Changed
- Different startup mechanism for `celery`.
- Removed `--force-reinstall` from `pip` invocation.
## [1.2.16] - 2020-12-15
### Added
- The `chain` function from `itertools`.
### Fixed
- Forced deletion of `Flask-User`.
## [1.2.15] - 2020-12-14
### Fixed
- Pinned dependencies of fork dependencies.
## [1.2.14] - 2020-12-09
### Fixed
- Problem with the way in which `pip` was invoked, given new version
of `pip`.
## [1.2.13] - 2020-12-09
### Fixed
- Typo in `setup.py`.
## [1.2.12] - 2020-12-09
### Changed
- Dependencies on `aloe` and `selenium`.
### Fixed
- Interview filenames with spaces in the Configuration were disregarded.
## [1.2.11] - 2020-12-07
### Added
- XLIFF support.
- The `user can request developer account` Configuration directive.
### Fixed
- User information that non-privileged users are not allowed to edit
in Profile but that was set with code was overwritten when user
edited their user profile.
- Problem with `datereplace.js` in recipe.
## [1.2.10] - 2020-12-05
### Added
- The `raw` datatype.
### Changed
- Additional items colorized in spreadsheet translations.
- HTML stripped from fields with `datatype` of `text`.
### Fixed
- Issue with server-side validation where multiple `question` blocks
have the same `id`.
## [1.2.9] - 2020-12-04
### Fixed
- Bug in `comma_and_list()`.
## [1.2.8] - 2020-12-03
### Changed
- Different limiting mechanism for the nested use of
`include_docx_template()`.
- Enabled the `md_in_html` extension of the `Markdown` package.
## [1.2.7] - 2020-12-02
### Added
- The `new window` option to `action buttons`.
### Fixed
- Ajax error with xhr responses.
## [1.2.6] - 2020-12-01
### Fixed
- Error in `update_terms()`.
## [1.2.5] - 2020-11-30
### Fixed
- JavaScript error in Internet Explorer.
## [1.2.4] - 2020-11-29
### Changed
- The `setup.py` file created by the Playground now sets the minimum
version of dependencies to the latest version on PyPI that is not
more recent than the version installed on the server.
### Fixed
- Browser warning about Google Analytics cookies.
## [1.2.3] - 2020-11-29
### Fixed
- Upgraded to new version of Azure Blob Storage API.
## [1.2.2] - 2020-11-29
### Fixed
- Reverted Azure Blob Storage API version.
## [1.2.1] - 2020-11-28
### Fixed
- Error on Package Management page.
## [1.2.0] - 2020-11-28
### Changed
- Upgraded Python to version 3.8 and upgraded dependencies. These
changes require a system upgrade. See
https://docassemble.org/docs/docker.html#upgrading for instructions
on how to perform a system upgrade. Because Python changed between
version 3.6 and and 3.8, you should test your code carefully to make
sure it still works in Python 3.8.
- Among other upgrades, Bootstrap has been upgraded to version 4.5.3.
If you are using Bootstrap themes, you may wish to upgrade your
Bootstrap theme.
### Fixed
- Issue with user privileges.
## [1.1.113] - 2021-05-05
### Changed
- The Upgrade button has been restored but it is non-functional.
### Fixed
- Important security vulnerability.
## [1.1.112] - 2020-11-26
### Changed
- Upgrading through Package Management is turned off because the
upgrade to 1.2.0 requires a system upgrade.
## [1.1.111] - 2020-11-26
### Fixed
- Some Jinja2 filters did not work correctly.
## [1.1.110] - 2020-11-25
### Changed
- The API can now be used to set variables to class names.
### Fixed
- The `sort` Jinja2 filter did not work correctly.
## [1.1.109] - 2020-11-24
### Added
- The `suppress error notificiations` Configuration directive.
- Error message if file upload will exceed `maximum content length`.
### Fixed
- Google Drive synchronization did not work with shortcuts to folders.
## [1.1.108] - 2020-11-22
### Changed
- The `markdown` and `inline_markdown` filters now respect the `type`
and `start` attributes of `<ol>`.
## [1.1.107] - 2020-11-21
### Changed
- Upgraded LibreOffice (system upgrade required for this change).
### Fixed
- Bug in previous version.
## [1.1.106] - 2020-11-21
### Added
- The `change_numbering` keyword parameter to `include_docx_template()`.
## [1.1.105] - 2020-11-20
### Changed
- The `.make_ocr_pdf_in_background()` method can now handle mixed file
types.
### Fixed
- Markdown internal anchor links now work in the web interface.
## [1.1.104] - 2020-11-20
### Added
- German translations of country names.
### Changed
- The `states_list()`, `state_name()`, and `subdivision_type()`
functions now pass output through the `word()` translation system.
### Fixed
- The `language` modifier for an attachment did not work with `docx
template file` attachments.
## [1.1.103] - 2020-11-19
### Added
- The `temporary session` specifier under `metadata`.
### Changed
- The `countries_list()` and `country_name()` functions will now pass
country names through the `word()` translation system.
## [1.1.102] - 2020-11-19
### Fixed
- The local PostgreSQL database was being created with the default
encoding, which did not allow UTF-8 strings to be saved in `jsonb`
format.
- An `attachment` that uses a different language than the current
language did not restore the correct language after an exception.
## [1.1.101] - 2020-11-14
### Fixed
- Issue with `interview_url()` and `interview_url_action()` with `i`
parameter when short URL is in use.
## [1.1.100] - 2020-11-13
### Fixed
- Translation of phrases on registration page.
## [1.1.99] - 2020-11-12
### Changed
- Different logic for whether hyperlinks open in the same tab or a
different tab.
## [1.1.98] - 2020-11-12
### Fixed
- Bug in `bates_number()`.
## [1.1.97] - 2020-11-10
### Added
- The `/api/clear_cache` endpoint.
## [1.1.96] - 2020-11-08
### Added
- The `lang` URL parameter for non-interview screens.
## [1.1.95] - 2020-11-06
### Fixed
- Unnecessary incrementing of PyPI version.
- Recent installations (since June 25, 2020, possibly) contained a
Debian security update that disabled ImageMagick's ability to inject
signature images onto PDFs. Running `docker stop` and `docker
start` is required to enable the PDF signature image feature.
## [1.1.94] - 2020-11-03
### Added
- The `set_object_type()` method of `DAList` and `DADict`.
- The `variable` attribute of the return value of `user_info()`.
- The `reset_geolocation()` method of `Address` and the `reset`
keyword parameter of the `geolocate()` method.
### Fixed
- The `map` Jinja2 filter looked up dictionary items instead of
attributes.
- Could not mix a Python-based `show if` with a JavaScript-based `hide
if` or vice-versa.
## [1.1.93] - 2020-10-27
### Fixed
- Markdown in popover field help.
## [1.1.92] - 2020-10-24
### Added
- The `update_terms()` function.
### Changed
- When using `terms`, you can specify that text other than the term
name should be displayed using `|`.
- When specifying `terms` and `auto terms`, you can use `phrases` and
`definition` to indicate that multiple terms are associated with a
single definition.
## [1.1.91] - 2020-10-24
### Fixed
- Bug in GitHub configuration.
## [1.1.90] - 2020-10-20
### Changed
- Enabled a variety of functions to operate as Jinja2 filters.
### Fixed
- Corrected operation of `selectattr` Jinja2 filter.
## [1.1.89] - 2020-10-19
### Added
- The `make_ocr_pdf()` and `make_ocr_pdf_in_background()`, and
`bates_number()` methods of `DAFile` and `DAFileList`.
- The `reverse()`, `insert()`, and `count()` methods of `DAList`.
## [1.1.88] - 2020-10-16
### Added
- The `required privileges for initiating` specifier under `metadata`.
### Changed
- The JSON format of questions now includes analytics information.
### Fixed
- The `delete_variables` feature of `/api/session` did not work when
passing the request in JSON format.
## [1.1.87] - 2020-10-14
### Fixed
- False error messages on package update screen.
## [1.1.86] - 2020-10-13
### Changed
- Monitor disabled when `checkin interval` is zero.
### Fixed
- Potential OAuth2 issue with Google Drive.
## [1.1.85] - 2020-10-12
### Added
- The `table css class` screen part.
- The `show_as_markdown()` method for `template`s.
- The `_inline` option for `include_docx_template()`.
- Ability to list multiple files under `docx template file`.
- Ability to set the `pre` and `post` screen parts directly on a
`question`.
- The `enable if`, `disable if`, `js enable if`, and `js disable if`
field modifiers.
## [1.1.84] - 2020-10-07
### Fixed
- GitHub commit issue.
## [1.1.83] - 2020-10-07
### Fixed
- `cross site domains` was not being used by CORS for web sockets.
## [1.1.82] - 2020-10-06
### Fixed
- GitHub commit error.
## [1.1.81] - 2020-10-05
### Fixed
- Tweak to focusing on first element.
## [1.1.80] - 2020-10-04
### Added
- The `middle_initial()` method of `Name`.
### Changed
- First input element on the screen is focused only if visible in the
viewport.
- `[FILE ...]` can now be used with images declared in `images` or
`image sets`.
### Fixed
- Issue with floating point/integer numbers and input validation.
## [1.1.79] - 2020-09-28
### Fixed
- Problem with using `[TARGET]` inside of `right`.
## [1.1.78] - 2020-09-25
### Fixed
- Issue with `get_info()`.
- Issue with `show if` `code` and generic objects/iterators.
## [1.1.77] - 2020-09-22
### Fixed
- Issue with fix in the previous version regarding group-level file permissions.
## [1.1.76] - 2020-09-22
### Added
- The `question_id` attribute of `user_info()`.
### Fixed
- Issue with group-level file permissions.
## [1.1.75] - 2020-09-20
### Fixed
- Issues with `show if` and `js show if` when multiple fields with the
same name are on the screen.
- Issues with server-side validation not recreating values on the
screen on error.
## [1.1.74] - 2020-09-18
### Changed
- Setting `url_args` without causing a change to the `url_args` does
not cause a new step to be created.
### Fixed
- An empty string `min` or `max` was not being ignored.
- Issue with `generic object`.
## [1.1.73] - 2020-09-13
### Changed
- The `use_word` keyword attribute to `nice_number()` and `ordinal()`
can be used to force a textual representation of any number.
## [1.1.72] - 2020-09-10
### Fixed
- Removal of `new_session` from URLs formed with `interview_url()`.
## [1.1.71] - 2020-09-07
### Fixed
- Better support for iterables in `comma_list()` and other places.
- Markdown table alignment in Bootstrap.
- Upgraded Pillow.
## [1.1.70] - 2020-09-05
### Added
- The `reply_to` option for `send_email()`.
### Changed
- The current section name is now the label of the `small screen
navigation: dropdown` button.
- The breakpoint for the mobile signature view is now Bootstrap `xs`.
### Fixed
- Multiple choice fields with empty choices were being set to `None`
despite `code`-based `show if` deselecting the field.
## [1.1.69] - 2020-09-02
### Added
- The `/api/stash_data` and `/api/retrieve_stashed_data` endpoints.
- The `stash_data()` and `retrieve_stashed_data()` functions.
- The `current` option for `referring_url()`.
## [1.1.68] - 2020-09-02
### Fixed
- Improper verb conjugation for non-English languages.
## [1.1.67] - 2020-09-01
### Fixed
- Issue with two POST requests being sent during inline file uploads.
## [1.1.66] - 2020-08-30
### Added
- The `small screen navigation` option under `features`.
- The `email template`, `email subject`, `email body`, and `email
address default` options for customizing the functionality of the
`attachment`/`attachment code` interface.
### Changed
- The horizontal section interface is no longer hidden on small
screens.
- The vertical section interface becomes the horizontal section
interface on small screens.
- The default body of the e-mail that the user can send from an
`attachment`/`attachment code` interface is now translated using the
phrases `Your document, %s, is attached.` and `Your documents, %s, are
attached.`.
## [1.1.65] - 2020-08-28
### Added
- The `style` keyword parameter for `interview_url()`.
### Changed
- The `/start/` path for starting an interview now transforms into
`/run` instead of `/interview`. It also has a second form for
referring to the package name and filename (without using
`dispatch`).
### Fixed
- The Playground "Share" link did not update correctly based on the
interview being run.
## [1.1.64] - 2020-08-26
### Fixed
- Issue with relative image URLs when embedding in a `<div>`.
## [1.1.63] - 2020-08-25
### Added
- The `corner back button label` screen part.
### Changed
- Upgraded bootstrap-fileupload.
### Fixed
- The `progress` modifier did not behave as described in the documentation.
## [1.1.62] - 2020-08-23
### Added
- The modifiers `include attachment notice`, `include download tab`,
and `manual attachment list` for tweaking the display of attached
documents.
### Fixed
- Step advanced when session started with URL parameters.
- The signature screen scrolled at submission.
- The `next` parameter was forgotten when using social login methods.
- The `reconsider` modifier did not work with iterator variables.
## [1.1.61] - 2020-08-20
### Fixed
- JavaScript error with `getField()`.
## [1.1.60] - 2020-08-19
### Changed
- Playground Packages page now reports local date and time of a commit.
### Fixed
- Issue with two file fields or two fields with a `validate` that have
the same variable name and one is hidden by `show if`.
## [1.1.59] - 2020-08-18
### Fixed
- Cron problem introduced in 1.1.56.
## [1.1.58] - 2020-08-16
### Fixed
- Backwards-compatibility issue related to `DAEmpty` introduced in 1.1.54.
## [1.1.57] - 2020-08-16
### Fixed
- Backwards-compatibility issue related to `DAEmpty` introduced in 1.1.54.
## [1.1.56] - 2020-08-16
### Added
- The `session_local`, `device_local`, and `user_local` objects in the
interview answers.
- The `require login` `metadata` directive.
### Changed
- When the API is in use, `interface()` will return `'api'`.
### Fixed
- `review` blocks were not compatible with iterator variables.
- `combobox` fields not working right in `list collect` mode.
- `address autocomplete` did not initialize when the address was
hidden by a `show if`.
- Submission blocked when an empty non-required file upload field was
present in an embedded interview.
## [1.1.55] - 2020-08-06
### Added
- The `create_session()` function.
- The `package` attribute of the output of `user_info()`.
- The `make_copy` keyword parameter for `all_variables()`.
- The `overwrite` keyword parameter for `set_session_variables()`.
- The `overwrite` parameter for the `/api/session` POST endpoint.
- The `persistent` option for the `/api/session/action` POST endpoint.
- Recipe for passing variables from one session to a newly created
other session.
## [1.1.54] - 2020-08-04
### Added
- The `attr_name()` method of the `DAObject` class.
- The `dry_run` keyword parameter for `send_email()` and `send_sms()`.
### Changed
- The `str` keyword parameter when initializing a `DAEmpty` object.
- New recipe for gathering multiple signatures; uses a modular
approach.
### Fixed
- Missing control for `capitalize` in some language functions.
- SendGrid fails when subject line is empty string.
- The `temporary` and `once_temporary` keyword parameters for
`interview_url_action()` were not working.
- Problem with running interviews in a different tab in Playground on
Chrome.
## [1.1.53] - 2020-07-29
### Fixed
- Error in Docassemble-Flask-User dependency.
## [1.1.52] - 2020-07-29
### Fixed
- Moved evaluation of section information to post-assembly when
getting question data.
## [1.1.51] - 2020-07-28
### Added
- The `footer` screen part.
- `terms` and `autoterms` are now included in JSON question data.
### Fixed
- `signature` blocks did not support `continue button field`.
- System message translation system had gaps due to the integration
with Flask-User's translation system not working as intended.
- Inconsistent behavior of `force_ask()` depending on whether an item
was listed first or not.
## [1.1.50] - 2020-07-21
### Added
- Feature for viewing names in an interview and the YAML blocks
associated with them.
### Fixed
- Missing `.copy()` method for `DAList`.
- The `init()` method of the `DAFileCollection` class did not accept
arbitrary parameters.
- Fully qualified image URLs now work in e-mail HTML.
## [1.1.49] - 2020-07-07
### Fixed
- Additional input validation on parameters passed to APIs.
## [1.1.48] - 2020-07-06
### Fixed
- The `/api/user_info` API endpoint and the `get_user_info()` function
now do case insensitive searches for e-mail addresses.
## [1.1.47] - 2020-07-05
### Added
- The `store_variables_snapshot()` function.
## [1.1.46] - 2020-07-05
### Fixed
- Error in restart module.
## [1.1.45] - 2020-07-05
### Fixed
- Error in table creation module.
## [1.1.44] - 2020-07-05
### Changed
- The `interview_list()` function, when called without an `action`,
now uses pagination and returns a tuple instead of a list. Note
that this change is not backwards-compatible, so you will need to
change any code that you have that calls `interview_list()`.
- The `get_user_list()` function now uses pagination and returns a
tuple instead of a list. Note that this change is not
backwards-compatible, so you will need to change any code that you
have that calls `interview_list()`.
- The `/api/interviews`, `/api/user/interviews`,
`/api/user/<user_id>/interviews`, and `/api/user_list` GET endpoints
of the API now use pagination and return a dictionary, not a list.
Note that this change is not backwards-compatible, so you will need
to change any code that you have that uses these APIs.
- Removed the `PY2`, `string_types`, and `text_type` names from
`docassemble.base.util`. Note that if you have used any of these,
this change may break your code.
### Added
- The `persistent` optional keyword parameter for
`mark_task_as_performed()` and related functions.
- The `task_persistent` optional keyword parameter for `send_email()`,
`send_sms()`, and the `DAWeb` methods.
### Fixed
- Issue with encryption in functions launched during the loading of
the first page of an interview session.
- Issue with multi-server configurations and the order in which
container software is updated that can result in some containers
unable to start.
## [1.1.43] - 2020-06-30
### Changed
- The `complete_elements()` method now returns a `DAList`. Note that
this may break existing code that uses `complete_elements()`. To
get a plain list of the complete elements, use
`complete_elements().elements`.
- Spanish ordinal numbers removed.
- Upgraded jQuery and jQuery Validation Plugin.
### Fixed
- Possible fix to iframe reloading issue.
## [1.1.42] - 2020-06-25
### Added
- Aliases for JavaScript functions that have the `da` prefix.
### Fixed
- Jinja2 filter was converting Python built-in types to strings.
## [1.1.41] - 2020-06-22
### Fixed
- Bug in `recursive_eval_textobject()`.
## [1.1.40] - 2020-06-19
### Added
- `question metadata`, `field metadata`, and the `send question data`
option under `features`.
- The `country` keyword parameter for `.sms_number()`.
- The `field` keyword parameter for `validation_error()`.
## [1.1.39] - 2020-06-17
### Fixed
- Issue with `interview_url_action()` and `force_ask()`.
- Upgraded `docxtpl` and `docx`.
## [1.1.38] - 2020-06-11
### Added
- The `add another label` option for `list collect`.
- The `manual_line_breaks` Jinja2 filter.
### Changed
- The `.all_false()` and related `DADict` methods reflect Python
notions of true and false values rather than literal equivalence of
the values to `True` or `False`.
- Sessions that were created using the API will now appear immediately
in My Interviews.
## [1.1.37] - 2020-06-10
### Fixed
- Attempt to force reinstall of pdfminer.six.
## [1.1.36] - 2020-06-10
### Fixed
- Another attempt to force uninstall of pdfminer3k.
## [1.1.35] - 2020-06-08
### Fixed
- Force uninstall of pdfminer3k.
## [1.1.34] - 2020-06-08
### Fixed
- Error with `objects_from_file()`.
## [1.1.33] - 2020-06-04
### Changed
- `help` can be added to `note` and `html` fields.
### Fixed
- Support for icons in terms.
## [1.1.32] - 2020-05-30
### Fixed
- Issue with `objects_from_file()`.
## [1.1.31] - 2020-05-29
### Fixed
- Issue with nested question file inclusion change in 1.1.30.
## [1.1.30] - 2020-05-29
### Fixed
- Issue with screen reader and labels containing HTML codes.
- Issue with nested question file inclusion.
## [1.1.29] - 2020-05-27
### Fixed
- Issue with `set_save_status()`.
- Issue with checkbox validation text when the "none of the above"
choice contained HTML.
- Bug prevented `admin` users from changing other users' information
with the API.
## [1.1.28] - 2020-05-21
### Added
- The `skip undefined` option for `pdf template file`
### Fixed
- Issue with nested `datatype: object` fields in a `list collect`.
- Issue with `disable others` referring to a list in a `list collect`.
## [1.1.27] - 2020-05-19
### Fixed
- Issue with `js show if` and `list collect`.
## [1.1.26] - 2020-05-17
### Fixed
- Duplicative `under` text when `attachment` is used.
- Error when reading certain types of PDF files.
## [1.1.25] - 2020-05-07
### Added
- The `if_started` keyword parameter for the `number_gathered()`
method.
### Changed
- If `ask_number` on a `DAList` or `DADict` is `True` and
`target_number` is defined, removing an item using the table editing
interface will decrease `target_number` by one.
## [1.1.24] - 2020-05-04
### Fixed
- Unicode problem with JSON sent from the browser.
## [1.1.23] - 2020-05-03
### Added
- The `getFields()` JavaScript function.
### Changed
- A `question` with `fields` that contains a single multiple choice
field where the choices are empty is not skipped if the `question`
has a `continue button field`.
- The branch and commit are shown in the Packages page of the
Playground when GitHub integration is enabled and the package has a
known presence on GitHub.
- Upgraded Font Awesome to 5.13.0.
### Fixed
- Infinite loop when a list is gathered and `object_type` is set to a
class for which the textual representation or `complete_element` is
pre-defined and a set number of items are to be gathered.
- The `sql ping` feature was not fully implemented.
## [1.1.22] - 2020-04-30
### Changed
- When a item is added to or removed from a group, the `there_are_any`
attribute is updated even if `there_are_any` was not previously
defined.
### Fixed
- Package update problem due to `pip freeze` changing behavior in
version 20.1.
## [1.1.21] - 2020-04-30
### Fixed
- PDF export value issue where two export values are present in the
PDF for a checkbox field.
## [1.1.20] - 2020-04-30
### Changed
- Upgraded LibreOffice to version 6.4.
### Fixed
- `review` screens shown as part of the interview logic were being
treated as actions.
## [1.1.19] - 2020-04-29
### Changed
- If `help` accompanies a `yesno` field, it will be available as a
popup accessed from an icon.
### Fixed
- GitHub issue when committing to a new branch.
- Exception when trying to edit a non-existent user.
- Bug in `comma_and_list()`.
- The `disable others` and `uncheck others` features did not work
correctly in a `list collect`.
## [1.1.18] - 2020-04-28
### Changed
- The `checkbox export value` feature is no longer documented because
PDF field filling now inspects the PDF for the export value.
### Fixed
- The `address autocomplete` feature was not compatible with `show
if`.
## [1.1.17] - 2020-04-27
### Added
- The `hyperlink style` option for an `attachment`.
### Fixed
- Sendgrid API e-mails to multiple "To" recipients only reached the
first recipient.
## [1.1.16] - 2020-04-26
### Added
- Test script screenshot mechanism.
### Changed
- Subfolder paths now allowed in URLs for static files.
### Fixed
- S3 file sync problem.
## [1.1.15] - 2020-04-23
### Added
- The `default date min` and `default date max` options under
`features`.
## [1.1.14] - 2020-04-22
### Changed
- The GitHub button on the Playground Packages page will now respect
the GitHub repository that was pulled and will make an initial
commit when the repository exists on GitHub but is empty.
## [1.1.13] - 2020-04-21
### Added
- The `title url` and `title url opens in other window` screen parts.
- A "retry" button on the error screen.
### Changed
- Auto-focus on page load will only be given to an element in the first non-`note`,
non-`html` field.
### Fixed
- Pressing enter key on the list collect screen clicked a hidden
button.
- Changes in 1.1.11 blocked certain types of uploads.
## [1.1.12] - 2020-04-20
### Fixed
- Fields with an object-based `datatype` did not work when `list
collect` was used.
- Error with exporting tables to Excel.
## [1.1.11] - 2020-04-19
### Added
- Ability to download files by specifying a `filename` parameter to
GET requests to `/api/playground`.
- The `use_word` keyword argument to `ordinal()`.
- The `always include editable files` specifier for omitting the
checkbox in the attachment UI.
- The `nginx ssl protocols` Configuration directive.
### Changed
- If `use https` or `behind https load balancer` are enabled, a
`Strict-Transport-Security` header is returned.
- If `allow embedding` is not set to `True`, the `X-Frame-Options` and
`Content-Security-Policy` will block iframes. If `allow embedding`
is set to `True` and `cross site domains` is set, the list of
domains will be used for the `Content-Security-Policy` header.
- More than one `address autocomplete` can now be used on a screen.
### Fixed
- Disconnecting from GitHub integration failed if the existing
integration no longer functioned.
## [1.1.10] - 2020-04-15
### Added
- The `mailgun_variables` option for `send_email()`.
- The `docx_concatenate()` function.
### Changed
- When more than one file with the same name is added to a ZIP file,
the files are renamed to avoid name collision.
## [1.1.9] - 2020-04-14
### Fixed
- Typo in `Address.on_one_line()`.
## [1.1.8] - 2020-04-13
### Fixed
- Error when `code` is used to generate `fields` and manually entered
fields follow.
- Jinja2 index error converted to attribute error.
- Incorrect focus when first fields have `hide if`.
## [1.1.7] - 2020-04-13
### Fixed
- Error with serving files through `/uploadedfile/<number>`.
## [1.1.6] - 2020-04-12
### Added
- The `social` Configuration directive for meta tags.
- The `social` specifier under `metadata` for meta tags.
- The `allow robots` Configuration directive.
- Czech translation.
## [1.1.5] - 2020-04-09
### Added
- The `required` modifier for the `signature` block.
### Fixed
- Error message about blank signature not showing.
## [1.1.4] - 2020-04-08
### Changed
- `DAEmpty` now accepts index assignments.
- Obtaining a `new_session` during an interview now preserves
`url_args` and the `referring_url()`, consistent with the behavior
of `restart`.
## [1.1.3] - 2020-04-06
### Added
- The `use_familiar` attribute of the `Individual` class.
- The `familiar()` method of the `Name` class.
### Fixed
- Issue with too many flash messages on CSRF error.
- Issue with multiple DOCX documents and subdocuments.
## [1.1.2] - 2020-04-04
### Fixed
- Issue with file names and `.url_for()`.
## [1.1.1] - 2020-04-04
### Added
- The `attachment` keyword parameter for `.url_for()`.
- The `_attachment` keyword parameter for `url_of()`.
### Changed
- Securing of uploaded filenames less strict.
## [1.0.14] - 2021-05-05
### Fixed
- Missing file in setup.py.
## [1.0.13] - 2021-05-04
### Fixed
- Suppress Markdown deprecation warning.
## [1.0.12] - 2021-05-04
### Fixed
- Important security vulnerability.
## [1.0.11] - 2020-04-15
### Fixed
- Typo in `Address.on_one_line()`.
- Error when code is used to generate fields and manually entered
fields follow.
- Jinja2 index error converted to attribute error.
- Incorrect focus when first fields have `hide if`.
## [1.0.10] - 2020-04-12
### Fixed
- Removed 302 redirects.
- Mako filter error.
- Inline upload error.
## [1.0.9] - 2020-04-06
### Fixed
- Issue with too many flash messages on CSRF error.
- Issue with multiple DOCX documents and subdocuments.
## [1.0.8] - 2020-04-05
### Added
- The `DASQLPING` Docker environment variable
## [1.0.7] - 2020-04-05
### Fixed
- Display of available version on Package Management page.
## [1.0.6] - 2020-04-04
### Added
- The `stable version` Configuration directive.
## [1.0.5] - 2020-04-02
### Fixed
- Apache initial certbot run used wrong syntax.
- Synchronizing local updates to files inside projects on OneDrive failed.
## [1.0.4] - 2020-03-31
### Fixed
- Error when `disable others` is used inside of a `show if` or `js
show if`.
## [1.0.3] - 2020-03-30
### Fixed
- `update_ordinal_numbers()` and `update_ordinal_function` missing
from `docassemble.base.util`.
- `sql ping` workaround for SQL connections being cut off.
## [1.0.2] - 2020-03-25
### Fixed
- Fixed issue with incomplete pull request by dependabot.
## [1.0.1] - 2020-03-25
### Fixed
- Deprecated use of access token in URL parameter when retrieving
branch listing from GitHub API when repository reference uses an
`oauth-basic` URL.
## [1.0.0] - 2020-03-22
### Added
- The `show_country` keyword parameter for the `.on_one_line()` and
`.block()` methods of the `Address` class.
- The `international` keyword parameter for the `.block()` method of
the `Address` class.
- The `assemble_docx()` function.
### Changed
- Switched to a different versioning system. The `stable` branch on
GitHub will be version 1.0. Patch versions within version 1.0
(1.0.1, 1.0.2, etc.) will be for bug fixes and security upgrades
only. The `master` branch on GitHub will be version 1.1. Patch
versions within version 1.1 will include bug fixes as well as
feature enhancements.
- The `omit_default_country` parameter of the `.on_one_line()` method
of the `Address` class is deprecated.
### Fixed
- Bug with `restrict input variables` and attachment e-mailing and
downloading.
- `pip show` inefficiency unnecessarily slowed down initial start up
time.
## [0.5.111] - 2020-03-20
### Added
- The `auto open` option for the `sections` block.
- The `pages()` method for Twilio fax status.
### Fixed
- The caret next to automatically closed subsections in the section
navigation bar defaulted to the wrong setting.
- The `received()` method of the fax send status did not correctly
respond `True` when the fax was in `'delivered'` status.
- Error message when clicking the back button under certain
circumstances.
## [0.5.110] - 2020-03-17
### Fixed
- Bug affecting `raw global javascript`.
## [0.5.109] - 2020-03-11
### Changed
- Deleting an item in a table now undefines `there_is_another` when it is
`True`.
### Fixed
- The `bootstrap theme` in the Configuration will apply to interviews
if `bootstrap theme` in `features` is not set.
- Errors in global CSS and JS Configuration directives not intercepted
and logged.
## [0.5.108] - 2020-03-08
### Fixed
- Issue with `bootstrap theme` and other Configuration directives that
require Flask URL formation.
## [0.5.107] - 2020-03-03
### Changed
- More flexible handling of `default` values with `datatype: date`.
- The `allow embedding` Configuration directive now accepts the value
`'Lax'`, which is the default.
## [0.5.106] - 2020-02-29
### Changed
- LibreOffice Word to PDF conversion no longer reduces image
resolution.
### Fixed
- Log server in multi-server mode accessed on wrong port.
- URL parameters stripped when redirecting to login when `allow
anonymous access` is `False`.
## [0.5.105] - 2020-02-26
### Changed
- If the database is PostgreSQL, the Alembic table alteration
introduced in 0.5.97 for MySQL compatibility purposes is no longer
applied by default because it might take too much time on a server
with a large SQL database. The discrepancy between the SQLAlchemy
column type specification (varchar) and the actual PostgreSQL column
types (text) is harmless. If your SQL database is not large, you
can set `force text to varchar upgrade: True` in your Configuration
before upgrading to force the column type alteration to take place
during the upgrade. After upgrading to 0.5.105+, you can remove
`force text to varchar upgrade` from the Configuration. This is
only applicable if upgrading from 0.5.96 or before; if you already
upgraded to 0.5.97 - 0.5.104, then the alteration has already taken
place.
### Fixed
- Upgraded `bleach` due to security vulnerability.
## [0.5.104] - 2020-02-25
### Fixed
- Error with `allow embedding`.
## [0.5.103] - 2020-02-23
### Fixed
- Error with `DAContext` variables.
## [0.5.102] - 2020-02-23
### Added
- The `user auto delete` Configuration directive.
- The `allow embedding` Configuration directive, which if `True` sets
the `SameSite` flag in cookies to `None`.
### Changed
- The `SameSite` flag is now set to `Strict` in cookies by default.
For the old behavior, set `allow embedding: True` in the
Configuration.
## [0.5.101] - 2020-02-23
### Changed
- Playground syntax highlighting now highlights Python code as Python
code.
### Fixed
- The `interview_menu()` function did not accept parameters.
## [0.5.100] - 2020-02-20
### Added
- The `.data_type_guess()` method of `DACatchAll`.
- The `.keys()` method of `DAStore`.
### Fixed
- Issue with default values after input validation fails and two
fields set the same variable.
## [0.5.99] - 2020-02-19
### Added
- Catchall questions.
### Fixed
- When item under `edit` in a `table` has no question associated with
it, an error was raised only if the item was first.
## [0.5.98] - 2020-02-18
### Fixed
- Typo causing `/playgroundstatic` file links to fail.
## [0.5.97] - 2020-02-17
### Added
- The `forget prior` option for `action buttons`.
### Changed
- Calls to subprocesses now have timeouts.
- Database columns used as indices changed from text to variable character.
### Fixed
- Bug with table export.
## [0.5.96] - 2020-02-15
### Changed
- `depends on` no longer implies `need`.
## [0.5.95] - 2020-02-14
### Added
- The `show incomplete` and `not available label` options for `table`
blocks.
- The `gathering_started()` method of groups.
## [0.5.94] - 2020-02-13
### Added
- The `allow external auth with admin accounts` Configuration
directive.
- The url parameter feature of `url_of()`.
## [0.5.93] - 2020-02-13
### Changed
- `code` blocks with `event` work with `depends on` now.
- Playground folders have download buttons now.
- `re` and `json` are now available inside the interview namespace.
### Fixed
- Let's Encrypt issue.
## [0.5.92] - 2020-02-11
### Added
- The `add_separators()` function.
- The `session error redirect url` Configuration directive.
### Changed
- Calling `as_noun()` on a group with one item will return the
`noun_singular()` of the applicable noun.
## [0.5.91] - 2020-02-07
### Added
- The `/api/interview_data` API endpoint.
### Fixed
- Interview cache not cleared after Playground pull.
## [0.5.90] - 2020-02-06
### Added
- The `convert_to` method of `DAFile`.
### Changed
- Functionality of `depends on` extended to additional block types.
## [0.5.89] - 2020-02-04
### Changed
- Backend health monitor HTTP server moved to port 8082 from port
8080.
## [0.5.88] - 2020-02-03
### Added
- The `response_code` option for `response()` and `json_response()`.
- The `sendgrid api key` Configuration directive for sending e-mail
using the SendGrid API.
### Changed
- A `question` with a Continue button that sets a variable to `True`,
or a `review` screen with a Continue button instead of a Resume
button, can be indicated with `continue button field` instead of
`field`.
## [0.5.87] - 2020-02-02
### Fixed
- Overwriting of README in Playground Packages when README.md is in
a first level subfolder.
- Fields hidden by `show if` that uses `code` could prevent the
display of a `question`.
## [0.5.86] - 2020-01-31
### Added
- The `default_for` class method and `is_object` attribute of
`CustomDataType`.
### Changed
- The `datatype` of `area` should now be expressed as `input type:
area`. For backwards compatibility, `datatype: area` still works.
### Fixed
- Bug in `/api/file` introduced in 0.5.85.
## [0.5.85] - 2020-01-28
### Added
- CSS classes on HTML elements related to attachments.
### Fixed
- Missing static file in existing package generated exception instead
of a 404 error.
## [0.5.84] - 2020-01-27
### Added
- The `restrict input variables` Configuration directive.
- The `allowed to set` question modifier.
### Fixed
- PDF image overlays failed with any image that contained a density in
the metadata.
## [0.5.83] - 2020-01-26
### Added
- Input validation features for `CustomDataType` classes.
- Ability to use `DAOAuth` without being logged in.
### Fixed
- JavaScript failure on error screens during interviews.
## [0.5.82] - 2020-01-23
### Added
- Warnings in the logs if unrecognized keys used in interview YAML
dictionaries.
### Fixed
- The `disable others` feature interfered with the `show if` feature.
## [0.5.81] - 2020-01-22
### Added
- The `allow updates` Configuration directive and `DAALLOWUPDATES`
Docker environment variable.
### Fixed
- Google Drive issue with files reporting no size.
- Erroneous reference to text_type.
## [0.5.80] - 2020-01-20
### Fixed
- Variables with iterators or generic object references could not be
set through the API or `set_session_variables()`.
## [0.5.79] - 2020-01-18
### Added
- The `convert_file` API endpoint.
### Fixed
- Incorrect tab order in Playground Pull.
## [0.5.78] - 2020-01-14
### Added
- The `depends on` modifier.
- The `on change` block.
- The `invalidate()` function.
- The `.invalidate_attr()` method of `DAObject`.
- The `invalidate` option in a `review` block.
## [0.5.77] - 2020-01-12
### Added
- Ability to convert DOCX to PDF using CloudConvert.
- The `cloudconvert secret` Configuration directive.
## [0.5.76] - 2020-01-08
### Fixed
- Playground variables sidebar did not always switch to the most
recently-run interview.
- Restart process used IP address and port that may not be available
internally.
## [0.5.75] - 2020-01-07
### Added
- The `date format`, `datetime format`, and `time format`
interview-wide defaults.
### Fixed
- Line breaking issue with `terms` and `auto terms`.
## [0.5.74] - 2020-01-06
### Fixed
- Error when checkbox values are not strings.
## [0.5.73] - 2020-01-05
### Fixed
- Error in watchdog process launch.
- UI bug in list collect.
## [0.5.72] - 2020-01-05
### Added
- The `admin full width` Configuration directive.
- The `wrap lines in playground` Configuration directive.
### Changed
- Moved Download button to below the editor in the Playground.
### Fixed
- Bug in `legal.py`.
- Not safe to concatenate a `DAList` and a `DAEmpty`.
## [0.5.71] - 2020-01-05
### Changed
- Discontinued support for Python 2.7.
## [0.5.70] - 2019-12-30
### Added
- The `phone_number_formatted()` function.
- The `fr-words.yml` translation file in `docassemble.base`.
### Fixed
- Errors when building the Dockerfile on the ARM architecture.
## [0.5.69] - 2019-12-24
### Added
- The `.user_access()` and `.privilege_access()` methods of `DAFile`.
- The `persistent`, `private`, `allow users`, and `allow privileges`
specifiers for `attachments` and field modifiers for `datatype:
file` fields.
### Fixed
- User could not access a private and persistent file after the
deletion of the session in which the file was created.
- Issue with `js show if` and `list collect`.
## [0.5.68] - 2019-12-21
### Fixed
- JQuery Validation Plugin message for integer and step input
validation was not customizable.
- Dependency was incompatible with Python 3.5.
## [0.5.67] - 2019-12-19
### Added
- The `help generator` and `image generator` field modifiers.
### Fixed
- Error when `code` was used with `content file` and the code
returned a list.
- Backup of Redis database when password is used.
## [0.5.66] - 2019-12-19
### Fixed
- Issue with Redis and passwords.
## [0.5.65] - 2019-12-19
### Added
- The `DAWeb` object.
- The Configuration page now reports the underlying Python version.
### Fixed
- The `PATCH` endpoints for API-related API calls only accepted URL
parameters.
- The `step` specifier for `datatype: range` fields was not effective.
- The `re_run_logic()` function did not re-run from the start of the
interview logic in all situations.
- The `redis` directive in the Configuration did not support
passwords.
- A checkbox with the empty string as the value triggered an error.
## [0.5.64] - 2019-12-15
### Fixed
- Back button after `url_args` are set repeated the setting of the
`url_args`.
- The `resume interview after login` feature did not work correctly
with the default menu.
## [0.5.63] - 2019-12-14
### Added
- API endpoints for managing API keys.
## [0.5.62] - 2019-12-12
### Fixed
- JavaScript error, introduced in 0.5.31, impeded embedded field
validation.
- The `default interview` was ignored if a `dispatch` directive
existed.
- Error in package listing when installing from GitHub.
## [0.5.61] - 2019-12-11
### Fixed
- The `subtitle` screen part was not updated correctly by
`set_parts()`.
- In the Playground, the "Share" link was not updated when the
"Variables, etc." file name changed.
## [0.5.60] - 2019-12-09
### Fixed
- Issue with `supersedes`.
## [0.5.59] - 2019-12-09
### Fixed
- Issue with `supersedes`.
## [0.5.58] - 2019-12-09
### Fixed
- Modules included in YAML files with relative references were loading
from the main YAML file's package, not in the package of the YAML
file containing the `modules` or `imports` block.
## [0.5.57] - 2019-12-09
### Changed
- Different way of finding GitHub e-mail address.
### Fixed
- Cron issues.
## [0.5.56] - 2019-12-08
### Added
- The `action buttons` specifier for `question`s.
## [0.5.55] - 2019-12-06
### Fixed
- Styling of Font Awesome icons inside buttons.
- Some variables in Variables, etc. inappropriately flagged as undefined.
## [0.5.54] - 2019-12-05
### Added
- The `confirm registration` Configuration directive.
### Changed
- CSRF errors pop up in a "flash" box.
- Cron jobs run with nice 19 (system upgrade required for this
change).
- Messages from Flask-User are now translated through the
**docassemble** system phrase translation system.
### Fixed
- Styling of Font Awesome icons inside buttons.
## [0.5.53] - 2019-12-03
### Added
- The `hook_on_remove()` method.
- The `SQLObjectList`, `SQLRelationshipList`,
`StandardRelationshipList`, and `SQLObjectRelationship` classes in
`docassemble.base.sql`.
- The `.any()`, `all()`, and `.filter()` class methods of `SQLObject`.
- The `.has_child()`, `.add_child()`, `.get_child()`, `.del_child()`,
`.has_parent()`, `.add_parent()`, `.get_parent()`, and `.del_parent()`
methods of `SQLObject`.
- The `_session` attribute of `SQLObject`.
- The option to opt out of module pre-loading by adding `# do not
pre-load` to a line at the top of the module file.
### Changed
- The `message` parameter of `.add_action()` has been renamed to
`label` (backwards-compatibility is maintained).
- The `.get_session()` method of `SQLObject` has been removed in favor
of the `._session` attribute.
## [0.5.52] - 2019-11-29
### Fixed
- Bug in package update script.
## [0.5.51] - 2019-11-28
### Changed
- The `pt-words.yml` file has been renamed to `pt-br-words.yml`. If
you are using this file, you will need to change your `words`
configuration.
### Fixed
- HTML codes non-printable in dropdown lists.
## [0.5.50] - 2019-11-26
### Added
- The `inline_markdown` Jinja2 filter.
### Fixed
- Problem with XLSX translation file colorization.
## [0.5.49] - 2019-11-24
### Fixed
- Python 2.7 bug introduced in 0.5.47.
## [0.5.48] - 2019-11-24
### Added
- The `external` keyword parameter for the `.url_for()` method.
### Changed
- Access to files is now granted to users across sessions, whether the
session was active in the browser's session or not. Previously,
access was restricted based on sessions that had been active in the
browser's session.
- The `.url_for()` method when used with `temporary=True` now implies
`external=True`, which means that the URL returned includes the
protocol and hostname. Use `external=False` to preserve the old
behavior.
- A superscripted question mark icon is now shown in the green text
when `help` is added to a field.
- When committing to GitHub from the Playground Packages screen, you
can choose to also publish on PyPI and install the package on the
server.
- When publishing to PyPI from the Playground Packages screen, you can
choose to also install the package on the server.
## [0.5.47] - 2019-11-24
### Added
- The `prevent_dependency_satisfaction` decorator.
- The `interview delete days by filename` Configuration directive.
- The `review button color` and `review button icon` options under
`features`.
- The `sleep` option for `response()` and `command()`.
### Fixed
- Cron job inefficiencies.
- JavaScript error when using `check in` and `list collect` at the
same time.
- Error when `admin` user signs in with a social login.
- An `input type: ajax` in `list collect` did not allow adding
additional items.
- Ampersands in Jinja2 code were converted to `&`.
## [0.5.46] - 2019-11-21
### Fixed
- Possible race condition in `interview_list()`.
## [0.5.45] - 2019-11-20
### Added
- The `backup` directive under `db`.
### Fixed
- Problem converting some types of interview answers to JSON.
## [0.5.44] - 2019-11-20
### Fixed
- Cron job was overtaxing the SQL server.
- `does_verb()` used the wrong tense.
## [0.5.43] - 2019-11-18
### Added
- Ability to pass keyword parameters to the `show()` method of a
template.
### Fixed
- Problem with object storage cache invalidation.
## [0.5.42] - 2019-11-17
### Fixed
- Problem unpickling from 2.7.
## [0.5.41] - 2019-11-16
### Fixed
- Problem with the Playground API using the Templates folder.
- Playground API did not support projects other than the default
project.
- HTML typo that was introduced in 0.5.40.
- Problem unpickling from 2.7.
## [0.5.40] - 2019-11-15
### Added
- The `button style` Configuration directive.
- The `disable analytics` option under `features`.
### Fixed
- The LDAP login feature was not compatible with the new version of
the `python-ldap` package.
## [0.5.39] - 2019-11-13
### Changed
- Multi-server syslog system improved.
- `objects_from_file()` now accepts `DAFile` and related objects.
### Fixed
- Problem with `DAStore` being used with the API.
- Logrotate not rotating all files.
## [0.5.38] - 2019-11-11
### Changed
- Testing scripts now support the `aloe` package as an alternative to
`lettuce`.
### Fixed
- Web sockets logs not sent to syslog.
- `RABBITMQ` and `REDIS` not overridden when
`ENVIRONMENT_TAKES_PRECEDENCE` is true.
- Reverted change made in 0.5.37 regarding HTML codes.
## [0.5.37] - 2019-11-09
### Added
- Method of initializing admin e-mail and password through volume
mount.
- The `collect statistics` Configuration directive.
### Changed
- External PostgreSQL database created if it does not exist.
### Fixed
- Dependency on `mod_wsgi` caused problems when upgrading.
- HTML codes non-printable in dropdown lists.
- Potential problem with too-short RabbitMQ heartbeat.
## [0.5.36] - 2019-11-04
### Fixed
- Exceptions raised by syslog calls were not trapped.
- Problems with restarting server in multi-server configuration.
## [0.5.35] - 2019-10-31
### Changed
- The "remember me" feature removed.
### Fixed
- Deleted or renamed playground modules not culled from Python
installation.
- Content of new file in Playground lost if filename blank.
- Erroneous `session` parameter added to result of
`interview_url_action()` if `i` specified.
## [0.5.34] - 2019-10-30
### Fixed
- Erroneous dependency on `pkg-resources` in `docassemble.base` for
Python 2.7.
## [0.5.33] - 2019-10-30
### Changed
- All Python dependencies have version numbers explicitly indicated.
- Backend server health check tests for completion of initialization.
- The `websockets ip` Configuration directive no longer defaults to localhost.
### Fixed
- Better handling of Markdown when passing values to a DOCX file
directly.
- Ordinal functions now accept arbitrary keyword arguments.
- Some phrases for translation not detected.
- The `verbatim()` function did not escape formatting characters in
some circumstances.
## [0.5.32] - 2019-10-25
### Added
- `ENVIRONMENT_TAKES_PRECEDENCE` Docker environment variable.
- The `use minio` Configuration directive.
- Added `account_type` as a response from `get_user_info().
### Changed
- Improved backup and logging in multi-server configuration.
- Any `admin` can upgrade or downgrade packages.
### Fixed
- The `subtitle` did not work with `set_parts()`.
- Certain PDF fields raised error.
- Not all language functions were compatible with keyword parameters.
- Manual newlines in Markdown not converted to line breaks.
- Double quotes in HTML input element values not properly escaped.
## [0.5.31] - 2019-10-13
### Added
- Ability to use `code` in `content file` specifiers of `template`s
and `attachment`s.
### Changed
- When `labels above fields` is used, the input element will now be
wrapped in a `<div>` with CSS class `dafieldpart`.
- Server-side validation errors are now scrolled to when the screen
loads.
### Fixed
- Broken link to variables and values on error page.
## [0.5.30] - 2019-10-11
### Fixed
- Free disk space indicator not compatible with Python 2.7.
## [0.5.29] - 2019-10-11
### Added
- Ability to download all log files as a ZIP file.
- Free disk space indicator on Configuration page.
### Fixed
- Problem with Google Drive Sync and zero-byte files.
## [0.5.28] - 2019-10-10
### Fixed
- Problem with NGINX and `POSTURLROOT`.
## [0.5.27] - 2019-10-10
### Fixed
- Problem with session deletion.
## [0.5.26] - 2019-10-09
### Changed
- Limited data retrieved by Google address autocomplete feature.
### Fixed
- NGINX configuration omitted `POSTURLROOT`.
## [0.5.25] - 2019-10-09
### Changed
- Configuration page now shows a listing of errors in the
Configuration, if there are any.
### Fixed
- Error with URLs to cloud-hosted files.
## [0.5.24] - 2019-10-08
### Fixed
- Error with Run button in Playground.
- Erroneous space in the CSS class names of some fieldsets.
- Error with non-cloud temporary URLs.
## [0.5.23] - 2019-10-08
### Added
- Additional cache invalidation headers.
## [0.5.22] - 2019-10-08
### Added
- The `/api/fields` endpoint.
- The `use cloud urls` directive in the Configuration.
### Fixed
- Miscellaneous problems with ajax field type.
- Syntax with Let's Encrypt renewal not compatible with all
configuration types.
- Problem with obtaining JSON version of `question` where `js show if`
is in use.
- Unnecessary saving of interview answers with the wrong encryption.
## [0.5.21] - 2019-10-04
### Fixed
- Error when Playground project name matched name of a Playground
package.
## [0.5.20] - 2019-10-04
### Fixed
- Problem with office task pane.
- Problem with YAML in field scanner in utilities.
- Problem with `endpoint url` option.
## [0.5.19] - 2019-10-02
### Fixed
- Problem with background tasks and uploads.
## [0.5.18] - 2019-10-02
### Added
- Projects system in the Playground.
- The `verbatim()` function.
## [0.5.17] - 2019-09-26
### Added
- An option for assembling text files by setting `raw: True` under
`attachment`.
## [0.5.16] - 2019-09-25
### Added
- Custom `datatype` feature.
### Fixed
- Session-related bug.
- Thumbnail generation bug.
- Image icon problems.
- External URLs calculated inconsistently.
## [0.5.15] - 2019-09-23
### Added
- The `css class` screen part.
- The `allow anonymous access` Configuration directive.
### Fixed
- Session-related bug.
## [0.5.14] - 2019-09-23
### Fixed
- Markdown of single-column `table`s not recognized.
## [0.5.13] - 2019-09-22
### Added
- The `use_objects` option for `objects_from_file()`
- The `use objects` option for `objects from file`.
### Changed
- The `objects_from_file()` function and the `objects from file` block
now support JSON files as well as YAML files.
### Fixed
- Transitional error related to session upgrade.
## [0.5.12] - 2019-09-21
### Changed
- Users can run multiple sessions in different browser tabs.
- The `i` URL parameter is required for any endpoint that uses the
current sesion.
- The `DAEmpty` class now supports comparison operators.
### Fixed
- IndexErrors appeared under some circumstances when using actions.
- Live Help bug.
## [0.5.11] - 2019-09-16
### Fixed
- Problem with checkbox object initialization inside of `DADict`.
- Error when trying to inspect functions to get usage information for
the Playground sidebar.
- Renewal of Let's Encrypt included obsolete domains.
## [0.5.10] - 2019-09-15
### Added
- The `symbol` keyword parameter of `currency()`.
- The `currency_symbol` keyword parameter of `set_locale()`.
### Fixed
- Problem with `disable others` when `allow non-idempotent questions`
was `False`.
- Problem with `reconsider` under certain circumstances.
- Error when `command()` used immediately after a file upload.
- Error when exporting dates in a table to Excel.
## [0.5.9] - 2019-09-12
### Fixed
- `NoneType` error when using `data` with `use objects`.
- Error when non-base64 dictionary keys happened to be valid base64.
## [0.5.8] - 2019-09-11
### Added
- The `delattr` method of the `DAObject` class.
### Changed
- Different behavior when `allow non-idempotent questions` is set to
`False`.
### Fixed
- Unpickling errors in `user_interviews()` not trapped appropriately.
## [0.5.7] - 2019-09-10
### Changed
- The `url_action_perform()` and `url_action_call()` JavaScript
functions are renamed to `action_perform()` and `action_call()`.
Aliases are in place for backwards-compatibility.
- Widths of images inserted into DOCX files now support centimeters
and twips as units.
- The `continue button field` can now be used with other types of
`question`s that set variables, rather than just `fields`.
### Fixed
- Unpickling errors in `user_interviews()` not trapped.
## [0.5.6] - 2019-09-08
### Added
- Option in the JavaScript `flash()` function to clear existing
messages.
### Fixed
- Error when displaying the JSON form of certain `question`s.
- Error when using `Value` objects in the `choices` of a `datatype:
object` field.
## [0.5.5] - 2019-09-07
### Added
- The `require gathered` specifier for tables.
### Changed
- Running `.pop()` on a `DAList` no longer triggers list gathering.
- Every module file installed in the `docassemble` namespace that
contains a class definition will be loaded when the server starts or
restarts.
### Fixed
- Erroneous message about starting new interview was appearing on
restart.
- Default values not appearing for some `datatype: object` fields.
- Unpickle errors when modules that contain classes are not loaded.
- Tooltips not showing up on sliders.
## [0.5.4] - 2019-09-05
### Fixed
- The `maximum content length` was being superseded by a NGINX content
length limiter.
- Word add-in bug.
## [0.5.3] - 2019-09-04
### Added
- The `exit url` specifier under `metadata`.
## [0.5.2] - 2019-09-03
### Fixed
- S3 error.
## [0.5.1] - 2019-09-02
### Fixed
- `get_question_data()` and related functions raised exception.
- Let's Encrypt renewal error.
## [0.5.0] - 2019-09-02
### Added
- The `advance_progress_meter` option for the `/api/session` POST API
endpoint.
- The `DAWEBSERVER` Docker environment variable and the `web server`
Configuration directive.
- The `S3ENDPOINTURL` Docker environment variable and the `endpoint
url` Configuration directive under `s3`.
### Changed
- Upgrade Docker OS to Debian buster.
- Upgrade Python from 3.5 to 3.6.
- The default web browser under Docker is now NGINX.
- The Docker image now builds in two parts. The jhpyle/docassemble-os
image is the base image for jhpyle/docassemble.
- The `get_session_variables()` and `set_session_variables()`
functions use the current user's decryption key by default.
## [0.4.80] - 2019-08-22
### Fixed
- Setting of `__version__` in Python 2.7 raised Unicode error.
- Back button after action in URL repeated the action.
- The `progress` value was missing from the JSON representation of the
question.
## [0.4.79] - 2019-08-21
### Added
- The `SQLObject` class.
- The `input type` called `ajax`.
- The `paragraphs` Jinja2 filter.
### Changed
- The `__version__` variable is now defined in packages generated from
the Playground packages folder.
- UTM parameters are retained if an `analytics id` is defined under
`google` in the Configuration, or a `segment id` directive is
defined in the Configuration.
- The Playground packages folder GitHub commit process now uses `git
merge` to merge changes, which means it might fail if a commit would
overwrite changes.
- The Playground packages folder now allows for committing to a new
remote branch.
### Fixed
- Incorrect behavior during initial visit to `/interview` when
interview uses unique sessions.
- Interview advanced a step despite `validation code` raising an
exception.
## [0.4.78] - 2019-08-15
### Added
- The `features` option `labels above fields`.
### Fixed
- Errors with `sessions are unique` and `required privileges`.
## [0.4.77] - 2019-08-14
### Added
- The `enable playground` Configuration directive.
### Changed
- The behavior of the `label` option of `list collect` no longer
prints text before `1.`, `2.`, etc. Now the `label` supplies the
whole label for the item, and it can include the number by way of
the index variable.
### Fixed
- The `list collect` feature raised an exception when the field
definition included Mako substitution.
- Non-required upload fields were creating zero-byte files on some
servers.
## [0.4.76] - 2019-08-12
### Changed
- The syslog-ng server is now started after the web server.
### Fixed
- Unhelpful error message when there was an interview parsing error.
- `DAStaticFile` objects not being included in DOCX files correctly.
## [0.4.75] - 2019-08-12
### Added
- The `administrative interviews` Configuration directive
- The `sessions are unique`, `required privileges for listing`, and
`hidden` specifiers under `metadata`.
### Changed
- The `words` system no longer uses code names like `pdf_message` and
`save_as_multiple`.
- The `required privileges` specifier under `metadata` now prevents
users without a valid privilege from starting the interview. The
`required privileges for listing` now controls whether the interview
is listed under `/list`.
### Fixed
- Passing an asterisk in a list to Flask-CORS resulted in a regular
expression error.
- Not all Flask packages accept integers as the
`PERMANENT_SESSION_LIFETIME`.
## [0.4.74] - 2019-08-09
### Fixed
- The `undefine()` function did not always find the interview
answers.
## [0.4.73] - 2019-08-09
### Added
- Support for noun pluralizing and verb conjugation in Spanish,
French, Italian, German, and Dutch.
- Additional methods for `DAOAuth` objects.
### Changed
- The output of the `interview_menu()` function, the `/api/list`
endpoint, and the `/list?json=1` endpoint now include interview
metadata.
- The `undefine()` function now accepts multiple variables names.
### Fixed
- `DAObject`s that are attributes of `DAList` items had their
`instanceName`s rewritten when the parent list was altered.
- When an object that was already defined was edited using `fields`
with `datatype: object` or `datatype: object_radio`, the default
value was not showing.
- The office add-in was not using the best method to determine the
full URL of the server.
## [0.4.72] - 2019-08-07
### Fixed
- Translation of metadata titles not compatible with `translations`.
- JavaScript evaluated in local context rather than global context.
- Language not set when e-mailing assembled document in the
background.
## [0.4.71] - 2019-08-06
### Changed
- API for making user accounts inactive now supports permanent
deletion.
- API for setting variables now supports initializing `DAObject`s.
- Multiple choice options specified with code can be specified with
lists of tuples.
### Fixed
- Missing system phrase used in input validation.
## [0.4.70] - 2019-08-03
### Added
- Account deletion options.
- Options in the user profile for controlling which repositories will
be considered when the Playground packages folder looks for and
commits to GitHub repositories.
- Configuration directives `session lifetime seconds`, `babel dates
map`, `admin can delete account`, `user can delete account`, and
`delete account deletes shared`.
### Changed
- In tables, ordered dictionaries will use their built-in order.
- Base64 padding removed from field names.
### Fixed
- Poppler upgrade interfered with width of images in popups.
- File upload widget JavaScript bug.
## [0.4.69] - 2019-07-29
### Fixed
- Unnecessary file cache invalidation affected Playground performance
when using cloud storage.
- Incorrect method of setting Debian timezone.
## [0.4.68] - 2019-07-28
### Added
- The `/api/resume_url`, `/api/temp_url`, `/api/config`,
`/api/package`, and `/api/package_update_status` API endpoints.
- The `expire` and `session` parameters of `/api/login_url`.
- The `hook_on_gather()` and `hook_after_gather()` methods of
`DAList`, `DADict`, and `DASet`.
### Fixed
- Bug in the `complete_elements()` method of `DADict`.
- Incomplete support for editing lists that have `auto_gather` turned
off.
## [0.4.67] - 2019-07-25
### Added
- The `confirm` option for table editing.
### Changed
- The "Select..." option on a dropdown is omitted when the field is
required and a default value is selected.
### Fixed
- The `keys()` method of `DADict` was removed when `keys` included in
constructor.
- The language did not switch unless it did not match the default
language.
- Restart buttons did not work from `event` screens.
## [0.4.66] - 2019-07-23
### Changed
- Allow sending multiple invite e-mails at once.
### Fixed
- Canceling phone live help availability failed.
- The 404 error from `/interview` did not use the 404 template.
## [0.4.65] - 2019-07-19
### Fixed
- Erasing phone number in Monitor raised an error.
- OneDrive synchronization error.
## [0.4.64] - 2019-07-17
### Changed
- Upgraded CSS and JavaScript dependencies.
### Fixed
- JavaScript for file uploads was incompatible with a Firefox add-on.
- Error during initialize process possibly caused by stderr being made
non-blocking.
- Bug in `indent()` function.
- File upload previews shown twice under certain circumstances due to
`show if` JavaScript.
## [0.4.63] - 2019-07-16
### Added
- The `/resume` endpoint.
### Fixed
- Unpickleable object added to the document cache in the internal
variables.
## [0.4.62] - 2019-07-14
### Added
- The `temporary` and `once_temporary` options to the
`interview_url()` and related functions.
### Fixed
- Too many monitor connections led to SQL error.
- Some functions did not work in actions.
## [0.4.61] - 2019-07-10
### Added
- The `set_status()` and `get_status()` functions.
### Changed
- Disabled `pip` cache.
- Restored pre-0.4.55 behavior allowing Mako in multiple choice
values.
## [0.4.60] - 2019-07-09
### Changed
- More robust Docker scripts.
### Fixed
- Error with cloud cache.
## [0.4.59] - 2019-07-05
### Changed
- Changes manually made to `/etc/apache2/sites-available` files while
the container is running will now be backed up upon shutdown and
restored upon startup.
### Fixed
- Fatal error when invalid global javascript file referenced in
Configuration.
## [0.4.58] - 2019-07-05
### Changed
- CORS headers now handled by Flask rather than Apache.
- The `cross site domain` Configuration directive is renamed to `cross
site domains` and the value must be a list.
- Removed the `CROSSSITEDOMAIN` Docker environment variable.
- More frequent deletion of temporary files.
## [0.4.57] - 2019-07-01
### Added
- The `explain()`, `clear_explanations()`, and `explanation()`
functions.
### Fixed
- Problems with Google sign-in on Python 3.
## [0.4.56] - 2019-06-29
### Added
- The `initializeObject` method of `DAList`.
### Fixed
- Error gathering `DAList` of `datatype: checkboxes` items.
- Error when using `default` and `list collect`.
- Errors with `DAStore`.
## [0.4.55] - 2019-06-28
### Added
- The `DAStore` object.
### Changed
- Mako no longer allowed in non-label items of `choices` or `buttons`.
- If `backup days` is `0`, no daily backups will be done.
### Fixed
- Error when `dialects` enabled under `voicerss`.
## [0.4.54] - 2019-06-26
### Added
- The `language map` directive under the `voicerss` Configuration
directive.
### Changed
- Renamed `languages` under the `voicerss` Configuration directive to
`dialects` (with backwards compatibility).
### Fixed
- `list collect` on empty non-object list did not show the first item.
- Wrong protection on some cells in translation spreadsheets.
- `nan` values appeared in translation spreadsheets.
- Terms with capital letters were not being translated.
- System terms were not appearing in translation YAML when Google
Cloud Translation API was not configured.
## [0.4.53] - 2019-06-26
### Added
- Jinja2 filters `markdown` and `RichText`.
### Changed
- Ampersand correction for DOCX now happens in Jinja2 even if pipe
already used.
### Fixed
- The `hint` was missing from the data representation of a field.
- The `note` and `html` were missing from the data representation of a
field when not standalone.
- Group editing did not work with non-object lists and dictionaries.
- Buttons on `message()` screens did not work.
## [0.4.52] - 2019-06-18
### Added
- The `javascript` option for `log()`.
### Fixed
- Potential error in Playground sidebar if the same variable name is
used for two different types of object.
- Error if `json` URL parameter is not an integer.
## [0.4.51] - 2019-06-13
### Changed
- Added the `initial` option for `update on start`.
- Using a different mechanism for restarting servers after a software
update.
### Fixed
- LibreOffice failing when multiple instances of LibreOffice run
simultaneously.
## [0.4.50] - 2019-06-12
### Added
- The `update on start` Configuration directive.
- The `expose websockets`, `websockets ip`, and `websockets port`
Configuration directives.
### Changed
- The `include_docx_template()` function now includes images, shapes,
styles, footnotes, etc. from the sub-document.
- Problem with websockets on servers with a `root` other than `/`.
- The `/api/session` POST API endpoint will now convert dates to
`DADateTime` objects, unless the `raw` parameter is `1`.
### Fixed
- Triple spacing in RTF documents.
- Flask route ambiguity with `/api/user/new`.
## [0.4.49] - 2019-06-08
### Changed
- Revised the CSS classes for error messages.
### Fixed
- Word add-in did not work for servers with a `root` other than `/`.
## [0.4.48] - 2019-06-06
### Added
- The `.is_encrypted()` method of `DAFile` and other file objects.
### Fixed
- Dependency problems when `docassemble.base` was used without
`docassemble.webapp`.
- Errors in the `DAFileCollection` version of `num_pages()` and
`size_in_bytes()`.
- JavaScript used `.includes()` and `.startsWith()` methods, which are
not universally supported.
## [0.4.47] - 2019-05-31
### Added
- Option for `'link'` style buttons with `action_button_html()`.
### Fixed
- Some types of `fields` gave errors with `list collect`.
- Error re `UserModel`.
## [0.4.46] - 2019-05-30
### Fixed
- Recursion error with `capitalize()` function.
- A CSS class was called `vspace` instead of `davspace`.
- Multiple choice options not included in translation spreadsheets.
## [0.4.45] - 2019-05-27
### Added
- The `DAOAuth` class.
### Changed
- Made modifications to facilitate embedding interviews in a `<div>`
in another site.
- CSS and JavaScript files are now bundled.
### Fixed
- Errors from OneDrive integration.
- Error reading fields from PDF.
- Inserting certain types of images into RTF files resulted in a fatal
error rather than a non-fatal error.
## [0.4.44] - 2019-05-21
### Added
- Version-specific caching of CSS and JavaScript files.
- The `sort()` and `sort_elements()` methods for `DAList`.
### Changed
- `terms` and `auto terms` are now compatible with the `translations`
block.
- Files in the Playground will be served from server rather than block
storage.
### Fixed
- `static_image()` did not work with unqualified file names.
- Some initial blocks were not included in side-by-side translation
files.
- Orphaned translations did not receive syntax highlighting in
translation files.
- Indented Mako was not receiving syntax highlighting in translation
files.
- Translations containing emojis were being truncated in translation
files.
## [0.4.43] - 2019-05-16
### Added
- The `tag` parameter for `/list`, `/api/list`, and
`interview_menu()`.
- The `DAContext` object and the `use objects` option for the `data`
and `data from code` blocks.
### Fixed
- HTML error when `hide standard menu` is in use.
## [0.4.42] - 2019-05-11
### Changed
- Many CSS classes and IDs renamed and given the `da` prefix.
### Fixed
- Errors with SMS interface.
- Subclasses of `DAList` were not allowed in `list collect`.
- Inefficiency with `last_access_time()`.
## [0.4.41] - 2019-05-02
### Added
- The `get_docx_variables()` method of `DAFile` and other file
objects.
### Fixed
- ProxyFix settings for Docker containers behind reverse proxies.
## [0.4.40] - 2019-04-29
### Fixed
- Python 2.7 error.
## [0.4.39] - 2019-04-29
### Fixed
- Variables could not be converted to JSON where `None` used as
dictionary key.
- Compile errors due to unused non-Python-3-compliant code in copy of
rtfng.
- Playground package description formatted as text area, which
resulted in newlines that caused problems when uploading to GitHub.
## [0.4.38] - 2019-04-25
### Added
- The `single_to_double_newlines()` function.
- The `get_pdf_fields()` method of `DAFile` and other file objects.
- The `playground examples` directive in the Configuration.
- The `new markdown to docx` directive in the Configuration.
### Changed
- Style of chat messages updated; content of message from the monitor
is now contained in the notification received by the end user while
looking at a question.
### Fixed
- Python 3.5 error in utility function for Azure Blob Storage.
## [0.4.37] - 2019-04-23
### Fixed
- Error affecting Python 2.7.
## [0.4.36] - 2019-04-23
### Changed
- Syntax highlighting and word wrap for interview phrase translation files.
- New style for chat messages.
### Fixed
- PAM failure in cron on Amazon Linux.
- Link to show help tab called wrong JavaScript function.
## [0.4.35] - 2019-04-20
### Added
- The `translations` block and the interview phrase translation file
download utility.
## [0.4.34] - 2019-04-16
### Changed
- Downgraded s3cmd.
## [0.4.33] - 2019-04-16
### Added
- `XSENDFILE` Docker environment variable.
### Changed
- API will now process JSON as well as form-data.
- By default, `xsendfile` will be set to `False` in the initial
Configuration if `BEHINDHTTPSLOADBALANCER` is true.
### Fixed
- New version of ProxyFix not called with arguments for processing
HTTP scheme.
## [0.4.32] - 2019-04-15
### Added
- The `as_df()` method of a table.
- The `segment`, `segment id`, and `ga id` specifiers.
- The `log format` Configuration directive.
- German translations.
### Changed
- Upgraded s3cmd.
### Fixed
- Error when reading log files in multiple server configuration in
Python 3.
## [0.4.31] - 2019-04-07
### Fixed
- Errors with `read_qr()`.
## [0.4.30] - 2019-04-07
### Added
- The `editable mimetypes` and `editable extensions` configuration
directives.
### Changed
- The `worker.log` no longer exempt from backup.
- The Redis database now backed up to rolling backup.
- Relaxed some restrictions on multiple developers working on same
package in their Playgrounds.
### Fixed
- Problem with `write()` method of `DAFile`.
- Problem with creating packages when author not defined.
- Problem with `source_code` when `debug` mode not in effect.
## [0.4.29] - 2019-03-28
### Added
- The `.size_in_bytes()` method for `DAFile`.
### Fixed
- Python3 could not write to S3.
## [0.4.28] - 2019-03-28
### Added
- Portuguese translations.
### Fixed
- Swagger-generated setup.py files in ZIP files could not be parsed.
- Error with gender set to "other"
## [0.4.27] - 2019-03-27
### Added
- The `list collect` feature for allowing users to add multiple items
of `DAList` on one screen.
### Fixed
- GitHub error with packages that have dependency packages with null
attributes.
## [0.4.26] - 2019-03-25
### Fixed
- Enter key caused browsers to press the `question back button`.
- Newest version of `textstat` not compatible with Python 2.7.
## [0.4.25] - 2019-03-22
### Changed
- When using Google Drive Sync, deleting file from Playground now
permanently deletes file from Google Drive, rather than send it to
the Trash.
### Fixed
- KeyError during initial GitHub repository creation.
- Exception could be raised if docstring in a dependency module was
bytes.
- Methods not appearing in Playground sidebar in Python 3.
- File uploads failing in Internet Explorer.
## [0.4.24] - 2019-03-21
### Added
- The `maximum content length` configuration directive.
- The `image upload type` configuration directive, feature, and field
specifier.
### Fixed
- Error in `log` service.
- A long interview title could cause wrapping in the navigation bar on
mobile.
## [0.4.23] - 2019-03-19
### Added
- The `progress bar multiplier` and `progress bar method` features.
### Changed
- Embedded blocks can use generic objects and iterators.
- Help buttons are now "info" color instead of "secondary" color.
### Fixed
- Error when uploading files through the API.
- Error resulting from `add_action()` under some circumstances.
## [0.4.22] - 2019-03-17
### Fixed
- Section setting error.
## [0.4.21] - 2019-03-16
### Added
- The `nav.hide()`, `nav.unhide()`, and `nav.visible()` methods.
### Fixed
- Excessive memory usage while looking for cron tasks.
- Could not upload more than one module file to Playground at the same time.
- Playground Wizard errors.
## [0.4.20] - 2019-03-13
### Added
- The `set_save_status()` function.
- The `id_tag` option to `action_button_html()`.
- Field number in error messages.
### Changed
- Removed redirects after non-standard URL parameters.
- The `add_action()` button behaves more consistently with `.gather()`.
- The `new_window` option to `action_button_html()` can be used to set
the `target` of the hyperlink.
### Fixed
- Field trim JavaScript was affecting file variables and triggering an
error.
## [0.4.19] - 2019-03-10
### Added
- The `only sets` modifier.
### Changed
- The `allow non-idempotent questions` specifier in `metadata` was
removed and replaced with a Configuration directive.
- The `allow non-idempotent questions` Configuration directive is set
to `False` by default in the default Configuration. This will
affect new servers but not existing servers.
- The API validation `Referer` constraint checks against the `Origin` if
there is no `Referer`.
## [0.4.18] - 2019-03-09
### Added
- Fullscreen option for code editing.
### Fixed
- Python 3 errors during GitHub integration process.
## [0.4.17] - 2019-03-08
### Added
- The `python packages` Configuration directive and the
`PYTHONPACKAGES` Docker environment variable.
### Fixed
- Error when updating references in .docx file.
- `object_type_repr` error raised from Jinja2.
- `filter()` returning zero elements from non-empty list caused
re-gathering.
- Dueling `uncheck others` fields had wrong CSS after unchecking.
- Thumbnails for .docx files.
- Blanking of dates in Firefox on blur.
## [0.4.16] - 2019-03-04
### Fixed
- Playground packages copied to wrong location on Python 3.
## [0.4.15] - 2019-03-04
### Fixed
- LuaLaTeX was not properly being detected.
## [0.4.14] - 2019-03-04
### Fixed
- LibreOffice initialization encountered circularity.
## [0.4.13] - 2019-03-03
### Changed
- The `none of the above` specifier can be used with `datatype:
object_radio`.
- The `docassemble.base.util` is now loaded by default.
- Switched to LuaLaTeX for better Cyrillic support. Requires server restart.
## [0.4.12] - 2019-03-01
### Added
- The `allow reordering` specifier in `table`.
### Fixed
- Unicode problem reading S3 keys as strings.
## [0.4.11] - 2019-02-28
### Added
- The `error action` specifier in `metadata`.
## [0.4.10] - 2019-02-27
### Added
- The `tagged pdf` option for `docx template file` document assembly.
### Changed
- The `pdf/a` options now create PDF/A documents directly with
LibreOffice.
- The `comma_list()` and `comma_and_list()` now work with a wider
variety of iterables.
## [0.4.9] - 2019-02-25
### Added
- Support for sending text messages using WhatsApp using `send_sms`.
### Changed
- Non-required file upload variables will be set to `None` instead of
being ignored.
### Fixed
- Unicode error during package upgrade when `pip show` returns bytes
that cannot be decoded as UTF-8.
- JavaScript error with Google Maps.
## [0.4.8] - 2019-02-24
### Changed
- Upgraded Font Awesome to 5.7.2.
## [0.4.7] - 2019-02-23
### Fixed
- Unicode problem with user names.
- Unicode problem with OCR.
- SQL concurrency problem with row updates.
- The `instanceName` on file uploads.
## [0.4.6] - 2019-02-19
### Changed
- The `error help` metadata specifier now accepts a dictionary of
language codes and messages.
### Added
- The `verbose error messages` configuration directive.
### Fixed
- Unicode problem with Markdown documents.
- Deep copy error with `get_question_data()`.
## [0.4.5] - 2019-02-18
### Changed
- Group gathering with `ask_number=True` will use the value of
`there_are_any` if it is defined and set to false.
- When editing list using a table, completeness of elements will be
re-evaluated.
- Back button embedded in question is now "link" style.
### Added
- The `subject_as_html()` and `content_as_html()` methods of objects
generated from a `template`.
- The `hide navbar` feature.
- The `js_target` URL parameter for embedding the **docassemble**
interview into an element on another web site.
- The `gathered_and_complete()` method of the `DAList` and `DADict`.
### Fixed
- Error logging in with Auth0 in Python 3.
- The `comma_and_list()` function was not Unicode-friendly.
- Method of adjusting encryption of interviews in session after
logging in was inefficient.
- API verification not working in Python 3.
- Screen reader in Python 3.
- Playground commit not pushing to organizational repositories.
## [0.4.4] - 2019-02-15
### Added
- The `convertapi secret` configuration directive.
- API endpoints for listing and deleting Playground files.
### Fixed
- JSON serialization with unusual dict keys.
- Screen scrolling problem in Playground folders.
## [0.4.3] - 2019-02-13
### Added
- The `string_types` and `PY2` names, imported from the `six` package.
- The `allow non-idempotent questions` specifier in `metadata`.
### Changed
- The `post` screen part is now positioned below the `right` screen
part on small screens.
### Fixed
- The screen parts feature was not fully implemented and documented.
- The `required privileges` feature was not fully implemented.
- Editing yourself through `/userlist` would disable yourself.
- Error with text-to-speech cache.
- Non-required file upload variables were being set to `'None'`
instead of being ignored.
## [0.4.2] - 2019-02-10
### Added
- Additional SQL indexes.
- The `default screen parts` block.
- The `required privileges` specifier in `metadata`.
### Changed
- The `set_title()` function was renamed to `set_parts()` and now
supports setting any screen part.
### Fixed
- Error with OCR.
- Error with screen reader.
- Error with `concatenate_files()`.
- The current section when showing a `nav` in a question was not
always current.
- Wrong formatting of subsections in sections sidebar under some
circumstances.
## [0.4.1] - 2019-02-04
### Added
- Placeholder CSS classes for customization.
- Support for alternative Redis ports and database offsets.
## [0.4.0] - 2019-02-04
### Added
- The `DAPYTHONVERSION` Docker environment variable.
- The `text_type()` function.
### Changed
- The system is now compatible with Python 3.5.
- The `subdivision_type()` algorithm was improved.
### Fixed
- The update script failed under some circumstances due to a SQL
error.
## [0.3.36] - 2019-01-24
### Fixed
- Not all login methods were redirecting the user back to the
interview when they should have.
## [0.3.35] - 2019-01-22
### Added
- The `resume interview after login` configuration directive.
### Changed
- The `/api/session` API endpoint and the `set_session_variables()`
function now accept the `event_list` parameter and can get past
`force_ask()` diversions.
- More robust code injection detection mechanism.
### Fixed
- Unicode error with certain Spanish numbers.
## [0.3.34] - 2019-01-20
### Added
- Customizability of standard validation messages using the `validation
messages` field modifier or the `default validation messages` block.
- Option to `.geolocate()` method to populate attributes of `Address`
using a single-string address.
- Options for setting `alt_text` using `[FILE]`, `[QR]`, `.show()`,
and the `.alt_text` attribute on `DAFile` or `DAStaticFile`.
- The `.set_alt_text()` and `.get_alt_text()` methods of file objects.
- The `template password` option for `pdf template file` (new `docker
run` required).
### Changed
- Upgraded Pandoc to version 2.5.1 (new `docker run` required).
- UI changes for keyboard navigation of sections.
### Fixed
- Empty documents generated by Markdown were resulting in zero byte
PDFs rather than one-page blank PDFs from Pandoc.
- The field names on some types of PDF files were not being identified
correctly on the Utilities screen.
## [0.3.33] - 2019-01-16
### Changed
- API calls can be authenticated with an `X-API-Key` cookie or HTTP
header.
- API responses contain CORS-friendly HTTP headers.
### Fixed
- JSON error when running `ocr_file_in_background()`.
- XML error when assembling DOCX files.
## [0.3.32] - 2019-01-16
### Changed
- UI and HTML changes for accessibility.
### Fixed
- Timing of initialization of Google autocomplete fields resulted in
JavaScript error in some circumstances.
- OneDrive synchronization errors due to changes in the Microsoft Graph API.
## [0.3.31] - 2019-01-14
### Changed
- Additional information added to data representation of question.
- HTML more standards-compliant for accessibility.
### Fixed
- Package update process was not detecting missing packages.
- The watchdog's process terminations were causing unnecessary
internal server errors under high system load, mistaking a busy
Apache process for an out-of-control Apache process. The threshold
has been adjusted. The change will only take effect after a `docker
stop` and `docker start`. Alternatively, `docker exec` into the
container and run `supervisorctl restart watchdog`.
## [0.3.30] - 2019-01-05
### Added
- The `/api/login_url` API endpoint.
- The `/api/user_info` API endpoint.
### Changed
- The `/api/user/new` API endpoint will now create a random password
if a password is not provided.
### Fixed
- The `/api/user/new` API endpoint used `email` when the correct
parameter is `username`.
## [0.3.29] - 2019-01-03
### Added
- The `question_name` option for the POST method of the `/api/session`
API endpoint and the `set_session_variables()` function.
### Fixed
- Unicode error from `/api/secret`.
## [0.3.28] - 2018-12-31
### Added
- The `accept` specifier for `datatype: file` fields.
- The `create_user()` function.
- The `/api/user/new` endpoint.
## [0.3.27] - 2018-12-24
### Changed
- Table edit attribute names treated as "follow up" actions.
## [0.3.26] - 2018-12-21
### Changed
- Reverted `reconsider()` to 0.3.24 version.
## [0.3.25] - 2018-12-20
### Changed
- Exception raised if unsafe filename used for a `DAFile`.
### Fixed
- Problem with caching of stand-alone `attachment` blocks.
## [0.3.24] - 2018-12-17
### Added
- The `inline` keyword parameter for the `url_for()` method.
- The `describe()` method of the output of `date_difference()`.
### Changed
- The result of `date_difference()` when reduced to text now runs the
`describe()` method instead of stating the number of days.
- The `space_to_underscore()` function now uses
`werkzeug.secure_filename()` and replaces more than just non-ASCII
characters and spaces.
### Fixed
- Error in `.export()` method of tables.
## [0.3.23] - 2018-12-15
### Added
- The `get_question_data()` function.
### Fixed
- Error from Playground sidebar for interviews using `imports`.
## [0.3.22] - 2018-12-14
### Added
- Insertion of PDF files into DOCX files.
- Links in Playground sidebar to source code on GitHub.
### Changed
- Data representation of a question now includes plain attachment file
numbers.
### Fixed
- Not all thread local variables were reset before request.
- Unicode error when exporting README.
- Azure Blob storage missing content type.
## [0.3.21] - 2018-12-10
### Added
- The `object labeler` option in `fields`.
## [0.3.20] - 2018-12-08
### Added
- The `exclude_privileges` keyword parameter of the
`last_access_time()` function and related functions.
### Changed
- The `/api/user_list` API method and the `get_user_list()` function
now return a user's privileges under a dictionary key called
`privileges`. Previously the key `roles` was used.
### Fixed
- The `update()` and `has_key()` methods of `DADict` did not work.
- Multiple `template`s on a screen using iterators did not work
correctly.
- Browser back button sometimes required two clicks to go back one
step.
- Unhelpful error when uploading invalid file type to Wizard.
- Temporary PDF files accumulating in `/tmp`.
## [0.3.19] - 2018-12-02
### Added
- The `DAOrderedDict` class.
### Changed
- Protections against adding non-modules to Modules folder.
- Keep memory of visited sections when the available sections change.
### Fixed
- Visiting `/user/sign-in` or `/user/register` while being signed in
will now redirect to the `auto resume interview`, if any.
## [0.3.18] - 2018-11-30
### Fixed
- Unicode error in text to speech engine.
## [0.3.17] - 2018-11-30
### Added
- The `.show(editable=False)` option for tables.
- The `include_dict` option for `interview_list()`.
- The `formatted_unit()` method for `Address`.
### Changed
- Icons on the User List page highlighting users with special
privileges.
- Admin users cannot take away their own admin privilege.
- Admin users cannot disable their own accounts.
### Fixed
- Validation error messages in admin pages were black when they should
have been red.
- Typo in `.add_action()` method for `DADict()`.
- Error during `.export()` because `pandas` erroneously requires a
nanosecond attribute in dates.
- Error in `instanceName` guessing in the context of a function.
## [0.3.16] - 2018-11-26
### Added
- The `export()` method of tables.
## [0.3.15] - 2018-11-26
### Added
- The `overlay_pdf()` function.
## [0.3.14] - 2018-11-25
### Added
- The `.filter()` method of the `DAList` class.
- The `mmdc()` function for generating diagrams and flowcharts with
mermaid. Requires system upgrade.
## [0.3.13] - 2018-11-23
### Added
- "Sync and Run" button in the Playground.
## [0.3.12] - 2018-11-22
### Fixed
- Problem with `value()` using a variable as an iterator.
## [0.3.11] - 2018-11-15
### Added
- The `/api/playground` file upload feature.
## [0.3.10] - 2018-11-13
### Added
- The `page after login` feature.
## [0.3.9] - 2018-11-10
### Added
- The `allow for`, `required for`, `allow sms`, and `allow app`
options of `two factor authentication`.
- The `progressive` option for `sections`.
## [0.3.8] - 2018-11-04
### Added
- The `backup days` configuration directive.
### Fixed
- The `word()` function did not work on words with non-ASCII
characters.
- Empty fields question skipping did not work where variable was
attribute of a non-existent object.
- Interviews that changed the language changed the language of the Playground.
## [0.3.7] - 2018-10-28
### Fixed
- Error importing `textstat`.
## [0.3.6] - 2018-10-28
### Changed
- Validation is now applied in required fields so that spaces alone
cannot bypass validation.
- Color of pressed button now "secondary" rather than "success" and
colors of non-pressed buttons now "light" instead of "secondary."
### Fixed
- Problem with editing lists where the `complete_attribute` is not
defined by a `code` block.
- No proper error message when a non-text string is used as a variable
name in `fields`.
- Problems with locking-related changes from 0.3.5.
- Admin users were allowed to give `admin` privilege to users with
social logins.
- Python error in cron.py.
## [0.3.5] - 2018-10-23
### Added
- The `edit_url_only` and `delete_url_only` parameters to the
`item_actions()` methods.
- The `url_only` parameter to the `add_action()` method.
- The `url_ask()` and `action_button_html()` functions.
### Changed
- A `message` parameter to `add_action()` is now passed through
`word()`.
- Removed the new feature from 0.3.3 where interview answers are saved
before a `leave`.
- Different method of locking while copying playground modules.
### Fixed
- Percent signs in `number` fields may have avoided validation.
- Database access for chat log not protected by locking.
## [0.3.4] - 2018-10-20
### Fixed
- Links not appearing in the inline navigation bar.
- Toggle button not present in the vertical navigation bar.
## [0.3.3] - 2018-10-19
### Added
- The ability to set a `read only` attribute on a `table` to indicate
that some rows cannot be deleted or edited.
### Changed
- Editing a table will cause the definition of the `complete_element`
attribute, if any, to be recomputed after the `edit` attributes are
sought.
- Interview answers saved before a `leave`.
- Background task callbacks that raise exceptions will no longer save
interview answers.
### Fixed
- Dependencies not being properly scanned from `setup.py` files.
- Review screen resume button that set variable had unicode instead of
boolean data type.
- Text was not scanned for emojis unless `images` were defined or the
`default icons` directive was set.
- The `get()` method of `DADict` did not work.
- Random errors where dictionary cannot be retrieved (potential fix).
- The `minimum_number` feature introduced in 0.3.2 did not work on
`table`s based on `DADict` objects.
- Elements could not be added through `add_action()` when the list was
empty.
- The `rows` directive of a table resulted in an error if the
expression used a compound operator (e.g., `+`).
- Changes to fields made by remote user not reflected in observer window.
- Back button did not work when remote controlling.
- Updated deprecated pandas code in the machine learning module.
## [0.3.2] - 2018-10-13
### Changed
- Using `table` with a `DADict` now sets `row_index` to the key and
`row_item` to the value, and `DADict`s can be edited using tables.
- No delete buttons on a `table` when deletion would cause the number
of items to fall below `minimum_number`.
- The `edit` option on a `table` can now use reference indices as well
as attributes.
- The default `message` for the `add_action()` method on a group is
"Add an item" if the group is empty.
- Clicking on a navigable section header empties the action queue,
ensuring that clicking "Resume" puts the user back in the interview,
rather than the screen they saw before they clicked the header.
### Added
- The `delete buttons` option when using `edit` on a `table`.
- The `only_if_empty` option on the `reset_gathered()` method.
- The `slice` method of the `DADict` class.
- The `re_gather` attribute of groups to `basic-questions.yml`.
- The `follow up` option in a `review` block `fields`.
- The `reconsider()` function.
- The `preloaded modules` configuration directive.
- The `action_button_html()` function.
### Fixed
- URL for restarting interview session conflicted with another URL
when user logged in.
- `table`s could not appear inside of `review` blocks because they
were always undefined.
- Navigable section headers not styled correctly.
- One of two processes simultaneously loading the playground modules at
same time could encounter an empty directory.
- Screen loads through `url_action_perform()` did not show the
spinner.
- Some thread variables were not reset between requests.
- The OCR background function did not work, so rolled back celery and
kombu to 4.1.0.
## [0.3.1] - 2018-10-02
### Changed
- When a variable is force-asked or the goal of an action and a
`question` is not found, no error will be raised. This facilitates
the use of optional follow-up questions in a `review` block.
### Fixed
- Aliased template variables generated pickle errors.
## [0.3.0] - 2018-09-28
### Changed
- Upgraded OS from Debian stretch from Debian jessie. Upgraded pandoc
to version 2.3. LibreOffice upgraded to version in
stretch-backports. A system upgrade is required to realize these
changes.
- Setting a `minlength` on a `datatype: checkboxes` field turns off the
"None of the above" item.
## [0.2.102] - 2018-09-27
### Changed
- LibreOffice upgraded to version in jessie-backports.
### Added
- Options for `new_session` and `exit_logout` under buttons,
`command()`, and `url_of()`.
### Fixed
- Logging in with e-mail and password where e-mail already used for a
social login generated an exception.
## [0.2.101] - 2018-09-25
### Changed
- The `.copy_into()` method of `DAFile` now accepts `DAFile`,
`DAStaticFile`, `DAFileList`, and `DAFileCollection` objects as
the argument, as well as the direct file path of the other file.
### Fixed
- Problem with converting to PDF after `update references` for some
tables of contents.
- The `.copy_into()` and `.from_url()` methods now update PDF and
image information after the file contents change.
## [0.2.100] - 2018-09-23
### Added
- The `forget_result_of()` and `re_run_logic()` functions.
- Additional test interviews.
### Changed
- `note` and `html` can now be used to insert text in the right
column, along side a field.
### Fixed
- The `minlength` and `maxlength` modifiers did not work on
`checkboxes`.
- The `insert_docx_template()` function was not intercepting all
parameters of class `DAObject` and passing them as objects.
- Too many line breaks in .docx address block.
- Static file videos did not work.
- Static file videos were static width.
## [0.2.99] - 2018-09-19
### Added
- The `back button` and `back button label` modifiers.
- The `show login` directive in interview `metadata`.
## [0.2.98] - 2018-09-18
### Fixed
- Error in Word manifest XML file.
## [0.2.97] - 2018-09-18
### Added
- Playground "Variables, etc." for the Word task pane.
### Changed
- It is no longer necessary to remove curly quotes from .docx Jinja2
code. They will be converted to straight quotes before processing.
### Fixed
- Google Maps JavaScript was loading synchronously, which slowed down
loading.
- A `choices` list could not contain a list of numeric, boolean,
or `NoneType` values.
- `DAStaticFile`s could not be inserted into .docx templates.
## [0.2.96] - 2018-09-12
### Added
- Integration between Microsoft OneDrive and the Playground.
- The `debug` directive inside `features`.
### Changed
- Upgraded Font Awesome to 5.3.1.
## [0.2.95] - 2018-09-08
### Added
- The `update references` setting on `attachment`s.
## [0.2.94] - 2018-09-05
### Added
- The `redact()` function and `redact` option on `attachment`s.
### Changed
- The `template` and `table` blocks now become `DALazyTemplate`
objects rather than `DATemplate` objects. Their contents are
evaluated at the time they are reduced to text, not at the time they
are created.
### Fixed
- Problem with `currency()` and other functions when used from a `docx
template file` where undefined variables did not raise exceptions.
- The `create_new_interview()` function caused unnecessary 4 second delay.
- Users with `user` privileges could not access API key management.
- The `interview_url()` function was returning a URL based on how the
current request was made, rather than the actual URL for getting to
an interview.
## [0.2.93] - 2018-08-31
### Fixed
- Problem with `DATemplate` variables with string indices.
## [0.2.92] - 2018-08-27
### Added
- The `show progress bar percentage` feature.
### Changed
- The `background_response()` function can be called using
`background_response('refresh')` to refresh the user's screen.
## [0.2.91] - 2018-08-25
### Added
- The `getField()` and `setField()` JavaScript functions.
### Fixed
- The `fields` version of `background_response()` could not set radio
buttons.
## [0.2.90] - 2018-08-23
### Fixed
- Problem with checkboxes inside a `show if`.
## [0.2.89] - 2018-08-20
### Changed
- The `variables_as_json()` function now accepts `include_internal` as
a keyword parameter.
- The `variables_as_json()` function now produces pretty-printed JSON
output.
- Only ordinary users will see flash messages about switching to a
different interview.
### Fixed
- Template and static file deletion in Playground.
- Setting the instance name of items that are already in a list.
- Non-mandatory questions were being marked as answered in the
internal dictionary.
## [0.2.88] - 2018-08-20
### Fixed
- The recent version of WTForms is incompatible; set to 2.1.
- The `simplify` parameter of `get_session_variables()` was fixed to `True`.
## [0.2.87] - 2018-08-19
### Changed
- Moved interview HTML into a `<div>` to provide compatibility with
add-ons.
## [0.2.86] - 2018-08-17
### Added
- The `js show if` and `js hide if` field modifiers.
- The `val()` JavaScript function.
- The `continue button field` feature.
### Changed
- Upgraded Font Awesome to 5.2.0.
- Two `DAList`s added together will yield a `DAList`.
### Fixed
- `zip_file()` returned an empty archive when given a
`DAFileCollection`.
## [0.2.85] - 2018-08-15
### Fixed
- Problem with screen reader flagging help text with Markdown
formatting as a defined term.
- Problem with Internet Explorer passing through commas in numeric
values.
## [0.2.84] - 2018-08-13
### Changed
- Word processing files and text files can now be included in
documents in the same way that images can.
- Reducing a `DAFileCollection` to text no longer attempts to show all
versions in the collection, but only includes one.
## [0.2.83] - 2018-08-11
### Changed
- Playground UI highlights most recently edited files.
### Fixed
- Writing to `DAFile`s.
## [0.2.82] - 2018-08-08
### Changed
- Some exceptions raised by Jinja2 will now be accompanied by a
snippet of document context.
### Added
- Initial support for Travis CI deployment.
- Method `.slurp()` for `DAFileList`.
### Fixed
- Setting of text fields to `None` when the value is the string
`"None"`.
- Vertical alignment of section labels in horizontal mode.
- User text causing Pandoc to enter LaTeX math mode.
- Reconstruction of certain types of bookmarks after adding signature
to PDF.
- Addresses that normalize without a street address.
## [0.2.81] - 2018-07-31
### Changed
- Interviews are now served from `/interview` rather than `/`. This
change is backward-compatible.
- Error notification e-mails will no longer include the interview
variables as a JSON file unless `error notification variables` is
set to true in the Configuration.
- Non-mandatory blocks no longer get tracked in the internal
dictionary as having been answered.
### Added
- The `root redirect url` Configuration directive.
- The `include_internal` parameter of `all_variables()`.
- Warning if `mandatory` is used on a block that does not support the
`mandatory` modifier.
### Fixed
- Missing unique IDs for API calls.
- HTML typo in Logs page.
## [0.2.80] - 2018-07-24
### Added
- The `/me` resource with information about the user.
### Changed
- JSON returned by API and `/vars` is now pretty-printed.
- Referencing a non-existent section no longer triggers an error.
## [0.2.79] - 2018-07-21
### Changed
- The `append` method to the `DAList` class now accepts an optional
keyword argument `set_instance_name`.
### Fixed
- Any package name starting with `base` or `demo` was being blocked
when `allow demo` was not set to `False`.
## [0.2.78] - 2018-07-17
### Added
- The `index()` method of the `DAList` class.
### Changed
- File uploads are now at the top of the screen in Playground folders.
### Fixed
- Problem with `datatype: checkboxes` and `show if`.
## [0.2.77] - 2018-07-13
### Fixed
- The `post` HTML was missing on signature pages.
- The `value()` function was not working properly.
## [0.2.76] - 2018-07-11
### Fixed
- Possible fix for "group by" SQL error in `user_interviews()`.
## [0.2.75] - 2018-07-11
### Added
- The `step` option for `datatype: number` and `datatype: currency`.
### Changed
- Fields with `datatype: number` are no longer limited to two decimal
places.
### Fixed
- The "exit" command was logging the user out.
## [0.2.74] - 2018-07-11
### Added
- The `error help` configuration and metadata directives.
- The `.copy_shallow()` and `.copy_deep()` methods of `DAObject`s.
### Changed
- Error e-mails now attempt to attach the interview variables as a
JSON file.
### Fixed
- Error in cron about missing `session_uid`.
- Auth0 login was erroneously enabled by default.
## [0.2.73] - 2018-07-07
### Added
- The `set_instance_name` option for use with `elements` when
initializing a `DAList`.
- The `skip undefined` option for `review` blocks.
### Changed
- The `block()` method of `Address` now includes the word "Unit"
before the unit, if the unit exists.
- On iOS mobile devices, an `<optgroup>` is now added to `<select>`
via JavaScript.
### Fixed
- Vertical spacing between buttons in the Actions column of a table.
- Templates with variable names containing iterators were not being
regenerated.
- Default date values were not displayed in `fields`.
## [0.2.72] - 2018-06-27
### Fixed
- Error message when publishing to PyPI.
- Unicode error in YAML dump.
## [0.2.71] - 2018-06-21
### Added
- The `undefine`, `recompute`, and `set` options inside of a `review`
block.
### Changed
- To indicate that a multiple-choice under `fields` should use `radio`
buttons, a `pulldown`, or a `combobox`, use `input type` instead of
`datatype`. The `datatype` can then be set to something else, like
`number`. This change is backwards compatible.
- Removed sublocality from normalized addresses.
### Fixed
- The `show if` JavaScript comparison is now more lenient when the
values look like numbers.
- The `delete_all` function did not delete all interviews.
- The `defined` function did not work well with lists and dictionaries
in the process of being gathered.
## [0.2.70] - 2018-06-14
### Changed
- Calls to `force_ask()` and calls to actions now result in more
persistent variable seeking.
- Improved editing of lists.
### Fixed
- Using `show if` with `datatype: file`.
- Using `show if` with a value of `0`.
## [0.2.69] - 2018-06-12
### Fixed
- Section headers with hyperlinks.
- Google Drive with a large number of files.
## [0.2.68] - 2018-06-10
### Fixed
- Problems with Google Drive timestamps when cloud storage in use.
- Invalid use of echo in Dockerfile.
## [0.2.67] - 2018-06-09
### Changed
- When a non-text field is not required, and the user does not provide
a value, the variable will be set to `None`.
- Required field markers show differently in some contexts.
- Additional log messages for Google Drive.
### Added
- New Debian dependencies `ttf-mscorefonts-installer`,
`fonts-ebgaramond-extra`, `ttf-liberation`, and `fonts-liberation`
in Docker.
### Fixed
- Problems with Google Drive initial set-up.
## [0.2.66] - 2018-06-07
### Changed
- Code editing boxes are now sized relative to screen size.
## [0.2.65] - 2018-06-06
### Added
- Login via Auth0.
### Fixed
- Better error handling after uploads.
- Better error handling during software updates.
## [0.2.64] - 2018-05-31
### Added
- Feature for uploading files through dataurls to the Template Folder
of the Playground.
### Changed
- Comboboxes now accept free text input.
### Fixed
- PDF bookmarks restored after inserting images.
## [0.2.63] - 2018-05-25
### Added
- The `error notification email` configuration option.
### Fixed
- Error with PDF fields and signature overlay.
## [0.2.62] - 2018-05-23
### Added
- JSON interface to the "Variables, etc." and list of Playground
files.
### Fixed
- Error during invitation and registration.
## [0.2.61] - 2018-05-19
### Changed
- The `disable others` directive now accepts a list of fields.
- Most natural language functions now accept an optional keyword
parameter `language`.
- The `country` and `subdivisionfirst` database fields have longer
allowable lengths.
- Additional system phrases are translatable.
## [0.2.60] - 2018-05-15
### Fixed
- Error on registration page.
## [0.2.59] - 2018-05-15
### Added
- Horizontal navigation bar option.
- Option for disabling the `pip` cache when installing a package.
- The `validation_error()` function and the `DAValidationError` error
type.
### Changed
- The `interview_list()` function now returns `temp_user_id`.
### Fixed
- PDF assembly resulted in a missing AcroForm error in some circumstances.
- PyPI publishing code used out-of-date upload URL.
- Deleting session in multi-user interview deleted sessions for all
users.
- Visiting registration page while logged in did not redirect to My
Interviews page.
- An inappropriate error was raised about `validate` input validation
functions for certain input types and values.
## [0.2.58] - 2018-05-08
### Added
- Version number on the Package Management page.
### Fixed
- Problem with checkboxes inside of `show if`.
- CSS problem with the "required" asterisk.
## [0.2.57] - 2018-05-07
### Added
- The `validation_error()` function.
- The `num_pages()` method on `DAFile`, `DAFileList`, and
`DAFileCollection` objects.
### Changed
- On the mobile `signature` page, the "Clear" button is replaced with
a "Back" button.
- Python `validate` code now works on document uploads.
### Fixed
- The `question back button` was missing from the buttons on the
desktop `signature` page.
- Problem with spacing of the `question back button` next to other
buttons.
## [0.2.56] - 2018-05-07
### Changed
- The `min` and `max` field modifiers on `datatype: date` fields now
accept a wider range of date formats.
## [0.2.55] - 2018-05-06
### Changed
- The `DACloudStorage` object can now be initialized to use
Configuration directives other than `s3` and `azure`.
- The `min` and `max` field modifiers now work with `datatype: date`.
### Added
- The `slurp()` method for `DAStaticFile` objects.
- Support for editing HTML and other text file formats in the Static
Files folder of the Playground.
### Fixed
- List of branches in pull-down cut off at a certain length.
- Live Help had problems with encryption.
- Missing help button on `field` with `choices`.
## [0.2.54] - 2018-05-05
### Fixed
- Bug in `set_info()`.
## [0.2.53] - 2018-05-02
### Changed
- Social logins now populate first and last name in the user profile.
- The `all_variables()` function now has an optional keyword argument
`special` that returns information about an interview that is not
stored in the variables.
### Added
- Support for `long_description` in setup.py files.
### Fixed
- Update button in `/updatepackage` reverted package to `master`
branch.
- Unicode problem in `/logs`.
## [0.2.52] - 2018-05-01
### Fixed
- The setup.py file for `docassemble.webapp` did not depend on
particular versions of `docassemble.base` and `docassemble`.
## [0.2.51] - 2018-05-01
### Changed
- The `advocate` privilege grants access to see user information using
the API.
- The `interview_list()` function and `/api/interviews` API now act
upon interviews of anonymous users.
### Fixed
- Questions not centered on screen when navigation bar in use but empty.
- Google Places API populating `unit` with `subpremise` and leaving
`city` blank.
## [0.2.50] - 2018-04-28
### Changed
- Upgraded user interface from Bootstrap 3.3 to Bootstrap 4.0.0.
- Headless Chrome now used by default in `lettuce` tests.
### Added
- The `show dispatch link` Configuration directive.
### Fixed
- Exception triggered by importation of word translation files with
YAML errors.
- The `indefinite_article()` function used "a" for any capitalized
word.
- Issue where Chrome extensions interfered with file uploads.
## [0.2.49] - 2018-04-15
### Fixed
- Use of deprecated flag when calling `pip`.
## [0.2.48] - 2018-04-14
### Changed
- The `Address` methods no longer require `.city` to be defined.
- The `Address` object and the `address autocomplete` feature now
use more of the possible address components of addresses returned by
the Google APIs.
### Fixed
- Bug in code for getting temporary URLs to cloud storage.
## [0.2.47] - 2018-04-12
### Fixed
- Problem with quoting glossary terms in HTML.
## [0.2.46] - 2018-04-11
### Fixed
- Bug in new `show if` code.
## [0.2.45] - 2018-04-11
### Fixed
- Identification of names of ZIP files uploaded through Package Management.
- Exception raised by Unicode non-breaking spaces in interview files.
- The `show if` JavaScript feature now works with checkbox values.
## [0.2.44] - 2018-03-31
### Added
- The `analytics id` subdirective of the `google` Configuration directive.
### Changed
- Nested `show if`s are supported.
### Fixed
- Exception caused by mandatory `review` blocks without an `event`,
`field`, or `sets`.
## [0.2.43] - 2018-03-28
### Changed
- JavaScript specific to a question now executes after `raw global javascript`.
### Fixed
- Exception caused by ampersands in docx template field values.
- Exception caused by unicode in parameters passed to `include_docx_template()`.
- Place Autocomplete returning `undefined` for some address components.
## [0.2.42] - 2018-03-25
### Added
- The `zip_file()` function.
- The `allow downloading` modifier.
- The `centered` feature.
- The `right` question part.
### Changed
- The `allow emailing` modifier now accepts Python code.
- Margins in navigation bar.
### Fixed
- Version of `Flask-User`.
## [0.2.41] - 2018-03-24
### Added
- The `DACloudStorage` and `DAGoogleAPI` objects.
- The `/api/file/<file_number>` API.
- The `delete_variables` option for the POST operation of the `/api/session` API.
### Changed
- Less stringent input sanitation so that Playground files with
parentheses can be deleted.
- Labels inside buttons will now wrap.
### Fixed
- Escaping of anchor text in `DALink`s.
## [0.2.40] - 2018-03-19
### Added
- The `.complete_elements()` method of `DAList` and `DADict`.
### Fixed
- Removed any dependency on `import pip`.
## [0.2.39] - 2018-03-15
### Changed
- The `review` block can now be used with `field` instead of `event`.
- Temporarily removed warning about `content file`.
### Fixed
- Issue with pressing enter causing two screens to submit.
## [0.2.38] - 2018-03-14
### Added
- The `show interviews link` configuration directive.
### Changed
- The user profile link in the menu will always be shown if the user
has `admin` privileges.
- Different formatting of user list.
- Author name and e-mail in "Packages" folder of Playground.
### Fixed
- Problem with `show if` not recognizing `False` value of checkbox
yes/no field.
## [0.2.37] - 2018-03-10
### Added
- Example for `user_logged_in()`.
- Example for appending a row to a Google Sheet.
- The `scale` option for the `range` datatype.
### Changed
- The `include_docx_template()` function accepts keyword parameters.
This has the effect of including Jinja2 `set` commands at the
beginning of the included sub-document.
### Fixed
- Error when registering.
## [0.2.36] - 2018-03-08
### Added
- The `DALink` object type, which allows hyperlinks to be inserted
into .docx files.
### Changed
- The `showif()` and `showifdef()` functions can now be configured to
return a default value other than the empty string.
### Fixed
- Cron jobs and environment variables. This requires a system reset.
## [0.2.35] - 2018-03-06
### Changed
- Replaced Package Management with the former "Update a Package."
### Fixed
- Issues with unicode.
## [0.2.34] - 2018-03-06
### Added
- The `main page pre`, `main page submit`, and `main page post`
configuration directives.
- The `pre`, `submit`, and `post` metadata items.
### Changed
- Pressing enter has effect of pressing Continue, even on pages
without input elements.
### Fixed
- Issues with unicode.
## [0.2.33] - 2018-03-04
### Fixed
- Problem with using Upgrade button.
## [0.2.32] - 2018-03-04
### Added
- The `ldap login` configuration directive. Using this feature will
require a system upgrade (running a new instance), as the
`libsasl2-dev` `libldap2-dev` Debian packages are required
dependencies of the `python-ldap` Python module.
## [0.2.31] - 2018-03-02
### Added
- Configuration directives `use font awesome` and `default icons`.
- CSS support for Material Icons.
- The `question help button` feature.
- Ability to `label` the help tab.
### Fixed
- Reference to non-existent image file during image preloading.
- Error when reviving SMS session for which answers had been deleted.
- SMS interface bugs related to signatures and attachments.
## [0.2.30] - 2018-02-27
### Changed
- SVG instead of PNG for images in checkboxes and radio buttons.
### Fixed
- Page layout when side navigation bar in use.
- Slow submit time when many checkboxes are used.
## [0.2.29] - 2018-02-25
### Added
- The `define()` function.
- The features `question back button` and `navigation back button`.
- The `raw global css` and `raw global javascript` configuration
directives.
### Changed
- Main content block for page is now centered on desktop.
### Fixed
- Problem with calling background action from code triggered by the API.
- Problem with including a table while gathering the rows of the table.
## [0.2.28] - 2018-02-08
### Added
- The `enable remember me` configuration directive.
### Changed
- The `repr()` of a `DAList`, `DADict`, or `DASet` is the `repr()` of
its elements, and `repr()` triggers the gathering process.
- The `.salutation()` method of the `Individual` object now uses the
optional attributes `.salutation_to_use` and `.is_doctor`.
### Fixed
- Problem with `exclude` on a manual list of choices.
- Lack of curly quote in "I don't know" buttons.
- JavaScript error introduced in 0.2.23 that interfered with `hide if`
functionality.
## [0.2.27] - 2018-01-31
### Added
- The `start_time()` function.
- The `package protection` configuration option.
### Changed
- The `last_access_time()` now returns the last access time as a
datetime object with a time zone; previously the object was "naive"
with respect to time zone.
### Fixed
- Problem with branch name of new GitHub repository.
- Problem with `as_datetime()` converting times to midnight when the
argument is already a datetime object.
- Problem with `noyes` and `noyeswide` checkbox fields.
## [0.2.26] - 2018-01-29
### Fixed
- Problem where `format_date()` was acting like `format_datetime()`.
## [0.2.25] - 2018-01-29
### Changed
- Tweaks to the `interview_url()` function.
### Fixed
- Unicode error on interview page after interview decryption failure.
- Problem with list gathering and `.there_is_another`.
## [0.2.24] - 2018-01-28
### Fixed
- Problem with missing uid in background tasks.
## [0.2.23] - 2018-01-28
### Added
- The `DADateTime` class.
- The `time` and `datetime` `datatype`s for fields.
- The `format_datetime()` function.
- The `/api/session/back` API and the `go_back_in_session()` function.
- The `/api/privileges` and `/api/user/<user_id>/privileges` APIs, and
the `manage_privileges()` function.
- The `.as_serializable()` method of the `DAObject`.
### Changed
- The `/api/session` POST API now returns the current question, unless the
`question` data value is set to `0`.
- The `/api/session` POST API now accepts file uploads.
- Changed the name "roles" to the name "privileges" in the
user-related APIs.
- The `set_user_info()` function can now be used to change user
privileges.
- Fields with `datatype: date` will now set a variable of type
`DADateTime`, rather than a plain text variable.
- The `today()` now returns a `DADateTime` object if it is called
without a `format` parameter.
- The JavaScript for the `show if` and `hide if` functionality now
animates the showing and hiding of fields.
## [0.2.22] - 2018-01-23
### Added
- Configuration directive `allow demo` for allowing demonstration
interviews in production mode.
- Ability to send e-mail using the Mailgun API instead of SMTP.
- The `decimal places` option for automatically formatting floating
point numbers passed to DOCX and PDF forms using `field code`,
`code`, or `field variables`.
### Changed
- If the `checkin interval` configuration directive is set to `0`, the
browser will not "check in" at all.
- When the `/api/session/question` API encounters an undefined
variable for which a definition is not available, it will no longer
return an error code, but will return a success code and indicate
what variable was not defined.
### Fixed
- Invalid HTML in navigation bar.
- Removed unnecessary invalidation of interview cache.
- Problem with address autocomplete when variable name contains a bracket.
## [0.2.21] - 2018-01-19
### Added
- The `get_chat_log()` function.
- An API interface.
- Administrative functions.
### Fixed
- Result of `user_interviews()` was reporting the wrong `utc_modtime`.
- Error with `google maps api key` when an `api key` alone was set under
`google` in the Configuration.
- Problem with formatting of chat log after going back into a session.
## [0.2.20] - 2018-01-14
### Added
- The `send_fax()` function for sending faxes using Twilio.
- The `include_docx_template()` function for including .docx content
within a .docx file.
## [0.2.19] - 2018-01-12
### Added
- Ability to run `interview_list()` on all users. Additional keys
`user_id` and `email` are included in results.
- Integrated the Place Autocomplete feature from the Google Places API.
### Fixed
- Bug in YAML parser triggered sometimes by fields with blank labels.
- Newline to space error in docx templates that affected Word but not LibreOffice.
## [0.2.18] - 2018-01-06
### Added
- The `user` and `environment` datatypes.
### Fixed
- Typo in HTML when `camera` and other HTML5 upload datatypes were used.
## [0.2.17] - 2018-01-04
### Changed
- Better features in background actions for handling exceptions.
### Added
- The `background_error_action()` function.
## [0.2.16] - 2018-01-01
### Fixed
- Problems with cron jobs, including an error in the documentation;
the variable is not `use_cron`, but `allow_cron`.
## [0.2.15] - 2018-01-01
### Changed
- When filling a PDF form, the Document JavaScripts and Field
Calculation Order of the template file will be reproduced in the
resulting PDF file.
- When concatenating PDF files, the Document JavaScripts and Field
Calculation Order of the first file will be reproduced in the
resulting PDF file.
### Fixed
- Problem with using specific person as sender of an e-mail.
## [0.2.14] - 2017-12-27
### Added
- Customizable 404 error message.
- The `any_true()` and `all_true()` methods for the `DADict` object.
### Fixed
- Typo in password complexity error message.
## [0.2.13] - 2017-12-24
### Added
- Ability to change the `password complexity` requirements in the
Configuration.
- Ability to control whether registering users must retype their
passwords.
## [0.2.12] - 2017-12-24
### Fixed
- The `for` attributes of `<label>` elements were mislabeled when a
field with `show if` defined the same variable.
## [0.2.11] - 2017-12-18
### Fixed
- Problem with validating fields inside `show if`.
## [0.2.10] - 2017-12-15
### Fixed
- Problem recognizing string indices in code.
## [0.2.9] - 2017-12-15
### Fixed
- Problem with dictionaries inside of dictionaries.
- Some of the administrative page customizations did not work.
## [0.2.8] - 2017-12-14
### Fixed
- Inserting images into PDFs using `field code`.
## [0.2.7] - 2017-12-13
### Added
- Configuration directives for inserting HTML, CSS, and JavaScript
into administrative pages.
## [0.2.6] - 2017-12-12
### Fixed
- GitHub pagination problem with `links_from_header`.
## [0.2.5] - 2017-12-12
### Changed
- The `global css` and `global javascript` now apply to all pages on
the site.
- Curly quote conversion is re-enabled.
### Added
- Password protection on generated PDF files.
### Fixed
- Documents with `variable name`s containing generic object or
iterator references can now be used with `attachment code`
- Error when uploading Zip file to Playground packages folder.
- Problem setting boolean character of yesno variables that are
specified using brackets.
- Problem with referring to `get_url_from_file_reference()` outside of
request context.
## [0.2.4] - 2017-12-06
### Changed
- Automatically remove newlines from e-mail subject lines
- PDF thumbnails now have the filename as the "title."
- Background tasks no longer try to process responses if exception
triggered.
### Added
- Ability to set `exit link` and `exit label` in metadata and
`set_title()`.
### Fixed
- Error when pulling "master" branches of GitHub packages into the
Playground.
- Flash message showing when interview YAML file changes and "allow
login" is False.
## [0.2.3] - 2017-12-04
### Changed
- Turned off automatic curly quote conversion until Unicode error
in textstat can be fixed.
## [0.2.2] - 2017-12-04
### Added
- Pulling and pushing using GitHub branches.
- The `.failed()` method on result of background task.
## [0.2.1] - 2017-11-30
### Changed
- The hard-coded limit on JSON nesting depth, which was mentioned
in the 0.2.0 changes, has been changed from 6 to 20.
### Fixed
- Apache could not start unless Docker container started with a
`DAHOSTNAME`.
- GitHub push using GitHub integration failed because of an SSH
issue.
## [0.2.0] - 2017-11-29
### Added
- The `logo` option of `set_title()` and `metadata`.
### Changed
- The `all_variables()` and `variables_as_json()` functions now
contain a limitation on nesting depth. The limit is hard-coded at
6 levels, after which values will be "null." This is to prevent
exceptions being triggered by circular references.
- Setting Google Drive Synchronization folder to "Do not link" will
now erase the connection between the OAuth app and the user.
- When populating PDF checkboxes, passing `None` to the checkbox or to
the `yesno()` or `noyes()` functions will result in the box not
being checked.
- Apache web server variables are now reset after a restart (e.g.,
after the Configuration is changed.
- When pulling the contents of a **docassemble** extension package
into the Playground, it will now remember the GitHub URL or PyPI
package name so that when you go to Pull again, you will not need to
retype. This works even if you have not enabled GitHub integration.
### Fixed
- PDF checkbox inconsistencies.
- Git pull into Playground packages without integration generated an
error message.
- When datatype is object and variable existed, it would try to reduce
the object to text in order to see if it should be highlighted as a
pre-selected default value.
## [0.1.99] - 2017-11-23
### Added
- Option for changing the UID and GID of www-data within the Docker
container, so that `/usr/share/docassemble/files` can be mounted as
a Docker volume and the Playground files can be edited.
### Changed
- Multiple choice questions in `fields` will set boolean `True` or
`False` if those are the only options.
- Additional headers are set to enable cross-site resource sharing
if the CROSSSITEDOMAIN variable is set.
- Apache configuration files in Docker are configured differently;
existing site configuration files will not be overwritten and
configuration options are now implemented as Apache variables.
- `DAList` objects now work with the `+` operator; a regular list can
be added to a `DAList` but not the other way around.
### Fixed
- The `uncheck others` feature triggered an error if it was not the
last field.
## [0.1.98] - 2017-11-20
### Changed
- Going to "/exit" will now log out the user, if the user is logged
in.
- When using `&json=1` for JSON responses, the `interface()` function
will return `'json'`.
### Added
- Action for `logout`, which works like `exit` but also logs the user out.
### Fixed
- Default values in object choices.
## [0.1.97] - 2017-11-14
### Fixed
- JavaScript issue with buttons.
- Problem with Playground interviews not being decrypted.
## [0.1.96] - 2017-11-12
### Fixed
- JSON conversion problem when using `/interviews?json=1`.
## [0.1.95] - 2017-11-12
### Fixed
- Bug in 0.1.94 regarding detection of variable names.
## [0.1.94] - 2017-11-12
### Fixed
- Improved detection of variable names in code.
## [0.1.93] - 2017-11-10
### Changed
- The `Individual` class no longer initializes the `child`, `income`,
`asset`, and `expense` attributes, but there are `objects` blocks in
basic-questions.yml that will initialize these attributes.
- The `Organization` class no longer initializes the `office`
attribute, unless `offices` is provided as a keyword parameter
during object construction.
### Added
- Interview tags system and the `session_tags()` function.
## [0.1.92] - 2017-11-09
### Added
- The `checkbox export value` option when using `pdf template file`.
### Changed
- The Markdown to HTML converter now uses the Attribute Lists extension.
- The `server_capabilities()` function now has a `google_maps` item.
- When the server is not in `debug` mode, users must be logged in as
with administrator or developer privileges to run interviews in
`docassemble.base` and `docassemble.demo`. In the SMS interface,
interviews in these packages are always inoperable unless the server
is in `debug` mode.
### Fixed
- The `server_capabilities()` was not recognizing the `enable`
settings.
## [0.1.91] - 2017-11-07
### Changed
- Exceptions triggered during code block execution will now show the
line, not just indicate the line number.
- The `server_capabilities()` function is now imported by default and
it reports additional features.
- The `interview_list()` function now returns interview metadata.
### Added
- Dynamically-generated `fields` items.
- The `cross site domain` configuration directive and
`CROSSSITEDOMAIN` environment variable, for enabling APIs to be
used.
### Fixed
- Azure blob storage fixes.
## [0.1.90] - 2017-11-05
### Changed
- New features in the `Address.geolocate()` method.
### Added
- The `Address.normalize()` method.
- The `session list interview` and `dispatch interview` configuration
directives.
## [0.1.89] - 2017-11-04
### Added
- Ability to use `json=1` with `/user/sign-in`, `/list`, and
`/interviews` pages.
- `interview_list()` and `interview_menu()` functions.
- Twitter login.
### Fixed
- Thread unsafe language setting.
## [0.1.88] - 2017-11-02
### Fixed
- `object_name()` raised an exception.
- Including MP4 videos did not work when OGG not provided.
## [0.1.87] - 2017-11-02
### Fixed
- `docx template file` combined with `code` resulted in error
due to recent change that attempted to provide better error
messages.
## [0.1.86] - 2017-11-01
### Added
- `decoration size`, `decoration units`, `button icon size`,
`button icon units`, and `button size` configuration options.
- `encode_name()` and `decode_name()`.
### Changed
- Clicking the back button when looking at question help will return
the user to the question.
### Fixed
- Width of images in .docx files.
## [0.1.85] - 2017-10-29
### Added
- Option for `google maps api key` in the `google` section of the
configuration.
### Changed
- A Google API key is now required for using `map_of()`.
## [0.1.84] - 2017-10-29
### Fixed
- UI issues when switching between help and questions tabs.
- Added `pop()` method to `DAList`.
- Machine learning errors when entries are blank.
## [0.1.83] - 2017-10-26
### Added
- The `log()` function.
- The `fields` option for `background_response()`.
### Changed
- Responses from `check in` events can use the `javascript` option of
`background_response()` to communicate results to the browser.
## [0.1.82] - 2017-10-26
### Added
- The `pdf_concatenate()` function converts word processing files.
- The `flash()` JavaScript function.
### Changed
- When using `complete_attribute`, list gathering will not
first seek a textual representation of the object.
### Fixed
- Inclusion of images in RTF when a width not specified.
- `value()`, `defined()`, and `undefine()` no longer raise exceptions
when passed constants or internal Python names.
- Errors in list gathering.
## [0.1.81] - 2017-10-25
### Changed
- Google Drive synchronization is now handled as a background task so
that it will not be interrupted by a web browser timeout.
### Fixed
- Uploads embedded in docx template files.
## [0.1.80] - 2017-10-23
### Added
- The `set_title()` function.
### Changed
- Interview title functionality in the `metadata` initial block.
### Fixed
- Image URLs to PDF page images with S3/Azure Blob Storage.
## [0.1.79] - 2017-10-23
### Fixed
- PDF page retrieval index error.
- File permissions issue in S3 that prevents server restart. S3 users
must upgrade the Docker image.
- Incorrect timestamps when downloading from persistent cloud storage.
## [0.1.78] - 2017-10-22
### Changed
- When using S3 or Azure Blob Storage, the files will now be cached
on the server file system and updated when they change.
- When using the Playground and S3 or Azure Blob Storage is in use,
and there are more than ten decorations, no preview images will be
shown in "Variables, etc."
- The values of `SavedFile` objects will be cached in memory for the
duration of a web request, so that when you create a new
`SavedFile`, attributes will be set from memory.
- The first argument to a `MachineLearner` object will no longer be
used as a literal `group_id`. Rather, an argument `'fruit'` it will
be converted into a group_id of the form
`docassemble.packagename:data/sources/ml-interviewname.json:fruit`.
You can still set a literal `group_id` using the keyword parameter
`group_id`.
- When an `initial_file` is given to a `MachineLearner` object, two
different formats can be used: an array, or a dictionary of arrays.
If a dictionary of arrays, the keys will be checked and if the key
matches the `group_id` (with the part before the final
colon, if any, removed), the array corresponding to that key will be
used.
### Fixed
- Playground wizard not including pdf and docx template files in package.
- Playground wizard not including static files in package.
- Playground wizard pickle error when using S3 or Azure blob storage.
- Bug where key 'sought' not found.
## [0.1.77] - 2017-10-20
### Added
- The `pdf_concatenate()` function.
### Fixed
- Missing dependencies for `RandomForestMachineLearner`.
## [0.1.76] - 2017-10-20
### Added
- `RandomForestMachineLearner` for machine learning with numeric and
categorical values.
- Context for `SyntaxError`s.
### Fixed
- `code` to specify fields in docx template.
- S3 problems.
## [0.1.75] - 2017-10-18
### Added
- `inline width` field modifier for embedded fields.
- `DAStaticFile` object.
- `set_data()` and `get_data()` methods for `DARedis`.
### Fixed
- `DAFile` initialize function now handles keyword arguments as
advertised.
## [0.1.74] - 2017-10-15
### Added
- `data` block.
### Changed
- Validation errors for embedded fill-in-the-blanks elements now
appear under the fields.
- Embedded radio buttons and checkboxes now use standard HTML
input elements.
- Embedded currency fields use standard text to represent the currency
symbol.
## [0.1.73] - 2017-10-15
### Changed
- Referring to a non-existent DAList item after the list has been
gathered will now generate an exception.
### Fixed
- Brought back gradients on buttons, which had been removed in 0.1.72.
## [0.1.72] - 2017-10-14
### Added
- `bootstrap theme` and `inverse navbar` features and configuration
directives.
### Fixed
- CSS and JavaScript files imported through features without a
specified package now use the package of the features block.
- Logout now deletes cookies.
## [0.1.71] - 2017-10-11
### Changed
- `currency()` now returns `''` on non-numeric input.
### Fixed
- AWS secret access codes with slashes.
- Recognition of iterators with constant integers.
## [0.1.70] - 2017-10-10
### Added
- Method `item()` for `DAList` and `DADict`.
- Lettuce tests in directory `tests`.
### Changed
- Playground variable detection now shows attributes.
- Playground variable detection now adjusts for temporary Mako variables.
- The `split()` function now splits on newlines.
- Playground no longer loads each example interview into memory.
### Fixed
- Template file Google Drive deletion.
- Problem with pickling result of `.using()`.
- Scanning for variable names involving patterns like `[i][j]`.
## [0.1.69] - 2017-10-05
### Added
- Class method `.using()` for adding parameters to object definitions.
### Changed
- Backups only kept now for 14 days. Container upgrade necessary.
### Fixed
- Use of iterators and generic objects in `if` modifiers.
- Azure cron backup. Container upgrade necessary.
## [0.1.68] - 2017-10-05
### Added
- `if` modifier.
### Changed
- Interview cache invalidation now handled through thread local
variables and a redis counter, rather than by modification times on
YAML files. This may avoid potential problems with Google Drive
sync.
- Google Drive sync now has a page that tells the user not to stop the
web browser.
### Fixed
- Error on URL redirection.
- Playground package page asking for GitHub sign-in after expiration
of credentials.
- History on error page restored.
## [0.1.67] - 2017-10-02
### Added
- Warnings in the Playground when use of a particular file name would
overwrite an existing file.
- Functions `yesno`, `split`, `showif`, `showifdef`, and `phone_number_part`.
### Changed
- Fields in a PDF fill-in form can be specified as a list of dictionaries.
### Fixed
- When `maximum image size` in effect, files that got converted to PNG
by the browser still had original file extensions.
- Typo introduced in 0.1.65 affecting the processing of lists of
choices in multiple-choice questions.
## [0.1.66] - 2017-10-01
### Fixed
- Problem with empty upload fields.
## [0.1.65] - 2017-09-30
### Changed
- More consistent behavior in multiple choice listings.
- When a multiple choice question's choices are determined by code,
the image can be an uploaded file.
### Added
- The `if` modifier.
- The `scan for variables` modifier.
- The `dispatch` function.
- The `has_been_gathered()` method on groups.
- More expansive error messages in debug mode.
### Fixed
- Errors if variable names in `question` blocks are invalid.
- Error in `date_difference()`.
- Layout problem when sections and progress meter both turned on.
## [0.1.64] - 2017-09-26
### Fixed
- Gathering of Asset items.
## [0.1.63] - 2017-09-26
### Added
- Example of editing a list after it has been gathered.
### Fixed
- Embedded fields where the variable names contain iterators.
- Lists instanceNames adjusting after removal of a list element.
## [0.1.62] - 2017-09-24
### Changed
- Fields can now be embedded in `note` text.
### Added
- Multiple choice type `combobox` and `datatype: combobox` for
`fields`.
### Fixed
- Mandatory multiple-choices questions with embedded code blocks.
- `DAList` and `DADict` objects in choices lists.
## [0.1.61] - 2017-09-23
### Changed
- After back button is pressed, defaults will be populated on fields
that accept defaults.
### Added
- Methods on `DAFileCollection` so that it can be used like a
`DAFile`.
- `run_python_module()` function.
### Fixed
- Checkbox defaults specified as `DADict` objects not recognized.
## [0.1.60] - 2017-09-21
### Changed
- Added a new type of infinite loop detection.
## [0.1.59] - 2017-09-21
### Changed
- Added a different type of infinite loop detection.
## [0.1.58] - 2017-09-19
### Added
- Multiple choice type `dropdown`.
- Code example for `fields` dropdown.
### Fixed
- YouTube video widths not responsive.
- Javascript and CSS files in features not loading without full
package/file references.
## [0.1.57] - 2017-09-19
### Fixed
- Bug that affected some file-related operations.
- Detection of infinite loops.
## [0.1.56] - 2017-09-17
### Changed
- The way that the `objects` block gets executed has changed. It no
longer executes as a mandatory block unless it is marked as
mandatory.
- In addition, the way that questions are asked has changed
accordingly. If any fields that would be set by the question have
attributes, **docassemble** will try to ensure that the underlying
variable is already defined, which may trigger a process of defining
the variable. This will ensure that objects mentioned in object
blocks will be created before they are necessary.
- These new changes enable the use of iterator variables like `i` in
`objects` blocks.
### Fixed
- Problem with deletion of keys on S3.
- Problem with response() on second and subsequent screens.
## [0.1.55] - 2017-09-16
### Added
- The `id` and `precedence` modifiers and the `order` initial block.
- The JSON interface.
## [0.1.54] - 2017-09-16
### Fixed
- Upgraded from boto to boto3.
- Fixed issues with documents and cloud storage.
## [0.1.53] - 2017-09-15
### Fixed
- Problem with docassemble.base as a dependency in extension packages.
## [0.1.52] - 2017-09-15
### Fixed
- Problem with assembled documents on cloud storage.
## [0.1.51] - 2017-09-14
### Added
- JSON version of information on each screen.
### Fixed
- Problem with signatures in pdf fill documents.
## [0.1.50] - 2017-09-10
### Added
- Options for `maximum image size` to reduce size of uploaded images
in the browser before uploading.
- Interview feature `cache documents` for disabling document caching.
### Fixed
- E-mailing of assembled documents.
## [0.1.49] - 2017-09-07
### Added
- Additional document caching feature.
### Fixed
- Problem with caching of certain document types.
## [0.1.48] - 2017-09-06
### Added
- Option for `go full screen` that limits behavior to mobile only.
- Caching of assembled documents. Clicking on assembled documents
will now open them in a new browser tab rather than offering them
as attachment downloads.
### Changed
- In Google Drive synchronization, .tmp and .gdoc files are now
ignored.
### Fixed
- Spinner did not appear on signature pages.
- Date validation forcing input even when date not required.
- Images included in terms not appearing unless fully qualified.
## [0.1.47] - 2017-09-04
### Added
- Function `referring_url()` for accessing the original "referer" URL.
- Feature `go full screen` for breaking out of iframes.
- Support in Docker for MySQL connections.
### Fixed
- Error accessing machine learning training area.
- Undefined mimetype error with e-mail receiving feature.
- "Next will be" message in SMS interface skipped `note` and `html`.
## [0.1.46] - 2017-09-02
### Added
- Methods `.true_values()` and `.false_values()` for `DADict`.
### Fixed
- Multiple choice questions where list of selections is empty.
- SMS interface for multiple choice questions where list of
selections is empty.
## [0.1.45] - 2017-08-31
### Added
- Configuration directive `password login`, which will hide the
username and password fields on the login screen.
### Fixed
- Better error messages when packages fail to install.
- Better error messages in `worker.log` when background processes
do not complete.
## [0.1.44] - 2017-08-30
### Changed
- Datatype `object_checkboxes` will now create the variable if it does not
exist.
### Fixed
- Control mode submitting clicks twice in some circumstances.
- Voice call forwarding.
- Duplicate checkbox validation error message.
- `send_email()` did not e-mail .docx files when given
DAFileCollection objects.
- Inconsistency in handling of nested questions.
## [0.1.43] - 2017-08-27
### Fixed
- Extraneous call to checkin for chat log.
- Clicking elements in control mode in live chat.
- Problems with db table prefixes.
- Adjusted to changes in flask-user.
- Downgraded to Debian jessie because there was a problem with corrupt
HTTP responses.
## [0.1.42] - 2017-08-24
### Added
- set_attributes() method for `DAFile` and `DAFileList` in order to
allow uploaded files to be used across interview sessions and not be
deleted when the session in which the file was uploaded is deleted.
- url_for() method for `DAFileList`.
### Changed
- Hyperlinks to actions (e.g., created through `url_action()` or
`action_menu_item()`) are now carried out through Ajax.
### Fixed
- Compatibility of UI elements with 'control' live help feature.
- Extraneous "Menu" entry in mobile menu when custom menu used.
## [0.1.41] - 2017-08-23
### Added
- Configuration directive `require referer` that allows users who use
referer blockers to use **docassemble**.
- `.show()` method for `DATemplate` objects, for interchangability
with images in `DAFile` objects.
### Fixed
- Error when `valid types` was set to `pdf` when `docx template file`
was in use.
- Typo in HTML of monitor page.
- Auto-updating of version numbers in package listing.
- Updating of package table so that core packages are retrieved from
pip, not GitHub.
## [0.1.40] - 2017-08-23
### Changed
- Upgraded from Debian jessie to Debian stretch
### Added
- Ability to specify filenames in `attachment` blocks using `code`.
### Fixed
- Error when GIFs inserted into RTF file.
## [0.1.39] - 2017-08-20
### Added
- Page where administrator can add users manually without going
through invitation process.
### Fixed
- Non-ASCII characters in PDF field defaults no longer stripped out
when scanning through utilities.
## [0.1.38] - 2017-08-16
### Fixed
- Bug in Alembic upgrade process
## [0.1.37] - 2017-08-16
### Changed
- Fields with `datatype: checkboxes` now have a "None of the above"
option by default, and input validation ensures that something is
checked. The `none of the above` field modifer configures it.
- After registration, users will bypass the "Interviews" screen and
go right back to their interview, if they have started an interview.
### Added
- Option in `fields` called `uncheck others` when `datatype` is
`yesno`, `noyes`, `yesnowide`, or `noyeswide`. Enables a yes/no
field to act as a "None of the above" option.
- "Upgrade docassemble" button on the "Update a package" page.
### Fixed
- Automatic login after registration was not working, so users had to
enter username and password information twice.
- Improved CSS for when name of interview on mobile is too long to fit
in navigation bar.
- Non-ASCII characters in PDF fields when scanning through utilities
no longer cause an error.
- Fixed problem introduced in 0.1.22 where interview data would be
destroyed when switching back to an interview during the same session.
## [0.1.36] - 2017-08-13
### Fixed
- Small typo that made 0.1.35 unusable.
## [0.1.35] - 2017-08-13
### Added
- Support for help text next to choices in a multiple choice list.
### Changed
- Database upgrades now handled by alembic by default. See the 'use
alembic' configuration directive.
- Extension packages no longer depend on the docassemble.base or
docassemble.webapp packages. As a result, installation of an
extension package will no longer trigger a total software update.
If you want to upgrade docassemble, upgrade docassemble.webapp.
Note that packages created in earlier versions will still have these
dependencies until they are regenerated in the Playground. You can
always edit `install_requires` in the setup.py file.
### Fixed
- Bug fixes to SMS interface.
## [0.1.34] - 2017-08-10
### Fixed
- Checkboxes became `DADict`s a few weeks ago but the auto-gathering
system on them was not turned off; it is turned off now.
## [0.1.33] - 2017-08-09
### Fixed
- Backwards compatibility for interviews started before `nav` added as
a variable in the user dictionary.
- Extension packages now depend on `docassemble.webapp` so that when a
package is updated, all of docassemble is updated, not just
`docassemble.base`.
## [0.1.32] - 2017-08-08
### Changed
- `force_ask()` can ask a series of questions.
### Added
- Configuration directives for customization of global Javascript and
CSS.
- Configuration directives for customization of start page and
interview list.
## [0.1.31] - 2017-08-07
### Changed
- Review page buttons now Ajax.
- Screen reverts to review page after field edit.
### Fixed
- Problem with PDF/A due to old version of pdfx.
## [0.1.30] - 2017-08-07
### Added
- PDF/A support.
- Navigation bar option.
### Fixed
- Problem with files when user logged in.
## [0.1.29] - 2017-08-03
### Added
- Input validation with Python code.
- Input validation for dates, in addition to the limited Javascript validation.
## [0.1.28] - 2017-08-01
### Fixed
- DADict object now defines ask_object_type by default
- Bug with `using` combined with `ml`.
## [0.1.27] - 2017-07-31
### Added
- `ml` and `mlarea` data types and training system.
### Fixed
- Better error message in Playground when interview has a syntax error.
- Problem with temporary files introduced in 0.1.23 that was causing
PDF fill-in to fail.
## [0.1.26] - 2017-07-25
### Fixed
- Minor git issue again.
## [0.1.25] - 2017-07-24
### Changed
- Back button style.
### Fixed
- labelauty issue.
## [0.1.24] - 2017-07-24
### Fixed
- Minor git issue.
## [0.1.23] - 2017-07-23
### Changed
- Additional deletion of temporary files through cron job.
### Fixed
- Improved performance by optimizing markdown and regex.
- Newer version of labelauty, with modifications to include benefits
of older version, for compatibility with IE/Edge.
## [0.1.22] - 2017-07-22
### Added
- `read_qr()` function.
- `new_object_type` option for groups.
### Changed
- The default for the `debug` configuration directive is now `True`.
### Fixed
- The `disable others` field modifier can now be used on a field with
the same variable name as that of another field on the same page.
- Term definition Markdown is now converted to HTML.
- Fixed bug with code blocks using iterators.
- Fixed problem with document attachments affecting data storage and
multiple application servers.
- Playground run now resets page counter.
## [0.1.21] - 2017-07-14
### Changed
- Checkboxes now create `DADict` objects rather than `dict` objects.
### Added
- `all_true()` and `all_false()` methods for DADict.
### Fixed
- Fixed bug when user invitation e-mail fails to send.
- Error message when code and question blocks are combined.
## [0.1.20] - 2017-07-10
### Fixed
- Fixed another bug in edit user profile page.
## [0.1.19] - 2017-07-10
### Fixed
- Fixed bug in edit user profile page.
## [0.1.18] - 2017-06-28
### Added
- Pull package into Playground with PyPI.
### Changed
- `initial` directive now accepts code, just like `mandatory`.
- Error page now returns 404 instead of 501 when user tries to access
an interview file that does not exist.
### Fixed
- Added MANIFEST.in so that README.md is included when packages are
bundled using setup.py.
- Uploading files to Playground now checks to make sure the file is
YAML and is readable.
## [0.1.17] - 2017-06-24
### Changed
- Updated the required system version to 0.1.17.
### Fixed
- If you updated the Python packages to 0.1.15 or 1.1.16 without
updating the system, you may have experienced an error. Now, if
changes to the Python packages alter the necessary PostgreSQL
columns or tables, those columns and tables will be changed upon
reboot after the updating of the Python packages, and will not have
to wait until an upgrade of the system.
- Fixed reference in Dockerfile to non-existent file.
## [0.1.16] - 2017-06-24
### Added
- GitHub integration.
- `dow_of()` function.
### Changed
- Changed PyPI username and passwords from a configuration setting to
a user setting.
### Fixed
- More stable transition when transitioning server from non-cloud data
storate to cloud data storage
- `month_of()` now uses defined language/locale rather than system
locale when `word_of` is `True`.
- Executables that run as root no longer writable by www-data.
- Turned off auto-start on sync supervisor process.
## [0.1.15] - 2017-06-18
### Added
- SMS option for two-factor authentication.
- Option for requiring confirmation of user e-mail addresses.
### Fixed
- Problem with apt-get update at start of Dockerfile.
## [0.1.14] - 2017-06-17
### Changed
- Renamed configuration directives from "second factor" to "two factor."
## [0.1.13] - 2017-06-17
### Added
- Two-factor authentication.
- Phone login.
## [0.1.12] - 2017-06-06
### Changed
- To facilitate GitHub workflow, attempted to preserve timestamps on
filenames in Zip files.
## [0.1.11] - 2017-06-04
### Changed
- Increased font size for better mobile experience.
## [0.1.10] - 2017-06-03
### Changed
- Look and feel of signature pages now match regular interface on
larger screens,
## [0.1.9] - 2017-06-02
### Fixed
- Various bugs from previous version.
## [0.1.8] - 2017-06-01
### Fixed
- Bug with Google Drive integration.
## [0.1.7] - 2017-06-01
### Fixed
- Bug with server-side encryption.
## [0.1.6] - 2017-05-30
### Added
- Google Drive integration.
## [0.1.5] - 2017-05-28
### Fixed
- Bug with logins in the middle of interviews.
## [0.1.4] - 2017-05-27
### Changed
- New algorithm for generic variables and index variables.
### Added
- Additional examples.
## [Unreleased] - 2017-05-26
### Changed
- PDF fill-in files now editable.
- Started using bumpversion.
- Started a changelog.