learningfoundry 0.30.0__tar.gz → 0.32.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/CHANGELOG.md +19 -0
  2. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/PKG-INFO +1 -1
  3. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/pyproject.toml +1 -1
  4. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/__init__.py +1 -1
  5. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/package.json +1 -0
  6. {learningfoundry-0.30.0 → learningfoundry-0.32.0/src/learningfoundry}/sveltekit_template/src/app.css +1 -0
  7. {learningfoundry-0.30.0 → learningfoundry-0.32.0/src/learningfoundry}/sveltekit_template/src/routes/[module]/[lesson]/+page.svelte +15 -1
  8. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/.gitignore +0 -0
  9. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/LICENSE +0 -0
  10. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/README.md +0 -0
  11. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/docs/project-guide/README.md +0 -0
  12. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/__main__.py +0 -0
  13. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/cli.py +0 -0
  14. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/config.py +0 -0
  15. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/exceptions.py +0 -0
  16. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/generator.py +0 -0
  17. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/__init__.py +0 -0
  18. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/d3foundry_stub.py +0 -0
  19. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/nbfoundry_stub.py +0 -0
  20. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/protocols.py +0 -0
  21. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/quizazz.py +0 -0
  22. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/logging_config.py +0 -0
  23. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/parser.py +0 -0
  24. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/pipeline.py +0 -0
  25. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/py.typed +0 -0
  26. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/resolver.py +0 -0
  27. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/schema_v1.py +0 -0
  28. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/pnpm-lock.yaml +0 -0
  29. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/app.html +0 -0
  30. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ContentBlock.svelte +0 -0
  31. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ExerciseBlock.svelte +0 -0
  32. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/LessonList.svelte +0 -0
  33. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/LessonView.svelte +0 -0
  34. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ModuleList.svelte +0 -0
  35. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/Navigation.svelte +0 -0
  36. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/PlaceholderBlock.svelte +0 -0
  37. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ProgressBar.svelte +0 -0
  38. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ProgressDashboard.svelte +0 -0
  39. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/QuizBlock.svelte +0 -0
  40. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/TextBlock.svelte +0 -0
  41. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/VideoBlock.svelte +0 -0
  42. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/VisualizationBlock.svelte +0 -0
  43. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/db/database.ts +0 -0
  44. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/db/index.ts +0 -0
  45. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/db/progress.ts +0 -0
  46. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/stores/curriculum.test.ts +0 -0
  47. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/stores/curriculum.ts +0 -0
  48. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/types/index.ts +0 -0
  49. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/utils/markdown.ts +0 -0
  50. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/routes/+layout.svelte +0 -0
  51. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/routes/+layout.ts +0 -0
  52. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/routes/+page.svelte +0 -0
  53. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/static/.gitkeep +0 -0
  54. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/svelte.config.js +0 -0
  55. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/tsconfig.json +0 -0
  56. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/vite.config.ts +0 -0
  57. {learningfoundry-0.30.0/src/learningfoundry → learningfoundry-0.32.0}/sveltekit_template/src/app.css +0 -0
  58. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/app.html +0 -0
  59. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ContentBlock.svelte +0 -0
  60. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ExerciseBlock.svelte +0 -0
  61. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/LessonList.svelte +0 -0
  62. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/LessonView.svelte +0 -0
  63. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ModuleList.svelte +0 -0
  64. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/Navigation.svelte +0 -0
  65. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/PlaceholderBlock.svelte +0 -0
  66. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ProgressBar.svelte +0 -0
  67. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ProgressDashboard.svelte +0 -0
  68. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/QuizBlock.svelte +0 -0
  69. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/TextBlock.svelte +0 -0
  70. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/VideoBlock.svelte +0 -0
  71. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/VisualizationBlock.svelte +0 -0
  72. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/db/database.ts +0 -0
  73. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/db/index.ts +0 -0
  74. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/db/progress.ts +0 -0
  75. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/stores/curriculum.ts +0 -0
  76. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/types/index.ts +0 -0
  77. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/utils/markdown.ts +0 -0
  78. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/routes/+layout.svelte +0 -0
  79. {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/routes/+page.svelte +0 -0
  80. {learningfoundry-0.30.0/src/learningfoundry → learningfoundry-0.32.0}/sveltekit_template/src/routes/[module]/[lesson]/+page.svelte +0 -0
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.32.0] - 2026-04-29
11
+
12
+ ### Fixed
13
+
14
+ - **Markdown headings, lists, and code in rendered lesson content had no styling** — they all displayed at body-text size. `TextBlock.svelte` applies the Tailwind `prose prose-slate` classes, but `@tailwindcss/typography` was never installed or registered, so the `prose` class was an unknown utility and the marked-rendered HTML fell through to browser defaults (which Tailwind's preflight reset flattens).
15
+ - `src/learningfoundry/sveltekit_template/package.json` — added `@tailwindcss/typography ^0.5.16` to devDependencies
16
+ - `src/learningfoundry/sveltekit_template/src/app.css` — registered the plugin via Tailwind v4's CSS-first `@plugin '@tailwindcss/typography';` directive
17
+
18
+ ### Added
19
+
20
+ - `tests/test_smoke_sveltekit.py::test_typography_prose_styles_in_bundled_css` — regression guard asserting `.prose` is present in the compiled bundle CSS, so an accidental removal of the plugin will fail the smoke suite.
21
+
22
+ ## [0.31.0] - 2026-04-27
23
+
24
+ ### Fixed
25
+
26
+ - **Clicking "Finish" on the final lesson did nothing visible.** `Navigation.goNext()` correctly calls `onComplete?.()` when there is no next lesson; `LessonView.handleNavComplete()` correctly marks the lesson complete and bubbles the event up via its own `oncomplete` prop — but `routes/[module]/[lesson]/+page.svelte` never passed an `oncomplete` handler, so the chain ended silently. The lesson was marked complete in IndexedDB, but the user stayed on the same page with no feedback.
27
+ - `src/learningfoundry/sveltekit_template/src/routes/[module]/[lesson]/+page.svelte` — added `handleLessonComplete()` that calls `goto('/')`, returning the learner to the dashboard where progress badges reflect the completion.
28
+
10
29
  ## [0.30.0] - 2026-04-27
11
30
 
12
31
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: learningfoundry
3
- Version: 0.30.0
3
+ Version: 0.32.0
4
4
  Summary: A curriculum engine that turns a YAML curriculum definition into a deployable SvelteKit learning application.
5
5
  Project-URL: Homepage, https://github.com/pointmatic/learningfoundry
6
6
  Project-URL: Repository, https://github.com/pointmatic/learningfoundry
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "learningfoundry"
7
- version = "0.30.0"
7
+ version = "0.32.0"
8
8
  description = "A curriculum engine that turns a YAML curriculum definition into a deployable SvelteKit learning application."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -1,4 +1,4 @@
1
1
  # Copyright 2026 Pointmatic
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
- __version__ = "0.30.0"
4
+ __version__ = "0.32.0"
@@ -21,6 +21,7 @@
21
21
  "devDependencies": {
22
22
  "@sveltejs/adapter-static": "^3.0.0",
23
23
  "@sveltejs/vite-plugin-svelte": "^7.0.0",
24
+ "@tailwindcss/typography": "^0.5.16",
24
25
  "@tailwindcss/vite": "^4.0.0",
25
26
  "@types/sql.js": "^1.4.11",
26
27
  "jsdom": "^25.0.0",
@@ -1,3 +1,4 @@
1
1
  /* Copyright 2026 Pointmatic */
2
2
  /* SPDX-License-Identifier: Apache-2.0 */
3
3
  @import 'tailwindcss';
4
+ @plugin '@tailwindcss/typography';
@@ -1,5 +1,6 @@
1
1
  <!-- Copyright 2026 Pointmatic — SPDX-License-Identifier: Apache-2.0 -->
2
2
  <script lang="ts">
3
+ import { goto } from '$app/navigation';
3
4
  import { page } from '$app/stores';
4
5
  import { curriculum, navigateTo } from '$lib/stores/curriculum.js';
5
6
  import type { Lesson, Module } from '$lib/types/index.js';
@@ -24,6 +25,15 @@
24
25
  $effect(() => {
25
26
  if (moduleId && lessonId) navigateTo(moduleId, lessonId);
26
27
  });
28
+
29
+ // Called when the user clicks "Finish" on the final lesson of the
30
+ // curriculum. Navigation.goNext() emits this when there is no next
31
+ // lesson; LessonView marks the lesson complete and bubbles it up here.
32
+ // Redirect to the home dashboard so the learner sees their updated
33
+ // progress and can pick what to do next.
34
+ function handleLessonComplete() {
35
+ void goto('/');
36
+ }
27
37
  </script>
28
38
 
29
39
  <svelte:head>
@@ -31,7 +41,11 @@
31
41
  </svelte:head>
32
42
 
33
43
  {#if currentLesson && currentModule}
34
- <LessonView lesson={currentLesson} moduleId={currentModule.id} />
44
+ <LessonView
45
+ lesson={currentLesson}
46
+ moduleId={currentModule.id}
47
+ oncomplete={handleLessonComplete}
48
+ />
35
49
  {:else if $curriculum}
36
50
  <div class="flex h-full items-center justify-center">
37
51
  <p class="text-gray-400">Lesson not found.</p>