Pocket Chime · iOS 26 & Apple Watch · Classic × Chuuni

K a i k o k u

— Ты, освободи урочный час! —

Время запечатано в карманных часах. Сомкни крышку — и магический круг наполнится силой; открой — и день будет освобождён. Ночью — Арканы, днём — Солнечные искусства, при сомкнутой крышке — Печати. Будильник Арканов в духе классики и тюнибё, резонирующий даже с Apple Watch на запястье.

— коснись крышки, чтобы открыть или сомкнуть · взмахни в сторону, и час будет запечатан · схвати за край и тряхни · заведи циферблат на двенадцать витков, и явится магия —

PLATE I

Два убранства — золото и серебро

Тема распространяется на все представления через Environment и переключается мгновенно. Для каждого убранства отдельно проработаны даже стиль циферблата, стрелок и цифр.

HUNTER · VICTORIAN

Золото — охотничьи часы

Тёмно-лазурная эмаль × позолоченные римские цифры (запись IIII) · центральный герб с полумесяцем и восьмиконечной звездой
Гравированный корпус из старого золота (состаренной латуни). На отметке 6 часов — маленькое окошко ближайшего урочного часа

Старое золото #8F7028 Лазурь #101838 Золочение #D9B45C Лунное золото #F2DC96 tint #A67C2E
RAILROAD GRADE

Серебро — железнодорожные часы

Белый циферблат · жирные арабские цифры · стрелки-палочки
Секундная стрелка, по обычаю железнодорожных часов, окрашена в красный

Сталь #9CA3AE Белый фарфор #FAFAF7 Чёрное железо #1A1C22 Красный #B02E2E tint #44546A
PLATE II

Установить время стрелками

DatePicker здесь не используется. Вместо жеста заводки головки время звучания определяется перетаскиванием самих стрелок циферблата. Циферблат ниже можно перетаскивать по-настоящему.

До полудня7:30

  • Угол → время: преобразование — координаты перетаскивания переводятся в угол через atan2, минутная стрелка квантуется шагом 6°, часовая — 30° (вынесено в чистую функцию ClockAngleMath, покрытую тестами).
  • Согласованность — при повороте минутной стрелки часовая следует за ней со скоростью 0,5°/мин. При переходе через 0 минут час переводится вперёд/назад (определяется по переходу 45→15 минут).
  • Тактильность — на каждый шаг в 1 минуту срабатывает .sensoryFeedback(.selection), возвращая пальцу ощущение щелчка шестерёнки.
  • Выбранная стрелка — на кончике стрелки отображается латунное кольцо (рукоятка), показывающее, какая стрелка сейчас управляется.
  • Подтверждение — сохраняется табличкой «Установить это время». Преобразуется в Alarm.Schedule.relative из AlarmKit.
PLATE III

Муть часа — ночная тьма и рассвет

Чем глубже ночь, тем сильнее циферблат мутнеет тёмно-лиловым, точно сосуд души. В час рассвета муть очищается светом. В час заката на циферблате проступает и сияет созвездие текущего сезона. Проведите ползунок ниже, чтобы обойти сутки целиком.

21:00Вечер

  • Муть — с 16 часов к вечеру от края циферблата начинает наполняться тёмно-лиловая муть, достигая максимума с 23 до 4 часов. Благодаря многослойному градиенту со смешением «умножение» цвет слоновой кости словно оседает на «дно сосуда».
  • Очищение на рассвете — с 4 до 6 часов свет сверху (смешение «экран») растворяет муть. Главные часы на странице непрерывно живут этим циклом, синхронизированным с реальным временем.
  • Созвездие сезона — на закате (±2 часа) золотом проступает созвездие текущего сезона. Весна = Лев / лето = Скорпион / осень = Кассиопея / зима = Орион. Ночью остаётся слабым свечением.
  • Реализация на SwiftUI — коэффициент времени вычисляется через TimelineView(.everyMinute) и отражается в отрисовке Canvas с режимами «умножение»/«экран» и в непрозрачности контура созвездия.
PLATE IV

Крышка двенадцати чертогов — герб созвездия, сменяющийся ежемесячно

В центре крышки вставлена тёмно-лазурная эмаль, и с каждой сменой месяца чертог (созвездие) этого месяца заново вырезается золотом — вместе с полумесяцем и старинным японским названием месяца. Крышка главных часов на странице несёт узор текущего месяца.

Кружащиеся созвездия — · звёзды обладают глубиной и кружатся в пространстве непрестанно. Проведи пальцем — и добавится инерция вращения

Тон замысла следует антикварным карманным часам в стиле «лазурная эмаль × старое золото» (справочный материал: design-refs/ref-watch.jpg). Линии созвездий — стилизованная упрощённая форма. В SwiftUI узор, сменяющийся по месяцам, выбирается через Calendar.current.component(.month) и отрисовывается на Canvas золочением.

PLATE V

Арканы — таинство двенадцати чертогов

Проведи по циферблату круговым движением и заведи на двенадцать витков — явятся чары. Ночью — Арканы (12 видов чертогов), днём — Солнечные искусства (6 видов), при сомкнутой крышке — Печати (6 видов): всего в самом приложении 24 вида из трёх систем. На этой странице можно опробовать семь избранных из них.

Магия при открытой крышке

Магия при сомкнутой крышке (в приложении — Печать)

Час звучания (при срабатывании колокола-вестника)

