Repository navigation
Release 1.6.0 — connection revamp, Hugeicons, trial gate & UI polish - #38
Merged
Merged
Conversation
🦋 Changeset detectedLatest commit: eb86a63 The changes in this PR will be included in the next version bump. Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
- Replace the floating connection dialog with a full-window screen (fixed inset-0) built on the bits-ui Dialog primitive, keeping focus-trap / Escape / scroll-lock. Roomier, centered form column, no more Type-dropdown overflow. - Add DbIcon.svelte + db-icons.js: real monochrome brand marks (Postgres, MySQL, MariaDB, SQLite, CockroachDB, ClickHouse, DuckDB, Cloudflare, BigQuery, Turso, Neon, Supabase, PlanetScale, Prisma) rendered with currentColor. SQL Server + unknowns fall back to a filled cylinder. Paths sourced from simple-icons, inlined so no runtime dependency. - Use brand marks in the saved-connection list, the Type dropdown (trigger + items), and the provider sign-in panel. - Revamp ProviderConnect idle/connected states with the brand mark and cleaner typography; drop the generic database glyph. - Clarify MS SQL Server 'Encrypt' / 'Trust server certificate' options with helper text; gate Trust on Encrypt being enabled.
Fixes the asymmetric 'floating in a void' full-window layout — the form now sits in a centered rounded card with the name/type as its header, balanced in the canvas. Inputs go h-9 / rounded-lg with a clearer focus ring; inline Parse/Browse buttons align to match.
- Add iconSet setting ('lucide' | 'hugeicons') to the settings store,
persisted + applied (data-icon-set attribute + reactive appIconSet).
- New <Icon name=…> wrapper renders the active family via a shared
icon-registry; falls back to Lucide when a name has no Hugeicons
mapping, so switching sets never leaves a hole. ~45 common icons
mapped so far — extend by adding registry entries.
- Add an 'Icon set' selector to Settings with a live per-family preview.
- Migrate the connection screen's chrome glyphs to <Icon> as the first
fully-switchable surface.
- Deps: @hugeicons/svelte, @hugeicons/core-free-icons.
…ring - Add ~20 more common glyphs (chevrons, cloud, server, command, sun/moon, wifi, lock-open, archive, etc.) to the shared icon registry so more surfaces can adopt <Icon> without name gaps. - Bump the shared Input focus ring 1px → 2px to match the connection screen and read more intentional app-wide.
- Rebuild the 4-step onboarding to match the connection screen's language: refined ambient glow + faint dot grid, a labeled segmented stepper, balanced type, subtle fly/stagger motion. - Step 1 shows real database brand marks (DbIcon) in the connect preview and a 'Works with' brand strip; preview panels get app-window chrome. - Step 2 toolkit grid gets hover-lift cards; ⌘K hint in a kbd chip. - Route all glyphs through <Icon>, so onboarding follows the icon-set toggle too; extend the registry with the onboarding glyphs. - Same contract (open/onconnect/onsample, license step, stroke:onboarded).
- Connection form: drop the floating centered card. The form is now a left-aligned column (no border/bg), top-anchored with generous padding — reads as a real settings form, not an AI-vibe-coded card. - Footer actions span to the window edge as a proper action bar. - ProviderConnect (Neon/Supabase/PlanetScale/Prisma): remove the centered bordered card; left-aligned brand tile + heading + full-width sign-in. - CloudflareLogin: drop the off-brand amber cards; neutral left-aligned layout, real D1 brand mark, primary-tinted selection, bigger search.
navRow now takes an icon name and renders through <Icon>, so the Extensions / MCP / AI / License / About rows visibly change between Lucide and Hugeicons — immediate feedback in the dialog where the toggle lives. Adds 'info' to the registry.
…ar alignment - Onboarding step 1: drop the two-column tablist + preview clutter for a clean 2x2 feature grid; remove now-dead carousel state. - LicenseActivation: switch to <Icon>, premium h-11 input with focus ring, and fix the washed-out disabled button (intentional muted state, not a faded primary). - Empty state (no connection): engine chips now use real brand marks; larger CTA. - Sidebar header: split into two h-9 rows so its dividers line up with the tab bar + table toolbar on the right (fixes the subtle mismatch).
… app-wide Migrate Sidebar, TableToolbar, TabBar, CommandPalette and StatusBar off direct @Lucide imports onto the shared <Icon> wrapper, so flipping the icon-set setting visibly changes icons across the whole working view. Value-passed icons (connIcon(), tabIcon(), driverIcon(), command + tool menu 'icon:' fields) now carry kebab name strings and render via <Icon>. Registry extended (~38 new mappings) to cover every chrome glyph; all names verified present, so nothing falls back unintentionally.
…, fix cell-edit font - macOS: the frameless window had no app menu, so WKWebView text fields lost ⌘Z/⌘⇧Z/⌘X/C/V/⌘A and ⌥⌫ word-delete. Install the standard menu (Menu::default) so native editing works in every input/textarea/cell editor. (cargo check passes.) - Input primitive: h-8 → h-9, px-3, subtle hover border, smoother transition — more refined across all forms/dialogs. - DataTable: cell editor rendered at text-ui-sm while the grid draws text-ui-xs, so the font grew on edit. Match to text-ui-xs + leading-none.
…stgres case-fold error - Map 'table-2' Hugeicons glyph to Table02Icon (data-grid look) instead of Table01Icon (which read as furniture) — Image #21. - Sidebar header: drop the divider between the schema row and the filter row; only the header's bottom border remains — Image #22. - SQL console: when a query fails with relation/column "does not exist", show a hint that Postgres folds unquoted names to lowercase and to quote mixed-case identifiers (autocomplete already inserts the quoted form) — Image #23.
Rebuild the Settings dialog to the Zed-style layout from the reference: - Left rail: 'Search settings…' box + category nav (General, Appearance, Integrations, About) with active highlight. - Right pane: section labels with a hairline underline, then full-width rows — bold title + muted description on the left, control on the right, hairline dividers between (no more bordered cards). - Search filters rows live across every category (flat results). - Toggles switch to the primary accent when on. Integrations/About use action-button rows (Open / Configure / Manage / View). Widened the dialog to a proper settings surface.
Hugeicons Table01/02/03 are all furniture-style (tabletop + legs). Map 'table-2' to GridTableIcon — a rounded rect with row/column lines — so the sidebar table rows, tabs, and everywhere else read as a data table.
- TRIAL_DAYS 5 → 17. - Trial start is mirrored to <app-data>/.trial AND <home>/.stroke/trial; the earliest timestamp wins and both are repaired on read. A reinstall wipes app-data but the home copy survives, so the trial can't be reset by uninstall/reinstall. (Server-side device registration remains the path for full-disk-wipe enforcement; API scaffolding already exists.) - LicenseGate now hard-blocks: when the trial is over with no valid license, the entire app is replaced by a non-dismissible activation screen (activate or quit). Loads local status on first paint, then phones home. cargo check + frontend build pass.
…ader - The results table was width:totalWidth, so with few columns it left a big empty 'hole' to the right. Now w-full + min-width + a flexible filler column so the grid always fills the pane; wide diffs still scroll horizontally. - Sticky header cells were transparent, so scrolled rows bled through it. Give every header cell an opaque bg-background. - Hide the junk 'null' column type label; subtle hover highlight on unchanged rows (status tints preserved).
On launch, when not licensed, phone home to POST device_id (+ local start) to the trial endpoint. The server keeps the EARLIEST start per device and returns it; we mirror that back to the local .trial files. So a reinstall or disk wipe can't grant a fresh trial — the server remembers the device. Offline is a silent no-op (local grace). cargo check passes.
The column visibility control used a furniture-ish 'columns-3' glyph in the Hugeicons set. Give it a clear eye (eye when all visible, eye-off when some columns are hidden) + a 'Show / hide columns' label. Keeps the hidden-count badge.
window.__TAURI__ isn't exposed (withGlobalTauri off), so add a dev-only
window.__stroke = { status, expireTrial(daysAgo), resetTrial } that invokes
the debug commands and refreshes the license store — so trial states can be
tested from the console without enabling the global Tauri bridge in prod.
TrialExpiredScreen wrapped the activation in a bordered card, giving a box-in-a-box look. Render LicenseActivation 'naked' (just the key field + button, no card), and match the naked button height to the input (h-11).
# Conflicts: # package.json # src-tauri/tauri.conf.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 1.6.0. Builds on the database-provider sign-in work with a broad UI revamp, a switchable icon system, and a proper licensing/trial gate.
Connections
DbIcon(inlined from simple-icons, no runtime dep).Icon system
<Icon>wrapper + registry, Lucide fallback). Whole chrome migrated (Sidebar, TableToolbar, TabBar, CommandPalette, StatusBar) so the toggle applies app-wide.UI polish
Licensing & trial (1.6.0 headline)
POST /api/license/trialkeyed bydevice_id(see stroke-web PR adding cool features #1).Platform
Notes
cargo check+ frontendvite buildgreen. Requires stroke-web PR adding cool features #1 deployed for server-side trial enforcement.