Initial commit
This commit is contained in:
commit
9408e71db4
3
.obsidian/app.json
vendored
Normal file
3
.obsidian/app.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"attachmentFolderPath": "12 - Bijlagen"
|
||||
}
|
||||
1
.obsidian/appearance.json
vendored
Normal file
1
.obsidian/appearance.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
12
.obsidian/community-plugins.json
vendored
Normal file
12
.obsidian/community-plugins.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
[
|
||||
"dataview",
|
||||
"obsidian-tasks-plugin",
|
||||
"omnisearch",
|
||||
"calendar",
|
||||
"buttons",
|
||||
"obsidian-kanban",
|
||||
"quickadd",
|
||||
"templater-obsidian",
|
||||
"tasknotes",
|
||||
"obsidian-git"
|
||||
]
|
||||
33
.obsidian/core-plugins.json
vendored
Normal file
33
.obsidian/core-plugins.json
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"footnotes": false,
|
||||
"properties": false,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": true,
|
||||
"editor-status": true,
|
||||
"bookmarks": true,
|
||||
"markdown-importer": false,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": true,
|
||||
"bases": true,
|
||||
"webviewer": false
|
||||
}
|
||||
3
.obsidian/daily-notes.json
vendored
Normal file
3
.obsidian/daily-notes.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"folder": "02 - Dagboek"
|
||||
}
|
||||
22
.obsidian/graph.json
vendored
Normal file
22
.obsidian/graph.json
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"collapse-filter": true,
|
||||
"search": "",
|
||||
"showTags": false,
|
||||
"showAttachments": false,
|
||||
"hideUnresolved": false,
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": true,
|
||||
"colorGroups": [],
|
||||
"collapse-display": true,
|
||||
"showArrow": false,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1,
|
||||
"lineSizeMultiplier": 1,
|
||||
"collapse-forces": true,
|
||||
"centerStrength": 0.518713248970312,
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 1,
|
||||
"close": true
|
||||
}
|
||||
28
.obsidian/hotkeys.json
vendored
Normal file
28
.obsidian/hotkeys.json
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"editor:toggle-checklist-status": [],
|
||||
"obsidian-tasks-plugin:toggle-done": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "Enter"
|
||||
}
|
||||
],
|
||||
"editor:open-link-in-new-leaf": [],
|
||||
"obsidian-tasks-plugin:edit-task": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "L"
|
||||
}
|
||||
],
|
||||
"omnisearch:show-modal": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": " "
|
||||
}
|
||||
]
|
||||
}
|
||||
5186
.obsidian/plugins/buttons/main.js
vendored
Normal file
5186
.obsidian/plugins/buttons/main.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
.obsidian/plugins/buttons/manifest.json
vendored
Normal file
10
.obsidian/plugins/buttons/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"id": "buttons",
|
||||
"name": "Buttons",
|
||||
"description": "Create Buttons in your Obsidian notes to run commands, open links, and insert templates",
|
||||
"version": "0.9.13",
|
||||
"author": "shabegom",
|
||||
"authorUrl": "https://shbgm.ca",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "0.12.8"
|
||||
}
|
||||
624
.obsidian/plugins/buttons/styles.css
vendored
Normal file
624
.obsidian/plugins/buttons/styles.css
vendored
Normal file
@ -0,0 +1,624 @@
|
||||
/* @settings
|
||||
|
||||
name: Buttons
|
||||
id: buttons-styles
|
||||
settings:
|
||||
-
|
||||
id: button-background
|
||||
title: Background
|
||||
type: variable-themed-color
|
||||
format: hex
|
||||
opacity: false
|
||||
default-light: '#f5f6f8'
|
||||
default-dark: '#1b1b1b'
|
||||
-
|
||||
id: button-text
|
||||
title: Text
|
||||
type: variable-themed-color
|
||||
format: hex
|
||||
opacity: false
|
||||
default-light: '#1b1b1b'
|
||||
default-dark: '#f5f6f8'
|
||||
-
|
||||
id: button-border
|
||||
title: Border
|
||||
type: variable-themed-color
|
||||
format: hex
|
||||
opacity: false
|
||||
default-light: '#7a9486'
|
||||
default-dark: '#84a83a'
|
||||
-
|
||||
id: button-box-shadow
|
||||
title: Box Shadow
|
||||
type: variable-themed-color
|
||||
format: rgb
|
||||
opacity: true
|
||||
default-light: '#1b1b1b'
|
||||
default-dark: '#f5f6f8'
|
||||
-
|
||||
id: button-border-radius
|
||||
title: Border Radius
|
||||
type: variable-number
|
||||
format: px
|
||||
default: 5
|
||||
-
|
||||
id: button-size
|
||||
title: Font Size
|
||||
type: variable-number
|
||||
format: em
|
||||
default: 1
|
||||
|
||||
*/
|
||||
|
||||
.block-language-button {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
button.button-default {
|
||||
background: var(--interactive-normal, #f5f6f8);
|
||||
border-radius: 5px;
|
||||
border: 1px solid var(--interactive-accent, #ccc);
|
||||
color: var(--text-accent, #333);
|
||||
padding: 8px 8px;
|
||||
text-decoration: none;
|
||||
font-size: var(--button-size, 1em);
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
transform: none;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
button.button-default:hover {
|
||||
background: var(--interactive-hover, #e8e9ea);
|
||||
border: 1px solid var(--interactive-accent-hover, #999);
|
||||
color: var(--text-accent-hover, #222);
|
||||
box-shadow: none;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.theme-dark button.button-default {
|
||||
background: var(--interactive-normal);
|
||||
border: 1px solid var(--interactive-accent);
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.theme-dark button.button-default:hover {
|
||||
background: var(--interactive-hover, #222);
|
||||
border: 1px solid var(--interactive-accent-hover, #84a83a);
|
||||
color: var(--text-accent-hover, #f5f6f8);
|
||||
box-shadow: none;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
button.button-inline {
|
||||
width: unset;
|
||||
height: unset;
|
||||
padding: 8px 8px;
|
||||
}
|
||||
|
||||
button.button-default.blue {
|
||||
background: #76b3fa !important;
|
||||
color: black !important;
|
||||
border-color: #76b3fa !important;
|
||||
}
|
||||
|
||||
button.button-default.red {
|
||||
background-color: red !important;
|
||||
color: black !important;
|
||||
border-color: red !important;
|
||||
}
|
||||
|
||||
button.button-default.green {
|
||||
background: green !important;
|
||||
color: black !important;
|
||||
border-color: green !important;
|
||||
}
|
||||
|
||||
button.button-default.yellow {
|
||||
background: yellow !important;
|
||||
color: black !important;
|
||||
border-color: yellow !important;
|
||||
}
|
||||
|
||||
button.button-default.purple {
|
||||
background: #725585 !important;
|
||||
color: white !important;
|
||||
border-color: #725585 !important;
|
||||
}
|
||||
|
||||
button.button-default.orange{
|
||||
background: #ff944c !important;
|
||||
color: black !important;
|
||||
border-color: #ff944c !important;
|
||||
}
|
||||
|
||||
button.button-default.blue:hover {
|
||||
background: #8bc4ff !important;
|
||||
color: black !important;
|
||||
border-color: #8bc4ff !important;
|
||||
}
|
||||
|
||||
button.button-default.red:hover {
|
||||
background: #ff4444 !important;
|
||||
color: black !important;
|
||||
border-color: #ff4444 !important;
|
||||
}
|
||||
|
||||
button.button-default.green:hover {
|
||||
background: #44ff44 !important;
|
||||
color: black !important;
|
||||
border-color: #44ff44 !important;
|
||||
}
|
||||
|
||||
button.button-default.yellow:hover {
|
||||
background: #ffff44 !important;
|
||||
color: black !important;
|
||||
border-color: #ffff44 !important;
|
||||
}
|
||||
|
||||
button.button-default.purple:hover {
|
||||
background: #8a6ba8 !important;
|
||||
color: white !important;
|
||||
border-color: #8a6ba8 !important;
|
||||
}
|
||||
|
||||
button.button-default.orange:hover {
|
||||
background: #ffb366 !important;
|
||||
color: black !important;
|
||||
border-color: #ffb366 !important;
|
||||
}
|
||||
|
||||
/* Modern Button Maker Styles */
|
||||
.button-maker {
|
||||
max-width: 45rem;
|
||||
width: 100%;
|
||||
max-height: 80vh;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
padding: 0;
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.button-maker-title {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
color: var(--text-normal);
|
||||
margin-bottom: 1rem;
|
||||
padding: 1.5rem 1.5rem 0 1.5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.button-maker-container {
|
||||
padding: 0 1.5rem 1.5rem 1.5rem;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.button-maker-form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.form-section {
|
||||
background: var(--background-secondary);
|
||||
border-radius: 8px;
|
||||
padding: 1.5rem;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
color: var(--text-normal);
|
||||
margin: 0 0 1rem 0;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 2px solid var(--interactive-accent);
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.form-field {
|
||||
margin-bottom: 1.5rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.field-label {
|
||||
display: block;
|
||||
font-weight: 600;
|
||||
color: var(--text-normal);
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: 0.9rem;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.field-description {
|
||||
color: var(--text-muted);
|
||||
font-size: 0.8rem;
|
||||
margin-bottom: 0.75rem;
|
||||
line-height: 1.4;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.button-maker .field-input,
|
||||
.button-maker .field-textarea {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 0.75rem;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 6px;
|
||||
background: var(--background-primary);
|
||||
color: var(--text-normal);
|
||||
font-size: 0.9rem;
|
||||
transition: all 0.2s ease;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.button-maker .field-input:focus,
|
||||
.button-maker .field-textarea:focus {
|
||||
outline: none;
|
||||
border-color: var(--interactive-accent);
|
||||
box-shadow: 0 0 0 2px rgba(var(--interactive-accent-rgb), 0.2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
.field-textarea {
|
||||
resize: vertical;
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
.toggle-settings {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.toggle-field {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 0.75rem;
|
||||
padding: 1rem;
|
||||
background: var(--background-primary);
|
||||
border-radius: 6px;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
transition: all 0.2s ease;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.toggle-field:hover {
|
||||
border-color: var(--interactive-accent);
|
||||
}
|
||||
|
||||
.toggle-label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
cursor: pointer;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.toggle-input {
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
accent-color: var(--interactive-accent);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.toggle-text {
|
||||
font-weight: 600;
|
||||
color: var(--text-normal);
|
||||
font-size: 0.9rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.toggle-description {
|
||||
color: var(--text-muted);
|
||||
font-size: 0.8rem;
|
||||
margin-top: 0.25rem;
|
||||
line-height: 1.4;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.action-container {
|
||||
margin-top: 1rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.actions-header {
|
||||
margin-bottom: 1rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.actions-header h4 {
|
||||
margin: 0 0 0.5rem 0;
|
||||
color: var(--text-normal);
|
||||
font-size: 1rem;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.actions-header p {
|
||||
margin: 0;
|
||||
color: var(--text-muted);
|
||||
font-size: 0.8rem;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.actions-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.action-card {
|
||||
background: var(--background-primary);
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 8px;
|
||||
padding: 1rem;
|
||||
transition: all 0.2s ease;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.action-card:hover {
|
||||
border-color: var(--interactive-accent);
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.action-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 1rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.action-number {
|
||||
font-weight: 600;
|
||||
color: var(--text-normal);
|
||||
font-size: 0.9rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.btn-remove {
|
||||
background: var(--background-modifier-error);
|
||||
color: var(--text-on-accent);
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-size: 0.8rem;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.btn-remove:hover {
|
||||
background: var(--background-modifier-error-hover);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.action-input-container {
|
||||
margin-top: 0.75rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.action-input {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
padding: 0.75rem;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 6px;
|
||||
background: var(--background-primary);
|
||||
color: var(--text-normal);
|
||||
font-size: 0.9rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 0.75rem 1.5rem;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
font-weight: 600;
|
||||
font-size: 0.9rem;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
text-decoration: none;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background: var(--interactive-accent);
|
||||
color: var(--text-on-accent);
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background: var(--interactive-accent-hover);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background: transparent;
|
||||
color: var(--text-normal);
|
||||
border: 2px solid var(--interactive-accent);
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
background: var(--interactive-accent);
|
||||
color: var(--text-on-accent);
|
||||
}
|
||||
|
||||
.btn-add-action {
|
||||
background: var(--interactive-success);
|
||||
color: var(--text-on-accent);
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.btn-add-action:hover {
|
||||
background: var(--interactive-success-hover);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.form-actions {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
justify-content: flex-end;
|
||||
padding-top: 1rem;
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.preview-section {
|
||||
background: var(--background-secondary);
|
||||
border-radius: 8px;
|
||||
padding: 1.5rem;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
margin-top: 1rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.preview-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 60px;
|
||||
background: var(--background-primary);
|
||||
border-radius: 6px;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
padding: 1rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.remove-settings,
|
||||
.replace-settings,
|
||||
.inherit-settings {
|
||||
margin-top: 1rem;
|
||||
padding: 1rem;
|
||||
background: var(--background-primary);
|
||||
border-radius: 6px;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.custom-color-container {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 1rem;
|
||||
margin-top: 1rem;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* Responsive Design */
|
||||
@media (max-width: 768px) {
|
||||
.button-maker {
|
||||
max-width: 95vw;
|
||||
width: 95vw;
|
||||
max-height: 90vh;
|
||||
}
|
||||
|
||||
.custom-color-container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.form-actions {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Dark theme adjustments */
|
||||
.theme-dark .button-maker {
|
||||
background: var(--background-primary);
|
||||
}
|
||||
|
||||
.theme-dark .form-section {
|
||||
background: var(--background-secondary-alt);
|
||||
}
|
||||
|
||||
.theme-dark .action-card {
|
||||
background: var(--background-primary);
|
||||
}
|
||||
|
||||
.theme-dark .toggle-field {
|
||||
background: var(--background-primary);
|
||||
}
|
||||
|
||||
.theme-dark .preview-container {
|
||||
background: var(--background-primary);
|
||||
}
|
||||
|
||||
/* Animation for smooth transitions */
|
||||
.form-field,
|
||||
.toggle-field,
|
||||
.action-card {
|
||||
animation: fadeIn 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(10px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
10
.obsidian/plugins/calendar/data.json
vendored
Normal file
10
.obsidian/plugins/calendar/data.json
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"shouldConfirmBeforeCreate": true,
|
||||
"weekStart": "locale",
|
||||
"wordsPerDot": 250,
|
||||
"showWeeklyNote": false,
|
||||
"weeklyNoteFormat": "",
|
||||
"weeklyNoteTemplate": "",
|
||||
"weeklyNoteFolder": "",
|
||||
"localeOverride": "system-default"
|
||||
}
|
||||
4459
.obsidian/plugins/calendar/main.js
vendored
Normal file
4459
.obsidian/plugins/calendar/main.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
.obsidian/plugins/calendar/manifest.json
vendored
Normal file
10
.obsidian/plugins/calendar/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"id": "calendar",
|
||||
"name": "Calendar",
|
||||
"description": "Calendar view of your daily notes",
|
||||
"version": "1.5.10",
|
||||
"author": "Liam Cain",
|
||||
"authorUrl": "https://github.com/liamcain/",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "0.9.11"
|
||||
}
|
||||
20876
.obsidian/plugins/dataview/main.js
vendored
Normal file
20876
.obsidian/plugins/dataview/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
.obsidian/plugins/dataview/manifest.json
vendored
Normal file
11
.obsidian/plugins/dataview/manifest.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "dataview",
|
||||
"name": "Dataview",
|
||||
"version": "0.5.68",
|
||||
"minAppVersion": "0.13.11",
|
||||
"description": "Complex data views for the data-obsessed.",
|
||||
"author": "Michael Brenan <blacksmithgu@gmail.com>",
|
||||
"authorUrl": "https://github.com/blacksmithgu",
|
||||
"helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
141
.obsidian/plugins/dataview/styles.css
vendored
Normal file
141
.obsidian/plugins/dataview/styles.css
vendored
Normal file
@ -0,0 +1,141 @@
|
||||
.block-language-dataview {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/** Table Views **/
|
||||
/*****************/
|
||||
|
||||
/* List View Default Styling; rendered internally as a table. */
|
||||
.table-view-table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table > thead > tr, .table-view-table > tbody > tr {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.table-view-table > tbody > tr:hover {
|
||||
background-color: var(--table-row-background-hover);
|
||||
}
|
||||
|
||||
.table-view-table > thead > tr > th {
|
||||
font-weight: 700;
|
||||
font-size: larger;
|
||||
border-top: none;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
border-bottom: solid;
|
||||
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table > tbody > tr > td {
|
||||
text-align: left;
|
||||
border: none;
|
||||
font-weight: 400;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table-view-table ul, .table-view-table ol {
|
||||
margin-block-start: 0.2em !important;
|
||||
margin-block-end: 0.2em !important;
|
||||
}
|
||||
|
||||
/** Rendered value styling for any view. */
|
||||
.dataview-result-list-root-ul {
|
||||
padding: 0em !important;
|
||||
margin: 0em !important;
|
||||
}
|
||||
|
||||
.dataview-result-list-ul {
|
||||
margin-block-start: 0.2em !important;
|
||||
margin-block-end: 0.2em !important;
|
||||
}
|
||||
|
||||
/** Generic grouping styling. */
|
||||
.dataview.result-group {
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
/*******************/
|
||||
/** Inline Fields **/
|
||||
/*******************/
|
||||
|
||||
.dataview.inline-field-key {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-primary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
.dataview.inline-field-value {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
.dataview.inline-field-standalone-value {
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font-family: var(--font-monospace);
|
||||
background-color: var(--background-secondary-alt);
|
||||
color: var(--nav-item-color-selected);
|
||||
}
|
||||
|
||||
/***************/
|
||||
/** Task View **/
|
||||
/***************/
|
||||
|
||||
.dataview.task-list-item, .dataview.task-list-basic-item {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
.dataview.task-list-item:hover, .dataview.task-list-basic-item:hover {
|
||||
background-color: var(--text-selection);
|
||||
box-shadow: -40px 0 0 var(--text-selection);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/** Error Views **/
|
||||
/*****************/
|
||||
|
||||
div.dataview-error-box {
|
||||
width: 100%;
|
||||
min-height: 150px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 4px dashed var(--background-secondary);
|
||||
}
|
||||
|
||||
.dataview-error-message {
|
||||
color: var(--text-muted);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*************************/
|
||||
/** Additional Metadata **/
|
||||
/*************************/
|
||||
|
||||
.dataview.small-text {
|
||||
font-size: smaller;
|
||||
color: var(--text-muted);
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.dataview.small-text::before {
|
||||
content: "(";
|
||||
}
|
||||
|
||||
.dataview.small-text::after {
|
||||
content: ")";
|
||||
}
|
||||
452
.obsidian/plugins/obsidian-git/main.js
vendored
Normal file
452
.obsidian/plugins/obsidian-git/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/obsidian-git/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-git/manifest.json
vendored
Normal 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.2"
|
||||
}
|
||||
710
.obsidian/plugins/obsidian-git/styles.css
vendored
Normal file
710
.obsidian/plugins/obsidian-git/styles.css
vendored
Normal file
@ -0,0 +1,710 @@
|
||||
@keyframes loading {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.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);
|
||||
}
|
||||
|
||||
.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 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: #c33;
|
||||
--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;
|
||||
}
|
||||
}
|
||||
|
||||
/* ====================== 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-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 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;
|
||||
}
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
|
||||
.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;
|
||||
.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;
|
||||
}
|
||||
153
.obsidian/plugins/obsidian-kanban/main.js
vendored
Normal file
153
.obsidian/plugins/obsidian-kanban/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
.obsidian/plugins/obsidian-kanban/manifest.json
vendored
Normal file
11
.obsidian/plugins/obsidian-kanban/manifest.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "obsidian-kanban",
|
||||
"name": "Kanban",
|
||||
"version": "2.0.51",
|
||||
"minAppVersion": "1.0.0",
|
||||
"description": "Create markdown-backed Kanban boards in Obsidian.",
|
||||
"author": "mgmeyers",
|
||||
"authorUrl": "https://github.com/mgmeyers/obsidian-kanban",
|
||||
"helpUrl": "https://publish.obsidian.md/kanban/Obsidian+Kanban+Plugin",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
1
.obsidian/plugins/obsidian-kanban/styles.css
vendored
Normal file
1
.obsidian/plugins/obsidian-kanban/styles.css
vendored
Normal file
File diff suppressed because one or more lines are too long
86
.obsidian/plugins/obsidian-tasks-plugin/data.json
vendored
Normal file
86
.obsidian/plugins/obsidian-tasks-plugin/data.json
vendored
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
"presets": {
|
||||
"this_file": "path includes {{query.file.path}}",
|
||||
"this_folder": "folder includes {{query.file.folder}}",
|
||||
"this_folder_only": "filter by function task.file.folder === query.file.folder",
|
||||
"this_root": "root includes {{query.file.root}}",
|
||||
"hide_date_fields": "# Hide any values for all date fields\nhide due date\nhide scheduled date\nhide start date\nhide created date\nhide done date\nhide cancelled date",
|
||||
"hide_non_date_fields": "# Hide all the non-date fields, but not tags\nhide id\nhide depends on\nhide recurrence rule\nhide on completion\nhide priority",
|
||||
"hide_query_elements": "# Hide postpone, edit and backinks\nhide postpone button\nhide edit button\nhide backlinks",
|
||||
"hide_everything": "# Hide everything except description and any tags\npreset hide_date_fields\npreset hide_non_date_fields\npreset hide_query_elements"
|
||||
},
|
||||
"globalQuery": "",
|
||||
"globalFilter": "",
|
||||
"removeGlobalFilter": false,
|
||||
"taskFormat": "tasksPluginEmoji",
|
||||
"setCreatedDate": true,
|
||||
"setDoneDate": true,
|
||||
"setCancelledDate": true,
|
||||
"autoSuggestInEditor": true,
|
||||
"autoSuggestMinMatch": 0,
|
||||
"autoSuggestMaxItems": 20,
|
||||
"provideAccessKeys": true,
|
||||
"useFilenameAsScheduledDate": false,
|
||||
"filenameAsScheduledDateFormat": "",
|
||||
"filenameAsDateFolders": [],
|
||||
"recurrenceOnNextLine": false,
|
||||
"removeScheduledDateOnRecurrence": false,
|
||||
"statusSettings": {
|
||||
"coreStatuses": [
|
||||
{
|
||||
"symbol": " ",
|
||||
"name": "Todo",
|
||||
"nextStatusSymbol": "x",
|
||||
"availableAsCommand": true,
|
||||
"type": "TODO"
|
||||
},
|
||||
{
|
||||
"symbol": "x",
|
||||
"name": "Done",
|
||||
"nextStatusSymbol": " ",
|
||||
"availableAsCommand": true,
|
||||
"type": "DONE"
|
||||
}
|
||||
],
|
||||
"customStatuses": [
|
||||
{
|
||||
"symbol": "/",
|
||||
"name": "In Progress",
|
||||
"nextStatusSymbol": "x",
|
||||
"availableAsCommand": true,
|
||||
"type": "IN_PROGRESS"
|
||||
},
|
||||
{
|
||||
"symbol": "-",
|
||||
"name": "Cancelled",
|
||||
"nextStatusSymbol": " ",
|
||||
"availableAsCommand": true,
|
||||
"type": "CANCELLED"
|
||||
}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"INTERNAL_TESTING_ENABLED_BY_DEFAULT": true
|
||||
},
|
||||
"generalSettings": {},
|
||||
"headingOpened": {
|
||||
"Core Statuses": true,
|
||||
"Custom Statuses": true
|
||||
},
|
||||
"debugSettings": {
|
||||
"ignoreSortInstructions": false,
|
||||
"showTaskHiddenData": false,
|
||||
"recordTimings": false
|
||||
},
|
||||
"loggingOptions": {
|
||||
"minLevels": {
|
||||
"": "info",
|
||||
"tasks": "info",
|
||||
"tasks.Cache": "info",
|
||||
"tasks.Events": "info",
|
||||
"tasks.File": "info",
|
||||
"tasks.Query": "info",
|
||||
"tasks.Task": "info"
|
||||
}
|
||||
}
|
||||
}
|
||||
501
.obsidian/plugins/obsidian-tasks-plugin/main.js
vendored
Normal file
501
.obsidian/plugins/obsidian-tasks-plugin/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
12
.obsidian/plugins/obsidian-tasks-plugin/manifest.json
vendored
Normal file
12
.obsidian/plugins/obsidian-tasks-plugin/manifest.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"id": "obsidian-tasks-plugin",
|
||||
"name": "Tasks",
|
||||
"version": "7.21.0",
|
||||
"minAppVersion": "1.4.0",
|
||||
"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)",
|
||||
"authorUrl": "https://github.com/obsidian-tasks-group",
|
||||
"fundingUrl": "https://github.com/sponsors/claremacrae",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
1
.obsidian/plugins/obsidian-tasks-plugin/styles.css
vendored
Normal file
1
.obsidian/plugins/obsidian-tasks-plugin/styles.css
vendored
Normal file
File diff suppressed because one or more lines are too long
42
.obsidian/plugins/omnisearch/data.json
vendored
Normal file
42
.obsidian/plugins/omnisearch/data.json
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"useCache": true,
|
||||
"hideExcluded": false,
|
||||
"recencyBoost": "0",
|
||||
"downrankedFoldersFilters": [],
|
||||
"ignoreDiacritics": true,
|
||||
"ignoreArabicDiacritics": false,
|
||||
"indexedFileTypes": [],
|
||||
"displayTitle": "",
|
||||
"PDFIndexing": false,
|
||||
"officeIndexing": false,
|
||||
"imagesIndexing": false,
|
||||
"aiImageIndexing": false,
|
||||
"unsupportedFilesIndexing": "default",
|
||||
"splitCamelCase": false,
|
||||
"openInNewPane": false,
|
||||
"vimLikeNavigationShortcut": false,
|
||||
"ribbonIcon": true,
|
||||
"showExcerpt": true,
|
||||
"maxEmbeds": 5,
|
||||
"renderLineReturnInExcerpts": true,
|
||||
"showCreateButton": false,
|
||||
"highlight": true,
|
||||
"showPreviousQueryResults": true,
|
||||
"simpleSearch": false,
|
||||
"tokenizeUrls": false,
|
||||
"fuzziness": "1",
|
||||
"weightBasename": 10,
|
||||
"weightDirectory": 7,
|
||||
"weightH1": 6,
|
||||
"weightH2": 5,
|
||||
"weightH3": 4,
|
||||
"weightUnmarkedTags": 2,
|
||||
"weightCustomProperties": [],
|
||||
"httpApiEnabled": false,
|
||||
"httpApiPort": "51361",
|
||||
"httpApiNotice": true,
|
||||
"welcomeMessage": "1.21.0",
|
||||
"verboseLogging": false,
|
||||
"DANGER_httpHost": null,
|
||||
"DANGER_forceSaveCache": false
|
||||
}
|
||||
170
.obsidian/plugins/omnisearch/main.js
vendored
Normal file
170
.obsidian/plugins/omnisearch/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
14
.obsidian/plugins/omnisearch/manifest.json
vendored
Normal file
14
.obsidian/plugins/omnisearch/manifest.json
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"id": "omnisearch",
|
||||
"name": "Omnisearch",
|
||||
"version": "1.27.2",
|
||||
"minAppVersion": "1.7.2",
|
||||
"description": "A search engine that just works",
|
||||
"author": "Simon Cambier",
|
||||
"authorUrl": "https://github.com/scambier/obsidian-omnisearch",
|
||||
"fundingUrl": {
|
||||
"Github": "https://github.com/sponsors/scambier",
|
||||
"Ko-fi": "https://ko-fi.com/scambier"
|
||||
},
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
135
.obsidian/plugins/omnisearch/styles.css
vendored
Normal file
135
.obsidian/plugins/omnisearch/styles.css
vendored
Normal file
@ -0,0 +1,135 @@
|
||||
.omnisearch-modal {
|
||||
}
|
||||
|
||||
.omnisearch-result {
|
||||
white-space: normal;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
/* justify-content: space-between; */
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
.omnisearch-result__title-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
column-gap: 5px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.omnisearch-result__title {
|
||||
white-space: pre-wrap;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.omnisearch-result__title > span {
|
||||
}
|
||||
|
||||
.omnisearch-result__folder-path {
|
||||
font-size: 0.75rem;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
gap: 5px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.omnisearch-result__extension {
|
||||
font-size: 0.7rem;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.omnisearch-result__counter {
|
||||
font-size: 0.7rem;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.omnisearch-result__body {
|
||||
white-space: normal;
|
||||
font-size: small;
|
||||
word-wrap: normal;
|
||||
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
|
||||
color: var(--text-muted);
|
||||
margin-inline-start: 0.5em;
|
||||
}
|
||||
|
||||
.omnisearch-result__embed {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
|
||||
.omnisearch-result__image-container {
|
||||
flex-basis: 20%;
|
||||
text-align: end;
|
||||
}
|
||||
|
||||
.omnisearch-highlight {
|
||||
}
|
||||
|
||||
.omnisearch-default-highlight {
|
||||
text-decoration: underline;
|
||||
text-decoration-color: var(--text-highlight-bg);
|
||||
text-decoration-thickness: 3px;
|
||||
text-underline-offset: -1px;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
.omnisearch-input-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: row;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.omnisearch-result__icon {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.omnisearch-result__icon svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.omnisearch-result__icon--emoji {
|
||||
font-size: 16px;
|
||||
vertical-align: middle;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 600px) {
|
||||
.omnisearch-input-container {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.omnisearch-input-container__buttons {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
width: 100%;
|
||||
padding: 0 1em 0 1em;
|
||||
gap: 1em;
|
||||
}
|
||||
.omnisearch-input-container__buttons > button {
|
||||
flex-grow: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 600px) {
|
||||
.omnisearch-input-container__buttons {
|
||||
margin-inline-end: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.omnisearch-input-field {
|
||||
position: relative;
|
||||
flex-grow: 1;
|
||||
}
|
||||
115
.obsidian/plugins/quickadd/data.json
vendored
Normal file
115
.obsidian/plugins/quickadd/data.json
vendored
Normal file
@ -0,0 +1,115 @@
|
||||
{
|
||||
"choices": [],
|
||||
"inputPrompt": "single-line",
|
||||
"persistInputPromptDrafts": true,
|
||||
"useSelectionAsCaptureValue": true,
|
||||
"devMode": false,
|
||||
"templateFolderPath": "",
|
||||
"announceUpdates": "major",
|
||||
"version": "2.11.0",
|
||||
"globalVariables": {},
|
||||
"onePageInputEnabled": false,
|
||||
"disableOnlineFeatures": true,
|
||||
"enableRibbonIcon": false,
|
||||
"showCaptureNotification": true,
|
||||
"showInputCancellationNotification": false,
|
||||
"enableTemplatePropertyTypes": false,
|
||||
"dateAliases": {
|
||||
"t": "today",
|
||||
"tm": "tomorrow",
|
||||
"yd": "yesterday",
|
||||
"nw": "next week",
|
||||
"nm": "next month",
|
||||
"ny": "next year",
|
||||
"lw": "last week",
|
||||
"lm": "last month",
|
||||
"ly": "last year"
|
||||
},
|
||||
"ai": {
|
||||
"defaultModel": "Ask me",
|
||||
"defaultSystemPrompt": "As an AI assistant within Obsidian, your primary goal is to help users manage their ideas and knowledge more effectively. Format your responses using Markdown syntax. Please use the [[Obsidian]] link format. You can write aliases for the links by writing [[Obsidian|the alias after the pipe symbol]]. To use mathematical notation, use LaTeX syntax. LaTeX syntax for larger equations should be on separate lines, surrounded with double dollar signs ($$). You can also inline math expressions by wrapping it in $ symbols. For example, use $$w_{ij}^{\text{new}}:=w_{ij}^{\text{current}}+etacdotdelta_jcdot x_{ij}$$ on a separate line, but you can write \"($eta$ = learning rate, $delta_j$ = error term, $x_{ij}$ = input)\" inline.",
|
||||
"promptTemplatesFolderPath": "",
|
||||
"showAssistant": true,
|
||||
"providers": [
|
||||
{
|
||||
"name": "OpenAI",
|
||||
"endpoint": "https://api.openai.com/v1",
|
||||
"apiKey": "",
|
||||
"models": [
|
||||
{
|
||||
"name": "gpt-3.5-turbo",
|
||||
"maxTokens": 4096
|
||||
},
|
||||
{
|
||||
"name": "gpt-3.5-turbo-16k",
|
||||
"maxTokens": 16384
|
||||
},
|
||||
{
|
||||
"name": "gpt-3.5-turbo-1106",
|
||||
"maxTokens": 16385
|
||||
},
|
||||
{
|
||||
"name": "gpt-4",
|
||||
"maxTokens": 8192
|
||||
},
|
||||
{
|
||||
"name": "gpt-4-32k",
|
||||
"maxTokens": 32768
|
||||
},
|
||||
{
|
||||
"name": "gpt-4-1106-preview",
|
||||
"maxTokens": 128000
|
||||
},
|
||||
{
|
||||
"name": "gpt-4-turbo",
|
||||
"maxTokens": 128000
|
||||
},
|
||||
{
|
||||
"name": "gpt-4o",
|
||||
"maxTokens": 128000
|
||||
},
|
||||
{
|
||||
"name": "gpt-4o-mini",
|
||||
"maxTokens": 128000
|
||||
}
|
||||
],
|
||||
"autoSyncModels": false,
|
||||
"modelSource": "modelsDev"
|
||||
},
|
||||
{
|
||||
"name": "Gemini",
|
||||
"endpoint": "https://generativelanguage.googleapis.com",
|
||||
"apiKey": "",
|
||||
"models": [
|
||||
{
|
||||
"name": "gemini-1.5-pro",
|
||||
"maxTokens": 1000000
|
||||
},
|
||||
{
|
||||
"name": "gemini-1.5-flash",
|
||||
"maxTokens": 1000000
|
||||
},
|
||||
{
|
||||
"name": "gemini-1.5-flash-8b",
|
||||
"maxTokens": 1000000
|
||||
}
|
||||
],
|
||||
"autoSyncModels": false,
|
||||
"modelSource": "modelsDev"
|
||||
}
|
||||
]
|
||||
},
|
||||
"migrations": {
|
||||
"migrateToMacroIDFromEmbeddedMacro": true,
|
||||
"useQuickAddTemplateFolder": true,
|
||||
"incrementFileNameSettingMoveToDefaultBehavior": true,
|
||||
"mutualExclusionInsertAfterAndWriteToBottomOfFile": true,
|
||||
"setVersionAfterUpdateModalRelease": true,
|
||||
"addDefaultAIProviders": true,
|
||||
"removeMacroIndirection": true,
|
||||
"migrateFileOpeningSettings": true,
|
||||
"backfillFileOpeningDefaults": true,
|
||||
"setProviderModelDiscoveryMode": true,
|
||||
"migrateProviderApiKeysToSecretStorage": true
|
||||
}
|
||||
}
|
||||
114
.obsidian/plugins/quickadd/main.js
vendored
Normal file
114
.obsidian/plugins/quickadd/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
12
.obsidian/plugins/quickadd/manifest.json
vendored
Normal file
12
.obsidian/plugins/quickadd/manifest.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"id": "quickadd",
|
||||
"name": "QuickAdd",
|
||||
"version": "2.11.0",
|
||||
"minAppVersion": "1.11.4",
|
||||
"description": "Quickly add new pages or content to your vault.",
|
||||
"author": "Christian B. B. Houmann",
|
||||
"authorUrl": "https://bagerbach.com",
|
||||
"fundingUrl": "https://www.buymeacoffee.com/chhoumann",
|
||||
"helpUrl": "https://quickadd.obsidian.guide/docs/",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
1
.obsidian/plugins/quickadd/styles.css
vendored
Normal file
1
.obsidian/plugins/quickadd/styles.css
vendored
Normal file
File diff suppressed because one or more lines are too long
459
.obsidian/plugins/tasknotes/data.json
vendored
Normal file
459
.obsidian/plugins/tasknotes/data.json
vendored
Normal file
@ -0,0 +1,459 @@
|
||||
{
|
||||
"tasksFolder": "03 - Taken/{{year}}",
|
||||
"moveArchivedTasks": false,
|
||||
"archiveFolder": "TaskNotes/Archive",
|
||||
"taskTag": "task",
|
||||
"taskIdentificationMethod": "tag",
|
||||
"hideIdentifyingTagsInCards": true,
|
||||
"taskPropertyName": "",
|
||||
"taskPropertyValue": "",
|
||||
"excludedFolders": "01 - Inbox, 02 - Dagboek",
|
||||
"defaultTaskPriority": "normal",
|
||||
"defaultTaskStatus": "open",
|
||||
"taskOrgFiltersCollapsed": false,
|
||||
"taskFilenameFormat": "zettel",
|
||||
"storeTitleInFilename": true,
|
||||
"customFilenameTemplate": "{title}",
|
||||
"taskCreationDefaults": {
|
||||
"defaultContexts": "",
|
||||
"defaultTags": "",
|
||||
"defaultProjects": "",
|
||||
"useParentNoteAsProject": false,
|
||||
"defaultTimeEstimate": 0,
|
||||
"defaultRecurrence": "none",
|
||||
"defaultDueDate": "none",
|
||||
"defaultScheduledDate": "today",
|
||||
"bodyTemplate": "",
|
||||
"useBodyTemplate": false,
|
||||
"defaultReminders": []
|
||||
},
|
||||
"calendarViewSettings": {
|
||||
"defaultView": "dayGridMonth",
|
||||
"customDayCount": 3,
|
||||
"slotDuration": "00:30:00",
|
||||
"slotMinTime": "06:00:00",
|
||||
"slotMaxTime": "19:00:00",
|
||||
"scrollTime": "08:00:00",
|
||||
"firstDay": 1,
|
||||
"timeFormat": "24",
|
||||
"showWeekends": true,
|
||||
"locale": "",
|
||||
"defaultShowScheduled": true,
|
||||
"defaultShowDue": true,
|
||||
"defaultShowDueWhenScheduled": true,
|
||||
"defaultShowScheduledToDueSpan": false,
|
||||
"defaultShowTimeEntries": false,
|
||||
"defaultShowRecurring": true,
|
||||
"defaultShowICSEvents": true,
|
||||
"enableTimeblocking": true,
|
||||
"defaultShowTimeblocks": true,
|
||||
"defaultTimeblockColor": "#6366f1",
|
||||
"nowIndicator": true,
|
||||
"selectMirror": true,
|
||||
"weekNumbers": true,
|
||||
"showTodayHighlight": true,
|
||||
"eventMinHeight": 15,
|
||||
"slotEventOverlap": true,
|
||||
"eventMaxStack": null,
|
||||
"dayMaxEvents": true,
|
||||
"dayMaxEventRows": false
|
||||
},
|
||||
"pomodoroWorkDuration": 25,
|
||||
"pomodoroShortBreakDuration": 5,
|
||||
"pomodoroLongBreakDuration": 15,
|
||||
"pomodoroLongBreakInterval": 4,
|
||||
"pomodoroAutoStartBreaks": true,
|
||||
"pomodoroAutoStartWork": false,
|
||||
"pomodoroNotifications": true,
|
||||
"pomodoroSoundEnabled": true,
|
||||
"pomodoroSoundVolume": 50,
|
||||
"pomodoroStorageLocation": "plugin",
|
||||
"pomodoroMobileSidebar": "tab",
|
||||
"enableTaskLinkOverlay": true,
|
||||
"disableOverlayOnAlias": false,
|
||||
"enableInstantTaskConvert": true,
|
||||
"useDefaultsOnInstantConvert": true,
|
||||
"enableNaturalLanguageInput": true,
|
||||
"nlpDefaultToScheduled": true,
|
||||
"nlpLanguage": "en",
|
||||
"uiLanguage": "system",
|
||||
"statusSuggestionTrigger": "*",
|
||||
"nlpTriggers": {
|
||||
"triggers": [
|
||||
{
|
||||
"propertyId": "tags",
|
||||
"trigger": "#",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"propertyId": "contexts",
|
||||
"trigger": "@",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"propertyId": "projects",
|
||||
"trigger": "+",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"propertyId": "status",
|
||||
"trigger": "*",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"propertyId": "priority",
|
||||
"trigger": "!",
|
||||
"enabled": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"singleClickAction": "edit",
|
||||
"doubleClickAction": "openNote",
|
||||
"projectAutosuggest": {
|
||||
"enableFuzzy": false,
|
||||
"rows": [
|
||||
"{title|n(Title)}",
|
||||
"{aliases|n(Aliases)}",
|
||||
"{file.path|n(Path)}"
|
||||
],
|
||||
"showAdvanced": false,
|
||||
"requiredTags": [],
|
||||
"includeFolders": [],
|
||||
"propertyKey": "",
|
||||
"propertyValue": ""
|
||||
},
|
||||
"inlineTaskConvertFolder": "{{currentNotePath}}",
|
||||
"disableNoteIndexing": false,
|
||||
"suggestionDebounceMs": 0,
|
||||
"fieldMapping": {
|
||||
"title": "title",
|
||||
"status": "status",
|
||||
"priority": "priority",
|
||||
"due": "due",
|
||||
"scheduled": "scheduled",
|
||||
"contexts": "contexts",
|
||||
"projects": "projects",
|
||||
"timeEstimate": "timeEstimate",
|
||||
"completedDate": "completedDate",
|
||||
"dateCreated": "dateCreated",
|
||||
"dateModified": "dateModified",
|
||||
"recurrence": "recurrence",
|
||||
"recurrenceAnchor": "recurrence_anchor",
|
||||
"archiveTag": "archived",
|
||||
"timeEntries": "timeEntries",
|
||||
"completeInstances": "complete_instances",
|
||||
"skippedInstances": "skipped_instances",
|
||||
"blockedBy": "blockedBy",
|
||||
"pomodoros": "pomodoros",
|
||||
"icsEventId": "icsEventId",
|
||||
"icsEventTag": "ics_event",
|
||||
"googleCalendarEventId": "googleCalendarEventId",
|
||||
"reminders": "reminders"
|
||||
},
|
||||
"customStatuses": [
|
||||
{
|
||||
"id": "none",
|
||||
"value": "none",
|
||||
"label": "None",
|
||||
"color": "#cccccc",
|
||||
"isCompleted": false,
|
||||
"order": 0,
|
||||
"autoArchive": false,
|
||||
"autoArchiveDelay": 5
|
||||
},
|
||||
{
|
||||
"id": "open",
|
||||
"value": "open",
|
||||
"label": "Open",
|
||||
"color": "#808080",
|
||||
"isCompleted": false,
|
||||
"order": 1,
|
||||
"autoArchive": false,
|
||||
"autoArchiveDelay": 5
|
||||
},
|
||||
{
|
||||
"id": "in-progress",
|
||||
"value": "in-progress",
|
||||
"label": "In progress",
|
||||
"color": "#0066cc",
|
||||
"isCompleted": false,
|
||||
"order": 2,
|
||||
"autoArchive": false,
|
||||
"autoArchiveDelay": 5
|
||||
},
|
||||
{
|
||||
"id": "done",
|
||||
"value": "done",
|
||||
"label": "Done",
|
||||
"color": "#00aa00",
|
||||
"isCompleted": true,
|
||||
"order": 3,
|
||||
"autoArchive": false,
|
||||
"autoArchiveDelay": 5
|
||||
}
|
||||
],
|
||||
"customPriorities": [
|
||||
{
|
||||
"id": "none",
|
||||
"value": "none",
|
||||
"label": "None",
|
||||
"color": "#cccccc",
|
||||
"weight": 0
|
||||
},
|
||||
{
|
||||
"id": "low",
|
||||
"value": "low",
|
||||
"label": "Low",
|
||||
"color": "#00aa00",
|
||||
"weight": 1
|
||||
},
|
||||
{
|
||||
"id": "normal",
|
||||
"value": "normal",
|
||||
"label": "Normal",
|
||||
"color": "#ffaa00",
|
||||
"weight": 2
|
||||
},
|
||||
{
|
||||
"id": "high",
|
||||
"value": "high",
|
||||
"label": "High",
|
||||
"color": "#ff0000",
|
||||
"weight": 3
|
||||
}
|
||||
],
|
||||
"recurrenceMigrated": false,
|
||||
"showReleaseNotesOnUpdate": true,
|
||||
"showTrackedTasksInStatusBar": false,
|
||||
"autoStopTimeTrackingOnComplete": true,
|
||||
"autoStopTimeTrackingNotification": false,
|
||||
"showRelationships": true,
|
||||
"relationshipsPosition": "bottom",
|
||||
"showTaskCardInNote": true,
|
||||
"showExpandableSubtasks": true,
|
||||
"subtaskChevronPosition": "right",
|
||||
"viewsButtonAlignment": "right",
|
||||
"hideCompletedFromOverdue": true,
|
||||
"icsIntegration": {
|
||||
"defaultNoteTemplate": "",
|
||||
"defaultNoteFolder": "",
|
||||
"icsNoteFilenameFormat": "title",
|
||||
"customICSNoteFilenameTemplate": "{title}",
|
||||
"enableAutoExport": false,
|
||||
"autoExportPath": "tasknotes-calendar.ics",
|
||||
"autoExportInterval": 60,
|
||||
"useDurationForExport": false,
|
||||
"useICSEndAsDue": false
|
||||
},
|
||||
"savedViews": [],
|
||||
"enableNotifications": true,
|
||||
"notificationType": "system",
|
||||
"enableAPI": false,
|
||||
"apiPort": 8080,
|
||||
"apiAuthToken": "",
|
||||
"enableMCP": false,
|
||||
"webhooks": [],
|
||||
"userFields": [],
|
||||
"enableModalSplitLayout": true,
|
||||
"defaultVisibleProperties": [
|
||||
"status",
|
||||
"priority",
|
||||
"due",
|
||||
"scheduled",
|
||||
"projects",
|
||||
"contexts",
|
||||
"tags",
|
||||
"blocked",
|
||||
"blocking",
|
||||
"timeEstimate",
|
||||
"totalTrackedTime"
|
||||
],
|
||||
"inlineVisibleProperties": [
|
||||
"status",
|
||||
"priority",
|
||||
"due",
|
||||
"scheduled",
|
||||
"recurrence"
|
||||
],
|
||||
"enableBases": true,
|
||||
"enableMdbaseSpec": false,
|
||||
"autoCreateDefaultBasesFiles": true,
|
||||
"commandFileMapping": {
|
||||
"open-calendar-view": "00 - Start/Views/mini-calendar-default.base",
|
||||
"open-kanban-view": "00 - Start/Views/kanban-default.base",
|
||||
"open-tasks-view": "00 - Start/Views/tasks-default.base",
|
||||
"open-advanced-calendar-view": "00 - Start/Views/calendar-default.base",
|
||||
"open-agenda-view": "00 - Start/Views/agenda-default.base",
|
||||
"relationships": "00 - Start/Views/relationships.base"
|
||||
},
|
||||
"maintainDueDateOffsetInRecurring": false,
|
||||
"resetCheckboxesOnRecurrence": false,
|
||||
"useFrontmatterMarkdownLinks": false,
|
||||
"oauthSetupMode": "advanced",
|
||||
"lemonSqueezyLicenseKey": "",
|
||||
"googleOAuthClientId": "",
|
||||
"googleOAuthClientSecret": "",
|
||||
"microsoftOAuthClientId": "",
|
||||
"microsoftOAuthClientSecret": "",
|
||||
"enableGoogleCalendar": false,
|
||||
"enableMicrosoftCalendar": false,
|
||||
"enabledGoogleCalendars": [],
|
||||
"googleCalendarSyncTokens": {},
|
||||
"enabledMicrosoftCalendars": [],
|
||||
"microsoftCalendarSyncTokens": {},
|
||||
"googleCalendarExport": {
|
||||
"enabled": false,
|
||||
"targetCalendarId": "",
|
||||
"syncOnTaskCreate": true,
|
||||
"syncOnTaskUpdate": true,
|
||||
"syncOnTaskComplete": true,
|
||||
"syncOnTaskDelete": true,
|
||||
"eventTitleTemplate": "{{title}}",
|
||||
"includeDescription": true,
|
||||
"eventColorId": null,
|
||||
"syncTrigger": "scheduled",
|
||||
"createAsAllDay": true,
|
||||
"defaultEventDuration": 60,
|
||||
"includeObsidianLink": true,
|
||||
"defaultReminderMinutes": null
|
||||
},
|
||||
"lastSeenVersion": "4.4.0",
|
||||
"modalFieldsConfig": {
|
||||
"version": 1,
|
||||
"fields": [
|
||||
{
|
||||
"id": "title",
|
||||
"fieldType": "core",
|
||||
"group": "basic",
|
||||
"displayName": "Title",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 0,
|
||||
"enabled": true,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"id": "details",
|
||||
"fieldType": "core",
|
||||
"group": "basic",
|
||||
"displayName": "Details",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 1,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "contexts",
|
||||
"fieldType": "core",
|
||||
"group": "metadata",
|
||||
"displayName": "Contexts",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 0,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "tags",
|
||||
"fieldType": "core",
|
||||
"group": "metadata",
|
||||
"displayName": "Tags",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 1,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "time-estimate",
|
||||
"fieldType": "core",
|
||||
"group": "metadata",
|
||||
"displayName": "Time Estimate",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "projects",
|
||||
"fieldType": "organization",
|
||||
"group": "organization",
|
||||
"displayName": "Projects",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 0,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "subtasks",
|
||||
"fieldType": "organization",
|
||||
"group": "organization",
|
||||
"displayName": "Subtasks",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 1,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "blocked-by",
|
||||
"fieldType": "dependency",
|
||||
"group": "dependencies",
|
||||
"displayName": "Blocked By",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 0,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"id": "blocking",
|
||||
"fieldType": "dependency",
|
||||
"group": "dependencies",
|
||||
"displayName": "Blocking",
|
||||
"visibleInCreation": true,
|
||||
"visibleInEdit": true,
|
||||
"order": 1,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"id": "basic",
|
||||
"displayName": "Basic Information",
|
||||
"order": 0,
|
||||
"collapsible": false,
|
||||
"defaultCollapsed": false
|
||||
},
|
||||
{
|
||||
"id": "metadata",
|
||||
"displayName": "Metadata",
|
||||
"order": 1,
|
||||
"collapsible": true,
|
||||
"defaultCollapsed": false
|
||||
},
|
||||
{
|
||||
"id": "organization",
|
||||
"displayName": "Organization",
|
||||
"order": 2,
|
||||
"collapsible": true,
|
||||
"defaultCollapsed": false
|
||||
},
|
||||
{
|
||||
"id": "dependencies",
|
||||
"displayName": "Dependencies",
|
||||
"order": 3,
|
||||
"collapsible": true,
|
||||
"defaultCollapsed": false
|
||||
},
|
||||
{
|
||||
"id": "custom",
|
||||
"displayName": "Custom Fields",
|
||||
"order": 4,
|
||||
"collapsible": true,
|
||||
"defaultCollapsed": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"pomodoroState": {
|
||||
"isRunning": false,
|
||||
"timeRemaining": 1800
|
||||
},
|
||||
"lastPomodoroDate": "2026-04-02"
|
||||
}
|
||||
1209
.obsidian/plugins/tasknotes/main.js
vendored
Normal file
1209
.obsidian/plugins/tasknotes/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/tasknotes/manifest.json
vendored
Normal file
10
.obsidian/plugins/tasknotes/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"id": "tasknotes",
|
||||
"name": "TaskNotes",
|
||||
"version": "4.4.0",
|
||||
"minAppVersion": "1.10.1",
|
||||
"description": "Note-based task management with calendar, pomodoro and time-tracking integration.",
|
||||
"author": "Callum Alpass",
|
||||
"authorUrl": "https://github.com/callumalpass",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
19585
.obsidian/plugins/tasknotes/styles.css
vendored
Normal file
19585
.obsidian/plugins/tasknotes/styles.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
38
.obsidian/plugins/templater-obsidian/data.json
vendored
Normal file
38
.obsidian/plugins/templater-obsidian/data.json
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"command_timeout": 5,
|
||||
"templates_folder": "08_TEMPLATES",
|
||||
"templates_pairs": [
|
||||
[
|
||||
"",
|
||||
""
|
||||
]
|
||||
],
|
||||
"trigger_on_file_creation": false,
|
||||
"auto_jump_to_cursor": false,
|
||||
"enable_system_commands": false,
|
||||
"shell_path": "",
|
||||
"user_scripts_folder": "",
|
||||
"enable_folder_templates": true,
|
||||
"folder_templates": [
|
||||
{
|
||||
"folder": "",
|
||||
"template": ""
|
||||
}
|
||||
],
|
||||
"enable_file_templates": false,
|
||||
"file_templates": [
|
||||
{
|
||||
"regex": ".*",
|
||||
"template": ""
|
||||
}
|
||||
],
|
||||
"syntax_highlighting": true,
|
||||
"syntax_highlighting_mobile": false,
|
||||
"enabled_templates_hotkeys": [
|
||||
""
|
||||
],
|
||||
"startup_templates": [
|
||||
""
|
||||
],
|
||||
"intellisense_render": 1
|
||||
}
|
||||
45
.obsidian/plugins/templater-obsidian/main.js
vendored
Normal file
45
.obsidian/plugins/templater-obsidian/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
.obsidian/plugins/templater-obsidian/manifest.json
vendored
Normal file
11
.obsidian/plugins/templater-obsidian/manifest.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "templater-obsidian",
|
||||
"name": "Templater",
|
||||
"version": "2.18.1",
|
||||
"description": "Create and use templates",
|
||||
"minAppVersion": "1.5.0",
|
||||
"author": "SilentVoid",
|
||||
"authorUrl": "https://github.com/SilentVoid13",
|
||||
"helpUrl": "https://silentvoid13.github.io/Templater/",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
226
.obsidian/plugins/templater-obsidian/styles.css
vendored
Normal file
226
.obsidian/plugins/templater-obsidian/styles.css
vendored
Normal file
@ -0,0 +1,226 @@
|
||||
.templater_search {
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
|
||||
.templater_div {
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.templater_div > .setting-item {
|
||||
border-top: none !important;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.templater_div > .setting-item > .setting-item-control {
|
||||
justify-content: space-around;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.templater_div
|
||||
> .setting-item
|
||||
> .setting-item-control
|
||||
> .setting-editor-extra-setting-button {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.templater_donating {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.templater_title {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin-top: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.templater_template {
|
||||
align-self: center;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.templater_cmd {
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.templater_div2 > .setting-item {
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.templater-prompt-div,
|
||||
.templater-multisuggester-div {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.templater-prompt-form {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.templater-prompt-input,
|
||||
.templater-multisuggester-input {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.templater-button-div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
textarea.templater-prompt-input {
|
||||
height: 10rem;
|
||||
}
|
||||
|
||||
textarea.templater-prompt-input:focus {
|
||||
border-color: var(--interactive-accent);
|
||||
}
|
||||
|
||||
.templater-multisuggester-list {
|
||||
margin: 1.5em 0;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .templater-command-bg {
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
background-color: var(--background-primary-alt);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command {
|
||||
font-size: 0.85em;
|
||||
font-family: var(--font-monospace);
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .templater-inline .cm-templater-command {
|
||||
background-color: var(--background-primary-alt);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-opening-tag {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-closing-tag {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-interpolation-tag {
|
||||
color: var(--code-property, #008bff);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-templater-execution-tag {
|
||||
color: var(--code-function, #c0d700);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-keyword {
|
||||
color: var(--code-keyword, #00a7aa);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-atom {
|
||||
color: var(--code-normal, #f39b35);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-value,
|
||||
.cm-s-obsidian .cm-templater-command.cm-number,
|
||||
.cm-s-obsidian .cm-templater-command.cm-type {
|
||||
color: var(--code-value, #a06fca);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-def,
|
||||
.cm-s-obsidian .cm-templater-command.cm-type.cm-def {
|
||||
color: var(--code-normal, var(--text-normal));
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-property,
|
||||
.cm-s-obsidian .cm-templater-command.cm-property.cm-def,
|
||||
.cm-s-obsidian .cm-templater-command.cm-attribute {
|
||||
color: var(--code-function, #98e342);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-variable,
|
||||
.cm-s-obsidian .cm-templater-command.cm-variable-2,
|
||||
.cm-s-obsidian .cm-templater-command.cm-variable-3,
|
||||
.cm-s-obsidian .cm-templater-command.cm-meta {
|
||||
color: var(--code-property, #d4d4d4);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-callee,
|
||||
.cm-s-obsidian .cm-templater-command.cm-operator,
|
||||
.cm-s-obsidian .cm-templater-command.cm-qualifier,
|
||||
.cm-s-obsidian .cm-templater-command.cm-builtin {
|
||||
color: var(--code-operator, #fc4384);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-tag {
|
||||
color: var(--code-tag, #fc4384);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-comment,
|
||||
.cm-s-obsidian .cm-templater-command.cm-comment.cm-tag,
|
||||
.cm-s-obsidian .cm-templater-command.cm-comment.cm-attribute {
|
||||
color: var(--code-comment, #696d70);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-string,
|
||||
.cm-s-obsidian .cm-templater-command.cm-string-2 {
|
||||
color: var(--code-string, #e6db74);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-header,
|
||||
.cm-s-obsidian .cm-templater-command.cm-hr {
|
||||
color: var(--code-keyword, #da7dae);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-link {
|
||||
color: var(--code-normal, #696d70);
|
||||
}
|
||||
|
||||
.cm-s-obsidian .cm-templater-command.cm-error {
|
||||
border-bottom: 1px solid #c42412;
|
||||
}
|
||||
|
||||
.CodeMirror-hints {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
overflow: hidden;
|
||||
list-style: none;
|
||||
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
|
||||
-webkit-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
|
||||
border-radius: 3px;
|
||||
border: 1px solid silver;
|
||||
|
||||
background: white;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
|
||||
max-height: 20em;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.CodeMirror-hint {
|
||||
margin: 0;
|
||||
padding: 0 4px;
|
||||
border-radius: 2px;
|
||||
white-space: pre;
|
||||
color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
li.CodeMirror-hint-active {
|
||||
background: #08f;
|
||||
color: white;
|
||||
}
|
||||
3
.obsidian/templates.json
vendored
Normal file
3
.obsidian/templates.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"folder": "11_TEMPLATES"
|
||||
}
|
||||
33
.obsidian/types.json
vendored
Normal file
33
.obsidian/types.json
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"types": {
|
||||
"aliases": "aliases",
|
||||
"cssclasses": "multitext",
|
||||
"tags": "tags",
|
||||
"TQ_explain": "checkbox",
|
||||
"TQ_extra_instructions": "text",
|
||||
"TQ_short_mode": "checkbox",
|
||||
"TQ_show_backlink": "checkbox",
|
||||
"TQ_show_cancelled_date": "checkbox",
|
||||
"TQ_show_created_date": "checkbox",
|
||||
"TQ_show_depends_on": "checkbox",
|
||||
"TQ_show_done_date": "checkbox",
|
||||
"TQ_show_due_date": "checkbox",
|
||||
"TQ_show_edit_button": "checkbox",
|
||||
"TQ_show_id": "checkbox",
|
||||
"TQ_show_on_completion": "checkbox",
|
||||
"TQ_show_postpone_button": "checkbox",
|
||||
"TQ_show_priority": "checkbox",
|
||||
"TQ_show_recurrence_rule": "checkbox",
|
||||
"TQ_show_scheduled_date": "checkbox",
|
||||
"TQ_show_start_date": "checkbox",
|
||||
"TQ_show_tags": "checkbox",
|
||||
"TQ_show_task_count": "checkbox",
|
||||
"TQ_show_tree": "checkbox",
|
||||
"TQ_show_urgency": "checkbox",
|
||||
"introduced": "date",
|
||||
"status": "text",
|
||||
"active": "checkbox",
|
||||
"joined": "multitext",
|
||||
"date": "date"
|
||||
}
|
||||
}
|
||||
289
.obsidian/workspace.json
vendored
Normal file
289
.obsidian/workspace.json
vendored
Normal file
@ -0,0 +1,289 @@
|
||||
{
|
||||
"main": {
|
||||
"id": "59652a61e0abec2e",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "03c8806fdce05e1a",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "9801fda21e2b99ab",
|
||||
"type": "leaf",
|
||||
"pinned": true,
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "00 - Start/Dashboard.md",
|
||||
"mode": "preview",
|
||||
"source": true
|
||||
},
|
||||
"pinned": true,
|
||||
"icon": "lucide-file",
|
||||
"title": "Dashboard"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "9cfdc7e854df0861",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "13 - Meetings/2026/2026-05-07 3T ESC-P test.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "2026-05-07 3T ESC-P test"
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 1
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "8ffe4c5e307b2deb",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "0dac00d3944afd89",
|
||||
"type": "tabs",
|
||||
"dimension": 59.10290237467019,
|
||||
"children": [
|
||||
{
|
||||
"id": "81fc2f07bac1e6ac",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical",
|
||||
"autoReveal": false
|
||||
},
|
||||
"icon": "lucide-folder-closed",
|
||||
"title": "Files"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d1e53398667e98e6",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "initiali",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
},
|
||||
"icon": "lucide-search",
|
||||
"title": "Search"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e5c9456bc850e828",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {},
|
||||
"icon": "lucide-bookmark",
|
||||
"title": "Bookmarks"
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 1
|
||||
},
|
||||
{
|
||||
"id": "d205cfc9affb8542",
|
||||
"type": "tabs",
|
||||
"dimension": 40.89709762532981,
|
||||
"children": [
|
||||
{
|
||||
"id": "568c38b10646ade1",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "13 - Meetings/2026/2026-05-07 3T ESC-P test.md",
|
||||
"followCursor": false,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "Outline of 2026-05-07 3T ESC-P test"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300
|
||||
},
|
||||
"right": {
|
||||
"id": "e914115302b6b1fe",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "78083847d2e27bbf",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "24ef28dcd6d81723",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "00 - Start/Dashboard.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-coming-in",
|
||||
"title": "Backlinks for Dashboard"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "7379d6c62a99e41e",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-going-out",
|
||||
"title": "Outgoing links"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "559d66b4cf281a2a",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-tags",
|
||||
"title": "Tags"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "6c69b0a878e80dbe",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "13 - Meetings/2026/2026-05-07 3T ESC-P test.md",
|
||||
"followCursor": false,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "Outline of 2026-05-07 3T ESC-P test"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b30827f0729f3742",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "calendar",
|
||||
"state": {},
|
||||
"icon": "calendar-with-checkmark",
|
||||
"title": "Calendar"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "8ecb3e1feb63c231",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bases",
|
||||
"state": {
|
||||
"file": "00 - Start/Views/mini-calendar-default.base",
|
||||
"viewName": "Due"
|
||||
},
|
||||
"icon": "tasknotes-simple",
|
||||
"title": "mini-calendar-default"
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 4
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"switcher:Open quick switcher": false,
|
||||
"graph:Open graph view": false,
|
||||
"canvas:Create new canvas": false,
|
||||
"daily-notes:Open today's daily note": false,
|
||||
"templates:Insert template": false,
|
||||
"command-palette:Open command palette": false,
|
||||
"bases:Create new base": false,
|
||||
"omnisearch:Omnisearch": false,
|
||||
"obsidian-kanban:Create new board": false,
|
||||
"templater-obsidian:Templater": false,
|
||||
"tasknotes:Open mini calendar": false,
|
||||
"tasknotes:Open advanced calendar": false,
|
||||
"tasknotes:Open task list": false,
|
||||
"tasknotes:Open agenda": false,
|
||||
"tasknotes:Open kanban board": false,
|
||||
"tasknotes:Open pomodoro": false,
|
||||
"tasknotes:Open pomodoro stats": false,
|
||||
"tasknotes:Create new task": false,
|
||||
"obsidian-git:Open Git source control": false
|
||||
}
|
||||
},
|
||||
"active": "d1e53398667e98e6",
|
||||
"lastOpenFiles": [
|
||||
"00 - Start/Dashboard.md",
|
||||
"Companies/3T.md",
|
||||
"13 - Meetings/2026/2026-05-07 3T ESC-P test.md",
|
||||
"Companies",
|
||||
"Contactpersonen/Frank Hobelman.md",
|
||||
"Frank Hobelman.md",
|
||||
"Contactpersonen",
|
||||
"07 - Projecten/2026/M4939 Nieuwe firmware.md",
|
||||
"13 - Meetings/2026/2026-04-20 Holmatro M5089A Teststatistieken.md",
|
||||
"00 - Start/Views/mini-calendar-default.base",
|
||||
"13 - Meetings/2026/2026-04-15 Hittech testrapporten.md",
|
||||
"13 - Meetings/2026/2026-04-15 API intranet endpoints.md",
|
||||
"13 - Meetings/2026/2026-02-27 Holmatro ESC-P testadapter.md",
|
||||
"00 - Start/Views/calendar-default.base",
|
||||
"00 - Start/Views/agenda-default.base",
|
||||
"00 - Start/Views/kanban-default.base",
|
||||
"00 - Start/Views/relationships.base",
|
||||
"00 - Start/Views/tasks-default.base",
|
||||
"03 - Taken/2026/T4997A Calibration.md",
|
||||
"07 - Projecten/2026/Hittech testrapporten uploaden.md",
|
||||
"00_HOME/Views/kanban-default.base",
|
||||
"00_HOME/Views/calendar-default.base",
|
||||
"07 - Projecten/2026/RMA orders importeren in Test-OK.md",
|
||||
"07 - Projecten/2026/T5089A Testontwerp.md",
|
||||
"07 - Projecten/2026/T4912B Update.md",
|
||||
"07 - Projecten/2026/T4166F wijziging.md",
|
||||
"02 - Dagboek/2026-04-02.md",
|
||||
"08_DOMAINS/Test-OK.md",
|
||||
"07 - Projecten/Untitled.md",
|
||||
"02 - Dagboek/2026-03-27.md",
|
||||
"02 - Dagboek/2026-03-18.md",
|
||||
"02 - Dagboek/2026-03-17.md",
|
||||
"02 - Dagboek/2026-03-16.md",
|
||||
"02 - Dagboek/2026-02-27.md",
|
||||
"12 - Bijlagen/T5089A - 20260317 - Toevoeging 10uF condensators.jpg",
|
||||
"IMG_2005.jpeg",
|
||||
"02_TASKS/2026/Kap maken voor LEDs.md",
|
||||
"06 - Testadapters/T4997A.md",
|
||||
"07_TEMPLATES/Untitled.canvas"
|
||||
]
|
||||
}
|
||||
26
00 - Start/Dashboard.md
Normal file
26
00 - Start/Dashboard.md
Normal file
@ -0,0 +1,26 @@
|
||||
# Next actions
|
||||
```dataview
|
||||
TASK
|
||||
WHERE !completed
|
||||
AND !contains(tags, "#wachten")
|
||||
GROUP BY file.link
|
||||
SORT due ASC
|
||||
```
|
||||
---
|
||||
# Wachten op anderen
|
||||
```dataview
|
||||
TASK
|
||||
WHERE !completed
|
||||
AND contains(tags, "#wachten")
|
||||
GROUP BY file.link
|
||||
SORT due ASC
|
||||
```
|
||||
---
|
||||
# Actieve projecten
|
||||
```dataview
|
||||
TABLE status, klant
|
||||
FROM "07 - Projecten"
|
||||
WHERE type = "project" AND actief = true
|
||||
SORT file.ctime DESC
|
||||
```
|
||||
|
||||
65
00 - Start/Views/agenda-default.base
Normal file
65
00 - Start/Views/agenda-default.base
Normal file
@ -0,0 +1,65 @@
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("task")
|
||||
formulas:
|
||||
priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999))))
|
||||
daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null)
|
||||
daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null)
|
||||
daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor()
|
||||
daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor()
|
||||
isOverdue: due && date(due) < today() && status != "done"
|
||||
isDueToday: due && date(due).date() == today()
|
||||
isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d"
|
||||
isScheduledToday: scheduled && date(scheduled).date() == today()
|
||||
isRecurring: recurrence && !recurrence.isEmpty()
|
||||
hasTimeEstimate: timeEstimate && timeEstimate > 0
|
||||
timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null)
|
||||
efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null)
|
||||
timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
dueMonth: if(due, date(due).format("YYYY-MM"), "No due date")
|
||||
dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date")
|
||||
scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled")
|
||||
scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled")
|
||||
dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later")))))
|
||||
timeEstimateCategory: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)")))
|
||||
ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older")))
|
||||
createdMonth: file.ctime.format("YYYY-MM")
|
||||
modifiedMonth: file.mtime.format("YYYY-MM")
|
||||
priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority"))))
|
||||
projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects"))
|
||||
contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts"))
|
||||
trackingStatus: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate")))
|
||||
nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled))
|
||||
daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled))
|
||||
hasDate: due || scheduled
|
||||
isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today())
|
||||
isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d")
|
||||
nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later")))))
|
||||
nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date")))
|
||||
nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date")))
|
||||
urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext))
|
||||
timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m")
|
||||
dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D")))))))
|
||||
views:
|
||||
- type: tasknotesCalendar
|
||||
name: Agenda
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
options:
|
||||
showPropertyBasedEvents: false
|
||||
calendarView: listWeek
|
||||
startDateProperty: file.ctime
|
||||
listDayCount: 7
|
||||
titleProperty: file.basename
|
||||
74
00 - Start/Views/calendar-default.base
Normal file
74
00 - Start/Views/calendar-default.base
Normal file
@ -0,0 +1,74 @@
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("task")
|
||||
formulas:
|
||||
priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999))))
|
||||
daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null)
|
||||
daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null)
|
||||
daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor()
|
||||
daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor()
|
||||
isOverdue: due && date(due) < today() && status != "done"
|
||||
isDueToday: due && date(due).date() == today()
|
||||
isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d"
|
||||
isScheduledToday: scheduled && date(scheduled).date() == today()
|
||||
isRecurring: recurrence && !recurrence.isEmpty()
|
||||
hasTimeEstimate: timeEstimate && timeEstimate > 0
|
||||
timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null)
|
||||
efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null)
|
||||
timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
dueMonth: if(due, date(due).format("YYYY-MM"), "No due date")
|
||||
dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date")
|
||||
scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled")
|
||||
scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled")
|
||||
dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later")))))
|
||||
timeEstimateCategory: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)")))
|
||||
ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older")))
|
||||
createdMonth: file.ctime.format("YYYY-MM")
|
||||
modifiedMonth: file.mtime.format("YYYY-MM")
|
||||
priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority"))))
|
||||
projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects"))
|
||||
contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts"))
|
||||
trackingStatus: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate")))
|
||||
nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled))
|
||||
daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled))
|
||||
hasDate: due || scheduled
|
||||
isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today())
|
||||
isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d")
|
||||
nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later")))))
|
||||
nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date")))
|
||||
nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date")))
|
||||
urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext))
|
||||
timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m")
|
||||
dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D")))))))
|
||||
views:
|
||||
- type: tasknotesCalendar
|
||||
name: Calendar
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
options:
|
||||
showScheduled: true
|
||||
showDue: true
|
||||
showRecurring: true
|
||||
showTimeEntries: true
|
||||
showTimeblocks: true
|
||||
showPropertyBasedEvents: true
|
||||
calendarView: timeGridWeek
|
||||
customDayCount: 3
|
||||
firstDay: 0
|
||||
slotMinTime: 06:00:00
|
||||
slotMaxTime: 22:00:00
|
||||
slotDuration: 00:30:00
|
||||
calendarView: timeGridWeek
|
||||
showTimeEntries: true
|
||||
65
00 - Start/Views/kanban-default.base
Normal file
65
00 - Start/Views/kanban-default.base
Normal file
@ -0,0 +1,65 @@
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("task")
|
||||
formulas:
|
||||
priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999))))
|
||||
daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null)
|
||||
daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null)
|
||||
daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor()
|
||||
daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor()
|
||||
isOverdue: due && date(due) < today() && status != "done"
|
||||
isDueToday: due && date(due).date() == today()
|
||||
isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d"
|
||||
isScheduledToday: scheduled && date(scheduled).date() == today()
|
||||
isRecurring: recurrence && !recurrence.isEmpty()
|
||||
hasTimeEstimate: timeEstimate && timeEstimate > 0
|
||||
timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null)
|
||||
efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null)
|
||||
timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
dueMonth: if(due, date(due).format("YYYY-MM"), "No due date")
|
||||
dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date")
|
||||
scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled")
|
||||
scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled")
|
||||
dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later")))))
|
||||
timeEstimateCategory: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)")))
|
||||
ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older")))
|
||||
createdMonth: file.ctime.format("YYYY-MM")
|
||||
modifiedMonth: file.mtime.format("YYYY-MM")
|
||||
priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority"))))
|
||||
projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects"))
|
||||
contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts"))
|
||||
trackingStatus: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate")))
|
||||
nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled))
|
||||
daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled))
|
||||
hasDate: due || scheduled
|
||||
isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today())
|
||||
isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d")
|
||||
nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later")))))
|
||||
nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date")))
|
||||
nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date")))
|
||||
urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext))
|
||||
timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m")
|
||||
dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D")))))))
|
||||
views:
|
||||
- type: tasknotesKanban
|
||||
name: Kanban Board
|
||||
groupBy:
|
||||
property: status
|
||||
direction: ASC
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
options:
|
||||
columnWidth: 280
|
||||
hideEmptyColumns: false
|
||||
73
00 - Start/Views/mini-calendar-default.base
Normal file
73
00 - Start/Views/mini-calendar-default.base
Normal file
@ -0,0 +1,73 @@
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("task")
|
||||
formulas:
|
||||
priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999))))
|
||||
daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null)
|
||||
daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null)
|
||||
daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor()
|
||||
daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor()
|
||||
isOverdue: due && date(due) < today() && status != "done"
|
||||
isDueToday: due && date(due).date() == today()
|
||||
isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d"
|
||||
isScheduledToday: scheduled && date(scheduled).date() == today()
|
||||
isRecurring: recurrence && !recurrence.isEmpty()
|
||||
hasTimeEstimate: timeEstimate && timeEstimate > 0
|
||||
timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null)
|
||||
efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null)
|
||||
timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
dueMonth: if(due, date(due).format("YYYY-MM"), "No due date")
|
||||
dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date")
|
||||
scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled")
|
||||
scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled")
|
||||
dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later")))))
|
||||
timeEstimateCategory: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)")))
|
||||
ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older")))
|
||||
createdMonth: file.ctime.format("YYYY-MM")
|
||||
modifiedMonth: file.mtime.format("YYYY-MM")
|
||||
priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority"))))
|
||||
projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects"))
|
||||
contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts"))
|
||||
trackingStatus: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate")))
|
||||
nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled))
|
||||
daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled))
|
||||
hasDate: due || scheduled
|
||||
isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today())
|
||||
isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d")
|
||||
nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later")))))
|
||||
nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date")))
|
||||
nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date")))
|
||||
urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext))
|
||||
timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m")
|
||||
dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D")))))))
|
||||
views:
|
||||
- type: tasknotesMiniCalendar
|
||||
name: Due
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
sort:
|
||||
- property: due
|
||||
direction: ASC
|
||||
dateProperty: due
|
||||
- type: tasknotesMiniCalendar
|
||||
name: Scheduled
|
||||
order: []
|
||||
dateProperty: scheduled
|
||||
- type: tasknotesMiniCalendar
|
||||
name: Created
|
||||
dateProperty: file.ctime
|
||||
- type: tasknotesMiniCalendar
|
||||
name: Modified
|
||||
dateProperty: file.mtime
|
||||
122
00 - Start/Views/relationships.base
Normal file
122
00 - Start/Views/relationships.base
Normal file
@ -0,0 +1,122 @@
|
||||
formulas:
|
||||
priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999))))
|
||||
daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null)
|
||||
daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null)
|
||||
daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor()
|
||||
daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor()
|
||||
isOverdue: due && date(due) < today() && status != "done"
|
||||
isDueToday: due && date(due).date() == today()
|
||||
isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d"
|
||||
isScheduledToday: scheduled && date(scheduled).date() == today()
|
||||
isRecurring: recurrence && !recurrence.isEmpty()
|
||||
hasTimeEstimate: timeEstimate && timeEstimate > 0
|
||||
timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null)
|
||||
efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null)
|
||||
timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
dueMonth: if(due, date(due).format("YYYY-MM"), "No due date")
|
||||
dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date")
|
||||
scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled")
|
||||
scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled")
|
||||
dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later")))))
|
||||
timeEstimateCategory: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)")))
|
||||
ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older")))
|
||||
createdMonth: file.ctime.format("YYYY-MM")
|
||||
modifiedMonth: file.mtime.format("YYYY-MM")
|
||||
priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority"))))
|
||||
projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects"))
|
||||
contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts"))
|
||||
trackingStatus: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate")))
|
||||
nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled))
|
||||
daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled))
|
||||
hasDate: due || scheduled
|
||||
isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today())
|
||||
isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d")
|
||||
nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later")))))
|
||||
nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date")))
|
||||
nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date")))
|
||||
urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext))
|
||||
timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m")
|
||||
dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D")))))))
|
||||
views:
|
||||
- type: tasknotesKanban
|
||||
name: Subtasks
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("task")
|
||||
- note.projects.contains(this.file.asLink())
|
||||
groupBy:
|
||||
property: status
|
||||
direction: ASC
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
- type: tasknotesTaskList
|
||||
name: Projects
|
||||
filters:
|
||||
and:
|
||||
- list(this.projects).contains(file.asLink())
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
- type: tasknotesTaskList
|
||||
name: Blocked By
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("task")
|
||||
- list(this.note.blockedBy).map(value.uid).contains(file.asLink())
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
- type: tasknotesKanban
|
||||
name: Blocking
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("task")
|
||||
- list(note.blockedBy).map(value.uid).contains(this.file.asLink())
|
||||
groupBy:
|
||||
property: status
|
||||
direction: ASC
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
213
00 - Start/Views/tasks-default.base
Normal file
213
00 - Start/Views/tasks-default.base
Normal file
@ -0,0 +1,213 @@
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("task")
|
||||
formulas:
|
||||
priorityWeight: if(priority=="none",0,if(priority=="low",1,if(priority=="normal",2,if(priority=="high",3,999))))
|
||||
daysUntilDue: if(due, ((number(date(due)) - number(today())) / 86400000).floor(), null)
|
||||
daysUntilScheduled: if(scheduled, ((number(date(scheduled)) - number(today())) / 86400000).floor(), null)
|
||||
daysSinceCreated: ((number(now()) - number(file.ctime)) / 86400000).floor()
|
||||
daysSinceModified: ((number(now()) - number(file.mtime)) / 86400000).floor()
|
||||
isOverdue: due && date(due) < today() && status != "done"
|
||||
isDueToday: due && date(due).date() == today()
|
||||
isDueThisWeek: due && date(due) >= today() && date(due) <= today() + "7d"
|
||||
isScheduledToday: scheduled && date(scheduled).date() == today()
|
||||
isRecurring: recurrence && !recurrence.isEmpty()
|
||||
hasTimeEstimate: timeEstimate && timeEstimate > 0
|
||||
timeRemaining: if(timeEstimate && timeEstimate > 0, timeEstimate - if(timeEntries, list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0), 0), null)
|
||||
efficiencyRatio: if(timeEstimate && timeEstimate > 0 && timeEntries, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / timeEstimate * 100).round(), null)
|
||||
timeTrackedThisWeek: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime) >= today() - "7d").map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
timeTrackedToday: if(timeEntries, list(timeEntries).filter(value.endTime && date(value.startTime).date() == today()).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round(), 0)
|
||||
dueMonth: if(due, date(due).format("YYYY-MM"), "No due date")
|
||||
dueWeek: if(due, date(due).format("YYYY-[W]WW"), "No due date")
|
||||
scheduledMonth: if(scheduled, date(scheduled).format("YYYY-MM"), "Not scheduled")
|
||||
scheduledWeek: if(scheduled, date(scheduled).format("YYYY-[W]WW"), "Not scheduled")
|
||||
dueDateCategory: if(!due, "No due date", if(date(due) < today(), "Overdue", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due) <= today() + "7d", "This week", "Later")))))
|
||||
timeEstimateCategory: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(timeEstimate < 30, "Quick (<30m)", if(timeEstimate <= 120, "Medium (30m-2h)", "Long (>2h)")))
|
||||
ageCategory: if(((number(now()) - number(file.ctime)) / 86400000) < 1, "Today", if(((number(now()) - number(file.ctime)) / 86400000) < 7, "This week", if(((number(now()) - number(file.ctime)) / 86400000) < 30, "This month", "Older")))
|
||||
createdMonth: file.ctime.format("YYYY-MM")
|
||||
modifiedMonth: file.mtime.format("YYYY-MM")
|
||||
priorityCategory: if(priority=="none","None",if(priority=="low","Low",if(priority=="normal","Normal",if(priority=="high","High","No priority"))))
|
||||
projectCount: if(!projects || list(projects).length == 0, "No projects", if(list(projects).length == 1, "Single project", "Multiple projects"))
|
||||
contextCount: if(!contexts || list(contexts).length == 0, "No contexts", if(list(contexts).length == 1, "Single context", "Multiple contexts"))
|
||||
trackingStatus: if(!timeEstimate || timeEstimate == 0 || timeEstimate == null, "No estimate", if(!timeEntries || list(timeEntries).length == 0, "Not started", if(formula.efficiencyRatio < 100, "Under estimate", "Over estimate")))
|
||||
nextDate: if(due && scheduled, if(date(due) < date(scheduled), due, scheduled), if(due, due, scheduled))
|
||||
daysUntilNext: if(due && scheduled, min(formula.daysUntilDue, formula.daysUntilScheduled), if(due, formula.daysUntilDue, formula.daysUntilScheduled))
|
||||
hasDate: due || scheduled
|
||||
isToday: (due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today())
|
||||
isThisWeek: (due && date(due) >= today() && date(due) <= today() + "7d") || (scheduled && date(scheduled) >= today() && date(scheduled) <= today() + "7d")
|
||||
nextDateCategory: if(!due && !scheduled, "No date", if((due && date(due) < today()) || (scheduled && date(scheduled) < today()), "Overdue/Past", if((due && date(due).date() == today()) || (scheduled && date(scheduled).date() == today()), "Today", if((due && date(due).date() == today() + "1d") || (scheduled && date(scheduled).date() == today() + "1d"), "Tomorrow", if((due && date(due) <= today() + "7d") || (scheduled && date(scheduled) <= today() + "7d"), "This week", "Later")))))
|
||||
nextDateMonth: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-MM"), date(scheduled).format("YYYY-MM")), if(due, date(due).format("YYYY-MM"), if(scheduled, date(scheduled).format("YYYY-MM"), "No date")))
|
||||
nextDateWeek: if(due && scheduled, if(date(due) < date(scheduled), date(due).format("YYYY-[W]WW"), date(scheduled).format("YYYY-[W]WW")), if(due, date(due).format("YYYY-[W]WW"), if(scheduled, date(scheduled).format("YYYY-[W]WW"), "No date")))
|
||||
urgencyScore: if(!due && !scheduled, formula.priorityWeight, formula.priorityWeight + max(0, 10 - formula.daysUntilNext))
|
||||
timeTrackedFormatted: if(timeEntries, if(list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) >= 60, (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) / 60).floor() + "h " + (list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0) % 60).round() + "m", list(timeEntries).filter(value.endTime).map((number(date(value.endTime)) - number(date(value.startTime))) / 60000).reduce(acc + value, 0).round() + "m"), "0m")
|
||||
dueDateDisplay: if(!due, "", if(date(due).date() == today(), "Today", if(date(due).date() == today() + "1d", "Tomorrow", if(date(due).date() == today() - "1d", "Yesterday", if(date(due) < today(), formula.daysUntilDue * -1 + "d ago", if(date(due) <= today() + "7d", date(due).format("ddd"), date(due).format("MMM D")))))))
|
||||
views:
|
||||
- type: tasknotesTaskList
|
||||
name: All Tasks
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
sort:
|
||||
- property: due
|
||||
direction: ASC
|
||||
- type: tasknotesTaskList
|
||||
name: Not Blocked
|
||||
filters:
|
||||
and:
|
||||
- or:
|
||||
- and:
|
||||
- recurrence.isEmpty()
|
||||
- status != "done"
|
||||
- and:
|
||||
- recurrence
|
||||
- '!complete_instances.contains(today().format("yyyy-MM-dd"))'
|
||||
- or:
|
||||
- blockedBy.isEmpty()
|
||||
- list(blockedBy).filter(file(value.uid).properties.status != "done").isEmpty()
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
sort:
|
||||
- property: formula.urgencyScore
|
||||
direction: DESC
|
||||
- type: tasknotesTaskList
|
||||
name: Today
|
||||
filters:
|
||||
and:
|
||||
- or:
|
||||
- and:
|
||||
- recurrence.isEmpty()
|
||||
- status != "done"
|
||||
- and:
|
||||
- recurrence
|
||||
- '!complete_instances.contains(today().format("yyyy-MM-dd"))'
|
||||
- or:
|
||||
- date(due) == today()
|
||||
- date(scheduled) == today()
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
sort:
|
||||
- property: formula.urgencyScore
|
||||
direction: DESC
|
||||
- type: tasknotesTaskList
|
||||
name: Overdue
|
||||
filters:
|
||||
and:
|
||||
- or:
|
||||
- and:
|
||||
- recurrence.isEmpty()
|
||||
- status != "done"
|
||||
- and:
|
||||
- recurrence
|
||||
- '!complete_instances.contains(today().format("yyyy-MM-dd"))'
|
||||
- date(due) < today()
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
sort:
|
||||
- property: formula.urgencyScore
|
||||
direction: DESC
|
||||
- type: tasknotesTaskList
|
||||
name: This Week
|
||||
filters:
|
||||
and:
|
||||
- or:
|
||||
- and:
|
||||
- recurrence.isEmpty()
|
||||
- status != "done"
|
||||
- and:
|
||||
- recurrence
|
||||
- '!complete_instances.contains(today().format("yyyy-MM-dd"))'
|
||||
- or:
|
||||
- and:
|
||||
- date(due) >= today()
|
||||
- date(due) <= today() + "7 days"
|
||||
- and:
|
||||
- date(scheduled) >= today()
|
||||
- date(scheduled) <= today() + "7 days"
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
sort:
|
||||
- property: formula.urgencyScore
|
||||
direction: DESC
|
||||
- type: tasknotesTaskList
|
||||
name: Unscheduled
|
||||
filters:
|
||||
and:
|
||||
- or:
|
||||
- and:
|
||||
- recurrence.isEmpty()
|
||||
- status != "done"
|
||||
- and:
|
||||
- recurrence
|
||||
- '!complete_instances.contains(today().format("yyyy-MM-dd"))'
|
||||
- date(due).isEmpty()
|
||||
- date(scheduled).isEmpty()
|
||||
order:
|
||||
- status
|
||||
- priority
|
||||
- due
|
||||
- scheduled
|
||||
- projects
|
||||
- contexts
|
||||
- file.tags
|
||||
- blockedBy
|
||||
- file.name
|
||||
- recurrence
|
||||
- complete_instances
|
||||
- file.tasks
|
||||
sort:
|
||||
- property: status
|
||||
direction: ASC
|
||||
3
02 - Dagboek/2026-02-27.md
Normal file
3
02 - Dagboek/2026-02-27.md
Normal file
@ -0,0 +1,3 @@
|
||||
## M5077A
|
||||
Programmer binnen gekregen, werkt via een klem op de chip.
|
||||
- [x] M5077A programmer setup klaarzetten, documenteren en testen 📅 2026-02-27 ⏫
|
||||
6
02 - Dagboek/2026-03-16.md
Normal file
6
02 - Dagboek/2026-03-16.md
Normal file
@ -0,0 +1,6 @@
|
||||
T5089A:
|
||||
- LED script eindelijk goed werkend gekregen, datasheet van de sensor niet goed gelezen, bij het lezen van de laatste byte moet er een NACK gestuurd worden. Nu werkt het zoals verwacht.
|
||||
- Condensators van 10uF over beide batterij uitgangen geplaatst, aantekening op schematic geplaatst.![[T5089A - 20260317 - Toevoeging 10uF condensators.jpg]]
|
||||
- OCP mode op externe voeding werkend
|
||||
M4912:
|
||||
- Testrapporten geüpload van gevraagde borden vanuit Hittech
|
||||
5
02 - Dagboek/2026-03-17.md
Normal file
5
02 - Dagboek/2026-03-17.md
Normal file
@ -0,0 +1,5 @@
|
||||
- M4511C: Certificaten endpoint getest en bugs met Martijn eruit gehaald, reeds bestaande certificaten waren niet goed geïmporteerd
|
||||
- M4511C: Testscript herschreven met gebruik van nieuwe functielibrary
|
||||
- M4912B: Met Rob implementatie voor Test-OK intranet API afgestemd
|
||||
- M3582/3583: Melding van Thom bekeken en uit lopen zoeken waarom het importeren niet goed gaat, geen directe oorzaak gevonden, Thom gemeld dat hij ICT en mij bij volgende order moet seinen zodat we kunnen meekijken
|
||||
- [x] Goedkoop kleuren filament voor open dag (Lay3rs)
|
||||
2
02 - Dagboek/2026-03-18.md
Normal file
2
02 - Dagboek/2026-03-18.md
Normal file
@ -0,0 +1,2 @@
|
||||
- Mail gestuurd naar ICT met nieuwe software architectuur opzet voor teststations
|
||||
- M4511C test herschreven met gebruik van certificaat intranet API
|
||||
0
02 - Dagboek/2026-03-27.md
Normal file
0
02 - Dagboek/2026-03-27.md
Normal file
4
02 - Dagboek/2026-04-02.md
Normal file
4
02 - Dagboek/2026-04-02.md
Normal file
@ -0,0 +1,4 @@
|
||||
- T4166F: Script geüpdatet zodat het correct het serienummer programmeert en controleert of hij correct het board type herkent, daarvoor moet eerst de testfirmware geprogrammeerd worden, anders staat de debug UART niet aan. VM daarnaast geüpdatet met de nieuwste TestTrack en getest met de huidige setup.
|
||||
- TestTrack bug: Kan geen RMA orders gebruiken, hij weigert het serienummer; mail naar Test-OK gestuurd
|
||||
- T5089A: Mail gestuurd over de 6 borden die net niet binnen de limieten vallen, hier willen we graag akkoord op. Daarnaast statistieken van de batch meegestuurd, ik wil deze bespreken om te kijken of we limieten moeten wijzigen. Titian droeg aan dat het verstandig is om te wachten tot de 2e batch zodat er meer componentvariatie bij zit, echter is dat volgens Tamara niet zo, aangezien de componenten voor 1000 stuks in een keer zijn besteld. Mogelijk toch wel zinvol omdat er ook andere variabelen zijn zoals een pick and place machine die net iets anders is ingesteld, of andere variabelen in het proces.
|
||||
- Testrapport tool: Statistieken toegevoegd
|
||||
14
03 - Taken/2026/T4997A Calibration.md
Normal file
14
03 - Taken/2026/T4997A Calibration.md
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
title: T4997A Calibration
|
||||
status: in-progress
|
||||
priority: normal
|
||||
timeEstimate: 300
|
||||
dateCreated: 2026-02-24T11:12:21.149+01:00
|
||||
dateModified: 2026-04-03T11:16:43.305+02:00
|
||||
tags:
|
||||
- task
|
||||
due: 2026-04-06
|
||||
scheduled: 2026-04-04
|
||||
---
|
||||
|
||||
Add calibration for the Bluebird EVSE test setup
|
||||
65
06 - Testadapters/T4893B.md
Normal file
65
06 - Testadapters/T4893B.md
Normal file
@ -0,0 +1,65 @@
|
||||
---
|
||||
type: Test-OK
|
||||
fixture_id: T4893B
|
||||
fixture_rev: B
|
||||
stage: bed_of_nails
|
||||
customer:
|
||||
- - <Customer>
|
||||
product_series:
|
||||
- M4893
|
||||
supported_products:
|
||||
- M4893A
|
||||
active: false
|
||||
introduced: <YYYY-MM-DD>
|
||||
design_files: <altium/mech path>
|
||||
---
|
||||
# What this fixture is (1–2 lines)
|
||||
Bed-of-nails rig used to test M1234 series; Rev A test definition.
|
||||
|
||||
# Coverage
|
||||
### Validated (allowed to run)
|
||||
- M1234A: ✅ <conditions/notes>
|
||||
- M1234B: ✅ <conditions/notes>
|
||||
- M1234C: ✅ <conditions/notes>
|
||||
|
||||
### Not validated (do NOT run without sign-off)
|
||||
- M1234D: ⚠️ why / what differs / what needed to validate
|
||||
|
||||
# Operator procedure (operator-proof)
|
||||
1) Placement/alignment:
|
||||
2) Clamp:
|
||||
3) Start test:
|
||||
4) Pass/fail handling:
|
||||
5) Common operator mistakes (max 3):
|
||||
|
||||
# Interfaces (high level)
|
||||
- Power rails + limits:
|
||||
- Programming/debug access:
|
||||
- Special nets / straps:
|
||||
|
||||
# Maintenance
|
||||
- Wear items / spares (probes, cables):
|
||||
- Periodic checks (interval + what “good” looks like):
|
||||
- Cleaning / handling notes:
|
||||
|
||||
# Known issues (repeat offenders only)
|
||||
- Symptom → likely cause → fix → evidence (worklog link)
|
||||
|
||||
# Change policy (prevents drift)
|
||||
- Small fix (≤1 day, no behavior/coverage change): TaskNote linked here
|
||||
- Coverage/behavior change OR hardware change: new project `PRJ - T1234A - Rev<next>`
|
||||
- After change: update `supported_products` + add evidence link
|
||||
|
||||
# Active work (TaskNotes)
|
||||
- Use TaskNotes/Bases view filtered by:
|
||||
- `fixture = [[T1234A]]` AND `status != done` AND `status != cancelled`
|
||||
|
||||
# Links
|
||||
- Customer hub: [[<Customer>]]
|
||||
- Product series: [[M1234]]
|
||||
- TestTrack suite: `<path>`
|
||||
- Design files: `<path>`
|
||||
- Photos/attachments: `12_ATTACHMENTS/<...>`
|
||||
- Projects:
|
||||
- [[PRJ - T1234A - Build]]
|
||||
- [[PRJ - T1234A - RevB]] (when it happens)
|
||||
69
06 - Testadapters/T4997A.md
Normal file
69
06 - Testadapters/T4997A.md
Normal file
@ -0,0 +1,69 @@
|
||||
---
|
||||
type: Test-OK
|
||||
fixture_id: T1234A
|
||||
fixture_rev: A
|
||||
stage: bed_of_nails
|
||||
customer:
|
||||
- - <Customer>
|
||||
product_series:
|
||||
- - M1234
|
||||
supported_products:
|
||||
- M1234A
|
||||
- M1234B
|
||||
- M1234C
|
||||
active: false
|
||||
introduced: <YYYY-MM-DD>
|
||||
design_files: <altium/mech path>
|
||||
---
|
||||
# T1234A — BoN fixture for M1234 (Rev A)
|
||||
|
||||
## What this fixture is (1–2 lines)
|
||||
Bed-of-nails rig used to test M1234 series; Rev A test definition.
|
||||
|
||||
## Coverage
|
||||
### Validated (allowed to run)
|
||||
- M1234A: ✅ <conditions/notes>
|
||||
- M1234B: ✅ <conditions/notes>
|
||||
- M1234C: ✅ <conditions/notes>
|
||||
|
||||
### Not validated (do NOT run without sign-off)
|
||||
- M1234D: ⚠️ why / what differs / what needed to validate
|
||||
|
||||
## Operator procedure (operator-proof)
|
||||
1) Placement/alignment:
|
||||
2) Clamp:
|
||||
3) Start test:
|
||||
4) Pass/fail handling:
|
||||
5) Common operator mistakes (max 3):
|
||||
|
||||
## Interfaces (high level)
|
||||
- Power rails + limits:
|
||||
- Programming/debug access:
|
||||
- Special nets / straps:
|
||||
|
||||
## Maintenance
|
||||
- Wear items / spares (probes, cables):
|
||||
- Periodic checks (interval + what “good” looks like):
|
||||
- Cleaning / handling notes:
|
||||
|
||||
## Known issues (repeat offenders only)
|
||||
- Symptom → likely cause → fix → evidence (worklog link)
|
||||
|
||||
## Change policy (prevents drift)
|
||||
- Small fix (≤1 day, no behavior/coverage change): TaskNote linked here
|
||||
- Coverage/behavior change OR hardware change: new project `PRJ - T1234A - Rev<next>`
|
||||
- After change: update `supported_products` + add evidence link
|
||||
|
||||
## Active work (TaskNotes)
|
||||
- Use TaskNotes/Bases view filtered by:
|
||||
- `fixture = [[T1234A]]` AND `status != done` AND `status != cancelled`
|
||||
|
||||
## Links
|
||||
- Customer hub: [[<Customer>]]
|
||||
- Product series: [[M1234]]
|
||||
- TestTrack suite: `<path>`
|
||||
- Design files: `<path>`
|
||||
- Photos/attachments: `12_ATTACHMENTS/<...>`
|
||||
- Projects:
|
||||
- [[PRJ - T1234A - Build]]
|
||||
- [[PRJ - T1234A - RevB]] (when it happens)
|
||||
16
06 - Testadapters/T5089A.md
Normal file
16
06 - Testadapters/T5089A.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
type: Test-OK
|
||||
fixture_id: T5089A
|
||||
fixture_rev: A
|
||||
customer:
|
||||
- Holmatro
|
||||
product_series:
|
||||
- M5089A
|
||||
supported_products:
|
||||
- M5089A
|
||||
active: false
|
||||
introduced: <YYYY-MM-DD>
|
||||
design_files: <altium/mech path>
|
||||
---
|
||||
# T5089A — Holmatro DDCP
|
||||
|
||||
18
07 - Projecten/2026/Hittech testrapporten uploaden.md
Normal file
18
07 - Projecten/2026/Hittech testrapporten uploaden.md
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
actief: true
|
||||
status: lopend
|
||||
testadapter:
|
||||
- T4912B
|
||||
- T5021A
|
||||
- T5022A
|
||||
- T5037A
|
||||
type: project
|
||||
productieorder:
|
||||
klant: Hittech
|
||||
---
|
||||
# Beschrijving
|
||||
De resultaten van de Hittech borden moeten geüpload worden naar de FTP server van Hittech. De resultaten van de gehele order moet in een excel file komen.
|
||||
# Taken
|
||||
- [ ] Tool maken voor opstellen Hittech testrapport #wachten
|
||||
# Log
|
||||
- 2026-04-02: Mail gestuurd naar Jan-Willem met de vraag of ze het testrapport nu in een excel of CSV willen, en per serienummer of per batch. Daarnaast gevraagd voor de reporting requirements voor de photosensor borden.
|
||||
25
07 - Projecten/2026/M4939 Nieuwe firmware.md
Normal file
25
07 - Projecten/2026/M4939 Nieuwe firmware.md
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
actief: true
|
||||
status: lopend
|
||||
testadapter:
|
||||
- T4939C
|
||||
type: project
|
||||
productieorder:
|
||||
klant: Holmatro
|
||||
---
|
||||
# Omschrijving
|
||||
Holmatro heeft nieuwe firmware voor de WLC50. Stefan wil Dinsdagmiddag 7 April langskomen voor:
|
||||
- Reparaties R4964 (BPR25-1040) 22 stuks
|
||||
- Testrun nieuwe WLC50
|
||||
- Eindtest voor testen bluetooth verbinden updaten zodat deze de juiste naam weergeeft
|
||||
## Reparatie
|
||||
Voor het herprogrammeren van de afgebouwde WLC50’s betekent dit dat de volgende stappen moeten worden ondernomen :
|
||||
- WLC50 moet worden opengeschroefd (alleen onderkap eraf).
|
||||
- CPU moet worden geherprogrammeerd met validatie firmware die geen communicatie heeft met het modem. Dit via JTAG connector 1 (of bluetooth indien mogelijk).
|
||||
- Modem firmware moet worden geherprogrammeerd via JTAG connector 2 met V0.1.0
|
||||
- Extern flash geheugen moet worden geleegd via JTAG connector 1.
|
||||
- CPU moet worden geherprogrammeerd met V7.4.5 via JTAG connector 1 (of bluetooth indien mogelijk).
|
||||
- CPU moet oude keyvault terug krijgen via JTAG connector 1 (tenzij bluetooth herprogrammeren mogelijk is).
|
||||
# Taken
|
||||
- [x] 📅 2026-04-03 Huidige testsetup T4939C controleren
|
||||
- [x] Programmeersetup met pogo ping voorbereiden 📅 2026-04-07
|
||||
15
07 - Projecten/2026/RMA orders importeren in Test-OK.md
Normal file
15
07 - Projecten/2026/RMA orders importeren in Test-OK.md
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
actief: true
|
||||
status: lopend
|
||||
testadapter:
|
||||
type: project
|
||||
productieorder:
|
||||
---
|
||||
# Omschrijving
|
||||
Bij niet alle RMA orders (R-nummers) werkt het importeren van de Test-OK serienummers, dit is wel gewenst aangezien operators nu handmatig de oude order moeten openzetten.
|
||||
Daarnaast kan dan bij de resultaten duidelijk verschil gemaakt worden tussen de resultaten tijdens de productie en de testresultaten bij de RMA, en de oude productieorder kan geblokkeerd worden voor verdere schrijfacties.
|
||||
|
||||
Voorbeeld BPR:
|
||||
- BPR26-0191
|
||||
# Taken
|
||||
- [ ] API toevoegen #wachten
|
||||
11
07 - Projecten/2026/T4166F wijziging.md
Normal file
11
07 - Projecten/2026/T4166F wijziging.md
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
actief: false
|
||||
testadapter:
|
||||
- T4166F
|
||||
type: project
|
||||
productieorder:
|
||||
---
|
||||
# Omschrijving
|
||||
Schleiffenbauer wil minder testen uitvoeren, echter is dit de vorige keer niet goed gegaan omdat er alleen productiefirmware is geprogrammeerd. Test moet nu gewijzigd worden zodat ook het serienummer geprogrammeerd wordt
|
||||
## Taken
|
||||
- [x] 📅 2026-04-07 T4166F Update testscript controleren
|
||||
18
07 - Projecten/2026/T4912B Update.md
Normal file
18
07 - Projecten/2026/T4912B Update.md
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
actief: true
|
||||
status: lopend
|
||||
testadapter:
|
||||
- T4912B
|
||||
type: project
|
||||
klant: Hittech
|
||||
---
|
||||
|
||||
# Beschrijving
|
||||
De test slaat momenteel niet de resultaten op in de test-ok database en schrijft geen status weg naar FLX, daarnaast moet ook automatisch een rapport geüpload worden.
|
||||
De interface moet ook intuïtiever en beter gemaakt worden.
|
||||
De weerstandsmetingen lijken daarnaast niet altijd even betrouwbaar, dit moet anders aangepakt worden.
|
||||
# Taken
|
||||
- [ ] Testresultaten via Test-OK API opslaan #wachten
|
||||
- [ ] Testtool herschrijven met OpenHTF en Web UI
|
||||
- [ ] Weerstandsmeting herzien
|
||||
# Log
|
||||
22
07 - Projecten/2026/T5089A Testontwerp.md
Normal file
22
07 - Projecten/2026/T5089A Testontwerp.md
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
actief: true
|
||||
status: lopend
|
||||
testadapter:
|
||||
- T5089A
|
||||
type: project
|
||||
productieorder: BPR26-0064
|
||||
klant: Holmatro
|
||||
---
|
||||
|
||||
## Taken
|
||||
- [x] Kap voor LEDs maken #wachten
|
||||
- [x] Testscript voor LEDs maken ✅ 2026-03-16
|
||||
- [x] OCP externe voeding testen ✅ 2026-03-16
|
||||
- [x] Condensator op battery outputs plaatsen ✅ 2026-03-16
|
||||
- [x] Kap testadapter plaatsen met label #wachten
|
||||
- [x] Bevestiging printen voor HDQ adapters en programmer ⏳ 2026-04-07 #wachten
|
||||
- [x] Testen met correcte en incorrecte firmware
|
||||
- [ ] Documentatie maken
|
||||
- [x] Foto wijziging 10uF condensators
|
||||
- [x] Python code naar Holmatro sturen
|
||||
- [x] Nieuwe programmer plaatsen
|
||||
18
08_DOMAINS/Test-OK.md
Normal file
18
08_DOMAINS/Test-OK.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Revisiebeheer
|
||||
- Test scripts: eigen releases (hash/gitlab releases?)
|
||||
- Product: per M-nummer (+rev) wordt verwezen naar een test script
|
||||
- BPR/SN: Moet dan eigenlijk opslaan welke test versie gebruikt is
|
||||
# Bugs
|
||||
- CONFIG_LIMITS: Ik wil graag een limiet in meerdere scripts gebruiken, echter gaat dit fout wanneer niet alle scripts opnieuw wordt gedraaid vanwege gedeeltelijk hertesten. Een betere oplossing zou zijn het defineren van limieten in een soort TSpreamble.
|
||||
|
||||
# Procedure
|
||||
|
||||
Reporting:
|
||||
- Vooral duidelijk afspreken hoe data gerapporteerd moet worden, met technische details en voorbeelden.
|
||||
- Duidelijk afspreken welke data opgeslagen moet worden
|
||||
|
||||
# Testing
|
||||
DB_TESTOK_HOST=192.168.42.167
|
||||
DB_TESTOK_DATABASE=testok
|
||||
DB_TESTOK_USERNAME=root
|
||||
DB_TESTOK_PASSWORD="|m-Ys2thoICiddWQ@3#M"
|
||||
69
11_TEMPLATES/tmpl_fixture.md
Normal file
69
11_TEMPLATES/tmpl_fixture.md
Normal file
@ -0,0 +1,69 @@
|
||||
---
|
||||
type: Test-OK
|
||||
fixture_id: T1234A
|
||||
fixture_rev: A
|
||||
stage: bed_of_nails
|
||||
customer:
|
||||
- - <Customer>
|
||||
product_series:
|
||||
- - M1234
|
||||
supported_products:
|
||||
- M1234A
|
||||
- M1234B
|
||||
- M1234C
|
||||
active: false
|
||||
introduced: <YYYY-MM-DD>
|
||||
design_files: <altium/mech path>
|
||||
---
|
||||
# T1234A — BoN fixture for M1234 (Rev A)
|
||||
|
||||
## What this fixture is (1–2 lines)
|
||||
Bed-of-nails rig used to test M1234 series; Rev A test definition.
|
||||
|
||||
## Coverage
|
||||
### Validated (allowed to run)
|
||||
- M1234A: ✅ <conditions/notes>
|
||||
- M1234B: ✅ <conditions/notes>
|
||||
- M1234C: ✅ <conditions/notes>
|
||||
|
||||
### Not validated (do NOT run without sign-off)
|
||||
- M1234D: ⚠️ why / what differs / what needed to validate
|
||||
|
||||
## Operator procedure (operator-proof)
|
||||
1) Placement/alignment:
|
||||
2) Clamp:
|
||||
3) Start test:
|
||||
4) Pass/fail handling:
|
||||
5) Common operator mistakes (max 3):
|
||||
|
||||
## Interfaces (high level)
|
||||
- Power rails + limits:
|
||||
- Programming/debug access:
|
||||
- Special nets / straps:
|
||||
|
||||
## Maintenance
|
||||
- Wear items / spares (probes, cables):
|
||||
- Periodic checks (interval + what “good” looks like):
|
||||
- Cleaning / handling notes:
|
||||
|
||||
## Known issues (repeat offenders only)
|
||||
- Symptom → likely cause → fix → evidence (worklog link)
|
||||
|
||||
## Change policy (prevents drift)
|
||||
- Small fix (≤1 day, no behavior/coverage change): TaskNote linked here
|
||||
- Coverage/behavior change OR hardware change: new project `PRJ - T1234A - Rev<next>`
|
||||
- After change: update `supported_products` + add evidence link
|
||||
|
||||
## Active work (TaskNotes)
|
||||
- Use TaskNotes/Bases view filtered by:
|
||||
- `fixture = [[T1234A]]` AND `status != done` AND `status != cancelled`
|
||||
|
||||
## Links
|
||||
- Customer hub: [[<Customer>]]
|
||||
- Product series: [[M1234]]
|
||||
- TestTrack suite: `<path>`
|
||||
- Design files: `<path>`
|
||||
- Photos/attachments: `12_ATTACHMENTS/<...>`
|
||||
- Projects:
|
||||
- [[PRJ - T1234A - Build]]
|
||||
- [[PRJ - T1234A - RevB]] (when it happens)
|
||||
47
11_TEMPLATES/tmpl_product_series.md
Normal file
47
11_TEMPLATES/tmpl_product_series.md
Normal file
@ -0,0 +1,47 @@
|
||||
---
|
||||
type: product
|
||||
product_id: M1234
|
||||
customer:
|
||||
- - <Customer>
|
||||
active: false
|
||||
variants:
|
||||
- M1234A
|
||||
- M1234B
|
||||
- M1234C
|
||||
primary_fixture:
|
||||
- - T1234A
|
||||
---
|
||||
|
||||
# M1234 — Product series (Customer: <Customer>)
|
||||
|
||||
## Definition of “good” (pass intent)
|
||||
- <1–5 bullets only; what you actually guarantee>
|
||||
|
||||
## Variant differences (only what impacts test)
|
||||
- M1234B: <difference that matters to test>
|
||||
- M1234C: <difference that matters to test>
|
||||
|
||||
## Test ecosystem
|
||||
### Fixtures
|
||||
- BoN: [[T1234A]]
|
||||
- (add more fixtures/stages as needed)
|
||||
|
||||
### Tooling / suites
|
||||
- TestTrack suite: `<path>`
|
||||
- Repo(s): `<path>`
|
||||
|
||||
## Top failure modes (max 5)
|
||||
- Failure → likely cause → first check → evidence/worklog link
|
||||
|
||||
## Change control
|
||||
- Small limit/teststep change: TaskNote + link MR/commit
|
||||
- New variant support or major coverage change: new project `07_PROJECTS/PRJ - M1234 - <Change>.md`
|
||||
|
||||
## Active work (TaskNotes)
|
||||
- Use TaskNotes/Bases view filtered by:
|
||||
- `product = [[M1234]]` AND `status != done` AND `status != cancelled`
|
||||
|
||||
## Links
|
||||
- Customer hub: [[<Customer>]]
|
||||
- Worklog (key incidents): [[...]]
|
||||
- Reference: [[08_REFERENCE/Products/<...>]]
|
||||
18
11_TEMPLATES/tmpl_project.md
Normal file
18
11_TEMPLATES/tmpl_project.md
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
type: project
|
||||
status: active
|
||||
customer: ""
|
||||
area: ""
|
||||
---
|
||||
|
||||
## Goal
|
||||
|
||||
## Definition of Done
|
||||
|
||||
## Next actions
|
||||
|
||||
## Open questions
|
||||
|
||||
## Decisions
|
||||
|
||||
## Links / Artifacts
|
||||
1
11_TEMPLATES/tmpl_task_basic.md
Normal file
1
11_TEMPLATES/tmpl_task_basic.md
Normal file
@ -0,0 +1 @@
|
||||
- [ ]<verb> <thing> (<proof/result>) @<place/tool> #context/<debug|fixture|testtrack|ci|admin> 📅 <% tp.date.now("YYYY-MM-DD") %> 🔗 [[<project>]]
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 980 KiB |
36
13 - Meetings/2026/2026-02-27 Holmatro ESC-P testadapter.md
Normal file
36
13 - Meetings/2026/2026-02-27 Holmatro ESC-P testadapter.md
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
# Voorbereiding
|
||||
|
||||
Optimalisatie teststappen:
|
||||
- TP04: Niet nodig. Wanneer het programmeren gelukt is binnen een testsessie zal Test-OK deze zelf overslaan, daarnaast wil je de operator de mogelijk geven het bord opnieuw te programmeren, dit kan niet bij de huidige test.
|
||||
- TP03: Niet nodig, operator selecteert MOLD/PCA voor het starten van de test. Test faalt indien dit niet klopt
|
||||
- Sommige testen hebben een marge van 1%, dit lijkt mij overdreven strak; met klant overleggen
|
||||
- Voeding wordt op 4 ingangsspanningen gecontroleerd, kan mogelijk een minder: min, max, nominaal; met klant overleggen.
|
||||
|
||||
Vragen/opmerkingen:
|
||||
- Is de SN van de PCA hetzelfde als bij de MOLD?
|
||||
- Hardware revision wordt niet gecontroleerd, deze wordt ingesteld door middel van weerstanden op de PCB
|
||||
- HDQ bus wordt niet goed gecontroleerd
|
||||
- (Missende controle op knop motoraansturing)
|
||||
|
||||
Van 3T nodig:
|
||||
- STEP 3D, zowel PCA als MOLD
|
||||
- Elektrisch schema laatste versie
|
||||
- Firmware: bootloader (JTAG), test programma (UART), hoofdprogramma (UART)
|
||||
- Elektrisch schema testadapter
|
||||
|
||||
# Aantekeningen
|
||||
|
||||
De door Tariq gestuurde statistieken zijn niet duidelijk genoeg, we kunnen niet goed herleiden waar de meeste winst valt te behalen. Tariq gaat FPY statistieken opmaken.
|
||||
|
||||
# Beslissingen
|
||||
|
||||
|
||||
|
||||
# Acties
|
||||
- [x] Overzicht maken wat we hebben en wat we nog nodig hebben, onderscheid maken tussen gewenst en vereist ⏫ ➕ 2026-02-27 📅 2026-02-27 ✅ 2026-02-27
|
||||
|
||||
|
||||
# Referenties
|
||||
- [[T4893B]]
|
||||
|
||||
13
13 - Meetings/2026/2026-04-15 API intranet endpoints.md
Normal file
13
13 - Meetings/2026/2026-04-15 API intranet endpoints.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Nu in gebruik
|
||||
- `/operations/track-through`
|
||||
- `/employees/{empId}`
|
||||
- `/isah/serial-nrs/${SerialNr}?with[]=productionHeader`
|
||||
|
||||
# Interessant
|
||||
- Machine maintenance: test weigeren uit te voeren als testkast niet op tijd gecontroleerd is.
|
||||
- Validatie mal: resultaat automatisch publiceren naar intranet
|
||||
- Call registrations: Openstaande meldingen voor M-nummer bij test laten zien (alleen als deze op de testafdeling staat)
|
||||
|
||||
# Vragen
|
||||
- Wat zijn ISAH call actions/registrations? Zijn dit de meldingen? -> ja
|
||||
- De track-through endpoints zijn unauthenticated? Geen token nodig? -> klopt
|
||||
15
13 - Meetings/2026/2026-04-15 Hittech testrapporten.md
Normal file
15
13 - Meetings/2026/2026-04-15 Hittech testrapporten.md
Normal file
@ -0,0 +1,15 @@
|
||||
Meeting met: Tomas Lindqvist
|
||||
|
||||
# Vragen
|
||||
- Idealiter wil ik per testrun een rapport uploaden
|
||||
- Dan moet er een timestamp aan de filename toegevoegd worden
|
||||
- Per serienummer uploaden
|
||||
- CSV
|
||||
- Ik probeer nu elke keer te verzamelen welke testdata geüpload moet worden, het lijkt me makkelijker als er voorbeelden aangeleverd worden.
|
||||
- Hoe staat het met het aanpassen van 160-sheets van de photosensor/diagnostic boards?
|
||||
- Het is enigszins onprettig dat we alleen maar preliminary data hebben van de 160-sheet
|
||||
# Antwoorden
|
||||
- wk 19/20: share new tdp
|
||||
- Let the wrong points in the 160-sheets know
|
||||
- BID in ASML portal can create with mass upload from excel sheet
|
||||
- Statistics reports Diagnostics opsturen -> target waarden van ASML kunnen fout zijn
|
||||
@ -0,0 +1,28 @@
|
||||
Doel: Het bespreken van de teststatistieken van de eerste batch en het aanpassen/aanscherpen van testlimieten.
|
||||
|
||||
Limieten verscherpen:
|
||||
- IDLE_CURRENT: max 100mA, korte delay (500ms) toevoegen
|
||||
- DDCP_TEMPERATURE: min 15, target 23, max 40
|
||||
- LED_TEMPERATURE: min 22, target 24, max 26
|
||||
- MOTOR_TEMPERATURE: min 24, target 27, max 32
|
||||
- LED_GREEN_RATIO: min 0.8, target 0.9
|
||||
- LED_RED_RATIO: min 0.8, target 0.85
|
||||
- LED_BLUE_RATIO: min 0.8
|
||||
- POWER_LED_BLUE_INTENSITY: min 12000, target 14500, max 18000
|
||||
- POWER_LED_GREEN_INTENSITY: min 25000, target 30000
|
||||
- POWER_LED_RED_INTENSITY: min 14000, target 17000
|
||||
- BAT1_RTIM: min naar 35?
|
||||
- 5V_OTC: al aangepast
|
||||
- VBOOST: al aangepast
|
||||
- VBUS_OTC: al aangepast
|
||||
- ESC_RTIM: min 17ms
|
||||
- VBUS: min 23400mV, max 23,9V, target 23600mV
|
||||
- LED Intensiteiten strakker zetten om overcurrent te voorkomen
|
||||
- K3 K4 contactweerstand nameten
|
||||
- BAT_VTOP: max 24000mV, min 22800mV
|
||||
- OTC: settling time omhoog naar 1000ms
|
||||
- OTC_CURRENT: max 35, min 20mA -> mag niet te hoog zijn vanwege limieten in de lader!
|
||||
- VBAT_ON: min 23,5 max 24,2
|
||||
- ESC_VSTEADY: min 23400, max 23800mV
|
||||
- ESC_VTOP: min 21500mV
|
||||
- IDLE_CURRENT: stabilisatietijd verhogen naar 3000ms, limiet max 60mA, bij falen terugkoppelen
|
||||
37
13 - Meetings/2026/2026-05-07 3T ESC-P test.md
Normal file
37
13 - Meetings/2026/2026-05-07 3T ESC-P test.md
Normal file
@ -0,0 +1,37 @@
|
||||
---
|
||||
type: phonecall
|
||||
joined:
|
||||
- Marco van Zijl
|
||||
- "[[Frank Hobelman]]"
|
||||
date: 2026-05-07
|
||||
---
|
||||
# Doel
|
||||
[[3T]] moet een indicatie gaan opstellen voor hoeveel uren support zij gaan leveren voor de nieuwe testontwikkeling van de M4893A testadapter door Matas.
|
||||
|
||||
# Pre-meeting notes
|
||||
- Holmatro heeft al akkoord gegeven voor het laten maken van een Test-OK test door Matas
|
||||
- De PCB is ontworpen door [[3T]]
|
||||
- Matas heeft het 3T testplan, echter staan de digitale interfaces daar niet beschreven
|
||||
- Nog benodigde documenten:
|
||||
- Beschrijving digitale interfaces
|
||||
- Elektrisch schema ESC-P
|
||||
- Firmware: Bootloader, testfirmware, productiefirmware
|
||||
- STEP 3D: PCA+MOLD
|
||||
- Design proces:
|
||||
- Matas: opstellen eerste versie testspecificatie aan de hand van het 3T testplan
|
||||
- 3T: vragen beantwoorden over werking hardware en firmware
|
||||
- 3T: evaluatie testspecificatie
|
||||
- Matas: feedback verwerken in nieuwe testspecificatie
|
||||
- 3T: opnieuw evaluatie testspecificatie
|
||||
- Matas: ontwerpen testadapter/pennenbed
|
||||
- 3T: evaluatie testadapter/pennenbed
|
||||
- Matas: bouwen testadapter en testscripting maken
|
||||
- 3T: ondersteunen bij debuggen testadapter
|
||||
|
||||
# Notities
|
||||
- Frank is volgende week afwezig
|
||||
- Half jaar geleden operatie gehad, nu langzaam weer aan het opschalen, zit nu op 3 dagen per week werken
|
||||
- Afspraak gepland voor donderdag 21 mei 13:00
|
||||
- Meeting request versturen
|
||||
- Agenda meesturen
|
||||
- Frank is projectleider, niet direct technisch, moet misschien mensen inschakelen bij de meeting die de technische kennis wel hebben
|
||||
0
Companies/3T.md
Normal file
0
Companies/3T.md
Normal file
7
Contactpersonen/Frank Hobelman.md
Normal file
7
Contactpersonen/Frank Hobelman.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
company: 3T
|
||||
function: Project Manager
|
||||
email: frank.hobelman@kendrion.com
|
||||
phone: 088-3343321
|
||||
mobile: 06-30266909
|
||||
---
|
||||
Loading…
Reference in New Issue
Block a user