Created: April 6, 2026

Reliable Integrations, Accurate Absence Tracking, and a Smarter Project Setup Wizard

This release addresses fixes across six key platform modules. Most notable: restored the approval chain for absence requests, improved PM Agent responses to large data queries, and redesigned the project creation wizard with context-aware final status selection.

Release dates: 04/02/2026

Linear integration improvements

The "The next data update starts with" field now updates correctly after a successful sync. Fixed an issue where the last sync date for a Linear board was not being recorded in the project editing card (PM Tools tab): the field now automatically populates with a timestamp after a successful Linear data sync. Behavior is now consistent with other integrations (Jira, GitLab, and Notion), where this field worked correctly.

Cascading deletion of alerts when removing a Linear board has been implemented. When a board is deleted, all associated alerts are now automatically cleared, including those related to expired tokens, sync errors, and other issues. This ensures data consistency and prevents stale notifications from appearing after the source has been removed.

Absence improvements and fixes

Email notifications to approvers have been restored upon absence request creation. Fixed a critical issue where approvers were not receiving notifications about new requests. Now, when a vacation, day-off, or sick leave request is created, the full notification chain executes correctly, and email notifications are successfully delivered to all approvers regardless of absence type.

Mandatory approvers are now correctly assigned to employees when a request is submitted. Fixed an issue with automatic mandatory approver assignment: when submitting a vacation, day-off, or sick leave request, the system now correctly applies rules from "Absence Settings → Mandatory approvers" and automatically adds required approvers to the list. Auto-assignment logic has been restored in accordance with the absence type and employee category.

Vacation balance calculation has been fixed to account for approved requests in future periods. Fixed a critical error: previously, the system did not account for approved vacations scheduled in future months and only applied the deduction when the vacation month arrived — causing the displayed balance to be inflated. Now, all approved requests, including those starting in future periods, are immediately reflected in the absence history and affect the current available balance. This prevents a situation where an employee sees an incorrect balance and submits a new request that exceeds the actual limit.

Fixed incorrect validation of consecutive day-offs when a significant time gap exists between requests. Fixed an issue where the algorithm incorrectly blocked a request for 03.04.2026, citing an approved day-off from 09.03.2026 – despite a 25-day gap between the dates, far exceeding the allowed limit. The interval calculation algorithm has been corrected: the system now properly distinguishes truly consecutive day-offs from requests with a significant time gap. The "no more than two day-offs in a row, next one no earlier than 3 business days later" rule now applies only to genuinely consecutive requests.

Meetings improvements

Informative empty states for the "Summary" and "Transcription" sections have been implemented with processing status visibility. Four state types have been added for the meeting card and meeting list pages:

  • "Processing in progress" – shown during generation immediately after a meeting ends.
  • "Meeting processing in progress" – when the exact processing time is not determined.
  • "Oops! Something went wrong with a "Retry" button – for loading or generation errors.
  • Empty meeting list state with a description and a clickable link to Enji Conference Bot and the setup guide.

On the meeting card page, empty states are shown only in the content area (Summary and Transcription tabs), preserving the right panel with meeting details. On the meeting list page, the empty state occupies the full content area and includes complete onboarding text, including information about contacting support to enable Conference Bot if it is not included in the current subscription plan.

An interactive "How it works?" tooltip with Conference Bot setup instructions has been added to the Meetings page. A "How it works?" button has been added to the "Meetings" page header. Clicking it opens a panel with a step-by-step guide to using Enji Conference Bot: invite the bot to a meeting → wait for it to join → run the meeting as usual → get a summary and processing timeline. The bot's email address is an interactive element – hovering highlights it as a link, and clicking copies it to the clipboard with a "Copied to clipboard" notification for 2-3 seconds. The bot's address is loaded dynamically depending on the instance. The panel supports light and dark themes and closes when clicking outside of it.

IMPACT: New users get all the information needed to connect the Conference Bot in one click directly on the Meetings page – without searching for instructions in the Help Center.

Fixed UI behavior when a user lacks permissions to reassign meetings; new access roles have been added. Removed inconsistent error messages and an unexpected redirect from the "Meetings" page when attempting to reassign a meeting without the required permissions. A clear, unified insufficient permissions message is now displayed, and the user stays on the current screen without losing context. New "Meetings Admin" permissions have been added to the access scheme for PM, DM, CTO, and Stakeholder roles.

Project creation flow improvements

The "Final task statuses" field has been moved from the first wizard step to the integration setup step, with the "Fetch Statuses" button restored. The "Final task statuses on the project board" field has been removed from the "Add project" step and relocated to the task tracker connection dialogs on the second step: it now appears after the URL and credentials fields in the Jira and Linear connection windows. A "Fetch statuses" button has been added next to the field – it activates once the required connection fields (URL and token) are filled in and loads the list of available statuses from the tracker for selection via a multiselect dropdown. 

If loading fails, an inline error message is shown while still allowing manual status entry separated by commas. A default value of "Done" has been set for Fixed and Ongoing project types to avoid breaking dashboard metric calculations when no explicit selection is made. When adding multiple connections in one window, each has its own "Final task statuses" field with a "Fetch" button. The field remains required – the "Connect" button is disabled until it is filled in. This eliminates the situation where a user had to specify final statuses on the first step without yet knowing which tracker they were connecting to or what statuses it contained.

