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 546bddd4..3674ecfe 100644 Binary files a/pnpm-lock.yaml and b/pnpm-lock.yaml differ