Skip to content

Commit fa187f9

Browse files
authored
Merge pull request #22 from pie-framework/develop
merge dev
2 parents ed76048 + 168f284 commit fa187f9

173 files changed

Lines changed: 12259 additions & 3916 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Setup Bun
2727
uses: oven-sh/setup-bun@v2
2828
with:
29-
bun-version: 1.3.5
29+
bun-version: 1.3.6
3030

3131
- name: Cache Bun downloads
3232
uses: actions/cache@v4
@@ -59,7 +59,7 @@ jobs:
5959
- name: Setup Bun
6060
uses: oven-sh/setup-bun@v2
6161
with:
62-
bun-version: 1.3.5
62+
bun-version: 1.3.6
6363

6464
- name: Check translation coverage
6565
run: |
@@ -77,7 +77,7 @@ jobs:
7777
- name: Setup Bun
7878
uses: oven-sh/setup-bun@v2
7979
with:
80-
bun-version: 1.3.5
80+
bun-version: 1.3.6
8181

8282
- name: Scan for hardcoded strings
8383
run: |
@@ -99,7 +99,7 @@ jobs:
9999
- name: Setup Bun
100100
uses: oven-sh/setup-bun@v2
101101
with:
102-
bun-version: 1.3.5
102+
bun-version: 1.3.6
103103

104104
- name: Cache Bun downloads
105105
uses: actions/cache@v4
@@ -131,7 +131,7 @@ jobs:
131131
- name: Setup Bun
132132
uses: oven-sh/setup-bun@v2
133133
with:
134-
bun-version: 1.3.5
134+
bun-version: 1.3.6
135135

136136
- name: Cache Bun downloads
137137
uses: actions/cache@v4

.github/workflows/deploy-pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
- name: Setup Bun
3333
uses: oven-sh/setup-bun@v2
3434
with:
35-
bun-version: 1.3.5
35+
bun-version: 1.3.6
3636

3737
- name: Cache Bun downloads
3838
uses: actions/cache@v4

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
- name: Setup Bun
5454
uses: oven-sh/setup-bun@v2
5555
with:
56-
bun-version: 1.3.5
56+
bun-version: 1.3.6
5757

5858
- name: Cache Bun downloads
5959
uses: actions/cache@v4

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ Interactive web UI for transformations:
129129
- **Transform** — Batch convert with progress reporting
130130
- **Preview** — Side-by-side QTI and PIE rendering
131131

132-
The app uses sessionized local filesystem storage by default, but the architecture supports custom backend adapters.
132+
Storage is pluggable with filesystem (default), S3, or database backends via configuration.
133133

134134
### CLI (`@pie-qti/transform-cli`)
135135

@@ -198,6 +198,8 @@ bun run preview:pages
198198
### Transforms
199199

200200
- **[Transformation Guide](docs/PIE-QTI-TRANSFORMATION-GUIDE.md)** — Bidirectional transform overview
201+
- **[Configuration Guide](docs/CONFIGURATION.md)** — Storage backends, plugins, and environment setup
202+
- **[Migration Guide](docs/MIGRATION_GUIDE.md)** — Upgrading from legacy storage to new architecture
201203
- **[Transform App](packages/transform-app/README.md)** — Web UI for transformations
202204
- **[CLI](tools/cli/README.md)** — Command-line batch operations
203205
- **[QTI → PIE](packages/qti2-to-pie/README.md)** — QTI to PIE transformer

STATUS.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# PIE QTI 2.2 Implementation Status
22

3-
**Last Updated**: 2026-01-07
3+
**Last Updated**: 2026-01-12
44

55
---
66

@@ -37,6 +37,11 @@ The transformation framework and tooling are functional but under active develop
3737

3838
-**Default-components evals**: YAML specs in `docs/evals/qti2-default-components/*/evals.yaml` executed by Playwright runner in `packages/qti2-example/tests/playwright/qti2-default-components-evals.pw.ts` (currently **49** cases)
3939
-**Assessment-player evals**: YAML specs in `docs/evals/qti2-assessment-player/*/evals.yaml` (currently **15** cases)
40+
-**i18n evals**: YAML specs in `docs/evals/qti2-i18n/*/evals.yaml` testing internationalization across 8 locales (currently **14** cases)
41+
-**Settings UI evals**: YAML specs in `docs/evals/qti2-settings-ui/*/evals.yaml` testing theme and locale switching UI (currently **7** cases)
42+
-**Asset loading evals**: YAML specs in `docs/evals/qti2-asset-loading/*/evals.yaml` testing URL resolution and asset loading (currently **3** cases)
43+
-**Web components evals**: YAML specs in `docs/evals/qti2-web-components/*/evals.yaml` testing configuration passing (currently **4** cases)
44+
-**Total eval cases**: **92** (up from 64)
4045
-**Unit tests**: additional coverage exists across packages (see package READMEs and workflows for the authoritative commands)
4146

4247
---

bun.lock

Lines changed: 226 additions & 160 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/ARCHITECTURE.md

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ Everything lives under `packages/`:
3434

3535
### Transform system
3636

37-
- `packages/types`: shared transformation type contracts (input/output formats)
37+
- `packages/types`: shared transformation type contracts (input/output formats, storage interfaces)
3838
- `packages/schemas`: PIE schema/validation assets
3939
- `packages/core`: transform engine + plugin registry (format orchestration)
40+
- `packages/storage`: pluggable storage backends (filesystem, S3, database)
4041
- `packages/qti2-to-pie`: QTI → PIE transform plugin (plus vendor extension hooks)
4142
- `packages/pie-to-qti2`: PIE → QTI transform plugin (generator registry + packaging)
4243

@@ -432,11 +433,37 @@ Key reference:
432433

433434
The transform app is a SvelteKit web UI that wires together:
434435

435-
- upload and extraction (sessionized filesystem storage),
436+
- upload and extraction (pluggable storage backend with session management),
436437
- analysis (discover items/tests, count interactions, record issues),
437438
- transformation (batch convert to PIE),
438439
- preview (QTI player preview and PIE player preview side-by-side).
439440

441+
### Storage architecture
442+
443+
The transform app uses a **pluggable storage system** (`@pie-qti/storage`) that abstracts storage backends:
444+
445+
- **Default**: Filesystem backend (stores sessions in `./uploads/sessions/`)
446+
- **Optional**: S3, database, or custom backends via configuration
447+
448+
Sessions are stored with separate metadata files:
449+
450+
- `metadata.json` - Core session state (id, status, timestamps)
451+
- `analysis.json` - Analysis results (packages, items, interactions)
452+
- `transformation.json` - Transform results (items, assessments, errors)
453+
454+
This separation enables:
455+
456+
- Independent loading of analysis/transformation data
457+
- Efficient storage backends (only fetch what's needed)
458+
- Clear data ownership and versioning
459+
460+
Key references:
461+
462+
- Storage types: `packages/types/src/storage/index.ts`
463+
- Storage package: `packages/storage/src/`
464+
- App storage wrapper: `packages/transform-app/src/lib/server/storage/app-session-storage.ts`
465+
- Configuration: `docs/CONFIGURATION.md`
466+
440467
### Server-side flow (sessioned)
441468

442469
1) **Upload**: `POST /api/upload` stores ZIP(s) in a new session

0 commit comments

Comments
 (0)