<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-08-22T10:16:38Z</updated>
  <generator>https://njump.me</generator>

  <title>Nostr notes by postr</title>
  <author>
    <name>postr</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://njump.me/npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl.rss" />
  <link href="https://njump.me/npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl" />
  <id>https://njump.me/npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl</id>
  <icon>https://npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl.blossom.band/135326328aad40a9466faf084048e10e6b22c21ccaa4c824cc041bd55d010d33.png</icon>
  <logo>https://npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl.blossom.band/135326328aad40a9466faf084048e10e6b22c21ccaa4c824cc041bd55d010d33.png</logo>




  <entry>
    <id>https://njump.me/nevent1qqsqvkcmc49jnw566hyavx2rf40p62sj5yeemwrs8ws296qcszummhqzyqp6ek3cf90qcrnjawmppu6vh9hm9j6rlnsy98cphdk7x53myhj0zvlk9fw</id>
    
      <title type="html">Postr 1.1.1 lets you speak a note without leaving the composer: ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsqvkcmc49jnw566hyavx2rf40p62sj5yeemwrs8ws296qcszummhqzyqp6ek3cf90qcrnjawmppu6vh9hm9j6rlnsy98cphdk7x53myhj0zvlk9fw" />
    <content type="html">
      Postr 1.1.1 lets you speak a note without leaving the composer: tap the microphone, then choose Cancel, Paste, or Post from the same bottom action area. Mention search follows the caret through the middle of a draft, and a selected profile gains distinct styling so you can see which `@name` will become a real Nostr reference before Amber signs anything.&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qq9hqmmnw3ez6vfwxyhrzqgdwaehxw309ahx7uewd3hkcqgjwaehxw309ahkvenrdpskjm3wwp6kyqgkwaehxw309aex2mrp0yh8qunfd4skctnwv46qygqr4ndrsj27ps8896akzre5ewt0kt958l8qg20srwmdudfrkf0y7ypsgqqqw4rsu53p9m&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qq…3p9m&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; &lt;p&gt;Postr began with a severe interface rule: writing and publishing a note should feel like one action. Version 1.1.1 extends that rule to speech. Tap the microphone in the top bar and the composer remains in place while Postr listens. The main button area becomes three choices: Cancel, Paste, and Post.&lt;/p&gt;

&lt;p&gt;Those choices remove the old procession of screens. Paste puts the transcript into the draft at the position captured when dictation began. Post combines that transcript with the same captured draft and waits for an explicit tap before signing anything. Cancel stops the session without changing the note. The transcript stays visible inside Postr during review, beside the controls that decide its fate.&lt;/p&gt;

&lt;p&gt;Android speech providers do not all expose the same interface. When the installed provider offers a compatible recognition service, Postr opens an app-owned microphone session and sends the audio through that service without handing the interface to a provider activity. Postr checks the selected service, installed package version, permission, and capture route again at startup. If Android exposes only an activity, Postr can still use that provider fallback instead of pretending an in-app session exists.&lt;/p&gt;

&lt;p&gt;Mentions received the same treatment. Search follows the caret, including an &lt;code&gt;@name&lt;/code&gt; in the middle of existing text, and inserting &lt;code&gt;@&lt;/code&gt; immediately before a written username starts the lookup. Choosing a profile turns the visible name into a structured mention whose color, background, and weight differ from ordinary text. An unselected &lt;code&gt;@name&lt;/code&gt; remains plain text, so the composer shows which names will become Nostr references before Amber signs the note.&lt;/p&gt;

