Versión 1.7.0 (build 89): release notes iPhone Duo y DUO_STATUS
- MARKETING_VERSION 1.7.0 / CURRENT_PROJECT_VERSION 89 en todos los targets. - Release notes en-US/en-GB/en-AU/en-CA y es-ES/es-MX con iPhone Duo como primer bullet; RELEASE_NOTES.md y CHANGELOG.md. - DUO_STATUS.md: qué se adaptó, escenarios regular×regular, pendiente fase 2 (Xcode 27.1) y cómo probarlo. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F1u4K16xy7eQVtgsYNZ9Vn
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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).
|
||||
@@ -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;
|
||||
|
||||
@@ -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/<locale>/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).
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user