summaryrefslogtreecommitdiff
path: root/Hutch.xcodeproj
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-01 13:50:09 -0500
committerChristian Cleberg <[email protected]>2026-04-01 13:50:09 -0500
commite84e5543be9be548784859f4b082b9d7a3122f15 (patch)
tree0aa941558514adc1be7cdf5140c57bb3781ee1ad /Hutch.xcodeproj
parent109b0ea7e859de2d8b5a4dc22bf0472fd3b08eaa (diff)
downloadhutch-e84e5543be9be548784859f4b082b9d7a3122f15.tar.gz
hutch-e84e5543be9be548784859f4b082b9d7a3122f15.tar.bz2
hutch-e84e5543be9be548784859f4b082b9d7a3122f15.zip
Rewrite file viewer with pinned gutter, syntax highlighting, and toolbar
Replace the SwiftUI-only CodeFileTextView with a UIViewRepresentable backed by CodeFileUIView. The previous approach could not support a fixed line number gutter while independently scrolling code content horizontally. Changes: - Gutter is pinned outside the horizontal scroll view and never scrolls left - Vertical scroll is handled by a single outer UIScrollView shared by both the gutter and code content, keeping them in sync - Line numbers are right-aligned in a fixed-width gutter calculated from the total line count - Syntax highlighting via Splash for .swift files, with plain monospaced rendering as fallback for unsupported file types - Wrap toggle persisted via AppStorage (wrapRepositoryFileLines) - Bottom toolbar replaces the floating Share button, adding Copy All and Wrap toggle actions - Copy All shows a brief checkmark confirmation that resets after 2 seconds - Font fixed at SFMono-Regular 12pt, not scaled with Dynamic Type Implements: https://todo.sr.ht/~ccleberg/Hutch/7
Diffstat (limited to 'Hutch.xcodeproj')
-rw-r--r--Hutch.xcodeproj/project.pbxproj17
-rw-r--r--Hutch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved11
2 files changed, 27 insertions, 1 deletions
diff --git a/Hutch.xcodeproj/project.pbxproj b/Hutch.xcodeproj/project.pbxproj
index cb7bea9..d844cd3 100644
--- a/Hutch.xcodeproj/project.pbxproj
+++ b/Hutch.xcodeproj/project.pbxproj
@@ -16,6 +16,7 @@
8BE09E812F7B2CC300F88693 /* styles.css in Resources */ = {isa = PBXBuildFile; fileRef = 8BE09E7D2F7B2CC300F88693 /* styles.css */; };
8BE09E822F7B2CC300F88693 /* privacy.html in Resources */ = {isa = PBXBuildFile; fileRef = 8BE09E7B2F7B2CC300F88693 /* privacy.html */; };
8BF100032F9A000100000001 /* Markdown in Frameworks */ = {isa = PBXBuildFile; productRef = 8BF100022F9A000100000001 /* Markdown */; };
+ 8BF100052F9A000100000002 /* Splash in Frameworks */ = {isa = PBXBuildFile; productRef = 8BF100042F9A000100000002 /* Splash */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -116,6 +117,7 @@
buildActionMask = 2147483647;
files = (
8BF100032F9A000100000001 /* Markdown in Frameworks */,
+ 8BF100052F9A000100000002 /* Splash in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -198,6 +200,7 @@
name = Hutch;
packageProductDependencies = (
8BF100022F9A000100000001 /* Markdown */,
+ 8BF100042F9A000100000002 /* Splash */,
);
productName = Hutch;
productReference = 8B4B28D12F6704280045FA19 /* Hutch.app */;
@@ -279,6 +282,7 @@
minimizedProjectReferenceProxies = 1;
packageReferences = (
8BF100012F9A000100000001 /* XCRemoteSwiftPackageReference "swift-markdown" */,
+ 8BF100062F9A000100000002 /* XCRemoteSwiftPackageReference "Splash" */,
);
preferredProjectObjectVersion = 77;
productRefGroup = 8B4B28D22F6704280045FA19 /* Products */;
@@ -710,6 +714,14 @@
minimumVersion = 0.7.3;
};
};
+ 8BF100062F9A000100000002 /* XCRemoteSwiftPackageReference "Splash" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://github.com/JohnSundell/Splash";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 0.16.0;
+ };
+ };
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
@@ -718,6 +730,11 @@
package = 8BF100012F9A000100000001 /* XCRemoteSwiftPackageReference "swift-markdown" */;
productName = Markdown;
};
+ 8BF100042F9A000100000002 /* Splash */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 8BF100062F9A000100000002 /* XCRemoteSwiftPackageReference "Splash" */;
+ productName = Splash;
+ };
/* End XCSwiftPackageProductDependency section */
};
rootObject = 8B4B28C92F6704280045FA19 /* Project object */;
diff --git a/Hutch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Hutch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
index a2a45a3..ae6b756 100644
--- a/Hutch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
+++ b/Hutch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -1,7 +1,16 @@
{
- "originHash" : "b809819531d430dc5b7a0fb1fb5538d0321c5d541eed52a9990f37c38dd0f98a",
+ "originHash" : "65542d8a5fbbad8dd7d07c8901c1cc48b3aba12cef8da1f062bd28d9b3a6ba50",
"pins" : [
{
+ "identity" : "splash",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/JohnSundell/Splash",
+ "state" : {
+ "revision" : "7f4df436eb78fe64fe2c32c58006e9949fa28ad8",
+ "version" : "0.16.0"
+ }
+ },
+ {
"identity" : "swift-cmark",
"kind" : "remoteSourceControl",
"location" : "https://github.com/swiftlang/swift-cmark.git",