ProjectForge 9.0.4
- Notifications (experimental) in the app and by mail
- System dashboard with statistics, scheduler and caches
- Scripts in the new interface, also as buttons on selected pages
- Time sheets: no more overlaps on the same cost 2
- Fix: user-entered texts in mails no longer taken over as HTML
Overview
- Notifications (experimental): rules notify users in the app (toast, banner, menu counter) and by mail, also as a cascade; first rules for missing time sheets and expiring vacation days, plus manual messages.
- System dashboard: the problem dashboard becomes the system dashboard, with the system statistics and the new tabs scheduler and caches; problems (in German now "Störungen") can be changed many at once, the tiles count only open ones.
- Scripts: list, form and execution pages in the new interface with a code editor and toolbar; the output gets a tab of its own; a script can appear as a button on selected pages and gets their filter.
- Time sheets: bookings on the same cost 2 may no longer overlap; new configuration parameter for overlap groups.
- Rich text: markdown is shown formatted and taken over by the editor, which now offers headings and tables; also used for the message of the day and the AI-savings note.
- Forecast: snapshot date for the order book as of a given day, hint for the planning date.
- Lists and data transfer: exports in an Export menu; data transfer with capacity bar, configurable file columns and the activity log as a tab.
- Fixes: HTML in user-entered mail texts, poll mails, cancelled invoices count as paid, attachment rename, liquidity entries cloneable, task tree under concurrent changes, project list sorted by number.
All changes
Added
- Statistics, forecast
- New field snapshot date: the forecast is calculated from the order book as it was on that day.
- The tooltip of the planning date shows a hint maintained by finance in the new configuration parameter "Forecast" (formatted text with a small editor).
- Notifications (experimental): admins and finance can set up rules that notify users in the app (toast, toast to be confirmed or banner, with the levels info, important and urgent, optionally as a menu counter) and by mail, also as a cascade (e.g. a mail if not confirmed in the app within two days). First rules: missing time sheets and vacation days about to expire; a manual rule sends a message on demand. Recipients are groups, users and employees by status, by default only those concerned. Texts are formatted and contain variables such as the list of days without time sheets. Who confirmed a notification and when is recorded. The problem dashboard shows the state of the notification jobs. Approved vacation days no longer count as days without time sheets, also in the monthly report.
- Scripts: a script can be shown as a button with a tooltip in the top right corner of selected pages, e.g. the order book or other lists, and the forecast or contribution margin tab of the order statistics. The button opens the script's execution page, and the script gets the current filter of that page as variable pageContext (e.g. pageContext.list() for the shown entries).
- System dashboard: new tab "Scheduler"
- Lists every scheduled job with area, description, schedule, last and next run, duration and status; sortable, with the columns stored per user like every list; overdue and failed jobs stand out, also as a tile in the overview.
- The runs are stored per day (failed and slow runs one by one) and merged into months after 90 days.
- A job can be started at once; a run is skipped while the previous one is still running.
- System dashboard: new tab "Caches"
- Lists every cache with its state, last refresh, duration, expiry time and failed refreshes; a single cache or all caches can be refreshed by hand.
- Hanging cache refreshes are detected every minute, reported as problem and interrupted; stuck and failed caches also show up as a tile in the overview.
- The button "Refresh all caches" of the system page is replaced by the caches tab, which refreshes every cache, not only a fixed selection.
Improved
- Data transfer: the used capacity of an area is shown as a colored fill-level bar, in the list and in the file view.
- Mass update: the file name of the Excel protocol now contains the entity name (e.g. invoices).
- Configuration: the note on AI savings in time sheets and the message of the day on the login page are edited with the rich text editor (bold, italic, lists, links, colours).
- Problem dashboard: the key figures and the subsystem tiles now count only the problems that still need a look. Resolved, ignored and muted problems are shown separately below each figure, so handling a problem changes the tiles at once.
- Rich text: texts written in markdown (e.g. older tooltips and notes) are shown formatted instead of with their raw markup, and the editor takes them over directly; they are stored in the rich text format on the next save. Markdown pasted as plain text is converted as well. The editor now also offers headings (levels 1 to 4) and tables.
- System dashboard: the problem dashboard is now called system dashboard and also shows the system statistics in a tab of their own, which replaces their menu entry; old links are redirected. The statistics are part of the new interface and show each section as soon as its figures are collected instead of waiting for all of them. Memory, disks, the database connection pool and the database server connections are shown as fill-level bars, and new figures were added: pool configuration and maximum size, database version and size, CPU load, processors, physical memory, operating system, non-heap memory, garbage collection and thread counts.
- Code editor (scripts): a toolbar with undo, redo, search and replace and comment out, each naming its keyboard shortcut in the tooltip, and an info button listing all shortcuts. The search panel is shown at the top and in the user's language.
- Dark mode: the text is rendered in a lighter weight and smoothed, so it no longer looks overly bold on the dark background.
- Data transfer: the columns of an area's file table can be shown, hidden, reordered, pinned and resized like in every list; the layout and the sort order are kept per user for all areas.
- Lists: the exports (Excel, PDF, forecast, cost assignments, ics) are now in an "Export" menu right beside the gear menu, each entry with its explanation shown directly in the menu.
- System dashboard: with the multi selection, many problems can be picked at once and acknowledged, resolved, ignored, reopened, muted or unmuted together. In German the problems are now called "Störungen".
Changed
- Data transfer: the activity log of an area is a tab of its own (after Info) instead of a dialog.
- Scripts: the script list, the script form, "My scripts" and the execution pages are part of the new interface, with a code editor with syntax highlighting. The descriptions of a script and of its parameters are rich text (existing Markdown is converted on the next save). A stored script now always runs as stored; only the parameter values are taken from the form. Code executed directly (without a stored script) now runs as Kotlin instead of Groovy.
- Scripts: the output of an execution (result, log) is shown in its own tab, which opens after the run. A file to download is shown prominently at the top of both the output and the execution tab.
- Groovy scripts: only the Groovy core and its date, JSON, XML and template modules are bundled; the other modules (e.g. Ant, SQL, Swing, console) were removed.
Fixed
- Attachments: a changed file name or description was not saved.
- Project list: sorting by the number column had no effect.
- Personal box and employee fields: the "select me" button for picking oneself was missing.
- Time sheet list: the hint that the filter needs a date or structure element is now shown highlighted above the list instead of easily overlooked below it.
- Outgoing invoices: cancelled invoices and their cancellations now count as paid. They no longer appear under the filter 'unpaid' and are no longer included in the sums above the list (gross, net, open).
- Problem dashboard: a mail that couldn't be sent is now reported once as a mail problem, no longer a second time as an unexpected error of the function that sent it.
- Task list and task tree: no more sporadic internal errors while another user creates or moves a task at the same time.
- Attachments: long file names without spaces are wrapped in the attachment table instead of widening it.
- Liquidity planning: entries can be cloned again; a clone of a recurring entry is a standalone entry.
- Mails: names, titles, file names and texts entered by users are no longer taken over as HTML (e.g. in the mails of polls, data transfer areas, vacations and to-dos); only simple formatting and links remain in the mail text of a poll.
- Polls
- The links in the mails point to this installation instead of a fixed server; the link of the invitation works again.
- The reminder before the deadline goes only to the participants who haven't responded yet.
- The subject of the invitation no longer shows HTML tags; subject and text of the mail after the deadline are no longer swapped.
- Time sheets: no more overlapping bookings on the same cost unit
- Two time sheets of a user on the same cost 2 (or, without cost 2, on the same structure element) may no longer overlap in time, even if a shared cost element is involved. Before, e.g. a vacation could be booked twice for the same time if the cost 2 had no project.
- New configuration parameter "Time sheet overlap groups": groups of cost 2 number prefixes (e.g. "6" for all cost 2 units 6.*) whose time sheets never overlap; for shared costs, a group counts like one project. Visible to finance and controlling, changed only by members of both groups.
- Existing overlapping bookings are shown by the filter "Only collisions" of the time sheet list.
Security
- npm vulnerabilities in projectforge-next and projectforge-webapp fixed: @modelcontextprotocol/sdk, proxy-addr, sharp and source-map-js updated.
SHA-256 of projectforge-application-9.0.4.jar: 47595cb45f18b15f3830463a2177ddfc7d2ccfc3b74f4339c289e50e16cd6d78