Compare commits

..
Author SHA1 Message Date
jack 48db5502d7 Notes icon: turn blue immediately when sheet shows notes by passing count up from sheet (closure) and OR-ing with counter; reset on sheet close 2025-09-13 14:18:38 +02:00
jack 0a9a59a7a6 Notes subscribe: fallback to default relays when GeoRelayDirectory has no entries (pass nil relayUrls) so counter/icon turn blue and sheet loads even before georelay fetch 2025-09-13 13:29:41 +02:00
jack 887faa89ac Notes icon: force a one-shot location refresh before (re)subscribing the counter so icon turns blue immediately on current 8-cell 2025-09-13 13:16:29 +02:00
jack 58eb83b73a Notes sheet: add light haptic feedback when building geohash changes (iOS only) 2025-09-13 12:56:41 +02:00
jack 24cebfebf2 Notes header: bold count text; ensure sheet updates when building geohash changes by calling manager.setGeohash on geohash change 2025-09-13 12:47:23 +02:00
jack 0a151f51df Notes header: move count before title as '<N> note(s) @ #gh'; remove parentheses; keep count non-bold 2025-09-13 12:39:02 +02:00
jack 8c9bfaa20e Notes header: show count as '(N note/notes)' with non-bold, secondary styling next to title 2025-09-13 12:33:49 +02:00
jack e08e5c8e65 Notes header: show count in parentheses; icon shows blue if any notes, grey if none; only start live location updates while sheet is open; reduce nickname width; set live distance filter to 10m 2025-09-13 12:31:02 +02:00
jack 78f1bd3ad9 Notes counter: subscribe only to building geohash (precision 8) so count reflects current 8-cell; auto-begin live location refresh on mesh (and permission) to update as you walk 2025-09-13 12:19:44 +02:00
jack 6cf6e3c420 Notes: subscribe counter to building + parent block (merge results); hide notes icon unless location is authorized; replace 10s timer with live location updates while sheet open 2025-09-13 12:09:41 +02:00
jack 8cc6d538ae Notes header: show building name when available (fallback to block name) 2025-09-13 12:04:14 +02:00
jack f10e5d1788 Notes counter: show 0 by default; subscribe at building-level (precision 8) for notes and counter; keep building hidden in channel list 2025-09-13 11:59:55 +02:00
jack 5bf28e5ba4 Fix Swift 6 isolation: hop to @MainActor inside Timer callback for EOSE tracker mutations 2025-09-13 11:53:19 +02:00
jack fecebb05d5 Nostr: add EOSE handling with callback support for subscriptions; wire to LocationNotesManager/Counter (initialLoadComplete). Remove 'building' level from channel enum and geocoder mapping; geohash list shows block/neighborhood/city/province/region only 2025-09-13 11:44:37 +02:00
jack b7e76e6da4 Location notes: show block name (from reverse geocode) in header instead of 'street-level notes' 2025-09-13 11:35:23 +02:00
jack eb63a62590 Revert notes geohash selection back to block-level (precision 7); keep building level available but unused; update counter and sheet accordingly 2025-09-13 11:29:49 +02:00
jack 939adcf1cb Location notes: change notes toolbar icon to SF Symbol 'long.text.page.and.pencil' 2025-09-13 11:27:46 +02:00
jack 46ca37ceaa Switch location notes and UI helpers to building-level geohash (precision 8): add GeohashChannelLevel.building, map length 8, use building for notes selection and counter, add building name mapping 2025-09-13 11:08:38 +02:00
jack ead1d1e9a2 Location notes: append 'ago' to relative timestamps (within 7 days) 2025-09-13 10:37:05 +02:00
jack e0f69d7f59 Location notes: show timestamp as relative within 7 days, else absolute date (MMM d or MMM d, y); keep monospaced styling 2025-09-13 10:36:26 +02:00
jack cd3dea3dc4 Location notes: drop 'teleport' tag from kind-1 events; simplify note builder API and usage 2025-09-13 10:32:35 +02:00
jack 086699961d Location notes: restore timestamps in notes list; remove loading state from manager and sheet (no spinner/animation) 2025-09-13 10:31:17 +02:00
jack d0bfb179ed Location notes: move notes icon to the right of #mesh badge in toolbar 2025-09-13 01:15:15 +02:00
jack 52bdf6745b Location notes: add background counter service and show count next to notes icon on mesh; auto-subscribe to current block geohash 2025-09-13 01:12:49 +02:00
jack bef4a30ea7 Location notes: fix intermittent first load by ensuring resubscribe after geohash change, removing over-eager subscribe guard, and widening note fetch window (no since filter) 2025-09-13 01:09:35 +02:00
jack c97de7a2f8 Location notes: remove per-note relative timestamp from sheet (no seconds display) 2025-09-13 01:07:32 +02:00
jack 9fd5957f46 Location notes: remove Matrix animation; use simple spinner when acquiring location; simplify notes view layout 2025-09-13 01:04:58 +02:00
jack 7eba856f13 Location notes: inline sheet wrapper to avoid missing file in target; force location refresh and show Matrix loader until block geohash resolves 2025-09-13 01:02:20 +02:00
jack 3a3da2f66d Location notes: acquire geohash on open (force refresh) and show Matrix loader until block-level geohash resolves; add LocationNotesSheet wrapper 2025-09-13 01:00:55 +02:00
jack 52933568d7 Location notes: add close (x) button in sheet header (upper-right) using @Environment(\.dismiss) 2025-09-13 00:55:47 +02:00
jack abeab5ae94 Location notes: render note bodies with monospaced font in notes list 2025-09-13 00:52:01 +02:00
jack 4a2d83ec78 Location notes: fix duplicate state redeclaration in ContentView 2025-09-13 00:48:12 +02:00
jack 56590c8ac3 Location notes: prevent duplicate loading/subscriptions (StateObject manager, geohash captured at open, guard subscribe) 2025-09-13 00:46:50 +02:00
jack d809351ab3 Location notes: Matrix loader with 1–3s minimum display; allow multiple notes; wire notes UI from mesh toolbar 2025-09-13 00:40:41 +02:00
2454 changed files with 14094 additions and 183306 deletions
-20
View File
@@ -1,20 +0,0 @@
# Prevent Github Languages stats skewing:
# Binaries and assets
**/*.xcframework/** linguist-vendored
**/*.xcassets/** linguist-vendored
# Generated files
**/*.pbxproj linguist-generated
**/*.storyboard linguist-generated
Package.resolved linguist-generated
# Downloaded CSVs
relays/online_relays_gps.csv linguist-vendored
# Docs
**/*.md linguist-documentation
# Configs
Configs/*.xcconfig linguist-documentation
**/*.plist linguist-documentation
+12 -43
View File
@@ -7,7 +7,6 @@ on:
permissions: permissions:
contents: write contents: write
pull-requests: write
jobs: jobs:
update-relay-data: update-relay-data:
@@ -18,54 +17,24 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Fetch GeoRelays - name: Fetch GeoRelays
run: | run: |
wget -q https://raw.githubusercontent.com/permissionlesstech/georelays/refs/heads/main/nostr_relays.csv wget https://raw.githubusercontent.com/permissionlesstech/georelays/refs/heads/main/nostr_relays.csv
mv nostr_relays.csv ./relays/online_relays_gps.csv mv nostr_relays.csv ./relays/online_relays_gps.csv
- name: Configure git - name: Check for changes
id: git-check
run: | run: |
git config user.email "action@github.com" git diff --exit-code || echo "changes=true" >> $GITHUB_OUTPUT
git config user.name "GitHub Action"
- name: Create update branch if changes - name: Commit and push changes
id: create_branch if: steps.git-check.outputs.changes == 'true'
run: | run: |
# exit early if no changes git config --local user.email "action@github.com"
if git diff --quiet --relays/online_relays_gps.csv; then git config --local user.name "GitHub Action"
echo "changed=false" >> $GITHUB_OUTPUT
exit 0
fi
# branch name with timestamp
BRANCH="update-georelays-$(date -u +%Y%m%dT%H%M%SZ)"
git checkout -b "$BRANCH"
git add relays/online_relays_gps.csv git add relays/online_relays_gps.csv
git commit -m "Automated update of relay data - $(date -u --rfc-3339=seconds)" git commit -m "Automated update of relay data - $(date -u)"
echo "changed=true" >> $GITHUB_OUTPUT git push
echo "branch=$BRANCH" >> $GITHUB_OUTPUT env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Push branch
if: steps.create_branch.outputs.changed == 'true'
run: |
git push --set-upstream origin "${{ steps.create_branch.outputs.branch }}"
- name: Create pull request
if: steps.create_branch.outputs.changed == 'true'
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Automated update of relay data
branch: ${{ steps.create_branch.outputs.branch }}
base: main
title: Automated update of relay data
body: |
This PR was created automatically by the scheduled workflow. It updates relays/online_relays_gps.csv from the GeoRelays source.
labels: automated, georelays
- name: No changes
if: steps.create_branch.outputs.changed != 'true'
run: echo "No changes to relays/online_relays_gps.csv"
-27
View File
@@ -1,27 +0,0 @@
name: Build & Test
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
name: Run Swift Tests
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Set up Swift
uses: swift-actions/setup-swift@v2
- name: Build the package
run: swift build
- name: Run Tests
run: swift test --parallel
+4 -8
View File
@@ -9,6 +9,9 @@ plans/
CLAUDE.md CLAUDE.md
AGENTS.md AGENTS.md
## User settings
xcuserdata/
## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
*.xcscmblueprint *.xcscmblueprint
*.xccheckout *.xccheckout
@@ -54,8 +57,7 @@ iOSInjectionProject/
## Xcode project ## Xcode project
*.xcodeproj/project.xcworkspace/ *.xcodeproj/project.xcworkspace/
## Xcode User settings *.xcodeproj/xcshareddata/
xcuserdata/
## Python ## Python
__pycache__/ __pycache__/
@@ -66,9 +68,6 @@ __pycache__/
*.tmp *.tmp
*.temp *.temp
## Cache
.cache/
# Local build results # Local build results
.Result*/ .Result*/
.Result*.xcresult/ .Result*.xcresult/
@@ -76,6 +75,3 @@ TestResult.xcresult/
*.xcresult/ *.xcresult/
build.log build.log
*.log *.log
# Local configs
Local.xcconfig
-4
View File
@@ -1,4 +0,0 @@
#include "Release.xcconfig"
// Optional include of local configs
#include? "Local.xcconfig"
-5
View File
@@ -1,5 +0,0 @@
// Your Apple Developer Team ID - https://stackoverflow.com/a/18727947
DEVELOPMENT_TEAM = ABC123
// Unique bundle id to be able to register and run locally
PRODUCT_BUNDLE_IDENTIFIER = chat.bitchat.$(DEVELOPMENT_TEAM)
-11
View File
@@ -1,11 +0,0 @@
MARKETING_VERSION = 1.5.0
CURRENT_PROJECT_VERSION = 1
IPHONEOS_DEPLOYMENT_TARGET = 16.0
MACOSX_DEPLOYMENT_TARGET = 13.0
SWIFT_VERSION = 5.0
DEVELOPMENT_TEAM = L3N5LHJD5Y
CODE_SIGN_STYLE = Automatic
PRODUCT_BUNDLE_IDENTIFIER = chat.bitchat
@@ -4,36 +4,6 @@
<dict> <dict>
<key>AvailableLibraries</key> <key>AvailableLibraries</key>
<array> <array>
<dict>
<key>BinaryPath</key>
<string>tor-nolzma.framework/tor-nolzma</string>
<key>LibraryIdentifier</key>
<string>macos-arm64</string>
<key>LibraryPath</key>
<string>tor-nolzma.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>macos</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>tor-nolzma.framework/tor-nolzma</string>
<key>LibraryIdentifier</key>
<string>ios-arm64-simulator</string>
<key>LibraryPath</key>
<string>tor-nolzma.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict> <dict>
<key>BinaryPath</key> <key>BinaryPath</key>
<string>tor-nolzma.framework/tor-nolzma</string> <string>tor-nolzma.framework/tor-nolzma</string>
@@ -48,6 +18,20 @@
<key>SupportedPlatform</key> <key>SupportedPlatform</key>
<string>ios</string> <string>ios</string>
</dict> </dict>
<dict>
<key>BinaryPath</key>
<string>tor-nolzma.framework/tor-nolzma</string>
<key>LibraryIdentifier</key>
<string>macos-arm64</string>
<key>LibraryPath</key>
<string>tor-nolzma.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>macos</string>
</dict>
</array> </array>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>XFWK</string> <string>XFWK</string>

Some files were not shown because too many files have changed in this diff Show More