vault backup: 2026-07-17 14:47:12

This commit is contained in:
Marcel's Obsidian
2026-07-17 14:47:12 +02:00
parent 49bd853882
commit 031006c561
48 changed files with 2229 additions and 359 deletions
+3 -1
View File
@@ -3,5 +3,7 @@
"templater-obsidian",
"kanban-bases-view",
"quickadd",
"obsidian-linter"
"obsidian-linter",
"full-calendar-remastered",
"obsidian-git"
]
+1 -1
View File
@@ -17,6 +17,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.5649432319816575,
"scale": 0.4480996663453152,
"close": false
}
+138
View File
@@ -0,0 +1,138 @@
{
"calendarSources": [
{
"type": "outlook",
"name": "Calendar (ma@coachhamburg.com)",
"color": "auto",
"id": "outlook_1",
"microsoftAccountId": "ms_c5d61256-6dbb-4c89-b16a-4504eabca9dd",
"calendarId": "AAMkADkzMmMxODczLWMwMWEtNDY2MC1iMTMyLTc5NTVmNGJiNTJiMwBGAAAAAACtpelfeDR2QIYpoLplr0WEBwDSnZwdEeRhT6p_DU5TG3KVAAAAAAEGAADSnZwdEeRhT6p_DU5TG3KVAAAAAOiAAAA="
},
{
"type": "local",
"name": "New Local Calendar",
"color": "#3b82f6",
"id": "local_1",
"directory": "50-Aufgabenplanung/events",
"template": "",
"taskCompletionStyle": "datetime"
}
],
"defaultCalendar": 0,
"firstDay": 1,
"initialView": {
"desktop": "timeGridWeek",
"mobile": "timeGrid3Days"
},
"timeFormat24h": true,
"clickToCreateEventFromMonthView": true,
"displayTimezone": "Europe/Berlin",
"lastSystemTimezone": "Europe/Berlin",
"enableAdvancedCategorization": false,
"chrono_analyser_config": null,
"categorySettings": [],
"useCustomGoogleClient": false,
"googleClientId": "",
"googleClientSecret": "",
"googleUseCopyPasteAuth": false,
"googleAccounts": [],
"useCustomMicrosoftClient": false,
"microsoftClientId": "",
"microsoftProxyBaseUrl": "",
"microsoftAccounts": [
{
"id": "ms_c5d61256-6dbb-4c89-b16a-4504eabca9dd",
"email": "ma@coachhamburg.com",
"refreshToken": null,
"accessToken": null,
"expiryDate": 1784292903524
}
],
"enableLocalServer": false,
"localServerPort": 8540,
"useLegacyPlaintextCredentials": false,
"businessHours": {
"enabled": true,
"daysOfWeek": [
1,
2,
3,
4,
5
],
"startTime": "08:00",
"endTime": "18:00"
},
"enableBackgroundEvents": true,
"enableReminders": true,
"enableDefaultReminder": true,
"defaultReminderMinutes": 10,
"workspaces": [],
"activeWorkspace": null,
"showEventInStatusBar": false,
"highlightCurrentOrNextEvent": false,
"slotMinTime": "00:00",
"slotMaxTime": "24:00",
"allDaySlot": true,
"timeGridDayHeaderFormat": "day-ddmm",
"weekends": true,
"hiddenDays": [],
"dayMaxEvents": false,
"activityWatch": {
"enabled": false,
"apiUrl": "http://127.0.0.1:5600",
"lastSyncTime": 0,
"autoSyncEnabled": false,
"autoSyncIntervalMins": 10,
"targetCalendarId": "",
"syncStrategy": "auto",
"customDateStart": "",
"customDateEnd": "",
"profiles": []
},
"tasksIntegration": {
"backlogDateTarget": "scheduledDate",
"calendarDisplayDateTarget": "scheduledDate",
"openEditModalAfterBacklogDrop": false,
"taskDisplayFormat": "dayPlanner",
"includeGlobalQueryInBacklog": false,
"backlogQuery": ""
},
"fcrReminderCompanion": {
"enabled": false,
"apiUrl": "http://127.0.0.1:45677"
},
"apiTokens": {},
"authorizedTokens": {},
"milestones": {
"counters": {
"created.total": 1,
"created.local": 1,
"meta.firstActionAt": 1784219827648,
"meta.lastActionAt": 1784219878390,
"day.action.2026-07-16": 2,
"day.created.2026-07-16": 1,
"tz.Europe/Berlin": 1,
"deleted.total": 1,
"deleted.local": 1
},
"unlockedAt": {},
"shown": {}
},
"enableMonthlyStatsReport": false,
"lastMonthlyMilestonesGeneratedMonth": null,
"lastMonthlyMilestonesCheckDate": null,
"milestoneNotifierDuration": 8000,
"currentVersion": "0.13.4",
"linkedNotesDirectory": "_attachments/fcr",
"linkedNoteLinkStrategy": "deadline",
"taskBacklogLastProviderId": "",
"caldavTaskInboxLastCalendarId": "",
"linkedNoteTemplate": "# {{title}}\n\n**Date**: {{date}}\n**Time**: {{timeString}}\n**Location**: {{location}}\n**Calendar**: {{calendarName}}\n\n## Description\n{{description}}\n\n## Notes\n- ",
"weatherCity": "Itzehoe",
"weatherLatitude": 53.92099,
"weatherLongitude": 9.51529,
"weatherHide": false,
"weatherInputMode": "city",
"weatherUnit": "C"
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"id": "full-calendar-remastered",
"name": "Full Calendar Remastered",
"version": "0.13.4",
"minAppVersion": "1.12.7",
"description": "Powerful calendar solution for schedules, events, plans, tasks, and notes together inside your vault. Supports local note-based calendars plus remote sync options like Google Calendar, CalDAV, ICS files, Tasks, TaskNotes, and more.",
"author": "Jovi Koikkara",
"authorUrl": "https://github.com/YouFoundJK",
"fundingUrl": "https://ko-fi.com/youfoundjk",
"isDesktopOnly": false
}
File diff suppressed because one or more lines are too long
+42 -13
View File
@@ -532,7 +532,7 @@ function createColumn(value, entries, options, ctx, cb) {
if (cb.getQuickAddFolder()) {
headerEl.appendChild(cb.createAddButton(value, options.swimlaneValue ?? null));
}
if (entries.length === 0 && options.showRemoveButton !== false) {
if (ctx.globallyEmptyColumns.has(value)) {
headerEl.appendChild(createRemoveButton(ctx.doc, value, () => cb.onRemoveColumn(value, columnEl)));
}
const bodyEl = columnEl.createDiv({ cls: CSS_CLASSES.COLUMN_BODY });
@@ -550,10 +550,10 @@ function patchColumnCards(columnEl, newEntries, ctx, cb) {
const headerEl = columnEl.querySelector(`.${CSS_CLASSES.COLUMN_HEADER}`);
const columnValue = columnEl.getAttribute(DATA_ATTRIBUTES.COLUMN_VALUE);
const existingRemoveBtn = headerEl?.querySelector(`.${CSS_CLASSES.COLUMN_REMOVE_BTN}`) ?? null;
const isInSwimlane = !!columnEl.closest(`.${CSS_CLASSES.SWIMLANE}`);
if (headerEl && newEntries.length === 0 && !existingRemoveBtn && columnValue && !isInSwimlane) {
const showRemoveButton = !!columnValue && ctx.globallyEmptyColumns.has(columnValue);
if (headerEl && showRemoveButton && !existingRemoveBtn && columnValue) {
headerEl.appendChild(createRemoveButton(ctx.doc, columnValue, () => cb.onRemoveColumn(columnValue, columnEl)));
} else if (newEntries.length > 0 && existingRemoveBtn) {
} else if (!showRemoveButton && existingRemoveBtn) {
existingRemoveBtn.remove();
}
const existingAddBtn = headerEl?.querySelector(`.${CSS_CLASSES.COLUMN_ADD_BTN}`) ?? null;
@@ -661,7 +661,6 @@ function buildSwimlaneElement(laneValue, laneEntries, orderedColumnValues, ctx,
columnValue,
laneEntries.get(columnValue) ?? [],
{
showRemoveButton: false,
swimlaneValue: laneValue
},
ctx,
@@ -2988,6 +2987,10 @@ var KanbanView = class extends import_obsidian5.BasesView {
this._lastSwimlanePropertyId = void 0;
this._lastQuickAddFolder = void 0;
this._cardFingerprints = /* @__PURE__ */ new Map();
// Column values empty across the whole board (every swimlane). Recomputed each
// render() and read via _buildColumnCtx so components can show a remove button
// without the board-wide map being threaded through every render function.
this._globallyEmptyColumns = /* @__PURE__ */ new Set();
this._deferredSortableListeners = /* @__PURE__ */ new Map();
this._prefs = {
columnOrder: [],
@@ -3258,6 +3261,9 @@ var KanbanView = class extends import_obsidian5.BasesView {
const hasSwimlanes = groupedByLane !== null;
const existingIsSwimlane = existingBoard?.classList.contains(CSS_CLASSES.BOARD_WITH_SWIMLANES) ?? false;
const modeChanged = hasSwimlanes !== existingIsSwimlane;
this._globallyEmptyColumns = new Set(
orderedValues.filter((value) => (groupedEntries.get(value)?.length ?? 0) === 0)
);
if (!existingBoard || modeChanged || groupChanged || optionsChanged) {
this.fullRebuild(orderedValues, lanes, hasSwimlanes);
} else {
@@ -3526,6 +3532,11 @@ var KanbanView = class extends import_obsidian5.BasesView {
s.destroy();
this._columnSortables.delete(key);
}
const deferred = this._deferredSortableListeners.get(key);
if (deferred) {
deferred.el.removeEventListener("pointerdown", deferred.handler);
this._deferredSortableListeners.delete(key);
}
colEl.remove();
existingColumns.delete(colValue);
}
@@ -3533,8 +3544,7 @@ var KanbanView = class extends import_obsidian5.BasesView {
orderedColumnValues.forEach((colValue) => {
const entries = groupedEntries.get(colValue) ?? [];
if (!existingColumns.has(colValue)) {
const options = laneValue !== null ? { showRemoveButton: false, swimlaneValue: laneValue } : {};
const colEl = this.createColumn(colValue, entries, options);
const colEl = this.createColumn(colValue, entries, { swimlaneValue: laneValue });
containerEl.appendChild(colEl);
existingColumns.set(colValue, colEl);
const cardBody = colEl.querySelector(
@@ -3655,7 +3665,8 @@ var KanbanView = class extends import_obsidian5.BasesView {
cardCb: this._buildCardCallbacks(),
prefs: { columnColors: this._prefs.columnColors },
dragging: this._dragging,
cardFingerprints: this._cardFingerprints
cardFingerprints: this._cardFingerprints,
globallyEmptyColumns: this._globallyEmptyColumns
};
}
_buildColumnCallbacks() {
@@ -3781,12 +3792,30 @@ var KanbanView = class extends import_obsidian5.BasesView {
closeNativeNewItemPopover(this.containerEl.doc);
}
detachColumn(value, colEl) {
const sortable = this._columnSortables.get(value);
if (sortable) {
sortable.destroy();
this._columnSortables.delete(value);
const boardEl = this.containerEl.querySelector(`.${CSS_CLASSES.BOARD}`);
const columnEls = [];
if (boardEl) {
boardEl.querySelectorAll(`.${CSS_CLASSES.COLUMN}`).forEach((el) => {
if (el.getAttribute(DATA_ATTRIBUTES.COLUMN_VALUE) === value) columnEls.push(el);
});
}
colEl.remove();
const suffix = `${SWIMLANE_KEY_SEPARATOR}${value}`;
const matchesColumn = (key) => key === value || key.endsWith(suffix);
for (const key of [...this._columnSortables.keys()]) {
if (matchesColumn(key)) {
this._columnSortables.get(key)?.destroy();
this._columnSortables.delete(key);
}
}
for (const key of [...this._deferredSortableListeners.keys()]) {
if (matchesColumn(key)) {
const deferred = this._deferredSortableListeners.get(key);
deferred?.el.removeEventListener("pointerdown", deferred.handler);
this._deferredSortableListeners.delete(key);
}
}
if (columnEls.length > 0) columnEls.forEach((el) => el.remove());
else colEl.remove();
}
removeColumn(value, columnEl) {
if (!this._prefsPropertyId) return;
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "kanban-bases-view",
"name": "Kanban Bases View",
"version": "0.10.1",
"version": "0.10.2",
"minAppVersion": "1.10.2",
"description": "A kanban-style drag-and-drop custom view for Bases.",
"author": "I. Welch Canavan",
File diff suppressed because one or more lines are too long
+10
View File
@@ -0,0 +1,10 @@
{
"author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03",
"id": "obsidian-git",
"name": "Git",
"description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.38.6"
}
+705
View File
@@ -0,0 +1,705 @@
@keyframes loading {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.workspace-leaf-content[data-type="git-view"] .button-border {
border: 2px solid var(--interactive-accent);
border-radius: var(--radius-s);
}
.workspace-leaf-content[data-type="git-view"] .view-content {
padding-left: 0;
padding-top: 0;
padding-right: 0;
}
.workspace-leaf-content[data-type="git-history-view"] .view-content {
padding-left: 0;
padding-top: 0;
padding-right: 0;
}
.loading {
overflow: hidden;
}
.loading > svg {
animation: 2s linear infinite loading;
transform-origin: 50% 50%;
display: inline-block;
}
.obsidian-git-center {
margin: auto;
text-align: center;
width: 50%;
}
.obsidian-git-textarea {
display: block;
margin-left: auto;
margin-right: auto;
}
.obsidian-git-disabled {
opacity: 0.5;
}
.obsidian-git-center-button {
display: block;
margin: 20px auto;
}
.tooltip.mod-left {
overflow-wrap: break-word;
}
.tooltip.mod-right {
overflow-wrap: break-word;
}
/* Limits the scrollbar to the view body */
.git-view {
display: flex;
flex-direction: column;
position: relative;
height: 100%;
}
/* Re-enable wrapping of nav buttns to prevent overflow on smaller screens #*/
.workspace-drawer .git-view .nav-buttons-container {
flex-wrap: wrap;
}
.git-tools {
display: flex;
margin-left: auto;
}
.git-tools .type {
padding-left: var(--size-2-1);
display: flex;
align-items: center;
justify-content: center;
width: 11px;
}
.git-tools .type[data-type="M"] {
color: orange;
}
.git-tools .type[data-type="D"] {
color: red;
}
.git-tools .buttons {
display: flex;
}
.git-tools .buttons > * {
padding: 0;
height: auto;
}
.workspace-leaf-content[data-type="git-view"] .tree-item-self,
.workspace-leaf-content[data-type="git-history-view"] .tree-item-self {
align-items: center;
}
.workspace-leaf-content[data-type="git-view"]
.tree-item-self:hover
.clickable-icon,
.workspace-leaf-content[data-type="git-history-view"]
.tree-item-self:hover
.clickable-icon {
color: var(--icon-color-hover);
}
/* Highlight an item as active if it's diff is currently opened */
.is-active .git-tools .buttons > * {
color: var(--nav-item-color-active);
}
.git-author {
color: var(--text-accent);
}
.git-date {
color: var(--text-accent);
}
.git-ref {
color: var(--text-accent);
}
/* ====== diff2html ======
The following styles are adapted from the obsidian-version-history plugin by
@kometenstaub https://github.com/kometenstaub/obsidian-version-history-diff/blob/main/src/styles.scss
which itself is adapted from the diff2html library with the following original license:
https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md
Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
.theme-dark,
.theme-light {
--git-delete-bg: #ff475040;
--git-delete-hl: #96050a75;
--git-insert-bg: #68d36840;
--git-insert-hl: #23c02350;
--git-change-bg: #ffd55840;
--git-selected: #3572b0;
--git-delete: #cc3333;
--git-insert: #399839;
--git-change: #d0b44c;
--git-move: #3572b0;
}
.git-diff {
.d2h-d-none {
display: none;
}
.d2h-wrapper {
text-align: left;
border-radius: 0.25em;
overflow: auto;
}
.d2h-file-header.d2h-file-header {
background-color: var(--background-secondary);
border-bottom: 1px solid var(--background-modifier-border);
font-family:
Source Sans Pro,
Helvetica Neue,
Helvetica,
Arial,
sans-serif;
height: 35px;
padding: 5px 10px;
}
.d2h-file-header,
.d2h-file-stats {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.d2h-file-header {
display: none;
}
.d2h-file-stats {
font-size: 14px;
margin-left: auto;
}
.d2h-lines-added {
border: 1px solid var(--color-green);
border-radius: 5px 0 0 5px;
color: var(--color-green);
padding: 2px;
text-align: right;
vertical-align: middle;
}
.d2h-lines-deleted {
border: 1px solid var(--color-red);
border-radius: 0 5px 5px 0;
color: var(--color-red);
margin-left: 1px;
padding: 2px;
text-align: left;
vertical-align: middle;
}
.d2h-file-name-wrapper {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 15px;
width: 100%;
}
.d2h-file-name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--text-normal);
font-size: var(--h5-size);
}
.d2h-file-wrapper {
border: 1px solid var(--background-secondary-alt);
border-radius: 3px;
margin-bottom: 1em;
max-height: 100%;
}
.d2h-file-collapse {
-webkit-box-pack: end;
-ms-flex-pack: end;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border: 1px solid var(--background-secondary-alt);
border-radius: 3px;
cursor: pointer;
display: none;
font-size: 12px;
justify-content: flex-end;
padding: 4px 8px;
}
.d2h-file-collapse.d2h-selected {
background-color: var(--git-selected);
}
.d2h-file-collapse-input {
margin: 0 4px 0 0;
}
.d2h-diff-table {
border-collapse: collapse;
font-family: var(--font-monospace);
font-size: var(--code-size);
width: 100%;
}
.d2h-files-diff {
width: 100%;
}
.d2h-file-diff {
/*
overflow-y: scroll;
*/
border-radius: 5px;
font-size: var(--font-text-size);
line-height: var(--line-height-normal);
}
.d2h-file-side-diff {
display: inline-block;
margin-bottom: -8px;
margin-right: -4px;
overflow-x: scroll;
overflow-y: hidden;
width: 50%;
}
.d2h-code-line {
padding-left: 6em;
padding-right: 1.5em;
}
.d2h-code-line,
.d2h-code-side-line {
display: inline-block;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
width: 100%;
}
.d2h-code-side-line {
/* needed to be changed */
padding-left: 0.5em;
padding-right: 0.5em;
}
.d2h-code-line-ctn {
word-wrap: normal;
background: none;
display: inline-block;
padding: 0;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
vertical-align: middle;
width: 100%;
/* only works for line-by-line */
white-space: pre-wrap;
}
.d2h-code-line del,
.d2h-code-side-line del {
background-color: var(--git-delete-hl);
color: var(--text-normal);
}
.d2h-code-line del,
.d2h-code-line ins,
.d2h-code-side-line del,
.d2h-code-side-line ins {
border-radius: 0.2em;
display: inline-block;
margin-top: -1px;
text-decoration: none;
vertical-align: middle;
}
.d2h-code-line ins,
.d2h-code-side-line ins {
background-color: var(--git-insert-hl);
text-align: left;
}
.d2h-code-line-prefix {
word-wrap: normal;
background: none;
display: inline;
padding: 0;
white-space: pre;
}
.line-num1 {
float: left;
}
.line-num1,
.line-num2 {
-webkit-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
/*
padding: 0 0.5em;
*/
text-overflow: ellipsis;
width: 2.5em;
padding-left: 0;
}
.line-num2 {
float: right;
}
.d2h-code-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-faint);
cursor: pointer;
display: inline-block;
position: absolute;
text-align: right;
width: 5.5em;
}
.d2h-code-linenumber:after {
content: "\200b";
}
.d2h-code-side-linenumber {
background-color: var(--background-primary);
border: solid var(--background-modifier-border);
border-width: 0 1px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: var(--text-faint);
cursor: pointer;
overflow: hidden;
padding: 0 0.5em;
text-align: right;
text-overflow: ellipsis;
width: 4em;
/* needed to be changed */
display: table-cell;
position: relative;
}
.d2h-code-side-linenumber:after {
content: "\200b";
}
.d2h-code-side-emptyplaceholder,
.d2h-emptyplaceholder {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
}
.d2h-code-line-prefix,
.d2h-code-linenumber,
.d2h-code-side-linenumber,
.d2h-emptyplaceholder {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.d2h-code-linenumber,
.d2h-code-side-linenumber {
direction: rtl;
}
.d2h-del {
background-color: var(--git-delete-bg);
border-color: var(--git-delete-hl);
}
.d2h-ins {
background-color: var(--git-insert-bg);
border-color: var(--git-insert-hl);
}
.d2h-info {
background-color: var(--background-primary);
border-color: var(--background-modifier-border);
color: var(--text-faint);
}
.d2h-del,
.d2h-ins,
.d2h-file-diff .d2h-change {
color: var(--text-normal);
}
.d2h-file-diff .d2h-del.d2h-change {
background-color: var(--git-change-bg);
}
.d2h-file-diff .d2h-ins.d2h-change {
background-color: var(--git-insert-bg);
}
.d2h-file-list-wrapper {
a {
text-decoration: none;
cursor: default;
-webkit-user-drag: none;
}
svg {
display: none;
}
}
.d2h-file-list-header {
text-align: left;
}
.d2h-file-list-title {
display: none;
}
.d2h-file-list-line {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
text-align: left;
}
.d2h-file-list {
}
.d2h-file-list > li {
border-bottom: 1px solid var(--background-modifier-border);
margin: 0;
padding: 5px 10px;
}
.d2h-file-list > li:last-child {
border-bottom: none;
}
.d2h-file-switch {
cursor: pointer;
display: none;
font-size: 10px;
}
.d2h-icon {
fill: currentColor;
margin-right: 10px;
vertical-align: middle;
}
.d2h-deleted {
color: var(--git-delete);
}
.d2h-added {
color: var(--git-insert);
}
.d2h-changed {
color: var(--git-change);
}
.d2h-moved {
color: var(--git-move);
}
.d2h-tag {
background-color: var(--background-secondary);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 10px;
margin-left: 5px;
padding: 0 2px;
}
.d2h-deleted-tag {
border: 1px solid var(--git-delete);
}
.d2h-added-tag {
border: 1px solid var(--git-insert);
}
.d2h-changed-tag {
border: 1px solid var(--git-change);
}
.d2h-moved-tag {
border: 1px solid var(--git-move);
}
/* needed for line-by-line*/
.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;
border-style: solid;
border-color: var(--background-secondary);
background-color: var(--background-secondary);
}
.cm-gutterElement.obs-git-blame-gutter > div,
.line-author-settings-preview {
/* delegate text color to settings */
color: var(--obs-git-gutter-text);
font-family: monospace;
height: 100%; /* ensure, that age-based background color occupies entire parent */
text-align: right;
padding: 0px 6px;
white-space: pre; /* Keep spaces and do not collapse them. */
}
@media (max-width: 800px) {
/* hide git blame gutter not to superpose text */
.cm-gutterElement.obs-git-blame-gutter {
display: none;
}
}
.git-unified-diff-view,
.git-split-diff-view .cm-deletedLine .cm-changedText {
background-color: #ee443330;
}
.git-unified-diff-view,
.git-split-diff-view .cm-insertedLine .cm-changedText {
background-color: #22bb2230;
}
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
}
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
}
/* Override styling of Codemirror merge view "collapsed lines" indicator */
.git-split-diff-view .ͼ2 .cm-collapsedLines {
background: var(--interactive-normal);
border-radius: var(--radius-m);
color: var(--text-accent);
font-size: var(--font-small);
padding: var(--size-4-1) var(--size-4-1);
}
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
background: var(--interactive-hover);
color: var(--text-accent-hover);
}
.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;
}
}
.git-gutter-marker:hover {
border-radius: 2px;
}
.git-gutter-marker.git-add {
background-color: var(--color-green);
justify-self: center;
height: inherit;
width: 0.2rem;
}
.git-gutter-marker.git-change {
background-color: var(--color-yellow);
justify-self: center;
height: inherit;
width: 0.2rem;
}
.git-gutter-marker.git-changedelete {
color: var(--color-yellow);
font-weight: var(--font-bold);
font-size: 1rem;
justify-self: center;
height: inherit;
}
.git-gutter-marker.git-delete {
background-color: var(--color-red);
height: 0.2rem;
width: 0.8rem;
align-self: end;
}
.git-gutter-marker.git-topdelete {
background-color: var(--color-red);
height: 0.2rem;
width: 0.8rem;
align-self: start;
}
div:hover > .git-gutter-marker.git-change {
width: 0.6rem;
}
div:hover > .git-gutter-marker.git-add {
width: 0.6rem;
}
div:hover > .git-gutter-marker.git-delete {
height: 0.6rem;
}
div:hover > .git-gutter-marker.git-topdelete {
height: 0.6rem;
}
div:hover > .git-gutter-marker.git-changedelete {
font-weight: var(--font-bold);
}
.git-gutter-marker.staged {
opacity: 0.5;
}
/* 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;
.git-signs-gutter {
margin-inline-start: -1rem;
}
}
.git-changes-status-bar-colored {
.git-add {
color: var(--color-green);
}
.git-change {
color: var(--color-yellow);
}
.git-delete {
color: var(--color-red);
}
}
.git-changes-status-bar .git-add {
margin-right: 0.3em;
}
.git-changes-status-bar .git-change {
margin-right: 0.3em;
}
+5 -1
View File
@@ -86,7 +86,9 @@
"style": "Title Case",
"ignore-case-words": true,
"ignore-words": "macOS, iOS, iPhone, iPad, JavaScript, TypeScript, AppleScript, I",
"lowercase-words": "a, an, the, aboard, about, abt., above, abreast, absent, across, after, against, along, aloft, alongside, amid, amidst, mid, midst, among, amongst, anti, apropos, around, round, as, aslant, astride, at, atop, ontop, bar, barring, before, B4, behind, below, beneath, neath, beside, besides, between, 'tween, beyond, but, by, chez, circa, c., ca., come, concerning, contra, counting, cum, despite, spite, down, during, effective, ere, except, excepting, excluding, failing, following, for, from, in, including, inside, into, less, like, minus, modulo, mod, near, nearer, nearest, next, notwithstanding, of, o', off, offshore, on, onto, opposite, out, outside, over, o'er, pace, past, pending, per, plus, post, pre, pro, qua, re, regarding, respecting, sans, save, saving, short, since, sub, than, through, thru, throughout, thruout, till, times, to, t', touching, toward, towards, under, underneath, unlike, until, unto, up, upon, versus, vs., v., via, vice, vis-à-vis, wanting, with, w/, w., c̄, within, w/i, without, 'thout, w/o, abroad, adrift, aft, afterward, afterwards, ahead, apart, ashore, aside, away, back, backward, backwards, beforehand, downhill, downstage, downstairs, downstream, downward, downwards, downwind, east, eastward, eastwards, forth, forward, forwards, heavenward, heavenwards, hence, henceforth, here, hereby, herein, hereof, hereto, herewith, home, homeward, homewards, indoors, inward, inwards, leftward, leftwards, north, northeast, northward, northwards, northwest, now, onward, onwards, outdoors, outward, outwards, overboard, overhead, overland, overseas, rightward, rightwards, seaward, seawards, skywards, skyward, south, southeast, southwards, southward, southwest, then, thence, thenceforth, there, thereby, therein, thereof, thereto, therewith, together, underfoot, underground, uphill, upstage, upstairs, upstream, upward, upwards, upwind, west, westward, westwards, when, whence, where, whereby, wherein, whereto, wherewith, although, because, considering, given, granted, if, lest, once, provided, providing, seeing, so, supposing, though, unless, whenever, whereas, wherever, while, whilst, ago, inasmuch, even, whether, whose, whoever, why, how, whatever, what, both, and, or, either, neither, nor, just, rather, such, that, yet, is, it"
"lowercase-words": "a, an, the, aboard, about, abt., above, abreast, absent, across, after, against, along, aloft, alongside, amid, amidst, mid, midst, among, amongst, anti, apropos, around, round, as, aslant, astride, at, atop, ontop, bar, barring, before, B4, behind, below, beneath, neath, beside, besides, between, 'tween, beyond, but, by, chez, circa, c., ca., come, concerning, contra, counting, cum, despite, spite, down, during, effective, ere, except, excepting, excluding, failing, following, for, from, in, including, inside, into, less, like, minus, modulo, mod, near, nearer, nearest, next, notwithstanding, of, o', off, offshore, on, onto, opposite, out, outside, over, o'er, pace, past, pending, per, plus, post, pre, pro, qua, re, regarding, respecting, sans, save, saving, short, since, sub, than, through, thru, throughout, thruout, till, times, to, t', touching, toward, towards, under, underneath, unlike, until, unto, up, upon, versus, vs., v., via, vice, vis-à-vis, wanting, with, w/, w., c̄, within, w/i, without, 'thout, w/o, abroad, adrift, aft, afterward, afterwards, ahead, apart, ashore, aside, away, back, backward, backwards, beforehand, downhill, downstage, downstairs, downstream, downward, downwards, downwind, east, eastward, eastwards, forth, forward, forwards, heavenward, heavenwards, hence, henceforth, here, hereby, herein, hereof, hereto, herewith, home, homeward, homewards, indoors, inward, inwards, leftward, leftwards, north, northeast, northward, northwards, northwest, now, onward, onwards, outdoors, outward, outwards, overboard, overhead, overland, overseas, rightward, rightwards, seaward, seawards, skywards, skyward, south, southeast, southwards, southward, southwest, then, thence, thenceforth, there, thereby, therein, thereof, thereto, therewith, together, underfoot, underground, uphill, upstage, upstairs, upstream, upward, upwards, upwind, west, westward, westwards, when, whence, where, whereby, wherein, whereto, wherewith, although, because, considering, given, granted, if, lest, once, provided, providing, seeing, so, supposing, though, unless, whenever, whereas, wherever, while, whilst, ago, inasmuch, even, whether, whose, whoever, why, how, whatever, what, both, and, or, either, neither, nor, just, rather, such, that, yet, is, it",
"starting-word-ignore-characters": "'\"(‘“-",
"ending-word-ignore-characters": ".?!,:;'\")”’0123456789-"
},
"file-name-heading": {
"enabled": false
@@ -275,6 +277,8 @@
"recordLintOnSaveLogs": false,
"displayChanged": true,
"suppressMessageWhenNoChange": false,
"suppressLintAllFilesConfirmationModal": false,
"suppressLintAllFilesInFolderConfirmationModal": false,
"lintOnFileChange": false,
"displayLintOnFileChangeNotice": false,
"settingsConvertedToConfigKeyValues": true,
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "obsidian-linter",
"name": "Linter",
"version": "1.31.2",
"version": "1.32.0",
"minAppVersion": "1.12.0",
"description": "Formats and styles your notes. It can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular markdown contents like list, italics, and bold styles; and more with the use of custom rule options as well.",
"author": "Victor Tao",
+1 -1
View File
@@ -1 +1 @@
.linter-navigation-item{align-items:center;background-color:var(--background-primary-secondary-alt);border:1px solid var(--background-modifier-border);border-radius:100px;border-radius:8px 8px 2px 2px;cursor:pointer;display:flex;flex-direction:row;font-size:16px;font-weight:700;gap:4px;height:32px;overflow:hidden;padding:4px 6px;transition:color .25s ease-in-out,padding .25s ease-in-out,background-color .35s cubic-bezier(.45,.25,.83,.67),max-width .35s cubic-bezier(.57,.04,.58,1);white-space:nowrap}@media screen and (max-width:1325px){.linter-navigation-item.linter-desktop{max-width:32px}}@media screen and (max-width:800px){.linter-navigation-item.linter-mobile{max-width:32px}}.linter-navigation-item-icon,.linter-warning{padding-top:5px}.linter-navigation-item:hover{border-color:var(--interactive-accent-hover);border-bottom:0}.linter-navigation-item-selected{background-color:var(--interactive-accent)!important;border:1px solid var(--background-modifier-border);border-bottom:0;border-radius:8px 8px 2px 2px;color:var(--text-on-accent);max-width:100%!important;padding:4px 9px!important;transition:color .25s ease-in-out,padding .25s ease-in-out,background-color .35s cubic-bezier(.45,.25,.83,.67),max-width .45s cubic-bezier(.57,.04,.58,1) .2s}.linter{transition:transform .4s 0s}.linter-setting-title{align-items:baseline;display:flex;gap:30px;justify-content:space-between}.linter-setting-title.linter-mobile{justify-content:space-around}.linter-setting-title h1{font-weight:900;margin-bottom:12px;margin-top:6px}.linter-setting-header{margin-bottom:24px;overflow-x:auto;overflow-y:hidden}.linter-setting-header .linter-setting-tab-group{align-items:flex-end;display:flex;flex-wrap:wrap;width:100%}.linter-setting-tab-group{border-bottom:2px solid var(--background-modifier-border);margin-top:6px;padding-left:2px;padding-right:2px}.linter-setting-header .linter-tab-settings{border-left:2px solid transparent;border-right:2px solid transparent;cursor:pointer;font-weight:600;padding:6px 12px;white-space:nowrap}.linter-setting-header .linter-tab-settings:first-child{margin-left:6px}.linter-setting-header .linter-tab-settings.linter-tab-settings-active{border:2px solid var(--background-modifier-border);border-bottom-color:var(--background-primary);border-radius:2px;transform:translateY(2px)}.linter-navigation-item:not(.linter-navigation-item-selected)>span:nth-child(2),.linter-visually-hidden{border:0;clip:rect(0 0 0 0);clip-path:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}textarea.full-width{margin-bottom:.8em;margin-top:.8em;min-height:10em;width:100%}.full-width-textbox-input-wrapper{position:relative}.settings-copy-button{margin:0 0 0 auto;padding:4px;position:absolute;right:.8em;top:.8em}.settings-copy-button svg.linter-clipboard path{fill:var(--text-faint)}.settings-copy-button svg.linter-success path{fill:var(--interactive-success)}.settings-copy-button:active,.settings-copy-button:hover{cursor:pointer}.settings-copy-button:active svg path,.settings-copy-button:hover svg path{fill:var(--text-accent-hover);transition:all .3s ease}.settings-copy-button:focus{outline:0}.linter-custom-regex-replacement-container div:last-child{border:none}.linter-custom-regex-replacement{border:none;border-bottom:var(--hr-thickness) solid;border-color:var(--hr-color);margin-bottom:15px}.linter-custom-regex-replacement-row2{flex-wrap:wrap}.linter-custom-regex-replacement-normal-input{width:40%}.linter-custom-regex-replacement-flags{width:15%}.linter-custom-regex-replacement-label{flex-direction:row-reverse}.linter-custom-regex-replacement-label-input{width:50%}.linter-files-to-ignore-container div:last-child{border:none}.linter-files-to-ignore{border:none;border-bottom:var(--hr-thickness) solid;border-color:var(--hr-color);margin-bottom:15px}.linter-files-to-ignore-normal-input{width:40%}.linter-files-to-ignore-flags{width:15%}.linter-no-border{border:none}.linter-border-bottom{border-bottom:1px solid var(--background-modifier-border);border-top:0;margin-bottom:.75em}.linter-no-padding-top{padding-top:0}.custom-row-description{margin-top:0}.modal-warn,.search-zero-state{font-weight:700}.modal-heading,.search-zero-state{text-align:center}
.linter-navigation-item{align-items:center;background-color:var(--background-primary-secondary-alt);border:1px solid var(--background-modifier-border);border-radius:100px;border-radius:8px 8px 2px 2px;cursor:pointer;display:flex;flex-direction:row;font-size:16px;font-weight:700;gap:4px;height:32px;overflow:hidden;padding:4px 6px;transition:color .25s ease-in-out,padding .25s ease-in-out,background-color .35s cubic-bezier(.45,.25,.83,.67),max-width .35s cubic-bezier(.57,.04,.58,1);white-space:nowrap}@media screen and (max-width:1325px){.linter-navigation-item.linter-desktop{max-width:32px}}@media screen and (max-width:800px){.linter-navigation-item.linter-mobile{max-width:32px}}.linter-navigation-item-icon,.linter-warning{padding-top:5px}.linter-navigation-item:hover{border-color:var(--interactive-accent-hover);border-bottom:0}.linter-navigation-item-selected{background-color:var(--interactive-accent)!important;border:1px solid var(--background-modifier-border);border-bottom:0;border-radius:8px 8px 2px 2px;color:var(--text-on-accent);max-width:100%!important;padding:4px 9px!important;transition:color .25s ease-in-out,padding .25s ease-in-out,background-color .35s cubic-bezier(.45,.25,.83,.67),max-width .45s cubic-bezier(.57,.04,.58,1) .2s}.linter{transition:transform .4s 0s}.linter-setting-title{align-items:baseline;display:flex;gap:30px;justify-content:space-between}.linter-setting-title.linter-mobile{justify-content:space-around}.linter-setting-title h1{font-weight:900;margin-bottom:12px;margin-top:6px}.linter-setting-header{margin-bottom:24px;overflow-x:auto;overflow-y:hidden}.linter-setting-header .linter-setting-tab-group{align-items:flex-end;display:flex;flex-wrap:wrap;width:100%}.linter-setting-tab-group{border-bottom:2px solid var(--background-modifier-border);margin-top:6px;padding-left:2px;padding-right:2px}.linter-setting-header .linter-tab-settings{border-left:2px solid transparent;border-right:2px solid transparent;cursor:pointer;font-weight:600;padding:6px 12px;white-space:nowrap}.linter-setting-header .linter-tab-settings:first-child{margin-left:6px}.linter-setting-header .linter-tab-settings.linter-tab-settings-active{border:2px solid var(--background-modifier-border);border-bottom-color:var(--background-primary);border-radius:2px;transform:translateY(2px)}.linter-navigation-item:not(.linter-navigation-item-selected)>span:nth-child(2),.linter-visually-hidden{border:0;clip:rect(0 0 0 0);clip-path:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}textarea.full-width{margin-bottom:.8em;margin-top:.8em;min-height:10em;width:100%}.full-width-textbox-input-wrapper{position:relative}.settings-copy-button{margin:0 0 0 auto;padding:4px;position:absolute;right:.8em;top:.8em}.settings-copy-button svg.linter-clipboard path{fill:var(--text-faint)}.settings-copy-button svg.linter-success path{fill:var(--interactive-success)}.settings-copy-button:active,.settings-copy-button:hover{cursor:pointer}.settings-copy-button:active svg path,.settings-copy-button:hover svg path{fill:var(--text-accent-hover);transition:all .3s ease}.settings-copy-button:focus{outline:0}.linter-custom-regex-replacement-container div:last-child{border:none}.linter-custom-regex-replacement{border:none;border-bottom:var(--hr-thickness) solid;border-color:var(--hr-color);margin-bottom:15px}.linter-custom-regex-replacement-row2{flex-wrap:wrap}.linter-custom-regex-replacement-normal-input{width:40%}.linter-custom-regex-replacement-flags{width:15%}.linter-custom-regex-replacement-label{flex-direction:row-reverse}.linter-custom-regex-replacement-label-input{width:50%}.linter-files-to-ignore-container div:last-child{border:none}.linter-files-to-ignore{border:none;border-bottom:var(--hr-thickness) solid;border-color:var(--hr-color);margin-bottom:15px}.linter-files-to-ignore-normal-input{width:40%}.linter-files-to-ignore-flags{width:15%}.linter-no-border{border:none}.linter-border-bottom{border-bottom:1px solid var(--background-modifier-border);border-top:0;margin-bottom:.75em}.linter-no-padding-top{padding-top:0}.custom-row-description{margin-top:0}.modal-warn,.search-zero-state{font-weight:700}.modal-heading,.search-zero-state{text-align:center}.confirm-modal-checkbox-container{align-items:center;display:flex;gap:6px;margin-top:8px}
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "templater-obsidian",
"name": "Templater",
"version": "2.20.5",
"version": "2.20.6",
"description": "Advanced templating and automation using handlebars-like syntax.",
"minAppVersion": "1.12.2",
"author": "SilentVoid",
+92 -46
View File
@@ -36,20 +36,51 @@
}
},
{
"id": "8a8673d1d65a8d04",
"id": "e41a7bb2a6fb9421",
"type": "leaf",
"state": {
"type": "bases",
"type": "full-calendar-view",
"state": {},
"icon": "calendar-glyph",
"title": "Calendar"
}
},
{
"id": "cffbaa9007ac59f6",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "50-Aufgabenplanung/Taskliste.base",
"viewName": "Table"
"file": "_templates/Add-Contextual.md",
"mode": "source",
"source": false
},
"icon": "lucide-table",
"title": "Taskliste"
"icon": "lucide-file",
"title": "Add-Contextual"
}
}
],
"currentTab": 2
"currentTab": 3
},
{
"id": "cadeff41d541abb5",
"type": "tabs",
"children": [
{
"id": "c01ca1099c4a6b34",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "50-Aufgabenplanung/tasks/Juli Iteration 4 Tickets schneiden und spezifizieren.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "Juli Iteration 4 Tickets schneiden und spezifizieren"
}
}
]
}
],
"direction": "vertical"
@@ -106,7 +137,7 @@
}
],
"direction": "horizontal",
"width": 300
"width": 298.5
},
"right": {
"id": "3580347cbf61afa4",
@@ -192,13 +223,23 @@
"icon": "lucide-list",
"title": "Outline of Add-Iteration"
}
},
{
"id": "602f8a1b19e5a07b",
"type": "leaf",
"state": {
"type": "git-view",
"state": {},
"icon": "git-pull-request",
"title": "Source Control"
}
}
]
],
"currentTab": 5
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
"width": 300
},
"left-ribbon": {
"hiddenItems": {
@@ -209,45 +250,50 @@
"templates:Insert template": false,
"command-palette:Open command palette": false,
"bases:Create new base": false,
"templater-obsidian:Templater": false
"templater-obsidian:Templater": false,
"obsidian-full-calendar:Open Full Calendar": false,
"full-calendar-remastered:Open Full Calendar": false,
"full-calendar-remastered:FCR Command": false,
"obsidian-git:Open Git source control": false
}
},
"active": "8a8673d1d65a8d04",
"active": "c01ca1099c4a6b34",
"lastOpenFiles": [
"50-Aufgabenplanung/Erste Schritte der Aufgabenplanung.md",
"50-Aufgabenplanung/Backup Konfiguration evaluieren.md",
"50-Aufgabenplanung/Taskliste.base",
"50-Aufgabenplanung/Die Angebotssynchronisation muss sicherstellen, dass eine passende Kalkulation existiert.md",
"50-Aufgabenplanung/Docker Repository Service im Cluster bereitstellen.md",
"Juli Notes.base",
"Personal OS.md",
"20-projects/JULI.md",
"50-Aufgabenplanung",
"20-projects/Juli",
"00-inbox/Ein neuer Arbeitszeitplan überschreibt den aktuellen Plan.md",
"00-inbox/Julius landet mit seiner E-Mail in einer Login Schleife.md",
"80-Datenimport/References/2026-07-17-1300 - Austausch SK MA (513e2ba9).md",
"80-Datenimport/References/2026-07-16-0630 - Aufgabenplanung Korrespondenz (68680cdd).md",
"80-Datenimport/Events/ma@coachhamburg.com/Outlook_68680cdd.md",
"00-inbox/Abrechenbare Leistung als abgerechnet markieren.md",
"00-inbox/Tag Kreativleistung als abrechenbare Leistung behandeln.md",
"00-inbox/Systemprojekte vollwertig etablieren.md",
"40-notes/Iteration 4.md",
"50-Aufgabenplanung/tasks/Juli Iteration 4 Tickets schneiden und spezifizieren.md",
"_templates/Add-Contextual.md",
"00-inbox/Projektimport fuer das Management.md",
"00-inbox/Fertigung alternativer Positionen.md",
"00-inbox/Implementation einer Angebotsverwaltung.md",
"Taskliste.base",
"_templates/Add-Work.md",
"90-dashboards/Hygiene.md",
"00-inbox/Tagesabschluss in der Zeiterfassung ermöglichen.md",
"30-tasks/Arbeitszeit aufteilen.md",
"90-dashboards/Hygiene Migration.md",
"30-tasks/Review erfasster Mehraufwände.md",
"40-notes/Iteration 3.md",
"40-notes/Demo Iteration 2.md",
"40-notes/Iteration 1.md",
"40-notes/Iteration 2.md",
"40-notes/Backlog.md",
"40-notes/Austausch Dashboard Painpoints.md",
"20-projects/Avicenna.md",
"10-contexts/health.md",
"10-contexts/Genius.ceo.md",
"20-projects/medmix Deutschland GmbH.md",
"30-tasks/Projektpositionen können abgeschlossen werden.md",
"30-tasks/Liste der Mehraufwände am Projekt.md",
"30-tasks/Personalstamm implementieren.md",
"Juli Notes.base",
"00-inbox/Einzelpositionserfassung für die Materialliste.md",
"Personal OS.md",
"50-Aufgabenplanung/tasks/KI Workspace für Automatisierung evaluieren und aufbauen.md",
"50-Aufgabenplanung/tasks/360 Grad Feedback Tool als Projekt aufnehmen.md",
"50-Aufgabenplanung/Passwort ändern Funktion.md",
"00-inbox/Untitled.base",
"_attachments",
"_templates/scripts/auto_increment.js",
"_templates/scripts",
"_templates"
"50-Aufgabenplanung/tasks/JULI fragt \"Unproduktiv\" Tag an.md",
"50-Aufgabenplanung/tasks",
"50-Aufgabenplanung/tasks/Neuer Arbeitszeitplan überschreibt bestehenden, statt nachfolgenden anzulegen.md",
"50-Aufgabenplanung/tasks/Gesamtkapazität Personal am Projekt sichtbar machen.md",
"50-Aufgabenplanung/tasks/Gehaltsaufstellung August 2026.md",
"50-Aufgabenplanung/tasks/Die Positionsmenge wird nicht in allen Angeboten korrekt gelesen.md",
"50-Aufgabenplanung/tasks/Zeiterfassung Daily Ansicht überarbeiten.md",
"00-inbox/Hero Artikelstamm anbinden.md",
"50-Aufgabenplanung/events",
"_attachments/fcr",
"80-Datenimport/Events/ma@coachhamburg.com",
"80-Datenimport/References",
"80-Datenimport/Events",
"80-Datenimport"
]
}