| # Apache Roller — Changes | |
| ## 7.0.0 (in development) | |
| ### Improvements | |
| - **AtomPub can manage templates and categories.** New collections | |
| in each weblog's workspace, documented in the user guide: | |
| - Templates (standard and mobile versions) for weblog administrators, | |
| when the weblog uses a custom theme. | |
| - Categories, including an RFC 5023 category document at | |
| `/{handle}/categories.atomcat`. The entries collection lists its | |
| categories inline, as before, and also references that document. | |
| - **New AtomPub Guide** (`docs/roller-atompub-guide.adoc`). It documents | |
| every AtomPub URI, permission, element and status code, with examples | |
| that the test suite checks against the code. | |
| ### Bug fixes | |
| - **AtomPub fixes found while running a 7.0.0 snapshot.** | |
| - Uploaded media files get the usual extension for their type: | |
| `image/svg+xml` gives `.svg`, parameters such as `charset` are ignored, | |
| and a `Slug` that already has a matching extension keeps it. | |
| - The `next` and `previous` links of a named media directory include the | |
| slash before the offset, so paging through it works. | |
| - Characters that XML 1.0 does not allow are left out of AtomPub | |
| responses, so one stored control character no longer makes a whole page | |
| unreadable. | |
| - A file uploaded over AtomPub can be read back through its `edit-media` | |
| URI; it answered 404. | |
| - **The rich text editor's menus show their labels again.** Summernote is | |
| upgraded to 0.9.1, and the panel chevron no longer appears on the | |
| editor's menu items. | |
| ### Behaviour changes worth reading before upgrading | |
| - **Roller now runs on Jakarta EE** | |
| ([ROL-2183](https://issues.apache.org/jira/browse/ROL-2183)). It needs Java 17 | |
| or later and a Servlet 6.1 container such as Tomcat 11. Tomcat 9 and other | |
| `javax.servlet` containers can no longer run Roller. | |
| - **OAuth 1.0a is removed** ([ROL-2183](https://issues.apache.org/jira/browse/ROL-2183)). | |
| AtomPub accepts only BASIC authentication, and the OAuth credentials page and | |
| consumer keys are gone. If `webservices.atomPubAuth` is still set to `oauth`, | |
| AtomPub refuses every request until you set it to `basic`. | |
| - **OpenID 2.0 login is removed** ([ROL-2183](https://issues.apache.org/jira/browse/ROL-2183)). | |
| Sites with `authentication.method` set to `openid` or `db-openid` must switch | |
| to another method before upgrading. | |
| - **AtomPub no longer uses ROME Propono.** Roller now has its own AtomPub | |
| server. The `propono.properties` file and the `RollerAtomHandlerFactory` | |
| extension point are removed, so a deployment that configured its own | |
| `AtomHandlerFactory` (for example, for custom authentication) no longer has | |
| that handler. AtomPub clients see no change. | |
| ## 6.1.7 | |
| ### Improvements | |
| - **Pasted entry images are kept when you publish** | |
| ([ROL-2184](https://issues.apache.org/jira/browse/ROL-2184)). PNG, JPEG and | |
| GIF images pasted or dragged into the rich text editor are saved as media | |
| files when the author can upload. Otherwise they are kept inline. | |
| - `weblog.inlineImages.preferInline=true` keeps images inline even when | |
| uploads are available. | |
| - `weblog.inlineImages.maxFieldBytes` (default 60000) limits a content or | |
| summary field that has inline images. On MySQL, change the entry columns to | |
| `MEDIUMTEXT` before you raise it. | |
| - Bundled themes allow `data:` images. Custom themes with their own Content | |
| Security Policy need `data:` in `img-src`. | |
| - Pasted images travel in the form POST as base64. Tomcat's `maxPostSize` | |
| defaults to 2 MB, so larger pastes are refused with a "form is too large" | |
| message; raise `maxPostSize` to accept them. | |
| - **The one-time setup token is also printed to the console.** It still goes | |
| to Roller's log, and now also appears on standard output (for example | |
| `catalina.out`), so it is easy to find at first start. | |
| ### Behaviour changes worth reading before upgrading | |
| - **AtomPub honours `webservices.enableAtomPub` on every request.** While the | |
| setting is off, every AtomPub URL answers 404, not only the service document. | |
| - **AtomPub entry bodies default to a 1 MiB limit.** A larger entry is refused | |
| with 413. Set `webservices.atomPubMaxEntrySize` in Server Settings to change | |
| the limit in bytes (default 1048576). Media uploads use the existing file | |
| upload limits. | |
| - **Templates can no longer reach the objects behind the template wrappers.** | |
| `$weblog.pojo`, `$entry.pojo` and `getPojo()` no longer resolve in weblog | |
| templates. A custom theme that uses them will print the reference text | |
| as-is, without an error. Use the wrapper's own properties instead, for | |
| example `$weblog.handle` or `$entry.title`. | |
| - **Tag names can no longer contain `"`, `&`, `'`, `<`, `>` or `` ` ``.** | |
| These characters are removed when a tag is saved, and from existing tag | |
| names when they are shown. | |
| - **Planet is off by default.** `planet.aggregator.enabled` now defaults to | |
| `false`. While it is off, the Planet admin pages, `/planetrss` and the | |
| Planet background tasks (`RefreshRollerPlanetTask`, `SyncWebsitesTask`) do | |
| nothing. A site that uses Planet must set `planet.aggregator.enabled=true` | |
| in `roller-custom.properties` before upgrading. | |
| - **Planet admin changes require POST.** Saving or deleting Planet groups and | |
| subscriptions is refused unless the request is a POST from the admin form. | |
| - **XML parsing uses Apache Commons Secure XML.** Roller now bundles | |
| `commons-secure-xml` 1.0.0 and builds all of its XML parsers through it. | |
| - **Startup fails if the XML-RPC parser cannot be configured.** Roller used to | |
| log an error and continue. It now stops at startup, so check the log if a | |
| custom XML parser is on the classpath. | |
| ### Bug fixes | |
| - **Blogroll, category and ping target dialogs work again after a save.** | |
| Adding or renaming a blogroll, saving a bookmark, or saving a ping target | |
| then refreshing the page failed with an error page. So did retrying after a | |
| "name already in use" message. The page now picks up a new form token after | |
| each save. | |
| - **"Switch to blogroll" lets you pick a blogroll.** The page no longer reloads | |
| as soon as you open the list. | |
| - **Renaming a blogroll no longer reports a system error.** The rename was | |
| saved, but the page showed "System error - check logs". | |
| - **The blogroll, bookmark, category and ping target dialogs show why a save | |
| was refused.** Before, only a duplicate name was reported. Any other error, | |
| and on the blogroll dialogs even a duplicate name, closed the dialog as if the | |
| save had worked, or ended on an error page. | |
| - **AtomPub media collections work.** Listing a media collection by the URL in | |
| the service document (`/resources/default`) failed with a server error. So | |
| did uploading media with no `Slug` header and no title, uploading to | |
| `/resources` itself, or uploading with a very short `Slug`. Unknown media | |
| directories now answer 404. | |
| - **The Planet feed has a title before Planet Config is first saved.** On a new | |
| site, `/planetrss` printed `$utils.escapeXML($siteName)` as its title and | |
| description, and logged a warning for each. Unsaved Planet settings now use | |
| their defaults. | |
| - **Decimal settings can be saved on the configuration page.** The maximum | |
| upload file and directory sizes accepted only whole numbers in the browser, | |
| although they are measured in megabytes with decimals (default `2.00`). | |
| ## 6.1.6 | |
| Initial installation now requires a one-time, cryptographically secure setup token printed to the server log. | |
| Bootstrap access closes as soon as setup finishes — when the first administrator is created on a new site, | |
| or when the database upgrade completes on an existing one. | |
| A maintenance release. Users of 6.1.5 and earlier are encouraged to upgrade. | |
| ### Behaviour changes worth reading before upgrading | |
| Three features are retired in this release. Each was optional or long obsolete, | |
| but if you rely on one, plan for it: | |
| - **Incoming Trackback support is removed.** The Trackback endpoint no longer | |
| exists and is unmapped from `web.xml`. Sites that accepted Trackback pings | |
| will stop accepting them. `TrackbackLinkbackCommentValidator` is retained as | |
| an inert validator so an existing configuration that names it still starts. | |
| - **Outbound Trackback is removed.** The entry editor no longer sends | |
| Trackbacks, and the associated action and screen are gone. | |
| - **WSSE AtomPub authentication is retired.** `authentication.method` now | |
| accepts `basic` and `oauth`. An installation configured for `wsse` will fail | |
| closed on startup rather than silently falling back — change the setting | |
| before upgrading. | |
| Two more changes are visible in normal use: | |
| - **Media file content types are derived from file content** rather than the | |
| upload request, so a file whose declared type disagrees with its contents is | |
| now stored and served by what it actually is. | |
| - **Enclosure metadata is stored as submitted.** Adding an enclosure no longer | |
| fetches the remote URL to discover its type and length; both are taken from | |
| the media file or the submitted values. | |
| ### Improvements | |
| - Authoring resource lookups are scoped to the weblog the action is operating | |
| on. | |
| - XML-RPC Blogger and MetaWeblog handlers check the caller's weblog permission | |
| per method, and answer a disabled endpoint before doing any authentication | |
| work. | |
| - Vendor extension types are disabled on the XML-RPC servlet. | |
| - OAuth authorization is bound to the current Roller session, and approval is | |
| one-shot. | |
| - The CSRF filters keep the submitted salt and the salt issued for the response | |
| separate. | |
| - Weblog template resources resolve within the active theme. | |
| - Front-page selection moved into the administrator setup workflow, and | |
| front-page directory parameters are normalized before the bundled theme | |
| renders them. | |
| - Authoring UI event handlers moved from inline JavaScript onto data | |
| attributes. | |
| - Bookmark and configuration parsing share a single JDOM builder that treats a | |
| document strictly as data. | |
| - Table detection during installation is scoped to the database the connection | |
| points at. Installing into an empty schema on a server that also hosts | |
| another Roller database previously found that database's tables, skipped | |
| table creation, and then failed at startup looking for tables it had never | |
| created. MySQL installations are the ones affected, because Connector/J 8 | |
| changed `nullCatalogMeansCurrent` to default to false. | |
| ### Build and packaging | |
| - `assembly-release/sign-release.sh` takes the version and optional release | |
| candidate suffix as arguments, requires the signing key to be named through | |
| `ROLLER_SIGNING_KEY`, refuses a key that is not RSA-4096 or stronger, and | |
| writes SHA-512 and SHA-256 in `shasum(1)` format. | |
| - Four third-party jars are no longer shipped in the source distribution under | |
| `docs/examples/scripting/`. The examples' README files say where to obtain | |
| them. | |
| ## Earlier releases | |
| Release notes for 6.1.5 and earlier are in the announcements archived at | |
| <https://lists.apache.org/list.html?user@roller.apache.org>. |