Features
- feat(export): implement CSV export for organization users and refactor course export to use temporary files3e13e123
- feat(migration): enhance file upload limits and error handling664d3447
- feat(migration): add frontend migration wizardad28c7f7
- feat(migration): add backend API for content migrationf7d71cf0
- feat(orgs): add font configuration support for organizationsa052f626
- feat: add keyboard shortcuts (Cmd/Ctrl+Enter to run, Cmd/Ctrl+Shift+R to reset)012427a9
- feat: add fill-in-the-blank mode with blank region markers125cbd22
- feat: add multi-file support to code playground8f1ae51c
- feat: add code diff view on solution revealcc6ad16d
- feat: add timed challenge mode to code playgroundf04a16b1
- feat: allow students to add custom test cases in code playground6a49d27e
- feat: add submission history API and database model7c5c1615
- feat(api, web): implement SQL execution support and SQLite database upload functionality10b06ae6
- feat(cli): add admin email and password options for non-interactive setup in dev commandef250f5f
- feat(cli): add CI support and testing commands; enhance setup and update commands with non-interactive options2069cc28
- feat(cli): add new commands for status, health, env, and restore; update error messages for installation checksa038f01a
- feat: add update command and enhance CLI documentation7572dca2
Fixes
- fix(deps): update all non-major dependenciesc9ad2324
- fix(deps): update all non-major dependencies288b0ec6
- fix(deps): pin dependency pydantic to ==2.12.5793500c5
- fix(cli): handle Docker socket permissions on fresh Linux installsbfe1c0d7
- fix(cli): improve install.sh for Linux support and fix output leak3bf31f3d
- fix(orgs): inject Google Font via useEffect into document.headf866c201
- fix(orgs): apply custom font directly via inline style instead of CSS variable3a7724a4
- fix(security): add path traversal protection to _read_storage_file and add .claude to gitignore0243035c
- fix: fix submission history API response mapping and add VS Code-style file tabsf1b8ae87
- fix: replace alert() calls with toast notifications13ff6058
- fix(payments): handle platform-level Stripe events gracefully by ignoring them when no account ID is present801790ea
- fix: add aria-expanded, aria-haspopup and Escape key dismiss to custom dropdowns72888a2a
- fix(version-check): update stable channel logic to fetch latest app release from GitHub70f37d5a
- Merge pull request #702 from learnhouse/renovate/all-minor-patch2010ebd7
- Merge pull request #699 from learnhouse/renovate/all-minor-patch69f940dd
- Merge pull request #698 from learnhouse/renovate/pin-dependenciese08da926
- Merge pull request #694 from IgnazioDS/fix/replace-alerts-with-toasts8c446883
- Merge pull request #690 from IgnazioDS/fix/dropdown-aria-keyboard-dismiss12ef8d33
Refactoring
- refactor(import_service): remove unused upload_to_s3 function from import servicef3933018
- refactor(import_service): optimize file handling in import process by streaming uploads and improving error handling for ZIP validation8189b3a9
- refactor(cli, api): simplify EE mode management270af336
- refactor(payments): separate webhook routes from main router to avoid 400 errors from Stripe webhooks lacking org_ida47899d0
- refactor(proxy): remove SaaS mode redirection logic; enhance token exchange flow with detailed error handling and refresh token validation98bf573c
Maintenance
Contributors
npx learnhouse update --to 1.0.1