diff --git a/CHANGELOG.md b/CHANGELOG.md index 8473fd3..bde5228 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,22 @@ All notable changes to Portfolio Journal will be documented in this file. +## [1.7.0] — iOS 27 + iPhone Duo (phase 1) + +### Added +- **iPhone Duo / regular width**: single adaptive `TabView` (sidebar-adaptable on iOS 18+) — no more layout swap between iPhone and iPad hierarchies, so navigation state survives opening/closing the Duo. +- **Sources** and **Journal** use `NavigationSplitView` (list + detail side by side in regular width, collapsing stack in compact). +- **Quick Update** opens as an inspector panel next to the dashboard in regular width (sheet in compact). +- **Charts**: plots get 35% more height in regular width via `chartHeightScale`; bottom safe area respected. +- **Biometrics**: Face ID / Touch ID / Optic ID resolved from `LAContext.biometryType`; all lock/privacy strings are generic (7 languages). +- `@SceneStorage` restore of the selected tab. +- What's New entry for 1.7.0. + +### Changed +- Compiles cleanly with Xcode 27 / SDK 27: missing `CoreData` imports (MemberImportVisibility), main-actor isolation warnings, `IsolatedDefaultValues` upcoming feature. +- Migrated soft-deprecated SwiftUI API: `foregroundColor` → `foregroundStyle`, `cornerRadius` → `clipShape`, `navigationBarLeading/Trailing` → `topBarLeading/Trailing`, `Task.sleep(nanoseconds:)` → `sleep(for:)`, `NavigationLink(isActive:)` → `navigationDestination(isPresented:)`. +- Liquid Glass (`glassEffect`) for the Journal floating month labels on iOS 26+, material fallback below. + ## [Unreleased] ### Fixed diff --git a/DUO_STATUS.md b/DUO_STATUS.md new file mode 100644 index 0000000..96f076b --- /dev/null +++ b/DUO_STATUS.md @@ -0,0 +1,94 @@ +# iPhone Duo — estado de la adaptación (Portfolio Journal 1.7.0) + +Fase 1, hecha con Xcode 27.0 / SDK iOS 27.0 (sin las APIs específicas de Duo de +Xcode 27.1). Todo lo que se describe aquí funciona con size classes estándar: + +| Pantalla Duo | Size class | Cómo se comporta la app | +|---|---|---| +| Exterior 5.4" (vertical) | compact × regular | Igual que un iPhone: tab bar, stacks | +| Exterior (horizontal) | compact × compact | Igual que un iPhone en horizontal | +| Interior 7.6" (ambas orientaciones) | regular × regular | Layouts de dos columnas, sidebar/tab bar superior, inspector | + +## Qué se ha adaptado + +### Navegación (ContentView) +- Un único `TabView` para todas las size classes. En iOS 18+ usa + `.tabViewStyle(.sidebarAdaptable)`: tab bar en compacto, tab bar superior / + sidebar en regular. Antes había dos jerarquías (`TabView` iPhone / + `NavigationSplitView` iPad) y el cambio de size class las intercambiaba, + perdiendo el estado; ahora abrir/cerrar el Duo conserva cada pestaña. +- `@SceneStorage("selectedTab")` restaura la pestaña por escena. +- Ningún `userInterfaceIdiom`, `UIScreen.main`, ni orientación: todo por + `@Environment(\.horizontalSizeClass)`. + +### Escenarios regular×regular (pantalla interior) +1. **Fuentes**: `NavigationSplitView` — lista de posiciones a la izquierda y + detalle (rendimiento, gráfico, snapshots) a la derecha, a la vez. En + compacto colapsa a stack; la selección es el único estado de navegación, así + sobrevive al plegado. +2. **Diario**: `NavigationSplitView` — lista de meses + check-in mensual inline. +3. **Dashboard + Quick Update**: el check-in rápido se abre como `.inspector` + (panel lateral) en ancho regular, de modo que los gráficos del dashboard + siguen visibles mientras se teclean los valores; en compacto es un sheet. + El dashboard usa masonry de 2/3 columnas según el ancho disponible + (`GeometryReader`), que se recalcula al abrir/cerrar el inspector. +4. **Gráficos**: sidebar de tipos de gráfico (248 pt) + área de gráfico a todo + el ancho, cabecera KPI y selector de periodo segmentado. Nuevo + `chartHeightScale` (+35 % de alto en regular) para que el ancho extra se + traduzca en más área de trazado; las etiquetas de eje ya eran más densas en + regular. +5. **Bloqueo / privacidad**: `LAContext.biometryType` → "Desbloquear con + Face ID / Touch ID / Optic ID"; icono y textos genéricos en 7 idiomas. + +### Reglas de Apple aplicadas +- Layout por size classes (regla 1), sin `UIScreen.main` (2), sin tamaños de + pantalla fijos (3): las columnas usan `navigationSplitViewColumnWidth(min:ideal:max:)` + e `inspectorColumnWidth`, y el contenido `maxWidth: .infinity`. +- Navegación nativa: `TabView` sidebarAdaptable, `NavigationSplitView`, + `.inspector`, sheets/popovers/alerts del sistema (4, 11). +- Safe areas: se eliminó el `ignoresSafeArea(edges: .bottom)` del contenido + interactivo de Gráficos; solo fondos decorativos (`AppBackground`) ignoran el + safe area (5). +- Orientaciones: iPhone vertical + horizontal, iPad las 4; sin + `UIRequiresFullScreen`; `UIApplicationSupportsMultipleScenes = YES` (6). +- Biometría por `biometryType` (7). +- Estado persistente ante redimensionado: sin intercambio de jerarquías, + `@SceneStorage`, ViewModels en `@StateObject` que sobreviven al cambio de + size class (9). +- Liquid Glass: barras del sistema automáticas al compilar con SDK 27; + `glassEffect` en las etiquetas flotantes del Diario (iOS 26+, fallback + material). + +### Esquinas concéntricas (regla 8) +No aplicada: ninguna tarjeta llega a sangre hasta la esquina de pantalla (todo +va con padding dentro de `ScrollView`/`List`). Revisar en fase 2 si el +edge-to-edge de 27.1 cambia esto. + +## Qué queda para la fase 2 (Xcode 27.1) +- `ArrangementView` / `ReservedRegion`: llegar al borde de la pantalla interior y + respetar la región reservada (botones del sistema en Split View). +- Probar en el simulador Duo (Device Hub) el plegado en caliente: comprobar que + el inspector de Quick Update y las columnas de Fuentes/Diario se recomponen + sin perder el texto tecleado. +- Skill "App Resizability" y release notes con el edge-to-edge. +- Traducir `fastlane/metadata/{de-DE,fr-*,it,ja,pt-*}/release_notes.txt` + (solo en-* y es-* están actualizados). +- Widgets: verificar tamaños en la pantalla interior cuando exista simulador. + +## Cómo probarlo +```bash +# Build (un simulador cada vez) +xcodebuild -project PortfolioJournal.xcodeproj -scheme PortfolioJournal \ + -destination 'platform=iOS Simulator,name=iPad mini (A17 Pro)' build + +# Recorrido con capturas (compacto vs regular×regular) +xcodebuild test -project PortfolioJournal.xcodeproj -scheme PortfolioJournal \ + -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \ + -only-testing:PortfolioJournalUITests/DuoLayoutUITests -resultBundlePath /tmp/duo-iphone.xcresult +xcodebuild test ... -destination 'platform=iOS Simulator,name=iPad mini (A17 Pro)' \ + -only-testing:PortfolioJournalUITests/DuoLayoutUITests -resultBundlePath /tmp/duo-ipad.xcresult +xcrun xcresulttool export attachments --path /tmp/duo-ipad.xcresult --output-path /tmp/duo-ipad-png +``` +La app arranca con datos de ejemplo y sin onboarding con el argumento +`--screenshots`. iPad mini (A17 Pro) es el simulador más parecido a la pantalla +interior del Duo (regular×regular en ambas orientaciones). diff --git a/PortfolioJournal.xcodeproj/project.pbxproj b/PortfolioJournal.xcodeproj/project.pbxproj index 4a9e54b..107e523 100644 --- a/PortfolioJournal.xcodeproj/project.pbxproj +++ b/PortfolioJournal.xcodeproj/project.pbxproj @@ -744,7 +744,7 @@ CODE_SIGN_ENTITLEMENTS = PortfolioJournal/PortfolioJournalDebug.entitlements; ENABLE_USER_SCRIPT_SANDBOXING = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_ASSET_PATHS = PortfolioJournal/Assets.xcassets; DEVELOPMENT_TEAM = 2825Q76T7H; ENABLE_PREVIEWS = YES; @@ -762,7 +762,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -786,7 +786,7 @@ CODE_SIGN_IDENTITY = "Apple Distribution"; CODE_SIGN_STYLE = Manual; PROVISIONING_PROFILE_SPECIFIER = "porfoliojournal"; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_ASSET_PATHS = PortfolioJournal/Assets.xcassets; DEVELOPMENT_TEAM = 2825Q76T7H; ENABLE_PREVIEWS = YES; @@ -804,7 +804,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -944,7 +944,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = PortfolioJournalWidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_ASSET_PATHS = PortfolioJournalWidget/Assets.xcassets; DEVELOPMENT_TEAM = 2825Q76T7H; GENERATE_INFOPLIST_FILE = NO; @@ -957,7 +957,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal.PortfolioJournalWidget; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -979,7 +979,7 @@ CODE_SIGN_IDENTITY = "Apple Distribution"; CODE_SIGN_STYLE = Manual; PROVISIONING_PROFILE_SPECIFIER = "Portfolio Journalwidget"; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_ASSET_PATHS = PortfolioJournalWidget/Assets.xcassets; DEVELOPMENT_TEAM = 2825Q76T7H; GENERATE_INFOPLIST_FILE = NO; @@ -992,7 +992,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal.PortfolioJournalWidget; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -1010,7 +1010,7 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.6; @@ -1019,7 +1019,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournalTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = NO; @@ -1034,7 +1034,7 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.6; @@ -1043,7 +1043,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournalTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = NO; @@ -1057,7 +1057,7 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.6; @@ -1066,7 +1066,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournalUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = NO; @@ -1080,7 +1080,7 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.6; @@ -1089,7 +1089,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournalUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = NO; @@ -1104,7 +1104,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = PortfolioJournalQuickUpdateExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = PortfolioJournalQuickUpdate/Info.plist; @@ -1116,7 +1116,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal.QuickUpdate; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -1132,7 +1132,7 @@ CODE_SIGN_ENTITLEMENTS = PortfolioJournalQuickUpdateExtension.entitlements; CODE_SIGN_IDENTITY = "Apple Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; PROVISIONING_PROFILE_SPECIFIER = "PortfolioJournal QuickUpdate AppStore"; GENERATE_INFOPLIST_FILE = NO; @@ -1145,7 +1145,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal.QuickUpdate; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -1164,7 +1164,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = PortfolioJournalWatch.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = NO; @@ -1174,7 +1174,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -1200,7 +1200,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = PortfolioJournalWatch.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = NO; @@ -1210,7 +1210,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -1234,7 +1234,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = PortfolioJournalWatchWidget.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = NO; @@ -1244,7 +1244,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal.watchkitapp.widget; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -1269,7 +1269,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = PortfolioJournalWatchWidget.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 2825Q76T7H; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = NO; @@ -1279,7 +1279,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.6.3; + MARKETING_VERSION = 1.7.0; PRODUCT_BUNDLE_IDENTIFIER = com.alexandrevazquez.PortfolioJournal.watchkitapp.widget; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 0000000..8fe51b5 --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,20 @@ +# Release notes — 1.7.0 (build 89) + +## en-US + +📱 Ready for iPhone Duo: on the inner screen, Sources and Journal show the list and the detail side by side, Charts gain a sidebar with taller, wider plots, and your place is kept when you open or close the phone. Quick Update opens in a side panel next to your dashboard. +• Built for iOS 27 with the new Liquid Glass tab bar and toolbars. +• Face ID, Touch ID or Optic ID: App Lock and balance privacy now use whichever biometrics your device has. +• Layout adapts to any window size, Split View and Stage Manager. +• Bug fixes and performance improvements. + +## es-ES + +📱 Preparada para iPhone Duo: en la pantalla interior, Fuentes y Diario muestran lista y detalle a la vez, Gráficos gana una barra lateral con gráficos más altos y anchos, y no pierdes el sitio al abrir o cerrar el teléfono. La actualización rápida se abre en un panel lateral junto al panel principal. +• Compilada para iOS 27 con la nueva barra de pestañas y toolbars Liquid Glass. +• Face ID, Touch ID u Optic ID: el bloqueo de la app y la privacidad de saldos usan la biometría que tenga tu dispositivo. +• La interfaz se adapta a cualquier tamaño de ventana, Split View y Stage Manager. +• Correcciones de errores y mejoras de rendimiento. + +Los ficheros que sube fastlane están en `fastlane/metadata//release_notes.txt` +(en-US, en-GB, en-AU, en-CA, es-ES, es-MX actualizados; de-DE, fr-*, it, ja, pt-* pendientes de traducir). diff --git a/fastlane/metadata/en-AU/release_notes.txt b/fastlane/metadata/en-AU/release_notes.txt index cb38846..2f84779 100644 --- a/fastlane/metadata/en-AU/release_notes.txt +++ b/fastlane/metadata/en-AU/release_notes.txt @@ -1,9 +1,5 @@ -New charts, quick updates and portfolio insights: - -• Quick Update — add snapshots to all your sources at once from the Dashboard -• Portfolio Insights — smart observations about your portfolio (streak, gains, milestones, forecasts) -• 3 new Premium charts: Compare Sources, What If Simulator, Period vs Period -• Monthly contribution — set a default contribution per source, apply retroactively -• Streak badge — see your consecutive months tracking streak on the Dashboard -• Smarter notifications — check-in reminders skip months you have already completed; milestone alerts when your portfolio crosses round numbers -• Bug fixes and performance improvements +📱 Ready for iPhone Duo: on the inner screen, Sources and Journal show the list and the detail side by side, Charts gain a sidebar with taller, wider plots, and your place is kept when you open or close the phone. Quick Update opens in a side panel next to your dashboard. +• Built for iOS 27 with the new Liquid Glass tab bar and toolbars. +• Face ID, Touch ID or Optic ID: App Lock and balance privacy now use whichever biometrics your device has. +• Layout adapts to any window size, Split View and Stage Manager. +• Bug fixes and performance improvements. diff --git a/fastlane/metadata/en-CA/release_notes.txt b/fastlane/metadata/en-CA/release_notes.txt index cb38846..2f84779 100644 --- a/fastlane/metadata/en-CA/release_notes.txt +++ b/fastlane/metadata/en-CA/release_notes.txt @@ -1,9 +1,5 @@ -New charts, quick updates and portfolio insights: - -• Quick Update — add snapshots to all your sources at once from the Dashboard -• Portfolio Insights — smart observations about your portfolio (streak, gains, milestones, forecasts) -• 3 new Premium charts: Compare Sources, What If Simulator, Period vs Period -• Monthly contribution — set a default contribution per source, apply retroactively -• Streak badge — see your consecutive months tracking streak on the Dashboard -• Smarter notifications — check-in reminders skip months you have already completed; milestone alerts when your portfolio crosses round numbers -• Bug fixes and performance improvements +📱 Ready for iPhone Duo: on the inner screen, Sources and Journal show the list and the detail side by side, Charts gain a sidebar with taller, wider plots, and your place is kept when you open or close the phone. Quick Update opens in a side panel next to your dashboard. +• Built for iOS 27 with the new Liquid Glass tab bar and toolbars. +• Face ID, Touch ID or Optic ID: App Lock and balance privacy now use whichever biometrics your device has. +• Layout adapts to any window size, Split View and Stage Manager. +• Bug fixes and performance improvements. diff --git a/fastlane/metadata/en-GB/release_notes.txt b/fastlane/metadata/en-GB/release_notes.txt index cb38846..2f84779 100644 --- a/fastlane/metadata/en-GB/release_notes.txt +++ b/fastlane/metadata/en-GB/release_notes.txt @@ -1,9 +1,5 @@ -New charts, quick updates and portfolio insights: - -• Quick Update — add snapshots to all your sources at once from the Dashboard -• Portfolio Insights — smart observations about your portfolio (streak, gains, milestones, forecasts) -• 3 new Premium charts: Compare Sources, What If Simulator, Period vs Period -• Monthly contribution — set a default contribution per source, apply retroactively -• Streak badge — see your consecutive months tracking streak on the Dashboard -• Smarter notifications — check-in reminders skip months you have already completed; milestone alerts when your portfolio crosses round numbers -• Bug fixes and performance improvements +📱 Ready for iPhone Duo: on the inner screen, Sources and Journal show the list and the detail side by side, Charts gain a sidebar with taller, wider plots, and your place is kept when you open or close the phone. Quick Update opens in a side panel next to your dashboard. +• Built for iOS 27 with the new Liquid Glass tab bar and toolbars. +• Face ID, Touch ID or Optic ID: App Lock and balance privacy now use whichever biometrics your device has. +• Layout adapts to any window size, Split View and Stage Manager. +• Bug fixes and performance improvements. diff --git a/fastlane/metadata/en-US/release_notes.txt b/fastlane/metadata/en-US/release_notes.txt index cb38846..2f84779 100644 --- a/fastlane/metadata/en-US/release_notes.txt +++ b/fastlane/metadata/en-US/release_notes.txt @@ -1,9 +1,5 @@ -New charts, quick updates and portfolio insights: - -• Quick Update — add snapshots to all your sources at once from the Dashboard -• Portfolio Insights — smart observations about your portfolio (streak, gains, milestones, forecasts) -• 3 new Premium charts: Compare Sources, What If Simulator, Period vs Period -• Monthly contribution — set a default contribution per source, apply retroactively -• Streak badge — see your consecutive months tracking streak on the Dashboard -• Smarter notifications — check-in reminders skip months you have already completed; milestone alerts when your portfolio crosses round numbers -• Bug fixes and performance improvements +📱 Ready for iPhone Duo: on the inner screen, Sources and Journal show the list and the detail side by side, Charts gain a sidebar with taller, wider plots, and your place is kept when you open or close the phone. Quick Update opens in a side panel next to your dashboard. +• Built for iOS 27 with the new Liquid Glass tab bar and toolbars. +• Face ID, Touch ID or Optic ID: App Lock and balance privacy now use whichever biometrics your device has. +• Layout adapts to any window size, Split View and Stage Manager. +• Bug fixes and performance improvements. diff --git a/fastlane/metadata/es-ES/release_notes.txt b/fastlane/metadata/es-ES/release_notes.txt index e3c24e4..eaa28e3 100644 --- a/fastlane/metadata/es-ES/release_notes.txt +++ b/fastlane/metadata/es-ES/release_notes.txt @@ -1,9 +1,5 @@ -Nuevos gráficos, actualizaciones rápidas e insights de cartera: - -• Actualización rápida — añade snapshots a todas tus fuentes de una vez desde el Dashboard -• Insights de cartera — observaciones inteligentes sobre tu cartera (racha, ganancias, hitos, previsiones) -• 3 nuevos gráficos Premium: Comparar Fuentes, Simulador ¿Y si...?, Período vs Período -• Contribución mensual — configura una contribución predeterminada por fuente, aplícala retroactivamente -• Racha — visualiza tu racha de meses consecutivos de seguimiento en el Dashboard -• Notificaciones más inteligentes — los recordatorios saltan meses ya completados; alertas al cruzar hitos redondos -• Correcciones de errores y mejoras de rendimiento +📱 Preparada para iPhone Duo: en la pantalla interior, Fuentes y Diario muestran lista y detalle a la vez, Gráficos gana una barra lateral con gráficos más altos y anchos, y no pierdes el sitio al abrir o cerrar el teléfono. La actualización rápida se abre en un panel lateral junto al panel principal. +• Compilada para iOS 27 con la nueva barra de pestañas y toolbars Liquid Glass. +• Face ID, Touch ID u Optic ID: el bloqueo de la app y la privacidad de saldos usan la biometría que tenga tu dispositivo. +• La interfaz se adapta a cualquier tamaño de ventana, Split View y Stage Manager. +• Correcciones de errores y mejoras de rendimiento. diff --git a/fastlane/metadata/es-MX/release_notes.txt b/fastlane/metadata/es-MX/release_notes.txt index e3c24e4..eaa28e3 100644 --- a/fastlane/metadata/es-MX/release_notes.txt +++ b/fastlane/metadata/es-MX/release_notes.txt @@ -1,9 +1,5 @@ -Nuevos gráficos, actualizaciones rápidas e insights de cartera: - -• Actualización rápida — añade snapshots a todas tus fuentes de una vez desde el Dashboard -• Insights de cartera — observaciones inteligentes sobre tu cartera (racha, ganancias, hitos, previsiones) -• 3 nuevos gráficos Premium: Comparar Fuentes, Simulador ¿Y si...?, Período vs Período -• Contribución mensual — configura una contribución predeterminada por fuente, aplícala retroactivamente -• Racha — visualiza tu racha de meses consecutivos de seguimiento en el Dashboard -• Notificaciones más inteligentes — los recordatorios saltan meses ya completados; alertas al cruzar hitos redondos -• Correcciones de errores y mejoras de rendimiento +📱 Preparada para iPhone Duo: en la pantalla interior, Fuentes y Diario muestran lista y detalle a la vez, Gráficos gana una barra lateral con gráficos más altos y anchos, y no pierdes el sitio al abrir o cerrar el teléfono. La actualización rápida se abre en un panel lateral junto al panel principal. +• Compilada para iOS 27 con la nueva barra de pestañas y toolbars Liquid Glass. +• Face ID, Touch ID u Optic ID: el bloqueo de la app y la privacidad de saldos usan la biometría que tenga tu dispositivo. +• La interfaz se adapta a cualquier tamaño de ventana, Split View y Stage Manager. +• Correcciones de errores y mejoras de rendimiento.