Oddbean new post about | logout
 #Amethyst v0.81.3: Shopstr and NIP-88 support

https://image.nostr.build/914bcdceca1ea2b9f6ac205e687ff7860242008d24fa83cfca52b0b8c2e90081.png

This version improves the rendering of Classifieds and adds an option to DM the seller directly in the post. It adds support for nostr.wine's NOTIFY spec (NIP-88) that allows relays to display messages when subscriptions are expired or another payment is requested. We also migrated our block list to the `kind:10000` as requested by this [PR](https://github.com/nostr-protocol/nips/pull/880). We also completely restructured the way events are signed to better support Amber's async calls and slighly improved our performace and data usage in many parts of the app. 

Enjoy!

- Massive refactoring to unify our internal signer with Amber's signer in all supported events
- Adds [NIP-88](https://github.com/nostr-protocol/nips/pull/901) NOTIFY request support
- Migrates our Block list to `kind:10000`
- Fixes the breaking of @s when other words are combined with the nostr address
- Adds default encryption and decryption permissions to the Amber login call to avoid multiple Amber screens open at once by @greenart7c3
- Adds support for sending/receiving/approving multiple events at once by @greenart7c3
- Adds a chat with seller flow to ShopStr's event rendering.
- Reduces the amount of downloads to build the Notification chart of the week
- Immediatly force-closes the WebSocket when leaving the app
- Narrows the re-downloads of event reactions down
- Fixes the blue notification dot appearing when the user receives a notification from a blocked account before downloading the blocklist
- Fixes URL Preview card when websites use a blended version of multiple open graph specs
- Adds a geohash mipmap to event tags
- Reduces multiple reconnections to relays when the app cold starts. 
- Adds back arrow button to the top of the Nav bar of the Thread view.
- Fixes race conditions when opening videos at the same time
- Fixes spacing when drawing POW and Geolocation at the same time
- Runs the translation as the UI Scope instead of ViewModel's
- Migrates the event's tag list from List to Array to save some bytes. 
- Increases connection timeouts when on mobile data.
- Improves the EOSE logic when creating filters by grouping filter requests with similar `since`clauses
- Fixes video release coroutine being killed by Android, leaving the Video playing in the background
- Adds a cache of the total amount of Zaps per note
- Allows sat amounts up to 4 digits without abbreviation @vicariousdrama
- Improves the rendering of LN Invoice Previews.
- Fixes error message when parsing LnInvoice
- Updates several dependencies

Updated translations for: 
- Czech, German, Swedish and Portuguese, Brazilian by @⚡ Dee Kay ⚡🇸🇪🇬🇧🇨🇿🇧🇷...
- Spanish, Mexico and Spanish, United States by @⚡₿it₿y₿it⚡
- Hungarian by @Zoltan
- Chinese Simplified by https://crowdin.com/profile/stella2023
- Persian by @L

Download:
- [Play Edition](https://github.com/vitorpamplona/amethyst/releases/download/v0.81.3/amethyst-googleplay-universal-v0.81.3.apk )
- [FOSS Edition - No translations](https://github.com/vitorpamplona/amethyst/releases/download/v0.81.3/amethyst-fdroid-universal-v0.81.3.apk ) 
 😎👍 
 How do you search for/browse classifieds? Only shopstr.store ? 
 For now, yeah.  
 Sorry, new. How specifically do I see the sale listings in the app? 
 Is that FOSS edition with no translations literally with no translations or have the option to select if you want to translate or not? 
 No translations yet. We haven't found an open source language model to run on the device yet. 

Using third-party services at each translation is a privacy nightmare.  
 Exactly, translations should run locally on principle. 
 So the other version that does have tradition uses third-party services like the app has been doing until now? I ask because I don't know if you remember, but I have told you on several occasions that the translation in my case generates a huge cost of mobile data. 
 We now have Shopstr integration aka Facebook Marketplace 🔥
nostr:nevent1qqs288wua9xu8m6skslag4u845020jyrkdq26p0grjxx7v98g2r6q7gppemhxue69uhkummn9ekx7mp0qgsyvrp9u6p0mfur9dfdru3d853tx9mdjuhkphxuxgfwmryja7zsvhqrqsqqqqqp3zu95n 
 New Amethyst update. 🟣
nostr:nevent1qqs288wua9xu8m6skslag4u845020jyrkdq26p0grjxx7v98g2r6q7gpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtczyprqcf0xst760qet2tglytfay2e3wmvh9asdehpjztkceyh0s5r9cqcyqqqqqqgxy0yg5 
 That is pretty cool. And damn, I was thinking about buying that phone. 
 
#Amethyst v0.81.3 
:
 دعم Shopstr وNIP-88
تحديث جديد لـ Amethyst إصدار 0.81.3 
 

 يعمل هذا الإصدار على تحسين عرض الإعلانات المبوبة ويضيف خيارًا لمراسلة البائع مباشرة في المنشور

و إضافة هذه التحدث بعض المزايا الجديدة مثل :

 يضيف دعمًا لمواصفات NOTIFY الخاصة بـ nostr.wine (NIP-88) التي تسمح للمرحلات بعرض الرسائل عند انتهاء صلاحية الاشتراكات أو طلب دفعة أخرى.

 

 إعادة هيكلة الطريقة التي يتم بها توقيع الأحداث لدعم مكالمات Amber غير المتزامنة بشكل أفضل وتحسين أدائنا واستخدامنا للبيانات بشكل طفيف في أجزاء كثيرة من التطبيق.



 - إعادة هيكلة ضخمة لتوحيد الموقع الداخلي لدينا مع موقع Amber في جميع الأحداث المدعومة
 - ترحيل قائمة الحظر الخاصة بنا إلى النوع: 10000
 - إصلاح كسر @s عندما يتم دمج الكلمات الأخرى مع عنوان nostr
 - يضيف أذونات التشفير وفك التشفير الافتراضية إلى مكالمة تسجيل الدخول Amber لتجنب فتح شاشات Amber المتعددة مرة واحدة 

 - إضافة دعم لإرسال/استقبال/الموافقة على أحداث متعددة مرة واحدة 
 - يضيف دردشة مع تدفق البائع إلى عرض حدث ShopStr.
 - يقلل من كمية التنزيلات لإنشاء مخطط الإشعارات لهذا الأسبوع
 - إغلاق WebSocket بالقوة على الفور عند مغادرة التطبيق
 - يضيق نطاق إعادة تنزيل تفاعلات الأحداث
 - إصلاح نقطة الإشعار الزرقاء التي تظهر عندما يتلقى المستخدم إشعارًا من حساب محظور قبل تنزيل قائمة الحظر
 - إصلاح بطاقة معاينة عنوان URL عندما تستخدم مواقع الويب إصدارًا مختلطًا من مواصفات الرسم البياني المفتوحة المتعددة
 - يضيف خريطة Geohash Mipmap إلى علامات الأحداث
 - يقلل من عمليات إعادة الاتصال المتعددة للمرحلات عند بدء تشغيل التطبيق على البارد.
 - يضيف زر السهم للخلف إلى أعلى شريط التنقل في عرض الموضوع.
 - إصلاح ظروف السباق عند فتح الفيديوهات في نفس الوقت
 - إصلاح التباعد عند رسم أسير الحرب وتحديد الموقع الجغرافي في نفس الوقت
 - تشغيل الترجمة كنطاق واجهة المستخدم بدلاً من ViewModel
 - ترحيل قائمة علامات الحدث من القائمة إلى المصفوفة لحفظ بعض وحدات البايت.
 - يزيد مهلة الاتصال عندما تكون على بيانات الهاتف المحمول.
 - يعمل على تحسين منطق EOSE عند إنشاء عوامل التصفية عن طريق تجميع طلبات التصفية مع بنود "منذ" مماثلة
 - إصلاح مشكلة توقف إصدار الفيديو بواسطة Android، مع ترك الفيديو قيد التشغيل في الخلفية
 - يضيف ذاكرة تخزين مؤقت لإجمالي مبلغ Zaps لكل ملاحظة
 - يسمح بمبالغ تصل إلى 4 أرقام بدون اختصار @vicariousdrama
 - تحسين عرض معاينة فاتورة LN.
 - إصلاح رسالة الخطأ عند تحليل LnInvoice
 - تحديثات العديد من التبعيات

 ترجمات محدثة لـ:
 - التشيكية والألمانية والسويدية والبرتغالية والبرازيلية بواسطة
 - الإسبانية والمكسيك والإسبانية والولايات المتحدة بواسطة 
 - المجرية بواسطة 
 - الصينية المبسطة بواسطة https://crowdin.com/profile/stella2023
 - الفارسية بواسطة 

و صدر هذا التحدث في بعض المتاجر
#nostr
#amethyst 
 
nostr:nevent1qqs288wua9xu8m6skslag4u845020jyrkdq26p0grjxx7v98g2r6q7gpz4mhxue69uhkummnw3ezummcw3ezuer9wchsygzxpsj7dqha57pjk5k37gkn6g4nzakewtmqmnwryyhd3jfwlpgxtspsgqqqqqqswgsfgg 
 @Vitor Pamplona always shipping new features like a boss! 😎👌
nostr:nevent1qqs288wua9xu8m6skslag4u845020jyrkdq26p0grjxx7v98g2r6q7gpp4mhxue69uhkummn9ekx7mqzyprqcf0xst760qet2tglytfay2e3wmvh9asdehpjztkceyh0s5r9cqcyqqqqqqgy3lhqw 
 I saw what you did there. Guess you're Frosty now. ☃️ 
 You've added a ton of awesome features lately. I admire your work. 
 Dude, I've tried downloading the FOSS version but it doesn't allow me to do it. At a certain point it tells me that it requires authorization. 
 Sorry, authorization to do what?  
 Nothing. I just made it but not with that link that you shared  
 When I press show more to read tge rest, it goes to comments, the comment about authorization.
Thanks for mentioning me and congratulations.
 
 Show more botton jumps to another part of the screen. Enen in notifs. 
 nostr:nevent1qqs288wua9xu8m6skslag4u845020jyrkdq26p0grjxx7v98g2r6q7gpz4mhxue69uhhyetvv9ujumt0wd68ytnsw43qygzxpsj7dqha57pjk5k37gkn6g4nzakewtmqmnwryyhd3jfwlpgxtspsgqqqqqqsdtx4hx 
 Is it possible to pay for @shopstr items inside Amethyst? 
 It's just like FB marketplace, you have to msg the seller to make the payment. But it could be a zap, a lightning invoice or a cashu token in the DM :)  
 Ah, makes sense in that way. How about the ability to set the quantity of an item and automatically delete it after sale? I don't mind doing it manually but seems like it can only be done in Shopstr right now.  
 Currently there’s no agreed upon spec for quantity, but it wouldn’t be difficult to add (most simply: [“quantity”, “<number”]). Same with automatic deletion, and it could be done either after a certain time frame or immediately upon receipt of payment. 
 Sounds good! Manual deletion is probably fine on second thought when thinking from a FB marketplace/ Craigslist standpoint. 

Deletion worked as expected in Shopstr. But the deleted listing still appears in Amethyst. Do you know why that is?  
 Deletions are handled more like requests rather than hard deletes. There’s no way to guarantee that the deletion request goes through for a particular relay, so depending on your relay list it can still show up in other clients. 
 That's interesting. Thought the Mutiny Blastr relay would make sure that everyone is aware of the request but guess not.  
 It might make them aware of the request, but a relay doesn’t have to support it. 
 We want the ability to mute people.
Trust me some people want to shut me up. 
 That's already there. The block function does that.  
 True but..
Some of us don't want to block people.
I'd rather mute and ignore. 
 What's the difference between the words block and mute for you? 
 Because they can see me but I can ignore them.
Subtle but important difference for adult workers.
I know you don't like adult workers. 
 I don't know why you keep saying I don't like adult workers. I never did anything against you... Just because things don't match what you want doesn't mean people don't like you. 

And that is a block in Amethyst. People can see you when you block then. You won't see them. 
 I'll find your old post and get back to you. 
 Use block. People still saw your post but you won't saw their post & replies in your side.

> I know you don't like adult workers.

Bullshit. 
 Hum.. what's happening over there? I seem to be able to switch without any issue. 🤔 
 Interesting. I saw it happen once in the emulator and thought it was an emulator issue. Are you using over Tor? WIFI or mobile data? I think it's a timeout issue somewhere. 

When there is only one element, the pull to refresh only works if you slide on top of that note :(  
 Still debugging this. It seems to be a network latency issue. It happens a lot when I set my emulator to 3G only. It never loads some events. 🤔