Conversation
protocolHint had full sentences for HubSpot/Dynamics where every other protocol uses a terse "Kind · :port" hint — shortened to "Design files · :443" and "Web resources · :443". The publish-instantly warnings move into the forms as warn hints so they aren't lost. HubSpot's form now says plainly that no URL is needed: the private-app token identifies the portal and the api.hubapi.com base is fixed (matches the backend, which has no host field on HubSpot profiles).
There was a problem hiding this comment.
Pull request overview
This PR refines the protocol hint UX for HubSpot and Dynamics profiles by making the global protocol subtitles consistent with other protocols (terse “Kind · :port” style) while moving important “publishes instantly” warnings into the relevant profile forms. It also clarifies in the HubSpot form that no URL is required because the API base is fixed and the token identifies the portal.
Changes:
- Shorten
protocolHint(...)output for HubSpot and Dynamics to match the terse subtitle style used by other protocols. - Add in-form warn hints for HubSpot (draft vs published) and Dynamics (prefer dev/sandbox due to immediate publishing).
- Update HubSpot guidance text to explicitly state that no URL is needed.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The rail's context-menu Delete fired immediately — and the backend also wipes the profile's saved credentials from the OS keychain, with no undo. It now arms a ConfirmModal (name + address + keychain warning) and only deletes on confirm, reusing the SnippetsPanel delete pattern.
Bubble drag-and-drop reorder has existed since v1.3.16, but the only drop targets were other rows and group headers — so you couldn't drop above the first row, below the last, or drag a bubble out of a folder when no ungrouped neighbour existed (dropping on a group header appends to the group's end). Adds always-rendered drop strips (zero layout shift) at the rail top, the ungrouped section end, and each expanded group's end, routed through the same single reorderProfiles round-trip.
New optional profile.icon: an emoji/short string or a bundled Iconify key (mdi:rocket-launch), rendered in the rail bubble instead of the name monogram (profile color still applies; unknown keys fall back). The connection editor gains an Icon field with a live bubble preview and an unknown-key warning. The offline icon bundle grows from 29 to 84 icons — a curated set of personality glyphs (rocket, database, robot, cat, …) regenerated via gen-brand-icons. Backward-compatible: old profiles.json files load with icon = None.
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The server rail has always been the fastest way to eyeball your connections, but a wall of two-letter monograms all starts to look the same after connection number twenty. This PR lets each connection wear its own face — an emoji, or one of a small bundled set of Iconify glyphs (rockets, databases, cats, the usual suspects) — while leaving the color-monogram fallback intact for everyone who never touches it. Along the way it closes two rough edges in the rail's drag-and-drop: you can now drop a bubble above the first row, below the last, or out of a folder entirely, none of which had a landing spot before. Deleting a connection now asks first, because wiping saved credentials from the OS keychain is not the kind of thing you want to do on a stray click. Rounding it out, the commerce backends (HubSpot, Dynamics) got their subtitles trimmed to the terse
Design files · :443house style, with the "you don't need a URL" and "prefer a sandbox" guidance moved into proper hints where people will actually read them.Highlights
🚀or a bundled Iconify key likemdi:rocket-launch, with a live preview right in the editor.Technical changes
iconfield toConnectionProfilein bothsrc/lib/types.tsandsrc-tauri/src/profiles/mod.rs(serdeskip_serializing_if = "Option::is_none"so existing profile JSON keeps loading untouched).icon: Nonethrough every backendConnectionProfileconstructor —dropbox_authorize,onedrive_authorize,dynamics_authorize,gdrive_authorize,box_authorizeincommands.rs, plusgrant.rs,importers/mod.rs.ProfileEditor.tsx: new "Icon (optional)" field with an inline live preview; a value containing:is treated as an Iconify key (validated againstBRAND_ICONS), anything else renders as text, and an unrecognized key surfaces aHint tone="warn"while the rail falls back to the monogram.ServerRail.tsxRailBubble: resolvesprofile.iconat render — a known bundled Iconify key renders viaBrandIcon, an emoji/short string renders as text (text-[16px]), otherwise the existingmonogram(p.name)fallback stands.scripts/gen-brand-icons.mjswith ~55mdi"personality" icons (rocket, database, server, cat, ghost, penguin, etc., all Apache-2.0) and regeneratedsrc/lib/brandIconData.ts.DropStripcomponent inServerRail.tsx— a thin always-rendered strip (so rows never shift mid-drag) that shows a faint line while dragging and an accent line when it's the active drop target.dropTargetunion with{ kind: "sectionEnd"; group }and{ kind: "top" }, addedonStripDragOver, and taughtcommitDropto resolve them:top→ ungrouped at index 0;sectionEndwithundefinedgroup → end of the ungrouped list (also the "leave a folder" path);sectionEndwith a named group → appended to that group.pendingDeleteinstead of callingdeleteProfiledirectly, and aConfirmModal(destructive, showing the connection name + address) commits the deletion, calling out the OS-keychain credential wipe.ProfileEditor.tsxcommerce copy: HubSpot hint rewritten to state no URL is needed (token identifies the portal,api.hubapi.comis fixed) with the required scopes; the "prefer draft/sandbox — writes deploy instantly" cautions for HubSpot and Dynamics moved intoHint tone="warn"blocks;protocolHintsubtitles forhubspot/dynamicsshortened toDesign files · :443/Web resources · :443.mainalso shows version numbers dropping1.3.32→1.3.29across theCargo.tomlfiles,tauri.conf.json, and the README badge — that's release-version drift (mainauto-bumps on each release), not a change from this branch, and resolves whendevmerges up.