Commit Graph
131 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
abe0cb9625 feat(tracker): Gantt scheduling schema (startDate + IssueRelation) + version bump (#10851)
* feat(tracker): add Gantt scheduling schema (startDate + IssueRelation)

Schema-only foundation for the upcoming Gantt-chart view in tracker.
No UI in this PR.

Changes:
- Issue.startDate: Timestamp | null (interface + IssueDraft + @Prop with @Index)
- Milestone.startDate: Timestamp | null (interface + @Prop, reusing the
  existing tracker.string.StartDate IntlString)
- New DependencyKind type ('finish-to-start' | 'start-to-start' |
  'finish-to-finish' | 'start-to-finish')
- New IssueRelation AttachedDoc class with kind: DependencyKind, signed
  lag: number — registered in models/tracker via TIssueRelation
- 7 new IntlString keys: IssueStartDate, GanttDependency,
  GanttDependency{FinishToStart,StartToStart,FinishToFinish,StartToFinish},
  GanttLag — all 13 locales updated
- Cross-plugin literal updates in importer + github sync to satisfy the new
  required Issue.startDate / Milestone.startDate fields:
  - packages/importer/src/importer/importer.ts: AttachedData<Issue> literal
  - services/github/pod-github/src/sync/issueBase.ts: 'startDate' added to
    GithubIssueData Omit list (github sync does not own scheduling)
  - services/github/pod-github/src/sync/issues.ts + pullrequests.ts:
    AttachedData<Issue|GithubPullRequest> literals

Out of scope (deferred to follow-up PRs):
- UI for Gantt view, drag/resize, dependency editor, critical path
- blockedBy → IssueRelation migration (ships atomically with the writer
  redirect in the dependency-UI PR)
- LinkIssues permission (tracker uses forbid-style permissions; needs
  maintainer discussion)
- Activity-feed wiring for IssueRelation (needs a producer to test against)
- IssueTemplate.startDate (template propagation semantics undecided)

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

* test(model-tracker): add migrateAddStartDate jest tests

3 tests covering migrateAddStartDate:
- writes startDate=null to Issues in DOMAIN_TASK with the right filter
- writes startDate=null to Milestones in DOMAIN_TRACKER with the right filter
- issues exactly two update calls (one per class)

Follows the MigrationClient mock pattern from
models/chat/src/__tests__/migration.test.ts.

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

* feat(model-tracker): add migrateAddStartDate + wire into trackerOperation

Backfills startDate=null on existing Issues (DOMAIN_TASK) and Milestones
(DOMAIN_TRACKER) so the new schema field has a defined value on every
pre-existing document. Idempotent via the standard tryMigrate state-key
mechanism (state: 'gantt-add-startdate').

Verified domain choices against existing migration helpers:
- migrateIdentifiers / passIdentifierToParentInfo use DOMAIN_TASK for
  Issues (lines 145, 161 in this file).
- TMilestone @Model decorator confirms DOMAIN_TRACKER for Milestones
  (models/tracker/src/types.ts:372).

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

* feat(tracker): expose Issue.startDate / Milestone.startDate in UI; tighten typing

UI changes (so the new schema fields are actually editable, in chronological
order Start → Due/Target):

- New StartDateEditor.svelte (mirrors DueDateEditor.svelte for startDate)
- ControlPanel: render Start Date row above Due Date row in the issue
  side panel; both always-visible (no `!== null` guard) so users can set
  them on issues that don't have a date yet
- NewMilestone form: Start Date input above Target Date input
- Milestone list view: Start Date column before Target Date column

- TIssueRelation: tighten interface to `extends AttachedDoc<Issue, 'relations'>`
  so attachedTo + collection are statically typed. The model class
  re-declares `collection: 'relations'` to match the narrower base.
- Drop 4 unused Dependency-kind IntlString keys (FinishToFinish,
  FinishToStart, StartToFinish, StartToStart) — they had no consumer
  in PR 1; will be re-introduced in PR 4 (dependency editor).
- Simplify migration.ts comments — drop ageing line-references.

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

* fix(tracker): set explicit @Prop ranks for Milestone date fields

The DocAttributeBar side panel sorts attributes by attr.rank ?? toRank(_id)
(see plugins/view-resources/src/components/ClassAttributeBar.svelte:42-47),
so without explicit ranks the visible order on a Milestone was hash-based
(startDate before Status, breaking the chronological flow the user expects).

Set ranks so the side panel renders Status → Start date → Target date.
Comments and attachments stay where they are (they're collections, filtered
out of the attribute panel by categorizeFields).

Issues are unaffected — the Issue side panel is the custom ControlPanel.svelte
which renders Start date / Due date in explicit slots (see PR 1's UI commit).

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

* fix(tracker-resources): EditMilestone renders Status/Start/Target in body in chronological order

The right-side DocAttributeBar sorts attributes by attr.rank ?? toRank(_id),
giving startDate before status (toRank('startDate') < toRank('status')
lexicographically). Setting an explicit rank via @Prop's third arg did not
propagate through the workspace upgrade for existing Attribute documents
in the model TX log — the rank made it into the bundled txes but the
existing Attribute creation TXes are not replaced on upgrade-workspace.

Pivot: render Status, Start date, Target date in the EditMilestone body
in explicit chronological order, and add 'status', 'startDate', 'targetDate'
to ignoreKeys so they don't appear duplicated in the side panel. This
mirrors how Issue's ControlPanel.svelte handles its date fields.

Reverts the no-op @Prop rank attempt.

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

* fix(fulltext): bump model version to 0.7.423 to match deployed workspaces

The fulltext-pod's compiled model version (baked into bundle/model.json via
common/scripts/version.txt at build time) lags whenever the workspaces have
been migrated to a newer patch but the pod was not rebuilt. In that state the
indexer rejects every incoming Tx with a `wrong version` warning, new issues
silently fail to land in Elasticsearch, and search returns empty results for
any document created after the migration.

Bumping `version.txt` aligns the compiled model with the workspaces. All
future builds (front, transactor, workspace, tool, fulltext) will emit
0.7.423, the indexer accepts the Tx stream again, and the deferred backlog
gets consumed automatically — no manual reindex needed.

This commit is the build-side companion to the schema migration in this
same PR. Without it the fulltext-pod cannot consume the migrated workspace's
Tx events.

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

* chore: apply rush format after develop merge

Resolves the failing formatting check requested by @ArtyomSavchenko in
review of #10851 after the develop branch merge.

Affects three files in our PR scope:
- models/tracker/src/migration.ts: collapse short multi-line client.update call
- plugins/tracker/src/index.ts: inline DependencyKind union + IssueRelation comment
- plugins/tracker-resources/src/components/milestones/EditMilestone.svelte:
  reformat inline arrow handlers, move QueryIssuesList block ahead of <style>

No logic changes; deterministic prettier output.

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

* test(tracker): fix milestone page-object selectors after startDate field addition

The Gantt schema PR added Milestone.startDate, which:

1. Adds a second datetime-button to the NewMilestone form pool. The
   existing 'div.antiCard-pool button.datetime-button' locator matched
   both buttons and tripped Playwright's strict-mode check. Scope the
   target-date locator to .last() and add a sibling .first() helper for
   the start-date button.

2. Moves Status / Start date / Target date editors from the
   auto-generated side panel into EditMilestone's body
   (div.dates-row > div.date-cell > span.cell-label + <button>) in
   chronological order. The label span no longer has a sibling <div>
   wrapping the button — the button is a direct sibling. Switch the
   buttonStatus/buttonTargetDate XPath to following-sibling::button[1]
   and match the new class="cell-label" span. Add a buttonStartDate
   helper for the new editor row.

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

* test(tracker): shift buttonEstimation index after startDate row addition

ControlPanel.svelte (issue side panel) now renders the Start date and
Due date rows unconditionally — pre-PR the Due date row was conditional
on issue.dueDate !== null and the Start date row didn't exist at all.
Both new rows emit a <div><button> pair via DueDatePresenter, which the
existing (//span[text()='Estimation']/../div/button)[3] XPath counts as
extra matches and pushes the Estimation button from the 3rd to the 5th
direct div/button under the popupPanel-body__aside-grid.

Direct div/button order under the grid (document order):
  1. CreatedBy (EmployeeBox > UserBox div > Button)
  2. Assignee  (AssigneeEditor div > Button)
  3. Start date (NEW — StartDateEditor > DueDatePresenter div > button.datetime-button)
  4. Due date   (NEW — DueDateEditor   > DueDatePresenter div > button.datetime-button)
  5. Estimation (AttributeBarEditor div > Button)

buttonAssignee at [2] is unchanged. textEstimation uses 'following-sibling::div[1]'
(first sibling), which is unaffected by additions earlier in the grid.

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

* chore: apply rush format (prettier compliance for CI)

CI's rush fast-format --branch develop step flagged
tests/sanity/tests/model/tracker/milestones-details-page.ts for a
missing blank line between the buttonTargetDate locator (introduced in
86b1c19ee8) and the next field. Apply the local 'rush format' result.

The two other files CI flagged
(plugins/process-resources/src/components/settings/BindingsEditor.svelte
and ImportSlotsPopup.svelte) were actually upstream changes from PR
#10921 (Fix add tag) that landed after our last develop merge — the
preceding merge of upstream/develop into this branch resolves those
diffs.

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

* fix(tests/tracker): use contains() for cell-label class to survive Svelte CSS scoping

The Svelte 4 compiler appends a scoped `svelte-<hash>` class to every
element matched by a component-local CSS selector. EditMilestone.svelte
styles `.cell-label` locally, so each label span ends up as
`<span class="cell-label svelte-XXXXX">` at runtime, not the bare
`<span class="cell-label">` shipped in source. The previous XPath
locator used strict `@class="cell-label"` and never matched.

Switch buttonStatus / buttonStartDate / buttonTargetDate to the standard
`contains(concat(' ', normalize-space(@class), ' '), ' cell-label ')`
class-match idiom so the locators tolerate the added scoped class.

Verified against the playwright accessibility snapshot from the failed
run (artifact playwright-results, hash 07a8f36b...md): the Status row
renders as a generic with text 'Status' immediately followed by a
button 'In progress' as the next direct sibling, matching the rest of
the XPath.

Fixes 5 milestone.spec.ts failures observed in run 27816114236:
- Create a Milestone (locator timeout on checkIssue → buttonStatus)
- Edit a Milestone   (locator timeout on editIssue  → buttonStatus.click)
- Delete a Milestone (locator timeout on checkIssue → buttonStatus)
plus their two retries each.

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>
Co-authored-by: Artyom Savchenko <armisav@gmail.com>
2026-07-09 09:08:17 +07:00
Igor LoskutovandGitHub badeb2ebd9 fix(tracker): make Project.defaultIssueStatus optional (#10598)
defaultIssueStatus is not reliably populated for all projects.Make the field optional in the type definition and guard the
  migration to handle undefined values.

Signed-off-by: Igor Loskutov <igor.loskutoff@gmail.com>
2026-03-10 11:02:58 +07:00
Artyom SavchenkoandGitHub 7b1ed12aef Add ability to copy issues as table (#10366)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-01-05 20:10:07 +05:00
Anton AlexeyevandGitHub 764d963885 Backport plugin permissions in the workspace (#9966)
* Apply patch

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

* Fix merge errors

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

* Fix drive header

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

* Fix formatting

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

* Fix tests

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

---------

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>
2025-09-30 09:55:39 +07:00
Andrey SobolevandGitHub 331aa7f78f UBERF-9264: Fix set/unset parent issue (#7799)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2025-01-27 15:14:54 +05:00
Milana KustinskayaandGitHub db5890b831 [Update] Localization files (#7215)
Signed-off-by: Milana Kustinskaya <milanovasmile@gmail.com>
2024-12-02 21:14:59 +07:00
Alexander OnnikovandGitHub a6fb3713f6 UBERF-8557 Save collaborative content as JSON (#7039)
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2024-11-29 16:58:50 +07:00
Anna KhismatullinaandGitHub bcf7857477 Support unified Huly data import format (#7191)
Support unified Huly data import format

Signed-off-by: Anna Khismatullina <anna.khismatullina@gmail.com>
2024-11-20 14:58:30 +07:00
Andrey SobolevandGitHub dafa5275cc UBERF-8580: Labels for Tracker (#7141)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2024-11-11 12:06:30 +07:00
Alexander OnnikovandGitHub df2a9b2708 UBERF-4725 Migrate collaborative content (#5717)
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2024-08-22 16:03:42 +05:00
KristinaandGitHub 4ec2d56303 [Part-1]: New analytics events (#6319)
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
2024-08-14 14:37:52 +07:00
Alexey ZinovievandGitHub 0fc0115c99 UBERF-7495: Global editor kit extensions (#6057)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2024-07-12 15:42:13 +07:00
Vyacheslav TumanovandGitHub 7f2a8779c6 UBERF-5564: rework groupping and support PersonAccount (#5525)
Signed-off-by: Vyacheslav Tumanov <me@slavatumanov.me>
2024-06-25 12:03:01 +07:00
KristinaandGitHub 363cca4559 Move some strings to plugin (#5786)
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
2024-06-12 15:40:01 +05:00
Andrey SobolevandGitHub 07d35f0827 Bump package versions (#5728)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2024-06-05 12:46:40 +07:00
Alexey ZinovievandGitHub ad59463057 UBERF-6576: Move default space/project/task types into static model (#5423)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2024-05-04 17:49:31 +07:00
KristinaandGitHub 3bbb8915ec UBERF-6124: Rework inbox view (#5046)
Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
2024-03-25 10:55:14 +07:00
Andrey SobolevandGitHub 04d35dcead UBERF-5825: Fix github issues (#4924)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2024-03-13 12:43:12 +07:00
Denis BykhovandGitHub 9b0e67b0ee UBERF-5335 (#4655)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2024-02-16 01:24:03 +07:00
Denis BykhovandGitHub 19da703193 Fix creating suubissues from template (#4610)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2024-02-13 11:40:53 +07:00
Andrey SobolevandGitHub 262c2dd82c UBER-1187: AnyType field support (#4343)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2024-01-12 11:33:18 +07:00
Denis BykhovandGitHub 6097575d65 UBERF-4810 (#4306)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2024-01-05 00:54:58 +07:00
Pete AnøtherandGitHub 66a932b2c9 TSK-1668: Side changes from Surveys (#4271)
Signed-off-by: Petr Vyazovetskiy <develop.pit@gmail.com>
2023-12-26 22:31:22 +07:00
Denis BykhovandGitHub 843ddfeb99 UBERF-4727 (#4270) 2023-12-26 12:27:51 +07:00
Andrey SobolevandGitHub 5062febad9 UBER-1182: Fix task type categories (#4222)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-12-20 13:29:31 +07:00
Andrey SobolevandGitHub 5413031df0 UBER-1182: Fix github task types support (#4215)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-12-19 12:08:10 +06:00
Pete AnøtherandGitHub 916c499af3 TSK-1668: Survey plugin (#4174)
Signed-off-by: Petr Vyazovetskiy <develop.pit@gmail.com>
2023-12-14 23:33:38 +07:00
Andrey SobolevandGitHub 19d6764250 UBERF-4248: Task type (#4042)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-12-14 23:26:02 +07:00
Andrey SobolevandGitHub 6b6ec0b658 UBERF-4136: New issues from command palette (#3956)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-11-08 22:25:25 +07:00
Andrey SobolevandGitHub 074dee811d UBERF-4132: Fix unexpected delete of documents in query (#3921)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-10-31 22:37:31 +07:00
Denis BykhovandGitHub 156741cf48 UBER-1053 (#3884) 2023-10-27 12:22:43 +07:00
Andrey SobolevandGitHub e09bd25a87 UBER-937: Extensibility changes (#3874)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-10-24 15:53:33 +07:00
Andrey SobolevandGitHub 3c0ff4c049 UBER-1052: Fix remainings (#3844)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-10-16 23:02:42 +07:00
Andrey SobolevandGitHub bc3598ce15 UBER-953: Fix related issues (#3821)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-10-11 13:20:39 +07:00
Denis BykhovandGitHub 3ca2fcce44 UBER-979 (#3788)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2023-10-05 09:09:59 +07:00
Denis BykhovandGitHub 9a4fa752de UBER-972 (#3782) 2023-10-04 02:31:07 +07:00
Maksim KarmatskikhandGitHub 1ca9de297a UBER-845: Add NotificationPresenter to send rich text notifications (#3729)
Signed-off-by: Maxim Karmatskikh <mkarmatskih@gmail.com>
2023-09-28 12:08:00 +07:00
Andrey SobolevandGitHub 179973ba7f UBER-912 (#3742)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-09-26 19:29:10 +07:00
Andrey SobolevandGitHub c7bb5b9cab UBER-799: Allow extensions to tracker for github (#3727) 2023-09-21 19:20:17 +07:00
Andrey SobolevandGitHub 2d5a38eed5 UBER-807: Allow to customize create issue dialog (#3669)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-09-08 10:33:23 +06:00
Denis BykhovandGitHub 2422baa108 UBER-808 (#3656)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2023-09-04 23:06:34 +06:00
Andrey SobolevandGitHub 161d26ebeb UBER-665: Rename EmployeeAccount->PersonAccount (#3550)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-08-05 01:06:21 +07:00
Denis BykhovandGitHub 7cabfc746e UBER-408 (#3539)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2023-08-01 14:58:03 +07:00
Denis BykhovandGitHub ab02db5890 UBER-408 Issue as task (#3497)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2023-07-13 19:33:23 +06:00
Andrey SobolevandGitHub e809a67451 UBER-430: Remove old migrations (#3398)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2023-06-12 17:40:04 +07:00
Denis BykhovandGitHub 626d36db7d UBER-376 Implement new style for the tooltips (#3418)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2023-06-09 19:06:15 +07:00
Ruslan BayandinovandGitHub ba65d1d2ea [UBER-69] Allow space selector to display project's icon or emoji (#3396)
Signed-off-by: Ruslan Bayandinov <wazsone@ya.ru>
2023-06-08 16:30:22 +06:00
Ruslan BayandinovandGitHub 20da8625d2 [UBER-197] Aggregate components properly (#3265)
Signed-off-by: Ruslan Bayandinov <wazsone@ya.ru>
2023-06-06 17:06:32 +07:00
Denis BykhovandGitHub 0d6aa799f3 Uber 189 Uber 190 (#3300)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2023-05-31 15:40:47 +07:00