- Fetch Bedrock regions dynamically from botocore endpoints.json (public, no auth)
Shows 40+ regions instead of hardcoded 6. Falls back to static list on error.
- Fix AWS_PROFILE env var conflict: users with AWS_PROFILE set for other tools
(terraform, aws-cli) would get 'failed to get shared config profile' errors
when using explicit ABSK or static credentials.
- Handle empty auth choice gracefully (skip instead of error)
Follow-up to #2044.
- add `maskAPIKey` to redact all but last 4 chars of API keys (CWE-200)
- add `isRedacted` guard to prevent writing masked values back to `.env`
- mask all provider API keys in `GET /config` response payload
- sanitize note filenames with `basename` and allowlist regex (CWE-78, CWE-22)
- replace `exec`/shell commands in obsidian route with native `fs` APIs
- remove `escapeShellArg` helper now that shell execution is fully eliminated
- add path-confinement double-check ensuring resolved paths stay within target dirs
- sanitize note filenames in notes route using `basename` to block path traversal (CWE-22)
- return `safeFilename` instead of raw user input in notes POST response
- Add `GetRaw` method to `PatternsEntity` for unprocessed pattern retrieval
- Replace inline raw pattern loading logic in server handler with `GetRaw`
- Remove manual `Pattern` struct construction from `PatternsHandler.Get`
- Simplify server handler by delegating storage access to database layer
- Add test coverage for `GetRaw` with custom patterns directory
Add 3-tier authentication for AWS Bedrock:
1. Bearer token (ABSK) - simplest, same as Claude Code
2. Static AWS credentials (access key + secret key)
3. Default AWS credential chain (existing behavior)
- Remove hasAWSCredentials() gate so Bedrock always appears in setup
- Custom guided Setup() flow: auth method, region, model
- Bearer token transport with token redaction
- Nil guards for uninitialized clients
- Temperature-only fix (no top_p) for Claude on Bedrock
- API key masking during re-setup
- Fallback model list when ListFoundationModels API is inaccessible
- i18n support for 11 locales (3 new keys each)
- 25 unit tests
- Add git CLI fallback when go-git in-memory clone fails
- Detect git CLI availability via `exec.LookPath` before fallback
- Extract `fetchFilesViaGoGit` into dedicated helper function
- Implement `fetchFilesViaGitCLI` using shallow `--depth 1` clone
- Use temp directory for CLI clone with deferred cleanup
- Add `copyFile` helper to support CLI-based file extraction
- Respect `SingleDirectory` and `PathPrefix` opts in CLI path
- Surface combined error when both go-git and CLI fallback fail
- Remove redundant inline comments from go-git implementation
- Update Svelte to version 5.53.5
- Upgrade @sveltejs/vite-plugin-svelte to 4.0.0
- Update lucide-svelte to version 0.575.0
- Upgrade Rollup to version 4.59.0
- Remove custom npm and pnpm install scripts
- Add postinstall script for svelte-kit sync
- Fix self-closing tags in Svelte components
- Change transcript joining to use newlines
- Make cleanPatternOutput method public in ChatService
- Remove svelte-markdown dependency from package.json
- Add new `create_slides` pattern to pattern explanations index
- Register `create_slides` in CONVERSION, VISUALIZE, and WRITING categories
- Add `create_slides` usage examples to `suggest_pattern` user guide
- Insert `create_slides` entry into `pattern_descriptions.json` with relevant tags
- Add `create_slides` pattern extract to `pattern_extracts.json`
- Shift pattern numbering from 97 onward to accommodate new entry