From c35a3c2ff0649151d9a7fd706e3bcd30754f9afb Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 15 Sep 2026 14:08:39 -0700 Subject: [PATCH] Bump version --- CHANGELOG.md | 23 +++++++++++++++ android/app/build.gradle | 4 +-- docs/feature_matrix.html | 41 ++++++++------------------ ios/App/App.xcodeproj/project.pbxproj | 16 +++++----- package.json | 26 ++++++++-------- pnpm-lock.yaml | Bin 399969 -> 399969 bytes 6 files changed, 60 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 609cce95..4b02143e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +# 1.10.0 + +* Replace the home page with a dashboard of unread conversations, space activity and a network feed +* Redesign the calendar with month, week and agenda views, and add RSVPs +* Redesign classifieds as a browsable marketplace +* Rework threads as one continuous list with unread indicators on every board +* Add slash commands +* Add read out loud and voice dictation +* Add a desktop app with Linux, Windows and macOS packaging +* Add relay data import and export to the hosting panel +* Add a mute setting for rooms +* Show NIP-38 statuses and a pinned note on profiles +* Rework search dialogs +* Improve link previews, falling back to an inline link when one fails +* Persist direct messages so history survives relay retention +* Add an image by upload or url from one dialog, and play audio attachments inline +* Let space icons be dragged to reorder in the sidebar +* Open the space menu in a drawer instead of navigating away from the room +* Fix push notification delivery, taps and badge counts +* Update welshman library to 0.10.9 +* Performance improvements to feeds, room chat and reactions +* Add an end-to-end test suite covering the user story catalog + # 1.9.1 * Re-work how claims work under the hood diff --git a/android/app/build.gradle b/android/app/build.gradle index f8eadebb..593d1662 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "social.flotilla" minSdk rootProject.ext.minSdkVersion targetSdk rootProject.ext.targetSdkVersion - versionCode 51 - versionName "1.9.1" + versionCode 52 + versionName "1.11.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/docs/feature_matrix.html b/docs/feature_matrix.html index 579437c8..5e93aa35 100644 --- a/docs/feature_matrix.html +++ b/docs/feature_matrix.html @@ -255,13 +255,13 @@ the story catalog in e2e/USER_STORIES.md.

Monthly calendar view -Not implemented -The calendar renders a chronological agenda, centered on today or the next event +Implemented +CalendarMonth.svelte, CalendarWeek.svelte, CalendarAgenda.svelte; month, week and agenda views, remembered per user -RSVP / ticketing -Not implemented -No attendance or ticket kinds +RSVPs +Implemented +CalendarRsvp.svelte, app/calendar.ts; NIP-52 going, maybe and can't go. No ticketing or paid attendance Event detail with location and host @@ -324,11 +324,6 @@ the story catalog in e2e/USER_STORIES.md.

SpaceMemberMenu.svelte, SpaceMembersBanned.svelte; NIP-86 banpubkey / unbanpubkey. US-095 -Allow list -Not implemented -Only banning is wired up; no allowpubkey path - - Member management Implemented /spaces/[relay]/directory, SpaceMembersAdd.svelte, RoomMembersAdd.svelte. US-022, US-095 @@ -345,13 +340,8 @@ the story catalog in e2e/USER_STORIES.md.

Granular RBAC / role permissions -Partial -Roles are assignable labels; effective permissions remain relay-level (member/admin), not per-role grants - - -Tier entitlements -Partial -Hosting plans gate Blossom and LiveKit toggles in app/hosting.ts; not a general entitlement system. US-099, US-100 +Implemented +Roles are assigned in /spaces/[relay]/directory; a relay extension enforces the per-role permissions Reports and content moderation @@ -480,8 +470,8 @@ the story catalog in e2e/USER_STORIES.md.

Branded desktop app -Partial -electron/, scripts/build-desktop.sh; dev baseline only, no installers, release pipeline or auto-update +Implemented +electron/, scripts/package-desktop.mjs; pnpm run package:desktop:linux / :windows / :macos PWA / installable web app @@ -559,14 +549,9 @@ the story catalog in e2e/USER_STORIES.md.

