Compare commits
71 Commits
4470af59be
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 25bda8f491 | |||
| f6c8ad71f4 | |||
| 7ffe4f0ca7 | |||
| a898474282 | |||
| da37f0d337 | |||
| d6576db1b3 | |||
| 5f72a1222b | |||
| 34209ff034 | |||
| 8866801570 | |||
| 91d92cbf4a | |||
| 2577fc70c4 | |||
| 5be0d002a9 | |||
| f46f4ac4c3 | |||
| ca758c9aa3 | |||
| 9b432ce8ae | |||
| 9293fbc827 | |||
| fa0abc95d4 | |||
| 8ef993cfa4 | |||
| d987f442d0 | |||
| 9529d259fc | |||
| 23c3dcf98c | |||
| 07fa833514 | |||
| 4eddfd5861 | |||
| e009d938f8 | |||
| 36bf746c3a | |||
| d0fe9e15aa | |||
| 7f2fb0d1e0 | |||
| 369830744f | |||
| 19f4d80ff0 | |||
| 4d9db61ae0 | |||
| 1b30a4344b | |||
| f764289b65 | |||
| ecd8071322 | |||
| a6594dab91 | |||
| 3ffaf6a8dc | |||
| 0c87f91000 | |||
| 48176846a4 | |||
| e2f1bfc07a | |||
| 4c30406de5 | |||
| dfe1ade9d5 | |||
| 8e46ded96b | |||
| e314579619 | |||
| b84b2465ea | |||
| a25f5f5853 | |||
| 4381fcddf3 | |||
| ca323718a7 | |||
| 5476eca7bf | |||
| 6fcb4ebba2 | |||
| 988f343b1c | |||
| d97ca8a7ca | |||
| 70f0c79624 | |||
| 53a4850b90 | |||
| a3213538bb | |||
| 6ed04c0c14 | |||
| 89e8f2e7e4 | |||
| 2df7a57cf2 | |||
| 6ad28f9cb4 | |||
| b4a23ac71f | |||
| 45f06b8869 | |||
| 9d26f5a3f8 | |||
| 0ccd3ff27b | |||
| b6385e7a6b | |||
| 28a23a871e | |||
| c1496124f1 | |||
| aea41a2576 | |||
| f935b2b85d | |||
| 3be9608d87 | |||
| 834719ad35 | |||
| f3e3c4ee89 | |||
| 4febfd157d | |||
| 0937d2ae3c |
Vendored
+2
-7
@@ -3,7 +3,6 @@
|
||||
"dataview",
|
||||
"obsidian-tasks-plugin",
|
||||
"obsidian-sortable",
|
||||
"auto-note-mover",
|
||||
"tag-wrangler",
|
||||
"obsidian-plugin-toc",
|
||||
"obsidian-charts",
|
||||
@@ -21,12 +20,8 @@
|
||||
"obsidian-style-settings",
|
||||
"callout-manager",
|
||||
"find-unlinked-files",
|
||||
"contribution-graph",
|
||||
"datacore",
|
||||
"friend-tracker",
|
||||
"desk",
|
||||
"external-file-embed-and-link",
|
||||
"obsidian-git",
|
||||
"obsidian-kanban",
|
||||
"task-list-kanban"
|
||||
"task-list-kanban",
|
||||
"vcf-contacts"
|
||||
]
|
||||
+102
-63
@@ -31,26 +31,26 @@ module.exports = __toCommonJS(main_exports);
|
||||
var import_obsidian25 = require("obsidian");
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/getFloatingWindows.js
|
||||
function getFloatingWindows(app2) {
|
||||
function getFloatingWindows(app) {
|
||||
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
|
||||
function getCurrentThemeID(app2) {
|
||||
const theme = app2.customCss.theme;
|
||||
function getCurrentThemeID(app) {
|
||||
const theme = app.customCss.theme;
|
||||
return theme === "" ? null : theme;
|
||||
}
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/getCurrentColorScheme.js
|
||||
function getCurrentThemeID2(app2) {
|
||||
const { body } = app2.workspace.containerEl.doc;
|
||||
function getCurrentThemeID2(app) {
|
||||
const { body } = app.workspace.containerEl.doc;
|
||||
return body.classList.contains("theme-dark") ? "dark" : "light";
|
||||
}
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/getThemeManifest.js
|
||||
function getThemeManifest(app2, themeID) {
|
||||
const manifests = app2.customCss.themes;
|
||||
function getThemeManifest(app, themeID) {
|
||||
const manifests = app.customCss.themes;
|
||||
if (!Object.prototype.hasOwnProperty.call(manifests, themeID)) {
|
||||
return null;
|
||||
}
|
||||
@@ -58,22 +58,22 @@ function getThemeManifest(app2, themeID) {
|
||||
}
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/isThemeInstalled.js
|
||||
function isThemeInstalled(app2, themeID) {
|
||||
return getThemeManifest(app2, themeID) !== null;
|
||||
function isThemeInstalled(app, themeID) {
|
||||
return getThemeManifest(app, themeID) !== null;
|
||||
}
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/getThemeStyleElement.js
|
||||
function getThemeStyleElement(app2) {
|
||||
const currentTheme = getCurrentThemeID(app2);
|
||||
if (currentTheme == null || !isThemeInstalled(app2, currentTheme)) {
|
||||
function getThemeStyleElement(app) {
|
||||
const currentTheme = getCurrentThemeID(app);
|
||||
if (currentTheme == null || !isThemeInstalled(app, currentTheme)) {
|
||||
return null;
|
||||
}
|
||||
return app2.customCss.styleEl;
|
||||
return app.customCss.styleEl;
|
||||
}
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/isSnippetEnabled.js
|
||||
function isSnippetEnabled(app2, snippetID) {
|
||||
return app2.customCss.enabledSnippets.has(snippetID);
|
||||
function isSnippetEnabled(app, snippetID) {
|
||||
return app.customCss.enabledSnippets.has(snippetID);
|
||||
}
|
||||
|
||||
// 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());
|
||||
});
|
||||
};
|
||||
function fetchObsidianStyleSheet(app2) {
|
||||
function fetchObsidianStyleSheet(app) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let errors = [];
|
||||
const orElse = (cb) => (ex) => {
|
||||
@@ -198,18 +198,18 @@ function viaDom(path) {
|
||||
}
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/getInstalledSnippetIDs.js
|
||||
function getInstalledSnippetIDs(app2) {
|
||||
return app2.customCss.snippets;
|
||||
function getInstalledSnippetIDs(app) {
|
||||
return app.customCss.snippets;
|
||||
}
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/getSnippetStyleElements.js
|
||||
function getSnippetStyleElements(app2) {
|
||||
const styleManager = app2.customCss;
|
||||
const snippets = getInstalledSnippetIDs(app2);
|
||||
function getSnippetStyleElements(app) {
|
||||
const styleManager = app.customCss;
|
||||
const snippets = getInstalledSnippetIDs(app);
|
||||
const map = /* @__PURE__ */ new Map();
|
||||
for (let i = 0, elI = 0; i < snippets.length; i++) {
|
||||
const snippetID = styleManager.snippets[i];
|
||||
if (isSnippetEnabled(app2, snippetID)) {
|
||||
if (isSnippetEnabled(app, snippetID)) {
|
||||
map.set(snippetID, styleManager.extraStyleEls[elI]);
|
||||
elI++;
|
||||
}
|
||||
@@ -218,9 +218,9 @@ function getSnippetStyleElements(app2) {
|
||||
}
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/openPluginSettings.js
|
||||
function openPluginSettings(app2, plugin) {
|
||||
function openPluginSettings(app, plugin) {
|
||||
var _a, _b;
|
||||
const settingManager = app2.setting;
|
||||
const settingManager = app.setting;
|
||||
const pluginId = typeof plugin === "string" ? plugin : plugin.manifest.id;
|
||||
if (((_a = settingManager.activeTab) === null || _a === void 0 ? void 0 : _a.id) !== pluginId) {
|
||||
settingManager.openTabById("");
|
||||
@@ -233,27 +233,27 @@ function openPluginSettings(app2, plugin) {
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/createCustomStyleSheet.js
|
||||
var Counter = Symbol("CustomStylesheet count");
|
||||
function foreachWindow(app2, fn) {
|
||||
fn(app2.workspace.containerEl.doc, true);
|
||||
for (const float of getFloatingWindows(app2)) {
|
||||
function foreachWindow(app, fn) {
|
||||
fn(app.workspace.containerEl.doc, true);
|
||||
for (const float of getFloatingWindows(app)) {
|
||||
fn(float.document, false);
|
||||
}
|
||||
}
|
||||
function createCustomStyleSheet(app2, plugin) {
|
||||
function createCustomStyleSheet(app, plugin) {
|
||||
var _a;
|
||||
let result;
|
||||
const pl = plugin;
|
||||
const plId = plugin.manifest.id;
|
||||
const ssId = ((_a = pl[Counter]) !== null && _a !== void 0 ? _a : pl[Counter] = 0).toString();
|
||||
pl[Counter]++;
|
||||
const styleEl = app2.workspace.containerEl.doc.createElement("style");
|
||||
const styleEl = app.workspace.containerEl.doc.createElement("style");
|
||||
const styleElInFloats = [];
|
||||
styleEl.setAttribute("data-source-plugin", plId);
|
||||
styleEl.setAttribute("data-source-id", ssId);
|
||||
function unapply() {
|
||||
styleElInFloats.splice(0, styleElInFloats.length).forEach((el) => el.remove());
|
||||
styleEl.detach();
|
||||
foreachWindow(app2, (doc) => {
|
||||
foreachWindow(app, (doc) => {
|
||||
for (const styleEl2 of Array.from(doc.head.querySelectorAll("style"))) {
|
||||
if (result.is(styleEl2)) {
|
||||
styleEl2.remove();
|
||||
@@ -263,7 +263,7 @@ function createCustomStyleSheet(app2, plugin) {
|
||||
}
|
||||
function reapply() {
|
||||
unapply();
|
||||
foreachWindow(app2, (doc, isFloating) => {
|
||||
foreachWindow(app, (doc, isFloating) => {
|
||||
let lastEl = doc.head.lastElementChild;
|
||||
for (let el = lastEl; el != null; el = el.previousElementSibling) {
|
||||
lastEl = el;
|
||||
@@ -280,12 +280,12 @@ function createCustomStyleSheet(app2, plugin) {
|
||||
lastEl === null || lastEl === void 0 ? void 0 : lastEl.insertAdjacentElement("afterend", styleElClone);
|
||||
});
|
||||
}
|
||||
app2.workspace.on("css-change", reapply);
|
||||
app2.workspace.on("layout-change", reapply);
|
||||
app.workspace.on("css-change", reapply);
|
||||
app.workspace.on("layout-change", reapply);
|
||||
result = Object.freeze(Object.defineProperties(() => {
|
||||
unapply();
|
||||
app2.workspace.off("css-change", reapply);
|
||||
app2.workspace.off("layout-change", reapply);
|
||||
app.workspace.off("css-change", reapply);
|
||||
app.workspace.off("layout-change", reapply);
|
||||
}, {
|
||||
css: {
|
||||
enumerable: true,
|
||||
@@ -351,17 +351,18 @@ var import_obsidian4 = require("obsidian");
|
||||
var import_obsidian6 = require("obsidian");
|
||||
|
||||
// node_modules/obsidian-extra/dist/esm/functions/closeSettings.js
|
||||
function closeSettings(app2) {
|
||||
const settingManager = app2.setting;
|
||||
function closeSettings(app) {
|
||||
const settingManager = app.setting;
|
||||
settingManager.close();
|
||||
}
|
||||
|
||||
// src/ui/pane-layers.ts
|
||||
var import_obsidian5 = require("obsidian");
|
||||
var UIPaneLayers = class {
|
||||
constructor(options) {
|
||||
constructor(root, options) {
|
||||
this.layers = [];
|
||||
this.closeParent = options.close;
|
||||
this.root = root;
|
||||
this.navInstance = {
|
||||
open: (pane) => this.push(pane),
|
||||
close: () => this.pop(),
|
||||
@@ -501,6 +502,11 @@ var UIPaneLayers = class {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
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.createDefault = createDefault;
|
||||
this.initLayer = null;
|
||||
this.layers = new UIPaneLayers({
|
||||
this.layers = new UIPaneLayers(plugin, {
|
||||
close: () => closeSettings(this.app)
|
||||
});
|
||||
}
|
||||
@@ -540,13 +546,16 @@ var UISettingTab = class extends import_obsidian6.PluginSettingTab {
|
||||
cls: "calloutmanager-setting-tab-viewport vertical-tab-content"
|
||||
});
|
||||
layers.containerEl = layers.scrollEl.createDiv({ cls: "calloutmanager-setting-tab-content" });
|
||||
controlsEl.createDiv({ cls: "modal-close-button" }, (closeButtonEl) => {
|
||||
closeButtonEl.addEventListener("click", (ev) => {
|
||||
const closeBtn = new import_obsidian6.ButtonComponent(controlsEl);
|
||||
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)
|
||||
return;
|
||||
closeSettings(this.app);
|
||||
});
|
||||
});
|
||||
layers.clear();
|
||||
const initLayer = this.initLayer ?? this.createDefault();
|
||||
this.initLayer = null;
|
||||
@@ -1410,12 +1419,14 @@ var SHADOW_DOM_RESET_STYLES = `
|
||||
/* Use transparent background color. */
|
||||
body {
|
||||
background-color: transparent !important;
|
||||
contain: none;
|
||||
}
|
||||
`;
|
||||
|
||||
// src/callout-resolver.ts
|
||||
var CalloutResolver = class {
|
||||
constructor() {
|
||||
constructor(app) {
|
||||
this.obsidianApp = app;
|
||||
this.hostElement = document.body.createDiv({
|
||||
cls: "calloutmanager-callout-resolver"
|
||||
});
|
||||
@@ -1435,7 +1446,7 @@ var CalloutResolver = class {
|
||||
* @param styles The new style elements to use.
|
||||
*/
|
||||
reloadStyles() {
|
||||
this.calloutPreview.setColorScheme(getCurrentThemeID2(app));
|
||||
this.calloutPreview.setColorScheme(getCurrentThemeID2(this.obsidianApp));
|
||||
this.calloutPreview.updateStyles();
|
||||
this.calloutPreview.removeStyles((el) => el.getAttribute("data-callout-manager") === "style-overrides");
|
||||
}
|
||||
@@ -1478,11 +1489,11 @@ var CalloutResolver = class {
|
||||
};
|
||||
|
||||
// src/callout-settings.ts
|
||||
function currentCalloutEnvironment(app2) {
|
||||
const theme = getCurrentThemeID(app2) ?? "<default>";
|
||||
function currentCalloutEnvironment(app) {
|
||||
const theme = getCurrentThemeID(app) ?? "<default>";
|
||||
return {
|
||||
theme,
|
||||
colorScheme: getCurrentThemeID2(app2)
|
||||
colorScheme: getCurrentThemeID2(app)
|
||||
};
|
||||
}
|
||||
function calloutSettingsToCSS(id, settings, environment) {
|
||||
@@ -1578,8 +1589,8 @@ function getCalloutsFromCSS(css) {
|
||||
|
||||
// src/css-watcher.ts
|
||||
var StylesheetWatcher = class {
|
||||
constructor(app2) {
|
||||
this.app = app2;
|
||||
constructor(app) {
|
||||
this.app = app;
|
||||
this.listeners = /* @__PURE__ */ new Map();
|
||||
this.cachedSnippets = /* @__PURE__ */ new Map();
|
||||
this.cachedObsidian = null;
|
||||
@@ -3309,7 +3320,7 @@ var MiscEditor = class {
|
||||
};
|
||||
|
||||
// src/panes/edit-callout-pane/section-info.ts
|
||||
function renderInfo(app2, callout, containerEl) {
|
||||
function renderInfo(app, callout, containerEl) {
|
||||
const frag = document.createDocumentFragment();
|
||||
const contentEl = frag.createDiv({ cls: "calloutmanager-edit-callout-section" });
|
||||
contentEl.createEl("h2", { text: "About this Callout" });
|
||||
@@ -3327,7 +3338,7 @@ function renderInfo(app2, callout, containerEl) {
|
||||
return;
|
||||
}
|
||||
el.appendText(". It was added to Obsidian by the ");
|
||||
appendSourceInfo(app2, el, callout.sources[0]);
|
||||
appendSourceInfo(app, el, callout.sources[0]);
|
||||
el.appendText(".");
|
||||
return;
|
||||
}
|
||||
@@ -3336,7 +3347,7 @@ function renderInfo(app2, callout, containerEl) {
|
||||
for (const source of callout.sources) {
|
||||
const itemEl = sources.createEl("li");
|
||||
itemEl.appendText("The ");
|
||||
appendSourceInfo(app2, itemEl, source);
|
||||
appendSourceInfo(app, itemEl, source);
|
||||
itemEl.appendText(".");
|
||||
}
|
||||
});
|
||||
@@ -3364,7 +3375,7 @@ function appendColorInfo(el, callout) {
|
||||
(colorEl) => colorEl.style.setProperty("--resolved-callout-color", callout.color)
|
||||
);
|
||||
}
|
||||
function appendSourceInfo(app2, el, source) {
|
||||
function appendSourceInfo(app, el, source) {
|
||||
switch (source.type) {
|
||||
case "builtin":
|
||||
el.appendText("built-in callouts");
|
||||
@@ -3381,7 +3392,7 @@ function appendSourceInfo(app2, el, source) {
|
||||
return true;
|
||||
case "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 });
|
||||
return true;
|
||||
}
|
||||
@@ -3717,7 +3728,7 @@ var ManageCalloutsPane = class extends UIPane {
|
||||
if (action === "edit") {
|
||||
this.nav.open(new EditCalloutPane(this.plugin, id, this.viewOnly));
|
||||
} else if (action === "insert") {
|
||||
const view = app.workspace.getActiveViewOfType(import_obsidian22.MarkdownView);
|
||||
const view = this.plugin.app.workspace.getActiveViewOfType(import_obsidian22.MarkdownView);
|
||||
if (view) {
|
||||
const cursor = view.editor.getCursor();
|
||||
view.editor.replaceRange(
|
||||
@@ -3726,7 +3737,7 @@ var ManageCalloutsPane = class extends UIPane {
|
||||
cursor
|
||||
);
|
||||
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");
|
||||
|
||||
// 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
|
||||
> 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
|
||||
function getSections() {
|
||||
function getSections(parent) {
|
||||
const frag = document.createDocumentFragment();
|
||||
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();
|
||||
let heading = null;
|
||||
let sectionContainer = frag.createEl("details");
|
||||
@@ -3937,7 +3961,7 @@ var ChangelogPane = class extends UIPane {
|
||||
super();
|
||||
this.title = "Changelog";
|
||||
this.plugin = plugin;
|
||||
const sections = getSections();
|
||||
const sections = getSections(plugin);
|
||||
const frag = document.createDocumentFragment();
|
||||
this.changelogEl = frag.createDiv({ cls: "calloutmanager-changelog" });
|
||||
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) => {
|
||||
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) {
|
||||
const desc = document.createDocumentFragment();
|
||||
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).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).setName("Reset Callout Settings").setDesc("Reset all the changes you made to callouts.").addButton(
|
||||
withConfirm((btn) => {
|
||||
@@ -4098,7 +4135,7 @@ var CalloutManagerPlugin = class extends import_obsidian25.Plugin {
|
||||
await this.loadSettings();
|
||||
await this.saveSettings();
|
||||
const { settings } = this;
|
||||
this.calloutResolver = new CalloutResolver();
|
||||
this.calloutResolver = new CalloutResolver(this.app);
|
||||
this.register(() => this.calloutResolver.unload());
|
||||
this.callouts = new CalloutCollection((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);
|
||||
}
|
||||
};
|
||||
|
||||
/* nosourcemap */
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"id": "callout-manager",
|
||||
"version": "1.1.0",
|
||||
"version": "1.1.1",
|
||||
"description": "Easily create and customize callouts.",
|
||||
"author": "eth-p",
|
||||
"authorUrl": "https://github.com/eth-p",
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "cmdr",
|
||||
"name": "Commander",
|
||||
"version": "0.5.4",
|
||||
"version": "0.5.5",
|
||||
"minAppVersion": "1.4.0",
|
||||
"description": "Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.",
|
||||
"author": "jsmorabito & phibr0",
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+9
-24
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "datacore",
|
||||
"name": "Datacore",
|
||||
"version": "0.1.28",
|
||||
"version": "0.1.29",
|
||||
"minAppVersion": "1.4.11",
|
||||
"description": "Reactive query engine backed by Javascript or a custom query language.",
|
||||
"author": "Michael Brenan",
|
||||
|
||||
+1
File diff suppressed because one or more lines are too long
+48
-48
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "external-file-embed-and-link",
|
||||
"name": "External File Embed and Link",
|
||||
"version": "1.5.6",
|
||||
"version": "1.5.9",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Embed and link local files outside your vault with relative paths for cross-device and multi-platform compatibility.",
|
||||
"author": "oylbin",
|
||||
|
||||
-20
@@ -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"
|
||||
}
|
||||
-11
File diff suppressed because one or more lines are too long
-10
@@ -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
|
||||
}
|
||||
-1135
File diff suppressed because it is too large
Load Diff
Vendored
+13
-15
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "janitor",
|
||||
"name": "Janitor",
|
||||
"version": "1.1.1",
|
||||
"version": "1.1.3",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Performs cleanup tasks on the Obsidian vault",
|
||||
"author": "Gabriele Cannata",
|
||||
|
||||
Vendored
+72
-6
@@ -47,21 +47,78 @@ If your plugin does not need CSS, delete this file.
|
||||
.janitor-file .openFileIcon {
|
||||
right: 0px;
|
||||
position: absolute;
|
||||
/* cursor: pointer; */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.janitor-file label {
|
||||
width: 100%;
|
||||
/* cursor: pointer; */
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.janitor-file span {
|
||||
.janitor-file-name {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
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;
|
||||
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 {
|
||||
@@ -72,9 +129,18 @@ If your plugin does not need CSS, delete this file.
|
||||
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 {
|
||||
overflow-y: auto;
|
||||
max-height:250px;
|
||||
max-height: 450px;
|
||||
}
|
||||
|
||||
.janitor-files-wrapper {
|
||||
|
||||
+7
-2
@@ -15,7 +15,6 @@
|
||||
"timelineEndColor": "#4d194d",
|
||||
"timestampFormat": "HH:mm",
|
||||
"hourFormat": "HH",
|
||||
"dataviewSource": "\"Journal\" OR #process/task",
|
||||
"extendDurationUntilNext": false,
|
||||
"defaultDurationMinutes": 30,
|
||||
"minimalDurationMinutes": 10,
|
||||
@@ -24,7 +23,7 @@
|
||||
"showUnscheduledNestedTasks": true,
|
||||
"showNow": true,
|
||||
"showNext": true,
|
||||
"pluginVersion": "0.28.0",
|
||||
"pluginVersion": "0.30.0",
|
||||
"showCompletedTasks": true,
|
||||
"showSubtasksInTaskBlocks": true,
|
||||
"icals": [],
|
||||
@@ -35,6 +34,12 @@
|
||||
"sortTasksInPlanAfterEdit": true,
|
||||
"firstDayOfWeek": "monday",
|
||||
"multiDayRange": "full-week",
|
||||
"showTimelineInSidebar": true,
|
||||
"timelineColumns": {
|
||||
"planner": true,
|
||||
"timeTracker": false
|
||||
},
|
||||
"dataviewSource": "\"Journal\" OR #process/task",
|
||||
"showTimeTracker": false,
|
||||
"showActiveClocks": true,
|
||||
"editMode": "simple",
|
||||
|
||||
+1395
-112
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "obsidian-day-planner",
|
||||
"name": "Day Planner",
|
||||
"version": "0.28.0",
|
||||
"version": "0.30.0",
|
||||
"minAppVersion": "0.16.0",
|
||||
"description": "A day planner with clean UI and readable syntax",
|
||||
"author": "James Lynch, continued by Ivan Lednev",
|
||||
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+156
-193
File diff suppressed because one or more lines are too long
+1
-1
@@ -6,5 +6,5 @@
|
||||
"description": "Integrate Git version control with automatic backup and other advanced features.",
|
||||
"isDesktopOnly": false,
|
||||
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||
"version": "2.38.0"
|
||||
"version": "2.38.5"
|
||||
}
|
||||
|
||||
+20
-25
@@ -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 {
|
||||
border: 2px solid var(--interactive-accent);
|
||||
border-radius: var(--radius-s);
|
||||
@@ -108,7 +99,7 @@
|
||||
display: flex;
|
||||
}
|
||||
.git-tools .buttons > * {
|
||||
padding: 0 0;
|
||||
padding: 0;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@@ -175,7 +166,7 @@ which itself is adapted from the diff2html library with the following original l
|
||||
--git-change-bg: #ffd55840;
|
||||
--git-selected: #3572b0;
|
||||
|
||||
--git-delete: #c33;
|
||||
--git-delete: #cc3333;
|
||||
--git-insert: #399839;
|
||||
--git-change: #d0b44c;
|
||||
--git-move: #3572b0;
|
||||
@@ -538,13 +529,24 @@ which itself is adapted from the diff2html library with the following original l
|
||||
.d2h-diff-tbody {
|
||||
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 ====================== */
|
||||
|
||||
.cm-gutterElement.obs-git-blame-gutter {
|
||||
/* 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-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;
|
||||
height: 100%; /* ensure, that age-based background color occupies entire parent */
|
||||
text-align: right;
|
||||
padding: 0px 6px 0px 6px;
|
||||
padding: 0px 6px;
|
||||
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 {
|
||||
.cm-gutterElement {
|
||||
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;
|
||||
}
|
||||
|
||||
.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 */
|
||||
.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
|
||||
margin-inline-end: 0;
|
||||
|
||||
+142
-119
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"id": "obsidian-tasks-plugin",
|
||||
"name": "Tasks",
|
||||
"version": "7.23.1",
|
||||
"minAppVersion": "1.4.0",
|
||||
"version": "8.2.2",
|
||||
"minAppVersion": "1.8.7",
|
||||
"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/",
|
||||
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+30
-19
@@ -42,13 +42,14 @@
|
||||
},
|
||||
"openFile": true,
|
||||
"openFileInMode": "default",
|
||||
"fileExistsMode": "Increment the file name",
|
||||
"setFileExistsBehavior": false,
|
||||
"fileOpening": {
|
||||
"location": "tab",
|
||||
"direction": "vertical",
|
||||
"mode": "default",
|
||||
"focus": true
|
||||
},
|
||||
"fileExistsBehavior": {
|
||||
"kind": "prompt"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -99,13 +100,14 @@
|
||||
},
|
||||
"openFile": true,
|
||||
"openFileInMode": "default",
|
||||
"fileExistsMode": "Increment the file name",
|
||||
"setFileExistsBehavior": false,
|
||||
"fileOpening": {
|
||||
"location": "tab",
|
||||
"direction": "vertical",
|
||||
"focus": true,
|
||||
"mode": "default"
|
||||
},
|
||||
"fileExistsBehavior": {
|
||||
"kind": "prompt"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -207,13 +209,14 @@
|
||||
},
|
||||
"openFile": false,
|
||||
"openFileInMode": "default",
|
||||
"fileExistsMode": "Increment the file name",
|
||||
"setFileExistsBehavior": false,
|
||||
"fileOpening": {
|
||||
"location": "tab",
|
||||
"direction": "vertical",
|
||||
"focus": true,
|
||||
"mode": "default"
|
||||
},
|
||||
"fileExistsBehavior": {
|
||||
"kind": "prompt"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -314,13 +317,14 @@
|
||||
},
|
||||
"openFile": false,
|
||||
"openFileInMode": "default",
|
||||
"fileExistsMode": "Increment the file name",
|
||||
"setFileExistsBehavior": false,
|
||||
"fileOpening": {
|
||||
"location": "tab",
|
||||
"direction": "vertical",
|
||||
"focus": true,
|
||||
"mode": "default"
|
||||
},
|
||||
"fileExistsBehavior": {
|
||||
"kind": "prompt"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -387,13 +391,14 @@
|
||||
},
|
||||
"openFile": true,
|
||||
"openFileInMode": "default",
|
||||
"fileExistsMode": "Increment the file name",
|
||||
"setFileExistsBehavior": false,
|
||||
"fileOpening": {
|
||||
"location": "tab",
|
||||
"direction": "vertical",
|
||||
"focus": true,
|
||||
"mode": "default"
|
||||
},
|
||||
"fileExistsBehavior": {
|
||||
"kind": "prompt"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -445,13 +450,14 @@
|
||||
},
|
||||
"openFile": true,
|
||||
"openFileInMode": "default",
|
||||
"fileExistsMode": "Increment the file name",
|
||||
"setFileExistsBehavior": false,
|
||||
"fileOpening": {
|
||||
"location": "tab",
|
||||
"direction": "vertical",
|
||||
"focus": true,
|
||||
"mode": "default"
|
||||
},
|
||||
"fileExistsBehavior": {
|
||||
"kind": "prompt"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -558,13 +564,14 @@
|
||||
},
|
||||
"openFile": true,
|
||||
"openFileInMode": "default",
|
||||
"fileExistsMode": "Increment the file name",
|
||||
"setFileExistsBehavior": false,
|
||||
"fileOpening": {
|
||||
"location": "tab",
|
||||
"direction": "vertical",
|
||||
"mode": "default",
|
||||
"focus": true
|
||||
},
|
||||
"fileExistsBehavior": {
|
||||
"kind": "prompt"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -614,13 +621,14 @@
|
||||
},
|
||||
"openFile": true,
|
||||
"openFileInMode": "default",
|
||||
"fileExistsMode": "Increment the file name",
|
||||
"setFileExistsBehavior": false,
|
||||
"fileOpening": {
|
||||
"location": "tab",
|
||||
"direction": "vertical",
|
||||
"mode": "default",
|
||||
"focus": true
|
||||
},
|
||||
"fileExistsBehavior": {
|
||||
"kind": "prompt"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -690,7 +698,7 @@
|
||||
"devMode": false,
|
||||
"templateFolderPath": "Resources/Templates",
|
||||
"announceUpdates": "all",
|
||||
"version": "2.12.0",
|
||||
"version": "2.12.3",
|
||||
"globalVariables": {},
|
||||
"onePageInputEnabled": false,
|
||||
"disableOnlineFeatures": true,
|
||||
@@ -764,6 +772,9 @@
|
||||
"migrateFileOpeningSettings": true,
|
||||
"setProviderModelDiscoveryMode": true,
|
||||
"backfillFileOpeningDefaults": true,
|
||||
"migrateProviderApiKeysToSecretStorage": true
|
||||
}
|
||||
"migrateProviderApiKeysToSecretStorage": true,
|
||||
"consolidateFileExistsBehavior": true,
|
||||
"repairTemplateFileExistsBehavior": true
|
||||
},
|
||||
"macros": []
|
||||
}
|
||||
Vendored
+68
-80
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "quickadd",
|
||||
"name": "QuickAdd",
|
||||
"version": "2.12.0",
|
||||
"version": "2.12.3",
|
||||
"minAppVersion": "1.11.4",
|
||||
"description": "Quickly add new pages or content to your vault.",
|
||||
"author": "Christian B. B. Houmann",
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+21
-21
File diff suppressed because one or more lines are too long
+3
-5
@@ -3,15 +3,13 @@
|
||||
"name": "Advanced Tables",
|
||||
"author": "Tony Grosinger",
|
||||
"authorUrl": "https://grosinger.net",
|
||||
"description": "Improved table navigation, formatting, manipulation, and formulas",
|
||||
"description": "Improved table navigation, formatting, manipulation, and formulas.",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "1.0.0",
|
||||
"version": "0.22.1",
|
||||
"js": "main.js",
|
||||
"version": "0.23.2",
|
||||
"fundingUrl": {
|
||||
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
|
||||
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
|
||||
"Paypal": "https://paypal.me/tgrosinger"
|
||||
},
|
||||
"donation": "https://buymeacoffee.com/tgrosinger"
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
}
|
||||
|
||||
[data-type="advanced-tables-toolbar"] .nav-buttons-container {
|
||||
column-gap: 0.2rem;
|
||||
gap: 0.2rem;
|
||||
margin: 0.2rem 0 0.2rem 0;
|
||||
justify-content: start;
|
||||
}
|
||||
|
||||
+25033
-14875
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "task-list-kanban",
|
||||
"name": "Task List Kanban",
|
||||
"version": "1.8.0",
|
||||
"version": "2.7.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.",
|
||||
"author": "Chris Kerr, Erika Rice Scherpelz",
|
||||
|
||||
+713
@@ -19,3 +19,716 @@ If your plugin does not need CSS, delete this file.
|
||||
.setting-item.column .setting-item-control > input {
|
||||
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%;
|
||||
}
|
||||
}
|
||||
|
||||
+30
-22
File diff suppressed because one or more lines are too long
+9
-3
@@ -1,11 +1,17 @@
|
||||
{
|
||||
"id": "templater-obsidian",
|
||||
"name": "Templater",
|
||||
"version": "2.18.1",
|
||||
"description": "Create and use templates",
|
||||
"minAppVersion": "1.5.0",
|
||||
"version": "2.20.6",
|
||||
"description": "Advanced templating and automation using handlebars-like syntax.",
|
||||
"minAppVersion": "1.12.2",
|
||||
"author": "SilentVoid",
|
||||
"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/",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
|
||||
+1
-1
@@ -221,6 +221,6 @@ textarea.templater-prompt-input:focus {
|
||||
}
|
||||
|
||||
li.CodeMirror-hint-active {
|
||||
background: #08f;
|
||||
background: #0088ff;
|
||||
color: white;
|
||||
}
|
||||
|
||||
+42
@@ -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]"
|
||||
]
|
||||
}
|
||||
+100
File diff suppressed because one or more lines are too long
+11
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
Vendored
+3
-41
@@ -3,26 +3,6 @@
|
||||
"aliases": "aliases",
|
||||
"cssclasses": "multitext",
|
||||
"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",
|
||||
"Erstausstrahlung_DE": "date",
|
||||
"Erstausstrahlung_UK": "date",
|
||||
"created": "date",
|
||||
"family": "text",
|
||||
"heizung": "number",
|
||||
"warmwasser": "number",
|
||||
"former_company": "multitext",
|
||||
"weight": "number",
|
||||
"plank": "number",
|
||||
"TQ_explain": "checkbox",
|
||||
"TQ_extra_instructions": "text",
|
||||
"TQ_short_mode": "checkbox",
|
||||
@@ -42,28 +22,10 @@
|
||||
"TQ_show_start_date": "checkbox",
|
||||
"TQ_show_tags": "checkbox",
|
||||
"TQ_show_task_count": "checkbox",
|
||||
"TQ_show_toolbar": "checkbox",
|
||||
"TQ_show_tree": "checkbox",
|
||||
"TQ_show_urgency": "checkbox",
|
||||
"leseliste": "multitext",
|
||||
"rework": "checkbox",
|
||||
"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"
|
||||
"X-LAST-CHAT": "date",
|
||||
"BDAY": "date"
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
```
|
||||
|
||||
@@ -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"
|
||||
```
|
||||
|
||||
@@ -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
|
||||
## 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
|
||||
|
||||
- [ ] 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
|
||||
- [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]
|
||||
@@ -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] 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]
|
||||
- [ ] 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]
|
||||
|
||||
@@ -29,10 +29,10 @@ return function View() {
|
||||
## Aufgaben
|
||||
|
||||
- [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]
|
||||
- [ ] Aufwendungen für Werbungskosten (Entfernung für Kilometerpauschale) [start:: 2026-01-01] [scheduled:: 2026-03-03]
|
||||
- [ ] Bescheid erhalten [start:: 2026-06-01]
|
||||
- [ ] Aufwendungen für Werbungskosten (Entfernung für Kilometerpauschale) [start:: 2026-01-01] [scheduled:: 2026-06-08]
|
||||
- [ ] Bescheid erhalten [start:: 2026-06-08]
|
||||
|
||||
## Aufgaben
|
||||
```dataviewjs
|
||||
|
||||
@@ -12,4 +12,4 @@ Bar:: `$= dv.view('total-progress-bar', {file: "Hautkrebsscreening"})`
|
||||
## Überlegungen
|
||||
|
||||
## Unteraufgaben
|
||||
- [ ] Termin zur Vorsorge vereinbart [start:: 2024-07-04]
|
||||
- [ ] Termin zur Vorsorge vereinbart [start:: 2026-06-08]
|
||||
|
||||
@@ -13,4 +13,4 @@ status: Archiv
|
||||
## Unteraufgaben
|
||||
|
||||
- [ ] Nebenkostenabrechnung erhalten [start:: 2026-10-01]
|
||||
- [ ] Nebenkostenabrechnung eingescannt [start:: 2025-10-01]
|
||||
- [ ] Nebenkostenabrechnung eingescannt [start:: 2026-06-08]
|
||||
|
||||
@@ -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
|
||||
|
||||
- [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]
|
||||
+72
@@ -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
|
||||
]
|
||||
}));
|
||||
```
|
||||
@@ -24,7 +24,7 @@ SORT location
|
||||
|
||||
### 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] Ü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]
|
||||
|
||||
@@ -7,9 +7,11 @@ lightning_talks_orga: Berlin
|
||||
|
||||
## 🗓️Agenda
|
||||
|
||||
Dieser Lightning Talks Termin wurde abgeasgt und auf den nächsten Lightning Talks Termin verschoben [[2026-06-19 Lightning Talks]].
|
||||
|
||||
## 📤 Gewünschtes Ergebnis
|
||||
|
||||
## 📝Notizen
|
||||
|
||||
## ✔️ 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
|
||||
@@ -4,17 +4,35 @@ tags:
|
||||
---
|
||||
## Team
|
||||
```dataview
|
||||
TABLE location AS Standort
|
||||
TABLE ADR[WORK].LOCALITY AS Standort
|
||||
FROM [[]] AND !outgoing([[]]) AND "Infos/Kontakte"
|
||||
SORT file.name DESC
|
||||
LIMIT 20
|
||||
```
|
||||
|
||||
## 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
|
||||
```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 => {
|
||||
const page = dv.page(p.path);
|
||||
|
||||
@@ -14,4 +14,4 @@ tags:
|
||||
## Unteraufgaben
|
||||
|
||||
- [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
|
||||
|
||||
- [ ] 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]
|
||||
|
||||
@@ -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
|
||||
|
||||
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
|
||||
- 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
|
||||
```dataview
|
||||
@@ -26,6 +45,10 @@ LIMIT 20
|
||||
## Installationslog
|
||||
|
||||
````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
|
||||
|
||||
#
|
||||
@@ -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-swap none swap 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
|
||||
@@ -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
|
||||
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 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
|
||||
@@ -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] 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] 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] Ticket erstellt [completion:: 2026-03-27]
|
||||
- [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]
|
||||
- [ ] Übernahme der POC Dokumentation ins Confluence [start:: 2026-03-24] [scheduled:: 2026-04-13]
|
||||
- [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-06-03]
|
||||
|
||||
@@ -27,4 +27,4 @@ LIMIT 20
|
||||
## Unteraufgaben
|
||||
|
||||
- [ ] 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)
|
||||
|
||||
- **~1–2 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
|
||||
|
||||
- [x] Vorbereitung Talend System-Update #process/task [completion:: 2026-03-06]
|
||||
- [ ] Talend Entwicklung Update #process/task [scheduled:: 2026-04-13]
|
||||
- [ ] Talend PROD Update #process/task [scheduled:: 2026-04-13]
|
||||
- [x] Talend Entwicklung Update #process/task [scheduled:: 2026-04-13] [completion:: 2026-04-27]
|
||||
- [x] Talend PROD Update #process/task [scheduled:: 2026-05-04] [completion:: 2026-05-04]
|
||||
|
||||
-14
@@ -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
|
||||
|
||||
- [ ] 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] 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]
|
||||
- [ ] 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
|
||||
```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 => {
|
||||
const page = dv.page(p.path);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
tags:
|
||||
- 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]]
|
||||
|
||||
## 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
|
||||
- [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]
|
||||
- [ ] Einbindung von Bildern in den Beitrag #process/task [start:: 2026-02-17] [scheduled:: 2026-04-14]
|
||||
- [ ] Ablage des Textes als Word-Dokument in Sharepoint [start:: 2026-02-20] [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-06-08]
|
||||
- [ ] 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
|
||||
- [ ] Vorbereitung zur Prüfung abgeschlossen [start:: 2026-03-08]
|
||||
- [ ] Prüfungstermin vereinbart [start:: 2026-03-08]
|
||||
- [ ] Prüfung durchgeführt [start:: 2026-03-08]
|
||||
- [ ] Zertifikat erhalten [start:: 2026-03-08]
|
||||
- [ ] Vorbereitung zur Prüfung abgeschlossen [start:: 2026-06-08]
|
||||
- [ ] Prüfungstermin vereinbart [start:: 2026-06-08]
|
||||
- [ ] Prüfung durchgeführt [start:: 2026-06-08]
|
||||
- [ ] Zertifikat erhalten [start:: 2026-06-08]
|
||||
|
||||
@@ -39,8 +39,6 @@ CouchDB Testumgebung
|
||||
|
||||
|
||||
## 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
|
||||
```dataviewjs
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
---
|
||||
tags:
|
||||
- process/event
|
||||
reference:
|
||||
- "[[cimt AG]]"
|
||||
---
|
||||
Related Projects:: [[cimt AG]]
|
||||
|
||||
## 🗓️Agenda
|
||||
```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"
|
||||
---
|
||||
[
|
||||
|
||||

|
||||
|
||||
](https://medium.com/@jamesjulianwrites?source=post_page---byline--d56b4bd5d503--------------------------------)
|
||||
|
||||
[
|
||||
|
||||

|
||||
|
||||
](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.
|
||||
|
||||
[We’re 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 I’ve 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.
|
||||
|
||||

|
||||
|
||||
What’s 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 don’t get enough of)
|
||||
|
||||
I’m 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.
|
||||
|
||||
Here’s 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.*
|
||||
|
||||
*“It’s 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 brain’s 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 what’s the solution if, like me, seafood kinda grosses you out?
|
||||
|
||||

|
||||
|
||||
Fish? It’s 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 you’re 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 don’t 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 it’s the easiest thing to throw into a smoothie.
|
||||
|
||||
I’ve 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
Reference in New Issue
Block a user