Compare commits

...

71 Commits

Author SHA1 Message Date
Thomas Peetz 25bda8f491 vault backup: 2026-07-06 15:49:30 2026-07-06 15:49:29 +02:00
Thomas Peetz f6c8ad71f4 vault backup: 2026-07-03 15:44:16 2026-07-03 15:44:15 +02:00
tpeetz 7ffe4f0ca7 vault backup: 2026-07-03 07:06:20 2026-07-03 07:06:20 +02:00
Thomas Peetz a898474282 vault backup: 2026-07-02 18:35:20 2026-07-02 18:35:19 +02:00
tpeetz da37f0d337 vault backup: 2026-07-02 05:56:17 2026-07-02 05:56:17 +02:00
Thomas Peetz d6576db1b3 vault backup: 2026-07-01 16:26:31 2026-07-01 16:26:31 +02:00
Thomas Peetz 5f72a1222b vault backup: 2026-06-30 17:06:09 2026-06-30 17:06:09 +02:00
Thomas Peetz 34209ff034 vault backup: 2026-06-30 11:27:46 2026-06-30 11:27:46 +02:00
tpeetz 8866801570 vault backup: 2026-06-30 01:03:05 2026-06-30 01:03:05 +02:00
Thomas Peetz 91d92cbf4a vault backup: 2026-06-29 14:14:56 2026-06-29 14:14:56 +02:00
Thomas Peetz 2577fc70c4 vault backup: 2026-06-27 16:24:42 2026-06-27 16:24:42 +02:00
tpeetz 5be0d002a9 vault backup: 2026-06-26 21:11:08 2026-06-26 21:11:08 +02:00
tpeetz f46f4ac4c3 vault backup: 2026-06-26 19:53:16disable unused plugins 2026-06-26 19:53:16 +02:00
Thomas Peetz ca758c9aa3 vault backup: 2026-06-26 16:36:54 2026-06-26 16:36:53 +02:00
tpeetz 9b432ce8ae vault backup: 2026-06-26 00:51:06 2026-06-26 00:51:06 +02:00
Thomas Peetz 9293fbc827 vault backup: 2026-06-25 19:10:56 2026-06-25 19:10:56 +02:00
tpeetz fa0abc95d4 vault backup: 2026-06-24 22:33:11 2026-06-24 22:33:11 +02:00
Thomas Peetz 8ef993cfa4 vault backup: 2026-06-24 18:22:42 2026-06-24 18:22:41 +02:00
Thomas Peetz d987f442d0 vault backup: 2026-06-22 16:55:40 2026-06-22 16:55:39 +02:00
tpeetz 9529d259fc vault backup: 2026-06-19 23:30:42 2026-06-19 23:30:42 +02:00
Thomas Peetz 23c3dcf98c vault backup: 2026-06-19 17:25:43 2026-06-19 17:25:43 +02:00
Thomas Peetz 07fa833514 vault backup: 2026-06-18 23:57:12 2026-06-18 23:57:12 +02:00
Thomas Peetz 4eddfd5861 vault backup: 2026-06-17 18:28:24 2026-06-17 18:28:24 +02:00
Thomas Peetz e009d938f8 vault backup: 2026-06-17 18:13:37 2026-06-17 18:13:37 +02:00
tpeetz 36bf746c3a vault backup: 2026-06-17 05:37:48 2026-06-17 05:37:48 +02:00
tpeetz d0fe9e15aa vault backup: 2026-06-16 22:45:57 2026-06-16 22:45:57 +02:00
tpeetz 7f2fb0d1e0 vault backup: 2026-06-16 22:02:00 2026-06-16 22:02:00 +02:00
Thomas Peetz 369830744f vault backup: 2026-06-16 18:30:31 2026-06-16 18:30:31 +02:00
tpeetz 19f4d80ff0 update vault 2026-06-16 07:39:24 +02:00
Thomas Peetz 4d9db61ae0 vault backup: 2026-06-12 18:57:55 2026-06-12 18:57:55 +02:00
Thomas Peetz 1b30a4344b vault backup: 2026-06-11 18:32:20 2026-06-11 18:32:20 +02:00
Thomas Peetz f764289b65 vault backup: 2026-06-10 17:52:01 2026-06-10 17:52:00 +02:00
Thomas Peetz ecd8071322 vault backup: 2026-06-09 18:08:51 2026-06-09 18:08:50 +02:00
Thomas Peetz a6594dab91 vault backup: 2026-06-08 15:58:32 2026-06-08 15:58:31 +02:00
tpeetz 3ffaf6a8dc update vault 2026-06-07 23:37:30 +02:00
Thomas Peetz 0c87f91000 vault backup: 2026-06-05 20:03:50 2026-06-05 20:03:50 +02:00
Thomas Peetz 48176846a4 vault backup: 2026-06-03 15:50:23 2026-06-03 15:50:23 +02:00
Thomas Peetz e2f1bfc07a vault backup: 2026-06-02 15:55:05 2026-06-02 15:55:05 +02:00
Thomas Peetz 4c30406de5 vault backup: 2026-06-01 15:44:37 2026-06-01 15:44:36 +02:00
Thomas Peetz dfe1ade9d5 vault backup: 2026-05-29 19:15:23 2026-05-29 19:15:22 +02:00
Thomas Peetz 8e46ded96b vault backup: 2026-05-28 19:03:30 2026-05-28 19:03:29 +02:00
tpeetz e314579619 vault backup: 2026-05-28 05:31:33 2026-05-28 05:31:33 +02:00
Thomas Peetz b84b2465ea vault backup: 2026-05-27 18:40:29 2026-05-27 18:40:29 +02:00
Thomas Peetz a25f5f5853 vault backup: 2026-05-27 15:49:01 2026-05-27 15:49:01 +02:00
Thomas Peetz 4381fcddf3 vault backup: 2026-05-27 15:21:43 2026-05-27 15:21:43 +02:00
Thomas Peetz ca323718a7 vault backup: 2026-05-27 15:20:56 2026-05-27 15:20:56 +02:00
Thomas Peetz 5476eca7bf vault backup: 2026-05-26 17:52:59 2026-05-26 17:52:58 +02:00
Thomas Peetz 6fcb4ebba2 vault backup: 2026-05-22 14:05:28 2026-05-22 14:05:27 +02:00
Thomas Peetz 988f343b1c vault backup: 2026-05-21 16:56:02 2026-05-21 16:56:01 +02:00
Thomas Peetz d97ca8a7ca vault backup: 2026-05-20 19:08:18 2026-05-20 19:08:17 +02:00
Thomas Peetz 70f0c79624 vault backup: 2026-05-19 19:10:03 2026-05-19 19:10:03 +02:00
Thomas Peetz 53a4850b90 vault backup: 2026-05-18 16:44:43 2026-05-18 16:44:43 +02:00
Thomas Peetz a3213538bb vault backup: 2026-05-13 18:34:07 2026-05-13 18:34:06 +02:00
Thomas Peetz 6ed04c0c14 vault backup: 2026-05-12 18:44:00 2026-05-12 18:44:00 +02:00
Thomas Peetz 89e8f2e7e4 vault backup: 2026-05-11 16:55:02 2026-05-11 16:55:02 +02:00
Thomas Peetz 2df7a57cf2 vault backup: 2026-05-08 16:11:20 2026-05-08 16:11:19 +02:00
Thomas Peetz 6ad28f9cb4 vault backup: 2026-05-07 19:04:50 2026-05-07 19:04:50 +02:00
Thomas Peetz b4a23ac71f vault backup: 2026-05-07 16:43:09 2026-05-07 16:43:09 +02:00
Thomas Peetz 45f06b8869 vault backup: 2026-05-07 16:36:00 2026-05-07 16:36:00 +02:00
Thomas Peetz 9d26f5a3f8 vault backup: 2026-05-06 18:14:41 2026-05-06 18:14:41 +02:00
Thomas Peetz 0ccd3ff27b vault backup: 2026-05-05 18:21:59 2026-05-05 18:21:59 +02:00
Thomas Peetz b6385e7a6b vault backup: 2026-05-04 15:42:19 2026-05-04 15:42:19 +02:00
tpeetz 28a23a871e vault backup: 2026-05-02 00:07:51 2026-05-02 00:07:51 +02:00
tpeetz c1496124f1 vault backup: 2026-04-30 21:12:28 2026-04-30 21:12:28 +02:00
Thomas Peetz aea41a2576 vault backup: 2026-04-29 18:25:51 2026-04-29 18:25:51 +02:00
Thomas Peetz f935b2b85d vault backup: 2026-04-28 17:53:36 2026-04-28 17:53:35 +02:00
Thomas Peetz 3be9608d87 vault backup: 2026-04-27 18:28:33 2026-04-27 18:28:33 +02:00
Thomas Peetz 834719ad35 vault backup: 2026-04-27 18:08:40 2026-04-27 18:08:40 +02:00
Thomas Peetz f3e3c4ee89 update vault 2026-04-27 07:58:10 +02:00
tpeetz 4febfd157d vault backup: 2026-04-26 21:30:08 2026-04-26 21:30:08 +02:00
tpeetz 0937d2ae3c vault backup: 2026-04-24 20:07:52 2026-04-24 20:07:52 +02:00
1337 changed files with 54316 additions and 68543 deletions
+2 -7
View File
@@ -3,7 +3,6 @@
"dataview", "dataview",
"obsidian-tasks-plugin", "obsidian-tasks-plugin",
"obsidian-sortable", "obsidian-sortable",
"auto-note-mover",
"tag-wrangler", "tag-wrangler",
"obsidian-plugin-toc", "obsidian-plugin-toc",
"obsidian-charts", "obsidian-charts",
@@ -21,12 +20,8 @@
"obsidian-style-settings", "obsidian-style-settings",
"callout-manager", "callout-manager",
"find-unlinked-files", "find-unlinked-files",
"contribution-graph",
"datacore",
"friend-tracker",
"desk",
"external-file-embed-and-link", "external-file-embed-and-link",
"obsidian-git",
"obsidian-kanban", "obsidian-kanban",
"task-list-kanban" "task-list-kanban",
"vcf-contacts"
] ]
+102 -63
View File
@@ -31,26 +31,26 @@ module.exports = __toCommonJS(main_exports);
var import_obsidian25 = require("obsidian"); var import_obsidian25 = require("obsidian");
// node_modules/obsidian-extra/dist/esm/functions/getFloatingWindows.js // node_modules/obsidian-extra/dist/esm/functions/getFloatingWindows.js
function getFloatingWindows(app2) { function getFloatingWindows(app) {
var _a, _b, _c, _d; var _a, _b, _c, _d;
return (_d = (_c = (_b = (_a = app2 === null || app2 === void 0 ? void 0 : app2.workspace) === null || _a === void 0 ? void 0 : _a.floatingSplit) === null || _b === void 0 ? void 0 : _b.children) === null || _c === void 0 ? void 0 : _c.map((split) => split.win)) !== null && _d !== void 0 ? _d : []; return (_d = (_c = (_b = (_a = app === null || app === void 0 ? void 0 : app.workspace) === null || _a === void 0 ? void 0 : _a.floatingSplit) === null || _b === void 0 ? void 0 : _b.children) === null || _c === void 0 ? void 0 : _c.map((split) => split.win)) !== null && _d !== void 0 ? _d : [];
} }
// node_modules/obsidian-extra/dist/esm/functions/getCurrentThemeID.js // node_modules/obsidian-extra/dist/esm/functions/getCurrentThemeID.js
function getCurrentThemeID(app2) { function getCurrentThemeID(app) {
const theme = app2.customCss.theme; const theme = app.customCss.theme;
return theme === "" ? null : theme; return theme === "" ? null : theme;
} }
// node_modules/obsidian-extra/dist/esm/functions/getCurrentColorScheme.js // node_modules/obsidian-extra/dist/esm/functions/getCurrentColorScheme.js
function getCurrentThemeID2(app2) { function getCurrentThemeID2(app) {
const { body } = app2.workspace.containerEl.doc; const { body } = app.workspace.containerEl.doc;
return body.classList.contains("theme-dark") ? "dark" : "light"; return body.classList.contains("theme-dark") ? "dark" : "light";
} }
// node_modules/obsidian-extra/dist/esm/functions/getThemeManifest.js // node_modules/obsidian-extra/dist/esm/functions/getThemeManifest.js
function getThemeManifest(app2, themeID) { function getThemeManifest(app, themeID) {
const manifests = app2.customCss.themes; const manifests = app.customCss.themes;
if (!Object.prototype.hasOwnProperty.call(manifests, themeID)) { if (!Object.prototype.hasOwnProperty.call(manifests, themeID)) {
return null; return null;
} }
@@ -58,22 +58,22 @@ function getThemeManifest(app2, themeID) {
} }
// node_modules/obsidian-extra/dist/esm/functions/isThemeInstalled.js // node_modules/obsidian-extra/dist/esm/functions/isThemeInstalled.js
function isThemeInstalled(app2, themeID) { function isThemeInstalled(app, themeID) {
return getThemeManifest(app2, themeID) !== null; return getThemeManifest(app, themeID) !== null;
} }
// node_modules/obsidian-extra/dist/esm/functions/getThemeStyleElement.js // node_modules/obsidian-extra/dist/esm/functions/getThemeStyleElement.js
function getThemeStyleElement(app2) { function getThemeStyleElement(app) {
const currentTheme = getCurrentThemeID(app2); const currentTheme = getCurrentThemeID(app);
if (currentTheme == null || !isThemeInstalled(app2, currentTheme)) { if (currentTheme == null || !isThemeInstalled(app, currentTheme)) {
return null; return null;
} }
return app2.customCss.styleEl; return app.customCss.styleEl;
} }
// node_modules/obsidian-extra/dist/esm/functions/isSnippetEnabled.js // node_modules/obsidian-extra/dist/esm/functions/isSnippetEnabled.js
function isSnippetEnabled(app2, snippetID) { function isSnippetEnabled(app, snippetID) {
return app2.customCss.enabledSnippets.has(snippetID); return app.customCss.enabledSnippets.has(snippetID);
} }
// node_modules/obsidian-extra/dist/esm/functions/fetchObsidianStyleSheet.js // node_modules/obsidian-extra/dist/esm/functions/fetchObsidianStyleSheet.js
@@ -129,7 +129,7 @@ var __awaiter = function(thisArg, _arguments, P, generator) {
step((generator = generator.apply(thisArg, _arguments || [])).next()); step((generator = generator.apply(thisArg, _arguments || [])).next());
}); });
}; };
function fetchObsidianStyleSheet(app2) { function fetchObsidianStyleSheet(app) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let errors = []; let errors = [];
const orElse = (cb) => (ex) => { const orElse = (cb) => (ex) => {
@@ -198,18 +198,18 @@ function viaDom(path) {
} }
// node_modules/obsidian-extra/dist/esm/functions/getInstalledSnippetIDs.js // node_modules/obsidian-extra/dist/esm/functions/getInstalledSnippetIDs.js
function getInstalledSnippetIDs(app2) { function getInstalledSnippetIDs(app) {
return app2.customCss.snippets; return app.customCss.snippets;
} }
// node_modules/obsidian-extra/dist/esm/functions/getSnippetStyleElements.js // node_modules/obsidian-extra/dist/esm/functions/getSnippetStyleElements.js
function getSnippetStyleElements(app2) { function getSnippetStyleElements(app) {
const styleManager = app2.customCss; const styleManager = app.customCss;
const snippets = getInstalledSnippetIDs(app2); const snippets = getInstalledSnippetIDs(app);
const map = /* @__PURE__ */ new Map(); const map = /* @__PURE__ */ new Map();
for (let i = 0, elI = 0; i < snippets.length; i++) { for (let i = 0, elI = 0; i < snippets.length; i++) {
const snippetID = styleManager.snippets[i]; const snippetID = styleManager.snippets[i];
if (isSnippetEnabled(app2, snippetID)) { if (isSnippetEnabled(app, snippetID)) {
map.set(snippetID, styleManager.extraStyleEls[elI]); map.set(snippetID, styleManager.extraStyleEls[elI]);
elI++; elI++;
} }
@@ -218,9 +218,9 @@ function getSnippetStyleElements(app2) {
} }
// node_modules/obsidian-extra/dist/esm/functions/openPluginSettings.js // node_modules/obsidian-extra/dist/esm/functions/openPluginSettings.js
function openPluginSettings(app2, plugin) { function openPluginSettings(app, plugin) {
var _a, _b; var _a, _b;
const settingManager = app2.setting; const settingManager = app.setting;
const pluginId = typeof plugin === "string" ? plugin : plugin.manifest.id; const pluginId = typeof plugin === "string" ? plugin : plugin.manifest.id;
if (((_a = settingManager.activeTab) === null || _a === void 0 ? void 0 : _a.id) !== pluginId) { if (((_a = settingManager.activeTab) === null || _a === void 0 ? void 0 : _a.id) !== pluginId) {
settingManager.openTabById(""); settingManager.openTabById("");
@@ -233,27 +233,27 @@ function openPluginSettings(app2, plugin) {
// node_modules/obsidian-extra/dist/esm/functions/createCustomStyleSheet.js // node_modules/obsidian-extra/dist/esm/functions/createCustomStyleSheet.js
var Counter = Symbol("CustomStylesheet count"); var Counter = Symbol("CustomStylesheet count");
function foreachWindow(app2, fn) { function foreachWindow(app, fn) {
fn(app2.workspace.containerEl.doc, true); fn(app.workspace.containerEl.doc, true);
for (const float of getFloatingWindows(app2)) { for (const float of getFloatingWindows(app)) {
fn(float.document, false); fn(float.document, false);
} }
} }
function createCustomStyleSheet(app2, plugin) { function createCustomStyleSheet(app, plugin) {
var _a; var _a;
let result; let result;
const pl = plugin; const pl = plugin;
const plId = plugin.manifest.id; const plId = plugin.manifest.id;
const ssId = ((_a = pl[Counter]) !== null && _a !== void 0 ? _a : pl[Counter] = 0).toString(); const ssId = ((_a = pl[Counter]) !== null && _a !== void 0 ? _a : pl[Counter] = 0).toString();
pl[Counter]++; pl[Counter]++;
const styleEl = app2.workspace.containerEl.doc.createElement("style"); const styleEl = app.workspace.containerEl.doc.createElement("style");
const styleElInFloats = []; const styleElInFloats = [];
styleEl.setAttribute("data-source-plugin", plId); styleEl.setAttribute("data-source-plugin", plId);
styleEl.setAttribute("data-source-id", ssId); styleEl.setAttribute("data-source-id", ssId);
function unapply() { function unapply() {
styleElInFloats.splice(0, styleElInFloats.length).forEach((el) => el.remove()); styleElInFloats.splice(0, styleElInFloats.length).forEach((el) => el.remove());
styleEl.detach(); styleEl.detach();
foreachWindow(app2, (doc) => { foreachWindow(app, (doc) => {
for (const styleEl2 of Array.from(doc.head.querySelectorAll("style"))) { for (const styleEl2 of Array.from(doc.head.querySelectorAll("style"))) {
if (result.is(styleEl2)) { if (result.is(styleEl2)) {
styleEl2.remove(); styleEl2.remove();
@@ -263,7 +263,7 @@ function createCustomStyleSheet(app2, plugin) {
} }
function reapply() { function reapply() {
unapply(); unapply();
foreachWindow(app2, (doc, isFloating) => { foreachWindow(app, (doc, isFloating) => {
let lastEl = doc.head.lastElementChild; let lastEl = doc.head.lastElementChild;
for (let el = lastEl; el != null; el = el.previousElementSibling) { for (let el = lastEl; el != null; el = el.previousElementSibling) {
lastEl = el; lastEl = el;
@@ -280,12 +280,12 @@ function createCustomStyleSheet(app2, plugin) {
lastEl === null || lastEl === void 0 ? void 0 : lastEl.insertAdjacentElement("afterend", styleElClone); lastEl === null || lastEl === void 0 ? void 0 : lastEl.insertAdjacentElement("afterend", styleElClone);
}); });
} }
app2.workspace.on("css-change", reapply); app.workspace.on("css-change", reapply);
app2.workspace.on("layout-change", reapply); app.workspace.on("layout-change", reapply);
result = Object.freeze(Object.defineProperties(() => { result = Object.freeze(Object.defineProperties(() => {
unapply(); unapply();
app2.workspace.off("css-change", reapply); app.workspace.off("css-change", reapply);
app2.workspace.off("layout-change", reapply); app.workspace.off("layout-change", reapply);
}, { }, {
css: { css: {
enumerable: true, enumerable: true,
@@ -351,17 +351,18 @@ var import_obsidian4 = require("obsidian");
var import_obsidian6 = require("obsidian"); var import_obsidian6 = require("obsidian");
// node_modules/obsidian-extra/dist/esm/functions/closeSettings.js // node_modules/obsidian-extra/dist/esm/functions/closeSettings.js
function closeSettings(app2) { function closeSettings(app) {
const settingManager = app2.setting; const settingManager = app.setting;
settingManager.close(); settingManager.close();
} }
// src/ui/pane-layers.ts // src/ui/pane-layers.ts
var import_obsidian5 = require("obsidian"); var import_obsidian5 = require("obsidian");
var UIPaneLayers = class { var UIPaneLayers = class {
constructor(options) { constructor(root, options) {
this.layers = []; this.layers = [];
this.closeParent = options.close; this.closeParent = options.close;
this.root = root;
this.navInstance = { this.navInstance = {
open: (pane) => this.push(pane), open: (pane) => this.push(pane),
close: () => this.pop(), close: () => this.pop(),
@@ -501,6 +502,11 @@ var UIPaneLayers = class {
configurable: true, configurable: true,
enumerable: true, enumerable: true,
get: attached ? () => this.controlsEl : notAttachedError get: attached ? () => this.controlsEl : notAttachedError
},
root: {
configurable: true,
enumerable: true,
get: attached ? () => this.root : notAttachedError
} }
}); });
} }
@@ -513,7 +519,7 @@ var UISettingTab = class extends import_obsidian6.PluginSettingTab {
this.plugin = plugin; this.plugin = plugin;
this.createDefault = createDefault; this.createDefault = createDefault;
this.initLayer = null; this.initLayer = null;
this.layers = new UIPaneLayers({ this.layers = new UIPaneLayers(plugin, {
close: () => closeSettings(this.app) close: () => closeSettings(this.app)
}); });
} }
@@ -540,13 +546,16 @@ var UISettingTab = class extends import_obsidian6.PluginSettingTab {
cls: "calloutmanager-setting-tab-viewport vertical-tab-content" cls: "calloutmanager-setting-tab-viewport vertical-tab-content"
}); });
layers.containerEl = layers.scrollEl.createDiv({ cls: "calloutmanager-setting-tab-content" }); layers.containerEl = layers.scrollEl.createDiv({ cls: "calloutmanager-setting-tab-content" });
controlsEl.createDiv({ cls: "modal-close-button" }, (closeButtonEl) => { const closeBtn = new import_obsidian6.ButtonComponent(controlsEl);
closeButtonEl.addEventListener("click", (ev) => { closeBtn.setIcon("lucide-x");
closeBtn.buttonEl.classList.add("modal-close-button");
closeBtn.buttonEl.classList.add("mod-raised");
closeBtn.buttonEl.classList.add("clickable-icon");
closeBtn.onClick((ev) => {
if (!ev.isTrusted) if (!ev.isTrusted)
return; return;
closeSettings(this.app); closeSettings(this.app);
}); });
});
layers.clear(); layers.clear();
const initLayer = this.initLayer ?? this.createDefault(); const initLayer = this.initLayer ?? this.createDefault();
this.initLayer = null; this.initLayer = null;
@@ -1410,12 +1419,14 @@ var SHADOW_DOM_RESET_STYLES = `
/* Use transparent background color. */ /* Use transparent background color. */
body { body {
background-color: transparent !important; background-color: transparent !important;
contain: none;
} }
`; `;
// src/callout-resolver.ts // src/callout-resolver.ts
var CalloutResolver = class { var CalloutResolver = class {
constructor() { constructor(app) {
this.obsidianApp = app;
this.hostElement = document.body.createDiv({ this.hostElement = document.body.createDiv({
cls: "calloutmanager-callout-resolver" cls: "calloutmanager-callout-resolver"
}); });
@@ -1435,7 +1446,7 @@ var CalloutResolver = class {
* @param styles The new style elements to use. * @param styles The new style elements to use.
*/ */
reloadStyles() { reloadStyles() {
this.calloutPreview.setColorScheme(getCurrentThemeID2(app)); this.calloutPreview.setColorScheme(getCurrentThemeID2(this.obsidianApp));
this.calloutPreview.updateStyles(); this.calloutPreview.updateStyles();
this.calloutPreview.removeStyles((el) => el.getAttribute("data-callout-manager") === "style-overrides"); this.calloutPreview.removeStyles((el) => el.getAttribute("data-callout-manager") === "style-overrides");
} }
@@ -1478,11 +1489,11 @@ var CalloutResolver = class {
}; };
// src/callout-settings.ts // src/callout-settings.ts
function currentCalloutEnvironment(app2) { function currentCalloutEnvironment(app) {
const theme = getCurrentThemeID(app2) ?? "<default>"; const theme = getCurrentThemeID(app) ?? "<default>";
return { return {
theme, theme,
colorScheme: getCurrentThemeID2(app2) colorScheme: getCurrentThemeID2(app)
}; };
} }
function calloutSettingsToCSS(id, settings, environment) { function calloutSettingsToCSS(id, settings, environment) {
@@ -1578,8 +1589,8 @@ function getCalloutsFromCSS(css) {
// src/css-watcher.ts // src/css-watcher.ts
var StylesheetWatcher = class { var StylesheetWatcher = class {
constructor(app2) { constructor(app) {
this.app = app2; this.app = app;
this.listeners = /* @__PURE__ */ new Map(); this.listeners = /* @__PURE__ */ new Map();
this.cachedSnippets = /* @__PURE__ */ new Map(); this.cachedSnippets = /* @__PURE__ */ new Map();
this.cachedObsidian = null; this.cachedObsidian = null;
@@ -3309,7 +3320,7 @@ var MiscEditor = class {
}; };
// src/panes/edit-callout-pane/section-info.ts // src/panes/edit-callout-pane/section-info.ts
function renderInfo(app2, callout, containerEl) { function renderInfo(app, callout, containerEl) {
const frag = document.createDocumentFragment(); const frag = document.createDocumentFragment();
const contentEl = frag.createDiv({ cls: "calloutmanager-edit-callout-section" }); const contentEl = frag.createDiv({ cls: "calloutmanager-edit-callout-section" });
contentEl.createEl("h2", { text: "About this Callout" }); contentEl.createEl("h2", { text: "About this Callout" });
@@ -3327,7 +3338,7 @@ function renderInfo(app2, callout, containerEl) {
return; return;
} }
el.appendText(". It was added to Obsidian by the "); el.appendText(". It was added to Obsidian by the ");
appendSourceInfo(app2, el, callout.sources[0]); appendSourceInfo(app, el, callout.sources[0]);
el.appendText("."); el.appendText(".");
return; return;
} }
@@ -3336,7 +3347,7 @@ function renderInfo(app2, callout, containerEl) {
for (const source of callout.sources) { for (const source of callout.sources) {
const itemEl = sources.createEl("li"); const itemEl = sources.createEl("li");
itemEl.appendText("The "); itemEl.appendText("The ");
appendSourceInfo(app2, itemEl, source); appendSourceInfo(app, itemEl, source);
itemEl.appendText("."); itemEl.appendText(".");
} }
}); });
@@ -3364,7 +3375,7 @@ function appendColorInfo(el, callout) {
(colorEl) => colorEl.style.setProperty("--resolved-callout-color", callout.color) (colorEl) => colorEl.style.setProperty("--resolved-callout-color", callout.color)
); );
} }
function appendSourceInfo(app2, el, source) { function appendSourceInfo(app, el, source) {
switch (source.type) { switch (source.type) {
case "builtin": case "builtin":
el.appendText("built-in callouts"); el.appendText("built-in callouts");
@@ -3381,7 +3392,7 @@ function appendSourceInfo(app2, el, source) {
return true; return true;
case "theme": { case "theme": {
el.appendText("theme "); el.appendText("theme ");
const themeName = getThemeManifest(app2, source.theme)?.name ?? source.theme; const themeName = getThemeManifest(app, source.theme)?.name ?? source.theme;
el.createSpan({ cls: "calloutmanager-edit-callout--callout-source", text: themeName }); el.createSpan({ cls: "calloutmanager-edit-callout--callout-source", text: themeName });
return true; return true;
} }
@@ -3717,7 +3728,7 @@ var ManageCalloutsPane = class extends UIPane {
if (action === "edit") { if (action === "edit") {
this.nav.open(new EditCalloutPane(this.plugin, id, this.viewOnly)); this.nav.open(new EditCalloutPane(this.plugin, id, this.viewOnly));
} else if (action === "insert") { } else if (action === "insert") {
const view = app.workspace.getActiveViewOfType(import_obsidian22.MarkdownView); const view = this.plugin.app.workspace.getActiveViewOfType(import_obsidian22.MarkdownView);
if (view) { if (view) {
const cursor = view.editor.getCursor(); const cursor = view.editor.getCursor();
view.editor.replaceRange( view.editor.replaceRange(
@@ -3726,7 +3737,7 @@ var ManageCalloutsPane = class extends UIPane {
cursor cursor
); );
view.editor.setCursor(cursor.line + 1, 10); view.editor.setCursor(cursor.line + 1, 10);
closeSettings(app); closeSettings(this.plugin.app);
} }
} }
} }
@@ -3841,7 +3852,20 @@ var import_obsidian24 = require("obsidian");
var import_obsidian23 = require("obsidian"); var import_obsidian23 = require("obsidian");
// CHANGELOG.md // CHANGELOG.md
var CHANGELOG_default = `# Version 1.1.0 var CHANGELOG_default = `# Version 1.1.1
> [!new] Export Callouts as CSS
> There's now a button to copy your callout changes.
> [!fix] Callout Previews
> Previews are back!
>
> Thank you, [**@alythobani**](https://github.com/alythobani)!
> [!fix] Settings Pane (Mobile)
> It's moved slightly to accomodate the updated Obsidian mobile layout.
# Version 1.1.0
> [!new] In-App Changelogs > [!new] In-App Changelogs
> Learn about plugin changes and new features straight from the horse's mouth. > Learn about plugin changes and new features straight from the horse's mouth.
@@ -3878,10 +3902,10 @@ The first release available on Obsidian's community plugin browser!
`; `;
// src/changelog.ts // src/changelog.ts
function getSections() { function getSections(parent) {
const frag = document.createDocumentFragment(); const frag = document.createDocumentFragment();
const renderedEl = frag.createDiv(); const renderedEl = frag.createDiv();
import_obsidian23.MarkdownRenderer.renderMarkdown(CHANGELOG_default, renderedEl, "", null); import_obsidian23.MarkdownRenderer.renderMarkdown(CHANGELOG_default, renderedEl, "", parent);
const sections = /* @__PURE__ */ new Map(); const sections = /* @__PURE__ */ new Map();
let heading = null; let heading = null;
let sectionContainer = frag.createEl("details"); let sectionContainer = frag.createEl("details");
@@ -3937,7 +3961,7 @@ var ChangelogPane = class extends UIPane {
super(); super();
this.title = "Changelog"; this.title = "Changelog";
this.plugin = plugin; this.plugin = plugin;
const sections = getSections(); const sections = getSections(plugin);
const frag = document.createDocumentFragment(); const frag = document.createDocumentFragment();
this.changelogEl = frag.createDiv({ cls: "calloutmanager-changelog" }); this.changelogEl = frag.createDiv({ cls: "calloutmanager-changelog" });
Array.from(sections.values()).forEach(({ version, containerEl: el }) => { Array.from(sections.values()).forEach(({ version, containerEl: el }) => {
@@ -4004,12 +4028,25 @@ var ManagePluginPane = class extends UIPane {
new import_obsidian24.Setting(containerEl).setHeading().setName("What's New").setDesc(`Version ${this.plugin.manifest.version}`).addExtraButton((btn) => { new import_obsidian24.Setting(containerEl).setHeading().setName("What's New").setDesc(`Version ${this.plugin.manifest.version}`).addExtraButton((btn) => {
btn.setIcon("lucide-more-horizontal").setTooltip("More Changelogs").onClick(() => this.nav.open(new ChangelogPane(plugin))); btn.setIcon("lucide-more-horizontal").setTooltip("More Changelogs").onClick(() => this.nav.open(new ChangelogPane(plugin)));
}); });
const latestChanges = getSections().get(this.plugin.manifest.version); const latestChanges = getSections(this.root).get(this.plugin.manifest.version);
if (latestChanges != null) { if (latestChanges != null) {
const desc = document.createDocumentFragment(); const desc = document.createDocumentFragment();
desc.appendChild(latestChanges.contentsEl); desc.appendChild(latestChanges.contentsEl);
new import_obsidian24.Setting(containerEl).setDesc(desc).then((setting) => setting.controlEl.remove()).then((setting) => setting.settingEl.classList.add("calloutmanager-latest-changes")); new import_obsidian24.Setting(containerEl).setDesc(desc).then((setting) => setting.controlEl.remove()).then((setting) => setting.settingEl.classList.add("calloutmanager-latest-changes"));
} }
new import_obsidian24.Setting(containerEl).setHeading().setName("Export");
new import_obsidian24.Setting(containerEl).setName("Callout Styles").setDesc("Export your custom callouts and changes as CSS.").addButton((btn) => {
btn.setButtonText("Copy");
btn.onClick(async () => {
btn.setDisabled(true);
try {
await navigator.clipboard.writeText("/* Exported Styles from Obsidian Callout Manager */\n" + this.plugin.cssApplier.css);
btn.setButtonText("Copied!");
} catch (ex) {
btn.setButtonText("Error");
}
});
});
new import_obsidian24.Setting(containerEl).setHeading().setName("Reset"); new import_obsidian24.Setting(containerEl).setHeading().setName("Reset");
new import_obsidian24.Setting(containerEl).setName("Reset Callout Settings").setDesc("Reset all the changes you made to callouts.").addButton( new import_obsidian24.Setting(containerEl).setName("Reset Callout Settings").setDesc("Reset all the changes you made to callouts.").addButton(
withConfirm((btn) => { withConfirm((btn) => {
@@ -4098,7 +4135,7 @@ var CalloutManagerPlugin = class extends import_obsidian25.Plugin {
await this.loadSettings(); await this.loadSettings();
await this.saveSettings(); await this.saveSettings();
const { settings } = this; const { settings } = this;
this.calloutResolver = new CalloutResolver(); this.calloutResolver = new CalloutResolver(this.app);
this.register(() => this.calloutResolver.unload()); this.register(() => this.calloutResolver.unload());
this.callouts = new CalloutCollection((id) => { this.callouts = new CalloutCollection((id) => {
const { icon, color } = this.calloutResolver.getCalloutProperties(id); const { icon, color } = this.calloutResolver.getCalloutProperties(id);
@@ -4365,3 +4402,5 @@ var CalloutManagerPlugin = class extends import_obsidian25.Plugin {
return this.api.destroyHandle(version, consumerPlugin); return this.api.destroyHandle(version, consumerPlugin);
} }
}; };
/* nosourcemap */
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"id": "callout-manager", "id": "callout-manager",
"version": "1.1.0", "version": "1.1.1",
"description": "Easily create and customize callouts.", "description": "Easily create and customize callouts.",
"author": "eth-p", "author": "eth-p",
"authorUrl": "https://github.com/eth-p", "authorUrl": "https://github.com/eth-p",
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"id": "cmdr", "id": "cmdr",
"name": "Commander", "name": "Commander",
"version": "0.5.4", "version": "0.5.5",
"minAppVersion": "1.4.0", "minAppVersion": "1.4.0",
"description": "Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.", "description": "Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.",
"author": "jsmorabito & phibr0", "author": "jsmorabito & phibr0",
+1 -1
View File
File diff suppressed because one or more lines are too long
+9 -24
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"id": "datacore", "id": "datacore",
"name": "Datacore", "name": "Datacore",
"version": "0.1.28", "version": "0.1.29",
"minAppVersion": "1.4.11", "minAppVersion": "1.4.11",
"description": "Reactive query engine backed by Javascript or a custom query language.", "description": "Reactive query engine backed by Javascript or a custom query language.",
"author": "Michael Brenan", "author": "Michael Brenan",
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
{ {
"id": "external-file-embed-and-link", "id": "external-file-embed-and-link",
"name": "External File Embed and Link", "name": "External File Embed and Link",
"version": "1.5.6", "version": "1.5.9",
"minAppVersion": "0.15.0", "minAppVersion": "0.15.0",
"description": "Embed and link local files outside your vault with relative paths for cross-device and multi-platform compatibility.", "description": "Embed and link local files outside your vault with relative paths for cross-device and multi-platform compatibility.",
"author": "oylbin", "author": "oylbin",
-20
View File
@@ -1,20 +0,0 @@
{
"contactsFolder": "Infos/Kontakte",
"defaultSortColumn": "daysUntilBirthday",
"defaultSortDirection": "asc",
"relationshipTypes": [
"familie",
"freund",
"kollege",
"kommilitone",
"projekt",
"recruiter",
"schule",
"bewerbung",
"thw",
"arzt",
"kol",
"nachbar"
],
"defaultActiveTab": "markdown"
}
File diff suppressed because one or more lines are too long
-10
View File
@@ -1,10 +0,0 @@
{
"id": "friend-tracker",
"name": "Friend Tracker",
"version": "1.3.3",
"minAppVersion": "1.4.14",
"description": "Keep track of friends, birthdays, reminders, and interactions in Obsidian. Build a personal CRM, log connections, and stay organized inside your vault.",
"author": "Dan Au",
"authorUrl": "https://dausign.com",
"isDesktopOnly": false
}
File diff suppressed because it is too large Load Diff
+13 -15
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"id": "janitor", "id": "janitor",
"name": "Janitor", "name": "Janitor",
"version": "1.1.1", "version": "1.1.3",
"minAppVersion": "0.15.0", "minAppVersion": "0.15.0",
"description": "Performs cleanup tasks on the Obsidian vault", "description": "Performs cleanup tasks on the Obsidian vault",
"author": "Gabriele Cannata", "author": "Gabriele Cannata",
+72 -6
View File
@@ -47,21 +47,78 @@ If your plugin does not need CSS, delete this file.
.janitor-file .openFileIcon { .janitor-file .openFileIcon {
right: 0px; right: 0px;
position: absolute; position: absolute;
/* cursor: pointer; */
visibility: hidden; visibility: hidden;
} }
.janitor-file label { .janitor-file label {
width: 100%; width: 100%;
/* cursor: pointer; */
display: flex; display: flex;
align-items: center;
} }
.janitor-file span { .janitor-file-name {
flex: 1;
min-width: 0;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; margin-right: 3.5em;
}
.janitor-icon {
display: flex;
align-items: center;
line-height: 1;
}
.janitor-icon svg {
width: 14px;
height: 14px;
}
.janitor-file-name-text {
display: inline-block;
white-space: nowrap; white-space: nowrap;
margin-right: 4em; }
.janitor-file:hover .janitor-file-name-text {
animation: janitor-marquee 4s ease-in-out infinite alternate;
}
@keyframes janitor-marquee {
0%, 15% { transform: translateX(0); }
85%, 100% { transform: translateX(var(--marquee-offset, 0px)); }
}
.janitor-md-preview-link {
display: contents;
}
.previewFileIcon {
right: 1.5em;
position: absolute;
visibility: hidden;
}
.janitor-file:hover .previewFileIcon {
visibility: visible;
}
.janitor-preview-overlay {
position: fixed;
z-index: 9999;
padding: 6px;
background: var(--background-primary);
border: 1px solid var(--background-modifier-border);
border-radius: 6px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
pointer-events: none;
}
.janitor-preview-overlay img {
display: block;
max-width: 200px;
max-height: 200px;
object-fit: contain;
border-radius: 3px;
} }
.janitor-file:hover .openFileIcon { .janitor-file:hover .openFileIcon {
@@ -72,9 +129,18 @@ If your plugin does not need CSS, delete this file.
outline: auto; outline: auto;
} }
.janitor-main-modal {
width: min(700px, 90vw);
}
/* Ensure hover preview popover appears above the modal overlay */
.popover.hover-popover {
z-index: calc(var(--layer-modal, 200) + 10);
}
.janitor-scan-results { .janitor-scan-results {
overflow-y: auto; overflow-y: auto;
max-height:250px; max-height: 450px;
} }
.janitor-files-wrapper { .janitor-files-wrapper {
+7 -2
View File
@@ -15,7 +15,6 @@
"timelineEndColor": "#4d194d", "timelineEndColor": "#4d194d",
"timestampFormat": "HH:mm", "timestampFormat": "HH:mm",
"hourFormat": "HH", "hourFormat": "HH",
"dataviewSource": "\"Journal\" OR #process/task",
"extendDurationUntilNext": false, "extendDurationUntilNext": false,
"defaultDurationMinutes": 30, "defaultDurationMinutes": 30,
"minimalDurationMinutes": 10, "minimalDurationMinutes": 10,
@@ -24,7 +23,7 @@
"showUnscheduledNestedTasks": true, "showUnscheduledNestedTasks": true,
"showNow": true, "showNow": true,
"showNext": true, "showNext": true,
"pluginVersion": "0.28.0", "pluginVersion": "0.30.0",
"showCompletedTasks": true, "showCompletedTasks": true,
"showSubtasksInTaskBlocks": true, "showSubtasksInTaskBlocks": true,
"icals": [], "icals": [],
@@ -35,6 +34,12 @@
"sortTasksInPlanAfterEdit": true, "sortTasksInPlanAfterEdit": true,
"firstDayOfWeek": "monday", "firstDayOfWeek": "monday",
"multiDayRange": "full-week", "multiDayRange": "full-week",
"showTimelineInSidebar": true,
"timelineColumns": {
"planner": true,
"timeTracker": false
},
"dataviewSource": "\"Journal\" OR #process/task",
"showTimeTracker": false, "showTimeTracker": false,
"showActiveClocks": true, "showActiveClocks": true,
"editMode": "simple", "editMode": "simple",
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"id": "obsidian-day-planner", "id": "obsidian-day-planner",
"name": "Day Planner", "name": "Day Planner",
"version": "0.28.0", "version": "0.30.0",
"minAppVersion": "0.16.0", "minAppVersion": "0.16.0",
"description": "A day planner with clean UI and readable syntax", "description": "A day planner with clean UI and readable syntax",
"author": "James Lynch, continued by Ivan Lednev", "author": "James Lynch, continued by Ivan Lednev",
File diff suppressed because one or more lines are too long
+158 -195
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -6,5 +6,5 @@
"description": "Integrate Git version control with automatic backup and other advanced features.", "description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false, "isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent", "fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.38.0" "version": "2.38.5"
} }
+20 -25
View File
@@ -8,15 +8,6 @@
} }
} }
.git-signs-gutter {
.cm-gutterElement {
/* Needed to align the sign properly for different line heigts. Such as
* when having a heading or list item.
*/
padding-top: 0 !important;
}
}
.workspace-leaf-content[data-type="git-view"] .button-border { .workspace-leaf-content[data-type="git-view"] .button-border {
border: 2px solid var(--interactive-accent); border: 2px solid var(--interactive-accent);
border-radius: var(--radius-s); border-radius: var(--radius-s);
@@ -108,7 +99,7 @@
display: flex; display: flex;
} }
.git-tools .buttons > * { .git-tools .buttons > * {
padding: 0 0; padding: 0;
height: auto; height: auto;
} }
@@ -175,7 +166,7 @@ which itself is adapted from the diff2html library with the following original l
--git-change-bg: #ffd55840; --git-change-bg: #ffd55840;
--git-selected: #3572b0; --git-selected: #3572b0;
--git-delete: #c33; --git-delete: #cc3333;
--git-insert: #399839; --git-insert: #399839;
--git-change: #d0b44c; --git-change: #d0b44c;
--git-move: #3572b0; --git-move: #3572b0;
@@ -538,13 +529,24 @@ which itself is adapted from the diff2html library with the following original l
.d2h-diff-tbody { .d2h-diff-tbody {
position: relative; position: relative;
} }
/* My additions */
.cm-merge-revert {
width: 4em;
}
/* Ensure that merge revert markers are positioned correctly */
.cm-merge-revert > * {
position: absolute;
background-color: var(--background-secondary);
display: flex;
}
} }
/* ====================== Line Authoring Information ====================== */ /* ====================== Line Authoring Information ====================== */
.cm-gutterElement.obs-git-blame-gutter { .cm-gutterElement.obs-git-blame-gutter {
/* Add background color to spacing inbetween and around the gutter for better aesthetics */ /* Add background color to spacing inbetween and around the gutter for better aesthetics */
border-width: 0px 2px 0.2px 2px; border-width: 0px 2px 0.2px;
border-style: solid; border-style: solid;
border-color: var(--background-secondary); border-color: var(--background-secondary);
background-color: var(--background-secondary); background-color: var(--background-secondary);
@@ -557,7 +559,7 @@ which itself is adapted from the diff2html library with the following original l
font-family: monospace; font-family: monospace;
height: 100%; /* ensure, that age-based background color occupies entire parent */ height: 100%; /* ensure, that age-based background color occupies entire parent */
text-align: right; text-align: right;
padding: 0px 6px 0px 6px; padding: 0px 6px;
white-space: pre; /* Keep spaces and do not collapse them. */ white-space: pre; /* Keep spaces and do not collapse them. */
} }
@@ -602,6 +604,11 @@ which itself is adapted from the diff2html library with the following original l
.git-signs-gutter { .git-signs-gutter {
.cm-gutterElement { .cm-gutterElement {
display: grid; display: grid;
/* Needed to align the sign properly for different line heigts. Such as
* when having a heading or list item.
*/
padding-top: 0 !important;
} }
} }
@@ -669,18 +676,6 @@ div:hover > .git-gutter-marker.git-changedelete {
opacity: 0.5; opacity: 0.5;
} }
.git-diff {
.cm-merge-revert {
width: 4em;
}
/* Ensure that merge revert markers are positioned correctly */
.cm-merge-revert > * {
position: absolute;
background-color: var(--background-secondary);
display: flex;
}
}
/* Prevent shifting of the editor when git signs gutter is the only gutter present */ /* Prevent shifting of the editor when git signs gutter is the only gutter present */
.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) { .cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
margin-inline-end: 0; margin-inline-end: 0;
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -1,8 +1,8 @@
{ {
"id": "obsidian-tasks-plugin", "id": "obsidian-tasks-plugin",
"name": "Tasks", "name": "Tasks",
"version": "7.23.1", "version": "8.2.2",
"minAppVersion": "1.4.0", "minAppVersion": "1.8.7",
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.", "description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
"helpUrl": "https://publish.obsidian.md/tasks/", "helpUrl": "https://publish.obsidian.md/tasks/",
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)", "author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
File diff suppressed because one or more lines are too long
+30 -19
View File
@@ -42,13 +42,14 @@
}, },
"openFile": true, "openFile": true,
"openFileInMode": "default", "openFileInMode": "default",
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false,
"fileOpening": { "fileOpening": {
"location": "tab", "location": "tab",
"direction": "vertical", "direction": "vertical",
"mode": "default", "mode": "default",
"focus": true "focus": true
},
"fileExistsBehavior": {
"kind": "prompt"
} }
} }
} }
@@ -99,13 +100,14 @@
}, },
"openFile": true, "openFile": true,
"openFileInMode": "default", "openFileInMode": "default",
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false,
"fileOpening": { "fileOpening": {
"location": "tab", "location": "tab",
"direction": "vertical", "direction": "vertical",
"focus": true, "focus": true,
"mode": "default" "mode": "default"
},
"fileExistsBehavior": {
"kind": "prompt"
} }
} }
}, },
@@ -207,13 +209,14 @@
}, },
"openFile": false, "openFile": false,
"openFileInMode": "default", "openFileInMode": "default",
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false,
"fileOpening": { "fileOpening": {
"location": "tab", "location": "tab",
"direction": "vertical", "direction": "vertical",
"focus": true, "focus": true,
"mode": "default" "mode": "default"
},
"fileExistsBehavior": {
"kind": "prompt"
} }
} }
}, },
@@ -314,13 +317,14 @@
}, },
"openFile": false, "openFile": false,
"openFileInMode": "default", "openFileInMode": "default",
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false,
"fileOpening": { "fileOpening": {
"location": "tab", "location": "tab",
"direction": "vertical", "direction": "vertical",
"focus": true, "focus": true,
"mode": "default" "mode": "default"
},
"fileExistsBehavior": {
"kind": "prompt"
} }
} }
}, },
@@ -387,13 +391,14 @@
}, },
"openFile": true, "openFile": true,
"openFileInMode": "default", "openFileInMode": "default",
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false,
"fileOpening": { "fileOpening": {
"location": "tab", "location": "tab",
"direction": "vertical", "direction": "vertical",
"focus": true, "focus": true,
"mode": "default" "mode": "default"
},
"fileExistsBehavior": {
"kind": "prompt"
} }
} }
} }
@@ -445,13 +450,14 @@
}, },
"openFile": true, "openFile": true,
"openFileInMode": "default", "openFileInMode": "default",
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false,
"fileOpening": { "fileOpening": {
"location": "tab", "location": "tab",
"direction": "vertical", "direction": "vertical",
"focus": true, "focus": true,
"mode": "default" "mode": "default"
},
"fileExistsBehavior": {
"kind": "prompt"
} }
} }
}, },
@@ -558,13 +564,14 @@
}, },
"openFile": true, "openFile": true,
"openFileInMode": "default", "openFileInMode": "default",
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false,
"fileOpening": { "fileOpening": {
"location": "tab", "location": "tab",
"direction": "vertical", "direction": "vertical",
"mode": "default", "mode": "default",
"focus": true "focus": true
},
"fileExistsBehavior": {
"kind": "prompt"
} }
} }
} }
@@ -614,13 +621,14 @@
}, },
"openFile": true, "openFile": true,
"openFileInMode": "default", "openFileInMode": "default",
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false,
"fileOpening": { "fileOpening": {
"location": "tab", "location": "tab",
"direction": "vertical", "direction": "vertical",
"mode": "default", "mode": "default",
"focus": true "focus": true
},
"fileExistsBehavior": {
"kind": "prompt"
} }
} }
}, },
@@ -690,7 +698,7 @@
"devMode": false, "devMode": false,
"templateFolderPath": "Resources/Templates", "templateFolderPath": "Resources/Templates",
"announceUpdates": "all", "announceUpdates": "all",
"version": "2.12.0", "version": "2.12.3",
"globalVariables": {}, "globalVariables": {},
"onePageInputEnabled": false, "onePageInputEnabled": false,
"disableOnlineFeatures": true, "disableOnlineFeatures": true,
@@ -764,6 +772,9 @@
"migrateFileOpeningSettings": true, "migrateFileOpeningSettings": true,
"setProviderModelDiscoveryMode": true, "setProviderModelDiscoveryMode": true,
"backfillFileOpeningDefaults": true, "backfillFileOpeningDefaults": true,
"migrateProviderApiKeysToSecretStorage": true "migrateProviderApiKeysToSecretStorage": true,
} "consolidateFileExistsBehavior": true,
"repairTemplateFileExistsBehavior": true
},
"macros": []
} }
+68 -80
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"id": "quickadd", "id": "quickadd",
"name": "QuickAdd", "name": "QuickAdd",
"version": "2.12.0", "version": "2.12.3",
"minAppVersion": "1.11.4", "minAppVersion": "1.11.4",
"description": "Quickly add new pages or content to your vault.", "description": "Quickly add new pages or content to your vault.",
"author": "Christian B. B. Houmann", "author": "Christian B. B. Houmann",
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3 -5
View File
@@ -3,15 +3,13 @@
"name": "Advanced Tables", "name": "Advanced Tables",
"author": "Tony Grosinger", "author": "Tony Grosinger",
"authorUrl": "https://grosinger.net", "authorUrl": "https://grosinger.net",
"description": "Improved table navigation, formatting, manipulation, and formulas", "description": "Improved table navigation, formatting, manipulation, and formulas.",
"isDesktopOnly": false, "isDesktopOnly": false,
"minAppVersion": "1.0.0", "minAppVersion": "1.0.0",
"version": "0.22.1", "version": "0.23.2",
"js": "main.js",
"fundingUrl": { "fundingUrl": {
"Github Sponsor": "https://github.com/sponsors/tgrosinger", "Github Sponsor": "https://github.com/sponsors/tgrosinger",
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger", "Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
"Paypal": "https://paypal.me/tgrosinger" "Paypal": "https://paypal.me/tgrosinger"
}, }
"donation": "https://buymeacoffee.com/tgrosinger"
} }
+1 -1
View File
@@ -15,7 +15,7 @@
} }
[data-type="advanced-tables-toolbar"] .nav-buttons-container { [data-type="advanced-tables-toolbar"] .nav-buttons-container {
column-gap: 0.2rem; gap: 0.2rem;
margin: 0.2rem 0 0.2rem 0; margin: 0.2rem 0 0.2rem 0;
justify-content: start; justify-content: start;
} }
+25070 -14912
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"id": "task-list-kanban", "id": "task-list-kanban",
"name": "Task List Kanban", "name": "Task List Kanban",
"version": "1.8.0", "version": "2.7.3",
"minAppVersion": "1.5.3", "minAppVersion": "1.5.3",
"description": "Organizes all of the tasks within your files into a kanban view. Reduce duplication of effort when managing and prioritising tasks by simply using the task format in your files to automatically appear in your Task List Kanban.", "description": "Organizes all of the tasks within your files into a kanban view. Reduce duplication of effort when managing and prioritising tasks by simply using the task format in your files to automatically appear in your Task List Kanban.",
"author": "Chris Kerr, Erika Rice Scherpelz", "author": "Chris Kerr, Erika Rice Scherpelz",
+713
View File
@@ -19,3 +19,716 @@ If your plugin does not need CSS, delete this file.
.setting-item.column .setting-item-control > input { .setting-item.column .setting-item-control > input {
width: 100%; width: 100%;
} }
/* Settings modal shell */
.task-list-kanban-settings-modal-container {
display: flex;
flex-direction: column;
overflow: hidden;
width: min(1120px, calc(100vw - 48px));
max-width: 1120px;
}
.task-list-kanban-settings-modal {
display: flex;
flex-direction: column;
flex: 1;
overflow: hidden;
}
.settings-scroll-wrapper {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
min-height: 0;
}
/* Settings header */
.settings-header {
display: flex;
align-items: center;
gap: 12px;
padding-bottom: 14px;
margin-bottom: 0;
border-bottom: 1px solid var(--background-modifier-border);
}
.settings-header h1 {
margin: 0;
flex: 0 0 auto;
}
.settings-header-status {
display: flex;
align-items: center;
gap: 8px;
min-height: 24px;
flex-wrap: wrap;
}
.settings-status-pill {
--settings-pill-color: var(--text-muted);
--settings-pill-background: transparent;
--settings-pill-border: transparent;
display: none;
align-items: center;
max-width: min(520px, calc(100vw - 180px));
padding: 3px 10px;
border-radius: 999px;
color: var(--settings-pill-color);
background: var(--settings-pill-background);
border: 1px solid var(--settings-pill-border);
font-size: var(--font-ui-smaller);
font-weight: 600;
line-height: 1.3;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.settings-status-pill.is-visible {
display: inline-flex;
}
.settings-status-pill-validation {
--settings-pill-color: var(--text-error);
--settings-pill-background: rgba(var(--background-modifier-error-rgb), 0.14);
--settings-pill-border: color-mix(in srgb, var(--background-modifier-error) 75%, transparent);
}
.settings-status-pill-dirty {
--settings-pill-color: var(--text-accent);
--settings-pill-background: color-mix(in srgb, var(--interactive-accent) 12%, transparent);
--settings-pill-border: color-mix(in srgb, var(--interactive-accent) 35%, transparent);
}
.settings-button-bar {
flex-shrink: 0;
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 0 0;
border-top: 1px solid var(--background-modifier-border);
}
.task-list-kanban-confirm-modal {
min-width: min(420px, calc(100vw - 64px));
}
.task-list-kanban-confirm-modal h2 {
margin-top: 0;
}
.confirm-modal-actions {
display: flex;
justify-content: flex-end;
gap: 8px;
margin-top: 18px;
}
.settings-body {
display: grid;
grid-template-columns: 180px minmax(0, 1fr);
gap: 24px;
flex: 1;
min-height: 0;
padding-top: 18px;
}
.settings-nav {
display: flex;
flex-direction: column;
gap: 4px;
padding: 2px 0 12px;
overflow-y: auto;
min-height: 0;
border-right: 1px solid var(--background-modifier-border);
}
.settings-nav button {
justify-content: flex-start;
width: calc(100% - 14px);
height: auto;
min-height: 32px;
padding: 6px 10px;
border-radius: var(--radius-s);
color: var(--text-muted);
background: transparent;
box-shadow: none;
font-size: var(--font-ui-small);
font-weight: 600;
text-align: left;
}
.settings-nav button:hover,
.settings-nav button:focus-visible {
color: var(--text-normal);
background: var(--background-modifier-hover);
}
.settings-content {
overflow-y: auto;
overflow-x: hidden;
min-height: 0;
padding: 0 2px 12px 0;
scroll-behavior: smooth;
}
.settings-section {
padding-bottom: 22px;
scroll-margin-top: 10px;
}
.settings-section + .settings-section {
padding-top: 20px;
border-top: 1px solid var(--background-modifier-border);
}
.settings-section-header {
margin-bottom: 14px;
}
.settings-section-header h2 {
margin: 0 0 4px;
font-size: 1.35em;
}
.settings-section-header .setting-item-description {
margin: 0;
max-width: 760px;
color: var(--text-muted);
}
.settings-section-body > .setting-item:first-child {
border-top: 0;
}
.settings-subsection {
margin-top: 12px;
}
/* Column editor layout */
.column-editor-section {
margin-bottom: 0;
}
.column-editor-intro {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 12px;
}
.column-editor-intro .setting-item-description {
margin: 0;
color: var(--text-muted);
}
.column-editor-controls button {
height: 30px;
padding: 4px 10px;
font-size: var(--font-ui-smaller);
}
.column-editor-list {
display: flex;
flex-direction: column;
gap: 6px;
margin-top: 0;
}
.column-editor-row {
display: flex;
position: relative;
align-items: center;
gap: 8px;
padding: 8px;
border: 1px solid var(--background-modifier-border);
border-radius: var(--radius-s);
background: var(--background-primary);
transition: background-color 140ms ease, border-color 140ms ease, box-shadow 140ms ease;
overflow: visible;
min-width: 0;
}
.column-editor-row.is-bookend {
align-items: center;
}
.column-editor-row-content {
flex: 1 1 auto;
min-width: 0;
}
.column-editor-row:hover {
border-color: color-mix(in srgb, var(--background-modifier-border) 55%, var(--text-muted));
background: color-mix(in srgb, var(--background-primary) 92%, var(--background-modifier-hover));
}
.column-editor-row:focus-within {
border-color: var(--background-modifier-border-focus);
box-shadow: 0 0 0 1px color-mix(in srgb, var(--background-modifier-border-focus) 45%, transparent);
}
.column-editor-row.is-drop-target {
box-shadow: none;
}
.column-editor-row.is-dragging {
opacity: 0.4;
}
.column-editor-row.is-drop-before::before,
.column-editor-row.is-drop-after::before {
content: "";
position: absolute;
left: 8px;
right: 8px;
height: 2px;
background: var(--interactive-accent);
pointer-events: none;
}
.column-editor-row.is-drop-before::after,
.column-editor-row.is-drop-after::after {
content: "";
position: absolute;
left: 4px;
width: 10px;
height: 10px;
border-radius: 999px;
background: var(--interactive-accent);
pointer-events: none;
}
.column-editor-row.is-drop-before::before {
top: -2px;
}
.column-editor-row.is-drop-before::after {
top: -6px;
}
.column-editor-row.is-drop-after::before {
bottom: -2px;
}
.column-editor-row.is-drop-after::after {
bottom: -6px;
}
.column-editor-handle,
.column-editor-handle-spacer {
width: 20px;
height: 20px;
flex: 0 0 20px;
}
.column-editor-handle {
cursor: grab;
color: var(--text-muted);
font-size: 14px;
line-height: 1;
opacity: 0.7;
padding: 0;
border-radius: 999px;
display: inline-flex;
align-items: center;
justify-content: center;
transform: translateY(0);
}
.column-editor-handle:active {
cursor: grabbing;
}
.column-editor-fields {
display: flex;
gap: 10px;
min-width: 0;
}
.column-editor-summary {
display: grid;
grid-template-columns: minmax(180px, 1fr) 24px minmax(150px, auto);
align-items: center;
gap: 8px;
min-width: 0;
width: 100%;
}
.column-editor-row.is-bookend .column-editor-summary {
grid-template-columns: minmax(180px, 1fr) minmax(150px, auto);
}
.column-editor-pill {
display: inline-flex;
align-items: center;
min-height: 24px;
max-width: 180px;
padding: 2px 8px;
border-radius: var(--radius-s);
color: var(--text-muted);
background: var(--background-secondary);
border: 1px solid var(--background-modifier-border);
font-size: var(--font-ui-smaller);
font-weight: 600;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.column-editor-popover-anchor {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 0;
}
.column-editor-match-anchor {
justify-content: flex-start;
}
.column-editor-popover {
position: absolute;
top: calc(100% + 8px);
z-index: 20;
display: flex;
flex-direction: column;
gap: 10px;
padding: 10px;
border: 1px solid var(--background-modifier-border);
border-radius: var(--radius-s);
background: var(--background-primary);
box-shadow: var(--shadow-s);
}
.column-editor-color-popover {
left: 50%;
width: 230px;
transform: translateX(-50%);
}
.column-editor-match-popover {
right: 0;
width: min(360px, calc(100vw - 64px));
}
.column-editor-popover-field {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
}
.column-editor-summary-button {
appearance: none;
-webkit-appearance: none;
cursor: pointer;
box-shadow: none;
}
.column-editor-summary-button:hover,
.column-editor-summary-button:focus-visible {
color: var(--text-normal);
background: var(--background-modifier-hover);
}
.column-editor-fields.column-editor-fields-inline {
align-items: center;
flex: 1 1 auto;
flex-wrap: wrap;
width: 100%;
padding: 1px 0 2px;
}
.column-editor-field {
display: flex;
align-items: center;
gap: 6px;
min-width: 0;
flex: 0 1 auto;
}
.column-editor-fields.column-editor-fields-inline .column-editor-field {
align-self: center;
}
.column-editor-field input,
.column-editor-field select {
margin: 0;
}
.column-editor-field .setting-input,
.column-editor-field select {
height: 34px;
}
.column-editor-field-label {
flex: 1 1 220px;
min-width: 180px;
}
.column-editor-field-label .setting-input {
width: 100%;
text-overflow: ellipsis;
}
.column-editor-field-label .setting-input:focus {
text-overflow: clip;
}
.column-editor-field-tag {
flex: 1 1 260px;
min-width: 0;
position: relative;
overflow: visible;
}
.column-editor-tag-select-host {
display: flex;
width: 100%;
min-width: 0;
max-width: 100%;
overflow: visible;
}
.column-editor-field-match,
.column-editor-field-visibility,
.column-editor-field-status {
flex: 0 1 auto;
}
.column-editor-field-match select {
width: auto;
min-width: 0;
padding-left: 10px;
padding-right: 28px;
}
.column-editor-field-visibility select {
min-width: 150px;
}
.column-editor-field-status select {
min-width: 120px;
}
.column-editor-field-status .setting-input {
width: 84px;
}
.column-editor-field-status .setting-input:not(.is-visible) {
display: none;
}
.column-editor-inline-label {
flex: 0 0 auto;
color: var(--text-muted);
font-size: var(--font-ui-smaller);
font-weight: 600;
white-space: nowrap;
letter-spacing: 0.01em;
}
.column-editor-field-color .setting-input {
width: 96px;
}
.column-editor-color-swatch {
width: 18px;
height: 18px;
border-radius: 999px;
border: 1px solid var(--background-modifier-border);
appearance: none;
-webkit-appearance: none;
background-color: var(--column-editor-swatch-color, transparent) !important;
background-image: repeating-conic-gradient(
from 45deg,
var(--background-primary) 0deg 90deg,
var(--background-secondary) 90deg 180deg
);
background-blend-mode: overlay;
flex: 0 0 18px;
padding: 0;
cursor: pointer;
box-shadow: none;
}
.column-editor-summary-swatch {
justify-self: center;
}
.column-editor-color-swatch.has-color {
border-color: color-mix(in srgb, var(--background-modifier-border) 40%, var(--text-normal));
background-image: none;
}
.column-editor-color-picker {
position: absolute;
opacity: 0;
pointer-events: none;
width: 0;
height: 0;
padding: 0;
border: 0;
}
.column-editor-rename-option {
display: none;
align-items: center;
gap: 6px;
color: var(--text-muted);
font-size: var(--font-ui-smaller);
white-space: nowrap;
flex: 0 0 auto;
cursor: pointer;
user-select: none;
padding: 2px 0;
}
.column-editor-rename-option input,
.column-editor-rename-option label {
cursor: pointer;
}
.column-editor-remove-rail {
display: flex;
align-items: center;
justify-content: center;
margin-left: auto;
flex: 0 0 20px;
width: 20px;
}
.column-editor-remove-rail > button {
width: 20px;
height: 20px;
padding: 0;
border-radius: 999px;
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--text-faint);
opacity: 0.75;
transition: color 140ms ease, background-color 140ms ease, opacity 140ms ease;
}
.column-editor-remove-rail > button:hover {
color: var(--text-muted);
background: var(--background-modifier-hover);
opacity: 1;
}
.column-editor-controls {
display: flex;
justify-content: flex-start;
margin-top: 12px;
}
/* Responsive layout */
@media (max-width: 900px) {
.task-list-kanban-settings-modal-container {
width: min(920px, calc(100vw - 24px));
}
.settings-body {
grid-template-columns: 1fr;
gap: 12px;
}
.settings-nav {
position: sticky;
top: 0;
z-index: 4;
flex-direction: row;
gap: 6px;
overflow-x: auto;
padding: 0 0 10px;
border-right: 0;
border-bottom: 1px solid var(--background-modifier-border);
background: var(--background-primary);
}
.settings-nav button {
width: auto;
flex: 0 0 auto;
white-space: nowrap;
}
.column-editor-summary {
grid-template-columns: minmax(160px, 1fr) auto auto;
}
}
@media (max-width: 720px) {
.column-editor-row {
align-items: flex-start;
}
.column-editor-intro,
.column-editor-summary,
.column-editor-fields.column-editor-fields-inline,
.column-editor-field {
flex-direction: column;
align-items: stretch;
}
.column-editor-intro {
align-items: stretch;
}
.column-editor-summary {
display: flex;
}
.column-editor-row.is-bookend .column-editor-summary {
display: flex;
}
.column-editor-fields.column-editor-fields-inline {
gap: 12px;
}
.column-editor-field-label,
.column-editor-field-tag,
.column-editor-field-match,
.column-editor-field-visibility,
.column-editor-field-status,
.column-editor-field-color {
flex: 1 1 auto;
}
.column-editor-field-tag,
.column-editor-tag-select-host {
width: 100%;
}
.column-editor-popover-anchor,
.column-editor-popover,
.column-editor-popover-field {
width: 100%;
}
.column-editor-popover {
position: static;
transform: none;
margin-top: 8px;
}
.column-editor-field-match select,
.column-editor-field-visibility select,
.column-editor-field-status select,
.column-editor-field-status .setting-input,
.column-editor-field-color .setting-input {
width: 100%;
}
.column-editor-pill {
max-width: 100%;
}
}
File diff suppressed because one or more lines are too long
+9 -3
View File
@@ -1,11 +1,17 @@
{ {
"id": "templater-obsidian", "id": "templater-obsidian",
"name": "Templater", "name": "Templater",
"version": "2.18.1", "version": "2.20.6",
"description": "Create and use templates", "description": "Advanced templating and automation using handlebars-like syntax.",
"minAppVersion": "1.5.0", "minAppVersion": "1.12.2",
"author": "SilentVoid", "author": "SilentVoid",
"authorUrl": "https://github.com/SilentVoid13", "authorUrl": "https://github.com/SilentVoid13",
"fundingUrl": {
"GitHub Sponser (Zachatoo, maintainer)": "https://github.com/sponsors/Zachatoo",
"Ko-fi (Zachatoo, maintainer)": "https://ko-fi.com/zachatoo",
"GitHub Sponser (SilentVoid13, creator)": "https://github.com/sponsors/SilentVoid13",
"Paypal (SilentVoid13, creator)": "https://www.paypal.com/donate?hosted_button_id=U2SRGAFYXT32Q"
},
"helpUrl": "https://silentvoid13.github.io/Templater/", "helpUrl": "https://silentvoid13.github.io/Templater/",
"isDesktopOnly": false "isDesktopOnly": false
} }
+1 -1
View File
@@ -221,6 +221,6 @@ textarea.templater-prompt-input:focus {
} }
li.CodeMirror-hint-active { li.CodeMirror-hint-active {
background: #08f; background: #0088ff;
color: white; color: white;
} }
+42
View File
@@ -0,0 +1,42 @@
{
"contactsFolder": "Infos/Kontakte",
"defaultHashtag": "#process/contact",
"processors": {
"UidProcessor": true,
"SyncUnknownProcessor": true
},
"syncSelected": "CardDAV",
"syncEnabled": true,
"groupInsights": true,
"CardDAV": {
"addressBookUrl": "https://cal.thpeetz.de/tpeetz/77b1c975-45b5-3e60-fda2-7a396513c6f7/",
"syncInterval": 900,
"authKey": "dHBlZXR6OmlrYW1rdWJtMjA=",
"authType": "basic"
},
"createFieldsKeys": [
"N.PREFIX",
"N.GN",
"N.MN",
"N.FN",
"N.SUFFIX",
"TEL[CELL]",
"TEL[HOME]",
"TEL[WORK]",
"EMAIL[HOME]",
"EMAIL[WORK]",
"BDAY",
"PHOTO",
"ADR[HOME].STREET",
"ADR[HOME].LOCALITY",
"ADR[HOME].POSTAL",
"ADR[HOME].COUNTRY",
"URL[WORK]",
"ORG",
"ROLE",
"CATEGORIES",
"X-RELATIONSHIP",
"X-LAST-CHAT",
"SOCIALPROFILE[LINKEDIN]"
]
}
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
{
"id": "vcf-contacts",
"name": "VCF Contacts",
"version": "2.4.2",
"minAppVersion": "1.4.10",
"description": "Effortlessly manage, organize, and interact with your contacts. Import, export, and structure vCard (VCF) files seamlessly while keeping all contact details accessible in your knowledge base. Includes click-to-call, right-click copy, structured metadata, and more!",
"author": "Roland Broekema",
"authorUrl": "https://github.com/broekema41/",
"isDesktopOnly": false,
"forkedFrom": "https://github.com/vbeskrovnov/obsidian-contacts/"
}
+440
View File
@@ -0,0 +1,440 @@
.menu-vert {
border: 1px solid var(--titlebar-background-focused);
margin-left: 2px;
margin-right: 2px;
}
.contacts-sidebar {
display: flex;
flex-direction: column;
height: 100%;
}
.contacts-menu {
padding-right: 12px;
}
.contacts-view {
overflow-y: auto;
scrollbar-gutter: stable;
}
.insights-results {
border-bottom: 1px solid var(--background-modifier-border);
margin-bottom: 8px;
padding-bottom: 8px;
}
.insights-results-header {
color: var(--text-muted);
display: flex;
align-items: center;
justify-content: space-between;
margin: 0;
min-width: 0;
padding: 0;
white-space: nowrap;
}
.insights-result-count {
flex-grow: 1;
}
.insights-results-settings {
flex-basis: 100%;
margin: var(--size-4-4) var(--size-4-4) 0 0;
}
.insights-results-settings .setting-item-name {
font-size: var(--font-ui-small);
}
.contacts-view-close {
position: relative;
width: 34px;
padding-top: 34px;
}
.contact-card {
padding: 8px;
}
.contact-modal-buttons {
margin-top: 12px;
}
.contact-modal-buttons button {
font-weight: "bold";
margin-right: 8px;
}
.contact-modal-label {
display: block;
font-weight: bold;
margin-bottom: 5px;
}
.contact-modal-input {
margin-bottom: 12px;
width: 100%;
}
.inner-card-container {
container-name: bizzy-card;
container-type: inline-size;
display: flex;
flex-flow: row wrap;
justify-content: center;
}
.bizzy-card-container {
position: relative;
display: flex;
border: 2px solid var(--divider-color);
min-width: 200px;
max-width: 450px;
flex-basis: auto;
flex-wrap: wrap;
border-radius: 12px;
overflow: hidden;
}
.bizzy-card-container:hover {
.biz-shape {
background: var(--tag-background-hover);
border: 2px solid var(--tag-border-color-hover);
}
}
.bizzy-card-container .biz-contact-actions {
position: absolute;
right: 4px;
top: 4px;
display: flex;
}
.bizzy-card-container .biz-contact-actions .clickable-icon {
padding: var(--size-2-2);
}
/*=============================
Left Content
===============================*/
.biz-card-a {
position: relative;
width: 160px;
height: 220px;
padding: 10px;
transition: 0.2s ease;
color: var(--text-normal);
display: flex;
}
.bizzy-card-organization {
position: absolute;
width: 196px;
padding: 2px;
padding-left: 14px;
padding-right: 14px;
left: 0;
right: 0;
top: 0;
font-weight: bold;
text-align: right;
color: var(--nav-item-color);
border-bottom: 2px solid var(--divider-color);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.biz-headshot {
margin-left: auto;
margin-right: auto;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 12px;
}
.bizzy-card-organization + .biz-card-a .biz-headshot {
padding-top: 27px;
}
.avatar-initials {
display: block;
width: 100px;
height: 100px;
box-shadow: 0 0 0 2px var(--tag-border-color);
background-color: var(--tag-background);
border-radius: 50%;
overflow: hidden;
}
.avatar-initials img,
.avatar-initials svg {
display: block; /* removes extra white space under inline elements */
width: 100%;
height: 100%;
}
.avatar-initials svg text {
fill: var(--tag-color);
}
.biz-words-container {
display: flex;
flex-direction: column;
margin-top: 6px;
margin-bottom: 6px;
justify-content: center;
flex-grow: 1;
}
.biz-name {
text-align: center;
font-family: 'Anton', sans-serif;
font-size: 1.1rem;
margin-bottom: 2px;
}
.biz-title {
text-align: center;
font-family: 'Nunito', sans-serif;
font-size: 0.8em;
line-height: 1.2;
}
/*=============================
Right Content
===============================*/
.biz-card-b {
position: relative;
width: 230px;
height: 220px;
padding: 10px;
transition: 0.2s ease;
}
.biz-shape {
position: absolute;
background: var(--tag-background);
transform: scaleX(1) rotate(16deg);
top: -60px;
left: 20px;
height: 308px;
border-radius: 50px;
width: 300px;
color: var(--tag-color);
border: 2px solid var(--tag-border-color);
z-index: -1;
}
.biz-contact-box {
position: absolute;
top: 0;
bottom: 0;
padding: 10px 10px 16px 0px;
width: 215px;
display: flex;
flex-direction: column;
justify-content: flex-end;
text-align: right;
}
.biz-item {
font-size: 12px;
letter-spacing: 0.15rem;
margin-left: 0px;
cursor: pointer;
padding-top: 5px;
font-family: 'Nunito', sans-serif;
font-weight: 300;
color:var(--tag-color);
overflow-wrap: break-word;
}
.biz-item a {
text-decoration: none;
}
.action-card {
position: relative;
width: 100%;
padding: 12px;
border-radius: 12px;
border: 2px solid var(--divider-color);
margin: 8px 0;
display: flex;
flex-direction: column;
align-items: normal;
}
.action-card-actions {
display: flex;
gap: var(--size-4-2);
flex-wrap: wrap;
font-size: var(--font-ui-medium);
}
.action-card-content {
flex: 1 1 auto;
color: var(--metadata-label-text-color);
margin-right: 15px;
}
.action-card-content.action-card-content--no-height {
min-height: 0;
}
.action-card-button {
align-self: start;
}
.action-card-content :first-child {
margin-top: 0;
}
.action-card:last-child {
margin-bottom: 0;
}
.view-content:has(.contacts-sidebar) {
padding-right: 0;
}
.nav-actionable-container {
container-name: actionable-card;
container-type: inline-size;
display: flex;
flex-direction: column;
align-items: center;
}
/*=============================
Business Card Mobile
===============================*/
@Container bizzy-card (max-width: 410px) {
.bizzy-card-container {
width: 240px;
}
.avatar-initials {
width: 85px;
height: 85px;
}
.bizzy-card-organization {
width: 240px;
padding: 6px 65px 6px 14px;
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.biz-card-a {
width: 240px;
height: 185px;
padding-bottom: 0;
}
.biz-headshot {
position: relative;
margin-top: 6px;
}
.biz-card-b {
width: 240px;
height: 180px;
padding: 0;
}
.biz-shape {
transform: scaleX(1) rotate(85deg);
top: -2px;
left: 0;
}
.biz-contact-box {
position: absolute;
margin-top: 150px;
width: 100%;
padding: 0 10px 10px 0;
}
}
.progress-bar.progress-bar--contacts,
.progress-bar.progress-bar--contacts .progress-bar-indicator {
width: 100%;
}
.setting-item-spacer {
margin-top: 0.75em;
}
.settings-tag-list {
display: flex;
flex-wrap: wrap;
}
.settings-tag-list a {
display: flex;
justify-content: center;
align-items: center;
margin-right: 4px;
margin-bottom: 4px;
}
.menu .menu-item[data-section="vcf-sync-danger"] {
color: var(--text-error);
}
.menu .menu-item[data-section="vcf-sync-danger"] .menu-item-icon {
color: var(--text-error);
}
.badge-wrapper {
position: relative;
display: inline-block;
}
.badge-count {
position: absolute;
top: -4px;
right: -4px;
color: var(--icon-color-active);
background-color: var(--background-modifier-active-hover);
/*background-color: var(--interactive-accent);*/
/*color: var(--titlebar-background-focused);*/
font-size: 0.85rem;
line-height: 1;
padding: 1px 4px;
border-radius: 999px;
min-width: 16px;
text-align: center;
box-shadow: 0 0 2px rgba(0,0,0,0.3);
pointer-events: none;
}
.clickable-icon.is-pulsing {
opacity: var(--icon-opacity-hover);
color: var(--icon-color-active);
background-color: var(--background-modifier-active-hover);
animation: pulse-color-bg 1.8s infinite ease-in-out;
}
@keyframes pulse-color-bg {
0%, 100% {
color: var(--icon-color-active);
background-color: var(--background-modifier-active-hover);
}
50% {
color: var(--icon-color-hover, #fff);
background-color: var(--background-modifier-active);
}
}
+3 -41
View File
@@ -3,26 +3,6 @@
"aliases": "aliases", "aliases": "aliases",
"cssclasses": "multitext", "cssclasses": "multitext",
"tags": "tags", "tags": "tags",
"meditation": "checkbox",
"date": "date",
"last_chat": "date",
"total": "number",
"current": "number",
"anteil": "number",
"birthday": "date",
"friends": "text",
"Steuerbescheid": "date",
"Aufbewahrung": "date",
"Entsorgung": "date",
"Erstaus­strahlung_DE": "date",
"Erstaus­strahlung_UK": "date",
"created": "date",
"family": "text",
"heizung": "number",
"warmwasser": "number",
"former_company": "multitext",
"weight": "number",
"plank": "number",
"TQ_explain": "checkbox", "TQ_explain": "checkbox",
"TQ_extra_instructions": "text", "TQ_extra_instructions": "text",
"TQ_short_mode": "checkbox", "TQ_short_mode": "checkbox",
@@ -42,28 +22,10 @@
"TQ_show_start_date": "checkbox", "TQ_show_start_date": "checkbox",
"TQ_show_tags": "checkbox", "TQ_show_tags": "checkbox",
"TQ_show_task_count": "checkbox", "TQ_show_task_count": "checkbox",
"TQ_show_toolbar": "checkbox",
"TQ_show_tree": "checkbox", "TQ_show_tree": "checkbox",
"TQ_show_urgency": "checkbox", "TQ_show_urgency": "checkbox",
"leseliste": "multitext", "X-LAST-CHAT": "date",
"rework": "checkbox", "BDAY": "date"
"work_hours": "number",
"imported": "checkbox",
"work_home": "checkbox",
"work_office": "checkbox",
"lecture_date": "date",
"gilde": "multitext",
"gekauft": "checkbox",
"Erstaustrahlung_USA": "date",
"Folge": "number",
"deciders": "multitext",
"consulted": "multitext",
"informed": "multitext",
"shareholder": "multitext",
"former_project": "multitext",
"TQ_show_toolbar": "checkbox",
"reference": "multitext",
"wikipedia": "text",
"children": "multitext",
"parents": "multitext"
} }
} }
-29
View File
@@ -1,29 +0,0 @@
---
name: David Bursch
phone: +49 3379 314741
mobile:
phone_work: +49 511 101-2911
email: david.bursch@vvv-net.de
email_work: extern-david.bursch@iuk.lst.niedersachsen.de
telegram:
linkedin:
birthday:
last_chat:
friends:
type: contact
relationship: projekt
template: "[[Resources/Templates/contact]]"
tags:
- process/contact
---
## Termine
```dataview
LIST FROM [[]] AND !outgoing([[]]) AND "Journal"
```
## Referenzen
```dataview
list from [[]] and !outgoing([[]]) AND !"Journal" AND !"Infos/Kontakte"
```
-31
View File
@@ -1,31 +0,0 @@
---
name: Frank Wolter
phone: +49 30 382 43 91
address:
street: Wernerwerkdamm 36
city: Berlin
code: 13629
country: Deutschland
telegram:
linkedin:
birthday:
last_chat:
friends:
married: "[[Petra Wolter]]"
type: contact
relationship: freund
template: "[[Resources/Templates/contact]]"
tags:
- process/contact
---
## Termine
```dataview
LIST FROM [[]] AND !outgoing([[]]) AND "Journal"
```
## Referenzen
```dataview
list from [[]] and !outgoing([[]]) AND !"Journal" AND !"Infos/Kontakte"
```
@@ -1,32 +0,0 @@
---
name: Harald Göttlicher
phone: +49 179 2017600
email: Harald.Goettlicher@de.bosch.com
telegram: "+491792017600"
signal: "+491792017600"
linkedin:
xing: https://www.xing.com/profile/Harald_Goettlicher
birthday:
last_chat:
friends:
type: contact
relationship: projekt
template: "[[Resources/Templates/contact]]"
company: "[[Robert Bosch GmbH]]"
location: Plochingen
tags:
- process/contact
former_project:
- "[[Buildteam]]"
---
## Termine
```dataview
LIST FROM [[]] AND !outgoing([[]]) AND "Journal"
```
## Referenzen
```dataview
list from [[]] and !outgoing([[]]) AND !"Journal" AND !"Infos/Kontakte"
```
-32
View File
@@ -1,32 +0,0 @@
---
name: Katharina Smuda
phone:
address:
street: Mühlenstrasse 13
city: Langen
code:
state: Brandenburg
country: Deutschland
telegram:
linkedin:
birthday: 1971-06-28
last_chat:
friends:
married: "[[Uwe Reinhardt]]"
type: contact
relationship: kollege
template: "[[Resources/Templates/contact]]"
tags:
- process/contact
---
## Termine
```dataview
LIST FROM [[]] AND !outgoing([[]]) AND "Journal"
```
## Referenzen
```dataview
list from [[]] and !outgoing([[]]) AND !"Journal" AND !"Infos/Kontakte"
```
@@ -14,4 +14,4 @@ SLA Service-Level-Agreement beschreiben und ein Beispiel für eine IT-Dienstleis
SLA für die IT-Dienstleistung "Hilfe bei IT-Problemen (Software- Installation/Update)" schreiben SLA für die IT-Dienstleistung "Hilfe bei IT-Problemen (Software- Installation/Update)" schreiben
## Unteraufgaben ## Unteraufgaben
- [ ] Erklärung SLA mit Beispiel erstellen [start:: 2024-11-07] - [ ] Erklärung SLA mit Beispiel erstellen [start:: 2026-06-08]
@@ -0,0 +1,13 @@
---
tags:
- process/task
reference:
- "[[PURR Development]]"
---
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [ ] Austausch zu PURR
@@ -1,18 +0,0 @@
---
status: Backlog
tags:
- process/task
---
> [!task]+
> Project::
> Bar:: `$= dv.view('total-progress-bar', {file: "Installation Booklore"})`
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [ ] Installation Booklore [start:: 2026-02-23] [scheduled:: 2026-04-13]
@@ -26,7 +26,7 @@ sudo apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')
## Unteraufgaben ## Unteraufgaben
- [ ] Remove obsolete config [start:: 2024-10-13] [scheduled:: 2026-04-13] - [x] Remove obsolete config [start:: 2024-10-13] [scheduled:: 2026-04-13] [completion:: 2026-05-07]
- [ ] Replace cron-jobs with systemd- services and timers - [ ] Replace cron-jobs with systemd- services and timers
- [x] Stop and disable service unattended-upgrades [start:: 2025-07-21] [completion:: 2025-07-27] - [x] Stop and disable service unattended-upgrades [start:: 2025-07-21] [completion:: 2025-07-27]
- [x] Entfernen von zfs-fuse [start:: 2025-07-27] [completion:: 2025-07-27] - [x] Entfernen von zfs-fuse [start:: 2025-07-27] [completion:: 2025-07-27]
@@ -34,5 +34,5 @@ sudo apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')
- [x] Ersetzen von SysV Skripten mit systemd [start:: 2025-07-21] [completion:: 2025-08-02] - [x] Ersetzen von SysV Skripten mit systemd [start:: 2025-07-21] [completion:: 2025-08-02]
- [x] Deinstallation von task und taskd [scheduled:: 2025-08-02] [completion:: 2025-08-02] - [x] Deinstallation von task und taskd [scheduled:: 2025-08-02] [completion:: 2025-08-02]
- [x] Installation von Certbot NginX Plugin [scheduled:: 2025-08-02] [completion:: 2025-08-02] - [x] Installation von Certbot NginX Plugin [scheduled:: 2025-08-02] [completion:: 2025-08-02]
- [ ] Installation rustup [scheduled:: 2026-04-13] - [x] Installation rustup [scheduled:: 2026-04-13] [completion:: 2026-05-07]
- [x] Installation von uv [scheduled:: 2025-08-02] [completion:: 2025-08-02] - [x] Installation von uv [scheduled:: 2025-08-02] [completion:: 2025-08-02]
@@ -29,10 +29,10 @@ return function View() {
## Aufgaben ## Aufgaben
- [x] Lohnsteuerbescheinigung Thomas [start:: 2026-01-28] [completion:: 2026-01-29] - [x] Lohnsteuerbescheinigung Thomas [start:: 2026-01-28] [completion:: 2026-01-29]
- [ ] Lohnsteuerbescheinigung Claudia [start:: 2026-03-01] [completion:: 2026-05-20] - [ ] Lohnsteuerbescheinigung Claudia [start:: 2026-06-08] [completion:: 2026-05-20]
- [x] Nebenkostenabrechnung wegen haushaltsnaher Dienstleistungen #process/task [start:: 2026-01-27] [scheduled:: 2026-01-28] [completion:: 2026-02-05] - [x] Nebenkostenabrechnung wegen haushaltsnaher Dienstleistungen #process/task [start:: 2026-01-27] [scheduled:: 2026-01-28] [completion:: 2026-02-05]
- [ ] Aufwendungen für Werbungskosten (Entfernung für Kilometerpauschale) [start:: 2026-01-01] [scheduled:: 2026-03-03] - [ ] Aufwendungen für Werbungskosten (Entfernung für Kilometerpauschale) [start:: 2026-01-01] [scheduled:: 2026-06-08]
- [ ] Bescheid erhalten [start:: 2026-06-01] - [ ] Bescheid erhalten [start:: 2026-06-08]
## Aufgaben ## Aufgaben
```dataviewjs ```dataviewjs
@@ -12,4 +12,4 @@ Bar:: `$= dv.view('total-progress-bar', {file: "Hautkrebsscreening"})`
## Überlegungen ## Überlegungen
## Unteraufgaben ## Unteraufgaben
- [ ] Termin zur Vorsorge vereinbart [start:: 2024-07-04] - [ ] Termin zur Vorsorge vereinbart [start:: 2026-06-08]
@@ -13,4 +13,4 @@ status: Archiv
## Unteraufgaben ## Unteraufgaben
- [ ] Nebenkostenabrechnung erhalten [start:: 2026-10-01] - [ ] Nebenkostenabrechnung erhalten [start:: 2026-10-01]
- [ ] Nebenkostenabrechnung eingescannt [start:: 2025-10-01] - [ ] Nebenkostenabrechnung eingescannt [start:: 2026-06-08]
-21
View File
@@ -1,21 +0,0 @@
---
tags:
- process/task
subtitle: Confluence
---
## Project Info
## Thoughts
## Resources
## Review questions
## Aufgaben
- [ ] Confluence Seiten überprpüft [scheduled:: 2026-04-13]
- [ ] Apache Servicemix Confluence Seite erstellen [scheduled:: 2026-04-13]
- [ ] Apache Camel Karavan Confluence Seite erstellen [scheduled:: 2026-04-13]
- [ ] Spring Boot mit Camel Confluence Seite erstellen [scheduled:: 2026-04-13]
@@ -1,20 +0,0 @@
---
status: Archiv
tags:
- process/task
---
> [!task]+
> Project:: [[Tibuci]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Dokumentation auf Stand bringen"})`
## Aufgabenbeschreibung
Übertragung des PDF in Confluence
## Überlegungen
## Unteraufgaben
- [x] Dokumentation auf Stand bringen [start:: 2026-01-15] [due:: 2026-01-16] [completion:: 2026-01-15]
@@ -1,19 +0,0 @@
---
status: Backlog
tags:
- process/task
---
> [!task]+
> Project:: [[Maintenance der cimt-Talend-Komponenten übernehmen]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Erste Komponenten auf neues SDK umgestellt"})`
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [ ] Erste Komponenten auf neues SDK umgestellt [start:: 2026-02-17] [due:: 2026-09-30]
- [ ] Umgestellte Komponenten laufen beim Kunden [start:: 2026-02-17] [due:: 2026-09-30]
@@ -16,4 +16,4 @@ tags:
## Unteraufgaben ## Unteraufgaben
- [x] Github Repository für nvim-config erstellen [start:: 2025-07-18] [due:: 2025-07-21] [completion:: 2025-07-18] - [x] Github Repository für nvim-config erstellen [start:: 2025-07-18] [due:: 2025-07-21] [completion:: 2025-07-18]
- [ ] README.md für github Repository nvim-config schreiben [scheduled:: 2026-04-13] - [ ] README.md für github Repository nvim-config schreiben [scheduled:: 2026-06-03]
@@ -1,23 +0,0 @@
---
status: In Arbeit
tags:
- process/task
---
> [!task]+
> Project:: [[Tibuci]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Google Cloud Projekt für Tibuci aufsetzen"})`
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [x] Google Cloud Projekt für Tibuci aufsetzen #process/task [start:: 2026-02-26] [scheduled:: 2026-03-05] [completion:: 2026-03-05]
- [x] [[Frank Füllbier]] um Erzeugung des Projektes gebeten [start:: 2026-02-27] [scheduled:: 2026-03-05] [completion:: 2026-03-05]
- [x] GCP Container Registry für Tibuci aktivieren #process/task [start:: 2026-02-26] [scheduled:: 2026-03-09] [completion:: 2026-03-09]
- [x] Bestehendes Image roars-report:0.0.1 in Container Registry ablegen #process/task [start:: 2026-02-26] [scheduled:: 2026-03-09] [completion:: 2026-03-09]
- [ ] Laden des Image roars-report aus Container Registry #process/task [start:: 2026-02-26] [scheduled:: 2026-04-13]
- [x] Erstellen von Service-Accounts für Zugriff auf Google Artifact Registry [start:: 2026-02-26] [scheduled:: 2026-04-02] [completion:: 2026-04-02]
@@ -1,16 +0,0 @@
---
tags:
- process/task
---
> [!task]+
> Project:: [[Tibuci]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Kleines Übergabe-Planning"})`
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [ ] Kleines Übergabe-Planning
@@ -1,17 +0,0 @@
---
status: Backlog
tags:
- process/task
---
> [!task]+
> Project:: [[Maintenance der cimt-Talend-Komponenten übernehmen]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Umfang klären und Developmentplan aufstellen"})`
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [ ] Umfang klären und Developmentplan aufstellen [start:: 2026-02-17] [due:: 2026-06-30]
@@ -0,0 +1,72 @@
---
tags:
- process/project
- cimt/cip
reference:
- "[[Managed Services Team]]"
---
> [!abstract]+ Project
> Progress:: `$= dv.view('project-progress', {file: 'CIP067 Aufbau eines einheitlichen, wiederverwendbaren Monitoring-Stacks'})`
> Target:: `$= dv.view('project-target', {file: 'CIP067 Aufbau eines einheitlichen, wiederverwendbaren Monitoring-Stacks'})`
> Bar:: `$= dv.view('project-progress-bar', {file: 'CIP067 Aufbau eines einheitlichen, wiederverwendbaren Monitoring-Stacks'})`
> Tasks:: `$= const aufgaben = dv.page('CIP067 Aufbau eines einheitlichen, wiederverwendbaren Monitoring-Stacks').file.inlinks.where(t => { const mt = dv.page(t.path); return mt.tags?.includes('process/task') && mt.status === 'In Arbeit'}); if (aufgaben.length > 0) { dv.header(4, aufgaben.length > 1 ? "Aufgaben" : "Aufgabe"); dv.list(aufgaben) }`
## Project Info
### Stakeholder
- [[Frank Füllbier]]
### Mitglieder
- [[Marcel Kuszak]]
- [[Bastian Liesigk]]
- [[Christian Kiltz]]
## Thoughts
## Resources
- https://cimtag.atlassian.net/wiki/spaces/CW/pages/5308350465/CIP+067+Aufbau+eines+einheitlichen+wiederverwendbaren+Monitoring-Stacks
## Review questions
## Termine
```dataview
LIST
FROM [[]] AND !outgoing([[]]) AND "Journal"
SORT date
```
## Aufgaben
## Offene Aufgaben
```dataviewjs
const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')).where(p => dv.page(p.path).file.tasks.length != dv.page(p.path).file.tasks.where(t => t.fullyCompleted === true).length);
dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => {
const page = dv.page(p.path);
const tasks = page.file.tasks;
return [
page.file.link,
page.status,
tasks.where(t => t.fullyCompleted === true).length,
tasks.length
]
}));
```
## Aufgaben
```dataviewjs
const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task'));
dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => {
const page = dv.page(p.path);
const tasks = page.file.tasks;
return [
page.file.link,
page.status,
tasks.where(t => t.fullyCompleted === true).length,
tasks.length
]
}));
```
+1 -1
View File
@@ -24,7 +24,7 @@ SORT location
### Aufgaben ### Aufgaben
- [ ] Erstellung einer Email-Vorlage für die Einladung [start:: 2026-01-12] - [ ] Erstellung einer Email-Vorlage für die Einladung [start:: 2026-06-08]
- [x] Einladung zu den Lightning Talks am 16.1.26 versendet [start:: 2026-01-12] [due:: 2026-01-13] [completion:: 2026-01-14] - [x] Einladung zu den Lightning Talks am 16.1.26 versendet [start:: 2026-01-12] [due:: 2026-01-13] [completion:: 2026-01-14]
- [x] Überprüfung der Terminserie [start:: 2026-01-15] [scheduled:: 2026-01-30] [due:: 2026-02-15] [completion:: 2026-01-30] - [x] Überprüfung der Terminserie [start:: 2026-01-15] [scheduled:: 2026-01-30] [due:: 2026-02-15] [completion:: 2026-01-30]
- [x] Einladung zum Orga-Treffen absprechen [start:: 2026-02-20] [due:: 2026-03-13] [completion:: 2026-03-02] - [x] Einladung zum Orga-Treffen absprechen [start:: 2026-02-20] [due:: 2026-03-13] [completion:: 2026-03-02]
@@ -7,9 +7,11 @@ lightning_talks_orga: Berlin
## 🗓️Agenda ## 🗓️Agenda
Dieser Lightning Talks Termin wurde abgeasgt und auf den nächsten Lightning Talks Termin verschoben [[2026-06-19 Lightning Talks]].
## 📤 Gewünschtes Ergebnis ## 📤 Gewünschtes Ergebnis
## 📝Notizen ## 📝Notizen
## ✔️ Aufgaben ## ✔️ Aufgaben
- [ ] Einladung gesendet [start:: 2026-05-08] [due:: 2026-05-11] - [-] Einladung gesendet [start:: 2026-05-08] [due:: 2026-05-12] [cancelled:: 2026-05-26]
@@ -0,0 +1,14 @@
---
tags:
- process/meeting
- event/lightning_talk
lightning_talks_orga: Berlin
---
## 🗓️Agenda
## 📤 Gewünschtes Ergebnis
## 📝Notizen
## ✔️ Aufgaben
+20 -2
View File
@@ -4,17 +4,35 @@ tags:
--- ---
## Team ## Team
```dataview ```dataview
TABLE location AS Standort TABLE ADR[WORK].LOCALITY AS Standort
FROM [[]] AND !outgoing([[]]) AND "Infos/Kontakte" FROM [[]] AND !outgoing([[]]) AND "Infos/Kontakte"
SORT file.name DESC SORT file.name DESC
LIMIT 20 LIMIT 20
``` ```
## Links ## Links
- https://cimt-objects.zammad.com
## Offene Aufgaben
```dataviewjs
const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')).where(p => dv.page(p.path).file.tasks.length != dv.page(p.path).file.tasks.where(t => t.fullyCompleted === true).length);
dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => {
const page = dv.page(p.path);
const tasks = page.file.tasks;
return [
page.file.link,
page.status,
tasks.where(t => t.fullyCompleted === true).length,
tasks.length
]
}));
```
## Aufgaben ## Aufgaben
```dataviewjs ```dataviewjs
const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')).where(p => dv.page(p.path).file.tasks.length != dv.page(p.path).file.tasks.where(t => t.fullyCompleted === true).length); //const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task'));
const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')).where(p => dv.page(p.path).file.tasks.length == dv.page(p.path).file.tasks.where(t => t.fullyCompleted === true).length);
dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => { dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => {
const page = dv.page(p.path); const page = dv.page(p.path);
@@ -14,4 +14,4 @@ tags:
## Unteraufgaben ## Unteraufgaben
- [x] AD-Benutzer für alanta erhalten [start:: 2026-02-19] [scheduled:: 2026-03-13] [completion:: 2026-03-13] - [x] AD-Benutzer für alanta erhalten [start:: 2026-02-19] [scheduled:: 2026-03-13] [completion:: 2026-03-13]
- [ ] RDP-Zugang erfolgreich getestet [start:: 2026-03-16] [scheduled:: 2026-04-13] - [ ] RDP-Zugang erfolgreich getestet [start:: 2026-03-16] [scheduled:: 2026-06-03]
@@ -1,27 +0,0 @@
---
tags:
- process/task
reference:
- "[[Back Shop TK GmbH]]"
---
## Aufgabenbeschreibung
## Überlegungen
## Termine
```dataview
LIST
FROM [[]] AND !outgoing([[]]) AND "Journal"
SORT file.name DESC
LIMIT 20
```
## Unteraufgaben
- [x] Backshop Outtasking SOBS Oracle Datenbank [start:: 2026-03-16] [scheduled:: 2026-03-16] [completion:: 2026-03-16]
- [x] Backshop Outtasking SOBS Oracle Datenbank [start:: 2026-03-19] [scheduled:: 2026-03-19] [completion:: 2026-03-19]
- [x] Backshop Outtasking SOBS Oracle Datenbank [start:: 2026-03-23] [scheduled:: 2026-03-23] [completion:: 2026-03-23]
- [x] Backshop Outtasking SOBS Oracle Datenbank [repeat:: every week on Monday, Thursday] [start:: 2026-03-30] [scheduled:: 2026-03-30] [completion:: 2026-03-31]
- [x] Backshop Outtasking SOBS Oracle Datenbank [repeat:: every week on Monday, Thursday] [created:: 2026-03-31] [start:: 2026-04-02] [scheduled:: 2026-04-02] [completion:: 2026-04-02]
- [x] Backshop Outtasking SOBS Oracle Datenbank [repeat:: every week on Monday, Thursday] [created:: 2026-04-02] [start:: 2026-04-06] [scheduled:: 2026-04-07] [completion:: 2026-04-07]
- [x] Backshop Outtasking SOBS Oracle Datenbank [repeat:: every week on Monday, Thursday] [created:: 2026-04-07] [start:: 2026-04-09] [scheduled:: 2026-04-09] [completion:: 2026-04-09]
- [ ] Backshop Outtasking SOBS Oracle Datenbank [repeat:: every week on Monday, Thursday] [created:: 2026-04-09] [start:: 2026-04-13] [scheduled:: 2026-04-13]
@@ -13,5 +13,5 @@ tags:
## Unteraufgaben ## Unteraufgaben
- [ ] Benutzer-Account bei Enersuisse angelegt [start:: 2026-02-19] [scheduled:: 2026-04-13] - [ ] Benutzer-Account bei Enersuisse angelegt [start:: 2026-02-19] [scheduled:: 2026-05-07]
- [x] [[Marcel Kuszak]] fragt Ansprechpartner bei Enersuisse [start:: 2026-02-19] [scheduled:: 2026-03-25] [completion:: 2026-03-25] - [x] [[Marcel Kuszak]] fragt Ansprechpartner bei Enersuisse [start:: 2026-02-19] [scheduled:: 2026-03-25] [completion:: 2026-03-25]
@@ -0,0 +1,15 @@
---
tags:
- process/task
reference:
- "[[Mobiterra]]"
---
## Aufgabenbeschreibung
## Überlegungen
Rückfrage an [[Philip Joschko]] bezüglich Benutzer Accounts und Zugang
## Unteraufgaben
- [ ] Einrichten der Mobitera Benutzer Accounts [start:: 2026-05-11] [scheduled:: 2026-06-03]
@@ -1,28 +0,0 @@
---
tags:
- process/task
reference:
- "[[Harry Brot GmbH]]"
---
## Aufgabenbeschreibung
## Überlegungen
## Termine
```dataview
LIST
FROM [[]] AND !outgoing([[]]) AND "Journal"
SORT file.name DESC
LIMIT 20
```
## Unteraufgaben
- [x] Harry Brot Outtasking Datenbanken [start:: 2026-03-16] [scheduled:: 2026-03-16] [completion:: 2026-03-16]
- [x] Harry Brot Outtasking Datenbanken [start:: 2026-03-19] [scheduled:: 2026-03-19] [completion:: 2026-03-19]
- [x] Harry Brot Outtasking Datenbanken [start:: 2026-03-23] [scheduled:: 2026-03-23] [completion:: 2026-03-23]
- [x] Harry Brot Outtasking Datenbanken [repeat:: every week on Monday, Thursday] [start:: 2026-03-30] [scheduled:: 2026-03-30] [completion:: 2026-03-31]
- [x] Harry Brot Outtasking Datenbanken [repeat:: every week on Monday, Thursday] [created:: 2026-03-31] [start:: 2026-04-02] [scheduled:: 2026-04-02] [completion:: 2026-04-02]
- [x] Harry Brot Outtasking Datenbanken [repeat:: every week on Monday, Thursday] [created:: 2026-04-02] [start:: 2026-04-06] [scheduled:: 2026-04-07] [completion:: 2026-04-07]
- [x] Harry Brot Outtasking Datenbanken [repeat:: every week on Monday, Thursday] [created:: 2026-04-02] [start:: 2026-04-09] [scheduled:: 2026-04-09] [completion:: 2026-04-09]
- [ ] Harry Brot Outtasking Datenbanken [repeat:: every week on Monday, Thursday] [created:: 2026-04-09] [start:: 2026-04-13] [scheduled:: 2026-04-13]
@@ -12,8 +12,27 @@ reference:
## Überlegungen ## Überlegungen
Linux **project quotas** (`prjquota`) allow you to set limits on directories and their future subdirectories, but they require manual configuration for each specific path rather than automatic inheritance for newly created directories. 
To implement this, you must:
- **Enable the feature**: Add `prjquota` to the mount options in `/etc/fstab` and remount the filesystem.
- **Define projects**: Edit `/etc/projects` to assign a unique Project ID to the target directory (e.g., `/app/project1`).
- **Map IDs**: Edit `/etc/projid` to link the Project ID to a human-readable name.
- **Set limits**: Use `xfs_quota` to set soft and hard limits for that Project ID. 
This method applies quotas to the specified directory and all its contents, including **future subdirectories** created within that path, but you must manually define the quota for each new top-level project directory you wish to limit.
## Links ## Links
- https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/dm-gateway-setting-up.htm - https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/dm-gateway-setting-up.htm
- https://community.qlik.com/t5/Official-Support-Articles/Qlik-Data-Gateway-installation-requirements-Data-Movement/ta-p/2091557
- https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/dm-gateway-setting-up.htm
- https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/supported-sources.htm
- https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-data-2.htm
- https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/AzureSQLMSCDC/Prereqs-sql-server-cdc.htm
- https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/postgresql-target.htm
- https://search.brave.com/ask?q=How+do+I+reset+or+modify+existing+prjquota+limits%3F&conversation=0904310594262d07a7936d9aa689d413fdc4
- https://search.brave.com/search?q=prjquota+set+limits+for+subdirectories+of+given+path&summary=1&conversation=0904da0eee1946f8461b4a15b8888452d6b1
- https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/managing_file_systems/assembly_limiting-storage-space-usage-on-xfs-with-quotas_managing-file-systems
## Termine ## Termine
```dataview ```dataview
@@ -26,6 +45,10 @@ LIMIT 20
## Installationslog ## Installationslog
````shell ````shell
[root@vsrv-qlik-dmgw-dev bin] fdisk /dev/sda
[root@vsrv-qlik-dmgw-dev bin] mkfs.xfs /dev/sda1
[root@vsrv-qlik-dmgw-dev bin] mkdir /data
[root@vsrv-qlik-dmgw-dev bin] blkid /dev/sda1 > /etc/fstab
[root@vsrv-qlik-dmgw-dev bin] cat /etc/fstab [root@vsrv-qlik-dmgw-dev bin] cat /etc/fstab
# #
@@ -43,6 +66,9 @@ UUID=12d381e2-428a-4a8b-bbd4-eb5cbf972065 /boot xfs defaul
/dev/mapper/rl-home /home xfs defaults 0 0 /dev/mapper/rl-home /home xfs defaults 0 0
/dev/mapper/rl-swap none swap defaults 0 0 /dev/mapper/rl-swap none swap defaults 0 0
/dev/sda1 /opt xfs defaults 0 0 /dev/sda1 /opt xfs defaults 0 0
[root@vsrv-qlik-dmgw-dev bin] systemctl daemon-reload
[root@vsrv-qlik-dmgw-dev bin] mount -a
```` ````
````Shell ````Shell
@@ -70,6 +96,24 @@ agentctl arep_csv2prq fix_permissions kinit libmongocr
agentctl.dll.config arep_login.sh irpcd klist libsolclient.so repagent repctl.sh upgrade_services.sh agentctl.dll.config arep_login.sh irpcd klist libsolclient.so repagent repctl.sh upgrade_services.sh
arepbq arep.sh kdestroy libe_sqlite3.so makeconv repctl site_arep_login.sh arepbq arep.sh kdestroy libe_sqlite3.so makeconv repctl site_arep_login.sh
[root@vsrv-qlik-dmgw-dev bin] ./repagent agentctl qcs set_config --tenant_url hoyer.de.qlikcloud.com [root@vsrv-qlik-dmgw-dev bin] ./repagent agentctl qcs set_config --tenant_url hoyer.de.qlikcloud.com
[root@vsrv-qlik-dmgw-dev bin] ./repagent agentctl qcs get_registration
{"agentType":"data-movement","kid":"cc055914-9918-4930-a482-e3bad6132212","publicKey":"-----BEGIN CERTIFICATE-----\nMIIE4TCCAsmgAwIBAgIJAP5E6EgJ9YJmMA0GCSqGSIb3DQEBCwUAMB4xHDAaBgNVBAMTE1FDU0Nv\r\nbm5lY3Rpb25Ccm9rZXIwHhcNMjYwNTEyMjIwMDAwWhcNMzYwNTA5MjIwMDAwWjAeMRwwGgYDVQQD\r\nExNRQ1NDb25uZWN0aW9uQnJva2VyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwNuc\r\nqtuQoMBurPYCZTgCnsRUpSxBnyku57WN0th21dMZWGbR+KkZVyk5NH1tgZ1pxdy0TinWsghjjKHY\r\nzeOpZdRQgRAsgLLKcdt9k2I/EUQFtxZ0i6Fh/iwuEuawM0EJWThivEDfTCW2K2/b/FCOGvf6yp4C\r\nd2Z5ChzQ/XZyehQdaESxuW4FH4YeaLAG0t9ZgNsKxwRDU51Uf26UQX+SETj9BX2gCEGcR8ig+Vqe\r\nhtv0/K22FgnnyFfqDHdnIkNuNB6DK6yoBYEaday7juAbYb1nO7x1PM56p3yiowX+3R2N/wH0pctw\r\nwYE+pidqXzkcMy+32q+v1MdPcckKli0v5D62W+2eM7poN3KRlP6qykOCKj4cSL9ATJVYqOq3dgi1\r\nYdsKyoEehXiZtUDDpIaraXgN6awAPQWUAlNmXrTiOzrJTiYcDd/6x8JqSrcN7ezPo1cq50yO1MjU\r\nJTvjdc7NrUE7GILRLnwbkCIpbF980QYH2GLsOuVIFro/3mOUiZIudMYLvNQ1lEPlLwF28s35fRVl\r\nHwVYY4NdNRrkLAbSnL6oUTvFHib41Gw68vEaSeP+QmRxnK8JLnXzJ79DTUKYM9l/U8ndWcgQqW0J\r\nlM1vDHJD0Kc7iErAXaYsYAZC7ld8QD965xZgEScfiaXRuqqh63VlvC81mOXgQh/0Fvt4CVUCAwEA\r\nAaMiMCAwHgYDVR0RBBcwFYITUUNTQ29ubmVjdGlvbkJyb2tlcjANBgkqhkiG9w0BAQsFAAOCAgEA\r\nQJ8k3jcv9YTValHZGFsFs5ijFVHaRRzSOzeT43QSQHrobdtHivOmpWwaIgP3MPVShVlnJwMmi6vE\r\nYORVa2QEQ0STxExmT7jFREGe9i1mBIjvYjQh6Oel1neS02G7puTC0CjpeiFXHYymIcwL5rheeGxS\r\ngcVbiDG9y/x+JFs6eJavAdyoKvDub6wPh7VcSRq0raWbdfGUZLyHpmXqZ7YQUdk2o6q+aE2X6fgL\r\nbCG0ssnXJQ/1FhZL6S8ueSJ0UbjNQ7SgQUVyGSF+uXnlCmdl1pwqxgIu+CtJxfn3QD6jV8ifBD1Z\r\n02FP4sFnPErCjZETssodRnAnd+rv7fbO/8G/QFalRl+xKWsUwxeMYa6BWrXH0hXxqsT+D3r9NAhK\r\nN1z9vuin4ElJf1fBPdP3dnJ9XeQLIrrIQ8TdNiH+TeKx8btaToiOvu/d+hfjk+xvY1XL7t55w8N4\r\ngp/nBaggelAh5C57dPk/B47mGDNyQBbSVq1fe7JIJZ+vYD2tFRyrhqJuuZnXSKUHdrNhOROltnr8\r\n8RNVxuww3icYJI7HrqBb7WDsl6vBpvnFULBZzbIOdtZL5L3cH4oNcrsNWUeHMcn/fQxNedpTnRDg\r\nubC4Vq+apguqjmAD0ytVnA0TJyCMYn++gfSIuG+jfW8RSntfgp0US1SNlTdEJovsOHjGH20CT+g=\n-----END CERTIFICATE-----\n"}
ReplicateAgent Control Program completed successfully.
[root@vsrv-qlik-dmgw02 bin] systemctl start repagent
````
````shell
[root@vsrv-qlik-dmgw-dev etc] nvim fstab
[root@vsrv-qlik-dmgw-dev bin] cat fstab
````
````shell
[root@vsrv-qlik-dmgw-dev rpm] cd /opt/qlik/gateway/movement/drivers/bin/
[root@vsrv-qlik-dmgw-dev bin] ./install mysql
[root@vsrv-qlik-dmgw-dev bin] ./install sqlserver
[root@vsrv-qlik-dmgw-dev bin] ./install postgres
[root@vsrv-qlik-dmgw-dev bin] systemctl restart repagent
```` ````
## Unteraufgaben ## Unteraufgaben
@@ -77,3 +121,6 @@ arepbq arep.sh kdestroy libe_sqlite3.so makeconv
- [x] Hoyer Installation Data Movement Gateway on vsrv-qlik-dmgw-dev [start:: 2026-04-21] [scheduled:: 2026-04-22] [completion:: 2026-04-23] - [x] Hoyer Installation Data Movement Gateway on vsrv-qlik-dmgw-dev [start:: 2026-04-21] [scheduled:: 2026-04-22] [completion:: 2026-04-23]
- [x] Verzeichnis /opt nicht als Mountpoint eingerichtet mit mindestens 300GB Kapazität [[Viktor Becker]] [start:: 2026-04-21] [scheduled:: 2026-04-22] [completion:: 2026-04-22] - [x] Verzeichnis /opt nicht als Mountpoint eingerichtet mit mindestens 300GB Kapazität [[Viktor Becker]] [start:: 2026-04-21] [scheduled:: 2026-04-22] [completion:: 2026-04-22]
- [x] Anfrage bezüglich Erweiterung Festplattenkapazität weitergeleitet [start:: 2026-04-22] [scheduled:: 2026-04-22] [completion:: 2026-04-22] - [x] Anfrage bezüglich Erweiterung Festplattenkapazität weitergeleitet [start:: 2026-04-22] [scheduled:: 2026-04-22] [completion:: 2026-04-22]
- [x] Konfiguration des Mountpoint /opt zur Einrichtung von Project-Quotas [completion:: 2026-04-27]
- [x] Installation des MySQL Datenbanktreibers [completion:: 2026-04-27]
- [x] Installation des MS-SQL Datenbanktreibers [start:: 2026-04-27] [scheduled:: 2026-04-28] [completion:: 2026-04-28]
@@ -0,0 +1,17 @@
---
tags:
- process/task
---
> [!task]+
> Project:: [[Hoyer SE]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Hoyer Installation Talend Data Fabric"})`
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [x] Hoyer Installation Talend Data Fabric [completion:: 2026-06-22]
- [x] Email an Viktor Becker bezüglich Verwendung von Ansible [completion:: 2026-06-22]
@@ -20,5 +20,5 @@ reference:
- [x] SSH-Keys des Managed Services Team erfragen [start:: 2026-03-25] [scheduled:: 2026-03-27] [completion:: 2026-03-27] - [x] SSH-Keys des Managed Services Team erfragen [start:: 2026-03-25] [scheduled:: 2026-03-27] [completion:: 2026-03-27]
- [x] Ticket erstellt [completion:: 2026-03-27] - [x] Ticket erstellt [completion:: 2026-03-27]
- [x] Zugang erhalten [start:: 2026-03-27] [scheduled:: 2026-04-01] [completion:: 2026-04-01] - [x] Zugang erhalten [start:: 2026-03-27] [scheduled:: 2026-04-01] [completion:: 2026-04-01]
- [ ] Hoyer Managed Services Starterpaket [start:: 2026-03-25] [due:: 2026-04-30] - [x] Hoyer Managed Services Starterpaket [start:: 2026-03-25] [scheduled:: 2026-05-11] [completion:: 2026-06-01]
- [ ] Übernahme der POC Dokumentation ins Confluence [start:: 2026-03-24] [scheduled:: 2026-04-13] - [ ] Übernahme der POC Dokumentation ins Confluence [start:: 2026-03-24] [scheduled:: 2026-06-03]
@@ -27,4 +27,4 @@ LIMIT 20
## Unteraufgaben ## Unteraufgaben
- [ ] Konfiguration Hoyer Grafana-Server - [ ] Konfiguration Hoyer Grafana-Server
- [ ] Informationen zu Organisationen in Grafana an [[Malte Dreyer]] senden [start:: 2026-04-21] [scheduled:: 2026-04-27] - [ ] Informationen zu Organisationen in Grafana an [[Malte Dreyer]] senden [start:: 2026-04-21] [scheduled:: 2026-06-03]
@@ -0,0 +1,19 @@
---
tags:
- process/task
---
> [!task]+
> Project:: [[Hermann Hartje KG]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Migration und Switch-Over der QS-Datenbank"})`
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [x] Migration und Switch-Over der QS-Datenbank [completion:: 2026-05-26]
- [x] Synchronisations Meeting [scheduled:: 2026-05-07] [completion:: 2026-05-07]
- [x] Migration der QS-Datenbank [start:: 2026-05-11] [scheduled:: 2026-05-11] [completion:: 2026-05-26]
@@ -0,0 +1,14 @@
---
tags:
- process/task
---
## Aufgabenbeschreibung
## Überlegungen
Termin mit [[Philip Joschko]]
## Unteraufgaben
- [-] Mobitera Service Management [start:: 2026-05-18] [scheduled:: 2026-05-18] [due:: 2026-05-18] [cancelled::2026-05-18]
- [ ] Mobitera Service Management [start:: 2026-05-22] [scheduled:: 2026-06-03]
@@ -0,0 +1,161 @@
---
tags:
- process/task
reference:
- "[[Managed Services Team]]"
---
## Aufgabenbeschreibung
# 🧾 Kurzfassung
Ziel des Meetings war die Definition eines **standardisierten Monitoring-Ansatzes** (Prometheus/Grafana-basiert), der als **wiederverwendbare Baseline** für verschiedene Kunden (z.B. Hoyer, GStA, Hamburg Wasser) dient und zukünftig effizient ausgerollt werden kann.
---
# 🎯 Ziele
- Aufbau eines **einheitlichen Monitoring-Stacks**
- Ablösung/Ergänzung bestehender Lösungen (z.B. CheckMK)
- **Wiederverwendbarkeit & Standardisierung** für alle Kunden
- Reduktion von **Implementierungsaufwand** bei neuen Projekten
---
# 🏗️ Technischer Ansatz (Baseline)
- Betrieb über **Docker (Container-basiert)**
- Basis-Komponenten:
- Prometheus
- Grafana
- Alertmanager
- Enthält bereits:
- Grund-Dashboards (CPU, Disk, etc.)
- Basis-Alerting
- vorkonfigurierte Kommunikation zwischen Komponenten
- Deployment über **Git-Repository inkl. Konfiguration & Secrets (Ansible Vault)**
👉 Grundprinzip:
**80% Standard (Baseline), 20% kundenspezifische Anpassungen**
---
# 🧩 Vorgehen
## 1. Baseline erstellen
- Ausgangspunkt: bestehendes Repo (Messe München)
- Schritte:
- Repo klonen
- Kunden-spezifische Teile entfernen
- neutrales Basis-Repository erstellen
👉 Verantwortlich: **Marcel**
---
## 2. Lokale Testumgebung
- Aufbau einer VM mit Docker bei euch intern
- Ziel:
- Testen des Setups
- Know-how im Team aufbauen (Configs, Alerts, Container)
---
## 3. Rollout bei Kunden
### Zielkunden:
- GStA
- Hoyer
Unterschied:
- **GStA:** später relevant (noch Entwicklung)
- **Hoyer:** kurzfristiger Bedarf
Bereitstellung:
- per Git (wenn Zugriff möglich)
- oder als Export (offline Szenarien)
---
# 🔧 Erweiterungen / Roadmap
## Loki (Logging)
- Einführung von **Loki für Log-Monitoring**
- Vorgehen:
- zunächst intern ausprobieren (Proof of Concept)
- später Integration in Baseline
👉 Ziel: Logs in Grafana sichtbar machen
👉 Verantwortlich: **Bastian (+ Team)**
---
## Weitere geplante Erweiterungen
- RabbitMQ Monitoring
- Integration zusätzlicher Exporter (je nach Kunde)
- Perspektivisch Kubernetes-Unterstützung
---
# 🧪 Hamburg Wasser (Spezialfall)
- Bereits bestehendes Monitoring vorhanden
- Vorgehen:
- vorsichtiges Vorgehen (keine „Experimente“ im Live-System)
- zunächst Loki separat vorbereiten
- später Integration abstimmen
Besonderheit:
- kein Internetzugang → Deployment erschwert (Container-Import notwendig)
---
# 📅 Zeitplan (grob)
- **~12 Wochen:**
- erste Baseline-Version
- interne Testumgebung
- **parallel:**
- Loki Proof-of-Concept
- **danach:**
- erste Einsätze bei Kunden
- iterative Erweiterung
---
# 👥 Aufgabenverteilung
- **Marcel**
- Erstellung der Baseline
- Repo-Aufbau
- **Frank**
- CIP-Struktur & Dokumentation
- **Bastian**
- Loki evaluieren und implementieren
- Logs in Grafana integrieren
- **Team**
- Mitwirken bei Tests & Dokumentation
- Know-how-Aufbau im Umgang mit Docker & Monitoring
---
# ✅ Nutzen / Ergebnis
- Einheitliches Monitoring für alle Kunden
- Schnellere Rollouts (quasi „Monitoring per Install.exe“)
- Weniger Aufwand und Kosten pro Kunde
- Bessere Wartbarkeit & Transparenz
- Basis für zukünftige Erweiterungen (Observability, Kubernetes)
## Überlegungen
## Unteraufgaben
- [x] Monitoring - Next Steps [completion:: 2026-04-29]
@@ -0,0 +1,15 @@
---
tags:
- process/task
reference:
- "[[Mobiterra]]"
---
## Aufgabenbeschreibung
## Überlegungen
Termin mit [[Philip Joschko]]
## Unteraufgaben
- [ ] PASEU Camunda Service Management
@@ -1,19 +0,0 @@
---
tags:
- process/task
---
> [!task]+
> Project:: [[Managed Services Team]], [[Einarbeitung Managed Services Team]], [[Cosnova]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Persönlicher Cosnova Account eingerichtet"})`
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [x] Persönlicher Cosnova Account eingerichtet [start:: 2026-02-19] [due:: 2026-03-02] [completion:: 2026-02-27]
- [x] [[Marcus Lipski]] hat Account angefragt [start:: 2026-02-26] [due:: 2026-03-03] [completion:: 2026-02-27]
- [x] Cosnova Account eingerichtet #process/task [start:: 2026-02-19] [scheduled:: 2026-03-03] [completion:: 2026-03-03]
- [x] MFA für Cosnova eingerichtet #process/task [start:: 2026-02-19] [completion:: 2026-03-03]
@@ -14,5 +14,5 @@ tags:
## Unteraufgaben ## Unteraufgaben
- [x] Vorbereitung Talend System-Update #process/task [completion:: 2026-03-06] - [x] Vorbereitung Talend System-Update #process/task [completion:: 2026-03-06]
- [ ] Talend Entwicklung Update #process/task [scheduled:: 2026-04-13] - [x] Talend Entwicklung Update #process/task [scheduled:: 2026-04-13] [completion:: 2026-04-27]
- [ ] Talend PROD Update #process/task [scheduled:: 2026-04-13] - [x] Talend PROD Update #process/task [scheduled:: 2026-05-04] [completion:: 2026-05-04]
@@ -1,14 +0,0 @@
---
tags:
- process/task
reference:
- "[[BIG KAISER Präzisionswerkzeuge AG]]"
---
## Aufgabenbeschreibung
## Überlegungen
## Unteraufgaben
- [x] Ubuntu Kong API GW - Erneuerung des SSL Zertifikats [start:: 2026-03-13] [scheduled:: 2026-03-13] [completion:: 2026-03-13]
- [ ] Erneuerung des SSL Zertifikats [due:: 2026-06-11] [start:: 2026-06-04] [scheduled:: 2026-06-04]
@@ -15,4 +15,4 @@ reference:
## Unteraufgaben ## Unteraufgaben
- [ ] Upgrade Prod Remote Engines - [x] Upgrade Prod Remote Engines [completion:: 2026-05-07]
@@ -0,0 +1,15 @@
---
tags:
- process/task
reference:
- "[[Mobiterra]]"
---
## Aufgabenbeschreibung
## Überlegungen
Termin mit [[Philip Joschko]]
## Unteraufgaben
- [x] Vorstellung Camunda [start:: 2026-06-02] [scheduled:: 2026-06-02] [completion:: 2026-06-02]
@@ -1,25 +0,0 @@
---
tags:
- process/task
---
> [!task]+
> Project:: [[Managed Services Team]], [[Einarbeitung Managed Services Team]], [[TDK Electronics Group]]
> Bar:: `$= dv.view('total-progress-bar', {file: "Zugang TDK eingerichtet"})`
## Aufgabenbeschreibung
Zugang zum Kunden TDK eingerichtet
### Infos
- [Ticket#20260219770200](https://cimt-objects.zammad.com/#ticket/zoom/107587): Verstärkung im Team Managed Service der cimt
- https://cimtag.atlassian.net/wiki/spaces/CO/pages/1628667905/TDK+Outtasking+Tableau-Server#Systemzugang
## Überlegungen
## Unteraufgaben
- [x] Zugang TDK eingerichtet [start:: 2026-02-23] [due:: 2026-02-27] [completion:: 2026-02-24]
- [x] Rückruf TDK Servicedesk [start:: 2026-02-23] [due:: 2026-02-27] [completion:: 2026-02-24]
- [x] Problem mit Login dem TDK Servicedesk gemeldet [start:: 2026-02-24] [scheduled:: 2026-02-25] [completion:: 2026-02-25] #process/task
- [x] Berechtigungen für Citrix Workspace erhalten #process/task [start:: 2026-02-25] [scheduled:: 2026-03-06] [due:: 2026-02-27] [completion:: 2026-03-06]
@@ -8,5 +8,5 @@ tags:
- [x] Benutzerinfo erhalten #process/task [start:: 2026-02-26] [scheduled:: 2026-03-04] [completion:: 2026-03-04] - [x] Benutzerinfo erhalten #process/task [start:: 2026-02-26] [scheduled:: 2026-03-04] [completion:: 2026-03-04]
- [x] Einrichtung 2FA #process/task [start:: 2026-02-26] [scheduled:: 2026-03-04] [completion:: 2026-03-04] - [x] Einrichtung 2FA #process/task [start:: 2026-02-26] [scheduled:: 2026-03-04] [completion:: 2026-03-04]
- [x] Einrichtung personalisierter Benutzer angestossen #process/task [start:: 2026-03-04] [scheduled:: 2026-03-05] [completion:: 2026-03-05] - [x] Einrichtung personalisierter Benutzer angestossen #process/task [start:: 2026-03-04] [scheduled:: 2026-03-05] [completion:: 2026-03-05]
- [ ] Einrichtung der RDP und SSH Verbindungen auf Terminalserver #process/task [start:: 2026-03-04] [scheduled:: 2026-04-13] - [ ] Einrichtung der RDP und SSH Verbindungen auf Terminalserver #process/task [start:: 2026-03-04] [scheduled:: 2026-05-07]
@@ -24,7 +24,7 @@ dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => {
## Aufgaben ## Aufgaben
```dataviewjs ```dataviewjs
const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')); const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')).where(p => dv.page(p.path).file.tasks.length == dv.page(p.path).file.tasks.where(t => t.fullyCompleted === true).length);
dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => { dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => {
const page = dv.page(p.path); const page = dv.page(p.path);
@@ -2,7 +2,7 @@
tags: tags:
- process/meeting - process/meeting
--- ---
Attendees:: [[Frank Füllbier]], [[Marcel Kuszak]], [[Bastian Liesigk]], [[Christian Kiltz]], [[Marcus Lipski]] Attendees:: [[Frank Füllbier]], [[Marcel Kuszak]], [[Bastian Liesigk]], [[Christian Kiltz]],
Related Projects:: [[Managed Services Team]] Related Projects:: [[Managed Services Team]]
## Termine ## Termine
@@ -1,20 +0,0 @@
---
status: Backlog
tags:
- process/task
---
%%
Project::
Bar:: `$= dv.view('total-progress-bar', {file: "Artikel über Software Resilizenz schreiben"})`
%%
## Aufgabenbeschreibung
Der Artikel beschäftigt sich mit der Frage, wie Software geschrieben werden kann, die resilient gegenüber Fehlern und Problemen ist. Probleme können unter anderem Netzwerkprobleme beim Ausruf eines Webservice sein.
Als Beispiel können die Fehlerbereinigungs-Routen beim Kunden Hagebau dienen.
## Überlegungen
## Unteraufgaben
- [ ] Artikel über Software Resilizenz schreiben [start:: 2025-07-31]
@@ -58,7 +58,7 @@ Zusammenfassend lässt sich sagen, dass KI zwar viele Prozesse in der Softwareen
## Aufgaben ## Aufgaben
- [x] Zusendung des Blogeintrags an [[Ann-Kristin Hantzsch-Kühnlenz]] inklusive der Anmerkungen von [[Stefanie Pelster]] #process/task [start:: 2026-02-17] [scheduled:: 2026-02-20] [due:: 2026-03-30] [completion:: 2026-02-20] - [x] Zusendung des Blogeintrags an [[Ann-Kristin Hantzsch-Kühnlenz]] inklusive der Anmerkungen von [[Stefanie Pelster]] #process/task [start:: 2026-02-17] [scheduled:: 2026-02-20] [due:: 2026-03-30] [completion:: 2026-02-20]
- [ ] Review des Eintrags mit KI #process/task [start:: 2026-02-17] [scheduled:: 2026-04-14] - [ ] Review des Eintrags mit KI #process/task [start:: 2026-02-17] [scheduled:: 2026-06-08]
- [ ] Einbindung von Bildern in den Beitrag #process/task [start:: 2026-02-17] [scheduled:: 2026-04-14] - [ ] Einbindung von Bildern in den Beitrag #process/task [start:: 2026-02-17] [scheduled:: 2026-06-08]
- [ ] Ablage des Textes als Word-Dokument in Sharepoint [start:: 2026-02-20] [scheduled:: 2026-04-14] - [ ] Ablage des Textes als Word-Dokument in Sharepoint [start:: 2026-02-20] [scheduled:: 2026-06-08]
@@ -1,58 +0,0 @@
---
status: Aktiv
tags:
- process/project
subtitle: Maintenance der cimt-Talend-Komponenten übernehmen
---
> [!abstract]- Project
> Goal:: [[Journal/cimt AG/2026|2026]]
> Progress:: `$= dv.view('project-progress', {file: 'Maintenance der cimt-Talend-Komponenten übernehmen'})`
> Target:: `$= dv.view('project-target', {file: 'Maintenance der cimt-Talend-Komponenten übernehmen'})`
> Bar:: `$= dv.view('project-progress-bar', {file: 'Maintenance der cimt-Talend-Komponenten übernehmen'})`
> Tasks:: `$= const aufgaben = dv.page('Maintenance der cimt-Talend-Komponenten übernehmen').file.inlinks.where(t => { const mt = dv.page(t.path); return mt.tags?.includes('process/task') && mt.status === 'In Arbeit'}); if (aufgaben.length > 0) { dv.header(4, aufgaben.length > 1 ? "Aufgaben" : "Aufgabe"); dv.list(aufgaben) }`
## Project Info
## Thoughts
## Resources
## Review questions
## Aufgaben
## Offene Aufgaben
```dataviewjs
const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')).where(p => dv.page(p.path).file.tasks.length != dv.page(p.path).file.tasks.where(t => t.fullyCompleted === true).length);
dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => {
const page = dv.page(p.path);
const tasks = page.file.tasks;
return [
page.file.link,
page.status,
tasks.where(t => t.fullyCompleted === true).length,
tasks.length
]
}));
```
## Aufgaben
```dataviewjs
const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task'));
dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => {
const page = dv.page(p.path);
const tasks = page.file.tasks;
return [
page.file.link,
page.status,
tasks.where(t => t.fullyCompleted === true).length,
tasks.length
]
}));
```
@@ -21,7 +21,7 @@ subtitle: Rezertifizierung Google Cloud Developer
## Aufgaben ## Aufgaben
- [ ] Vorbereitung zur Prüfung abgeschlossen [start:: 2026-03-08] - [ ] Vorbereitung zur Prüfung abgeschlossen [start:: 2026-06-08]
- [ ] Prüfungstermin vereinbart [start:: 2026-03-08] - [ ] Prüfungstermin vereinbart [start:: 2026-06-08]
- [ ] Prüfung durchgeführt [start:: 2026-03-08] - [ ] Prüfung durchgeführt [start:: 2026-06-08]
- [ ] Zertifikat erhalten [start:: 2026-03-08] - [ ] Zertifikat erhalten [start:: 2026-06-08]
-2
View File
@@ -39,8 +39,6 @@ CouchDB Testumgebung
## Aufgaben ## Aufgaben
- [x] Ersetzen von Docker mit podman auf bervl1prr #process/task [start:: 2026-02-02] [scheduled:: 2026-02-16] [completion:: 2026-02-16]
- [ ] Anwesenheitsbericht Dokumentation erstellen #process/task [scheduled:: 2026-04-13]
## Offene Aufgaben ## Offene Aufgaben
```dataviewjs ```dataviewjs
@@ -1,8 +1,9 @@
--- ---
tags: tags:
- process/event - process/event
reference:
- "[[cimt AG]]"
--- ---
Related Projects:: [[cimt AG]]
## 🗓️Agenda ## 🗓️Agenda
```dataview ```dataview
@@ -0,0 +1,17 @@
---
tags:
- process/event
reference:
- "[[cimt objects AG]]"
---
## 🗓️Termine
```dataview
LIST
FROM [[]] AND !outgoing([[]]) AND "Journal"
SORT file.name
```
## 📝Notizen
## ✔️ Aufgaben
@@ -1,97 +0,0 @@
---
title: "1 key food your brain MUST have to stay sharp: Harvard expert"
source: "https://medium.com/famously-healthy/1-key-food-your-brain-must-have-to-stay-sharp-harvard-expert-d56b4bd5d503"
author:
- "[[James Julian]]"
published: 2024-10-03
created: 2024-10-29
description: "There are more than a few “brain foods” that experts will tell you to focus on to live a long, lucid life. I find it stinky, texturally unappealing (think scallops and lobster), and I mostly dislike…"
tags:
- "clippings"
---
[
![James Julian](https://miro.medium.com/v2/resize:fill:88:88/1*8cErFlbWgcCj5oKkzeg6yQ.png)
](https://medium.com/@jamesjulianwrites?source=post_page---byline--d56b4bd5d503--------------------------------)
[
![Famously Healthy](https://miro.medium.com/v2/resize:fill:48:48/1*fA4OYuz4dn27LanfMSMupA.png)
](https://medium.com/famously-healthy?source=post_page---byline--d56b4bd5d503--------------------------------)
There are more than a few “brain foods” that experts will tell you to focus on to live a long, lucid life.
[Were talking](https://medium.com/famously-healthy/eat-these-4-foods-to-save-your-brain-harvard-nutritionist-295f6845ecf9) antioxidant-rich fruit, fiber-packed leafy greens, and [lean proteins](https://medium.com/famously-healthy/try-4-foods-harvard-brain-expert-eats-every-day-to-stay-smart-7b0ffd83930d).
My personal favorite is [blueberries](https://medium.com/@jamesjulianwrites/this-is-the-one-most-important-food-i-eat-every-single-day-18dcd64b967c), or brain berries as Ive come to know them.
**But is there one uber-powerful brain food to rule them all?**
According to one Harvard nutritionist, there is.
And, unfortunately, I struggle to get enough of it.
I bet you do too.
![A woman shopping for healthy food at the market.](https://miro.medium.com/v2/resize:fit:700/1*6rFk_3XwfVE5bRRdEqUEGw.jpeg)
Whats the №1 food to protect your brain? Read on. (Licensed by the author under the [Unsplash+ License](https://unsplash.com/plus/license))
## What we need (and I dont get enough of)
Im sorry, but I absolutely hate seafood.
Where do you stand on it?
I find it stinky, texturally unappealing (think scallops and lobster), and I mostly dislike the taste.
The problem is that seafood is about as good as it gets as a source of omega-3s, which according to Harvard nutritionist Uma Naidoo, is the most important food you can eat to support healthy brain function.
Heres what she [wrote for CNBC recently](https://www.msn.com/en-ca/health/nutrition/harvard-nutritionist-the-no-1-nutrient-you-need-for-a-healthy-brain-and-the-best-way-to-get-it/ar-AA1nE2Zd?ocid=msedgdhp&pc=HCTS&cvid=01fcf2e9a4244864a3bbd32b7e8d0c8a&ei=15):
*“While supplements can help provide these nutrients, I always tell people to first go to real foods, especially for fatty acids like omega-3s.*
*“When you eat a whole food you get additional vitamins, minerals, healthy fats, and protein.*
*“Its a good foundation upon which to build a healthy eating plan.*
==*“Omega-3s are found in wild-caught fatty fish like anchovies, sardines, and salmon.*==
*“Wild Sockeye salmon in particular contains levels of EPA and DHA that are beneficial to our brains health.*
*“An average salmon filet in the U.S. is about three to four ounces and the suggested amount to eat per week is about eight.*
*“So one should try to get omega-3-rich fish onto your plate at least twice a week.”*
So whats the solution if, like me, seafood kinda grosses you out?
![Fish is a good source of omega-3s](https://miro.medium.com/v2/resize:fit:700/1*DDIIG5GI0QbMEAv00bHdgg.jpeg)
Fish? Its a no from me. (Licensed by the author under the [Unsplash+ License](https://unsplash.com/plus/license))
## Why not supplements?
Fish oil supplements have come under a lot of scrutiny, and one worrisome study recently suggested you might want to [avoid them altogether if youre over 40](https://medium.com/famously-healthy/over-40-1-new-reason-you-might-want-to-skip-taking-fish-oil-doc-08de15359f53).
**The good news is that there are some great plant-based sources of omega-3s.**
As Naidoo notes:
*“If you are like me and dont eat seafood (I was raised vegetarian), you may be relieved to know it is still possible to get adequate omega-3s from plant-based sources, including…*
- *Chia seeds*
- *Sesame seeds*
- *Walnuts*
- *Flax seeds*
*“About one ounce of chia seeds is more than your daily recommended intake of omega-3 fatty acids and delivers about 5,000 mg.*
*“If you eat eggs, aim for the pasture-raised kind. Be sure to add turmeric with a pinch of black pepper to optimize the impact for brain health.”*
**I could be better at this.**
I do have a bunch of chia seeds in my freezer and its the easiest thing to throw into a smoothie.
Ive also experimented with throwing walnuts into those smoothies as well, though I find the bitter aftertaste kind of shines through.

Some files were not shown because too many files have changed in this diff Show More