Skip to content

v1.2.31 — cloudflared security pin, pledges that return, keeper pause, front doors, one Market card

Choose a tag to compare

@martyinspace martyinspace released this 27 Oct 17:58
ef3a1d5

📦 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.31
    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

  • Phone: app links name no single community, only beanpool.org and every *.beanpool.org address by @martyinspace in #2319
  • Tests: the members speed test allows twice its budget on CI, where the test machine is slower even when quiet by @martyinspace in #2315
  • Phone: version 1.2.73 (Android 295, iPhone 237) by @martyinspace in #2317
  • Enterprises: the limit is the bigger of the opening line or the pledges, never both; only earned pledges clear a line by @martyinspace in #2324
  • Known floor: on by default — a mixed community needs no setup; no limit changes until an admin confirms someone by @martyinspace in #2310
  • Publish the guide: members' guide v150 → v151, operator manual v145 → v146 by @martyinspace in #2326
  • Phone: the global community opens its guest view first, like the web (tier A) by @martyinspace in #2320
  • Tests: the standby refusal suite compares the Commons pool's balance, not its flush stamp by @martyinspace in #2322
  • Phone: version 1.2.74 (Android 296, iPhone 238) by @martyinspace in #2323
  • Tests: the group-chat timing check runs alone at the end, so a busy test machine can't fail it by @martyinspace in #2328
  • Phone: the Ledger's 'sent' message timer stops when you leave the screen by @martyinspace in #2327
  • Tools (T0.4): a private copy on your community's server — on in both apps, one phone at a time, off means gone by @martyinspace in #2297
  • Phone: the group invite sheet shows who has asked to join, and doesn't let you invite them by mistake by @martyinspace in #2330
  • Settings: a member's role panel names the last owner only when there is one, and shows only the actions you can take by @martyinspace in #2331
  • Chat: after 15 minutes, your own message says why it can't be edited any more by @martyinspace in #2329
  • Tests: the restore-points suite's 'nothing moved' check survives a busy test machine, and names what moved by @martyinspace in #2325
  • Website: a 🌐 language button in the top menu, on every page and at phone width by @martyinspace in #2321
  • Accessibility: screen readers hear the global guest visit's busy state and the 15-minute edit note by @martyinspace in #2333
  • Words: machine drafts in 24 languages for the confirmation dial, the global guest view and enterprise limits, plus 4 guide pages each by @martyinspace in #2332
  • Publish the guide: members' guide v151 → v152, es guide v4 → v5, pt guide v4 → v5, hi guide v4 → v5, bn guide v4 → v5, fr guide v4 → v5, ar guide v4 → v5, id guide v4 → v5, ru guide v4 → v5, zh-Hans guide v4 → v5, zh-Hant guide v4 → v5, it guide v4 → v5, de guide v4 → v5, tr guide v4 → v5, sw guide v4 → v5, ml guide v4 → v5, ta guide v4 → v5, uk guide v4 → v5, ur guide v4 → v5, fa guide v4 → v5, vi guide v4 → v5, el guide v4 → v5, fil guide v4 → v5, ja guide v4 → v5, ko guide v4 → v5 by @martyinspace in #2346
  • Phone: version 1.2.75 (Android 297, iPhone 239) by @martyinspace in #2347
  • Tests: the restore-points suite's 2FA switch-off can't be refused by the admin rate limit by @martyinspace in #2344
  • Words: machine drafts in 24 languages for tool copies, the 15-minute edit note and 'Asked to join' by @martyinspace in #2348
  • 🗺️ Atlas: [manager tests] add unit tests for node-client automation token, auth failure, and read limits helpers by @martyinspace in #2336
  • 🎨 Pixel: [native a11y] add dynamic accessibilityLabel and busy state to unlock old words button by @martyinspace in #2337
  • 🎨 Palette: [a11y] add ARIA live region, label, and i18n to FormerAddressBanner by @martyinspace in #2339
  • 🔎 Scout: [test coverage] host kinds helper logic by @martyinspace in #2342
  • Jules register: the 22 Oct batch's six closures by @martyinspace in #2349
  • Phone: Edit on a message you just sent keeps its text instead of emptying a second later by @martyinspace in #2350
  • chore(native): bump to v1.2.76 (android 298 / ios 240) by @martyinspace in #2351
  • fix(pwa): the web app asks for location only when the member taps a location control by @martyinspace in #2352
  • Link a device works when the phone's copy of the account has no name by @martyinspace in #2353
  • Market distance picker: opens on the community's place, asks for your location only when you tap the button by @martyinspace in #2354
  • chore(native): bump to v1.2.77 (android 299 / ios 241) by @martyinspace in #2355
  • Phone: other members' reviews show the month, like the web, not a made-up day by @martyinspace in #2357
  • Owners get a daily count when an admin moves a member's account to a new phone by @martyinspace in #2360
  • Registrar: the key vault's locked alert is never cleared while the vault is still locked by @martyinspace in #2362
  • Phone app: the last English-only words go through translation by @martyinspace in #2358
  • Pulse: Instagram posts show as a clear card with one 'Open on Instagram' button by @martyinspace in #2365
  • Tool tests wait for the open sync before counting a write's requests by @martyinspace in #2356
  • Web app: the last English-only words go through translation by @martyinspace in #2361
  • CI: browsers installed once before the parallel checks; restore-points well inside its time limit by @martyinspace in #2371
  • Tools T1.1: the Tool shed's core (manifest, document, counts, loans maths) by @martyinspace in #2366
  • Enterprises open their own page everywhere, never a member's Trust Profile by @martyinspace in #2367
  • CI: a 15-minute timeout on the browser install step by @martyinspace in #2374
  • Phone at small sizes: no cut-off titles, a readable edit note, and the welcome screen honours dark mode by @martyinspace in #2369
  • Shops S1: the server side of a shop (a front window on an account) by @martyinspace in #2368
  • Tunnel connector test waits for the child to record itself instead of sleeping 200 ms by @martyinspace in #2382
  • Message someone straight from their profile, and from the Community list by @martyinspace in #2370
  • Near-me searches send your position only as precisely as the search needs by @martyinspace in #2363
  • Shops S4′: your shop on the phone by @martyinspace in #2372
  • Signed requests: the server's nonce store has a ceiling and says 'busy' when full by @martyinspace in #2359
  • Words 1023: tonight's new phrases in all 24 languages (phone, web, core, guide pages) by @martyinspace in #2385
  • Publish the guide: members' guide v152 → v153, operator manual v146 → v147, es guide v5 → v6, pt guide v5 → v6, hi guide v5 → v6, bn guide v5 → v6, fr guide v5 → v6, ar guide v5 → v6, id guide v5 → v6, ru guide v5 → v6, zh-Hans guide v5 → v6, zh-Hant guide v5 → v6, it guide v5 → v6, de guide v5 → v6, tr guide v5 → v6, sw guide v5 → v6, ml guide v5 → v6, ta guide v5 → v6, uk guide v5 → v6, ur guide v5 → v6, fa guide v5 → v6, vi guide v5 → v6, el guide v5 → v6, fil guide v5 → v6, ja guide v5 → v6, ko guide v5 → v6 by @martyinspace in #2389
  • 🗺️ Atlas: [manager tests] add unit tests for forgetStandby and passwordNeeds2faError by @martyinspace in #2379
  • 🔎 Scout: [test coverage] enterprise-decisions by @martyinspace in #2381
  • Jules register 23 Oct: seven closed filings by @martyinspace in #2393
  • Web sidebar: the Settings cog works from a profile page, and your picture shows in the corner by @martyinspace in #2386
  • Share Location OFF: strangers no longer see the community's rough place by @martyinspace in #2387
  • chore(native): bump to v1.2.78 (android 300 / ios 242) by @martyinspace in #2390
  • Website: how a community is governed, in plain and true words by @martyinspace in #2364
  • Reddit watcher: a small Devvit app tells the team when r/beanpool gets a new post or comment by @martyinspace in #2394
  • README: a true, short front page for people arriving from GitHub and Reddit by @martyinspace in #2395
  • Enterprise shopfront E2: keepers can edit the face, and the page gets its data by @martyinspace in #2391
  • Phone: Block reaches the community, so a blocked member's messages stop by @martyinspace in #2388
  • Tools T1.2 + T1.3: the Tool shed's screens on the phone and the web by @martyinspace in #2373
  • Words: the server's messages members see go through translation (part 1) by @martyinspace in #2400
  • Private preview: an owner signed in with the password gets the whole node config, so a save can't switch location sharing back on by @martyinspace in #2396
  • Shops S5: the shopfront on the phone — banner, logo, keepers, About, Featured by @martyinspace in #2398
  • Reddit watcher: an agent inbox, so new r/beanpool posts can be sorted and replies drafted for a person to post by @martyinspace in #2402
  • Message requests (server): a first message from a stranger waits until accepted by @martyinspace in #2392
  • Decisions: proposing needs a trading record, so badges unlock nothing by @martyinspace in #2399
  • Words: member-visible sentences in shared code go through t() by @martyinspace in #2401
  • How this community works S1: one read of the community's shape, and a log of changes (no behaviour change) by @martyinspace in #2407
  • Shops S8: the shopfront on the web — the enterprise page as a shop window, Manage as a tab by @martyinspace in #2406
  • Tests: the map words test leaves no timer behind; Home's Market price in each language's number style by @martyinspace in #2408
  • Message requests: a visitor can answer a request, and a block keeps hiding the blocked person's acceptance by @martyinspace in #2410
  • Words: the server's messages members see go through translation (part 2) by @martyinspace in #2409
  • Tool shed: room for 128 KB, counted by size, shown as things you can still add by @martyinspace in #2403
  • Link a device: scanning the web's code with the camera app opens the pairing sheet again by @martyinspace in #2413
  • Web Home: the cards fill a wide screen in two or three columns by @martyinspace in #2411
  • Shops S7: a Manage console for keepers; the public shopfront has no operator controls by @martyinspace in #2405
  • Claiming a community: say where to go next, and carry the claim through making an account by @martyinspace in #2412
  • Home W0: the layout remembers how many columns a member chose by @martyinspace in #2414
  • Removal by vote S1: one pause — emergency and report suspensions become the same pause by @martyinspace in #2397
  • Message requests (web): a Requests pill, the request card and request mode in the chat by @martyinspace in #2404
  • Home W3: the cards carry real content from the community by @martyinspace in #2416
  • 🔎 Scout: [test coverage] shop-refusal by @martyinspace in #2417
  • ⚡ Bolt: [perf] batch pre-fetch own decision votes in decision routes by @martyinspace in #2421
  • 🎨 Pixel: [native a11y] add dynamic accessibilityLabel and busy state to group post submit button by @martyinspace in #2424
  • Jules register 24 Oct: six closed filings by @martyinspace in #2427
  • chore(native): bump to v1.2.79 (android 301 / ios 243) by @martyinspace in #2426
  • How this community works S2: the owner changes the community's shape in one place, logged and told by @martyinspace in #2415
  • Home W4: the web app's cards show their real content by @martyinspace in #2429
  • Removal by vote S2: a pause opens the community's vote on removing the member by @martyinspace in #2430
  • Home W5: the phone's cards show their real content by @martyinspace in #2428
  • test(events): E5 waits for the previous Saturday's end, not its start by @martyinspace in #2435
  • How this community works S4: the owner's page — every setting, its lock and what a change does by @martyinspace in #2432
  • Publish the guide: members' guide v153 → v154, operator manual v147 → v148 by @martyinspace in #2437
  • A community with Beans off keeps the Commons tab for Decide by @martyinspace in #2434
  • test: full local runs give engine + signin their 30 s, and test-home survives CI's keep-alive by @martyinspace in #2441
  • A group invite reaches the person invited: a push, and a line in Needs you by @martyinspace in #2438
  • The web app's Chat and Pulse use a wide screen by @martyinspace in #2440
  • Claiming a community makes your account: a self-hosted community's first owner needs nothing of ours by @martyinspace in #2433
  • Group chat photos S1: frozen vectors for a sealed photo on a group line by @martyinspace in #2443
  • An enterprise's banner is a photo its keepers choose by @martyinspace in #2442
  • Tapping a push opens the community it came from, and the community list shows counts by @martyinspace in #2436
  • Declining a group invitation shows on Decline, and the web's Decline is a full 44 px target by @martyinspace in #2446
  • Manager tests: How this community works waits for the loaded section, not its loading box by @martyinspace in #2447
  • Web chat: tapping the header opens who you're talking to by @martyinspace in #2445
  • My Profile shows the name your community shows, and the invite list tells same names apart by @martyinspace in #2439
  • Publish the guide: members' guide v154 → v155, operator manual v148 → v149 by @martyinspace in #2458
  • chore(native): bump to v1.2.80 (android 302 / ios 244) by @martyinspace in #2459
  • Group chat photos S2: the node stores a sealed photo on a group line and serves it only to who may read that line by @martyinspace in #2444
  • An enterprise's logo can be one of the ready-made pictures, on the phone and the web by @martyinspace in #2457
  • Group chat photos S4: the web sends and shows photos in a locked group chat by @martyinspace in #2460
  • Group chat photos S3: the phone sends and shows photos in a locked group chat by @martyinspace in #2456
  • Web tests: the Manage step-down test waits for the page to scroll back up by @martyinspace in #2462
  • A profile change waiting to reach a community is kept for that community, not lost when you switch by @martyinspace in #2461
  • Group chat photos S5: the guide says photos work in group chats by @martyinspace in #2463
  • Publish the guide: members' guide v155 → v156, operator manual v149 → v150 by @martyinspace in #2467
  • Chat photos: a direct message's photo is 800 px too by @martyinspace in #2465
  • chore(native): bump to v1.2.81 (android 303 / ios 245) by @martyinspace in #2468
  • Shops pick a Market category: one list for shops and listings by @martyinspace in #2469
  • Group-invite alert gets an envelope; Commons '+' opens one Start something sheet (phone) by @martyinspace in #2464
  • Choose the part of a picture that shows: avatars, logos and banners, on the phone and the web by @martyinspace in #2466
  • Group chat photos S6: report one message, with its key, to the operators by @martyinspace in #2470
  • Publish the guide: members' guide v156 → v157, operator manual v150 → v151 by @martyinspace in #2473
  • Commons S2: the web's one Start something sheet by @martyinspace in #2471
  • chore(native): bump to v1.2.82 (android 304 / ios 246) by @martyinspace in #2474
  • Commons S3: the phone's Groups section shows yours first by @martyinspace in #2472
  • Commons: live projects are listed again, so members can find one to back by @martyinspace in #2479
  • Web crop: the dialog hears its keys from the frame it opens in (fixes the CI-only sign-up photo test) by @martyinspace in #2482
  • Deals S2: one open deal per member on a recurring listing, kept by the server by @martyinspace in #2481
  • Web group chats: Delete, Remove and Mute, as on the phone by @martyinspace in #2477
  • Jules 25 Oct: two new test files land, six re-filings go in the register by @martyinspace in #2476
  • Deals S1: a recurring Offer you took up shows your deal, and In Progress counts what it lists by @martyinspace in #2480
  • Commons S4: the web's Groups shows yours first by @martyinspace in #2475
  • Web chats: tap a photo to see it full screen, as on the phone by @martyinspace in #2495
  • Enterprises: a rejected project stays off the map and statuses, and the manager sees every row by @martyinspace in #2496
  • Web shops: open, change and visit a shop, as on the phone by @martyinspace in #2484
  • test-all: every package runs to its own result, and the report marks only what failed by @martyinspace in #2497
  • Web one-to-one chats: Delete your own message, as on the phone by @martyinspace in #2498
  • Web header: the needs-you icons, as on the phone by @martyinspace in #2478
  • Enterprises: a keeper can edit the enterprise's Offers and Needs, and add photos while posting them by @martyinspace in #2503
  • Tests: six load-flaky tests made deterministic by @martyinspace in #2499
  • chore(jules): 26 Oct batch — open-copies test, ChatPhoto's loading label, a 404 for freezing a member who isn't there; seven re-filings in the register by @martyinspace in #2501
  • Scripts: grep -q reads a here-string under pipefail, so a match is never read as missing by @martyinspace in #2504
  • Start an enterprise, then add its banner: the new enterprise opens with an Add a banner photo button by @martyinspace in #2502
  • Test: Remove my data waits for the first screen (main's red Test-All) by @martyinspace in #2509
  • Tests: test-no-mothership takes its libp2p ports from the OS, so it can't lose a port race under load by @martyinspace in #2506
  • Pulse: tap the Daily Pulse to read the day's reflection, on both apps by @martyinspace in #2505
  • Projects: no pledge after the deadline, on either app or the server by @martyinspace in #2500
  • Deals S3a: one rule for a deal that needs you, in core; Home's Needs you uses it by @martyinspace in #2483
  • Pictures S2: a coloured category tile instead of a faded emoji, everywhere, on both apps by @martyinspace in #2510
  • Photos: Add photo opens on Albums and offers Browse files, so every folder is reachable without a permission by @martyinspace in #2512
  • Tests: tools-template draws each fixture on each screen as its own test (main red: timeout under load) by @martyinspace in #2526
  • Front doors S0: the website says global is open, and every domain name is a link by @martyinspace in #2513
  • Deals S3b: every deal counter on both apps uses the one rule by @martyinspace in #2527
  • Front doors S3: notification permission at the tap, never at account creation by @martyinspace in #2524
  • Tests: MessagesPage's 'second line refused' case waits for the chat's state, not for luck by @martyinspace in #2528
  • Market: every new Offer, Need and event has a photo, on both apps and on the node by @martyinspace in #2508
  • Publish the guide: members' guide v157 → v158, es guide v6 → v7, pt guide v6 → v7, hi guide v6 → v7, bn guide v6 → v7, fr guide v6 → v7, ar guide v6 → v7, id guide v6 → v7, ru guide v6 → v7, zh-Hans guide v6 → v7, zh-Hant guide v6 → v7, it guide v6 → v7, de guide v6 → v7, tr guide v6 → v7, sw guide v6 → v7, ml guide v6 → v7, ta guide v6 → v7, uk guide v6 → v7, ur guide v6 → v7, fa guide v6 → v7, vi guide v6 → v7, el guide v6 → v7, fil guide v6 → v7, ja guide v6 → v7, ko guide v6 → v7 by @martyinspace in #2530
  • Tests: the assistant-preview check treats disk use as moving, like memory by @martyinspace in #2529
  • Pictures S4: a logo for every enterprise, a picture for every group, and no bare initials, on both apps by @martyinspace in #2511
  • Publish the guide: members' guide v158 → v159 by @martyinspace in #2531
  • docs(jules): register the six PRs closed in the 27 Oct triage by @martyinspace in #2538
  • Front doors S1: admins are told when someone asks to join by @martyinspace in #2523
  • fix(docker): cloudflared 2026.10.3 — older versions trust compromised eMudhra intermediates by @martyinspace in #2534
  • Projects: pledges return automatically a week after an unfunded project's end date by @martyinspace in #2525
  • Enterprises: a keeper can pause and resume the enterprise's Offers and Needs by @martyinspace in #2507
  • fix(native): the member's own Offer/Need form opens the shared photo sheet, with Browse files on Android by @martyinspace in #2532
  • 🗺️ Atlas: [manager tests] downloadAdminFile edge cases unit tests by @martyinspace in #2515
  • Release 1.2.31: version bump before tagging by @martyinspace in #2539
  • 🎨 Pixel: [native a11y] add dynamic accessibilityLabel to Save Profile button by @martyinspace in #2518
  • Pictures S5: one Market card on both apps — two photos a row, a two-line title, one status chip by @martyinspace in #2536
  • 🎨 Palette: [a11y] improve NeedsSheet close button focus ring and touch target by @martyinspace in #2520
  • chore(native): bump to v1.2.83 (android 305 / ios 247) by @martyinspace in #2537
  • Front doors S14 gates: no 'Open in the BeanPool app' for iPhones until the App Store app has the global door by @martyinspace in #2535

Full Changelog: v1.2.30...v1.2.31