-SAML / OIDC / SCIM / Workspace SSO -Not implemented -No enterprise identity provider integration - - Email / OTP sign-in -Partial -LogInEmail.svelte, LogInOTP.svelte, app/pomade.ts; custodial Pomade flow, enabled only when VITE_POMADE_SIGNERS is set. Out of e2e scope +Implemented +LogInEmail.svelte, LogInOTP.svelte, app/pomade.ts; custodial Pomade flow, enabled when VITE_POMADE_SIGNERS is set. Out of e2e scope Browser extension sign-in @@ -595,8 +580,8 @@ the story catalog in e2e/USER_STORIES.md.

Data export -Not implemented -No user-data export; the privacy page only sends diagnostic logs to the developer +Implemented +hosting/DataTransferModal.svelte, app/hosting.ts; a space's events download as JSONL and re-import into another relay Account deletion diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index a68a7926..d0660713 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -350,7 +350,7 @@ CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = NO; @@ -362,7 +362,7 @@ "@executable_path/../../Frameworks", ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.9.1; + MARKETING_VERSION = 1.11.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = social.flotilla.ShareExtension; @@ -387,7 +387,7 @@ CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = NO; @@ -399,7 +399,7 @@ "@executable_path/../../Frameworks", ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.9.1; + MARKETING_VERSION = 1.11.0; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = social.flotilla.ShareExtension; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -541,7 +541,7 @@ CODE_SIGN_ENTITLEMENTS = "Flotilla Chat.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; INFOPLIST_FILE = App/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Flotilla Chat"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; @@ -550,7 +550,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.9.1; + MARKETING_VERSION = 1.11.0; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = social.flotilla; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -570,7 +570,7 @@ CODE_SIGN_ENTITLEMENTS = "Flotilla Chat.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 42; + CURRENT_PROJECT_VERSION = 43; INFOPLIST_FILE = App/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Flotilla Chat"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; @@ -579,7 +579,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.9.1; + MARKETING_VERSION = 1.11.0; PRODUCT_BUNDLE_IDENTIFIER = social.flotilla; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/package.json b/package.json index 1766b6ec..40eb22d5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,9 @@ { "name": "flotilla", - "version": "1.9.1", - "author": {"name": "Jon Staab"}, + "version": "1.11.0", + "author": { + "name": "Jon Staab" + }, "private": true, "scripts": { "dev": "vite dev", @@ -88,16 +90,16 @@ "@types/throttle-debounce": "^5.0.2", "@vite-pwa/assets-generator": "^1.0.2", "@vite-pwa/sveltekit": "^1.1.0", - "@welshman/app": "^0.10.8", - "@welshman/content": "^0.10.8", - "@welshman/domain": "^0.10.8", - "@welshman/editor": "^0.10.8", - "@welshman/feeds": "^0.10.8", - "@welshman/lib": "^0.10.8", - "@welshman/net": "^0.10.8", - "@welshman/signer": "^0.10.8", - "@welshman/store": "^0.10.8", - "@welshman/util": "^0.10.8", + "@welshman/app": "^0.10.9", + "@welshman/content": "^0.10.9", + "@welshman/domain": "^0.10.9", + "@welshman/editor": "^0.10.9", + "@welshman/feeds": "^0.10.9", + "@welshman/lib": "^0.10.9", + "@welshman/net": "^0.10.9", + "@welshman/signer": "^0.10.9", + "@welshman/store": "^0.10.9", + "@welshman/util": "^0.10.9", "cheerio": "^1.2.0", "compressorjs-next": "^1.1.2", "dompurify": "^3.4.13", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 546bddd4b6bed15269ba4e8dce8dc0b4eb6e7f4e..3674ecfe3886b6d2b9f15454659f045290b69c90 100644 GIT binary patch delta 3664 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