• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Freegle / Iznik
71%
master: 73%

Build:
Build:
LAST BUILD BRANCH: feature/bulk-offer-management
DEFAULT BRANCH: master
Repo Added 13 Apr 2026 05:19PM UTC
Files 679
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix/message-create-lastinsertid
branch: fix/message-create-lastinsertid
CHANGE BRANCH
x
Reset
  • fix/message-create-lastinsertid
  • chore/coverage-adapter
  • chore/coverage-amp
  • chore/coverage-app-release-classifier
  • chore/coverage-dashboard-go
  • chore/coverage-database
  • chore/coverage-donations-helpers
  • chore/coverage-emailtracking
  • chore/coverage-embedding
  • chore/coverage-export
  • chore/coverage-handler
  • chore/coverage-image
  • chore/coverage-isochrone
  • chore/coverage-merge
  • chore/coverage-misc
  • chore/coverage-namegen
  • chore/coverage-reusebenefit
  • chore/coverage-sentrylog
  • chore/coverage-sso
  • chore/coverage-team
  • chore/coverage-use-blur-detector
  • chore/coverage-use-distance
  • chore/coverage-use-suppress-exception
  • chore/coverage-use-typewriter
  • chore/coverage-useTimeFormat
  • chore/coverage-useTwem
  • chore/coverage-utils
  • chore/coverage-utils-flex-json
  • chore/coverage-vectorsearch-20260422
  • chore/coverage-worrywords-edge-cases
  • chore/pr-template
  • chore/pr-uncommitted-hook
  • chore/purge-email-tracking-30d
  • chore/salvage-orphaned-wip
  • chore/skip-iznik-server-ci-tests
  • ci/spatial-tests-serial
  • cleanup/retire-cake-for-mods
  • coverage/Go-tdd
  • coverage/event-filtering-tests
  • coverage/go-1714999056
  • coverage/go-status-readgithead-2026-04-29
  • coverage/go-tryst-20260503
  • coverage/laravel-gemini-service-20260504
  • coverage/laravel-message-commands-2026-05-02
  • coverage/useModMessages-uncovered-branches-1777447042
  • coverage/vitest-uppy-retry-coalescer-2026-05-07
  • coverage/vitest-use-trace-20260425
  • diagnose/repost-group-change-dom-dump
  • docs/frontend-server-migration-plan
  • docs/pr-discourse-link-standard
  • feat/admin-previous-fix
  • feat/android-app-shortcuts
  • feat/app-native-features
  • feat/archive-attachments
  • feat/batch-log-rotation
  • feat/batch-migrate-non-email-jobs
  • feat/batch-migrate-remaining-scripts
  • feat/birthday-emails
  • feat/browse-scroll-instrumentation
  • feat/chat-chaseup-mods
  • feat/chat-review-notify
  • feat/chat-review-pending
  • feat/contentcheck-pipeline
  • feat/digest-reply-notice
  • feat/donations-daily-summary
  • feat/engage-emails
  • feat/events-digest
  • feat/group-customisation
  • feat/group-list-show-3-plus-more
  • feat/groups-closed-reminder
  • feat/groups-no-messages
  • feat/haptics-feedback
  • feat/helper-concierge-agent
  • feat/jobs-index-drift-rebuild
  • feat/lovejunk-tn-invoice
  • feat/microvolunteering-notify
  • feat/mod-active-welfare
  • feat/modtools-capacitor-app
  • feat/newsfeed-mod-notif
  • feat/noticeboard-thank-email
  • feat/pageview-instrumentation
  • feat/partnerships-restructure
  • feat/postcode-please-choose
  • feat/ripple-poster-membership-on-rippled
  • feat/ripple-reply-saturation-stop
  • feat/ripple-retire-pending-on-take
  • feat/ripple-retract-on-origin-removal
  • feat/ripple-sysadmin-page-focus
  • feat/rippling-autoapprove-kpi
  • feat/rippling-dashboard-cohorts
  • feat/rippling-trial-stats
  • feat/share-into-freegle
  • feat/share-into-freegle-ios
  • feat/spatial-remove-expanding-bbox
  • feat/spatial-routing-ui-yesterday
  • feat/stories-ask
  • feat/stories-to-central
  • feat/tn-names-fix
  • feat/tryst-calendar-reminders
  • feat/user-support-dump
  • feat/volunteering-digest
  • feat/welcome-review
  • feature/ai-image-prompt-improvements
  • feature/ai-image-regen
  • feature/android-coldstart-safe
  • feature/app-out-of-date-message
  • feature/autoapprove-delay
  • feature/batch-deadlock-fixes
  • feature/batch-deadlock-fixes-v2
  • feature/batch-jobs-dry-run-and-fixes
  • feature/bounce-users-suspension
  • feature/bulk-offer-clearance
  • feature/bulk-offer-management
  • feature/cansubmit-messagevalid
  • feature/charity-badge
  • feature/chat-api-test-coverage
  • feature/chat-button-modifier-keys
  • feature/chat-expected-migration
  • feature/chat-process-migration
  • feature/chat-spam-migration
  • feature/check-spammers-migration
  • feature/cloudflare-ai-images
  • feature/cls-improvements
  • feature/compose-single-call-rework
  • feature/concern-keywords
  • feature/coverage-20260429
  • feature/coverage-laravel-event-listeners
  • feature/coverage-message
  • feature/coverage-postcode-remapping
  • feature/coverage-vitest-1777133352
  • feature/coverage-vitest-20260504
  • feature/daily-posts-push
  • feature/eee-identification
  • feature/enable-batch-jobs
  • feature/engage-update-migration
  • feature/explore-mobile-finder
  • feature/exports-migration
  • feature/frontend-design-refresh
  • feature/giftaid-chaseup-migration
  • feature/go-coverage-group
  • feature/go-coverage-pr
  • feature/hybrid-embedding-search
  • feature/jobs-placement-tracking
  • feature/leave-freegle-notice
  • feature/memberships-process-migration
  • feature/message-search-index-migration
  • feature/migrate-http-endpoints
  • feature/mobile-feel
  • feature/mod-notifs-migration
  • feature/modtools-edit-origin-group
  • feature/modtools-mod-mail-logging-9518
  • feature/monitor-fsm-process-quality
  • feature/monitor-fsm-sqlite
  • feature/multi-group-messages
  • feature/multi-group-messages-join
  • feature/notification-chaseup-email
  • feature/putmessage-item-validation
  • feature/reengagement-mails
  • feature/reply-to-chat
  • feature/report-chat-no-common-group
  • feature/restore-vitest-status-endpoint
  • feature/retire-subject-line-settings
  • feature/ripple-reach-map
  • feature/rippling-browse
  • feature/rippling-held-replies
  • feature/rippling-immediate-mails
  • feature/rippling-location-velocity
  • feature/rippling-mod-location-changes
  • feature/rippling-mod-ui
  • feature/rippling-reach-engine
  • feature/rippling-relax-seen-threshold
  • feature/rippling-secondary-reject
  • feature/rippling-self-tuning
  • feature/rippling-single-group-posting
  • feature/rippling-tighten-spam-checks
  • feature/search-filter-tests
  • feature/search-relevance-fix-9585
  • feature/session-settings-defaults
  • feature/social-login-profile-pictures
  • feature/spatial-improvements
  • feature/tdd-coverage-changes-endpoint
  • feature/test-go-location-isochrones
  • feature/unified-digest-revision
  • feature/users-modmails-migration
  • feature/vector-search
  • feature/vite8-build-speed
  • feature/volunteering-maintenance
  • feature/wire-concern-keywords
  • fix-295
  • fix/abtest-coverage-determinism
  • fix/add-member-409
  • fix/ai-image-test
  • fix/ai-images-9646-1
  • fix/approved-members-infinite-scroll
  • fix/auth-userlist-non-array-crash
  • fix/authority-autocomplete-crash
  • fix/auto-repost-excessive-9481
  • fix/auto-repost-missing-items-9481
  • fix/banned-members-pagination-test
  • fix/banned-no-post-digest
  • fix/browse-hide-own-rejected
  • fix/browse-scroll-debounced-session
  • fix/browseview-null-scan
  • fix/chat-delivery-9800-1
  • fix/chat-notifications-closed-blocked
  • fix/chat-phone-warning-false-positive-9518
  • fix/chat-review-message-merge
  • fix/chitchat-image-size-9749-5
  • fix/chitchat-ios-cardinality
  • fix/chitchat-ios-limited-posts
  • fix/chitchat-reply-dots-padding-9749
  • fix/chitchat-scroll-history
  • fix/ci-clear-stale-status-labels
  • fix/ci-composer-install-retry
  • fix/ci-npm-install-retry
  • fix/config-9793-5
  • fix/content-moderation-9620-283
  • fix/daily-digest-badge-9806
  • fix/db-read-split-read-your-writes
  • fix/digest-action-links-9786-25
  • fix/digest-amp-tracking
  • fix/digest-came-and-went-dedup
  • fix/digest-clicks-chart-clarity
  • fix/digest-clicks-daily-only
  • fix/digest-first-posted-repost
  • fix/digest-immediate-inactivity-window
  • fix/digest-summary-outlook-br-9363-31
  • fix/digest-wanted-no-image-wait
  • fix/discourse-rate-limit-retry
  • fix/donations-paypal-9810
  • fix/duplicate-link-collection
  • fix/eee-browser-submitting-flag
  • fix/email-9363-29
  • fix/email-photo-no-reply-modal
  • fix/email-preheaders-ripple-intro
  • fix/email-rendering-9363-31
  • fix/email-tracking-sent-at-index-name
  • fix/enforce-discourse-quote-hook
  • fix/event-email-images-broken-url
  • fix/exclude-location-triggers-postcode-remap
  • fix/external-da-pointer-events-block-clicks
  • fix/fsm-coverage-gate-exhausted-prs
  • fix/gradle-plugin-portal
  • fix/group-config-editing-9793-8
  • fix/group-contact-label-9643-1
  • fix/group-list-onhere-platform-flags
  • fix/index-vue-onserverprefetch-deterministic-coverage
  • fix/insert-then-select-id
  • fix/ios-nse-wiring-absolute-path
  • fix/ip-abuse-warning-9768-5
  • fix/jobimg-9630-6
  • fix/jobmodeltest-jobs-lock-wait
  • fix/jobmodeltest-spatial-teardown-flake
  • fix/jobs-dedup-and-distance
  • fix/jobs-stale-knn-sync
  • fix/katapult-reaper-zombie-fallback
  • fix/location-9481-585
  • fix/log-history-group-filter-9672-3
  • fix/lostpw-typed-email-and-bounce-banner
  • fix/lovejunk-tn-invoice-never-sent
  • fix/member-deletion-status
  • fix/member-review-ignore-noop-9618
  • fix/member-seen-on-many-groups-review
  • fix/merge-api-return-logins-v1-parity
  • fix/message-log-historical-name
  • fix/message-log-historical-subject
  • fix/message-summary-eager-image-loading
  • fix/messagelist-crosspost-dedup-9733-7
  • fix/missing-received-logs
  • fix/mod-admin-send-pending-400
  • fix/modconfig-404-v1-parity
  • fix/modlog-historical-blank-and-auto-approved-label
  • fix/modlog-self-delete-label
  • fix/modlogs-dedup
  • fix/modmail-log-pending-subject-9518-211
  • fix/modmail-log-test-9518
  • fix/modnotif-chitchat-clarity-avatar
  • fix/modtools-alsoon-wording
  • fix/modtools-badge-count-9654-19
  • fix/modtools-banned-pagination-9518-246
  • fix/modtools-chat-badge-stuck
  • fix/modtools-chat-name-9719-1
  • fix/modtools-chat-review-hover-reveal
  • fix/modtools-chat-review-member-details
  • fix/modtools-chat-review-member-details-9518-219
  • fix/modtools-config-9793-1
  • fix/modtools-deleted-message-log-9622
  • fix/modtools-duplicate-highlight-9518-341
  • fix/modtools-edit-count-rippled-in
  • fix/modtools-edits-backup-group-leak
  • fix/modtools-email-branding
  • fix/modtools-feedback-scroll
  • fix/modtools-images-badge-9630-44
  • fix/modtools-infinite-scroll-pagination
  • fix/modtools-ios-add-note-chat-review-9518-234
  • fix/modtools-keyword-colour
  • fix/modtools-login-port-assertion
  • fix/modtools-member-history-9672-3
  • fix/modtools-member-review-buttons
  • fix/modtools-member-search-hang
  • fix/modtools-members-9518-238
  • fix/modtools-members-9518-238-modmail-filter-test
  • fix/modtools-members-9518-238-work
  • fix/modtools-members-9518-239
  • fix/modtools-photo-permissions
  • fix/modtools-postcode-edit-iphone-ui
  • fix/modtools-related-members-9631-16
  • fix/modtools-related-members-9631-19
  • fix/modtools-related-members-flash-and-filter
  • fix/modtools-rippling-pending-9812-3
  • fix/modtools-stdmsg-9644-1
  • fix/modtools-tn-listing-readonly
  • fix/monitor-bugs-batch
  • fix/mt-calendar-icon-padding
  • fix/mt-duplicate-highlight-9518
  • fix/mt-stdmsg-autogrow-boxes
  • fix/mygroups-browse-count
  • fix/myposts-old-posts-pinned-by-room-chat-9481-583
  • fix/myposts-old-rejected-9481-583
  • fix/national-volunteers-v2-parity
  • fix/out-of-area-postcode-test
  • fix/patch-message-groupid-draft
  • fix/pending-app-9783-6
  • fix/pending-message-visibility
  • fix/pending-url-spam-collection
  • fix/photos-vanished-9629
  • fix/playwright-coverage-sourcefilter-exclusions
  • fix/playwright-coverage-spinbutton-determinism
  • fix/post-creation-9788-28
  • fix/post-summary-9783-7
  • fix/post-validation-9788-32
  • fix/post-warnings-9766-14
  • fix/postsummary-layout-9684-3
  • fix/push-collage-skip-ai
  • fix/qr-mod-only
  • fix/queue-fatal-error-sentry
  • fix/reject-contentcheck-9815
  • fix/rejected-message-item-when-no-locationid
  • fix/related-members-9631-16
  • fix/related-members-9642-1
  • fix/related-members-counter-9631
  • fix/related-members-counter-stuck-9631
  • fix/related-members-deleted-filter
  • fix/related-members-group-filter
  • fix/reopen-closed-chat-on-message
  • fix/reply-pane-photo-zoom
  • fix/reply-statemachine-formref-race
  • fix/repost-reminder-dedup-rippling
  • fix/retire-unused-kudos
  • fix/review-ignore-held-members
  • fix/ripple-hold-direct-email-reply
  • fix/ripple-rejoin-only-rippled
  • fix/ripple-retraction-not-scope-gated
  • fix/rippling-charts
  • fix/rippling-contentcheck-test
  • fix/rippling-explorer-9808-56
  • fix/rippling-outcome-check
  • fix/routing-exclude-toll-roads
  • fix/scheduler-minute-drift
  • fix/search-white-goods-relevance-9585-18
  • fix/sentry-7384446789-merge-logins-forEach
  • fix/sentry-7421179445-mymessage-repost-null
  • fix/sentry-failed-to-fetch-image-freegletusd
  • fix/sentry-ftutils-getinnerdimensions-null
  • fix/sentry-ftutils-getplacementposition-nuxt3-ces
  • fix/sentry-ignore-freestar-ftutils-null
  • fix/sentry-ignore-notreadable-io
  • fix/sentry-in-operator-error-undefined
  • fix/sentry-leaflet-tooltip-nullmap-nuxt3-d7b
  • fix/sentry-nuxt3-d45-filter-undefined-error
  • fix/session-id-lastinsertid
  • fix/session-series-bigint
  • fix/site-title-badge
  • fix/spammer-patch-preserve-reporter
  • fix/spammer-v1-parity-unconfirmed
  • fix/spatial-postcodes-centroid
  • fix/stats-chart-types-and-ad-cssbind
  • fix/stdmsg-delete-and-config
  • fix/stdmsg-delete-config-9518
  • fix/stdmsg-editable-body-tn-editlink
  • fix/stdmsg-instruction-red
  • fix/stdmsg-textarea-min-3-lines
  • fix/support-purge-queues-forget-task
  • fix/test-failures-investigation
  • fix/tn-crosspost-photo-scrape
  • fix/uppy-debounce-retry-all
  • fix/v2-api-user-emails-message-postings
  • fix/v2-patch-user-trustlevel-not-persisted
  • fix/vector-keyword-whole-word
  • fix/vector-search-keyword-boost
  • fix/vector-search-subject-tier
  • fix/vectorsearch-non-determinism-and-irrelevance
  • fix/vectorsearch-threshold-white-goods
  • fix/view-source-distinction
  • fix/withdrawn-pending-soft-delete-403
  • fix/worry-word-dedup-and-scope
  • master
  • messages-multiple-groups
  • monorepo/partnerships-page
  • perf/email-stats-force-index
  • perf/modtools-messages-union-all
  • perf/ripple-reach-speedup
  • pr-234
  • pr-289
  • production
  • ripple/decouple-reach-mail
  • skill/community-reuse-outreach
  • skill/freegle-impact-report
  • temp-rebase
  • test-modspammer-crash-bug
  • test/ai-image-regen-history
  • test/auth-google-autoselect-coverage
  • test/coverage-changes-handler
  • test/coverage-chat-notifications
  • test/coverage-go-auth-hashpassword
  • test/coverage-go-group-create
  • test/coverage-go-utils
  • test/coverage-location-isochrone
  • test/coverage-vitest-uppy-retry-coalescer-1777621557
  • test/go-coverage-namevalidation-helpers
  • test/group-mod-dismiss-403
  • test/katapult-runner-e2e
  • test/laravel-coverage-mail-helper
  • test/message-package-coverage
  • test/message-pure-coverage
  • test/related-members-count-stale
  • test/session-flexint-coverage
  • tn-integration-refactor
  • tn-sync-port-testing
  • tn-sync-port-testing-local

