Skip to content

v1.2.30

Choose a tag to compare

@martyinspace martyinspace released this 21 Oct 10:32
05faa3c

📦 How to Install / Upgrade

BeanPool is distributed as a Docker container. You can pull the latest version directly from the GitHub Container Registry.

Using Docker Compose:

services:
  beanpool:
    image: ghcr.io/beanpool-org/beanpool-node:1.2.30
    restart: unless-stopped
    ports:
      - "80:8080"
      - "443:8443"
      # Uncomment only to let linked nodes dial this node:
      # - "4001:4001"
      # - "4002:4002"
    volumes:
      - ./data:/data

Using Docker CLI:

docker pull ghcr.io/beanpool-org/beanpool-node:latest

What's Changed

  • Refuse outside photo URLs at route level (own only) (#2082) by @martyinspace in #2091
  • Private preview: a key may ask whether it is a member (S1) by @martyinspace in #2093
  • feat(server): photo upload daily budget and free disk floor (P7) by @martyinspace in #2092
  • Publish the guide: operator manual v131 → v132 by @martyinspace in #2094
  • Global entry W2: the web app reads a preview or closed account as 'not a member', not 'offline' by @martyinspace in #2097
  • Install: warn when the phone can't reach the claim address; silent compose; set up with an AI assistant by @martyinspace in #2095
  • Publish the guide: operator manual v132 → v133 by @martyinspace in #2103
  • Phone: the Market says a private preview's or a closed account's refusal (P3) by @martyinspace in #2096
  • Global entry P1: the not-recognised screen knows open doors; a failed Reconnect changes nothing (Damo's case) by @martyinspace in #2098
  • Publish the guide: members' guide v138 → v139 by @martyinspace in #2104
  • W1: the app first on a phone's browser at global, one account on the phone, Global community in Settings by @martyinspace in #2102
  • Publish the guide: members' guide v139 → v140, operator manual v133 → v134 by @martyinspace in #2107
  • Global entry follow-ups: the sync sentence stays on screen; Force Resync says a refusal; a bare public IP is https (tier B, address parsing) by @martyinspace in #2106
  • Claim screen: an example code box with a hint; Scan the code before the address; Set up a new community server by @martyinspace in #2100
  • Publish the guide: members' guide v140 → v141, operator manual v134 → v135 by @martyinspace in #2108
  • registrar /admin: tables fit their cards; released names collapsed; Remove from the list by @martyinspace in #2099
  • Website: beanpool.org/global, the app-first link to the global community (Web1) by @martyinspace in #2101
  • Phone: a bare public IP gets https:// in Settings, People's invite box and a deep link's server= (#2106's three other callers) by @martyinspace in #2109
  • Test: the NB5 junk-chain test does no curve math (2.4 s → 0.19 s; it timed out at 30 s on CI) by @martyinspace in #2110
  • registrar /admin: Cloudflare Access sign-in verified in the Worker (no secret box), actor by email; Free all and remove (tier A) by @martyinspace in #2111
  • Global entry P2: one global row in the sheet, always; the first screen always draws both doors by @martyinspace in #2105
  • Publish the guide: members' guide v141 → v142 by @martyinspace in #2120
  • 🔎 Scout: [test coverage] break-glass-code by @martyinspace in #2112
  • 🗺️ Atlas: [manager tests] add component unit tests for InPageConfirm by @martyinspace in #2113
  • 🎨 Palette: [a11y] Add keyboard navigation and ARIA button semantics to HeaderTitle by @martyinspace in #2115
  • chore(native): bump to v1.2.66 (android 288 / ios 230) by @martyinspace in #2121
  • jules: register the 18 Oct closes (#2114, #2116, #2117, #2118) by @martyinspace in #2123
  • 🛡️ Sentinel: [security] enforce participant authorization on private conversations by @martyinspace in #2119
  • Global entry P4: the smart link opens the global door; Play's global=1; restore chips (tier A) by @martyinspace in #2122
  • Publish the guide: members' guide v142 → v143 by @martyinspace in #2126
  • test(server): DM participant-only reads pinned in both read-auth modes (#2119 follow-ups) by @martyinspace in #2124
  • ACME S1: the node's own certificates over http-01 (names + shortlived IP), SNI, hourly renewal (tier A) by @martyinspace in #2129
  • Registrar tests: no test reaches the network — a fetch trap in the harness (tier B) by @martyinspace in #2133
  • fix(native): the Market retries a failed first sync once before "trouble connecting"; a slow key is read again before an unsigned sync by @martyinspace in #2127
  • Global entry P5: the door screen takes any open-door community, global by default; the not-recognised screen's Join goes to the community it reached (tier A) by @martyinspace in #2131
  • Publish the guide: members' guide v143 → v144, operator manual v135 → v136 by @martyinspace in #2136
  • Registrar S1: a pending auto name is 'provisioning', finished whoever listens; the node waits 25 s and asks again by @martyinspace in #2125
  • Global limits: listings archived after 90 days, the four caps in one place and published (tier A-lite) by @martyinspace in #2130
  • Publish the guide: members' guide v144 → v145, operator manual v136 → v137 by @martyinspace in #2141
  • chore(native): bump to v1.2.67 (android 289 / ios 231) by @martyinspace in #2137
  • test(native): Damo's reconnect test preloads the probe's modules (load-sensitive flake) by @martyinspace in #2139
  • Members' guide G1: every way into the global community with the account you have; what it is for, in the sheet, web app and website (tier B) by @martyinspace in #2128
  • Publish the guide: members' guide v145 → v146, operator manual v137 → v138 by @martyinspace in #2145
  • HTTPS S2: beanpool claim --ip / --address, the node's own address store, and the ACME pre-write (tier A) by @martyinspace in #2135
  • Registrar S3: claim sources, held never refused, probation, private settings (tier A; stacked on #2125) by @martyinspace in #2132
  • test(registrar): claim-answers-first measures 'never waits for ntfy' (red on every CI run since S1, Node 22) by @martyinspace in #2144
  • chore(native): eas submit knows the iOS app id by @martyinspace in #2147
  • CI: "Timeout calling onTaskUpdate" fixed at its cause — backport vitest#8297 to 3.2.7; native back to 2 CI workers (tier B) by @martyinspace in #2134
  • test(server): no-mothership suite: a local community's members walk §2.4 with our domains unresolvable (mothership A4, tier A, test only) by @martyinspace in #2143
  • No-mothership follow-ups: DISABLE_APP_STORE_CHECK, and a standby has no claim (#2143 items 2 and 4, tier A) by @martyinspace in #2149
  • Publish the guide: operator manual v138 → v139 by @martyinspace in #2154
  • HTTPS S7: certificate alerts (renewal late, expiring, fallback on any expired address) and the IP-only take-over line (tier A) by @martyinspace in #2146
  • Publish the guide: operator manual v139 → v140 by @martyinspace in #2155
  • Mothership A2 (server): the listing promise in the directory push, the mirror, the card and the order (tier A) by @martyinspace in #2142
  • fix(server): S7's alert and take-over sentences name their language (core words N11 red on main) by @martyinspace in #2156
  • HTTPS S3: the phone takes a server's public number over https, and follows its community to a new address after checking it is the same community (tier A) by @martyinspace in #2138
  • HTTPS S4: Settings → Public Address "Your own address", GET /tls/status, remove with fresh proof (tier A) by @martyinspace in #2148
  • Mothership A8: status.json of our servers in the registrar's KV, served publicly; beanpool.org/status draws it at 320 px light and dark; /admin links it (tier B) by @martyinspace in #2140
  • HTTPS S5: the words — an IP or your own domain with real HTTPS, port 80, alerts, moving to a name; the members' follow card; the website's install block (tier A) by @martyinspace in #2153
  • Publish the guide: members' guide v146 → v147, operator manual v140 → v141 by @martyinspace in #2160
  • Words S3a: a language change redraws the whole app; the tab strip and Home in the member's language (tier A) by @martyinspace in #2152
  • fix(native/ios): builds on Xcode 27.1 — pod targets ≥ iOS 15.1; expo-router iOS 16 subtitle guarded by @martyinspace in #2150
  • Registrar S2: notices to operators on their own check-in (seen ack, one owner alert each, one-use reply links) + contact retention (tier A) by @martyinspace in #2151
  • Publish the guide: operator manual v141 → v142 by @martyinspace in #2162
  • Words: es, fr, pt, ru catch up after S3a: tab bar, Home and every missing sentence (machine drafts) by @martyinspace in #2161
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant catch up after S3a (machine drafts) by @martyinspace in #2163
  • Words: ar, bn, de, el, fa, fil, hi, id, it, ja catch up after S3a (machine drafts) by @martyinspace in #2164
  • Settings' address status asks the registrar only about a name the node holds or is asked for; an unreachable registrar is one calm line, never a 400 (#2143 item 1, tier A) by @martyinspace in #2158
  • Publish the guide: operator manual v142 → v143 by @martyinspace in #2165
  • Words S3b: the Market and a listing's page in the member's language (tier A) by @martyinspace in #2166
  • ✨ Flow: [manager DX] replace catch err any in EnterpriseLocationPicker by @martyinspace in #2169
  • 🗺️ Atlas: [manager tests] add rollBackDoneWords unit tests by @martyinspace in #2167
  • Words: es, fr, pt, ru for the Market and a listing's page (S3b, machine drafts) by @martyinspace in #2175
  • Words: ar, bn, de, el, fa, fil, hi, id, it, ja for the Market and a listing's page (S3b, machine drafts) by @martyinspace in #2177
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for the Market and a listing's page (S3b, machine drafts) by @martyinspace in #2178
  • Words S3c: Talk and its conversations in the member's language (tier A) by @martyinspace in #2179
  • Words: ar, bn, de, el, fa, fil, hi, id, it, ja for Talk and its conversations (S3c, machine drafts) by @martyinspace in #2180
  • test(native): DM notice pins follow #2179 (main red on two source pins) by @martyinspace in #2183
  • Registrar: bind the STATUS KV namespace so beanpool.org/status has data (A8 turn-on) by @martyinspace in #2159
  • Jules register: six closes from the 19 Oct batch by @martyinspace in #2176
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for Talk and its conversations (S3c, machine drafts) by @martyinspace in #2181
  • Settings Home: the server's alerts in Action Required, All clear only when read, and never a 0 for a figure that didn't load by @martyinspace in #2184
  • Publish the guide: operator manual v143 → v144 by @martyinspace in #2187
  • Words: es, fr, pt, ru for Talk and its conversations (S3c, machine drafts) by @martyinspace in #2182
  • Registrar status: an incident whose first or last tick lost its write is derived from watch_log by the next (#2140 follow-up, tier B) by @martyinspace in #2185
  • Words S3d: the Settings tab in the member's language (tier A) by @martyinspace in #2186
  • Words S3d follow-ups: final-confirmation buttons named by their words, the purge's own failure sentences translated (#2188 items 1–2, tier A) by @martyinspace in #2189
  • chore(native): bump to v1.2.68 (android 290 / ios 232) by @martyinspace in #2190
  • Words: es, fr, pt, ru for Settings (S3d, machine drafts) by @martyinspace in #2191
  • Words: ar, bn, de, el, fa, fil, hi, id, it, ja for Settings (S3d, machine drafts) by @martyinspace in #2192
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for Settings (S3d, machine drafts) by @martyinspace in #2193
  • Words polish: capitals by the language's rule, members' words never translated, Indic tab widths measured (tier B) by @martyinspace in #2194
  • Words S3e: the screens Settings opens in the member's language (tier A) by @martyinspace in #2196
  • Words S3f: Channels and the Pulse in the member's language (tier A) by @martyinspace in #2195
  • Words S3g: the Commons tab and its Decisions in the member's language (tier A) by @martyinspace in #2199
  • Words S3i: the Ledger and its info sheets in the member's language (tier A) by @martyinspace in #2201
  • Words: es, fr, pt, ru for the polish, the screens Settings opens, Channels + Pulse and the Commons (S3e–S3g, machine drafts) by @martyinspace in #2205
  • Words: ar, bn, de, el, fa, fil, hi, id, it, ja for the polish, the screens Settings opens, Channels + Pulse and the Commons (S3e–S3g, machine drafts) by @martyinspace in #2207
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for the polish, the screens Settings opens, Channels + Pulse and the Commons (S3e–S3g, machine drafts) by @martyinspace in #2203
  • Words S3h: the enterprise page and groups in the member's language (tier A) by @martyinspace in #2204
  • Words: es, fr, pt, ru for the Ledger and its info sheets (S3i, machine drafts) by @martyinspace in #2209
  • Words: ar, bn, de, el, fa for the Ledger and its info sheets (S3i, machine drafts) by @martyinspace in #2210
  • Words: fil, hi, id, it, ja for the Ledger and its info sheets (S3i, machine drafts) by @martyinspace in #2211
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for the Ledger and its info sheets (S3i, machine drafts) by @martyinspace in #2212
  • Words S3k: the key, sign-in and recovery screens in the member's language (tier A) by @martyinspace in #2208
  • Words: es, fr, pt, ru for the enterprise page and groups (S3h, machine drafts) by @martyinspace in #2217
  • Words: ar, bn, de, el, fa for the enterprise page and groups (S3h, machine drafts) by @martyinspace in #2216
  • Words: fil, hi, id, it, ja for the enterprise page and groups (S3h, machine drafts) by @martyinspace in #2213
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for the enterprise page and groups (S3h, machine drafts) by @martyinspace in #2214
  • Words S3j: welcome and onboarding in the member's language (tier A) by @martyinspace in #2206
  • Words: es, fr, pt, ru for the key, sign-in and recovery screens (S3k, machine drafts) by @martyinspace in #2219
  • Words: ar, bn, de, el, fa for the key, sign-in and recovery screens (S3k, machine drafts) by @martyinspace in #2221
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for the key, sign-in and recovery screens (S3k, machine drafts) by @martyinspace in #2220
  • Words: fil, hi, id, it, ja for the key, sign-in and recovery screens (S3k, machine drafts) by @martyinspace in #2222
  • Amounts: one reader for a typed amount, in the member's language (fr "12,5" sent 12) (tier A) by @martyinspace in #2215
  • Commons tab: the propose form's project picker gets the node's enterprises; the dead panel goes (#2200) by @martyinspace in #2218
  • Words: es, fr, pt, ru for welcome and onboarding (S3j, machine drafts) by @martyinspace in #2223
  • Words: ar, bn, de, el, fa for welcome and onboarding (S3j, machine drafts) by @martyinspace in #2225
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for welcome and onboarding (S3j, machine drafts) by @martyinspace in #2226
  • Words: fil, hi, id, it, ja for welcome and onboarding (S3j, machine drafts) by @martyinspace in #2224
  • chore(native): bump to v1.2.69 (android 291 / ios 233) by @martyinspace in #2227
  • Words W1 (web): the Market, Talk, the Pulse and events in the member's language; 320 px × 1.3 measured (tier A) by @martyinspace in #2236
  • 🗺️ Atlas: [manager tests] alerts and offbox helpers unit tests by @martyinspace in #2232
  • Words S3l: events, profiles, finding a community and the app shell in the member's language (tier A) by @martyinspace in #2230
  • Words W3 (web): Settings, profiles, onboarding and the app shell in the member's language (tier A) by @martyinspace in #2237
  • fix(ci): undeclared-imports check treats apps/pwa *.test-support.ts helpers as test files (main red) by @martyinspace in #2248
  • Words S3m: the Map in the member's language, words only (tier A) by @martyinspace in #2246
  • Words: es, fr, pt, ru for the web app's Market, Talk, Pulse and events (W1, machine drafts) by @martyinspace in #2242
  • Words: ar, bn, de, el, fa for the web app's Market, Talk, Pulse and events (W1, machine drafts) by @martyinspace in #2243
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for the web app's Market, Talk, Pulse and events (W1, machine drafts) by @martyinspace in #2244
  • Words: fil, hi, id, it, ja for the web app's Market, Talk, Pulse and events (W1, machine drafts) by @martyinspace in #2245
  • Words: the web's event time zone and the phone's sign-in timeout in the member's language by @martyinspace in #2249
  • 🔨 Forge: [reliability] return 400 on member registration failure in community route by @martyinspace in #2228
  • ✨ Flow: [manager UX] replace catch err any in OffboardMemberWizard by @martyinspace in #2229
  • 🎨 Palette: [a11y] EnterpriseCard focus rings and decorative emoji hiding by @martyinspace in #2231
  • 🎨 Pixel: [native a11y] add dynamic accessibilityLabel to report reason submit button by @martyinspace in #2233
  • ⚡ Bolt: [perf] O(1) keeper lookups in EnterpriseDecisions by @martyinspace in #2234
  • 🔎 Scout: [test coverage] probation engine by @martyinspace in #2235
  • 👁️ Watchman: log clean server test suite run by @martyinspace in #2240
  • Words W2 (web): the enterprise page, the Ledger, the Commons and groups in the member's language; 320 px × 1.3 measured (tier A) by @martyinspace in #2241
  • Words W4 (web): joining, restoring, re-keying and an owner's unlock in the member's language (tier A) by @martyinspace in #2247
  • Words: es, fr, pt, ru for every screen the sweeps wrapped (all sweeps, machine drafts) by @martyinspace in #2250
  • Words: ar, bn, de, el, fa for every screen the sweeps wrapped (all sweeps, machine drafts) by @martyinspace in #2251
  • Words: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant for every screen the sweeps wrapped (all sweeps, machine drafts) by @martyinspace in #2252
  • Words: fil, hi, id, it, ja for every screen the sweeps wrapped (all sweeps, machine drafts) by @martyinspace in #2253
  • chore(native): bump to v1.2.70 (android 292 / ios 234) by @martyinspace in #2254
  • test(pwa): the two-tab block-list sweep loads @beanpool/core once, not per tab, so it fits its time again by @martyinspace in #2257
  • Guide (S5a): section and page titles and summaries in the member's language; pages say when they are still in English by @martyinspace in #2255
  • Guide: 44 pages corrected against today's app (audit of 20 Oct), before translation by @martyinspace in #2256
  • Publish the guide: members' guide v147 → v148 by @martyinspace in #2258
  • Guide titles: es, fr, pt, ru (machine drafts, 20 Oct) by @martyinspace in #2259
  • Guide titles: ar, bn, de, el, fa (machine drafts, 20 Oct) by @martyinspace in #2260
  • Guide titles: ko, ml, sw, ta, tr, uk, ur, vi, zh-Hans, zh-Hant (machine drafts, 20 Oct) by @martyinspace in #2261
  • Guide titles: fil, hi, id, it, ja (machine drafts, 20 Oct) by @martyinspace in #2262
  • Tools (T0.1): the tool template — manifest, registry, budgets and checks (no tools yet) by @martyinspace in #2264
  • Tools (S3): lendable Offers — one borrower at a time, back on the board when returned (server) by @martyinspace in #2265
  • Tools (S2): the node's owner-only tool store (member_tool_state), replicated, tombstoned, bounded by @martyinspace in #2263
  • Guide (S5b): full guide pages in the member's language, fetched per language, with 'newer in English' when behind by @martyinspace in #2266
  • Deals say days or weeks when the price is per day or per week, and a loan says how many days, not 'hours' by @martyinspace in #2268
  • Guide pages: es fr pt ru (machine drafts, 21 Oct) by @martyinspace in #2269
  • Guide pages: ar bn de el fa (machine drafts, 21 Oct) by @martyinspace in #2270
  • Guide pages: ko ml sw ta tr uk ur vi zh-Hans zh-Hant (machine drafts, 21 Oct) by @martyinspace in #2271
  • Guide pages: fil hi id it ja (machine drafts, 21 Oct) by @martyinspace in #2272
  • Guide: a page translated by machine says so, in the member's language, like Settings does by @martyinspace in #2273
  • Publish the guide: es guide vnone → v1, pt guide vnone → v1, hi guide vnone → v1, bn guide vnone → v1, fr guide vnone → v1, ar guide vnone → v1, id guide vnone → v1, ru guide vnone → v1, zh-Hans guide vnone → v1, zh-Hant guide vnone → v1, it guide vnone → v1, de guide vnone → v1, tr guide vnone → v1, sw guide vnone → v1, ml guide vnone → v1, ta guide vnone → v1, uk guide vnone → v1, ur guide vnone → v1, fa guide vnone → v1, vi guide vnone → v1, el guide vnone → v1, fil guide vnone → v1, ja guide vnone → v1, ko guide vnone → v1 by @martyinspace in #2275
  • Tools (T0.3): the web host — Tools page, one covered tool page, the frame, IndexedDB store, the Market's openDraft, a chunk per tool by @martyinspace in #2274
  • Tools (T0.2): the phone host — Tools screen, one tool route, the frame, the doors, the List sheet, device store, Sign Out wipe by @martyinspace in #2267
  • Tools: host follow-ups — one fence, data kept per community, fresh Home cards, nothing left after leaving by @martyinspace in #2283
  • chore(native): bump to v1.2.71 (android 293 / ios 235) by @martyinspace in #2290
  • Tools: a post a tool filled in opens straight in the composer, without 'Unfinished post?' by @martyinspace in #2291
  • Tools: host follow-ups 2 — leave moves the anchor first, settings per community, reminder ids that always cancel by @martyinspace in #2285
  • 🔎 Scout: [test coverage] replica-hashes by @martyinspace in #2276
  • Guide pages round 2: es fr pt ru (machine drafts, 21 Oct) by @martyinspace in #2286
  • Guide pages round 2: ar bn de el fa (machine drafts, 21 Oct) by @martyinspace in #2287
  • Guide pages round 2: ko ml sw ta tr uk ur vi zh-Hans zh-Hant (machine drafts, 21 Oct) by @martyinspace in #2288
  • Guide pages round 2: fil hi id it ja (machine drafts, 21 Oct) by @martyinspace in #2289
  • Publish the guide: es guide v1 → v2, pt guide v1 → v2, hi guide v1 → v2, bn guide v1 → v2, fr guide v1 → v2, ar guide v1 → v2, id guide v1 → v2, ru guide v1 → v2, zh-Hans guide v1 → v2, zh-Hant guide v1 → v2, it guide v1 → v2, de guide v1 → v2, tr guide v1 → v2, sw guide v1 → v2, ml guide v1 → v2, ta guide v1 → v2, uk guide v1 → v2, ur guide v1 → v2, fa guide v1 → v2, vi guide v1 → v2, el guide v1 → v2, fil guide v1 → v2, ja guide v1 → v2, ko guide v1 → v2 by @martyinspace in #2295
  • Lending: a lendable Offer is always asked for — the lender says yes before anything is held by @martyinspace in #2292
  • 🗺️ Atlas: [manager tests] getTlsStatus and setOwnAddress unit tests by @martyinspace in #2282
  • Tools (S2.1): the tool copy's GET says when it was removed, so a member's other phone stops sending it by @martyinspace in #2296
  • Words (S8): words:draft lists what each language lacks — app words, guide titles, guide pages, website — and writes its briefs by @martyinspace in #2294
  • Tools: after a member's account recovery, the node still knows which tool copies they removed by @martyinspace in #2299
  • Phone: invited people say Invited, not In the group; plain words for the saved communities screen by @martyinspace in #2300
  • Website (S6): every page in the 24 languages — // folders, hreflang, a language row, and 'read in …' by @martyinspace in #2293
  • Words: a mixed community — anyone a member invites can join, and members your admins confirm start higher by @martyinspace in #2298
  • Tests: node-claim's log budget can't straddle a minute; the language-switch render gets a load-proof timeout by @martyinspace in #2301
  • Web: the group invite sheet says who is invited or asked to join, not 'In the group' by @martyinspace in #2307
  • Trust: a confirmed member's level badge shows what they've done; the admins' confirmation stays private by @martyinspace in #2302
  • Tests: the standby ledger copy compares the Commons pool's balance, not its flush stamp by @martyinspace in #2303
  • Phone: version 1.2.72 (Android 294, iPhone 236) by @martyinspace in #2308
  • Tests: the members-on-demand timing suite runs on its own at the end, not beside other suites by @martyinspace in #2311
  • Words: today's new sentences and the What's new page in the 24 languages (machine drafts, 21 Oct) by @martyinspace in #2304
  • Publish the guide: members' guide v148 → v149, operator manual v144 → v145, es guide v2 → v3, pt guide v2 → v3, hi guide v2 → v3, bn guide v2 → v3, fr guide v2 → v3, ar guide v2 → v3, id guide v2 → v3, ru guide v2 → v3, zh-Hans guide v2 → v3, zh-Hant guide v2 → v3, it guide v2 → v3, de guide v2 → v3, tr guide v2 → v3, sw guide v2 → v3, ml guide v2 → v3, ta guide v2 → v3, uk guide v2 → v3, ur guide v2 → v3, fa guide v2 → v3, vi guide v2 → v3, el guide v2 → v3, fil guide v2 → v3, ja guide v2 → v3, ko guide v2 → v3 by @martyinspace in #2312
  • Phone: joining the global community with your account says so — no 'Create an account' for someone who has one by @martyinspace in #2306
  • Enterprises: a known pledge counts once in the spend floor, and a released pledge gives the floor back by @martyinspace in #2313
  • Tools (S2.2): a late upload can't put back a tool copy its owner switched off — only the switch-on writes over a removal by @martyinspace in #2305
  • Words: this afternoon's new sentences and three guide pages in the 24 languages (machine drafts, 21 Oct b) by @martyinspace in #2314
  • Publish the guide: members' guide v149 → v150, es guide v3 → v4, pt guide v3 → v4, hi guide v3 → v4, bn guide v3 → v4, fr guide v3 → v4, ar guide v3 → v4, id guide v3 → v4, ru guide v3 → v4, zh-Hans guide v3 → v4, zh-Hant guide v3 → v4, it guide v3 → v4, de guide v3 → v4, tr guide v3 → v4, sw guide v3 → v4, ml guide v3 → v4, ta guide v3 → v4, uk guide v3 → v4, ur guide v3 → v4, fa guide v3 → v4, vi guide v3 → v4, el guide v3 → v4, fil guide v3 → v4, ja guide v3 → v4, ko guide v3 → v4 by @martyinspace in #2316
  • Enterprises: the backing from confirmed keepers shows as one total, never by name by @martyinspace in #2309
  • Release 1.2.30: version bump before tagging by @martyinspace in #2318

Full Changelog: v1.2.29...v1.2.30