diff --git a/.github/actions/apply-version/action.yml b/.github/actions/apply-version/action.yml index 4f4921d..eb4bfe4 100644 --- a/.github/actions/apply-version/action.yml +++ b/.github/actions/apply-version/action.yml @@ -68,8 +68,14 @@ runs: src-tauri/tauri.appstore.conf.json > src-tauri/tauri.appstore.conf.json.tmp mv src-tauri/tauri.appstore.conf.json.tmp src-tauri/tauri.appstore.conf.json - jq --arg id "$IOS_IDENTIFIER" --arg n "$IOS_PRODUCT_NAME" \ - '.identifier = $id | .productName = $n' \ + # bundle.iOS.bundleVersion maps straight to CFBundleVersion (same as + # macOS's bundle.macOS.bundleVersion below) — tauri ios build writes + # Info.plist's CFBundleVersion from this config value directly, so a + # PlistBuddy edit after the fact would just get overwritten. Use + # REVISION alone (not the full dotted version) so it stays a small, + # strictly-increasing integer across pushes, same as macOS's build number. + jq --arg id "$IOS_IDENTIFIER" --arg n "$IOS_PRODUCT_NAME" --arg bv "$REVISION" \ + '.identifier = $id | .productName = $n | .bundle.iOS.bundleVersion = $bv' \ src-tauri/tauri.ios.conf.json > src-tauri/tauri.ios.conf.json.tmp mv src-tauri/tauri.ios.conf.json.tmp src-tauri/tauri.ios.conf.json @@ -137,7 +143,6 @@ runs: if: ${{ runner.os == 'macOS' && inputs.ios == 'true' }} shell: bash env: - INPUT_VERSION: ${{ inputs.version }} INPUT_STAGING: ${{ inputs.staging }} run: | set -e @@ -148,31 +153,26 @@ runs: exit 1 fi - SEMVER=$(echo "$INPUT_VERSION" | cut -d. -f1-3) - if [[ "$INPUT_STAGING" == "true" ]]; then DISPLAY_NAME="Scriptio (Staging)" else DISPLAY_NAME="Scriptio" fi - # PRODUCT_NAME and PRODUCT_BUNDLE_IDENTIFIER (which Info.plist's - # CFBundleExecutable/CFBundleIdentifier resolve from via - # "$(EXECUTABLE_NAME)"/"$(PRODUCT_BUNDLE_IDENTIFIER)") are NOT set here. - # `tauri ios build` overwrites both in project.pbxproj on every build, - # straight from the merged tauri.conf.json + tauri.ios.conf.json - # (synchronize_project_config in tauri-cli) — so those are set via - # tauri.ios.conf.json's identifier/productName fields, patched in the - # step above, not here. Editing pbxproj directly would just get - # clobbered by that same build step. - - # Mirror version + display name into the real, committed Info.plist - # (the file xcodebuild actually embeds). CFBundleDisplayName may not - # exist yet on a fresh checkout, so Add first (ignoring failure if it's - # already there) and Set to cover both cases. + # PRODUCT_NAME, PRODUCT_BUNDLE_IDENTIFIER, CFBundleShortVersionString and + # CFBundleVersion are NOT set here. `tauri ios build` overwrites all four + # in project.pbxproj/Info.plist on every build, straight from the merged + # tauri.conf.json + tauri.ios.conf.json (synchronize_project_config in + # tauri-cli: PRODUCT_NAME/PRODUCT_BUNDLE_IDENTIFIER from + # identifier/productName; CFBundleShortVersionString from the top-level + # version; CFBundleVersion from bundle.iOS.bundleVersion) — all patched + # into tauri.ios.conf.json in the step above. Setting them here would just + # get clobbered by that same build step, like PRODUCT_NAME was before. + # CFBundleDisplayName is the one field Tauri doesn't manage, so it's the + # only one still set directly on the real, committed Info.plist here. It + # may not exist yet on a fresh checkout, so Add first (ignoring failure if + # it's already there) and Set to cover both cases. for plist in src-tauri/gen/apple/*/Info.plist; do - /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString ${SEMVER}" "$plist" || true - /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${INPUT_VERSION}" "$plist" || true /usr/libexec/PlistBuddy -c "Add :CFBundleDisplayName string ${DISPLAY_NAME}" "$plist" 2>/dev/null || \ /usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName ${DISPLAY_NAME}" "$plist" || true done @@ -189,4 +189,4 @@ runs: cp "$IOS_ICON_SRC"/*.png src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/ echo "Synced iOS app icons from $IOS_ICON_SRC" - echo "Applied iOS settings (display: '$DISPLAY_NAME', short: $SEMVER, build: $INPUT_VERSION, icons: $IOS_ICON_SRC)" + echo "Applied iOS settings (display: '$DISPLAY_NAME', icons: $IOS_ICON_SRC)" diff --git a/components/navbar/ProjectNavbar.module.css b/components/navbar/ProjectNavbar.module.css index d664b71..47d7685 100644 --- a/components/navbar/ProjectNavbar.module.css +++ b/components/navbar/ProjectNavbar.module.css @@ -60,7 +60,10 @@ @media (max-width: 767px) { .container { + /* Push the bar below the status bar / Dynamic Island. --navbar-height + * already reserves this space, so the content box stays 56px tall. */ padding-block: 0; + padding-top: var(--safe-top); } } diff --git a/components/navbar/ScreenplayFormatDropdown.module.css b/components/navbar/ScreenplayFormatDropdown.module.css index a862f1c..6a9e2b8 100644 --- a/components/navbar/ScreenplayFormatDropdown.module.css +++ b/components/navbar/ScreenplayFormatDropdown.module.css @@ -122,3 +122,13 @@ background-color: var(--secondary-hover); font-weight: 600; } + +/* Narrow (phone) navbar: there isn't room for the styling + alignment toolbar + * alongside the element dropdown, so drop them and keep only the element + * dropdown. Inline styling stays available from the right-hand format sidebar. */ +@media (max-width: 767px) { + .style_btns, + .separator { + display: none; + } +} diff --git a/components/utils/NavbarIconButton.module.css b/components/utils/NavbarIconButton.module.css index 6cdc512..37020a9 100644 --- a/components/utils/NavbarIconButton.module.css +++ b/components/utils/NavbarIconButton.module.css @@ -20,3 +20,15 @@ .active { border-color: var(--tertiary); } + +/* Phone: the navbar is taller than these icon-only buttons are wide, so + * height: 100% turns them into tall pills. Pin a square size so they render as + * round circles instead. */ +@media (max-width: 767px) { + .button { + height: 40px; + width: 40px; + padding-inline: 0; + border-radius: 50%; + } +} diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png index 533abdd..6b51776 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png index 0a13c8a..330e429 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png index 0a13c8a..330e429 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png index 474a6a8..040fc38 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png index 76dea25..d6712c8 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png index 66e3711..565eba8 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png index 66e3711..565eba8 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png index 2b91b62..b61188c 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png index 0a13c8a..330e429 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png index 427a0cb..338aa32 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png index 427a0cb..338aa32 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png index 715c612..16094b9 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png index 4d727db..3ab3eae 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png index 715c612..16094b9 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png index f27a9bd..a45faaf 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png index f11e17d..a528730 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png index dddb55b..76d8acd 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png differ diff --git a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png index 77715ab..15377d5 100644 Binary files a/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png and b/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png differ diff --git a/src-tauri/icons-staging/icon.icns b/src-tauri/icons-staging/icon.icns index 4944a59..c0b7f08 100644 Binary files a/src-tauri/icons-staging/icon.icns and b/src-tauri/icons-staging/icon.icns differ diff --git a/src-tauri/icons-staging/ios/AppIcon-20x20@1x.png b/src-tauri/icons-staging/ios/AppIcon-20x20@1x.png new file mode 100644 index 0000000..7c0013b Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-20x20@1x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-20x20@2x-1.png b/src-tauri/icons-staging/ios/AppIcon-20x20@2x-1.png new file mode 100644 index 0000000..2f89b03 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-20x20@2x-1.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-20x20@2x.png b/src-tauri/icons-staging/ios/AppIcon-20x20@2x.png new file mode 100644 index 0000000..2f89b03 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-20x20@2x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-20x20@3x.png b/src-tauri/icons-staging/ios/AppIcon-20x20@3x.png new file mode 100644 index 0000000..df8dda4 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-20x20@3x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-29x29@1x.png b/src-tauri/icons-staging/ios/AppIcon-29x29@1x.png new file mode 100644 index 0000000..8faf307 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-29x29@1x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-29x29@2x-1.png b/src-tauri/icons-staging/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 0000000..eac51d3 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-29x29@2x-1.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-29x29@2x.png b/src-tauri/icons-staging/ios/AppIcon-29x29@2x.png new file mode 100644 index 0000000..eac51d3 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-29x29@2x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-29x29@3x.png b/src-tauri/icons-staging/ios/AppIcon-29x29@3x.png new file mode 100644 index 0000000..184503e Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-29x29@3x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-40x40@1x.png b/src-tauri/icons-staging/ios/AppIcon-40x40@1x.png new file mode 100644 index 0000000..2f89b03 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-40x40@1x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-40x40@2x-1.png b/src-tauri/icons-staging/ios/AppIcon-40x40@2x-1.png new file mode 100644 index 0000000..ad0b479 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-40x40@2x-1.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-40x40@2x.png b/src-tauri/icons-staging/ios/AppIcon-40x40@2x.png new file mode 100644 index 0000000..ad0b479 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-40x40@2x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-40x40@3x.png b/src-tauri/icons-staging/ios/AppIcon-40x40@3x.png new file mode 100644 index 0000000..e4512d0 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-40x40@3x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-512@2x.png b/src-tauri/icons-staging/ios/AppIcon-512@2x.png new file mode 100644 index 0000000..6b14720 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-512@2x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-60x60@2x.png b/src-tauri/icons-staging/ios/AppIcon-60x60@2x.png new file mode 100644 index 0000000..e4512d0 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-60x60@2x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-60x60@3x.png b/src-tauri/icons-staging/ios/AppIcon-60x60@3x.png new file mode 100644 index 0000000..bd04fc1 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-60x60@3x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-76x76@1x.png b/src-tauri/icons-staging/ios/AppIcon-76x76@1x.png new file mode 100644 index 0000000..577445a Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-76x76@1x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-76x76@2x.png b/src-tauri/icons-staging/ios/AppIcon-76x76@2x.png new file mode 100644 index 0000000..978c5d9 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-76x76@2x.png differ diff --git a/src-tauri/icons-staging/ios/AppIcon-83.5x83.5@2x.png b/src-tauri/icons-staging/ios/AppIcon-83.5x83.5@2x.png new file mode 100644 index 0000000..ae27225 Binary files /dev/null and b/src-tauri/icons-staging/ios/AppIcon-83.5x83.5@2x.png differ diff --git a/styles/globals.css b/styles/globals.css index 9be6acf..f5071b8 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -6,6 +6,11 @@ body { height: 100%; width: 100%; overflow: clip; + /* Stop iOS from auto-inflating text ("text autosizing"): the screenplay + * paragraphs pin line-height to a fixed 16px, so inflating only the + * font-size crams the lines on top of each other in the editor. */ + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; } .app-layout { @@ -50,7 +55,11 @@ body { * component modules), so their inline widths no longer reserve space. */ @media (max-width: 767px) { * { - --navbar-height: 56px; + /* Include the top safe-area inset so the bar clears the status bar / + * Dynamic Island; the navbar pads its content down by the same amount + * (see ProjectNavbar.module.css). Sidebars/backdrop anchor to + * top: var(--navbar-height), so they stay flush with the bar. */ + --navbar-height: calc(56px + var(--safe-top)); } }