0.7.0 (2026-08-11)
- [NEW] WebDAV folders can be marked private, and the privacy applies to the whole subtree — a file is hidden when it or any folder above it is private. The gate is the strictest one along the path and stays additive to the existing entity permissions. Copying preserves privacy including nested private subfolders, moving or copying a private subtree to another lead or project is refused, and trashing an inherited-private file keeps it hidden in the trash.
- [NEW] Users can follow leads, projects and tasks — the bell on the detail action bar and the list card quick menu toggles the subscription, and subscribers are notified of record updates, new replies, and participant or assignee changes. A subscriber list with management controls sits in the sidebar; who may subscribe and who may manage other people's subscriptions is granted per role.
- [NEW] Excel exports are generated in the background — the list used to hide the download link above 5,000 rows, so the users who most needed an export were the ones who could not get one. The export request is queued with its filters and sort, the workbook is rendered by a background job, and the requester receives an email with a download link. Progress is shown live in the list footer, a failed export can be retried from the same spot, and exports are purged after 7 days.
- [NEW] The central files page is split into Files / Trash / Audit log tabs, and the new trash tab lists deleted files across every lead and project, naming the record they came from, who deleted them and when.
- [NEW] Lead and project pages switch their content in place — the message, file and order buttons on the action bar swap between the activity feed, the file browser and the supplier order basket without leaving the record. The file view is further split into file browser, audit log and trash tabs, the order view into items and details tabs.
- [NEW] Reply channels can be created by hand, and now work on projects as well as leads. Until now a channel only came into existence when an email carrying its label arrived, which was too late for anyone who wanted to open a thread first and mail into it afterwards.
- [NEW] Mail can be written straight from the lead and project action bar — the envelope opens a menu of the general thread and every reply channel, and hands over a prefilled message with the filing address already on CC, so the answer files itself back against the record.
- [NEW] Lead and project list cards gained a quick menu — time logging, ticket attaching, files, orders, mail and the subscribe toggle are reachable from the list without opening the record.
- [NEW] The status can be changed from the dot on the action bar — clicking it on a lead, project or task opens a colour-coded status picker and applies the choice immediately. Without the update permission the dot stays a plain indicator.
- [NEW] Tasks show their parent — a shortcut button on the action bar labelled with the parent's type, the parent's identity as a data tile on the detail page, and the parent and type as tiles on the list card. The task status is also rendered as a coloured dot with the date it last changed, matching leads and projects.
- [NEW] The registry type column navigates to the record it names — each type tag links to its lead, project or invoice, and a converted registry gets one link per attached entity.
- [NEW] Shortcut buttons between a lead, its project and its supplier order on the detail action bars, permission-gated and greyed out when the counterpart is missing or out of reach.
- [NEW] The timesheet pivots gained a collapse and expand toolbar, a partner and registry number column — the number linking back to the lead or project — and a shortcut from every leaf row to the time entries behind it.
- [IMPROVED] Switching language is reliable again — the switch now reloads the page fully instead of performing a Turbo morph, which used to leave the registries filter sidebar, the slideovers and the forms inside them in the previous language until a manual reload. Because a reload discards client-side state, the switch always asks for confirmation first, not only when a form has unsaved changes.
- [IMPROVED] Notifications are written in the recipient's language. Reminder creation, task deletion and registry update notifications are stored as text rather than translated on display, so every recipient whose language differed from the actor's kept the wrong language permanently. Inbound email error notifications follow the recipient's language too.
- [IMPROVED] The filter sidebars on the lead, project, registry and invoice lists were rebuilt on the shared design system's form fields — applied filters stay selected after a reload, and the dropdowns keep opening downwards instead of flipping.
- [IMPROVED] The dashboard summary cards count what their list actually shows and open it pre-filtered — they previously displayed a filtered number but linked to the unfiltered list, and counted rows the list would never show. The KPI cards were rebuilt on the design system's stats card.
- [IMPROVED] The timesheet accepts one duration format everywhere. The log-time modal and the timesheet grid parsed input differently —
"2:"worked only in the modal,"1.5"silently saved 1 minute in the grid — so both now go through the same rules, capped at 24 hours, and invalid input is reported instead of the cell silently reverting. - [IMPROVED] Every email shares one design — the header bar, body panel and footer moved into a common layout on the same palette as the application interface, replacing five near-identical copies and two different button colours. All six emails can now be reviewed at
/rails/mailerswithout sending anything. - [IMPROVED] The WebDAV audit log records the path an operation happened at: deletes are logged at their source path with the trash as target, moves at their source rather than their destination, and permanent deletes under a dedicated purge action.
- [IMPROVED] The new lead form preselects the normal priority — the browser used to submit "Kritikus" for every untouched new lead — and the owner field is marked required, matching what the server already enforced.
- [IMPROVED] List cards lost the near-empty grey right column; the lead "closed" tag and the invoice status badge moved into the card header. Task badges render through the shared tag component, which also fixes the unreadably small task status.
- [IMPROVED] Buttons with no feature behind them on the lead, project and task action bars are greyed out instead of looking clickable, and the bar labels were translated.
- [IMPROVED] The supplier order panel was rebuilt from shared partials with its item table on the design system's datagrid, and discarding, downloading or deleting an item returns to the page you came from instead of the global order list.
- [IMPROVED] Attaching a helpdesk ticket works from a list — the picker loads per record into a shared dialog, an empty selection is refused instead of reporting a silent success, and the result of linking or unlinking is reported in the flash.
- [FIX] Authorization gaps closed across the WebDAV file manager, the trash and the audit log — read permission is now required for every trash action, the privacy gate applies to the trash, the audit log and the pinned files sidebar, unknown and forbidden paths answer alike, overwriting a file authorizes the file and not only its folder, and file search is scoped to the records the user may read. Permanently deleting a private subtree requires being able to see it, not just write permission.
- [FIX] The date beside the status dot on leads and projects was the creation date and never moved — the timestamp is now stamped on every status change. Status changes coming from a reply run the full chain, so the timestamp, the audit log entry, the broadcast and the "updated by" happen exactly once, instead of a project skipping them and a lead or task duplicating both the timeline entry and the notification.
- [FIX] The action bar refreshes after an update or a reply — winning a lead reveals the conversion button without a reload. The bar is rendered by the request rather than the record's broadcast, which had no signed-in user to resolve the permission-gated controls with and degraded them for every viewer.
- [FIX] A reply consisting only of empty markup is refused. A visually empty editor never submits an empty string — it serializes to markup like
<p> </p>— so replies with nothing readable in them could be created and then displayed with a "no message" placeholder. - [FIX] Export download links expire. The link was signed with no expiry and carried no session, so anyone who ended up with one — a forwarded link, a shared browser history, a proxy log — could fetch the workbook without logging in until retention purged it. Links now stop resolving five minutes after they are handed out.
- [FIX] A lead whose registry is missing renders again — the detail page raised for every lead inherited without one — and a lead's partner is resolved through its registry.
- [FIX] Smaller interface fixes: the file listing survives toggling hidden files, the layout no longer shifts when the scrollbar appears, cards keep their outline and keyboard focus ring in dark mode, a project without a deadline no longer breaks the list, and the file and parent links on list cards leave the results frame instead of failing with a missing content error.
- [FIX] Dropping an image into a reply editor works in the development environment again — the storage endpoint default pointed at a host name the browser cannot resolve.
- [CHORE] Bump
digital_view_componentsto v0.28.0 — stats card overflow, date picker and multi-language field spacing, and dropdown submenu stacking, single-open-chain and keyboard fixes. - [CHORE] Bump
mailbokserto v0.5.0 — read and unread state with an unread count, Mark All Read and Delete Read actions, and an auto-refreshing email list. - [CHORE] Documentation updates — the WebDAV guide covers the privacy gate, the tabbed file views and the audit log scoping, the authorization guide documents the subscription permissions, and the filter sidebar guide was rewritten on the form builder.
- [CHORE] Removed dead code and refreshed the database structure dump — the leftover timesheet pivot row partials, the unused lead status and priority endpoints, orphaned card styles, and the placeholder entries in the lead quick menu.
0.6.0 (2026-07-17)
- [NEW] Won leads can now be converted into projects on their own registry — a dedicated conversion form switches the registry from lead to project while keeping the filing number and the lead's history. This conversion is the only sanctioned way to change a registry's type; editing it directly is no longer possible.
- [NEW] The admin user groups screen was rebuilt as a collapsible hierarchy grid — groups and their members are shown in one tree with member-count pills, quick group creation, drag-free reparenting via a menu, a searchable member picker, and a membership dialog with a default-group marker. Deleting a group removes its whole subtree, but is refused while timesheet records still reference it.
- [IMPROVED] Timesheet redesign, part two — the "Munkaidő ráfordítás" pivot on the timesheet, leads and projects is now a collapsible tree grid with summary cards on top. User groups can be edited inline: on personal pivot rows (including template and "Other" rows) and on individual entries in the lead/project panels. Which groups are selectable follows the user's timesheet permissions — central editors can pick any active group, everyone else only their own groups.
- [IMPROVED] Automatically created timesheet entries (e.g. from helpdesk ticket replies) now inherit the author's default user group instead of landing ungrouped; existing ungrouped entries are backfilled on the next helpdesk sync, keeping manual assignments untouched.
- [IMPROVED] The registries list now shows the effective registry type — a registry carrying both a lead and a project displays both tags — and the effective type can be searched, sorted and filtered. Rows gained permission-aware shortcut buttons to the attached lead, project and invoice, and the registry page shows lead details alongside project details.
- [IMPROVED] The lead list search now also matches the registry display ID (filing number), the same way project search already does.
- [CHORE] Bump
digital_view_componentsto v0.26.0 — brings the nested grid features the new timesheet pivot and user groups screen are built on.
0.5.3 (2026-06-25)
- [CHORE] Removed Traefik from the production Docker Compose stack — TLS termination and routing are now handled by an external reverse proxy. Dropped the bundled
traefik/config directory, theacmevolume, and the now-unusedACME_EMAILvariable. No runtime behaviour change.
0.5.2 (2026-06-19)
- [CHORE] Dissolved the monorepo and flattened the PM2 Rails app to the repository root (no
services/pm2prefix,packages/and devcontainer removed) — no runtime behaviour change. Removed dead code surfaced during the flatten and consolidated all documentation underdocs/.
0.5.1 (2026-06-12)
- [FIX] Recover supplier orders that got stuck after being downloaded but never confirmed in ACTUAL — a new revert action moves the pending items back to draft so the order can be re-downloaded or deleted (already-processed items are left untouched). The list now also refreshes automatically after a download, so the row's actions reflect the order's new state instead of showing stale download/delete buttons.
- [FIX] A full re-sync of partner data no longer aborts when WebDAV audit log entries reference a partner — deleting a partner now clears the reference on its audit log entries instead of blocking the refresh.
0.5.0 (2026-06-08)
- [NEW] ddesk (railsHd) helpdesk webhook ingestion — PM2 receives ticket, reply, and settlement events at
POST /api/v1/integrations/ddesk, verifies an HMAC signature, and normalizes them into dedicated tables. Replies that logged time flow into the timesheet (reply = source, ticket = target). Seedocs/guides/ddesk-integration.md. - [NEW] Public REST API authentication via bearer tokens — service-to-service access through the new
/api/v1namespace. Manage keys with theapi_keys:create,api_keys:list, andapi_keys:revokerake tasks; seedocs/guides/api-authentication.mdfor the full lifecycle. - [NEW] Timesheet redesign — the "Munkaidő ráfordítás" pivot on leads and projects now splits logged time by source (Kézi for manual entries, Hibajegy for helpdesk tickets), and time logged on ddesk helpdesk ticket replies flows automatically into the timesheet against the originating ticket.
0.4.3 (2026-05-26)
- [NEW] Generate supplier orders directly from a lead's file manager — same XLSM-to-slideover flow that already works on projects, now also available on leads
- [FIX] File download from the WebDAV browser actually downloads again — Turbo Drive was intercepting the click and swallowing the response
0.4.2 (2026-05-12)
- [IMPROVED] Reworked the permission system around a new set of roles that matches the current organisation (Rendszergazda, Kereskedő, Back office, Műszaki, Műszaki vezető, Könyvelő, Operatív vezető) — each role now grants exactly the access it needs
- [NEW] Kereskedő and Műszaki users get a card-level overview: they see every lead, project and registry in the lists, but can only open the detail page of the ones they own, are assigned to, or take part in
- [IMPROVED] The activity timeline (replies and history) on a lead, project or task is now shown only to people involved in that record; everyone else sees the card without the timeline
- [IMPROVED] Reports now include only the records the signed-in user is allowed to see, and the reports section itself is limited to the Rendszergazda and Operatív vezető roles
- [IMPROVED] Admin panel access is limited to the Rendszergazda, Back office and Operatív vezető roles; managing roles and permissions and editing application settings stays Rendszergazda-only
0.4.1 (2026-04-24)
- [IMPROVED] Unified visual design across the app — buttons, tags, icons and dropdowns now all come from the shared
digital_view_componentsdesign system for a more consistent look - [IMPROVED] Icons throughout the app now render with the FontAwesome duotone-regular style for a softer, more readable appearance
- [IMPROVED] Action buttons at the top of project, lead, task, invoice and audit-log pages are now rendered at their natural size (previously they were shown too small)
- [IMPROVED] Manufacturer, lead-status and project-status tags now render at the default size instead of a cramped small size
- [IMPROVED] Project and lead cards have cleaner spacing in the left column, and the quick-menu button is a proper full-width button
- [FIX] Datagrid action buttons on the admin users, admin partners and manufacturers pages now show their icons again (they previously rendered as empty colored rectangles)
- [FIX] Icons on lead action buttons are visible again (they were silently blank because the classic-solid font family is not loaded)
- [IMPROVED] Bump
digital_view_componentsto v0.17.0 andcleargateto v0.0.6 - [IMPROVED] Bump
digital_view_componentsto v0.18.0 — internal slot API migration with no visible changes beyond a small baseline fix that aligns icons and text inside smaller buttons
0.4.0 (2026-04-22)
- [NEW] Generate supplier orders directly from project file manager — click an outgoing-offer
.xlsmquote to open a slideover, pick the rows to order, and create a supplier order in one step - [NEW] Supplier orders list, detail, and filter views — track lifecycle from draft through ACTUAL processing
- [NEW] Supplier orders are automatically advanced when matching receipts arrive from ACTUAL
- [NEW]
Kereskedelmi ügyintézőrole dedicated to supplier order processing - [NEW] UniCredit corporate FX sell rates on supplier order items — exchange rate is locked per item at creation time and displayed on the form
- [NEW] Audit logging and source-file change detection for supplier orders
- [NEW] Configurable tag actions — admins can map attachment tags to file actions (e.g.
outgoing_offer+.xlsm→ Generate supplier order) from the tag admin UI
0.3.4 (2026-03-27)
- [FIX] Truncate long subject text with ellipsis on lead and project cards
- [IMPROVED] Replace task filter comboboxes with OmniSelect components
- [FIX] Add missing slideover panes to leads files page
- [FIX] Preserve slideover form params after registry creation
- [FIX] Make contact method optional for lead and project registries
0.3.3 (2026-03-23)
- [FIX] Prevent rich text content overflow in activity timeline
- [FIX] URL-encode WebDAV path segments containing special characters
- [IMPROVED] Replace custom components with DVC components in WebDAV views
- [IMPROVED] Replace rich text area with DVC RichTextComponent
- [IMPROVED] Bump digitalviewcomponents to v0.14.1
0.3.2 (2026-03-13)
- [NEW] File manager now shows a breadcrumb path (Files / Trash) so you always know where you are
- [NEW] Dedicated Trash button with a Back link to return to your files
- [NEW] Up and Home buttons on mobile for easier file navigation
- [IMPROVED] Upload and folder-creation buttons are automatically hidden in system folders (root, trash, attachments) to prevent accidental changes
- [IMPROVED] Long file names are shortened in the middle (e.g.
my-very-long-file...name.pdf) instead of being cut off at the end - [IMPROVED] File list columns now have fixed widths so the table no longer jumps around when files load
- [IMPROVED] File manager dropdown menus now support keyboard navigation and are better positioned on screen
- [FIX] Clicking anywhere on an action bar button now works — previously only the icon itself was clickable
- [NEW] Daily totals row at the bottom of timesheet tables — quickly see how many hours are logged each day of the week
- [NEW] The central timesheet now shows placeholder rows for assigned users and participants, even before they log any time — so team leads can see who should be filling in their hours
- [NEW] Timesheet placeholders are now automatically created when a project or lead is assigned to someone, or when participants are added
- [FIX] Links in emails and notifications now point to the correct address in production (previously pointed to a placeholder URL)
- [FIX] Timesheet filters (employee, project, partner, user group) now keep their selected values after applying the filter
- [FIX] Week and page size selections are no longer lost when using timesheet filters
- [FIX] Dropdown menus in timesheet forms can now be properly cleared after selecting a value
- [FIX] The lead activity log now correctly shows who was assigned to a lead when the assignee changes
0.3.1 (2026-03-08)
- [NEW] Personal and central timesheet views — see your own entries at a glance, while team leads get a full overview of all employees
- [NEW] Log time directly from lead and project detail pages using the new quick-entry modal
- [NEW] Filter timesheet by partner
- [IMPROVED] Refreshed filter controls with instant search and better usability
- [IMPROVED] Wider subject names in timesheet rows for better readability
- [FIX] User group filter now works correctly on the timesheet page
- [FIX] Fixed an error that could occur when saving a timesheet entry failed
0.3.0 (2026-03-04)
- [NEW] User Groups — organize users into groups managed from the admin panel
- [NEW] Timesheet entries now use user groups instead of categories
- [NEW] Fine-grained timesheet permissions — more control over who can view, create, and edit entries
- [NEW] Timesheet rows are automatically created when a new project or lead is added
- [IMPROVED] Timesheet table layout with better column widths and text handling
- [FIX] Various timesheet display and interaction fixes
0.2.0 (2026-03-03)
- [FEATURE] Add Sentry (Glitchtip) integration for error reporting
- [FEATRUE] Add "What's New" modal to application footer
- [FEATURE] Add admin email test tool
- [FEATURE] Add global search across projects, leads, tasks and registers
- [FEATURE] Add system info dashboard with health checks, memory and disk stats
- [FEATURE] Add comprehensive health check endpoint /health
- [FEATURE] Authenticate Mailbokser with session authentication
- [STYLE] Increase dashboard fonts for better readibility
- [CHORE] Upgrade Mailbokser to 0.3.0
0.1.0
- [FEATURE] Initial release with core functionality