&lt;p&gt;Postr still asks Amber for the same narrow signing capabilities, and dictation never turns speech into a signature by itself. Version 1.1.1 is available through Zapstore for anyone who wants fewer screens between a thought and a verified post.&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-09-14T05:41:56Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsfh9mmms5u6erax3cmjsy4yryjahm53fwnh29qsjfl9jeeqgv07mgzyqp6ek3cf90qcrnjawmppu6vh9hm9j6rlnsy98cphdk7x53myhj0z90ykwk</id>
    
      <title type="html">Oh, I&amp;#39;ll investigate</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfh9mmms5u6erax3cmjsy4yryjahm53fwnh29qsjfl9jeeqgv07mgzyqp6ek3cf90qcrnjawmppu6vh9hm9j6rlnsy98cphdk7x53myhj0z90ykwk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxa6u6q7k9yxz9sk2r84jdwe7sv3ne4zh9jf42squjew08wce54fgpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc9ndkcu&#39;&gt;nevent1q…dkcu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Oh, I&amp;#39;ll investigate
    </content>
    <updated>2026-08-23T09:06:02Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsyn5qjeg48pv9e05lwzmp6wn6u4ac34gtezpag4wr609kpfzdp36qzyqp6ek3cf90qcrnjawmppu6vh9hm9j6rlnsy98cphdk7x53myhj0zzarlan</id>
    
      <title type="html">Introducing Postr, a deliberately small Nostr composer for ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsyn5qjeg48pv9e05lwzmp6wn6u4ac34gtezpag4wr609kpfzdp36qzyqp6ek3cf90qcrnjawmppu6vh9hm9j6rlnsy98cphdk7x53myhj0zzarlan" />
    <content type="html">
      Introducing Postr, a deliberately small Nostr composer for Android.&lt;br/&gt;&lt;br/&gt;Post. That&amp;#39;s all.&lt;br/&gt;&lt;br/&gt;A durable outbox survives airplane mode, process death, and unreliable relays. Once Amber signs a note, Postr keeps working until it can verify that exact event on your relays.&lt;br/&gt;&lt;br/&gt;Private keys stay in Amber. Postr requests only two signing capabilities: kind-1 notes and file-scoped Blossom upload authorizations. It cannot read DMs, sign unrelated event kinds, or publish a relay list.&lt;br/&gt;&lt;br/&gt;Postr also includes verified Blossom attachments, mention search, opt-in link previews, and a zero-blue night theme you can retint end to end.&lt;br/&gt;&lt;br/&gt;Install: &lt;a href=&#34;https://zapstore.dev&#34;&gt;https://zapstore.dev&lt;/a&gt;&lt;br/&gt;Code, issues, and contributions: &lt;a href=&#34;https://gitworkshop.dev/npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl/postr&#34;&gt;https://gitworkshop.dev/npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl/postr&lt;/a&gt;&lt;br/&gt;Inside the architecture:&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzqqavmguyjhsvpeewhdss7dxtjmajedpleczznuqmkm0r2gajte83qyxhwumn8ghj7mn0wvhxcmmvqyf8wumn8ghj7mmxve3ksctfdch8qatzqqf8qmmnw3ez6ctjvd5xjar9vd682un9y3wcn8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…wcn8&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; 
&lt;h1 id=&#34;post-that-s-all-inside-postr-2&#34;&gt;Post. That&amp;#39;s all: inside Postr&lt;/h1&gt;

&lt;p&gt;Postr is a one-screen Android app with one job: compose a kind-1 note and send it to your relays. Feeds, DMs, zaps, and wallets already have excellent homes in other clients. Cutting scope this hard made room to build the remaining path with unusual care.&lt;/p&gt;

&lt;p&gt;Download on &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs83nn04fezvsu89p8xg7axjwye2u67errat3dx2um725fs7qnrqlgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9mhwden5te0wfjkccte9ec8y6tdv9kzumn9wshszrnhwden5te0dehhxtnvdakz7adgsu4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Zapstore&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…gsu4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;
&lt;a href=&#34;https://zapstore.dev/apps/naddr1qqykzurs9ecx7um5wgq3samnwvaz7tmjv4kxz7fw0fshqum5daex2tnyv4mqygqr4ndrsj27ps8896akzre5ewt0kt958l8qg20srwmdudfrkf0y7ypsgqqq0c9sv59fsw&#34;&gt;https://zapstore.dev/apps/naddr1qqykzurs9ecx7um5wgq3samnwvaz7tmjv4kxz7fw0fshqum5daex2tnyv4mqygqr4ndrsj27ps8896akzre5ewt0kt958l8qg20srwmdudfrkf0y7ypsgqqq0c9sv59fsw&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&#34;keys-stay-in-amber-2&#34;&gt;Keys stay in Amber&lt;/h2&gt;

&lt;p&gt;Postr stores no private key and has no field that accepts one. Signing is delegated to Amber through its Android intent interface. Login requests only two signing capabilities: kind-1 text notes and kind-24242 Blossom upload authorizations. A build guard fails if that list grows. An account in Postr is only a public key and the package name of the signer that returned it.&lt;/p&gt;

