From 4211507b677f97ee2a1341a63f3e98a4ea3ceb78 Mon Sep 17 00:00:00 2001
From: Dotoryman <134985085+Dotoryman@users.noreply.github.com>
Date: Sat, 26 Sep 2026 16:06:03 +0900
Subject: [PATCH] Release 0.5.0 with Liquid Glass and widgets
---
CHANGELOG.md | 10 +
Configuration/WidgetInfo.plist | 14 +
DotoryCount.xcodeproj/project.pbxproj | 79 +++++-
.../Persistence/WidgetSnapshotStore.swift | 16 ++
DotoryCount/DesignSystem/GlassStyles.swift | 41 +++
DotoryCount/DotoryCount.entitlements | 3 +
.../Editor/AnniversaryEditorView.swift | 8 +-
.../Editor/StartDateSelectionSheet.swift | 2 +-
.../Home/CinematicAnniversaryDashboard.swift | 4 +-
DotoryCount/Features/Home/HomeView.swift | 12 +-
.../AcornSide.imageset/Contents.json | 4 +
.../AcornSide.imageset/acorn-side.png | Bin 0 -> 839004 bytes
.../AcornSprite.imageset/Contents.json | 23 ++
.../AcornSprite.imageset/acorn.png | Bin 0 -> 13590 bytes
.../AcornSprite.imageset/acorn@2x.png | Bin 0 -> 47107 bytes
.../AcornSprite.imageset/acorn@3x.png | Bin 0 -> 101246 bytes
.../GoldenAcornSprite.imageset/Contents.json | 23 ++
.../golden-acorn.png | Bin 0 -> 15481 bytes
.../golden-acorn@2x.png | Bin 0 -> 54279 bytes
.../golden-acorn@3x.png | Bin 0 -> 117746 bytes
.../JarEmptyBase.imageset/Contents.json | 4 +
.../JarEmptyBase.imageset/jar-empty-base.png | Bin 0 -> 697162 bytes
.../JarGlassFront.imageset/Contents.json | 4 +
.../jar-glass-front.png | Bin 0 -> 759947 bytes
.../DotoryCountWidget.entitlements | 3 +
DotoryCountWidget/DotoryCountWidget.swift | 259 ++++++++++++++++++
README.md | 4 +-
ROADMAP.md | 26 +-
28 files changed, 512 insertions(+), 27 deletions(-)
create mode 100644 Configuration/WidgetInfo.plist
create mode 100644 DotoryCount/Core/Persistence/WidgetSnapshotStore.swift
create mode 100644 DotoryCount/DesignSystem/GlassStyles.swift
create mode 100644 DotoryCount/DotoryCount.entitlements
create mode 100644 DotoryCountWidget/Assets.xcassets/AcornSide.imageset/Contents.json
create mode 100644 DotoryCountWidget/Assets.xcassets/AcornSide.imageset/acorn-side.png
create mode 100644 DotoryCountWidget/Assets.xcassets/AcornSprite.imageset/Contents.json
create mode 100644 DotoryCountWidget/Assets.xcassets/AcornSprite.imageset/acorn.png
create mode 100644 DotoryCountWidget/Assets.xcassets/AcornSprite.imageset/acorn@2x.png
create mode 100644 DotoryCountWidget/Assets.xcassets/AcornSprite.imageset/acorn@3x.png
create mode 100644 DotoryCountWidget/Assets.xcassets/GoldenAcornSprite.imageset/Contents.json
create mode 100644 DotoryCountWidget/Assets.xcassets/GoldenAcornSprite.imageset/golden-acorn.png
create mode 100644 DotoryCountWidget/Assets.xcassets/GoldenAcornSprite.imageset/golden-acorn@2x.png
create mode 100644 DotoryCountWidget/Assets.xcassets/GoldenAcornSprite.imageset/golden-acorn@3x.png
create mode 100644 DotoryCountWidget/Assets.xcassets/JarEmptyBase.imageset/Contents.json
create mode 100644 DotoryCountWidget/Assets.xcassets/JarEmptyBase.imageset/jar-empty-base.png
create mode 100644 DotoryCountWidget/Assets.xcassets/JarGlassFront.imageset/Contents.json
create mode 100644 DotoryCountWidget/Assets.xcassets/JarGlassFront.imageset/jar-glass-front.png
create mode 100644 DotoryCountWidget/DotoryCountWidget.entitlements
create mode 100644 DotoryCountWidget/DotoryCountWidget.swift
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 088cde8..3b7d509 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,16 @@
All notable changes to DotoryCount are recorded in this file.
+## [0.5.0] - 2026-09-26
+
+- Apply Liquid Glass to the dashboard action and information panel on iOS 26+,
+ with material fallbacks on older supported iOS versions.
+- Add a compact rectangular Lock Screen day counter and a small Home Screen
+ widget with the photographic jar, staged acorn pile, and D+ counter.
+- Share the current anniversary summary with WidgetKit and refresh its timeline
+ after edits, deletion, and the next calendar day.
+- Bumped the app and widget to version 0.5.0 (build 11).
+
## [0.4.2] - 2026-09-24
- Keep the photographed glass floor behind the acorns while retaining the
diff --git a/Configuration/WidgetInfo.plist b/Configuration/WidgetInfo.plist
new file mode 100644
index 0000000..c7e3c5e
--- /dev/null
+++ b/Configuration/WidgetInfo.plist
@@ -0,0 +1,14 @@
+
+
+
+CFBundleDevelopmentRegion$(DEVELOPMENT_LANGUAGE)
+CFBundleDisplayName도토리 카운트
+CFBundleExecutable$(EXECUTABLE_NAME)
+CFBundleIdentifier$(PRODUCT_BUNDLE_IDENTIFIER)
+CFBundleInfoDictionaryVersion6.0
+CFBundleName$(PRODUCT_NAME)
+CFBundlePackageTypeXPC!
+CFBundleShortVersionString$(MARKETING_VERSION)
+CFBundleVersion$(CURRENT_PROJECT_VERSION)
+NSExtensionNSExtensionPointIdentifiercom.apple.widgetkit-extension
+
diff --git a/DotoryCount.xcodeproj/project.pbxproj b/DotoryCount.xcodeproj/project.pbxproj
index 08c9f02..b7921c8 100644
--- a/DotoryCount.xcodeproj/project.pbxproj
+++ b/DotoryCount.xcodeproj/project.pbxproj
@@ -6,7 +6,12 @@
objectVersion = 77;
objects = {
+/* Begin PBXBuildFile section */
+ D05000000000000000000001 /* DotoryCountWidget.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D05000000000000000000002 /* DotoryCountWidget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+/* End PBXBuildFile section */
+
/* Begin PBXContainerItemProxy section */
+ D0500000000000000000000B /* PBXContainerItemProxy */ = {isa = PBXContainerItemProxy; containerPortal = A607FF8D3055937D00D23132 /* Project object */; proxyType = 1; remoteGlobalIDString = D05000000000000000000005; remoteInfo = DotoryCountWidget; };
A607FFA33055937F00D23132 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A607FF8D3055937D00D23132 /* Project object */;
@@ -23,13 +28,19 @@
};
/* End PBXContainerItemProxy section */
+/* Begin PBXCopyFilesBuildPhase section */
+ D05000000000000000000008 /* Embed App Extensions */ = {isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 13; files = (D05000000000000000000001 /* DotoryCountWidget.appex in Embed App Extensions */); name = "Embed App Extensions"; runOnlyForDeploymentPostprocessing = 0; };
+/* End PBXCopyFilesBuildPhase section */
+
/* Begin PBXFileReference section */
+ D05000000000000000000002 /* DotoryCountWidget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = DotoryCountWidget.appex; sourceTree = BUILT_PRODUCTS_DIR; };
A607FF953055937D00D23132 /* DotoryCount.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DotoryCount.app; sourceTree = BUILT_PRODUCTS_DIR; };
A607FFA23055937F00D23132 /* DotoryCountTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DotoryCountTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
A607FFAC3055937F00D23132 /* DotoryCountUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DotoryCountUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
+ D05000000000000000000003 /* DotoryCountWidget */ = {isa = PBXFileSystemSynchronizedRootGroup; path = DotoryCountWidget; sourceTree = ""; };
A607FF973055937D00D23132 /* DotoryCount */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = DotoryCount;
@@ -48,6 +59,7 @@
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */
+ D05000000000000000000004 /* Frameworks */ = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };
A607FF923055937D00D23132 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -76,6 +88,7 @@
isa = PBXGroup;
children = (
A607FF973055937D00D23132 /* DotoryCount */,
+ D05000000000000000000003 /* DotoryCountWidget */,
A607FFA53055937F00D23132 /* DotoryCountTests */,
A607FFAF3055937F00D23132 /* DotoryCountUITests */,
A607FF963055937D00D23132 /* Products */,
@@ -86,6 +99,7 @@
isa = PBXGroup;
children = (
A607FF953055937D00D23132 /* DotoryCount.app */,
+ D05000000000000000000002 /* DotoryCountWidget.appex */,
A607FFA23055937F00D23132 /* DotoryCountTests.xctest */,
A607FFAC3055937F00D23132 /* DotoryCountUITests.xctest */,
);
@@ -95,6 +109,19 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
+ D05000000000000000000005 /* DotoryCountWidget */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D05000000000000000000009 /* Build configuration list for PBXNativeTarget "DotoryCountWidget" */;
+ buildPhases = (D05000000000000000000006 /* Sources */, D05000000000000000000004 /* Frameworks */, D05000000000000000000007 /* Resources */);
+ buildRules = ();
+ dependencies = ();
+ fileSystemSynchronizedGroups = (D05000000000000000000003 /* DotoryCountWidget */);
+ name = DotoryCountWidget;
+ packageProductDependencies = ();
+ productName = DotoryCountWidget;
+ productReference = D05000000000000000000002 /* DotoryCountWidget.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
A607FF943055937D00D23132 /* DotoryCount */ = {
isa = PBXNativeTarget;
buildConfigurationList = A607FFB63055937F00D23132 /* Build configuration list for PBXNativeTarget "DotoryCount" */;
@@ -102,11 +129,11 @@
A607FF913055937D00D23132 /* Sources */,
A607FF923055937D00D23132 /* Frameworks */,
A607FF933055937D00D23132 /* Resources */,
+ D05000000000000000000008 /* Embed App Extensions */,
);
buildRules = (
);
- dependencies = (
- );
+ dependencies = (D0500000000000000000000A /* PBXTargetDependency */);
fileSystemSynchronizedGroups = (
A607FF973055937D00D23132 /* DotoryCount */,
);
@@ -173,6 +200,7 @@
LastSwiftUpdateCheck = 2660;
LastUpgradeCheck = 2700;
TargetAttributes = {
+ D05000000000000000000005 = { CreatedOnToolsVersion = 26.6; };
A607FF943055937D00D23132 = {
CreatedOnToolsVersion = 26.6;
};
@@ -201,6 +229,7 @@
projectRoot = "";
targets = (
A607FF943055937D00D23132 /* DotoryCount */,
+ D05000000000000000000005 /* DotoryCountWidget */,
A607FFA13055937F00D23132 /* DotoryCountTests */,
A607FFAB3055937F00D23132 /* DotoryCountUITests */,
);
@@ -208,6 +237,7 @@
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ D05000000000000000000007 /* Resources */ = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };
A607FF933055937D00D23132 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -232,6 +262,7 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ D05000000000000000000006 /* Sources */ = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };
A607FF913055937D00D23132 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -256,6 +287,7 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
+ D0500000000000000000000A /* PBXTargetDependency */ = {isa = PBXTargetDependency; target = D05000000000000000000005 /* DotoryCountWidget */; targetProxy = D0500000000000000000000B /* PBXContainerItemProxy */; };
A607FFA43055937F00D23132 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = A607FF943055937D00D23132 /* DotoryCount */;
@@ -269,6 +301,38 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
+ D0500000000000000000000C /* Debug */ = {isa = XCBuildConfiguration; buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CODE_SIGN_ENTITLEMENTS = DotoryCountWidget/DotoryCountWidget.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 11;
+ DEVELOPMENT_TEAM = W395S42ZJ9;
+ GENERATE_INFOPLIST_FILE = NO;
+ INFOPLIST_FILE = Configuration/WidgetInfo.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 17.0;
+ MARKETING_VERSION = 0.5.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.dotoryman.dotorycount.widget;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
+ }; name = Debug; };
+ D0500000000000000000000D /* Release */ = {isa = XCBuildConfiguration; buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CODE_SIGN_ENTITLEMENTS = DotoryCountWidget/DotoryCountWidget.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 11;
+ DEVELOPMENT_TEAM = W395S42ZJ9;
+ GENERATE_INFOPLIST_FILE = NO;
+ INFOPLIST_FILE = Configuration/WidgetInfo.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 17.0;
+ MARKETING_VERSION = 0.5.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.dotoryman.dotorycount.widget;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
+ }; name = Release; };
A607FFB43055937F00D23132 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -393,10 +457,11 @@
A607FFB73055937F00D23132 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CODE_SIGN_ENTITLEMENTS = DotoryCount/DotoryCount.entitlements;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 10;
+ CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = W395S42ZJ9;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -409,7 +474,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 0.4.2;
+ MARKETING_VERSION = 0.5.0;
PRODUCT_BUNDLE_IDENTIFIER = com.dotoryman.dotorycount;
PRODUCT_NAME = "$(TARGET_NAME)";
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -425,10 +490,11 @@
A607FFB83055937F00D23132 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CODE_SIGN_ENTITLEMENTS = DotoryCount/DotoryCount.entitlements;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 10;
+ CURRENT_PROJECT_VERSION = 11;
DEVELOPMENT_TEAM = W395S42ZJ9;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
@@ -441,7 +507,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
- MARKETING_VERSION = 0.4.2;
+ MARKETING_VERSION = 0.5.0;
PRODUCT_BUNDLE_IDENTIFIER = com.dotoryman.dotorycount;
PRODUCT_NAME = "$(TARGET_NAME)";
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -537,6 +603,7 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ D05000000000000000000009 /* Build configuration list for PBXNativeTarget "DotoryCountWidget" */ = {isa = XCConfigurationList; buildConfigurations = (D0500000000000000000000C /* Debug */, D0500000000000000000000D /* Release */); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; };
A607FF903055937D00D23132 /* Build configuration list for PBXProject "DotoryCount" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/DotoryCount/Core/Persistence/WidgetSnapshotStore.swift b/DotoryCount/Core/Persistence/WidgetSnapshotStore.swift
new file mode 100644
index 0000000..cea8aa2
--- /dev/null
+++ b/DotoryCount/Core/Persistence/WidgetSnapshotStore.swift
@@ -0,0 +1,16 @@
+import Foundation
+import WidgetKit
+
+/// Only the small, non-sensitive summary a widget needs crosses the app boundary.
+enum WidgetSnapshotStore {
+ static let suiteName = "group.com.dotoryman.dotorycount"
+ private static let titleKey = "widget.title"
+ private static let startDateKey = "widget.startDate"
+
+ static func publish(_ anniversary: Anniversary?) {
+ guard let defaults = UserDefaults(suiteName: suiteName) else { return }
+ defaults.set(anniversary?.title, forKey: titleKey)
+ defaults.set(anniversary?.startDate, forKey: startDateKey)
+ WidgetCenter.shared.reloadAllTimelines()
+ }
+}
diff --git a/DotoryCount/DesignSystem/GlassStyles.swift b/DotoryCount/DesignSystem/GlassStyles.swift
new file mode 100644
index 0000000..a282bb0
--- /dev/null
+++ b/DotoryCount/DesignSystem/GlassStyles.swift
@@ -0,0 +1,41 @@
+import SwiftUI
+
+struct GlassActionStyle: ViewModifier {
+ func body(content: Content) -> some View {
+ if #available(iOS 26.0, *) {
+ content.buttonStyle(.glass)
+ } else {
+ content.background(.regularMaterial, in: Circle())
+ }
+ }
+}
+
+struct GlassInformationPanel: ViewModifier {
+ func body(content: Content) -> some View {
+ if #available(iOS 26.0, *) {
+ content.glassEffect(.regular, in: .rect(cornerRadius: 19))
+ } else {
+ content.background(.regularMaterial, in: RoundedRectangle(cornerRadius: 19))
+ }
+ }
+}
+
+struct GlassPrimaryActionStyle: ViewModifier {
+ func body(content: Content) -> some View {
+ if #available(iOS 26.0, *) {
+ content.buttonStyle(.glassProminent)
+ } else {
+ content.buttonStyle(.borderedProminent)
+ }
+ }
+}
+
+struct GlassSecondaryActionStyle: ViewModifier {
+ func body(content: Content) -> some View {
+ if #available(iOS 26.0, *) {
+ content.buttonStyle(.glass)
+ } else {
+ content.buttonStyle(.bordered)
+ }
+ }
+}
diff --git a/DotoryCount/DotoryCount.entitlements b/DotoryCount/DotoryCount.entitlements
new file mode 100644
index 0000000..6575995
--- /dev/null
+++ b/DotoryCount/DotoryCount.entitlements
@@ -0,0 +1,3 @@
+
+
+com.apple.security.application-groupsgroup.com.dotoryman.dotorycount
diff --git a/DotoryCount/Features/Editor/AnniversaryEditorView.swift b/DotoryCount/Features/Editor/AnniversaryEditorView.swift
index 643cd61..af2e606 100644
--- a/DotoryCount/Features/Editor/AnniversaryEditorView.swift
+++ b/DotoryCount/Features/Editor/AnniversaryEditorView.swift
@@ -131,14 +131,19 @@ struct AnniversaryEditorView: View {
private func save() {
do {
+ let savedAnniversary: Anniversary
if let anniversary {
anniversary.title = trimmedTitle
anniversary.startDate = startDate
+ savedAnniversary = anniversary
} else {
- modelContext.insert(Anniversary(title: trimmedTitle, startDate: startDate))
+ let newAnniversary = Anniversary(title: trimmedTitle, startDate: startDate)
+ modelContext.insert(newAnniversary)
+ savedAnniversary = newAnniversary
}
try modelContext.save()
+ WidgetSnapshotStore.publish(savedAnniversary)
dismiss()
} catch {
modelContext.rollback()
@@ -153,6 +158,7 @@ struct AnniversaryEditorView: View {
do {
modelContext.delete(anniversary)
try modelContext.save()
+ WidgetSnapshotStore.publish(nil)
dismiss()
} catch {
modelContext.rollback()
diff --git a/DotoryCount/Features/Editor/StartDateSelectionSheet.swift b/DotoryCount/Features/Editor/StartDateSelectionSheet.swift
index 38d6fe7..bd1cd5a 100644
--- a/DotoryCount/Features/Editor/StartDateSelectionSheet.swift
+++ b/DotoryCount/Features/Editor/StartDateSelectionSheet.swift
@@ -70,7 +70,7 @@ struct StartDateSelectionSheet: View {
preset("어제", daysAgo: 1)
preset("1년 전", yearsAgo: 1)
}
- .buttonStyle(.bordered)
+ .modifier(GlassSecondaryActionStyle())
.listRowBackground(Color.clear)
}
diff --git a/DotoryCount/Features/Home/CinematicAnniversaryDashboard.swift b/DotoryCount/Features/Home/CinematicAnniversaryDashboard.swift
index 42a6674..b6cdbe2 100644
--- a/DotoryCount/Features/Home/CinematicAnniversaryDashboard.swift
+++ b/DotoryCount/Features/Home/CinematicAnniversaryDashboard.swift
@@ -96,8 +96,8 @@ struct CinematicAnniversaryDashboard: View {
Image(systemName: "ellipsis")
.font(.system(size: 19, weight: .medium))
.frame(width: 42, height: 42)
- .background(.white.opacity(0.86), in: Circle())
}
+ .modifier(GlassActionStyle())
.accessibilityLabel("기념일 수정")
.accessibilityIdentifier("edit-anniversary-button")
}
@@ -134,7 +134,7 @@ struct CinematicAnniversaryDashboard: View {
.foregroundStyle(AppTheme.secondaryText)
}
.padding(15)
- .background(.white.opacity(0.88), in: RoundedRectangle(cornerRadius: 19))
+ .modifier(GlassInformationPanel())
}
private func replay() {
diff --git a/DotoryCount/Features/Home/HomeView.swift b/DotoryCount/Features/Home/HomeView.swift
index 4e0819a..afb0372 100644
--- a/DotoryCount/Features/Home/HomeView.swift
+++ b/DotoryCount/Features/Home/HomeView.swift
@@ -34,6 +34,16 @@ struct HomeView: View {
guard previousSheet != nil, currentSheet == nil else { return }
dashboardReplayToken &+= 1
}
+ .onAppear { WidgetSnapshotStore.publish(anniversaries.first) }
+ .onChange(of: anniversaries.count) { _, _ in
+ WidgetSnapshotStore.publish(anniversaries.first)
+ }
+ .onChange(of: anniversaries.first?.startDate) { _, _ in
+ WidgetSnapshotStore.publish(anniversaries.first)
+ }
+ .onChange(of: anniversaries.first?.title) { _, _ in
+ WidgetSnapshotStore.publish(anniversaries.first)
+ }
}
}
@@ -84,7 +94,7 @@ private struct EmptyAnniversaryView: View {
.frame(maxWidth: .infinity)
.padding(.vertical, 14)
}
- .buttonStyle(.borderedProminent)
+ .modifier(GlassPrimaryActionStyle())
.buttonBorderShape(.roundedRectangle(radius: 16))
.accessibilityIdentifier("create-anniversary-button")
diff --git a/DotoryCountWidget/Assets.xcassets/AcornSide.imageset/Contents.json b/DotoryCountWidget/Assets.xcassets/AcornSide.imageset/Contents.json
new file mode 100644
index 0000000..9045498
--- /dev/null
+++ b/DotoryCountWidget/Assets.xcassets/AcornSide.imageset/Contents.json
@@ -0,0 +1,4 @@
+{
+ "images" : [{ "filename" : "acorn-side.png", "idiom" : "universal" }],
+ "info" : { "author" : "xcode", "version" : 1 }
+}
diff --git a/DotoryCountWidget/Assets.xcassets/AcornSide.imageset/acorn-side.png b/DotoryCountWidget/Assets.xcassets/AcornSide.imageset/acorn-side.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb78c60076ffb8241802aa783ccaa50afc9b46da
GIT binary patch
literal 839004
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