Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Tags: QuackbackIO/quackback

Tags

v0.3.9

Toggle v0.3.9's commit message
chore: bump version to v0.3.9

v0.3.8

Toggle v0.3.8's commit message
chore: bump version to v0.3.8

v0.3.7

Toggle v0.3.7's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: cursor pagination and date filtering for search (#61)

Fix cursor-based pagination failing on page 2+ by converting TypeID to
UUID and Date to ISO string before interpolating into SQL tuple
comparisons. Add dateFrom/dateTo params to MCP search tool and public
API for date-range filtering. Add composite (role, created_at) index
on principal table.

v0.3.6

Toggle v0.3.6's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: SEO meta tags, sitemap, ESLint conventions, and OpenAPI workflow (

#60)

* feat: add SEO meta tags, sitemap/robots.txt, and enforce import conventions

- Add OG/Twitter meta tags and canonical URLs to all portal routes
- Generate dynamic sitemap.xml with public posts and changelog entries
- Add robots.txt blocking admin/auth/api paths
- Add ESLint rules enforcing @/lib/server/db and @/lib/shared/db-types
  imports over direct @quackback/db usage
- Add max-lines and lib-cannot-import-components lint rules
- Migrate all existing imports to canonical paths
- Slim down CLAUDE.md to concise essentials

* chore: bump version to 0.3.6

* feat: add OpenAPI spec generation script and release workflow

* fix: filter private boards from sitemap and remove arbitrary post limit

* refactor: follow sitemap best practices - lastmod, index pagination, drop priority/changefreq

- Replace priority/changefreq with lastmod (W3C date) - crawlers ignore the former
- Auto-generate sitemap index when URLs exceed 50,000 protocol limit
- Extract pure sitemap builders into testable module with 18 unit tests
- Filter private/deleted boards from sitemap (addresses Codex P1)
- Remove arbitrary 5,000 post cap (addresses Codex P2)

v0.3.5

Toggle v0.3.5's commit message
chore: bump version to 0.3.5

v0.3.4

Toggle v0.3.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: use config.baseUrl instead of request.url to prevent mixed conte…

…nt errors (#55)

Behind Cloudflare TLS termination, request.url arrives as http:// causing
the widget iframe, RSS feed, and API docs to generate http:// URLs on
HTTPS sites.

Co-authored-by: Claude Opus 4.6 <[email protected]>

v0.3.3

Toggle v0.3.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: responded/unresponded filter crashes with wrong column reference (

…#54)

* fix: responded/unresponded filter query references wrong table columns

Drizzle's relational query builder (db.query.posts.findMany) rewrites
all column references to use the outer table's alias. Using
${comments.postId} inside a sql`` subquery caused it to generate
"posts"."post_id" instead of "comments"."post_id", crashing with
'column posts.post_id does not exist'.

Use raw SQL column names for the comments table in the EXISTS subquery
to prevent Drizzle from rewriting them.

Closes #46

* fix: responded/unresponded filter crashes with wrong column reference

Drizzle's relational query builder rewrites column references in sql``
template literals to use the outer table's alias. This caused
${comments.postId} to generate "posts"."post_id" instead of
"comments"."post_id", crashing with 'column posts.post_id does not
exist' when using the Responded/Unresponded filter.

Use raw SQL column names for comments table in EXISTS subqueries to
prevent Drizzle from rewriting them.

Also rename "Response" filter label to "Team response" for clarity.

Closes #46

v0.3.2

Toggle v0.3.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: use server-resolved BASE_URL via router context for settings pag…

…es (#44)

The previous fix (#43) switched to window.location.origin on the client,
which breaks reverse proxy deployments where BASE_URL differs from the
browser origin. Thread BASE_URL through the bootstrap server function
into the router context so it always reflects the configured value.

v0.3.1

Toggle v0.3.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: use shared getBaseUrl for MCP and widget settings URLs (#43)

The loader-based server config import for baseUrl didn't work during
client-side navigation (server config unavailable on client). Switch
to the shared getBaseUrl() from lib/shared/routing which uses
window.location.origin on the client and process.env.BASE_URL on
the server.

v0.3.0

Toggle v0.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #40 from QuackbackIO/fix/mcp-settings-urls

fix: show full URLs on MCP settings page