&lt;h2 id=&#34;from-tap-to-relay-2&#34;&gt;From tap to relay&lt;/h2&gt;

&lt;p&gt;A relay&amp;#39;s acknowledgement is not enough. Postr counts a note as published on a relay only after the relay returns the identical event and its signature verifies on the device.&lt;/p&gt;

&lt;p&gt;The composer builds the event, including NIP-27 mention references and NIP-92 &lt;code&gt;imeta&lt;/code&gt; tags for attachments. Amber signs it. Before any socket opens, Postr commits the signed event and its immutable relay targets to a durable outbox. A background worker publishes to every target concurrently and asks each relay for the event. Every attempt ends as verified, rejected, or unverified with a bounded reason. The result sheet shows the verified count, per-relay outcomes, and a link to the exact &lt;code&gt;nevent&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ambiguous outcomes retry with bounded backoff. A resend cannot create a duplicate because the event id never changes. If every relay explicitly rejects the event, the draft remains intact. Process recreation is covered at each stage: stale signer results are ignored, queued work resumes, and a successful result clears only the exact draft revision that produced it.&lt;/p&gt;

&lt;h2 id=&#34;nip-65-read-only-2&#34;&gt;NIP-65, read only&lt;/h2&gt;

&lt;p&gt;Postr publishes to the author&amp;#39;s advertised NIP-65 write relays plus a small bootstrap set, or to a custom per-account list. It never signs or publishes a kind-10002 relay list. Publishing accepts only encrypted &lt;code&gt;wss://&lt;/code&gt; relay URLs. Profile and relay-list discovery use bounded subscriptions, and incoming events must pass Quartz signature verification before entering a cache.&lt;/p&gt;

&lt;p&gt;After public relay verification, Postr can make one best-effort mirror attempt to a Citrine relay on device loopback. That single cleartext exception cannot delay or change the visible result.&lt;/p&gt;

&lt;h2 id=&#34;bounded-input-and-output-2&#34;&gt;Bounded input and output&lt;/h2&gt;

&lt;p&gt;An upload is spooled once into a private cache and capped at 25 MiB even when a document provider reports no size. Amber signs a short-lived authorization tied to the file hash. Postr accepts the response only when it uses HTTPS and names the blob with its verified SHA-256. The resulting metadata becomes the note&amp;#39;s NIP-92 tags.&lt;/p&gt;

&lt;p&gt;Typing &lt;code&gt;@&lt;/code&gt; plus two characters starts bounded NIP-50 profile searches in parallel. One responsive relay is enough. Selecting a result keeps a visible name token in the editor while event construction turns it into a &lt;code&gt;nostr:npub&lt;/code&gt; reference and one deduplicated &lt;code&gt;p&lt;/code&gt; tag.&lt;/p&gt;

&lt;p&gt;Link previews load only after an explicit tap. Fetches constrain DNS results, redirects, response size, content type, and private or reserved address ranges. Incoming shares accept plain text or validated &lt;code&gt;nostr:&lt;/code&gt; references, and shared content can never publish without a deliberate action in the composer.&lt;/p&gt;

&lt;h2 id=&#34;zero-blue-at-night-2&#34;&gt;Zero blue at night&lt;/h2&gt;

&lt;p&gt;The default theme keeps the blue channel of app-controlled pixels at zero. The Material colour scheme derives from three chosen colours through per-channel blending, so blue-free inputs yield a blue-free scheme. A colour-matrix filter applies the same rule to remote images and animated media. Choosing a theme that contains blue disables the filter.&lt;/p&gt;

&lt;h2 id=&#34;the-trade-2&#34;&gt;The trade&lt;/h2&gt;

&lt;p&gt;Postr will not show a feed, read DMs, or import a key. In exchange, it opens quickly, requests narrowly scoped authority, publishes a note durably, and gets out of the way.&lt;/p&gt;

&lt;p&gt;At publication, the owner will sign the NIP-34 repository announcement, release event, profile, announcement, and this article with the same verified Nostr identity. The source remains ordinary Git, licensed under MIT, and the release can be installed through Zapstore.&lt;/p&gt;
 &lt;/blockquote&gt;&lt;br/&gt;#postr #nostr #android #foss #grownostr&lt;br/&gt;
    </content>
    <updated>2026-08-22T10:18:23Z</updated>
  </entry>

</feed>