Skip to content

Releases

v1.4.1 — Attribute write safeguards and API diagnostics

Choose a tag to compare

@github-actions github-actions released this 04 Nov 08:05
4246d5b

Fixes

  • Attribute writes fail clearly before network access (#30). Bring rejects the v1.4.0 attribute-write payload with HTTP 400. Unsupported ATTRIBUTE_UPDATE operations and nonempty attributes are now rejected explicitly, including in previews and mixed batches. Attributes remain readable; empty arrays remain accepted. Use the Bring app to edit attributes.
  • Actionable API diagnostics (#31). HTTP status, bounded and redacted API error details, error category and retryability are returned to MCP clients. HTTP 429 includes Retry-After when available. HTTP 401/403 clears client, session and list-name caches so the next request logs in again.
  • Safer retry behavior. Failed HTTP requests are surfaced instead of automatically replayed. After a timeout or server error, check the list before repeating a write.

Validation

145 automated tests pass on Python 3.11, 3.12 and 3.13. Every download is built from the same tested commit and passes source tests, dependency checks and an offline MCP smoke test against its extracted archive. No live shopping list is modified by these tests.

Downloads include macOS Apple Silicon, macOS Intel, Linux x86_64 and Windows x86_64. Verify archives against SHA256SUMS. Configuration and installation instructions are included in each archive.

Full change: #32

Full changelog: v1.4.0...v1.4.1

v1.4.0 — Shopping previews, cross-list search and attributes

Choose a tag to compare

@github-actions github-actions released this 04 Nov 07:21
0e86a37

v1.4.0 — Shopping previews, cross-list search and writable attributes

Resolves issues #21–#27.

  • get_lists supports JSON and MCP structured content while retaining default text output.
  • New search_items finds items across all accessible lists using the existing case, whitespace and German spelling normalization, with list/item identities and open/history status.
  • Mutation tools support dry_run with the same target resolution and validation as execution, without sending writes.
  • Restoring a history item reports restored and retains its UUID and omitted specification.
  • batch_update accepts per-item operations overriding a global default of ADD. All targets are preflighted before one bulk request, with effective operation and status per result.
  • attributes on adds and explicit batch ATTRIBUTE_UPDATE write validated {type, content} attributes through the supported Bring payload. List JSON attributes are no longer silently discarded.
  • Explicit UUID/name mismatches fail with an unsupported-rename error instead of silently ignoring the requested name change.

Existing canonical and legacy aliases remain supported. A preview does not reserve state, and preflight is not atomic with concurrent edits by other clients. Automated tests mock Bring access and verify SDK request serialization; no live shopping lists are changed by the test suite.

Downloads are built for Linux x86_64, Windows x86_64, macOS arm64 and macOS x86_64. Publication requires successful source tests, builds and offline MCP smoke tests for every extracted archive. SHA256SUMS accompanies all four downloads.

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 20:41
7666f13

What's Changed

  • Resolve shopping lookup, validation and batch issues for v1.3.0 by @arithmetic-zz in #20

Full Changelog: v1.2.0...v1.3.0

v1.2.0 — Structured shopping tools and list-name selection

Choose a tag to compare

@github-actions github-actions released this 03 Nov 13:23
f8ec45f

v1.2.0 — Structured shopping tools and list-name selection

This release resolves all five shopping-tool issues (#1–#5) together.

  • Read lists safely (#1): get_list accepts format: "json" and include_recent: false. JSON separates open items (purchase) from history (recently) and matches the list resource. Default text output still includes both sections.
  • Use list names (#2): get_list, add_item, remove_item, complete_item and batch_update accept exact list_name as an alternative to list_uuid. UUID takes precedence. Unknown names report available lists; ambiguous names require a UUID.
  • Track item changes (#3): single-item writes return readable text plus JSON metadata in a second text block and MCP structuredContent. Responses include item_uuid; add_item distinguishes created from updated based on open-list membership before the write. Re-adding a recent item is created.
  • Show names on first read (#4): list names load lazily on a cache miss; cached names avoid an extra discovery request.
  • Preserve dated attributes: item attributes with validity dates serialize as ISO 8601 strings in both tool JSON and resource JSON.
  • Clarify operations (#5): tool descriptions and README consistently describe add/update, complete-to-Recently-Purchased and permanent removal.

Compatibility and operational details

Existing UUID selectors and item-name aliases remain supported. add_item retains legacy uuid, with item_uuid taking precedence. Default list text stays readable; mutation responses gain an additional JSON block.

Single-item writes now read the current list once to resolve UUIDs and determine status. Name matching uses exact localized display names from get_list; use item_uuid for another language or spelling. Ambiguous name-only writes fail with guidance to supply item_uuid; removing an unknown name fails rather than claiming a removal. Newly added/completed items receive a UUID. Status reflects the pre-write snapshot and is not atomic with simultaneous edits from other clients.

Standalone downloads continue to target macOS arm64/x86_64, Windows x86_64 and Linux x86_64. Each release target must pass source tests and an MCP smoke test before publication.

Validation

  • 66 unit, protocol and packaging tests; CI on Python 3.11, 3.12 and 3.13.
  • Two independent code reviews; the second identified a dated-attribute JSON issue that was fixed and independently rechecked.
  • Standalone source tests and extracted-archive MCP smoke tests on all four release targets.
  • Bring service calls are mocked; live account access was not exercised. CodeRabbit CLI was unavailable.

Implemented in PR #6. Issues #1, #2, #3, #4 and #5 are closed.

Full changelog

v1.1.1 — Standalone downloads and MCP fixes

Choose a tag to compare

@arithmetic-zz arithmetic-zz released this 02 Nov 18:01

Standalone downloads

This release includes self-contained executables for Windows x64, Linux x64, macOS Apple Silicon, and macOS Intel. Python and the required libraries are bundled, so users do not need to install Python or run pip.

Extract the appropriate archive, copy .env.example to .env beside the executable, and enter your Bring! credentials. Configure your MCP client to launch bring-mcp-server (or bring-mcp-server.exe on Windows) directly.

  • Downloads include project and third-party license texts.
  • SHA256SUMS contains archive checksums.
  • Executables have no Developer ID/Authenticode signing or macOS notarization. Your operating system may require explicit approval before the first run.

Fixes and maintenance

  • Correct MCP isError flags for failed tool calls.
  • Support item_name and item aliases through MCP schema validation.
  • Recover cached authentication after tool and resource failures.
  • Load .env beside the standalone executable, independently of the client's working directory.
  • Bundle CA roots for HTTPS connections without relying on a developer's Python/OpenSSL installation.
  • Update runtime dependencies while retaining MCP SDK 1.x compatibility.
  • Merge the previous release fixes into main and document source/binary setup, including Codex integration.

Validation

Source tests run on Python 3.11, 3.12, and 3.13. Each platform build runs the test suite and an MCP stdio smoke test against its extracted release archive before publication.

The local macOS Apple Silicon executable was also tested live against Bring: list/resource reads, prompts, aliases, single-item operations, and batch ADD/COMPLETE/REMOVE. All temporary test items were removed and cleanup verified. Live use on other operating systems remains to be checked on user machines.

Full changelog: v1.1.0...v1.1.1

Build provenance

  • Windows x64, Linux x64 and macOS Intel downloads: GitHub Actions run 41494706391, commit d1421e5. Each platform job completed successfully.
  • macOS Apple Silicon download: GitHub Actions run 41493963291, commit 0eb7ffd. Application source, build specification, dependency requirements and bundled documentation are identical to the release tag. Later changes only normalize archive permissions and checksum line endings on other build hosts. The exact downloaded ARM executable additionally passed live Bring testing.
  • The release was assembled from these successful platform jobs; waiting/redundant jobs were cancelled. Each archive retains its actual Python and dependency versions in THIRD_PARTY_LICENSES/PACKAGES.txt.

v1.1.0

Choose a tag to compare

@arithmetic-zz arithmetic-zz released this 14 May 11:46

Highlights

  • MCP Resources: list_resources() enumerates one bring://lists/{uuid} resource per shopping list (plus the bring://lists index), so clients can pick lists by name. Falls back to index-only without credentials or network.
  • MCP Prompts: meal_plan and weekly_groceries ship as opinionated, tool-call playbooks.
  • bring-api 1.x compatibility: _as_dict() coerces dataclass responses at the boundary.
  • Singleton client + session: cached and reused; BringAuthException clears the cache so the next call re-logs in.
  • List-name cache: warmed by get_lists; get_list never auto-fetches.
  • CI: matrix now Python 3.11 / 3.12 / 3.13 with pip caching.
  • 24 unit tests covering all of the above.

Breaking-ish

  • add_item schema field is now item_uuid (canonical). Legacy uuid is still accepted at runtime for backward compatibility.

Release v1.0.1

Choose a tag to compare

@arithmetic-zz arithmetic-zz released this 13 May 22:57

Bug Fix Release

Release v1.0.0

Choose a tag to compare

@arithmetic-zz arithmetic-zz released this 13 May 22:24
Add GitHub Actions workflow: pytest on push and PR to main