Error handling for status loading with an incorrect project key has been improved. When an invalid project key is specified, instead of technical errors like "504 Gateway Timeout" or "Network Error", the user now receives a clear message: "Invalid project key or no access: {PROJECT_KEY}". Correct handling of HTTP 404 from the Jira REST API has been implemented – it is returned both for non-existent projects and for missing Browse Projects permissions. This eliminates the situation where a typo in the project key produces an unclear technical error, forcing users to guess the cause and contact support.

Project key validation has been added to the board connection test. The "Test Connection" check in "Edit project → PM Tools" has been extended: in addition to server availability and credentials, it now validates the existence of the specified project key and the user's access rights to it. With an incorrect key, "Test Connection" now returns "Invalid project key or no access" instead of the misleading "Connection successful". This prevents a situation where a user saves a board with an incorrect key, receives no data, and cannot determine the cause.

Automatic Agile metric creation upon board addition has been disabled. When selecting final statuses while adding a new board in "Edit Project → PM Tools", three default Agile metrics (Bug, Task, Story) are no longer automatically created. The "Agile Metrics" section remains empty – users must explicitly create metrics with task types relevant to their project. This eliminates the silent generation of non-functional metrics with placeholder names.

A unified, informative error-handling system for integration connections has been implemented. A consistent set of clear error messages has been introduced for all integrations, replacing generic technical notifications:

  • "Could not reach the server. Check the URL and make sure it's accessible." – when the server is unreachable, or the URL is incorrect.
  • "Authentication failed. Check your username, token, or API key" – for invalid credentials.
  • "Resource not found. Make sure the identifier is correct" – for an incorrect project key, repository, or identifier.
  • "Access denied. The user doesn't have permission to access this resource" – when access rights are missing.
  • "Connection timed out. The server took too long to respond" – on timeout.
  • "Something went wrong. Please try again or contact support" – for other unexpected errors.

URL format validation has been added with the message "Invalid URL. Enter the server base URL (e.g., https://example.atlassian.net), not a page link" to prevent users from entering a page URL instead of the base URL. All messages are displayed inline next to the field that caused the error.

PM Agent improvements and fixes

Task link generation in PM Agent responses has been fixed. A deterministic link-processing stage has been implemented: the PM Agent now automatically converts all task key mentions into clickable Markdown links without involving the language model. A provider dispatch table with correct URL templates for Jira, Linear, and Redmine has been added, along with protection of existing links from reprocessing, a fix for a bug that captured semicolons in tracker URLs, and backward compatibility for previously saved data.

Project ID transmission for periodic tasks in PM Agent global chats has been fixed. Fixed an issue where the backend sent an empty project_ids list for periodic tasks created for "all projects". This caused missing data during vector search and prevented request processing. All available project IDs are now explicitly passed when executing periodic tasks in global chats – consistent with the behavior in project-specific chats.

PM Agent access to project chat data from BotFarm has been restored. Fixed an issue where Slack and Telegram chat data were successfully read and stored via BotFarm, but the PM Agent could not access it when answering questions about team communication. The llm_factory configuration has been corrected to ensure proper access rights. The PM Agent can now answer questions like "what was discussed in the project yesterday", "show discussions of task X in Slack", and use informal communication context to understand agreements, blockers, and decisions that are often captured in messengers rather than documentation.

The issue of incomplete PM Agent responses for large data queries has been resolved. A new module with an aggregate_large_result() function has been implemented: when a SQL query returns more than 100 rows (e.g., worklogs for 6 employees over a month – around 1,400 rows), the system automatically generates an aggregating CTE query that compresses the data to 18-50 rows using GROUP BY and string_agg() for text columns, preserving all task keys and descriptions within the aggregated rows. An aggregation system prompt has been added, instructing the model to use concatenation instead of destructive SUM() and AVG() operations, along with unit tests covering successful aggregation, execution errors, and integration scenarios. This resolves a fundamental issue in which the language model silently truncated responses to approximately 16,000 characters, returning data for only 2–3 of the 6 requested employees. Aggregation now occurs at the database level before data is passed to the model, ensuring complete coverage of all requested entities.

Worklog Report improvements

The "Not in SoW" status logic in Worklog Reports has been fixed. The SoW membership check has been reworked: the "Not in SoW" label is now assigned only to users who are physically not added to a SoW record – the presence of zero expected hours (Expected hours = 0) no longer affects the status. A user with a 0/0 hours indicator who is present in SoW is no longer labeled as "Not in SoW". A status caching issue has also been resolved, where the label was not removed after hours were updated from zero to a non-zero value.

Absence hours tracking has been added to Worklog Reports. The Total/Allocated column in the monthly Worklog Report and Global Worklogs now displays hours for approved absences from the Absences module. Working days are calculated using the company's production calendar at 8 hours per day; deduplication by calendar day prevents double-counting when absence periods overlap. When absence hours are present, a "+Nh off" suffix is displayed in the cell – elements appear in the following order: actual hours (bold) → absence suffix when N > 0 → planned hours (Allocated/SoW) on the right. The "Total" row at the bottom of the table does not display the suffix.