feat(ui): редизайн интерфейса — дизайн-система «Aurora» - #269
Open
Mileeena wants to merge 7 commits into
Open
Conversation
Mileeena
force-pushed
the
feat/new-ui
branch
2 times, most recently
from
July 3, 2026 11:13
8934b46 to
8c17d95
Compare
…okens) Re-skins the Avalonia UI to the approved "Aurora" design system, keeping all design values in separate theme files instead of inline in views. Theme foundation (src/Unlimotion/Theme/): - Colors.axaml — semantic color tokens with ThemeDictionaries for Dark + Light (surfaces, text, accent/ready/blocked/teal, borders); Fluent SystemAccentColor overridden to Aurora violet so standard controls adopt it. - Tokens.axaml — type scale, spacing (4px grid), radii, control sizing; fonts temporarily mapped to Inter/system-mono (General Sans + IBM Plex Mono pending). - Elevation.axaml — shadows + reserved ready/accent glows. - TextStyles.axaml — 11 text-role classes (heading/task/meta/eyebrow/...). - Controls/ — Button variants, Input recolor, AppComponents (status tags, badges, ready chip/dot, nav items, count pill, goal rows, progress bar), Icons.axaml. - App.axaml wired to dark-first with ResourceInclude/StyleInclude. Layout / UX (MainControl): - Views moved from the top tab strip to a left sidebar (VIEWS group with icons), driven by the existing TabControl (strip hidden) with code-behind selection sync. - GOALS group: goal tiles bound to CurrentAllTasksItems with live progress bar + %. - Settings pinned as a bottom footer. - Command bar: brand mark, global search (shared SearchDefinition), sun/moon theme toggle (persists via Settings), "+" create, teal→blue avatar. - Green "ready now" dot on actionable tasks across all views + relation lists. - Detail rail: Ready/Blocked/Weekly status tags + Aurora eyebrow section labels. - All hardcoded hex in views replaced with semantic tokens. View model: - TaskItemViewModel: IsBlocked, GoalProgress/GoalProgressPercent/HasChildren (recursive completion ratio, reactively recomputed via DynamicData). - New CountToBoolConverter; resx keys ReadyNow/Blocked/RepeatsWeekly/Views/Goals. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Goal progress now updates from anywhere in the subtree: each node observes
its direct children's GoalProgress (not just Status), so completing a deeply
nested task propagates up to the root goal in the sidebar.
- Task detail card: planning fields (begin / duration / end) re-laid out
vertically at full readable width so the floating labels no longer truncate.
- Filter toolbar: dropped the dropdown chevron on the filters button (now a
clean filter-icon button); emoji filter boxes show their label
("Emoji filter" / "Exclude emoji") instead of a bare emoji when empty, with
a matching tooltip — clearer for new users.
- Removed the duplicate global search from the command bar (it duplicated the
per-view search and was confusing).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The header crammed status tags, Wanted, the importance stepper, the full GUID, the actions menu and five date blocks into one wrapping row. Split it into: - title row - a tags + Wanted + labelled importance row, with the actions (⚙) menu pinned right - a single compact, muted, monospaced metadata line (id, truncated with tooltip, + created / updated / unlocked / completed / archived timestamps) Planning fields: flattened the nested StackPanel wrappers so the begin / duration / end fields stretch to full width (labels no longer truncate) and the quick-action date buttons are now subtle (surface fill + hairline, accent on hover) instead of heavy accent-outlined chunks. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The global TextBox style was bleeding into the date picker's inner PART_TextBox, drawing a second (clipped) border that showed as a stray bracket beside the "Planned begin/end" fields. Give the CalendarDatePicker a single Aurora border (surface fill, hairline, 9px radius, accent on focus), strip the inner TextBox chrome, and make the dropdown button borderless/muted so the date fields match the duration field. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Task detail card: - "Ready now" tag RU wording changed from the misleading "Готово сейчас" (reads like "done") to "Можно делать". - Importance: added a hint tooltip explaining it is the task priority used for list sorting (previously its purpose was unclear). - Metadata line: each value now has its own label (ID / Created / Updated / Unlocked / Completed / Archived) instead of unlabelled numbers. - Actions menu button changed from a gear (identical to the Settings icon) to a kebab "⋮" (more actions), so it no longer reads as "settings". Settings page: - Sections are now proper Aurora cards (surface fill, stronger border, soft shadow) so they read as distinct, separated groups instead of looking like a misaligned indent under the flush page title. - Page header restyled (heading-size title) and section titles/hints themed. - Nested cards (SSH keys / conflicts) step up to surface-2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reconciles the test suite with the new sidebar-based layout and reverts
a handful of regressions surfaced by the headless UI tests (35 failing → 2).
Changes by root cause:
- EmojiFilter summary width/text: revert DefaultSummaryWidth to 112px,
restore EmptySummaryToken ("🙂") as the empty-state display, restore
center alignment for 0-or-1 selection, set empty-summary foreground
alpha to 153 (muted), revert dropdown CornerRadius back to 4
- Tab hotkey routing: strip hidden via height=0/opacity=0/IsHitTestVisible
instead of IsVisible=False — IsVisible removes elements from the focus
tree so hotkeys stopped reaching the tab items
- CurrentTaskCommandBar: restore the Border wrapper with AutomationId
"CurrentTaskCommandBar" around the kebab DropDownButton (was lost
during the card restructure in the previous commit)
- Detail panel colours: restore SystemChromeLowColor background and
SystemBaseMediumColor border (Aurora tokens had replaced them)
- Planning layout: replace the vertical StackPanel with UniformGrid
(Columns=3 on desktop, 1 on narrow); fix task-ID TextBlock MaxWidth
formula (subtract 60 px for the "ID" label to prevent phone-width
overflow)
- Roadmap highlight: revert search-highlight colour from AccentBrush
back to #2F80ED
- TaskImportanceUiTests: update Grid.Column assertion from 2 → 3
(ready-dot shifted the columns)
- Delete MainControlTabsOverflowUiTests (8 tests): the horizontal
tab-strip overflow logic is gone; these tests are no longer valid
in the sidebar design
2 tests remain failing due to a pre-existing cross-test ordering issue
(LocalizationService.Current mutation leaking from card tests into the
status-icon tests); tracked separately.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Squash of the 2-3 July polish pass sitting on top of the Aurora base: - Sidebar: collapsible GOALS section (crisp caret, no janky hover box), fixed goal progress-bar overlap, task-count pills on sidebar views, and a coloured docked scrollbar tuned to sit clear of the goal rows. - Filters: emoji filter boxes now carry a text label (collapsing to a compact square on narrow toolbars) and keep a stable width when selecting; the filter toolbar gained left/top padding. - Breadcrumbs: each crumb is clickable to navigate to that ancestor task. - Settings: compact footer with a "?" hotkey-help button and a centered overlay. - Tests reconciled with the new sidebar layout; design tests made token-based. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Перевод интерфейса Unlimotion на утверждённую дизайн-систему «Aurora»: тёмная тема по умолчанию + светлая, единые токены, новый лейаут и почищенные экраны. Все дизайн-значения вынесены в отдельные файлы темы, а не зашиты по месту.
Что сделано
Фундамент темы (
src/Unlimotion/Theme/)ThemeDictionaries(Dark + Light): поверхности, текст, accent / ready / blocked / teal, бордеры. Акцент Fluent (SystemAccentColor) переопределён на Aurora-фиолет, чтобы стандартные контролы подхватывали его.Лейаут и UX (
MainControl)TabControlостался движком контента, синхронизация выбора в code-behind.Экраны
ViewModel
TaskItemViewModel:IsBlocked,GoalProgress/GoalProgressPercent/HasChildren(реактивный пересчёт по всему поддереву через DynamicData).CountToBoolConverter; ключи локализации (en/ru): ReadyNow, Blocked, RepeatsWeekly, ViewsGroup, GoalsGroup, ImportanceHint.Проверено
Собирается (Desktop), запускается, обе темы рендерятся; навигация по сайдбару, прогресс целей, статус-теги, фильтры и карточка проверены вживую.
Осталось (отдельным шагом)
.woff2; нужны.ttf/.otf, затем поменять 2 ключа вTheme/Tokens.axaml).Как смотреть
Тёмная/светлая темы (тоггл в топ-баре), сайдбар VIEWS + GOALS, карточка задачи в правой панели, экран «Настройки», «Карта» (Roadmap).