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.
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/CHANGELOG.md +19 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/PKG-INFO +1 -1
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/pyproject.toml +1 -1
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/__init__.py +1 -1
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/package.json +1 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0/src/learningfoundry}/sveltekit_template/src/app.css +1 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0/src/learningfoundry}/sveltekit_template/src/routes/[module]/[lesson]/+page.svelte +15 -1
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/.gitignore +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/LICENSE +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/README.md +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/docs/project-guide/README.md +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/__main__.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/cli.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/config.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/exceptions.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/generator.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/__init__.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/d3foundry_stub.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/nbfoundry_stub.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/protocols.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/quizazz.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/logging_config.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/parser.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/pipeline.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/py.typed +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/resolver.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/schema_v1.py +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/pnpm-lock.yaml +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/app.html +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ContentBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ExerciseBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/LessonList.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/LessonView.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ModuleList.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/Navigation.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/PlaceholderBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ProgressBar.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/ProgressDashboard.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/QuizBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/TextBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/VideoBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/components/VisualizationBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/db/database.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/db/index.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/db/progress.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/stores/curriculum.test.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/stores/curriculum.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/types/index.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/lib/utils/markdown.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/routes/+layout.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/routes/+layout.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/src/routes/+page.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/static/.gitkeep +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/svelte.config.js +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/tsconfig.json +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/sveltekit_template/vite.config.ts +0 -0
- {learningfoundry-0.30.0/src/learningfoundry → learningfoundry-0.32.0}/sveltekit_template/src/app.css +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/app.html +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ContentBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ExerciseBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/LessonList.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/LessonView.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ModuleList.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/Navigation.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/PlaceholderBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ProgressBar.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/ProgressDashboard.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/QuizBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/TextBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/VideoBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/components/VisualizationBlock.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/db/database.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/db/index.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/db/progress.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/stores/curriculum.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/types/index.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/utils/markdown.ts +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/routes/+layout.svelte +0 -0
- {learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/routes/+page.svelte +0 -0
- {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.
|
|
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.
|
|
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,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
|
|
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>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/__init__.py
RENAMED
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/d3foundry_stub.py
RENAMED
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/nbfoundry_stub.py
RENAMED
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/protocols.py
RENAMED
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/src/learningfoundry/integrations/quizazz.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{learningfoundry-0.30.0/src/learningfoundry → learningfoundry-0.32.0}/sveltekit_template/src/app.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/stores/curriculum.ts
RENAMED
|
File without changes
|
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/lib/utils/markdown.ts
RENAMED
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/routes/+layout.svelte
RENAMED
|
File without changes
|
{learningfoundry-0.30.0 → learningfoundry-0.32.0}/sveltekit_template/src/routes/+page.svelte
RENAMED
|
File without changes
|