diff --git a/package.json b/package.json
index 8709612e0..4f487a1c4 100644
--- a/package.json
+++ b/package.json
@@ -1,17 +1,19 @@
{
"name": "vue-skuilder",
"scripts": {
- "setup": "yarn && git submodule update --init --recursive",
+ "setup": "yarn && git submodule update --init --recursive && yarn build:lib",
"dev": "yarn workspace @vue-skuilder/common build && yarn workspace @vue-skuilder/db build && yarn workspace @vue-skuilder/common-ui build && yarn workspace @vue-skuilder/courses build && yarn workspace @vue-skuilder/edit-ui build && node scripts/dev-couchdb.js start && concurrently \"yarn dev:platform-ui\" \"yarn dev:express\"",
- "dev:platform-ui": "yarn workspace @vue-skuilder/platform-ui dev",
- "dev:express": "yarn workspace @vue-skuilder/express dev",
- "dev:couchdb": "node scripts/dev-couchdb.js start",
+ "dev:watch": "node scripts/dev-watch.js",
+ "dev:platform": "yarn couchdb:start && yarn workspace @vue-skuilder/express dev && yarn workspace @vue-skuilder/platform-ui dev",
"couchdb:start": "node scripts/dev-couchdb.js start",
"couchdb:stop": "node scripts/dev-couchdb.js stop",
"couchdb:status": "node scripts/dev-couchdb.js status",
"couchdb:remove": "node scripts/dev-couchdb.js remove",
"postdev": "node scripts/dev-couchdb.js stop",
"build": "yarn workspace @vue-skuilder/common build && yarn workspace @vue-skuilder/db build && yarn workspace @vue-skuilder/common-ui build && yarn workspace @vue-skuilder/courses build && yarn workspace @vue-skuilder/edit-ui build && yarn workspace @vue-skuilder/platform-ui build && yarn workspace @vue-skuilder/express build",
+ "build:lib": "yarn workspace @vue-skuilder/common build && yarn workspace @vue-skuilder/db build && yarn workspace @vue-skuilder/common-ui build && yarn workspace @vue-skuilder/courses build && yarn workspace @vue-skuilder/edit-ui build",
+ "build:pui": "yarn build:lib && yarn workspace @vue-skuilder/platform-ui build && yarn workspace @vue-skuilder/express build",
+ "build:sui": "yarn build:lib && yarn workspace @vue-skuilder/standalone-ui build",
"clean": "yarn clean:dist && yarn clean:node_modules",
"clean:dist": "find packages -name 'dist' -type d -exec rm -rf {} +",
"clean:node_modules": "find . -name 'node_modules' -type d -exec rm -rf {} +",
diff --git a/packages/common-ui/src/stores/useConfigStore.ts b/packages/common-ui/src/stores/useConfigStore.ts
index 40e6bad02..9fe0387f1 100644
--- a/packages/common-ui/src/stores/useConfigStore.ts
+++ b/packages/common-ui/src/stores/useConfigStore.ts
@@ -17,6 +17,7 @@ export const useConfigStore = () => {
config: {
darkMode: false,
likesConfetti: false,
+ sessionTimeLimit: 5, // Default 5 minutes
} as UserConfig,
}),
@@ -40,6 +41,14 @@ export const useConfigStore = () => {
});
},
+ async updateSessionTimeLimit(sessionTimeLimit: number) {
+ this.config.sessionTimeLimit = sessionTimeLimit;
+ const user = await getCurrentUser();
+ await user.setConfig({
+ sessionTimeLimit,
+ });
+ },
+
async hydrate() {
const user = await getCurrentUser();
const cfg = await user.getConfig();
@@ -53,6 +62,7 @@ export const useConfigStore = () => {
this.config = {
darkMode: false,
likesConfetti: false,
+ sessionTimeLimit: 5,
};
},
},
diff --git a/packages/db/src/core/types/user.ts b/packages/db/src/core/types/user.ts
index 01a93a122..e314d2759 100644
--- a/packages/db/src/core/types/user.ts
+++ b/packages/db/src/core/types/user.ts
@@ -4,6 +4,7 @@ import { Moment } from 'moment';
export interface UserConfig {
darkMode: boolean;
likesConfetti: boolean;
+ sessionTimeLimit: number; // Session time limit in minutes
}
export interface ActivityRecord {
diff --git a/packages/db/src/impl/common/BaseUserDB.ts b/packages/db/src/impl/common/BaseUserDB.ts
index 16ca73f84..05d39d48b 100644
--- a/packages/db/src/impl/common/BaseUserDB.ts
+++ b/packages/db/src/impl/common/BaseUserDB.ts
@@ -519,6 +519,7 @@ Currently logged-in as ${this._username}.`
_id: BaseUser.DOC_IDS.CONFIG,
darkMode: false,
likesConfetti: false,
+ sessionTimeLimit: 5,
};
try {
diff --git a/packages/db/src/util/migrator/StaticToCouchDBMigrator.ts b/packages/db/src/util/migrator/StaticToCouchDBMigrator.ts
index 1865a3cc5..284f15fa2 100644
--- a/packages/db/src/util/migrator/StaticToCouchDBMigrator.ts
+++ b/packages/db/src/util/migrator/StaticToCouchDBMigrator.ts
@@ -425,6 +425,8 @@ export class StaticToCouchDBMigrator {
const cleanDoc = { ...doc };
// Remove _rev if present (CouchDB will assign new revision)
delete cleanDoc._rev;
+ // Remove _attachments - these are uploaded separately in Phase 5
+ delete cleanDoc._attachments;
return cleanDoc;
});
@@ -575,10 +577,14 @@ export class StaticToCouchDBMigrator {
}
}
+ // Get current document revision (needed for putAttachment)
+ const doc = await db.get(docId);
+
// Upload to CouchDB
await db.putAttachment(
docId,
attachmentName,
+ doc._rev,
attachmentData as any, // PouchDB accepts both ArrayBuffer and Buffer
attachmentMeta.content_type
);
diff --git a/packages/standalone-ui/src/App.vue b/packages/standalone-ui/src/App.vue
index 12063c66e..94dea955f 100644
--- a/packages/standalone-ui/src/App.vue
+++ b/packages/standalone-ui/src/App.vue
@@ -1,5 +1,5 @@
-