Initial import of LogDarioSeq baseline
Establishes version control for the personal Logseq DB fork before starting the server-client architecture migration and domain features described in docs/agent-guide and the approved implementation plan. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
BIN
resources/mobile/android/icon-background.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/mobile/android/icon-foreground.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/mobile/android/icon/drawable-hdpi-icon.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
resources/mobile/android/icon/drawable-ldpi-icon.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/mobile/android/icon/drawable-mdpi-icon.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
resources/mobile/android/icon/drawable-xhdpi-icon.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
resources/mobile/android/icon/drawable-xxhdpi-icon.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
resources/mobile/android/icon/drawable-xxxhdpi-icon.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
resources/mobile/android/icon/hdpi-background.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
resources/mobile/android/icon/hdpi-foreground.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
resources/mobile/android/icon/ldpi-background.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
resources/mobile/android/icon/ldpi-foreground.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
resources/mobile/android/icon/mdpi-background.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
resources/mobile/android/icon/mdpi-foreground.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
resources/mobile/android/icon/xhdpi-background.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
resources/mobile/android/icon/xhdpi-foreground.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
resources/mobile/android/icon/xxhdpi-background.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/mobile/android/icon/xxhdpi-foreground.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/mobile/android/icon/xxxhdpi-background.png
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
resources/mobile/android/icon/xxxhdpi-foreground.png
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
resources/mobile/android/splash/drawable-land-hdpi-screen.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
resources/mobile/android/splash/drawable-land-ldpi-screen.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
resources/mobile/android/splash/drawable-land-mdpi-screen.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
resources/mobile/android/splash/drawable-land-xhdpi-screen.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
resources/mobile/android/splash/drawable-land-xxhdpi-screen.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
resources/mobile/android/splash/drawable-land-xxxhdpi-screen.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
resources/mobile/android/splash/drawable-port-hdpi-screen.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
resources/mobile/android/splash/drawable-port-ldpi-screen.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
resources/mobile/android/splash/drawable-port-mdpi-screen.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
resources/mobile/android/splash/drawable-port-xhdpi-screen.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
resources/mobile/android/splash/drawable-port-xxhdpi-screen.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
resources/mobile/android/splash/drawable-port-xxxhdpi-screen.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
29
resources/mobile/index.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color="logseq">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, viewport-fit=cover, user-scalable=no">
|
||||
<link href="./css/style.css" rel="stylesheet" type="text/css">
|
||||
<title>Logseq: A privacy-first platform for knowledge management and collaboration</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script>var isCapacitorNew=true</script>
|
||||
<script src="./js/magic_portal.js"></script>
|
||||
<script defer src="./js/highlight.min.js"></script>
|
||||
<script defer src="./js/interact.min.js"></script>
|
||||
<script defer src="./js/marked.umd.js"></script>
|
||||
<script defer src="./js/eventemitter3.umd.min.js"></script>
|
||||
<script defer src="./js/photoswipe.umd.min.js"></script>
|
||||
<script defer src="./js/photoswipe-lightbox.umd.min.js"></script>
|
||||
<script defer src="./js/prop-types.min.js"></script>
|
||||
<script defer src="./js/main.js"></script>
|
||||
<script defer src="./js/tabler.ext.js"></script>
|
||||
<script defer src="./js/code-editor.js"></script>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
window.Capacitor?.Plugins?.SplashScreen?.hide()
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
resources/mobile/ios/icon/icon-1024.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
resources/mobile/ios/icon/icon-108@2x.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
resources/mobile/ios/icon/icon-20.png
Normal file
|
After Width: | Height: | Size: 575 B |
BIN
resources/mobile/ios/icon/icon-20@2x.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/mobile/ios/icon/icon-20@3x.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
resources/mobile/ios/icon/icon-24@2x.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/mobile/ios/icon/icon-27.5@2x.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
resources/mobile/ios/icon/icon-29.png
Normal file
|
After Width: | Height: | Size: 842 B |
BIN
resources/mobile/ios/icon/icon-29@2x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
resources/mobile/ios/icon/icon-29@3x.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
resources/mobile/ios/icon/icon-40.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/mobile/ios/icon/icon-40@2x.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
resources/mobile/ios/icon/icon-40@3x.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
resources/mobile/ios/icon/icon-44@2x.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
resources/mobile/ios/icon/icon-50.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/mobile/ios/icon/icon-50@2x.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
resources/mobile/ios/icon/icon-60.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
resources/mobile/ios/icon/icon-60@2x.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
resources/mobile/ios/icon/icon-60@3x.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
resources/mobile/ios/icon/icon-72.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
resources/mobile/ios/icon/icon-72@2x.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
resources/mobile/ios/icon/icon-76.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
resources/mobile/ios/icon/icon-76@2x.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
resources/mobile/ios/icon/icon-83.5@2x.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
resources/mobile/ios/icon/icon-86@2x.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
resources/mobile/ios/icon/icon-98@2x.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
resources/mobile/ios/icon/icon.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
resources/mobile/ios/icon/icon@2x.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
resources/mobile/ios/splash/Default-1792h~iphone.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
resources/mobile/ios/splash/Default-2436h.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
resources/mobile/ios/splash/Default-2688h~iphone.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
resources/mobile/ios/splash/Default-568h@2x~iphone.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
resources/mobile/ios/splash/Default-667h.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
resources/mobile/ios/splash/Default-736h.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
resources/mobile/ios/splash/Default-Landscape-1792h~iphone.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
resources/mobile/ios/splash/Default-Landscape-2436h.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
resources/mobile/ios/splash/Default-Landscape-2688h~iphone.png
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
resources/mobile/ios/splash/Default-Landscape-736h.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
resources/mobile/ios/splash/Default-Landscape@2x~ipad.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
resources/mobile/ios/splash/Default-Landscape@~ipadpro.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
resources/mobile/ios/splash/Default-Landscape~ipad.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
resources/mobile/ios/splash/Default-Portrait@2x~ipad.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
resources/mobile/ios/splash/Default-Portrait@~ipadpro.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
resources/mobile/ios/splash/Default-Portrait~ipad.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
resources/mobile/ios/splash/Default@2x~iphone.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
resources/mobile/ios/splash/Default@2x~universal~anyany.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
resources/mobile/ios/splash/Default~iphone.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
1
resources/mobile/js/eventemitter3.umd.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).EventEmitter3=t()}(this,(function(){"use strict";var e={};return function(e){var t=Object.prototype.hasOwnProperty,n="~";function r(){}function o(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,r,s,i){if("function"!=typeof r)throw new TypeError("The listener must be a function");var c=new o(r,s||e,i),f=n?n+t:t;return e._events[f]?e._events[f].fn?e._events[f]=[e._events[f],c]:e._events[f].push(c):(e._events[f]=c,e._eventsCount++),e}function i(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function c(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(n=!1)),c.prototype.eventNames=function(){var e,r,o=[];if(0===this._eventsCount)return o;for(r in e=this._events)t.call(e,r)&&o.push(n?r.slice(1):r);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},c.prototype.listeners=function(e){var t=n?n+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,s=r.length,i=new Array(s);o<s;o++)i[o]=r[o].fn;return i},c.prototype.listenerCount=function(e){var t=n?n+e:e,r=this._events[t];return r?r.fn?1:r.length:0},c.prototype.emit=function(e,t,r,o,s,i){var c=n?n+e:e;if(!this._events[c])return!1;var f,u,a=this._events[c],l=arguments.length;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),l){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,r),!0;case 4:return a.fn.call(a.context,t,r,o),!0;case 5:return a.fn.call(a.context,t,r,o,s),!0;case 6:return a.fn.call(a.context,t,r,o,s,i),!0}for(u=1,f=new Array(l-1);u<l;u++)f[u-1]=arguments[u];a.fn.apply(a.context,f)}else{var p,v=a.length;for(u=0;u<v;u++)switch(a[u].once&&this.removeListener(e,a[u].fn,void 0,!0),l){case 1:a[u].fn.call(a[u].context);break;case 2:a[u].fn.call(a[u].context,t);break;case 3:a[u].fn.call(a[u].context,t,r);break;case 4:a[u].fn.call(a[u].context,t,r,o);break;default:if(!f)for(p=1,f=new Array(l-1);p<l;p++)f[p-1]=arguments[p];a[u].fn.apply(a[u].context,f)}}return!0},c.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},c.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},c.prototype.removeListener=function(e,t,r,o){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return i(this,s),this;var c=this._events[s];if(c.fn)c.fn!==t||o&&!c.once||r&&c.context!==r||i(this,s);else{for(var f=0,u=[],a=c.length;f<a;f++)(c[f].fn!==t||o&&!c[f].once||r&&c[f].context!==r)&&u.push(c[f]);u.length?this._events[s]=1===u.length?u[0]:u:i(this,s)}return this},c.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&i(this,t)):(this._events=new r,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=n,c.EventEmitter=c,e.exports=c}({get exports(){return e},set exports(t){e=t}}),e}));//# sourceMappingURL=eventemitter3.umd.min.js.map
|
||||
1
resources/mobile/js/magic_portal.js
Normal file
@@ -0,0 +1 @@
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.MagicPortal=t()}(this,function(){var e=function(e){var t=this;this.rpc_counter=0,this.channel=e,this.foreign=new Map,this.local=new Map,this.calls=new Map,this.queue=[],this.connectionEstablished=!1,this.channel.addEventListener("message",function(e){var n=e.data;if(n&&"object"==typeof n)switch(n.type){case"MP_INIT":return t.onInit(n);case"MP_SET":return t.onSet(n);case"MP_CALL":return t.onCall(n);case"MP_RETURN":return t.onReturn(n)}}),this.channel.postMessage({type:"MP_INIT",id:1,reply:!0})};e.prototype.onInit=function(e){this.connectionEstablished=!0;var t=this.queue;this.queue=[];for(var n=0,o=t;n<o.length;n+=1){this.channel.postMessage(o[n])}e.reply&&this.channel.postMessage({type:"MP_INIT",reply:!1})},e.prototype.onSet=function(e){for(var t=this,n={},o=e.object,i=function(){var i=r[s],c=!e.void.includes(i);n[i]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];return t.rpc_counter=(t.rpc_counter+1)%Number.MAX_SAFE_INTEGER,new Promise(function(n,s){t.postMessage({type:"MP_CALL",object:o,method:i,id:t.rpc_counter,args:e,reply:c}),c?t.calls.set(t.rpc_counter,{resolve:n,reject:s}):n()})}},s=0,r=e.methods;s<r.length;s+=1)i();var c=this.foreign.get(e.object);this.foreign.set(e.object,n),"function"==typeof c&&c(n)},e.prototype.onCall=function(e){var t=this,n=this.local.get(e.object);n&&n[e.method].apply(n,e.args).then(function(n){return e.reply&&t.channel.postMessage({type:"MP_RETURN",id:e.id,result:n})}).catch(function(n){return t.channel.postMessage({type:"MP_RETURN",id:e.id,error:n.message})})},e.prototype.onReturn=function(e){if(this.calls.has(e.id)){var t=this.calls.get(e.id),n=t.resolve,o=t.reject;this.calls.delete(e.id),e.error?o(e.error):n(e.result)}},e.prototype.postMessage=function(e){this.connectionEstablished?this.channel.postMessage(e):this.queue.push(e)},e.prototype.set=function(e,t,n){void 0===n&&(n={}),this.local.set(e,t);var o=Object.entries(t).filter(function(e){return"function"==typeof e[1]}).map(function(e){return e[0]});this.postMessage({type:"MP_SET",object:e,methods:o,void:n.void||[]})},e.prototype.get=function(e){return new Promise(function(t,n){var o=this;return this.foreign.has(e)?t(this.foreign.get(e)):t(new Promise(function(t,n){return o.foreign.set(e,t)}))}.bind(this))};return function(t){var n=new e(t);Object.defineProperties(this,{get:{writable:!1,configurable:!1,value:n.get.bind(n)},set:{writable:!1,configurable:!1,value:n.set.bind(n)}})}});
|
||||
6
resources/mobile/js/tabler-icons-react.min.js
vendored
Normal file
1
resources/mobile/js/tabler.ext.js
Normal file
65
resources/mobile/js/worker.js
Normal file
@@ -0,0 +1,65 @@
|
||||
importScripts(
|
||||
// Batched optimization
|
||||
"./lightning-fs.min.js",
|
||||
// Fixed a bug
|
||||
"./magic_portal.js"
|
||||
);
|
||||
|
||||
const detect = () => {
|
||||
if (typeof window !== 'undefined' && !self.skipWaiting) {
|
||||
return 'window'
|
||||
} else if (typeof self !== 'undefined' && !self.skipWaiting) {
|
||||
return 'Worker'
|
||||
} else if (typeof self !== 'undefined' && self.skipWaiting) {
|
||||
return 'ServiceWorker'
|
||||
}
|
||||
};
|
||||
|
||||
const fsName = 'logseq';
|
||||
const createFS = () => new LightningFS(fsName);
|
||||
let fs = createFS();
|
||||
let pfs = fs.promises;
|
||||
|
||||
if (typeof self !== 'undefined') {
|
||||
self.fs = fs;
|
||||
self.pfs = pfs;
|
||||
}
|
||||
|
||||
if (detect() === 'Worker') {
|
||||
const portal = new MagicPortal(self);
|
||||
portal.set('fs', fs);
|
||||
portal.set('pfs', pfs);
|
||||
|
||||
portal.set('workerThread', {
|
||||
rimraf: async function (path) {
|
||||
// try {
|
||||
// // First assume path is itself a file
|
||||
// await pfs.unlink(path)
|
||||
// // if that worked we're done
|
||||
// return
|
||||
// } catch (err) {
|
||||
// // Otherwise, path must be a directory
|
||||
// if (err.code !== 'EISDIR') throw err
|
||||
// }
|
||||
// Knowing path is a directory,
|
||||
// first, assume everything inside path is a file.
|
||||
let files = await pfs.readdir(path);
|
||||
for (let file of files) {
|
||||
let child = path + '/' + file
|
||||
try {
|
||||
await pfs.unlink(child)
|
||||
} catch (err) {
|
||||
if (err.code !== 'EISDIR') throw err
|
||||
}
|
||||
}
|
||||
// Assume what's left are directories and recurse.
|
||||
let dirs = await pfs.readdir(path)
|
||||
for (let dir of dirs) {
|
||||
let child = path + '/' + dir
|
||||
await rimraf(child, pfs)
|
||||
}
|
||||
// Finally, delete the empty directory
|
||||
await pfs.rmdir(path)
|
||||
}
|
||||
});
|
||||
}
|
||||