vault backup: 2026-05-28 09:46:07

This commit is contained in:
2026-05-28 09:46:07 +02:00
parent 0a4a11a5e3
commit ce7c9efe9e
11 changed files with 1020 additions and 33729 deletions

View File

@@ -1,6 +1,5 @@
[ [
"dataview", "dataview",
"obsidian-checklist-plugin", "obsidian-checklist-plugin",
"obsidian-git",
"code-styler" "code-styler"
] ]

File diff suppressed because one or more lines are too long

View File

@@ -6,5 +6,5 @@
"description": "Integrate Git version control with automatic backup and other advanced features.", "description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false, "isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent", "fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.35.2" "version": "2.38.3"
} }

View File

@@ -72,6 +72,11 @@
height: 100%; 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 { .git-tools {
display: flex; display: flex;
margin-left: auto; margin-left: auto;
@@ -94,7 +99,7 @@
display: flex; display: flex;
} }
.git-tools .buttons > * { .git-tools .buttons > * {
padding: 0 0; padding: 0;
height: auto; height: auto;
} }
@@ -129,451 +134,419 @@
color: var(--text-accent); color: var(--text-accent);
} }
.workspace-leaf-content[data-type="diff-view"] .d2h-d-none { /* ====== diff2html ======
display: none; 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:
.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper {
text-align: left; https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md
}
Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header {
background-color: var(--background-primary); Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
border-bottom: 1px solid var(--interactive-accent); documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
font-family: var(--font-monospace); rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
height: 35px; persons to whom the Software is furnished to do so, subject to the following conditions:
padding: 5px 10px;
} The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
Software.
.workspace-leaf-content[data-type="diff-view"] .d2h-file-header,
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
display: -webkit-box; WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
display: -ms-flexbox; COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
display: flex; OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
} */
.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { .theme-dark,
font-size: 14px; .theme-light {
margin-left: auto; --git-delete-bg: #ff475040;
} --git-delete-hl: #96050a75;
--git-insert-bg: #68d36840;
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added { --git-insert-hl: #23c02350;
border: 1px solid #b4e2b4; --git-change-bg: #ffd55840;
border-radius: 5px 0 0 5px; --git-selected: #3572b0;
color: #399839;
padding: 2px; --git-delete: #cc3333;
text-align: right; --git-insert: #399839;
vertical-align: middle; --git-change: #d0b44c;
} --git-move: #3572b0;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted {
border: 1px solid #e9aeae; .git-diff {
border-radius: 0 5px 5px 0; .d2h-d-none {
color: #c33; display: none;
margin-left: 1px; }
padding: 2px; .d2h-wrapper {
text-align: left; text-align: left;
vertical-align: middle; border-radius: 0.25em;
} overflow: auto;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper { .d2h-file-header.d2h-file-header {
-webkit-box-align: center; background-color: var(--background-secondary);
-ms-flex-align: center; border-bottom: 1px solid var(--background-modifier-border);
align-items: center; font-family:
display: -webkit-box; Source Sans Pro,
display: -ms-flexbox; Helvetica Neue,
display: flex; Helvetica,
font-size: 15px; Arial,
width: 100%; sans-serif;
} height: 35px;
padding: 5px 10px;
.workspace-leaf-content[data-type="diff-view"] .d2h-file-name { }
overflow-x: hidden; .d2h-file-header,
text-overflow: ellipsis; .d2h-file-stats {
white-space: nowrap; display: -webkit-box;
} display: -ms-flexbox;
display: flex;
.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper { }
border: 1px solid var(--background-modifier-border); .d2h-file-header {
border-radius: 3px; display: none;
margin-bottom: 1em; }
} .d2h-file-stats {
font-size: 14px;
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse { margin-left: auto;
-webkit-box-pack: end; }
-ms-flex-pack: end; .d2h-lines-added {
-webkit-box-align: center; border: 1px solid var(--color-green);
-ms-flex-align: center; border-radius: 5px 0 0 5px;
align-items: center; color: var(--color-green);
border: 1px solid var(--background-modifier-border); padding: 2px;
border-radius: 3px; text-align: right;
cursor: pointer; vertical-align: middle;
display: none; }
font-size: 12px; .d2h-lines-deleted {
justify-content: flex-end; border: 1px solid var(--color-red);
padding: 4px 8px; border-radius: 0 5px 5px 0;
} color: var(--color-red);
margin-left: 1px;
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected { padding: 2px;
background-color: #c8e1ff; text-align: left;
} vertical-align: middle;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input { .d2h-file-name-wrapper {
margin: 0 4px 0 0; -webkit-box-align: center;
} -ms-flex-align: center;
align-items: center;
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table { display: -webkit-box;
border-collapse: collapse; display: -ms-flexbox;
font-family: Menlo, Consolas, monospace; display: flex;
font-size: 13px; font-size: 15px;
width: 100%; width: 100%;
} }
.d2h-file-name {
.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff { overflow: hidden;
width: 100%; text-overflow: ellipsis;
} white-space: nowrap;
color: var(--text-normal);
.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff { font-size: var(--h5-size);
overflow-y: hidden; }
} .d2h-file-wrapper {
border: 1px solid var(--background-secondary-alt);
.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff { border-radius: 3px;
display: inline-block; margin-bottom: 1em;
margin-bottom: -8px; max-height: 100%;
margin-right: -4px; }
overflow-x: scroll; .d2h-file-collapse {
overflow-y: hidden; -webkit-box-pack: end;
width: 50%; -ms-flex-pack: end;
} -webkit-box-align: center;
-ms-flex-align: center;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line { align-items: center;
padding: 0 8em; border: 1px solid var(--background-secondary-alt);
} border-radius: 3px;
cursor: pointer;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line, display: none;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { font-size: 12px;
display: inline-block; justify-content: flex-end;
-webkit-user-select: none; padding: 4px 8px;
-moz-user-select: none; }
-ms-user-select: none; .d2h-file-collapse.d2h-selected {
user-select: none; background-color: var(--git-selected);
white-space: nowrap; }
width: 100%; .d2h-file-collapse-input {
} margin: 0 4px 0 0;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { .d2h-diff-table {
padding: 0 4.5em; border-collapse: collapse;
} font-family: var(--font-monospace);
font-size: var(--code-size);
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn { width: 100%;
word-wrap: normal; }
background: none; .d2h-files-diff {
display: inline-block; width: 100%;
padding: 0; }
-webkit-user-select: text; .d2h-file-diff {
-moz-user-select: text; /*
-ms-user-select: text; overflow-y: scroll;
user-select: text; */
vertical-align: middle; border-radius: 5px;
white-space: pre; font-size: var(--font-text-size);
width: 100%; line-height: var(--line-height-normal);
} }
.d2h-file-side-diff {
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, display: inline-block;
.theme-light margin-bottom: -8px;
.workspace-leaf-content[data-type="diff-view"] margin-right: -4px;
.d2h-code-side-line overflow-x: scroll;
del { overflow-y: hidden;
background-color: #ffb6ba; width: 50%;
} }
.d2h-code-line {
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, padding-left: 6em;
.theme-dark padding-right: 1.5em;
.workspace-leaf-content[data-type="diff-view"] }
.d2h-code-side-line .d2h-code-line,
del { .d2h-code-side-line {
background-color: #8d232881; display: inline-block;
} -webkit-user-select: none;
-moz-user-select: none;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, -ms-user-select: none;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, user-select: none;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del, white-space: nowrap;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { width: 100%;
border-radius: 0.2em; }
display: inline-block; .d2h-code-side-line {
margin-top: -1px; /* needed to be changed */
text-decoration: none; padding-left: 0.5em;
vertical-align: middle; padding-right: 0.5em;
} }
.d2h-code-line-ctn {
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, word-wrap: normal;
.theme-light background: none;
.workspace-leaf-content[data-type="diff-view"] display: inline-block;
.d2h-code-side-line padding: 0;
ins { -webkit-user-select: text;
background-color: #97f295; -moz-user-select: text;
text-align: left; -ms-user-select: text;
} user-select: text;
vertical-align: middle;
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, width: 100%;
.theme-dark /* only works for line-by-line */
.workspace-leaf-content[data-type="diff-view"] white-space: pre-wrap;
.d2h-code-side-line }
ins { .d2h-code-line del,
background-color: #1d921996; .d2h-code-side-line del {
text-align: left; background-color: var(--git-delete-hl);
} color: var(--text-normal);
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix { .d2h-code-line del,
word-wrap: normal; .d2h-code-line ins,
background: none; .d2h-code-side-line del,
display: inline; .d2h-code-side-line ins {
padding: 0; border-radius: 0.2em;
white-space: pre; display: inline-block;
} margin-top: -1px;
text-decoration: none;
.workspace-leaf-content[data-type="diff-view"] .line-num1 { vertical-align: middle;
float: left; }
} .d2h-code-line ins,
.d2h-code-side-line ins {
.workspace-leaf-content[data-type="diff-view"] .line-num1, background-color: var(--git-insert-hl);
.workspace-leaf-content[data-type="diff-view"] .line-num2 { text-align: left;
-webkit-box-sizing: border-box; }
box-sizing: border-box; .d2h-code-line-prefix {
overflow: hidden; word-wrap: normal;
padding: 0 0.5em; background: none;
text-overflow: ellipsis; display: inline;
width: 3.5em; padding: 0;
} white-space: pre;
}
.workspace-leaf-content[data-type="diff-view"] .line-num2 { .line-num1 {
float: right; float: left;
} }
.line-num1,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber { .line-num2 {
background-color: var(--background-primary); -webkit-box-sizing: border-box;
border: solid var(--background-modifier-border); box-sizing: border-box;
border-width: 0 1px; overflow: hidden;
-webkit-box-sizing: border-box; /*
box-sizing: border-box; padding: 0 0.5em;
color: var(--text-muted); */
cursor: pointer; text-overflow: ellipsis;
display: inline-block; width: 2.5em;
position: absolute; padding-left: 0;
text-align: right; }
width: 7.5em; .line-num2 {
} float: right;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after { .d2h-code-linenumber {
content: "\200b"; background-color: var(--background-primary);
} border: solid var(--background-modifier-border);
border-width: 0 1px;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { -webkit-box-sizing: border-box;
background-color: var(--background-primary); box-sizing: border-box;
border: solid var(--background-modifier-border); color: var(--text-faint);
border-width: 0 1px; cursor: pointer;
-webkit-box-sizing: border-box; display: inline-block;
box-sizing: border-box; position: absolute;
color: var(--text-muted); text-align: right;
cursor: pointer; width: 5.5em;
display: inline-block; }
overflow: hidden; .d2h-code-linenumber:after {
padding: 0 0.5em; content: "\200b";
position: absolute; }
text-align: right; .d2h-code-side-linenumber {
text-overflow: ellipsis; background-color: var(--background-primary);
width: 4em; border: solid var(--background-modifier-border);
} border-width: 0 1px;
-webkit-box-sizing: border-box;
.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr { box-sizing: border-box;
position: relative; color: var(--text-faint);
} cursor: pointer;
overflow: hidden;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after { padding: 0 0.5em;
content: "\200b"; text-align: right;
} text-overflow: ellipsis;
width: 4em;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder, /* needed to be changed */
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { display: table-cell;
background-color: var(--background-primary); position: relative;
border-color: var(--background-modifier-border); }
} .d2h-code-side-linenumber:after {
content: "\200b";
.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix, }
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, .d2h-code-side-emptyplaceholder,
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber, .d2h-emptyplaceholder {
.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { background-color: var(--background-primary);
-webkit-user-select: none; border-color: var(--background-modifier-border);
-moz-user-select: none; }
-ms-user-select: none; .d2h-code-line-prefix,
user-select: none; .d2h-code-linenumber,
} .d2h-code-side-linenumber,
.d2h-emptyplaceholder {
.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, -webkit-user-select: none;
.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { -moz-user-select: none;
direction: rtl; -ms-user-select: none;
} user-select: none;
}
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del { .d2h-code-linenumber,
background-color: #fee8e9; .d2h-code-side-linenumber {
border-color: #e9aeae; direction: rtl;
} }
.d2h-del {
.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins { background-color: var(--git-delete-bg);
background-color: #dfd; border-color: var(--git-delete-hl);
border-color: #b4e2b4; }
} .d2h-ins {
background-color: var(--git-insert-bg);
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del { border-color: var(--git-insert-hl);
background-color: #521b1d83; }
border-color: #691d1d73; .d2h-info {
} background-color: var(--background-primary);
border-color: var(--background-modifier-border);
.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins { color: var(--text-faint);
background-color: rgba(30, 71, 30, 0.5); }
border-color: #13501381; .d2h-del,
} .d2h-ins,
.d2h-file-diff .d2h-change {
.workspace-leaf-content[data-type="diff-view"] .d2h-info { color: var(--text-normal);
background-color: var(--background-primary); }
border-color: var(--background-modifier-border); .d2h-file-diff .d2h-del.d2h-change {
color: var(--text-normal); background-color: var(--git-change-bg);
} }
.d2h-file-diff .d2h-ins.d2h-change {
.theme-light background-color: var(--git-insert-bg);
.workspace-leaf-content[data-type="diff-view"] }
.d2h-file-diff .d2h-file-list-wrapper {
.d2h-del.d2h-change { a {
background-color: #fdf2d0; text-decoration: none;
} cursor: default;
-webkit-user-drag: none;
.theme-dark }
.workspace-leaf-content[data-type="diff-view"]
.d2h-file-diff svg {
.d2h-del.d2h-change { display: none;
background-color: #55492480; }
} }
.d2h-file-list-header {
.theme-light text-align: left;
.workspace-leaf-content[data-type="diff-view"] }
.d2h-file-diff .d2h-file-list-title {
.d2h-ins.d2h-change { display: none;
background-color: #ded; }
} .d2h-file-list-line {
display: -webkit-box;
.theme-dark display: -ms-flexbox;
.workspace-leaf-content[data-type="diff-view"] display: flex;
.d2h-file-diff text-align: left;
.d2h-ins.d2h-change { }
background-color: rgba(37, 78, 37, 0.418); .d2h-file-list {
} }
.d2h-file-list > li {
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper { border-bottom: 1px solid var(--background-modifier-border);
margin-bottom: 10px; margin: 0;
} padding: 5px 10px;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a { .d2h-file-list > li:last-child {
color: #3572b0; border-bottom: none;
text-decoration: none; }
} .d2h-file-switch {
cursor: pointer;
.workspace-leaf-content[data-type="diff-view"] display: none;
.d2h-file-list-wrapper font-size: 10px;
a:visited { }
color: #3572b0; .d2h-icon {
} fill: currentColor;
margin-right: 10px;
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header { vertical-align: middle;
text-align: left; }
} .d2h-deleted {
color: var(--git-delete);
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title { }
font-weight: 700; .d2h-added {
} color: var(--git-insert);
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line { .d2h-changed {
display: -webkit-box; color: var(--git-change);
display: -ms-flexbox; }
display: flex; .d2h-moved {
text-align: left; color: var(--git-move);
} }
.d2h-tag {
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list { background-color: var(--background-secondary);
display: block; display: -webkit-box;
list-style: none; display: -ms-flexbox;
margin: 0; display: flex;
padding: 0; font-size: 10px;
} margin-left: 5px;
padding: 0 2px;
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li { }
border-bottom: 1px solid var(--background-modifier-border); .d2h-deleted-tag {
margin: 0; border: 1px solid var(--git-delete);
padding: 5px 10px; }
} .d2h-added-tag {
border: 1px solid var(--git-insert);
.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child { }
border-bottom: none; .d2h-changed-tag {
} border: 1px solid var(--git-change);
}
.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch { .d2h-moved-tag {
cursor: pointer; border: 1px solid var(--git-move);
display: none; }
font-size: 10px;
} /* needed for line-by-line*/
.workspace-leaf-content[data-type="diff-view"] .d2h-icon { .d2h-diff-tbody {
fill: currentColor; position: relative;
margin-right: 10px; }
vertical-align: middle;
} /* My additions */
.cm-merge-revert {
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted { width: 4em;
color: #c33; }
} /* Ensure that merge revert markers are positioned correctly */
.cm-merge-revert > * {
.workspace-leaf-content[data-type="diff-view"] .d2h-added { position: absolute;
color: #399839; background-color: var(--background-secondary);
} display: flex;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-changed {
color: #d0b44c;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-moved {
color: #3572b0;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-tag {
background-color: var(--background-primary);
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 10px;
margin-left: 5px;
padding: 0 2px;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag {
border: 2px solid #c33;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag {
border: 1px solid #399839;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag {
border: 1px solid #d0b44c;
}
.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag {
border: 1px solid #3572b0;
} }
/* ====================== Line Authoring Information ====================== */ /* ====================== Line Authoring Information ====================== */
.cm-gutterElement.obs-git-blame-gutter { .cm-gutterElement.obs-git-blame-gutter {
/* Add background color to spacing inbetween and around the gutter for better aesthetics */ /* Add background color to spacing inbetween and around the gutter for better aesthetics */
border-width: 0px 2px 0.2px 2px; border-width: 0px 2px 0.2px;
border-style: solid; border-style: solid;
border-color: var(--background-secondary); border-color: var(--background-secondary);
background-color: var(--background-secondary); background-color: var(--background-secondary);
@@ -586,7 +559,7 @@
font-family: monospace; font-family: monospace;
height: 100%; /* ensure, that age-based background color occupies entire parent */ height: 100%; /* ensure, that age-based background color occupies entire parent */
text-align: right; text-align: right;
padding: 0px 6px 0px 6px; padding: 0px 6px;
white-space: pre; /* Keep spaces and do not collapse them. */ white-space: pre; /* Keep spaces and do not collapse them. */
} }
@@ -627,3 +600,106 @@
background: var(--interactive-hover); background: var(--interactive-hover);
color: var(--text-accent-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;
}

View File

@@ -4,39 +4,38 @@
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "0a337572ddbe0554", "id": "c3bcf0c39d5e7f9a",
"type": "tabs", "type": "tabs",
"children": [ "children": [
{ {
"id": "92b19ec62110b284", "id": "73ecee4b4ef811ce",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "Exposé/4_Zeitplan.md", "file": "Semester 8/ESYSP/Vorlesung 4.md",
"mode": "source", "mode": "source",
"source": false "source": false
}, },
"icon": "lucide-file", "icon": "lucide-file",
"title": "4_Zeitplan" "title": "Vorlesung 4"
} }
}, },
{ {
"id": "c854ffef8f9b90a2", "id": "8f69924a613190e3",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "notizen.md", "file": "Semester 8/ESYSP/Untitled.md",
"mode": "source", "mode": "source",
"source": false "source": false
}, },
"icon": "lucide-file", "icon": "lucide-file",
"title": "notizen" "title": "Untitled"
} }
} }
], ]
"currentTab": 1
} }
], ],
"direction": "vertical" "direction": "vertical"
@@ -161,8 +160,8 @@
"showSearch": false, "showSearch": false,
"searchQuery": "" "searchQuery": ""
}, },
"icon": "lucide-archive", "icon": "lucide-ghost",
"title": "All properties" "title": "all-properties"
} }
}, },
{ {
@@ -186,31 +185,50 @@
"state": { "state": {
"type": "git-view", "type": "git-view",
"state": {}, "state": {},
"icon": "git-pull-request", "icon": "lucide-ghost",
"title": "Source Control" "title": "git-view"
}
},
{
"id": "d1543dd2e7cc684d",
"type": "leaf",
"state": {
"type": "todo",
"state": {},
"icon": "checkmark",
"title": "Todo List"
} }
} }
], ],
"currentTab": 5 "currentTab": 6
} }
], ],
"direction": "horizontal", "direction": "horizontal",
"width": 258.5 "width": 258.5,
"collapsed": true
}, },
"left-ribbon": { "left-ribbon": {
"hiddenItems": { "hiddenItems": {
"workspaces:Manage workspace layouts": false,
"switcher:Open quick switcher": false, "switcher:Open quick switcher": false,
"graph:Open graph view": false, "graph:Open graph view": false,
"canvas:Create new canvas": false, "canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false, "daily-notes:Open today's daily note": false,
"templates:Insert template": false, "templates:Insert template": false,
"command-palette:Open command palette": false, "command-palette:Open command palette": false,
"bases:Create new base": false, "bases:Create new base": false
"obsidian-git:Open Git source control": false
} }
}, },
"active": "48e5fb98d63b2d4f", "active": "73ecee4b4ef811ce",
"lastOpenFiles": [ "lastOpenFiles": [
"Semester 8/ESYSP/Vorlesung 2.md",
"Semester 8/ESYSP/Vorlesung 4.md",
"Semester 8/ESYSP/Vorlesung 1.md",
"Semester 8/ESYSP/Untitled.md",
"Semester 8/ESYSP/Labor 1.md",
"Semester 8/ESYSP/Arbeitsblatt 1.md",
"notizen.md",
"Semester 8/ESYSP",
"Semester 8/Bewerbungen/Trenz.md", "Semester 8/Bewerbungen/Trenz.md",
"Semester 8/Bewerbungen/Salt and Pepper.md", "Semester 8/Bewerbungen/Salt and Pepper.md",
"Semester 8/Bewerbungen/Ferchau.md", "Semester 8/Bewerbungen/Ferchau.md",
@@ -242,19 +260,11 @@
"Semester 7/Robocup/REDIG", "Semester 7/Robocup/REDIG",
"Semester 7/Robocup/Pain.pptx", "Semester 7/Robocup/Pain.pptx",
"Semester 7/Robocup/Features.md", "Semester 7/Robocup/Features.md",
"Semester 7/REDIG/VHDL-Typeconversion.md",
"Semester 7/Medienheorie/Vorlesung 9.md",
"Semester 7/Medienheorie/Vorlesung 8.md",
"Semester 7/Medienheorie/Vorlesung 7.md",
"Semester 7/Medienheorie/Vorlesung 5.md",
"Semester 7/Medienheorie/Vorlesung 4.md",
"Semester 7/Medienheorie/Vorlesung 3.md",
"Semester 7/Medienheorie/Pasted image 20251214161803.png", "Semester 7/Medienheorie/Pasted image 20251214161803.png",
"Semester 7/INKOM/präsi_2FA", "Semester 7/INKOM/präsi_2FA",
"Semester 7/INKOM/figures", "Semester 7/INKOM/figures",
"Semester 7/INKOM/Untitled.base", "Semester 7/INKOM/Untitled.base",
"Semester 7/INKOM/Untitled 1.base", "Semester 7/INKOM/Untitled 1.base",
"Semester 7/Robocup",
"Semester 6/ITSARCH/Labore/Abbildungen/nmap.png", "Semester 6/ITSARCH/Labore/Abbildungen/nmap.png",
"Semester 6/ITSARCH/Labore/Abbildungen/netstat.png", "Semester 6/ITSARCH/Labore/Abbildungen/netstat.png",
"Untitled.canvas" "Untitled.canvas"

View File

View File

@@ -0,0 +1,10 @@
- Reaktives System
- Mikrocontroller gibt Daten auf Port aus
- Motorbremszeit
- Wann Sensor aktiviert
- WCRT = Worst Case Response Time
- 100Hz Digitalschaltung
- Definierung der Schnittstelle
-
Labor 2: bestimmung der Längstmöglichen Antwortzeiten

View File

View File

@@ -0,0 +1,47 @@
# Organisatorisches
- erste zwei Wochen nur Vorlesung
# Embedded Systems
## Definition
- Rechnersystem
- umgeben eines größeren Systems
- umgebene System definiert Schnittstellen
# Wiederholung von VHDL und C
GANZ GANZ WICHTIG hihi, aufgaben aus REDIG, MICONT und DIGIT können hier helfen
# Grundbegriffe
- **Job**
- Eine Aufgabe, die als Einheit vom Sys eingeplant und ausgeführt wird
- **Task**
- Menge mehrer, inhalt. ähn.. über die Zeit verteilter Jobs, die eine Sys.fkt. realisiert
- **Freigabezeitpunkt**
- ZP an dem ein Job ausgeführt wird
- geforderte Treiber werden geladen
- Datenverarbeitung
- allg. asynch
- **Periode**
- Zeitabstand zwischen FgZp der Jobs des Tasks
- **Phase**
- FgZp des ersten Jobs des Tasks
- **Deadline**
- Zp an dem ein Job fertig sein muss
- **relative Deadline**
- max. zul. Antwortzeit
- **absolute Deadline**
- FgZp + relative Deadline
- **Antwortzeit**
- Dauer vom FgZp bis zur Fertigstellung des Jobs
- **Harte Deadline**
1. Katastrophale Folgen
2. Nutzen sinkt schlagartig falls versp. > 0
3. Job darf nie Deadline verpassen
4. Forderung eines form. Nachweises des Einhaltens der Deadline
- **Weiche Deadline**
1. Unerwünschte Folgen
2. Nutzen sinkt Graduell
3. Job darf Deadline nur mit bestimmter, niedriger Wahrscheinlichkeit verpassen
4. Keine Forderung eines form. Nachweises des Einhaltens der Deadline
- **Verspätung eines Jobs (tardiness)**

View File

@@ -0,0 +1,54 @@
**Bei der Änderung der Eingabewerte manuell einen Wert ändern um Zustandsübergang zu garantieren; zugrunde liegt die Geschwindigkeit des Prozessors selbst diese ist erheblich größer als die Reaktionsgeschwindigkeit eines sterblichen Menschen**
## Zeitgesteuerte Verarbeitung
- festlegung des laufenden Tasks nach Plan durch Scheduler
- Zeitplan zur Kompilierung bereitgestellt
# Berechnungsphase
- Berechnet endl. Automat
# Einsatz zeitgesteuerte Verarbeitung
## Kriterien
## Tasks
- Synonym zu Funktionen kann man tasks aufteilen um den Zeitplan zu vereinfachen
**Warum ist die Antwortzeit nicht immer gleich?**
- Prozessor-Verzweigung kann zu unterschiedlichen Strecken; somit die dT
- Verarbeitungsdauer durch Prozessor kann variabel sein
Unterschied: Ausführungszeit und Antwortzeit
- Antwortzeit: Freigabepunkt bis Fertigstellung
- Ausführungszeit: Zeit für das Rechnen
# Bestimmung des längsten Berechnungspfads
WCET = Worst Case Execution Time
Software-Muster Endlicher Automat:
- Trennung von Eingabe, Ausgabe und Verarbeitung
Vorgehensweise anhand von Testlingen und Betrachtung
- Vollständige Anweisungsabdeckung $C_0$
- Jeder ausführbare Code einmal ausgeführt
- Vollständige Verzweigungsabdeckung $C_1$
- Vollständige Pfadabdeckung $C_2$
**Werkzeug im Labor kann keine vollständige Pfadabdeckung**
- Gegenprüfung ob die Testfolge richtig aufgestellt wurde
Wenn zu viele Testfälle existieren kann man folgendes machen:
- Ausführungszeiten der einzelnen Code-Snippets und Addierung aller um zu schauen ob diese unter der Schranke liegen.
Obere Schranke so klein wie möglich und so groß wie nötig
- Cache Zugriffe deutlich **deutlich** schneller und können Messungen fälschen
## Praktische Bestimmung der längst möglichen Antwortzeit
Eine obere Schranke ist... anstelle von **DIE** obere Schranke
## Schedulability
# Organisatorisches
Teilaufgabe A Zustandsübergangsgraphen mitnehmen und Testfolge gleich auch
1. Steuerung der Leuchtdioden und Schiebeschalter
- Port 4 danach?
2. Echtzeitnachweis für die geschriebene Software
- Einhaltung der Deadline, Abdeckung usw. Dokumentieren
- Redaktion eines Berichts

View File

@@ -0,0 +1,19 @@
# Zeitgesteuerter Scheduler
# Anforderungen an ein System
nicht wie es das macht sondern nur war es macht. welche größen vorhanden sind.
namensgebung an die physikalischen größen
mathematische relationen
2 gruppen an physikalischen bezeichnern
- gesteuerte
- andere (beobachtete)
req reqiurement
nat nature
# Für das Labor
Beobachtete Größen
- Neigungswinkel
- Magnetstärke am Ort des Sensors (eher rauslassen)
- elektr Widerstand zwischen Kabeln
- Zeit
Gesteuerte Größen
- Leuchtdioden (Spannung zwischen den polen roter und gelber Stecker +5V)