Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
d9a428b
Fix sm CLI dev workflow and generator diagnostics for user projects
antosubash Apr 6, 2026
dbbabab
Add passkey login design spec
antosubash Apr 6, 2026
bf990cc
Update passkey spec: fix API names, schema override, challenge storage
antosubash Apr 6, 2026
3dc7a9a
Add passkey login implementation plan
antosubash Apr 6, 2026
a65b1fa
feat: add Identity Schema V3 and IdentityPasskeyOptions for passkey s…
antosubash Apr 6, 2026
03cbef6
fix: use SchemaVersion override for passkey schema, revert broad DI c…
antosubash Apr 6, 2026
6d41068
feat: add PasskeyRegisterBeginEndpoint
antosubash Apr 6, 2026
5769bca
feat: add PasskeyRegisterCompleteEndpoint
antosubash Apr 6, 2026
5700241
fix: dispose StreamReader and verify PasskeyException handling in Reg…
antosubash Apr 6, 2026
bca5707
feat: add passkey login and management API endpoints (Tasks 4-7)
antosubash Apr 6, 2026
b5de204
feat: add ManagePasskeysEndpoint (Inertia view)
antosubash Apr 6, 2026
62b41a5
feat: add WebAuthn browser API utility (passkey.ts)
antosubash Apr 6, 2026
47bdd30
feat: add ManagePasskeys React page
antosubash Apr 6, 2026
f1831b6
feat: add passkey sign-in button to login page
antosubash Apr 6, 2026
64e7ba6
feat: pass passkeyEnabled prop from IdentityPasskeyOptions to login page
antosubash Apr 6, 2026
5bb0519
feat: register ManagePasskeys page and add Passkeys nav item to accou…
antosubash Apr 6, 2026
f76c96d
feat: add device type hint to passkeys list
antosubash Apr 6, 2026
80b023e
refactor: fix passkeyEnabled in login error path, extract ToBase64Url…
antosubash Apr 6, 2026
01f8312
style: exclude test-projects from biome root config scan
antosubash Apr 6, 2026
dd8a03e
test: add e2e tests for passkey registration, sign-in, and management
antosubash Apr 6, 2026
4bf1d6a
fix: make passkey e2e tests reliable across parallel runs and page na…
antosubash Apr 6, 2026
e2bc080
Merge branch 'main' into worktree-logical-frolicking-spark
antosubash Apr 6, 2026
a4abf23
Merge remote-tracking branch 'origin/main' into worktree-logical-frol…
antosubash Apr 6, 2026
2b278df
fix: restore SM0054 loop inside foreach module after merge with main
antosubash Apr 6, 2026
1fc0e69
Merge branch 'worktree-logical-frolicking-spark' of https://github.co…
antosubash Apr 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@
"docs/**",
"website/**",
"!**/wwwroot",
"!modules/*/src/*/types.ts"
"!modules/*/src/*/types.ts",
"!test-projects"
]
}
}
2 changes: 1 addition & 1 deletion cli/SimpleModule.Cli/Commands/Dev/DevCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ string viteConfigPath
);
var npx = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "npx.cmd" : "npx";
var viteArgs =
$"vite dev --config \"{viteConfigPath}\" --port {settings.VitePort} --strictPort";
$"vite --config \"{viteConfigPath}\" --port {settings.VitePort} --strictPort --configLoader runner";
StartProcess(npx, viteArgs, solution.RootPath, "vite");
}
else if (!settings.NoVite && !File.Exists(viteConfigPath))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public sealed partial class PagesRegistryCheck : IDoctorCheck
[GeneratedRegex(@"Inertia\.Render\s*\(\s*""([^""]+)""")]
private static partial Regex InertiaRenderPattern();

[GeneratedRegex(@"""([^""]+)""\s*:\s*(?:\(\s*\)|(?:async\s*)?\(\s*\)\s*=>|import)")]
[GeneratedRegex(@"[""']([^""']+)[""']\s*:\s*(?:\(\s*\)|(?:async\s*)?\(\s*\)\s*=>|import)")]
private static partial Regex PagesKeyPattern();

public IEnumerable<CheckResult> Run(SolutionContext solution)
Expand Down
5 changes: 5 additions & 0 deletions cli/SimpleModule.Cli/Commands/New/NewProjectCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,10 @@ string frameworkVersion
Path.Combine(hostDir, "ClientApp", "vite.config.ts"),
HostTemplates.ViteConfig()
);
File.WriteAllText(
Path.Combine(hostDir, "ClientApp", "vite.dev.config.ts"),
HostTemplates.ViteDevConfig()
);
File.WriteAllText(
Path.Combine(hostDir, "ClientApp", "validate-pages.mjs"),
HostTemplates.ValidatePages()
Expand Down Expand Up @@ -293,6 +297,7 @@ string rootDir
Plan(Path.Combine(hostDir, "wwwroot", "index.html"));
Plan(Path.Combine(hostDir, "ClientApp", "app.tsx"));
Plan(Path.Combine(hostDir, "ClientApp", "vite.config.ts"));
Plan(Path.Combine(hostDir, "ClientApp", "vite.dev.config.ts"));
Plan(Path.Combine(hostDir, "ClientApp", "validate-pages.mjs"));
Plan(Path.Combine(hostDir, "ClientApp", "package.json"));
Plan(Path.Combine(hostDir, "Styles", "app.css"));
Expand Down
4 changes: 4 additions & 0 deletions cli/SimpleModule.Cli/SimpleModule.Cli.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@
Include="..\..\template\SimpleModule.Host\ClientApp\vite.config.ts"
LogicalName="Templates.Host.ClientApp.vite.config.ts"
/>
<EmbeddedResource
Include="..\..\template\SimpleModule.Host\ClientApp\vite.dev.config.ts"
LogicalName="Templates.Host.ClientApp.vite.dev.config.ts"
/>
<EmbeddedResource
Include="..\..\template\SimpleModule.Host\ClientApp\validate-pages.mjs"
LogicalName="Templates.Host.ClientApp.validate-pages.mjs"
Expand Down
8 changes: 8 additions & 0 deletions cli/SimpleModule.Cli/Templates/HostTemplates.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,14 @@ public static string ViteConfig()
return EmbeddedResourceReader.ReadTemplate("Templates.Host.ClientApp.vite.config.ts");
}

/// <summary>
/// Copy vite.dev.config.ts as-is.
/// </summary>
public static string ViteDevConfig()
{
return EmbeddedResourceReader.ReadTemplate("Templates.Host.ClientApp.vite.dev.config.ts");
}

/// <summary>
/// Copy validate-pages.mjs as-is.
/// </summary>
Expand Down
Loading
Loading