feat(extension): offer "Connect Now" after saving a connection profile#247
Merged
Conversation
The connection wizard previously left first-run users at "Profile saved. Use FileMaker: Connect to start a session" — they had to discover and run the connect command themselves, the single biggest gap in the onboarding flow between creating a profile and seeing data. The wizard now surfaces a native "Connect Now" toast right after a successful save and dispatches FileMaker: Connect with the freshly-saved profile id when accepted. Editing an existing profile offers "Reconnect now" instead. The action is fire-and-forget and non-fatal: the profile is already persisted, so a dismissed toast or a failed connect leaves the user able to connect later from the sidebar or Command Palette. Updates the getting-started walkthrough and v1.1.0 smoke test to describe the new flow, and adds a behavioral unit test covering the offer, the accept-dispatch path, and the dismiss path. https://claude.ai/code/session_01FDrP6DntTQJogi7UvdmbYq
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
Auto-merge gate failed: 7 required check(s) still pending on 2317841; will retry on next check_suite event. |
|
Auto-merge gate failed: PR is a draft. Set the pull request to Ready for review to enable auto-merge. |
|
Auto-merge gate failed: PR body must contain 'Closes/Fixes/Resolves #N' or carry the 'chore:trivial' label. |
|
Auto-merge gate failed: trusted_author_file '.github/auto-merge-allowed-authors' not found on base ref 'main'. |
The dependabot dev-dependencies bump (#245, the commit this branch was based on) raised TypeScript to ^6.0.3 and @types/vscode to ^1.120.0 without the accompanying source/config updates, leaving three CI steps red on the branch the moment a PR ran them: - typecheck: TS 6.0 deprecates moduleResolution "node" (node10). Added "ignoreDeprecations": "6.0" to extension/tsconfig.json (the value TS's own error message recommends) and to the inline node10 program in typeGenService.test.ts that drives the generated-code diagnostics assert. - typecheck (designer-ui): TS 6.0 rejects the side-effect `import './styles.css'` with no ambient declaration. Added designer-ui/src/css.d.ts declaring `*.css` — type-only; esbuild handles the real bundling. - package:check: vsce refuses because @types/vscode ^1.120.0 exceeds engines.vscode ^1.96.0. Pinned @types/vscode to ~1.96.0 so the types track the minimum supported VS Code; typecheck still passes, confirming no post-1.96 APIs are in use. Verified locally: lint, typecheck, test:coverage (467 passed), build, package:check (VSIX 2.36 MB, under the 5 MiB budget), and `npm audit --omit=dev --audit-level=high` all pass. https://claude.ai/code/session_01FDrP6DntTQJogi7UvdmbYq
Root cause of the build-test failure on PR #247: `vitest` is declared by two workspaces (extension + runtime-next), so npm hoists it to the repo root node_modules. `@vitest/coverage-v8` was declared only by extension, so npm nested it under extension/node_modules. When the hoisted root `vitest` dynamically imports its coverage provider, Node resolves from the root and cannot find the nested package — `test:coverage` dies with ERR_MODULE_NOT_FOUND on every clean install (reproduced locally with a from-scratch `npm install`; an earlier --no-save install had masked it). Fix: declare @vitest/coverage-v8 in the root package.json devDependencies so it installs alongside the hoisted vitest and the dynamic import resolves. The extension keeps its own declaration (it owns the test:coverage script); npm dedupes to a single root install. Validation on a clean `rm -rf **/node_modules && npm install` tree: audit (--omit=dev --audit-level=high), lint, typecheck, test:coverage (467 passed), build, and package:check (VSIX 2.36 MB, under the 5 MiB budget) all pass. https://claude.ai/code/session_01FDrP6DntTQJogi7UvdmbYq
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
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.
What
Improves the first-run onboarding flow. After a profile is saved in the connection wizard, the extension now surfaces a native Connect Now toast and dispatches FileMaker: Connect with the freshly-saved profile when the user accepts. Editing an existing profile offers Reconnect now instead.
Why
Previously the wizard ended at "Profile saved. Use FileMaker: Connect to start a session." — leaving the user to discover and run the connect command themselves. That handoff was the single biggest gap in the onboarding path between creating a profile and seeing data. The wizard already knew the profile id; this just wires the obvious next step.
How
ConnectionWizardPanel.handleSavecalls a newofferConnect(profile, isNewProfile)after a successful save.{ profileId }arg, so the saved id is handed in directly — no new plumbing.Docs & tests
test-connect.md) and the v1.1.0 QA smoke test (SC-09) to describe the new flow.connectionWizardConnectOffer.test.tscovering three paths: the offer is shown after save, accepting dispatches connect with the profile id, and dismissing does nothing.CI unblock (2nd commit)
The first CI run surfaced three pre-existing failures inherited from dependabot bump #245 (the commit this branch was based on, which raised TypeScript to
^6.0.3and@types/vscodeto^1.120.0without the accompanying updates) — none caused by the onboarding change. Fixed in a separate, clearly-scoped commit:moduleResolution: "node"(node10). Added"ignoreDeprecations": "6.0"toextension/tsconfig.json(TS's own recommended remedy) and to the inline node10 program intypeGenService.test.ts.import './styles.css'with no ambient declaration. Addeddesigner-ui/src/css.d.ts(declare module '*.css') — type-only; esbuild handles bundling.vscerefused because@types/vscode ^1.120.0exceedsengines.vscode ^1.96.0. Pinned@types/vscodeto~1.96.0so the types track the minimum supported VS Code; typecheck still passes, confirming no post-1.96 APIs are in use.Validation
All CI steps pass locally:
lint,typecheck,test:coverage(467 passed),build,package:check(VSIX 2.36 MB, under the 5 MiB budget), andnpm audit --omit=dev --audit-level=high.https://claude.ai/code/session_01FDrP6DntTQJogi7UvdmbYq