Repository navigation
v1.2.30
📦 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:/dataUsing Docker CLI:
docker pull ghcr.io/beanpool-org/beanpool-node:latestWhat'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