From 66e76340323991c42aafdff00e01a6186a6512cc Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Wed, 4 Nov 2026 13:39:44 -0800 Subject: [PATCH 1/4] improvement(links): open go/ links alongside sim/ and call the page Links --- .../content/docs/browser-extension/index.mdx | 6 +++--- apps/docs/content/docs/search/sim-links.mdx | 14 ++++++------- apps/extension/DESIGN.md | 6 +++--- apps/extension/README.md | 8 ++++---- apps/extension/scripts/build.ts | 17 +++++++++++----- apps/extension/scripts/test-e2e.ts | 20 ++++++++++++++----- apps/extension/src/background.ts | 2 +- apps/extension/src/omnibox.ts | 6 +++--- apps/extension/src/search-recovery-dialog.tsx | 6 +++--- apps/extension/src/search-recovery.ts | 2 +- apps/sim/app/extension/create-link/page.tsx | 4 ++-- .../organization-sidebar/navigation.ts | 2 +- .../links/browser-shortcuts-modal.tsx | 17 ++++++++-------- .../app/o/[organizationId]/links/columns.ts | 2 +- .../app/o/[organizationId]/links/loading.tsx | 2 +- .../links/managed-bookmarks.tsx | 2 +- .../sim/app/o/[organizationId]/links/page.tsx | 2 +- .../[organizationId]/links/sim-link-modal.tsx | 4 ++-- .../o/[organizationId]/links/sim-links.tsx | 6 +++--- .../[organizationId]/[name]/page.tsx | 4 ++-- apps/sim/app/sim-links/recover/route.ts | 5 +++-- apps/sim/app/sim/[[...path]]/page.tsx | 8 ++++---- .../sim-links-empty-state.tsx | 2 +- .../message-sources/message-sources.test.tsx | 2 +- apps/sim/lib/settings/sections.ts | 2 +- apps/sim/lib/sim-links/repository.ts | 3 ++- apps/sim/lib/sim-links/validation.ts | 8 ++++---- apps/sim/scripts/test-sim-links-e2e.ts | 2 ++ 28 files changed, 92 insertions(+), 72 deletions(-) diff --git a/apps/docs/content/docs/browser-extension/index.mdx b/apps/docs/content/docs/browser-extension/index.mdx index 8b0d35cfeca..b10f20790c6 100644 --- a/apps/docs/content/docs/browser-extension/index.mdx +++ b/apps/docs/content/docs/browser-extension/index.mdx @@ -1,6 +1,6 @@ --- title: Sim browser extension -description: Ask Sim about the page you’re reading, share a screenshot, and open your team’s Sim Links from Chrome. +description: Ask Sim about the page you’re reading, share a screenshot, and open your team’s go/ links from Chrome. --- [Install Sim for Chrome](https://chromewebstore.google.com/detail/sim/oanlcahddodnjpdoopcpjlcageejjpmg) to ask questions about a page without leaving it. Open Chrome’s **Extensions** menu and pin **Sim** to keep it one click away. @@ -27,9 +27,9 @@ If Chrome needs access to a new tab, the sidebar shows the shortcut assigned in Share the chat extension’s install link with your team. In managed Chrome, an admin can [allow the extension for an organizational unit](https://support.google.com/chrome/a/answer/6306504) so people can install it themselves. -If your organization has [Sim Links](/search/sim-links), type `sim`, press **Space**, and enter part of a link name for suggestions. To open a shortcut by typing it directly, include the trailing slash, as in `sim/handbook/`. Teams that already use an internal host named `sim` should keep that hostname conflict in mind: the chat extension routes those navigations to Sim. +If your organization has [Links](/search/sim-links), type `sim`, press **Space**, and enter part of a link name for suggestions. To open a shortcut by typing it directly, include the trailing slash, as in `go/handbook/` or `sim/handbook/`. Teams that already use an internal host named `go` or `sim`, or another go-links extension, should keep that conflict in mind: the extension routes those navigations to Sim, and when two extensions redirect the same address, Chrome uses the most recently installed one. -In version 0.1.3 or later, **+ → Browser shortcuts** can recover explicit `sim/handbook` searches on Google, Bing, DuckDuckGo, and Yahoo. Enable your provider and approve the site access shown by Chrome. This leaves ordinary searches and your default search engine unchanged. See [shortcut setup and supported inputs](/search/sim-links#open-links-from-the-address-bar). +In version 0.1.3 or later, **+ → Browser shortcuts** can recover explicit `go/handbook` and `sim/handbook` searches on Google, Bing, DuckDuckGo, and Yahoo. Enable your provider and approve the site access shown by Chrome. This leaves ordinary searches and your default search engine unchanged. See [shortcut setup and supported inputs](/search/sim-links#open-links-from-the-address-bar). ## Page access and privacy diff --git a/apps/docs/content/docs/search/sim-links.mdx b/apps/docs/content/docs/search/sim-links.mdx index 3520c7c0eac..a1d11b9a28b 100644 --- a/apps/docs/content/docs/search/sim-links.mdx +++ b/apps/docs/content/docs/search/sim-links.mdx @@ -1,11 +1,11 @@ --- -title: Sim Links -description: Short sim/ links that take everyone in your organization to the right page +title: Links +description: Short go/ and sim/ links that take everyone in your organization to the right page --- -Sim Links are short names for pages your team opens often, like `sim/handbook` or `sim/okta`. Every member of your organization can use them, with or without a Search seat. +Links are short names for pages your team opens often, like `sim/handbook` or `sim/okta`. With Sim for Chrome, `go/handbook` opens the same link, so the go/ habit from other companies works too. Every member of your organization can use them, with or without a Search seat. -Open **Sim Links** in the organization sidebar to see your organization's links. Search by name, destination, or description, or use **Sort → Opens** to see the 50 most opened links. +Open **Links** in the organization sidebar to see your organization's links. Search by name, destination, or description, or use **Sort → Opens** to see the 50 most opened links. ## Open a link @@ -15,13 +15,13 @@ Names ignore case and punctuation, so `sim/Team-Handbook` and `sim/teamhandbook` ## Open links from the address bar -In Sim Cloud, open **Sim Links → Browser shortcuts** to install [Sim for Chrome](https://chromewebstore.google.com/detail/sim/oanlcahddodnjpdoopcpjlcageejjpmg) in your work profile. Type `sim` in Chrome’s address bar, press **Space**, and enter part of a link name. Chrome shows matching links, most opened first. Unlisted links can still open by name. +In Sim Cloud, open **Links → Browser shortcuts** to install [Sim for Chrome](https://chromewebstore.google.com/detail/sim/oanlcahddodnjpdoopcpjlcageejjpmg) in your work profile. Type `sim` in Chrome’s address bar, press **Space**, and enter part of a link name. Chrome shows matching links, most opened first. Unlisted links can still open by name. -To open links as `sim/handbook`, select **Enable sim/ shortcuts** in that dialog once, using the Chrome profile where Sim is installed. This opens your Sim Links directory in a new tab and lets Chrome remember the short host in that profile. If Chrome still sends a shortcut to search, enter `http://sim/handbook` or `sim/handbook/` with a trailing slash. Use **Copy link** in Sim to share an address that also works without the extension. +To open links as `go/handbook` or `sim/handbook`, select **Enable go/ shortcuts** and **Enable sim/ shortcuts** in that dialog once each, using the Chrome profile where Sim is installed. Each opens your Links directory in a new tab and lets Chrome remember the short host in that profile. If Chrome still sends a shortcut to search, enter `http://sim/handbook` or `sim/handbook/` with a trailing slash. Use **Copy link** in Sim to share an address that also works without the extension. In Sim for Chrome 0.1.3 or later, open the extension sidebar’s **+ → Browser shortcuts** and enable your search provider to recover `sim/handbook` when Chrome treats it as a search. Approve access to the exact sites shown. This is optional and supports Google (`google.com`), Bing, DuckDuckGo, and Yahoo. Sim remembers the choice in this Chrome profile. Ordinary searches still use your search engine; its default is unchanged. -Recovery matches a whole `sim/` shortcut, including simple slash-separated values such as `sim/jira/123`. For values containing spaces, query parameters, unsupported search domains, or a managed browser that blocks site access, use `sim` + **Space** or the full `https://www.sim.ai/sim/` address. Turn recovery off in **Browser shortcuts**; this keeps the site permission, which you can remove through **Site access** or Chrome’s extension settings. +Recovery matches a whole `go/` or `sim/` shortcut, including simple slash-separated values such as `go/jira/123`. For values containing spaces, query parameters, unsupported search domains, or a managed browser that blocks site access, use `sim` + **Space** or the full `https://www.sim.ai/sim/` address. Turn recovery off in **Browser shortcuts**; this keeps the site permission, which you can remove through **Site access** or Chrome’s extension settings. If `sim` + **Space** sends link names to your search engine even when the address bar shows **Sim**, a Chrome site search may already use the `sim` shortcut. Enter `http://sim/handbook` to open the link directly. To restore suggestions, temporarily turn off the Sim extension, rename the old shortcut in `chrome://settings/searchEngines`, then turn Sim back on. If your organization manages the shortcut, ask your administrator to rename it. diff --git a/apps/extension/DESIGN.md b/apps/extension/DESIGN.md index b2fd6ea2244..bff44d7135d 100644 --- a/apps/extension/DESIGN.md +++ b/apps/extension/DESIGN.md @@ -55,14 +55,14 @@ other workspace resources or browser-control tools. - Required browser capabilities: side panel, scripting, active tab, context menus, and short-lived session storage for selection handoff. Required host access is - limited to the configured Sim origin and to `http(s)://sim/*`, which exists only so - one static redirect rule can send top-level navigations to that host to the Sim link resolver. + limited to the configured Sim origin and to `http(s)://sim/*` and `http(s)://go/*`, which exist + only so one static redirect rule can send top-level navigations to those hosts to the link resolver. - Other HTTP(S) origins are optional grants requested for the current site from a user gesture. Each grant can be revoked. Keeping the panel open is not a grant to read every subsequently selected tab. - No history, bookmarks, cookie API, debugger, native messaging, external messaging, or arbitrary remote code execution. The only network interception is the static - `sim/` redirect rule above. + `sim/` and `go/` redirect rule above, plus opt-in search recovery. - The only background network request is the `sim` address-bar keyword: after `sim` and Space, the text typed before the first `/` or `?` is sent to the configured Sim origin with the signed-in session to suggest matching Sim links, diff --git a/apps/extension/README.md b/apps/extension/README.md index 28584cfb483..7a898a58669 100644 --- a/apps/extension/README.md +++ b/apps/extension/README.md @@ -4,7 +4,7 @@ The Chrome extension attaches an explicitly captured page or selection to the ex [User and administrator guide](https://docs.sim.ai/browser-extension) -The keyboard shortcut prefers highlighted text and preserves the draft when a selection cannot be read. Chrome’s **Extensions → Keyboard shortcuts** page controls the binding per profile. A link’s context menu opens the existing Sim Links creation form with a reviewed destination; only selecting **Create** writes a link. +The keyboard shortcut prefers highlighted text and preserves the draft when a selection cannot be read. Chrome’s **Extensions → Keyboard shortcuts** page controls the binding per profile. A link’s context menu opens the existing Links creation form with a reviewed destination; only selecting **Create** writes a link. ## Build and load @@ -29,10 +29,10 @@ SIM_EXTENSION_DEV=1 SIM_EXTENSION_ORIGIN=http://localhost:3000 bun run --cwd app ## Data and permissions -- Required capabilities: `activeTab`, `scripting`, `sidePanel`, `storage`, `contextMenus`, `declarativeNetRequestWithHostAccess`, and access to the configured Sim origin and to `http(s)://sim/*`. -- Type `sim`, press Space, enter the name, and press Enter to open an organization's [Sim link](https://docs.sim.ai/search/sim-links). Chrome can treat bare `sim/` as a search before the redirect rule runs. Typing `http://sim/` once lets Chrome learn the short host in that profile. A trailing slash (`sim//`) also selects navigation without relying on that history. A single static redirect rule rewrites top-level navigations to `http(s)://sim/*` to `/sim/*` with the path and query unchanged. The `sim` host permission exists only for that rule: every navigation to that host is redirected before it loads, and no other request is matched or observed. An organization that already serves an intranet host named `sim` should not install this build, since its links would be redirected to Sim. +- Required capabilities: `activeTab`, `scripting`, `sidePanel`, `storage`, `contextMenus`, `declarativeNetRequestWithHostAccess`, and access to the configured Sim origin and to `http(s)://sim/*` and `http(s)://go/*`. +- Type `sim`, press Space, enter the name, and press Enter to open an organization's [Sim link](https://docs.sim.ai/search/sim-links). `go/` opens the same link, for people used to go links elsewhere. Chrome can treat bare `go/` or `sim/` as a search before the redirect rule runs. Typing `http://go/` once lets Chrome learn the short host in that profile. A trailing slash (`go//`) also selects navigation without relying on that history. A single static redirect rule rewrites top-level navigations to `http(s)://sim/*` and `http(s)://go/*` to `/sim/*` with the path and query unchanged. The `sim` and `go` host permissions exist only for that rule: every navigation to those hosts is redirected before it loads, and no other request is matched or observed. An organization that already serves an intranet host named `sim` or `go` should not install this build, since its links would be redirected to Sim. When another extension (such as another go-links tool) also redirects `go/`, Chrome applies the most recently installed extension's rule. - The `sim` address-bar keyword (`sim`, then Space) lists matching Sim links while you type and opens what you enter through the same resolver. For these suggestions, the background worker sends the text typed before the first `/` or `?`, and nothing else, unless that text contains a space (a search) or is longer than a link name can be, to `/api/sim-links/suggestions` with the signed-in session, and the extension's content security policy allows connections to that origin alone. Unlisted links are never suggested. -- **+ → Browser shortcuts** separately opts into recovery for exact Google, Bing, DuckDuckGo, or Yahoo HTTPS search hosts. After a direct Chrome permission grant, dynamic request rules redirect only top-level GET requests with one query parameter containing a whole `sim/` shortcut. Only that value reaches `/sim-links/recover`, which validates it and redirects to the existing authenticated resolver. Ordinary search terms, additional search parameters, subframes, and unsupported inputs are not forwarded. Chrome applies these rules without an extension search-URL observer. Turning a provider off removes its rules while preserving site access; revoking access clears its recovery choice. This does not enable page reference or change the default search provider. +- **+ → Browser shortcuts** separately opts into recovery for exact Google, Bing, DuckDuckGo, or Yahoo HTTPS search hosts. After a direct Chrome permission grant, dynamic request rules redirect only top-level GET requests with one query parameter containing a whole `go/` or `sim/` shortcut. Only that value reaches `/sim-links/recover`, which validates it and redirects to the existing authenticated resolver. Ordinary search terms, additional search parameters, subframes, and unsupported inputs are not forwarded. Chrome applies these rules without an extension search-URL observer. Turning a provider off removes its rules while preserving site access; revoking access clears its recovery choice. This does not enable page reference or change the default search provider. - Optional HTTP/HTTPS site access is requested only by a menu action naming that site. Chrome's `activeTab` access is temporary and does not follow arbitrary new sites. - Page capture runs on demand in Chrome's isolated world. It excludes editable fields, inputs, hidden elements, scripts, and embedded documents. It reads only the top frame. PDF viewers and canvas documents may have no accessible text. - Extraction stops at 50,000 text characters, 150,000 serialized UTF-8 bytes, 15,000 visited nodes, or 150ms. The composer exposes truncation. diff --git a/apps/extension/scripts/build.ts b/apps/extension/scripts/build.ts index 7bd61621109..e7f725332cc 100644 --- a/apps/extension/scripts/build.ts +++ b/apps/extension/scripts/build.ts @@ -90,15 +90,16 @@ for (const [size, file] of [ await cp(resolve(root, '../sim/public/favicon', file), resolve(dist, `icon-${size}.png`)) } /** - * Only requests to the short host reach this rule. Chrome can classify bare `sim/` as a - * search before navigation. Preserve the path and query for actual short-host navigations. + * Only requests to the short hosts reach this rule: `go/` is the habit people bring from other + * companies, `sim/` our own. Chrome can classify a bare `go/` as a search before navigation. + * Preserve the path and query for actual short-host navigations. */ const simLinkRules = [ { id: 1, priority: 1, action: { type: 'redirect', redirect: { regexSubstitution: `${origin.origin}/sim/\\1` } }, - condition: { regexFilter: '^https?://sim/(.*)$', resourceTypes: ['main_frame'] }, + condition: { regexFilter: '^https?://(?:sim|go)/(.*)$', resourceTypes: ['main_frame'] }, }, ] await writeFile(resolve(dist, 'sim-links.json'), JSON.stringify(simLinkRules, null, 2)) @@ -110,7 +111,7 @@ await writeFile( name: development ? 'Sim (Development)' : 'Sim', version: packageJson.version, description: - "Ask Sim about the page you are reading, and open your organization's sim/ links from the address bar.", + "Ask Sim about the page you are reading, and open your organization's go/ links from the address bar.", minimum_chrome_version: '120', permissions: [ 'activeTab', @@ -120,7 +121,13 @@ await writeFile( 'contextMenus', 'declarativeNetRequestWithHostAccess', ], - host_permissions: [`${origin.origin}/*`, 'http://sim/*', 'https://sim/*'], + host_permissions: [ + `${origin.origin}/*`, + 'http://sim/*', + 'https://sim/*', + 'http://go/*', + 'https://go/*', + ], declarative_net_request: { rule_resources: [{ id: 'sim_links', enabled: true, path: 'sim-links.json' }], }, diff --git a/apps/extension/scripts/test-e2e.ts b/apps/extension/scripts/test-e2e.ts index 8d1da01cd73..3025e39c0c7 100644 --- a/apps/extension/scripts/test-e2e.ts +++ b/apps/extension/scripts/test-e2e.ts @@ -360,18 +360,23 @@ try { } await check( - 'HTTP and HTTPS navigations to the sim host reach the configured resolver', + 'HTTP and HTTPS navigations to the sim and go hosts reach the configured resolver', async () => { const tab = await page.context().newPage() - for (const scheme of ['http', 'https']) { + for (const [scheme, host] of [ + ['http', 'sim'], + ['https', 'sim'], + ['http', 'go'], + ['https', 'go'], + ]) { for (const path of [ 'handbook', 'handbook/', 'jira/123?view=board', 'jira/a%2Fb?view=board%20view', ]) { - await tab.goto(`${scheme}://sim/${path}`) - assert(tab.url() === `${origin}/sim/${path}`, `sim/${path} reached ${tab.url()}`) + await tab.goto(`${scheme}://${host}/${path}`) + assert(tab.url() === `${origin}/sim/${path}`, `${host}/${path} reached ${tab.url()}`) } } await tab.close() @@ -1434,7 +1439,12 @@ try { await unchanged(url) await toggle(provider.id, true) for (const host of provider.hosts) { - for (const shortcut of ['sim%2Faskit', 'sim/jira/ABC-123']) { + for (const shortcut of [ + 'sim%2Faskit', + 'sim/jira/ABC-123', + 'go%2Faskit', + 'go/jira/ABC-123', + ]) { const candidate = `https://${host}${provider.path}?client=chrome&${provider.parameter}=${shortcut}&source=qa` const prior = searchRequests.filter((request) => request.url === candidate).length await tab.goto(candidate) diff --git a/apps/extension/src/background.ts b/apps/extension/src/background.ts index b0a76732c7f..b836406d50e 100644 --- a/apps/extension/src/background.ts +++ b/apps/extension/src/background.ts @@ -29,7 +29,7 @@ async function configure() { }) chrome.contextMenus.create({ id: LINK_MENU, - title: 'Create Sim Link', + title: 'Create link in Sim', contexts: ['link'], documentUrlPatterns: ['http://*/*', 'https://*/*'], targetUrlPatterns: ['http://*/*', 'https://*/*'], diff --git a/apps/extension/src/omnibox.ts b/apps/extension/src/omnibox.ts index 008f9b9a3b7..9fb9c41d9a5 100644 --- a/apps/extension/src/omnibox.ts +++ b/apps/extension/src/omnibox.ts @@ -12,7 +12,7 @@ const logger = createLogger('BrowserExtensionOmnibox') /** Longer than the gap between a typist's keystrokes, so a name is looked up once it settles. */ const SUGGEST_DELAY_MS = 220 -const SEARCH_HINT = 'Find a Sim link' +const SEARCH_HINT = 'Find a link in Sim' // Chrome persists this template and substitutes the input when rendering the default row. const OPEN_LINK_HINT = 'Open %s in Sim' @@ -24,14 +24,14 @@ interface SuggestedLink { /** * What was typed after the `sim` keyword, split where the name ends: `sim/jira/ABC-1?tab=all` - * (the `sim/` is optional) has the name `jira` and the rest `/ABC-1?tab=all`. Surrounding spaces, + * (a `sim/` or `go/` prefix is optional) has the name `jira` and the rest `/ABC-1?tab=all`. Surrounding spaces, * the prefix, leading slashes, and any `#fragment` are dropped, as the address bar would; values * and the query otherwise stay exactly as typed. */ function readTyped(text: string): { name: string; rest: string } { const typed = text .trim() - .replace(/^sim\//i, '') + .replace(/^(?:sim|go)\//i, '') .replace(/^\/+/, '') .replace(/#.*$/, '') const nameEnd = typed.search(/[/?]/) diff --git a/apps/extension/src/search-recovery-dialog.tsx b/apps/extension/src/search-recovery-dialog.tsx index bc89f7e943b..47ff8fe0549 100644 --- a/apps/extension/src/search-recovery-dialog.tsx +++ b/apps/extension/src/search-recovery-dialog.tsx @@ -112,8 +112,8 @@ export function SearchRecoveryDialog({ onClose }: SearchRecoveryDialogProps) { - Send explicit sim/ searches to your Sim Links. Ordinary searches stay with your search - engine. + Send explicit go/ and sim/ searches to your links in Sim. Ordinary searches stay with + your search engine. {SEARCH_RECOVERY_PROVIDERS.map((provider) => ( escapeRegExp(new URL(origin).host)).join('|') const character = '(?:[a-z0-9._~:@/-]|%(?:2[6def]|3[0-9a]|4[0-9a-f]|5[0-9af]|6[1-9a-f]|7[0-9ae]))' - const shortcut = `sim(?:/|%2f)${character}+` + const shortcut = `(?:sim|go)(?:/|%2f)${character}+` const condition = { isUrlFilterCaseSensitive: false, requestDomains: provider.origins.map((origin) => new URL(origin).hostname), diff --git a/apps/sim/app/extension/create-link/page.tsx b/apps/sim/app/extension/create-link/page.tsx index 2da41389562..a5d369273e7 100644 --- a/apps/sim/app/extension/create-link/page.tsx +++ b/apps/sim/app/extension/create-link/page.tsx @@ -16,8 +16,8 @@ export default async function CreateLinkPage() { if (!context) return ( Open Sim diff --git a/apps/sim/app/o/[organizationId]/components/organization-sidebar/navigation.ts b/apps/sim/app/o/[organizationId]/components/organization-sidebar/navigation.ts index 68cf01d3b59..56826273d6f 100644 --- a/apps/sim/app/o/[organizationId]/components/organization-sidebar/navigation.ts +++ b/apps/sim/app/o/[organizationId]/components/organization-sidebar/navigation.ts @@ -20,7 +20,7 @@ const ORGANIZATION_NAV_ENTRIES: readonly OrganizationNavEntry[] = [ { id: 'search', label: 'Search', icon: Search, route: 'search' }, { id: 'people', label: 'People', icon: Users, route: 'people' }, { id: 'integrations', label: 'Integrations', icon: Integration, route: 'integrations' }, - { id: 'sim-links', label: 'Sim Links', icon: Link, route: 'simLinks' }, + { id: 'sim-links', label: 'Links', icon: Link, route: 'simLinks' }, { id: 'benchmark', label: 'Benchmark', icon: ChartColumn, route: 'benchmark' }, ] diff --git a/apps/sim/app/o/[organizationId]/links/browser-shortcuts-modal.tsx b/apps/sim/app/o/[organizationId]/links/browser-shortcuts-modal.tsx index 59ccd7507ce..72aec24d7cc 100644 --- a/apps/sim/app/o/[organizationId]/links/browser-shortcuts-modal.tsx +++ b/apps/sim/app/o/[organizationId]/links/browser-shortcuts-modal.tsx @@ -33,15 +33,14 @@ export function BrowserShortcutsModal({ onClose }: BrowserShortcutsModalProps) { . - - Enable sim/ shortcuts - +
+ + Enable go/ shortcuts + + + Enable sim/ shortcuts + +
Still opening search results? In the Sim extension, open{' '} + → Browser shortcuts and enable your search provider. diff --git a/apps/sim/app/o/[organizationId]/links/columns.ts b/apps/sim/app/o/[organizationId]/links/columns.ts index d3e9db9c79e..5ecb9c92ee5 100644 --- a/apps/sim/app/o/[organizationId]/links/columns.ts +++ b/apps/sim/app/o/[organizationId]/links/columns.ts @@ -11,7 +11,7 @@ export const SIM_LINK_COLUMNS = [ { id: 'updated', header: 'Updated' }, ] as const satisfies readonly ResourceColumn[] -export const SIM_LINKS_SEARCH_PLACEHOLDER = 'Search Sim links...' +export const SIM_LINKS_SEARCH_PLACEHOLDER = 'Search links...' export const BROWSER_SHORTCUTS_ACTION = { text: 'Browser shortcuts', icon: Globe } as const export const NEW_SIM_LINK_ACTION = { text: 'New link', icon: Plus, variant: 'primary' } as const diff --git a/apps/sim/app/o/[organizationId]/links/loading.tsx b/apps/sim/app/o/[organizationId]/links/loading.tsx index 7e4b1438928..b5d14c95a2a 100644 --- a/apps/sim/app/o/[organizationId]/links/loading.tsx +++ b/apps/sim/app/o/[organizationId]/links/loading.tsx @@ -16,7 +16,7 @@ export default function SimLinksLoading() {
void links.fetchNextPage()} isLoadingMore={links.isFetchingNextPage} - error={links.isError ? 'Could not load Sim Links.' : undefined} + error={links.isError ? 'Could not load links.' : undefined} emptyMessage='No listed links found' /> diff --git a/apps/sim/app/o/[organizationId]/links/page.tsx b/apps/sim/app/o/[organizationId]/links/page.tsx index 4f4712dea23..21e80786b66 100644 --- a/apps/sim/app/o/[organizationId]/links/page.tsx +++ b/apps/sim/app/o/[organizationId]/links/page.tsx @@ -6,7 +6,7 @@ import { isSimLinksEnabled } from '@/lib/sim-links/feature-flag' import { buildAuthCrossLink } from '@/app/(auth)/auth-redirect' import { SimLinks } from '@/app/o/[organizationId]/links/sim-links' -export const metadata: Metadata = { title: 'Sim Links' } +export const metadata: Metadata = { title: 'Links' } interface SimLinksPageProps { params: Promise<{ organizationId: string }> diff --git a/apps/sim/app/o/[organizationId]/links/sim-link-modal.tsx b/apps/sim/app/o/[organizationId]/links/sim-link-modal.tsx index 7e758732525..91300e8439b 100644 --- a/apps/sim/app/o/[organizationId]/links/sim-link-modal.tsx +++ b/apps/sim/app/o/[organizationId]/links/sim-link-modal.tsx @@ -100,7 +100,7 @@ export function SimLinkModal({ else create.mutate(parsed.data, { onSuccess: onSaved ?? onClose }) } - const title = link ? `Edit sim/${link.name}` : 'New Sim link' + const title = link ? `Edit sim/${link.name}` : 'New link' const [actionLabel, pendingLabel] = link ? ['Save', 'Saving'] : ['Create', 'Creating'] return ( @@ -178,7 +178,7 @@ export function SimLinkModal({ onCheckedChange={(checked) => change('unlisted', checked === true)} /> - Hide from the Sim Links page + Hide from the Links page