158 Commits
Author SHA1 Message Date
63e28dc964 feat(tracker): Gantt chart for the issue tracker (#10992)
* feat(tracker): Gantt chart for the issue tracker

Builds on the merged search/filter rework (#10998). Introduces @hcengineering/gantt, a dependency-free scheduling/zoom/drag/viewport engine package (with a neutral GanttDependency contract), and wires the tracker-specific adapter, Svelte UI, model schema, dependency-shift notifications and sanity coverage in tracker-resources.

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>

* fix(tracker): source Gantt holidays from HR and scope confirm-gate per view

Follow-up to review feedback on #10992:

- Confirm-gate: the module-global flag is replaced by a createConfirmGate()
  factory - one instance per mounted GanttView, so two Gantt views mounted at
  once in the same JS context no longer block each other's pointer input. A
  two-instance independence test guards the regression.

- Sidebar sorting: the stale deadline cast is dropped and issue.deadline is
  read directly (the field was added to the Issue model in this PR).

- HR holidays: the per-project WorkingDaysConfig.holidays field duplicated the
  workspace-wide hr.class.PublicHoliday concept and could drift from the real
  HR calendar. It is removed. WorkingDaysConfig now carries only the weekday
  mask and an optional holidayDepartment. The tracker adapter resolves holidays
  for the selected department plus all ancestors up to hr.ids.Head, matching
  HR's existing inheritance semantics (hr-resources ScheduleView). A missing or
  invalid reference falls back to company-wide (root) holidays; unrelated
  departments are never included. The ancestor walk is cycle/missing-parent
  safe.

  A small WorkingDaysEditor in the existing project create/edit dialog lets
  users with the existing project permission enable the mode, choose weekdays,
  and select an HR department (default: Company-wide). It persists through the
  existing project create/update transaction paths (createDoc on create,
  client.update on edit) and uses $unset when the mode is disabled. At least
  one working day must stay active.

  Calendar loading is explicit via a CalendarStateMachine: project-scoped drag,
  resize, cascade, keyboard-shift and auto-schedule mutations stay disabled
  until both the project config and the holiday data have loaded. A monotonic
  generation ticket (bumped synchronously on project switch) is re-checked
  immediately before every calendar-dependent date commit, so work started in
  one project can never persist after a switch to another. The all-projects
  view has no single project calendar, so calendar-dependent edits are
  read-only there; display, selection, the context menu and the manual
  date-picker (which does no calendar arithmetic and takes no mutation ticket)
  stay available.

  This depends on the lightweight @hcengineering/hr model package, but not on
  hr-resources; the tracker adapter uses hr.class.* and hr.ids.Head at runtime,
  and actual HR model presence is checked through the hierarchy - without the
  HR model, holidays resolve to an empty set. The @hcengineering/gantt engine
  package stays domain-neutral (no @hcengineering imports, no runtime deps).

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>

* fix(gantt): measure FS gap-preservation floor in working days

The finish-to-start gap-preservation floor in the cascade scheduler mixed
two time measures: the FS snap anchor is working-calendar aware, but the
floor added a raw calendar-millisecond start-side delta. With an active
working calendar the two diverge, so dragging a predecessor over a weekend
over-shifted the successor across non-working days (a Fri->Mon body drag is
3 calendar days but only 1 working day, and could even land a successor on
a Saturday).

Measure the floor on the DUE side in working days instead: translate the
predecessor's shift via the new workingDayDelta helper and advance the
floor base with addWorkingDays over the calendar. A day-granular resize
gate (utcMidnight comparison, not a raw === 0 test) arms the floor only on
a start-DAY move, so a pure due-resize stays a pure snap even when the
stored issue carries a time-of-day on the cascade-commit path. The floor
base is normalized via utcMidnight(targetAnchor). The legacy path
(cfg === undefined) stays byte-identical to today's raw-ms floor. A
left-resize in working-days mode now correctly no-ops the floor (the due,
and thus the FS gap, did not move) instead of shifting on the raw start
delta.

Engine: add workingDayDelta (signed, half-open from-exclusive/to-inclusive
working-day step count) and export the previously-private utcMidnight from
packages/gantt/src/working-days.ts. The engine stays domain-neutral (no
@hcengineering imports, empty dependencies).

Adds engine and adapter test coverage: workingDayDelta cases and the full
FS floor matrix (right-resize no-push, weekend-spanner body drag, floor
wins over snap, holiday in the floor path, floor-dominant multi-hop chain,
negative delta, legacy no-cfg, SS pure-snap, raw time-of-day right-resize,
direct left-resize).

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>

---------

Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com>
Co-authored-by: Michael Uray <michaeluray@users.noreply.github.com>
2026-08-27 20:24:38 +07:00
Alexander OnnikovandGitHub 4c5d2d578e fix: use -webkit-user-select for text selection on Safari (#10982)
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2026-07-17 16:44:09 +07:00
Artyom SavchenkoandGitHub 3195af9934 Fix modal layout (#9980)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-09-30 18:38:19 +07:00
Artyom SavchenkoandGitHub a3ca05dede Fix layout for new card popup (#9964)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-09-29 10:16:17 +07:00
Alexander PlatovandGitHub 6933c99f01 Fixes display of custom attributes in ListView (#9639) 2025-08-05 09:19:04 +07:00
Alexander PlatovandGitHub 89d8a6fd03 Auto-maximize attached files on open (#9472)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2025-07-05 11:33:21 +07:00
Alexander PlatovandGitHub 6e7573d8dd qFix: ListView, Table (#9213)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2025-06-12 22:51:27 +07:00
Alexander PlatovandGitHub f1c76f6846 Updated CardPresenter layout. Table, ListView fixes. (#9197) 2025-06-10 08:57:59 +07:00
Alexander PlatovandGitHub 46f56778cf Updated List layout (#9088)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2025-05-26 16:19:58 +04:00
Alexander PlatovandGitHub 5f63ee7a99 Fixed the mouse pointer over the Avatar (#9000) 2025-05-21 08:23:03 +07:00
Artyom SavchenkoandGitHub 76a425ba98 UBERF-10248: Reduce profile preview size (#8723)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-04-28 11:51:42 +05:00
Alexander PlatovandGitHub 1959b9f107 Fixed layouts for ListView and Section (#8703)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2025-04-25 09:37:38 +07:00
Artyom SavchenkoandGitHub 93f40761b0 UBERF-10248: Fix avatar status in compact mode (#8583)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-04-16 20:30:27 +07:00
Artyom SavchenkoandGitHub d2603d8629 UBERF-9716: New profile preview and initial achievements (#8504)
* UBERF-9716: Draft user profile

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Redesign user profile card

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Hide error for profile popup

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Add achievement header and refactor

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Display timezone

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Refactor

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Add preview for mentions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Move achievements to separate module and use component extension

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Fix rush check

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Fix validate

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Fix validate

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Minor fixes

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Fix formatting and template

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Update npm lock

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Add light background and fix some issues

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Fix svelte error

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Add preview to new chat

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Fix svelte

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Update avatar selector

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Use instead of px

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Accent name

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Remove unused width prop

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-9716: Remove isButtonIcon

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-04-15 13:13:16 +07:00
ChunosovandGitHub f51aacacf3 Show CalDav link (#8511)
Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>
2025-04-10 10:38:34 +07:00
ChunosovandGitHub 62d6a76b4a Fix meeting window width (#8365)
Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>
2025-03-27 16:18:07 +07:00
ChunosovGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
31de65a60c Account mailboxes (#8342)
* add mailboxes settings page

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* add account methods and ui for mailbox settings

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* load mailbox domains in settings

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* create mailbox table in migrations

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* add translations, generate password for mailbox

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* Potential fix for code scanning alert no. 145: Creating biased random numbers from a cryptographically secure source

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Chunosov <N.Chunosov@yandex.ru>
Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* update pnpm.lock

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* move password generation to utils

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

---------

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>
Signed-off-by: Chunosov <N.Chunosov@yandex.ru>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-03-26 11:38:18 +07:00
Alexander PlatovandGitHub d40e6fe2cf Change the "Show more" button position in the ListView (#8335)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2025-03-25 21:36:35 +07:00
ChunosovandGitHub fcdf70cb5d Small visual fixes fot calendar events (#8310)
Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>
2025-03-21 23:10:27 +07:00
Alexander PlatovandGitHub c9d688c115 LOVE: updated layout of floors and ParticipantView (#8270)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2025-03-19 09:55:14 +07:00
Alexander PlatovandGitHub 35be71c182 Adaptive button in the Status Bar (#7497)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-12-18 11:34:06 +07:00
Artyom SavchenkoandGitHub da85d6dd5f UBERF-8584: Add test runs (#7235)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2024-11-29 01:36:41 +07:00
Alexander PlatovandGitHub dd8ba84a9b UI and icons fixes (#7177) 2024-11-17 22:43:12 +07:00
Alexander PlatovandGitHub ad54f56f4c Adaptive aSide in Settings (#7130)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-11-08 12:43:06 +07:00
Alexander PlatovandGitHub 585b3f40e7 Updated LoveWidget layout (#7103) 2024-11-05 10:54:23 +07:00
Alexander PlatovandGitHub 84ab130470 UI and separation fixes. (#7045)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-10-28 12:52:17 +07:00
KristinaandGitHub 304beeae31 Chat and sidebar fixes (#6813)
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
2024-10-07 15:34:50 +07:00
KristinaandGitHub 14e6a85301 Fix sidebar borders (#6752)
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
2024-09-27 14:24:54 +07:00
KristinaandGitHub f2c961c5d5 [Part 2]: Sidebar and chat fixes (#6656)
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
2024-09-20 22:07:04 +07:00
Alexander PlatovandGitHub 4165163e96 Planner: updated ToDos layout (#6651)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-09-20 21:58:02 +07:00
Alexander PlatovandGitHub 71e2fc5453 Updated Header layout (#6298)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-08-09 11:49:40 +07:00
Alexander PlatovandGitHub 8b44249cec Minor UI fixes (#6171)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-07-29 22:03:28 +07:00
Alexander PlatovandGitHub 1329fb1d7a Rebase (#6088)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-07-25 22:16:08 +07:00
Alexander PlatovandGitHub ca28ef79f8 Updated Avatar reaction (#5852)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-06-19 12:59:21 +07:00
Alexander PlatovandGitHub 7b466b8410 Fixed drag'n'drop in the Calendar (#5807)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-06-13 22:18:18 +07:00
Alexander PlatovandGitHub a437926f35 Updated navigator layout (#5619)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-06-05 12:50:13 +07:00
KristinaandGitHub 930d13b2a3 Add chat UI fixes (#5632)
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
2024-05-22 12:32:45 +05:00
Alexander PlatovandGitHub 3e835e0c70 Add global user status (#5526) 2024-05-10 13:14:06 +07:00
Alexander PlatovandGitHub bf80ba02e5 Updated layout of the Chat navigator (#5537)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-05-08 10:42:44 +07:00
Alexander PlatovandGitHub 128f5f55ff Fixed Planner layout and Separator (#5410)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-04-24 13:59:32 +07:00
Andrey SobolevandGitHub 02cecb3820 UBERF-6636: Fix todos auto expand if collapsed (#5406)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2024-04-19 15:49:04 +07:00
Alexander PlatovandGitHub 4536ad8355 Fixed ToDoElement, RoomPopup components (#5394) 2024-04-18 11:39:28 +07:00
KristinaandGitHub de6e0739c2 UBERF-6464: update activity mentions display (#5339) 2024-04-16 21:13:18 +07:00
Alexander PlatovandGitHub fb40b9b703 Updated ToDoElement layout (#5330)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-04-12 12:55:27 +07:00
ChBehzadandGitHub 8b9fc860a0 Bug fix and Improvements (#5113)
Signed-off-by: chBehzad <behzad.chaudury@gmail.com>
2024-04-08 13:38:58 +07:00
Reza MirjahanianandGitHub dee2aeafed Fix tiny css errors (#5186)
Signed-off-by: Reza Mirjahanian <rmirjahanian@gmail.com>
2024-04-07 03:49:08 +07:00
Alexander PlatovandGitHub 20cd262081 Fixed bugs in LOVE. Added SplitButton. (#5181)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-04-04 13:01:30 +07:00
Alexander PlatovandGitHub ff26de4919 UBERF-6118. Updated Avatar. Updated LOVE layout. (#5092)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-03-29 10:01:19 +05:00
Alexander PlatovandGitHub 352e8a4f3f Drag&Drop room config (#5064)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-03-26 21:33:05 +07:00
Alexander PlatovandGitHub 2387c52897 Updated office layout (#5051)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2024-03-25 11:26:29 +05:00