Когда наступает урочный час, весь экран озаряется золотым мерцанием, и разворачивается магический круг с надписью «Урочный час настал!».

  • Определение завода — отслеживается суммарный угол вращения вокруг центра циферблата, и каждые 2π засчитывается один виток. Загорается ромб магического круга. Если оставить в покое на 4 секунды, завод рассеется.
  • Очищение светом рассвета — Очищает муть светом. Циферблат принудительно переходит в состояние рассвета, и проносится золотая вспышка.
  • Буря созвездий — Созвездие сезона вспыхивает пламенем, и звёзды разлетаются от часов.
  • Возврат времени — Стрелки стремительно идут вспять, и магический круг вращается в обратную сторону.
  • Барьер лилового грома — Тёмно-лиловая вспышка и удар. Магический круг обращается в лиловый.
  • Багряное пламя — Искры взмывают в трёхмерном пространстве вокруг часов (частицы с перспективной проекцией и мерцанием).
  • Водоворот лазурных волн — Рябь расходится под ногами, и брызги чертят дугу, увлекаемые тяготением.
  • Кольцо шквального ветра — Потоки ветра кружат вокруг часов, огибая их спереди и сзади, и напор ветра раскачивает часы.
  • Реализация на SwiftUI — определение вращения основано на накоплении atan2 (добавлено в ClockAngleMath), магия унифицирована протоколом SpellEffect, а настройки гнёзд хранятся в UserDefaults. При звучании определяется состояние alerting в AlarmKit, и через fullScreenCover свершается великое явление.
PLATE VI

Устройство экранов

Главный экран — всегда часы. Список, редактирование и таймер выстроены как рабочая изнанка крышки: гравированные таблички на той же фетровой основе.

Ты, освободи урочный час!

Ближайший урочный час — завтра, 7:30 до полудня

Колокол-вестник Таймер

Долгое нажатие переключает тему

Главный экран (RootView)

Колокол-вестник

До полудня7:30

Будни · отсрочка 9 минут

До полудня9:00

Выходные

После полудня10:15

Только один раз

+ Новый урочный час

Список (AlarmListView)

Установить время

До полудня7:30

ВсПнВтСрЧтПтСб

Метка — «Утренний чай» · отсрочка 9 минут

Установить это время

Редактирование (AlarmEditorView)

Таймер

4:23REMAINING
1 мин 3 мин 5 мин 10 мин
Пауза Отмена

Таймер (TimerView)

PLATE VII

Live Activity / Dynamic Island

Таймер и секундомер живут на экране блокировки и в Dynamic Island. На чёрном фоне с одним лишь штрихом латуни они сохраняют дух карманных часов даже внутри системного интерфейса.

POCKETCHIME

Таймер для чая

4:23

Экран блокировки — на основе Text(timerInterval:)

4:23

Dynamic Island (compact) — циферблат слева, оставшееся время справа

PLATE VIII

Типографика и цвет

Шрифт — системная антиква (New York / Hiragino Mincho). Цифры набираются моноширинными знаками, а латинские подписи — с широким трекингом, придающим вид гравированной надписи.

10:09

Отображение времени — serif 56 / light (W3) / tabular-nums

Установить время

Заголовок — serif 24 / light (W3) / трекинг +10%

Открой крышку — и начнётся день. Заведи стрелки и жди урочного часа.

Основной текст — serif 14 / regular / межстрочный интервал 1.8

RAILROAD GRADE · EST. 2026

Табличная подпись — 11 / трекинг +32% / цвет латуни

Фетровая основа (фон)#24331F → #0B110A
Цвет туши (текст)#EFE6CD
Латунь (акцент)#C9A24B
Багрянец (секундная стрелка, предупреждение)#A03A2A
Сталь (серебряная тема)#AEB6C2
ЗамыселРеализация (согласно DESIGN.md)
Открытие и смыкание крышкиrotation3DEffect(axis:(0,1,0), anchor:.leading) + spring 1.3s
Ход стрелокНепрерывный привод через TimelineView(.animation)
Перетаскивание стрелкиClockAngleMath (чистая функция на atan2, покрыта модульными тестами)
ОтсрочкаsecondaryButtonBehavior: .countdown + postAlert 9 минут
Отображение оставшегося времениLive Activity на основе AlarmAttributes<PocketWatchMetadata>
Распространение темыЕдинообразие вплоть до виджета через tintColor и metadata.themeName
PACT

Пакт освобождения

Все арканы бесплатны. Огонь этих часов поддерживает ненавязчивая реклама — Вести Дальновидения. Заключи Договор, и реклама отступит.

Пожизненный пакт

¥500

Единожды — и навеки. Освобождаются все двенадцать чертогов Арканов, Солнечные искусства, Печати, серебряное убранство, алый значок, все колокола и резонанс с Apple Watch.

Месячный пакт

¥100 / месяц

Ежемесячный пакт. Расторгнуть можно в любое время. Открывает то же, что и Пожизненный пакт.

Пакт приглашения

¥380

Особая цена Пожизненного пакта, открытая лишь тем, кто прошёл через «руну приглашения» (QR), явленную магическим кругом.

Есть и подношение благовоний (пожертвование) — чтобы не угас огонь этих часов.

GET

Получить

Получить «Kaikoku» в App Store ↗ Получить «Kaikoku» в App Store ↗

iOS 26 и новее · поддержка Apple Watch (watchOS 26)

Все деяния записаны в «Гримуаре Арканов» ↗