Changelog

What's new in Straktur. Updated when we ship.

v0.7.0

Saved views, serverless rate limiting, and tests for silent bugs

Users can now save and share filtered list views, auth rate limiting actually works on serverless, and a new test suite covers the logic that breaks without anything looking broken. Most of these changes shipped first in production apps built on Straktur and were backported once they proved generic.

  • Saved views for lists

    Save any list state — filters, search, sort — as a named view, pin it in the sidebar, share it with the team. "Overdue invoices, sorted by client" becomes one click instead of five filter selections nobody remembers. A view is just a named link, so there's no database-to-page sync for your AI agent to get wrong, and wiring views into a new list is one config entry.

  • Auth rate limiting that works on serverless

    Default in-memory rate limit counters reset with every warm lambda, so on Vercel the limits most apps think they have don't exist. Counters now live in the database, public file routes get per-IP caps, and a bundled cleanup job keeps the table small. You don't configure any of this — it's the default.

  • Lists that can't drop rows

    Postgres returns rows tied on a sort value in arbitrary order, so paged lists could duplicate some rows and silently skip others. Fixed in the query pattern itself — every list your AI agent generates is immune, without the agent knowing the bug exists.

  • Scheduled jobs as a golden path

    Cron jobs now have a decided pattern: a route, one line of config, a secret. When you tell your agent "add a nightly cleanup job", it copies a working reference instead of inventing infrastructure.

  • A test suite for logic that breaks silently

    54 tests over locale number parsing, URL state, and permission checks — the places where a bug still renders fine and is just wrong. No DOM, no database, runs in seconds, so your agent can verify its own changes cheaply.

v0.6.0

Social login, magic links, and production safety

Two new ways to sign in — Google/GitHub social login and passwordless magic links — and a P0 deploy footgun is gone. Exports finally respect your language and Excel's date format, PDF previews let you copy text, and a few DataTable edge cases got tightened.

  • Social login: Google and GitHub

    Drop provider credentials into your env and sign-in buttons appear on /login and /register automatically — no UI work needed. Driven by the authMethods config, so you can mix and match what's enabled per project.

  • Magic-link sign-in

    Passwordless authentication for B2B tools where nobody wants another password. The login page gets Password | Magic link tabs, the email template is bilingual out of the box. Off by default, one config flag to enable.

  • Safer production deploys

    vercel-build no longer auto-runs the destructive database migration step on every deploy. Database state stays human-controlled, so a stale main branch can't silently drop your production tables. Migrations run locally with interactive prompts where they belong.

  • DataTable exports, localized

    Headers now pick up your t() translations automatically instead of leaking English accessor keys. A new format option emits clean YYYY-MM-DD for date columns — finally usable in Excel without a re-format step.

  • PDF preview: selectable text

    The preview dialog used to render PDFs as canvas-only, so you couldn't grab a line of text out of an invoice or contract. Now overlays a transparent text layer so selection and copy work like in any native PDF viewer.

v0.5.0

Locale-aware money, filter bar, and scroll restoration

Polish your app's polish. Numbers now respect the user's locale — commas in Polish, dots in English — across every input and table. The filter bar gets a Linear-style refresh that keeps things tidy, and your scroll position survives the back button.

  • Locale-aware money & numeric input

    A single golden path for numeric input and display across the app. Polish users can finally type "693,52" and have it just work — the backend stores canonical numbers, the frontend shows the right separator.

  • DataTable filter bar with active-only chips

    Only active filters show as chips. Inactive ones tuck behind a single "+ Filter" picker. Pin key filters with one config flag if you want them always visible.

  • Scroll restoration on back navigation

    Scroll a long list, open a detail page, hit back — you land exactly where you were instead of jumping to the top. Works across the dashboard layout and inside DataTables.

  • Viewer role wired into every example page

    Read-only viewer role now flows through navigation, detail pages, and list actions. Demos correctly hide what viewers shouldn't see, so downstream features inherit the pattern automatically.

v0.4.0

PDF viewer, date range filter, role-based navigation

Three big additions: a reusable PDF preview component, a date range filter for tables with built-in presets, and role-based navigation that hides what users shouldn't see — including in the command palette.

  • Reusable PDF viewer component

    Drop a PDF preview dialog anywhere you need to show a document — continuous scroll, zoom, page indicator, download button, all built in.

  • DataTable date range filter

    Quick presets like "last 7 days" and "this month" plus a custom calendar picker. Filter state lives in the URL so ranges survive reloads and shareable links.

  • Role-based navigation

    Mark any nav item with a minimum role and it disappears for lower-tier users. The command palette respects the same rules — previously it could surface pages users couldn't actually open.

  • Email attachments end-to-end

    Send emails with file attachments through both Resend and SMTP providers. Storage adapters gained matching primitives for fetching and uploading files programmatically.

  • Polish translations for the Users module

    Every hardcoded English string in the Users UI replaced with i18n keys. Brings Users in line with the rest of the app after the full i18n rollout last month.

Rich text inline editing and a documentation push

Inline rich-text editing lands on detail pages, comments arrive on contact records, and the docs site gets a major expansion — seven new recipe pages with full code examples and annotated screenshots.

  • Inline rich text editing

    WYSIWYG inline editing for any rich-text field, powered by Tiptap. Currently used on client notes and contact sheets.

  • Comments on contact detail pages

    The polymorphic comments system now plugs into contacts. Drop it onto any entity with two props.

  • Seven new recipe pages

    Documentation expansion with full code examples and annotated screenshots: add-relation, add-filter, add-bulk-action, add-dictionary, add-translations, file-upload, customize-navigation.

  • Sub-pages for client list

    Lead and Active sub-pages filter clients by status without separate routes. Navigation config gained children support and colored dots for visual categorization.

Internationalization, comments, and an Airtable migration path

A big month. Full multi-language support shipped, a polymorphic comments system landed, the DataTable got Airtable-style sticky columns and async filters, and we built an AI-powered Airtable migration pipeline so you can move your data in minutes instead of weeks.

  • Full internationalization

    Complete multi-language support with English and Polish out of the box. Locale lives in the user's profile, not in the URL. Translated emails, navigation, DataTable columns, even dictionary values — and ICU plurals work end-to-end.

  • DataTable, refined

    Sticky headers and columns, async server-side filters for large datasets, embedded tables inside detail page tabs. Behaves like Airtable, looks like your app.

  • Airtable migration pipeline

    Two AI commands — one analyzes your Airtable base, the other generates the migration scripts. You don't need to know the Airtable API or Drizzle ORM.

  • Comments and rich text

    Polymorphic comments that attach to any entity, with a Tiptap-powered rich text editor. Indicator badges in tables show comment counts at a glance.

  • User profiles and avatars

    Avatar upload with preview and persistence, editable first and last name, a dedicated profile page, plus a reusable UserCell component for any table.