25 Jun 2026 06:14PM UTC coverage: 71.401%. First build
23475

Pull #899

circleci

edwh
fix(message): use LastInsertId for new message id, not SELECT max-id

PutMessage created a message then read its id back with
"SELECT id FROM messages WHERE fromuser=? ORDER BY id DESC LIMIT 1". With the
read/write split (MYSQL_HOST_READ set) that SELECT is routed to a replica, which
under Galera's cross-node apply window had not yet applied the just-done INSERT -
so it returned the user's PREVIOUS message id. The new message's draft, its
photos (UPDATE messages_attachments SET msgid=newMsgID) and the subsequent
JoinAndPost then all bound to that old post, grafting a new offer onto an
existing one and merging the photos (Discourse 9832 "mixed up offers").

Read the id from the INSERT's own LastInsertId on the write connection
(db.DB() returns the source even with dbresolver registered), matching the
pattern in CreateGroup. The freshly-inserted message is then used for everything
downstream.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SwyetpbkbQV4AWWdqkBcvv
Pull Request #899: fix(message): use LastInsertId for new message id, not SELECT max-id

11282 of 15003 branches covered (75.2%)

Branch coverage included in aggregate %.

7 of 9 new or added lines in 1 file covered. (77.78%)

123765 of 174136 relevant lines covered (71.07%)

37.31 hits per line

Relevant lines Covered
Build:
Build:
174136 RELEVANT LINES 123765 COVERED LINES
37.31 HITS PER LINE
Source Files on fix/message-create-lastinsertid
  • Tree
  • List 1320
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
23475 fix/message-create-lastinsertid fix(message): use LastInsertId for new message id, not SELECT max-id PutMessage created a message then read its id back with "SELECT id FROM messages WHERE fromuser=? ORDER BY id DESC LIMIT 1". With the read/write split (MYSQL_HOST_READ set) that... Pull #899 25 Jun 2026 07:00PM UTC edwh circleci
71.4
See All Builds (1498)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc