${s.originalMarkdown}'${s.path}' > '${s.precedingHeader}'Tasks query: ${n.replace(/\n/g,"
")}`}renderLoadingMessage(t){t.setText("Loading Tasks ...")}createExplanation(t){let n=hv(this.source,ye.getInstance(),or.getInstance(),this.filePath),s=t.createEl("pre");s.addClasses(["plugin-tasks-query-explanation"]),s.setText(n),t.appendChild(s)}createTaskList(t,n){return L(this,null,function*(){let s=new lu(this.query.taskLayoutOptions,this.query.queryLayoutOptions),i=n.createEl("ul");i.addClasses(["contains-task-list","plugin-tasks-query-result"]),i.addClasses(s.taskListHiddenClasses());let a=this.getGroupingAttribute();a&&a.length>0&&(i.dataset.taskGroupBy=a);let o=new Nn({obsidianComponent:this,parentUlElement:i,taskLayoutOptions:this.query.taskLayoutOptions,queryLayoutOptions:this.query.queryLayoutOptions});for(let[u,l]of t.entries()){let c=this.isFilenameUnique({task:l}),f=yield o.renderTaskLine(l,u,c);f.querySelectorAll("[data-footnote-id]").forEach(E=>E.remove());let y=f.createSpan("task-extras");this.query.queryLayoutOptions.hideUrgency||this.addUrgency(y,l);let k=this.query.queryLayoutOptions.shortMode;this.query.queryLayoutOptions.hideBacklinks||this.addBacklinks(y,l,k,c),this.query.queryLayoutOptions.hideEditButton||this.addEditButton(y,l),!this.query.queryLayoutOptions.hidePostponeButton&&gv(l)&&this.addPostponeButton(y,l,k),i.appendChild(f)}n.appendChild(i)})}addEditButton(t,n){t.createEl("a",{cls:"tasks-edit",href:"#",title:"Edit task"}).onClickEvent(i=>{i.preventDefault();let a=u=>L(this,null,function*(){yield li({originalTask:n,newTasks:Tt.removeInferredStatusIfNeeded(n,u)})});new On({app:this.app,task:n,onSubmit:a}).open()})}addUrgency(t,n){let s=new Intl.NumberFormat().format(n.urgency);t.createSpan({text:s,cls:"tasks-urgency"})}addAllTaskGroups(t,n){return L(this,null,function*(){for(let s of t.groups)yield this.addGroupHeadings(n,s.groupHeadings),yield this.createTaskList(s.tasks,n)})}addGroupHeadings(t,n){return L(this,null,function*(){for(let s of n)yield this.addGroupHeading(t,s)})}addGroupHeading(t,n){return L(this,null,function*(){let s="h6";n.nestingLevel===0?s="h4":n.nestingLevel===1&&(s="h5");let i=t.createEl(s,{cls:"tasks-group-heading"});yield di.MarkdownRenderer.renderMarkdown(n.displayName,i,this.filePath,this)})}addBacklinks(t,n,s,i){var c;let a=t.createSpan({cls:"tasks-backlink"});s||a.append(" (");let o=a.createEl("a");o.rel="noopener",o.target="_blank",o.addClass("internal-link"),s&&o.addClass("internal-link-short-mode");let u;s?u=" \u{1F517}":u=(c=n.getLinkText({isFilenameUnique:i}))!=null?c:"",o.setText(u);let l=this.app.vault;o.addEventListener("click",f=>L(this,null,function*(){let m=yield rm(n,l);if(m){let[y,k]=m,E=this.app.workspace.getLeaf(di.Keymap.isModEvent(f));f.preventDefault(),yield E.openFile(k,{eState:{line:y}})}})),o.addEventListener("mousedown",f=>L(this,null,function*(){if(f.button===1){let m=yield rm(n,l);if(m){let[y,k]=m,E=this.app.workspace.getLeaf("tab");f.preventDefault(),yield E.openFile(k,{eState:{line:y}})}}})),s||a.append(")")}addPostponeButton(t,n,s){let a="day",o=_v(n,1,a),u=t.createEl("a",{cls:"tasks-postpone"+(s?" tasks-postpone-short-mode":""),href:"#",title:o});u.addEventListener("click",l=>{l.preventDefault(),In.postponeOnClickCallback(u,n,1,a)}),u.addEventListener("contextmenu",l=>L(this,null,function*(){l.stopPropagation(),new In(u,n).showAtPosition({x:l.clientX,y:l.clientY})}))}addTaskCount(t,n){this.query.queryLayoutOptions.hideTaskCount||t.createDiv({text:n.totalTasksCountDisplayText(),cls:"tasks-count"})}isFilenameUnique({task:t}){let n=t.path.match(/([^/]*)\..+$/i);if(n===null)return;let s=n[1];return this.app.vault.getMarkdownFiles().filter(a=>{if(a.basename===s)return!0}).length<2}getGroupingAttribute(){let t=[];for(let n of this.query.grouping)t.push(n.property);return t.join(",")}};var _e=require("obsidian");var ll=class{constructor(e){this._markdown="";this.columnNames=e,this.addTitleRow()}get markdown(){return this._markdown}addTitleRow(){let e="|",t="|";this.columnNames.forEach(n=>{e+=` ${n} |`,t+=" ----- |"}),this._markdown+=`${e}
+`,this._markdown+=`${t}
+`}addRow(e){let t=this.makeRowText(e);this._markdown+=`${t}
+`}addRowIfNew(e){let t=this.makeRowText(e);this._markdown.includes(t)||(this._markdown+=`${t}
+`)}makeRowText(e){let t="|";return e.forEach(n=>{t+=` ${n} |`}),t}};function Ev(r,e){return r.findIndex(t=>t.symbol===e)}function CP(r,e){let t=Q.getTypeForUnknownSymbol(r.symbol);r.type!==t&&(t==="TODO"&&r.symbol!==" "||e.push(`For information, the conventional type for status symbol ${Wr(r.symbol)} is ${Wr(t)}: you may wish to review this type.`))}function AP(r,e,t){let n=Ev(r,e.nextStatusSymbol);if(n===-1){t.push(`Next symbol ${Wr(e.nextStatusSymbol)} is unknown: create a status with symbol ${Wr(e.nextStatusSymbol)}.`);return}if(e.type!=="DONE")return;let s=r[n];if(s){if(s.type!=="TODO"&&s.type!=="IN_PROGRESS"){let i="https://publish.obsidian.md/tasks/Getting+Started/Statuses/Recurring+Tasks+and+Custom+Statuses",a=[`This \`DONE\` status is followed by ${Wr(s.type)}, not \`TODO\` or \`IN_PROGRESS\`.`,"If used to complete a recurring task, it will instead be followed by `TODO` or `IN_PROGRESS`, to ensure the next task matches the `not done` filter.",`See [Recurring Tasks and Custom Statuses](${i}).`].join("These are the core statuses that Tasks supports natively, with no need for custom CSS styling or theming.
You can add edit and add your own custom statuses in the section below.
"},settings:[{name:"",description:"",type:"function",initialValue:"",placeholder:"",settingName:"insertTaskCoreStatusSettings",featureFlag:"",notice:null}]},{text:"Custom Statuses",level:"h3",class:"",open:!0,notice:{class:"setting-item-description",text:null,html:`You should first select and install a CSS Snippet or Theme to style custom checkboxes.
Then, use the buttons below to set up your custom statuses, to match your chosen CSS checkboxes.
Note Any statuses with the same symbol as any earlier statuses will be ignored. You can confirm the actually loaded statuses by running the 'Create or edit task' command and looking at the Status drop-down.
See the documentation to get started!
`},settings:[{name:"",description:"",type:"function",initialValue:"",placeholder:"",settingName:"insertCustomTaskStatusSettings",featureFlag:"",notice:null}]}];var vr=require("obsidian");var ds=class{validate(e){let t=[];return t.push(...this.validateSymbol(e)),t.push(...this.validateName(e)),t.push(...this.validateNextSymbol(e)),t}validateStatusCollectionEntry(e){let[t,n,s,i]=e,a=[];if(a.push(...this.validateType(i)),t===s&&i!=="NON_TASK"&&a.push(`Status symbol '${t}' toggles to itself`),a.length>0)return a;let o=Q.createFromImportedValue(e).configuration;return a.push(...this.validateSymbolTypeConventions(o)),a.push(...this.validate(o)),a}validateSymbol(e){return ds.validateOneSymbol(e.symbol,"Task Status Symbol")}validateNextSymbol(e){return ds.validateOneSymbol(e.nextStatusSymbol,"Task Next Status Symbol")}validateName(e){let t=[];return e.name.length===0&&t.push("Task Status Name cannot be empty."),t}validateType(e){let t=Gt[e],n=[];return t||n.push(`Status Type "${e}" is not a valid type`),t=="EMPTY"&&n.push('Status Type "EMPTY" is not permitted in user data'),n}validateSymbolTypeConventions(e){let t=[],n=e.symbol,s=new Ee,i=n==="X"?"x":n,a=s.bySymbol(i);return a.type!=="EMPTY"&&(e.nextStatusSymbol!==a.nextStatusSymbol&&t.push(`Next Status Symbol for symbol '${n}': '${e.nextStatusSymbol}' is inconsistent with convention '${a.nextStatusSymbol}'`),e.type!==a.type&&t.push(`Status Type for symbol '${n}': '${e.type}' is inconsistent with convention '${a.type}'`)),t}static validateOneSymbol(e,t){let n=[];return e.length===0&&n.push(`${t} cannot be empty.`),e.length>1&&n.push(`${t} ("${e}") must be a single character.`),n}};var fs=new ds,zt=class extends vr.Modal{constructor(t,n,s){super(t.app);this.plugin=t;this.saved=!1;this.error=!1;this.statusSymbol=n.symbol,this.statusName=n.name,this.statusNextSymbol=n.nextStatusSymbol,this.statusAvailableAsCommand=n.availableAsCommand,this.type=n.type,this.isCoreStatus=s}statusConfiguration(){return new Ve(this.statusSymbol,this.statusName,this.statusNextSymbol,this.statusAvailableAsCommand,this.type)}display(){return L(this,null,function*(){let{contentEl:t}=this;t.empty();let n=t.createDiv(),s;new vr.Setting(n).setName("Task Status Symbol").setDesc("This is the character between the square braces. (It can only be edited for Custom statuses, and not Core statuses.)").addText(l=>{s=l,l.setValue(this.statusSymbol).onChange(c=>{this.statusSymbol=c,zt.setValid(l,fs.validateSymbol(this.statusConfiguration()))})}).setDisabled(this.isCoreStatus).then(l=>{zt.setValid(s,fs.validateSymbol(this.statusConfiguration()))});let i;new vr.Setting(n).setName("Task Status Name").setDesc("This is the friendly name of the task status.").addText(l=>{i=l,l.setValue(this.statusName).onChange(c=>{this.statusName=c,zt.setValid(l,fs.validateName(this.statusConfiguration()))})}).then(l=>{zt.setValid(i,fs.validateName(this.statusConfiguration()))});let a;new vr.Setting(n).setName("Task Next Status Symbol").setDesc("When clicked on this is the symbol that should be used next.").addText(l=>{a=l,l.setValue(this.statusNextSymbol).onChange(c=>{this.statusNextSymbol=c,zt.setValid(l,fs.validateNextSymbol(this.statusConfiguration()))})}).then(l=>{zt.setValid(a,fs.validateNextSymbol(this.statusConfiguration()))}),new vr.Setting(n).setName("Task Status Type").setDesc("Control how the status behaves for searching and toggling.").addDropdown(l=>{["TODO","IN_PROGRESS","DONE","CANCELLED","NON_TASK"].forEach(f=>{l.addOption(f,f)}),l.setValue(this.type).onChange(f=>{this.type=Q.getTypeFromStatusTypeString(f)})}),Q.tasksPluginCanCreateCommandsForStatuses()&&new vr.Setting(n).setName("Available as command").setDesc("If enabled this status will be available as a command so you can assign a hotkey and toggle the status using it.").addToggle(l=>{l.setValue(this.statusAvailableAsCommand).onChange(c=>L(this,null,function*(){this.statusAvailableAsCommand=c}))});let o=t.createDiv(),u=new vr.Setting(o);u.addButton(l=>(l.setTooltip("Save").setIcon("checkmark").onClick(()=>L(this,null,function*(){let c=fs.validate(this.statusConfiguration());if(c.length>0){let f=c.join(` +`)+` + +Fix errors before saving.`;new vr.Notice(f);return}this.saved=!0,this.close()})),l)),u.addExtraButton(l=>(l.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),l))})}onOpen(){this.display()}static setValidationError(t){t.inputEl.addClass("tasks-settings-is-invalid")}static removeValidationError(t){t.inputEl.removeClass("tasks-settings-is-invalid")}static setValid(t,n){n.length===0?zt.removeValidationError(t):zt.setValidationError(t)}};var It=class extends _e.PluginSettingTab{constructor({plugin:t}){super(t.app,t);this.customFunctions={insertTaskCoreStatusSettings:this.insertTaskCoreStatusSettings.bind(this),insertCustomTaskStatusSettings:this.insertCustomTaskStatusSettings.bind(this)};this.plugin=t}saveSettings(t){return L(this,null,function*(){yield this.plugin.saveSettings(),t&&this.display()})}display(){let{containerEl:t}=this;t.empty(),this.containerEl.addClass("tasks-settings"),t.createEl("h3",{text:"Tasks Settings"}),t.createEl("p",{cls:"tasks-setting-important",text:"Changing any settings requires a restart of obsidian."}),t.createEl("h4",{text:"Task Format Settings"}),new _e.Setting(t).setName("Task Format").setDesc(It.createFragmentWithHTML('The format that Tasks uses to read and write tasks.
Important: Tasks currently only supports one format at a time. Selecting Dataview will currently stop Tasks reading its own emoji signifiers.
See the documentation.
')).addDropdown(s=>{for(let i of Object.keys(rn))s.addOption(i,rn[i].displayName);s.setValue(K().taskFormat).onChange(i=>L(this,null,function*(){Ke({taskFormat:i}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global filter Settings"}),new _e.Setting(t).setName("Global task filter").setDesc(It.createFragmentWithHTML('Recommended: Leave empty if you want all checklist items in your vault to be tasks managed by this plugin.
Use a global filter if you want Tasks to only act on a subset of your "- [ ]" checklist items, so that a checklist item must include the specified string in its description in order to be considered a task.
For example, if you set the global filter to #task, the Tasks plugin will only handle checklist items tagged with #task.Other checklist items will remain normal checklist items and not appear in queries or get a done date set.
See the documentation.
')).addText(s=>{s.setPlaceholder("e.g. #task or TODO").setValue(ye.getInstance().get()).onChange(i=>L(this,null,function*(){Ke({globalFilter:i}),ye.getInstance().set(i),yield this.plugin.saveSettings()}))}),new _e.Setting(t).setName("Remove global filter from description").setDesc("Enabling this removes the string that you set as global filter from the task description when displaying a task.").addToggle(s=>{let i=K();s.setValue(i.removeGlobalFilter).onChange(a=>L(this,null,function*(){Ke({removeGlobalFilter:a}),ye.getInstance().setRemoveGlobalFilter(a),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Global Query"}),LP(new _e.Setting(t).setDesc(It.createFragmentWithHTML('A query that is automatically included at the start of every Tasks block in the vault. Useful for adding default filters, or layout options.
See the documentation.
')).addTextArea(s=>{let i=K();s.inputEl.rows=4,s.setPlaceholder(`# For example... +path does not include _templates/ +limit 300 +show urgency`).setValue(i.globalQuery).onChange(a=>L(this,null,function*(){Ke({globalQuery:a}),or.getInstance().set(a),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Task Statuses"});let{headingOpened:n}=K();Pv.forEach(s=>{this.addOneSettingsBlock(t,s,n)}),t.createEl("h4",{text:"Date Settings"}),new _e.Setting(t).setName("Set created date on every added task").setDesc(It.createFragmentWithHTML(`Enabling this will add a timestamp \u2795 YYYY-MM-DD before other date values, when a task is created with 'Create or edit task', or by completing a recurring task.See the documentation.
`)).addToggle(s=>{let i=K();s.setValue(i.setCreatedDate).onChange(a=>L(this,null,function*(){Ke({setCreatedDate:a}),yield this.plugin.saveSettings()}))}),new _e.Setting(t).setName("Set done date on every completed task").setDesc(It.createFragmentWithHTML('Enabling this will add a timestamp \u2705 YYYY-MM-DD at the end when a task is toggled to done.See the documentation.
')).addToggle(s=>{let i=K();s.setValue(i.setDoneDate).onChange(a=>L(this,null,function*(){Ke({setDoneDate:a}),yield this.plugin.saveSettings()}))}),new _e.Setting(t).setName("Set cancelled date on every cancelled task").setDesc(It.createFragmentWithHTML('Enabling this will add a timestamp \u274C YYYY-MM-DD at the end when a task is toggled to cancelled.See the documentation.
')).addToggle(s=>{let i=K();s.setValue(i.setCancelledDate).onChange(a=>L(this,null,function*(){Ke({setCancelledDate:a}),yield this.plugin.saveSettings()}))}),new _e.Setting(t).setName("Use filename as Scheduled date for undated tasks").setDesc(It.createFragmentWithHTML('Save time entering Scheduled (\u23F3) dates.If this option is enabled, any undated tasks will be given a default Scheduled date extracted from their file name.The date in the file name must be in one ofYYYY-MM-DD or YYYYMMDD formats.Undated tasks have none of Due (\u{1F4C5} ), Scheduled (\u23F3) and Start (\u{1F6EB}) dates.See the documentation.
')).addToggle(s=>{let i=K();s.setValue(i.useFilenameAsScheduledDate).onChange(a=>L(this,null,function*(){Ke({useFilenameAsScheduledDate:a}),yield this.plugin.saveSettings()}))}),new _e.Setting(t).setName("Folders with default Scheduled dates").setDesc("Leave empty if you want to use default Scheduled dates everywhere, or enter a comma-separated list of folders.").addText(s=>L(this,null,function*(){let i=K();yield this.plugin.saveSettings(),s.setValue(It.renderFolderArray(i.filenameAsDateFolders)).onChange(a=>L(this,null,function*(){let o=It.parseCommaSeparatedFolders(a);Ke({filenameAsDateFolders:o}),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Recurring task Settings"}),new _e.Setting(t).setName("Next recurrence appears on the line below").setDesc(It.createFragmentWithHTML('Enabling this will make the next recurrence of a task appear on the line below the completed task. Otherwise the next recurrence will appear before the completed one.See the documentation.
')).addToggle(s=>{let{recurrenceOnNextLine:i}=K();s.setValue(i).onChange(a=>L(this,null,function*(){Ke({recurrenceOnNextLine:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Auto-suggest Settings"}),new _e.Setting(t).setName("Auto-suggest task content").setDesc(It.createFragmentWithHTML('Enabling this will open an intelligent suggest menu while typing inside a recognized task line.See the documentation.
')).addToggle(s=>{let i=K();s.setValue(i.autoSuggestInEditor).onChange(a=>L(this,null,function*(){Ke({autoSuggestInEditor:a}),yield this.plugin.saveSettings()}))}),new _e.Setting(t).setName("Minimum match length for auto-suggest").setDesc("If higher than 0, auto-suggest will be triggered only when the beginning of any supported keywords is recognized.").addSlider(s=>{let i=K();s.setLimits(0,3,1).setValue(i.autoSuggestMinMatch).setDynamicTooltip().onChange(a=>L(this,null,function*(){Ke({autoSuggestMinMatch:a}),yield this.plugin.saveSettings()}))}),new _e.Setting(t).setName("Maximum number of auto-suggestions to show").setDesc('How many suggestions should be shown when an auto-suggest menu pops up (including the "\u23CE" option).').addSlider(s=>{let i=K();s.setLimits(3,12,1).setValue(i.autoSuggestMaxItems).setDynamicTooltip().onChange(a=>L(this,null,function*(){Ke({autoSuggestMaxItems:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Dialog Settings"}),new _e.Setting(t).setName("Provide access keys in dialogs").setDesc(It.createFragmentWithHTML('If the access keys (keyboard shortcuts) for various controls in dialog boxes conflict with system keyboard shortcuts or assistive technology functionality that is important for you, you may want to deactivate them here.See the documentation.
')).addToggle(s=>{let i=K();s.setValue(i.provideAccessKeys).onChange(a=>L(this,null,function*(){Ke({provideAccessKeys:a}),yield this.plugin.saveSettings()}))})}addOneSettingsBlock(t,n,s){let i=t.createEl("details",{cls:"tasks-nested-settings",attr:Se({},n.open||s[n.text]?{open:!0}:{})});i.empty(),i.ontoggle=()=>{s[n.text]=i.open,Ke({headingOpened:s}),this.plugin.saveSettings()};let a=i.createEl("summary");if(new _e.Setting(a).setHeading().setName(n.text),a.createDiv("collapser").createDiv("handle"),n.notice!==null){let o=i.createEl("div",{cls:n.notice.class,text:n.notice.text});n.notice.html!==null&&o.insertAdjacentHTML("beforeend",n.notice.html)}n.settings.forEach(o=>{if(!(o.featureFlag!==""&&!t_(o.featureFlag))&&(o.type==="checkbox"?new _e.Setting(i).setName(o.name).setDesc(o.description).addToggle(u=>{let l=K();l.generalSettings[o.settingName]||es(o.settingName,o.initialValue),u.setValue(l.generalSettings[o.settingName]).onChange(c=>L(this,null,function*(){es(o.settingName,c),yield this.plugin.saveSettings()}))}):o.type==="text"?new _e.Setting(i).setName(o.name).setDesc(o.description).addText(u=>{let l=K();l.generalSettings[o.settingName]||es(o.settingName,o.initialValue);let c=f=>L(this,null,function*(){es(o.settingName,f),yield this.plugin.saveSettings()});u.setPlaceholder(o.placeholder.toString()).setValue(l.generalSettings[o.settingName].toString()).onChange((0,_e.debounce)(c,500,!0))}):o.type==="textarea"?new _e.Setting(i).setName(o.name).setDesc(o.description).addTextArea(u=>{let l=K();l.generalSettings[o.settingName]||es(o.settingName,o.initialValue);let c=f=>L(this,null,function*(){es(o.settingName,f),yield this.plugin.saveSettings()});u.setPlaceholder(o.placeholder.toString()).setValue(l.generalSettings[o.settingName].toString()).onChange((0,_e.debounce)(c,500,!0)),u.inputEl.rows=8,u.inputEl.cols=40}):o.type==="function"&&this.customFunctions[o.settingName](i,this),o.notice!==null)){let u=i.createEl("p",{cls:o.notice.class,text:o.notice.text});o.notice.html!==null&&u.insertAdjacentHTML("beforeend",o.notice.html)}})}static parseCommaSeparatedFolders(t){return t.split(",").map(n=>n.trim()).map(n=>n.replace(/^\/|\/$/g,"")).filter(n=>n!=="")}static renderFolderArray(t){return t.join(",")}insertTaskCoreStatusSettings(t,n){let{statusSettings:s}=K();s.coreStatuses.forEach(a=>{Nv(t,a,s.coreStatuses,s,n,n.plugin,!0)}),new _e.Setting(t).addButton(a=>{let o="Review and check your Statuses";a.setButtonText(o).setCta().onClick(()=>L(this,null,function*(){let l=window.moment().format("YYYY-MM-DD HH-mm-ss"),c=`Tasks Plugin - ${o} ${l}.md`,f=this.plugin.manifest.version,m=Ee.getInstance(),y=Sv(s,m,o,f),k=yield app.vault.create(c,y);yield this.app.workspace.getLeaf(!0).openFile(k)})),a.setTooltip("Create a new file in the root of the vault, containing a Mermaid diagram of the current status settings.")}).infoEl.remove()}insertCustomTaskStatusSettings(t,n){let{statusSettings:s}=K();s.customStatuses.forEach(l=>{Nv(t,l,s.customStatuses,s,n,n.plugin,!1)}),t.createEl("div"),new _e.Setting(t).addButton(l=>{l.setButtonText("Add New Task Status").setCta().onClick(()=>L(this,null,function*(){Ne.addStatus(s.customStatuses,new Ve("","","",!1,"TODO")),yield fi(s,n)}))}).infoEl.remove();let a=[["AnuPpuccin Theme",Ov()],["Aura Theme",Dv()],["Ebullientworks Theme",xv()],["ITS Theme & SlRvb Checkboxes",Rv()],["Minimal Theme",Cv()],["Things Theme",Av()],["LYT Mode Theme (Dark mode only)",Mv()]];for(let[l,c]of a)new _e.Setting(t).addButton(m=>{let y=`${l}: Add ${c.length} supported Statuses`;m.setButtonText(y).onClick(()=>L(this,null,function*(){yield FP(c,s,n)}))}).infoEl.remove();new _e.Setting(t).addButton(l=>{l.setButtonText("Add All Unknown Status Types").setCta().onClick(()=>L(this,null,function*(){let f=this.plugin.getTasks().map(y=>y.status),m=Ee.getInstance().findUnknownStatuses(f);m.length!==0&&(m.forEach(y=>{Ne.addStatus(s.customStatuses,y)}),yield fi(s,n))}))}).infoEl.remove(),new _e.Setting(t).addButton(l=>{l.setButtonText("Reset Custom Status Types to Defaults").setWarning().onClick(()=>L(this,null,function*(){Ne.resetAllCustomStatuses(s),yield fi(s,n)}))}).infoEl.remove()}},Ba=It;Ba.createFragmentWithHTML=t=>createFragment(n=>n.createDiv().innerHTML=t);function Nv(r,e,t,n,s,i,a){let o=r.createEl("pre");o.addClass("row-for-status"),o.textContent=new Q(e).previewText();let u=new _e.Setting(r);u.infoEl.replaceWith(o),a||u.addExtraButton(l=>{l.setIcon("cross").setTooltip("Delete").onClick(()=>L(this,null,function*(){Ne.deleteStatus(t,e)&&(yield fi(n,s))}))}),u.addExtraButton(l=>{l.setIcon("pencil").setTooltip("Edit").onClick(()=>L(this,null,function*(){let c=new zt(i,e,a);c.onClose=()=>L(this,null,function*(){c.saved&&Ne.replaceStatus(t,e,c.statusConfiguration())&&(yield fi(n,s))}),c.open()}))}),u.infoEl.remove()}function FP(r,e,t){return L(this,null,function*(){Ne.bulkAddStatusCollection(e,r).forEach(s=>{new _e.Notice(s)}),yield fi(e,t)})}function fi(r,e){return L(this,null,function*(){Ke({statusSettings:r}),Ne.applyToStatusRegistry(r,Ee.getInstance()),yield e.saveSettings(!0)})}function LP(r){let{settingEl:e,infoEl:t,controlEl:n}=r,s=n.querySelector("textarea");s!==null&&(e.style.display="block",t.style.marginRight="0px",s.style.minWidth="-webkit-fill-available")}var Iv=require("obsidian");var cl=class extends Iv.EditorSuggest{constructor(t,n){super(t);this.settings=n,t.scope.register([],"Tab",()=>{var i;let s=(i=this.context)==null?void 0:i.editor;return s?(s.exec("indentMore"),!1):!0})}onTrigger(t,n,s){if(!this.settings.autoSuggestInEditor)return null;let i=n.getLine(t.line);return XT(i,t.ch)?{start:{line:t.line,ch:0},end:{line:t.line,ch:i.length},query:i}:null}getSuggestions(t){var a,o,u;let n=t.query,s=t.editor.getCursor();return((u=(o=(a=Ca()).buildSuggestions)==null?void 0:o.call(a,n,s.ch,this.settings))!=null?u:[]).map(l=>ot(Se({},l),{context:t}))}renderSuggestion(t,n){n.setText(t.displayText)}selectSuggestion(t,n){var u,l,c;let s=t.context.editor;if(t.suggestionType==="empty"){this.close();let f=new KeyboardEvent("keydown",{code:"Enter",key:"Enter"});(l=(u=s==null?void 0:s.cm)==null?void 0:u.contentDOM)==null||l.dispatchEvent(f);return}let i=t.context.editor.getCursor(),a={line:i.line,ch:(c=t.insertAt)!=null?c:i.ch},o=t.insertSkip?{line:i.line,ch:a.ch+t.insertSkip}:void 0;t.context.editor.replaceRange(t.appendText,a,o),t.context.editor.setCursor({line:i.line,ch:a.ch+t.appendText.length})}};var Fv=(r,e)=>{let t,n=new Promise((a,o)=>{t=a});return e(r,a=>{let o=a.map(u=>u.toFileLineString()).join(` +`);t(o)}).open(),n};var Lv=(r,e)=>{let t=bu({line:"",path:""});return new On({app:r,task:t,onSubmit:e})};var Uv=r=>({createTaskLineModal:()=>Fv(r,Lv)});var dl=class extends qv.Plugin{get apiV1(){return Uv(app)}onload(){return L(this,null,function*(){Rt.registerConsoleLogger(),Ep("info",`loading plugin "${this.manifest.name}" v${this.manifest.version}`),yield this.loadSettings();let{loggingOptions:t}=K();Rt.configure(t),this.addSettingTab(new Ba({plugin:this})),nv({metadataCache:this.app.metadataCache,vault:this.app.vault,workspace:this.app.workspace}),yield this.loadTaskStatuses();let n=new Ju({obsidianEvents:this.app.workspace});this.cache=new ts({metadataCache:this.app.metadataCache,vault:this.app.vault,events:n}),this.inlineRenderer=new il({plugin:this}),this.queryRenderer=new ul({plugin:this,events:n}),this.registerEditorExtension(mv()),this.registerEditorSuggest(new cl(this.app,K())),new Tu({plugin:this})})}loadTaskStatuses(){return L(this,null,function*(){let{statusSettings:t}=K();Ne.applyToStatusRegistry(t,Ee.getInstance())})}onunload(){var t;Ep("info",`unloading plugin "${this.manifest.name}" v${this.manifest.version}`),(t=this.cache)==null||t.unload()}loadSettings(){return L(this,null,function*(){let t=yield this.loadData();Ke(t),t=K(),ye.getInstance().set(t.globalFilter),ye.getInstance().setRemoveGlobalFilter(t.removeGlobalFilter),or.getInstance().set(t.globalQuery),yield this.loadTaskStatuses()})}saveSettings(){return L(this,null,function*(){yield this.saveData(K())})}getTasks(){var t;return(t=this.cache)==null?void 0:t.getTasks()}}; +/*! + * EventEmitter2 + * https://github.com/hij1nx/EventEmitter2 + * + * Copyright (c) 2013 hij1nx + * Licensed under the MIT license. + */ +/*! + * mustache.js - Logic-less {{mustache}} templates with JavaScript + * http://github.com/janl/mustache.js + */ diff --git a/.obsidian/plugins/obsidian-tasks-plugin/manifest.json b/.obsidian/plugins/obsidian-tasks-plugin/manifest.json new file mode 100644 index 0000000..b491bf5 --- /dev/null +++ b/.obsidian/plugins/obsidian-tasks-plugin/manifest.json @@ -0,0 +1,12 @@ +{ + "id": "obsidian-tasks-plugin", + "name": "Tasks", + "version": "6.0.0", + "minAppVersion": "1.1.1", + "description": "Task management for Obsidian", + "helpUrl": "https://publish.obsidian.md/tasks/", + "author": "Martin Schenck and Clare Macrae", + "authorUrl": "https://github.com/obsidian-tasks-group", + "fundingUrl": "https://github.com/sponsors/claremacrae", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/obsidian-tasks-plugin/styles.css b/.obsidian/plugins/obsidian-tasks-plugin/styles.css new file mode 100644 index 0000000..08180d0 --- /dev/null +++ b/.obsidian/plugins/obsidian-tasks-plugin/styles.css @@ -0,0 +1,366 @@ +:root { + --tasks-details-icon: url("data:image/svg+xml;charset=utf-8,"); + +} + +/* Fix indentation of wrapped task lines in Tasks search results, when in Live Preview. */ +ul.contains-task-list .task-list-item-checkbox { + margin-inline-start: calc(var(--checkbox-size) * -1.5) !important; +} + +.plugin-tasks-query-explanation{ + /* Prevent long explanation lines wrapping, so they are more readable, + especially on small screens. + + A horizontal scroll bar will be displayed, if the explanation + is too wide to fit. + */ + --code-white-space: pre; +} + +.tasks-count { + color: var(--text-faint); + padding-left: 20px; +} + +/* Tooltip pop up above the description in short mode */ +.tooltip.pop-up { + animation: pop-up-animation 200ms forwards ease-in-out; +} +@keyframes pop-up-animation { + 0% { + opacity: 0; + transform: translateY(-100%) scale(1); + } + 20% { + opacity: 0.7; + transform: translateY(-100%) scale(1.02); + } + 40% { + opacity: 1; + transform: translateY(-100%) scale(1.05); + } + 100% { + opacity: 1; + transform: translateY(-100%) scale(1); + } +} + +/* Edit and postpone */ +.tasks-edit, .tasks-postpone { + width: 1em; + height: 1em; + vertical-align: middle; + margin-left: .33em; + cursor: pointer; + font-family: var(--font-interface); + color: var(--text-accent); +} + +a.tasks-edit, a.tasks-postpone { + text-decoration: none; +} + +.tasks-edit::after { + content: '📝'; +} + +.tasks-postpone::after { + content: '⏩'; +} + +/* Urgency score */ +.tasks-urgency { + font-size: var(--font-ui-smaller); + font-family: var(--font-interface); + padding: 2px 6px; + border-radius: var(--radius-s); + color: var(--text-normal); + background-color: var(--background-secondary); + margin-left: 0.5em; + line-height: 1; +} + +.internal-link.internal-link-short-mode { + text-decoration: none; +} + +.tasks-list-text { + position: relative; +} + +.tasks-list-text .tooltip { + position: absolute; + top: 0px; + left: 0px; + white-space: nowrap; +} + +/* Hide tags that Obsidian recognises, if `hide tags` instruction was used. */ +.tasks-layout-hide-tags .task-description a.tag { + display: none; +} + +/* Workaround for issue #2073: Enabling the plugin causes blockIds to be not hidden in reading view + https://github.com/obsidian-tasks-group/obsidian-tasks/issues/2073 */ +.task-list-item .task-block-link{ + display: none; +} + +.tasks-setting-important { + color: red; + font-weight: bold; +} + +/**------------------------------------------------------------------------ + ** MODAL + *------------------------------------------------------------------------**/ + +.tasks-modal-section + .tasks-modal-section { + margin-top: 16px; +} + +.tasks-modal-section label { + display: inline-block; + margin-bottom: 4px; +} + +.tasks-modal-section label > span { + display: inline-block; +} + +.tasks-modal .with-accesskeys .accesskey-first::first-letter, +.tasks-modal .with-accesskeys .accesskey { + text-decoration: underline; + text-underline-offset: 1pt; +} + +.tasks-modal-buttons { + position: sticky; + bottom: 0; + background-color: var(--modal-background); + padding-bottom: 16px; + padding-top: 16px; + display: grid; + grid-template-columns: 3fr 1fr; + column-gap: .5em; +} + +.tasks-modal label + input[type="checkbox"] { + margin-left: 0.67em; + top: 2px; +} + +.tasks-modal input[type="text"] { + width: 100%; +} + +.tasks-modal textarea { + width: 100%; + min-height: calc(var(--input-height) * 2); + resize: vertical; +} + +.tasks-modal-priorities { + display: grid; + grid-template-columns: 4em 8em 8em 8em; + grid-column-gap: 1.33em; +} + +.tasks-modal-priorities span { + line-height: 1.41; + white-space: nowrap; +} + +.tasks-modal-priorities label { + border-radius: var(--input-radius); + padding: 2px 3px; + grid-column: 1; + grid-row-start: 1; + grid-row-end: 7; +} + +.tasks-modal-priorities input:focus + label { + box-shadow: 0 0 0 2px var(--background-modifier-border-focus); + border-color: var(--background-modifier-border-focus); +} + +.tasks-modal-priorities input:checked + label > span { + font-weight: bold; +} + +.tasks-modal-priorities input:not(:checked) + label > span:nth-child(4) { + filter: grayscale(100%) opacity(60%); +} + +.tasks-modal-dates { + display: grid; + grid-template-columns: 5.5em auto; + column-gap: .5em; + row-gap: 5px; +} + +.tasks-modal-dates > label { + grid-column: 1; + margin-top: 6px; +} + +.tasks-modal-dates > input, .tasks-modal-dates > code { + grid-column: 2; + align-items: stretch; +} + +.tasks-modal-dates > code { + margin-bottom: 5px; +} + +.tasks-modal-dates > div { + grid-column-start: 1; + grid-column-end: 3; +} + +.tasks-modal-status { + padding-bottom: 6px; + margin-bottom: -16px; + display: flex; + justify-content: space-between; +} + +.tasks-modal-error { + border: 1px solid red !important; +} + +.tasks-modal-warning { + color: var(--text-warning) !important; + background-color: rgba(var(--background-modifier-warning-rgb), 0.2) !important; +} + +.tasks-modal button:disabled { + pointer-events: none !important; + opacity: 0.3 !important; +} + +@media (max-width: 649px) { + .tasks-modal-priorities { + grid-template-columns: 4em 7.5em 5em; + margin-bottom: -10px; + } + .tasks-modal-priorities > label { + grid-row: 1 / span 7; + } + .tasks-modal-dates { + grid-template-columns: 1fr; + } + .tasks-modal-dates > label { + margin: 0; + } + .tasks-modal-dates > input, .tasks-modal-dates > code { + grid-column: 1; + } + .tasks-modal-dates > div { + grid-column-end: 1; + } + .tasks-modal-status { + display: block; + } +} + +@media (max-width: 399px) { + .tasks-modal-priorities { + grid-template-columns: 4em auto; + } + .tasks-modal-priorities > label { + grid-row: 1 / span 7; + } +} + +@media (max-width: 259px) { + .tasks-modal-priorities { + grid-template-columns: 1fr; + margin-bottom: 0; + } + .tasks-modal-priorities > label { + grid-row: 1; + } +} + +/**------------------------------------------------------------------------ + ** SETTINGS + *------------------------------------------------------------------------**/ + +.tasks-settings-is-invalid { + /* Dark red text on pale background*/ + color: var(--text-error) !important; + background-color: rgba(var(--background-modifier-error-rgb), 0.2) !important; +} + + + .tasks-settings .additional { + margin: 6px 12px; +} +.tasks-settings .additional > .setting-item { + border-top: 0; + padding-top: 9px; +} + + +.tasks-settings details > summary { + outline: none; + display: block !important; + list-style: none !important; + list-style-type: none !important; + min-height: 1rem; + border-top-left-radius: 0.1rem; + border-top-right-radius: 0.1rem; + cursor: pointer; + position: relative; +} + +.tasks-settings details > summary::-webkit-details-marker, +.tasks-settings details > summary::marker { + display: none !important; +} + +.tasks-settings details > summary > .collapser { + position: absolute; + top: 50%; + right: 8px; + transform: translateY(-50%); + content: ""; +} + +.tasks-settings details > summary > .collapser > .handle { + transform: rotate(0deg); + transition: transform 0.25s; + background-color: currentColor; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: var(--tasks-details-icon); + mask-image: var(--tasks-details-icon); + width: 20px; + height: 20px; +} + +.tasks-settings details[open] > summary > .collapser > .handle { + transform: rotate(90deg); +} + +.tasks-nested-settings .setting-item { + border: 0px; + padding-bottom: 0; +} +.tasks-nested-settings { + padding-bottom: 18px; +} +.tasks-nested-settings[open] .setting-item-heading, +.tasks-nested-settings:not(details) .setting-item-heading { + border-top: 0px; + border-bottom: 1px solid var(--background-modifier-border); +} + +.tasks-settings .row-for-status { + margin-top: 0px; + margin-bottom: 0px; +} diff --git a/.obsidian/plugins/update-time-on-edit/data.json b/.obsidian/plugins/update-time-on-edit/data.json index 8ae4fd0..db449a7 100644 --- a/.obsidian/plugins/update-time-on-edit/data.json +++ b/.obsidian/plugins/update-time-on-edit/data.json @@ -17,7 +17,7 @@ "templates/base-note.md": "23eff811614efdfb18252c14d7d548b50a707dcfda5f4bf6e0259020f1eeb80a", "notes/testo.md": "24df1da31f19afae3f434032b447e804a8bcbdeeb1b270c6d04f28bfba5583fb", "notes/North Start.md": "662704939ce34782d6578cd8d91d5d7d738de19ce5eb34196f71733744bc1286", - "README.md": "bf94212604234d2f47d6bfd337c42876da63945ab9bede0e15d51827fe72feda", + "README.md": "a6a254c8e6a7d09434ac79e2682b2aca0614d7dbd45dc7bcea103d6f92968c0a", "notes/Devlog.md": "8796c41169b072acea9ef97211e294ba7b464ccffabc1259c7763440fea7a63e", "01. Projects/Obtener pasaporte/Obtener pasaporte.md": "f3c1769ca0f40f87c41954c48b4cc791cf77dc22422e15a7005a880d9b030de9", "02. Areas/Dotfiles/dotfiles tasks.md": "85c72a54844c201397a839d9394aa74896f3e76c2127b2325ce2e480a1fa15f9", @@ -63,7 +63,8 @@ "03. Resources/Notetaking/Project checklists.md": "bfe20c25bfdd6d89340744ab5d9cfa534d053489c2ea9f8406f8a7020fe2ec04", "03. Resources/Notetaking/Periodic reviews.md": "e680d48c5dfc3462af744c288e874f8823a6a67f880a001a9764e49263863f13", "03. Resources/Notetaking/tags.md": "54a539795c0386ec0af9906428a5e08a0d6ce5cd726956f126cb71d791681862", - "01. Projects/Setup Obsidian/Objective.md": "f19f3261a64244ef8a42a9be5d7997fd6855ddabac5559110d0be9beb201c103", - "01. Projects/Setup Obsidian/README.md": "c247c3acb778941931236e65616c85d43bf0c35813ebf134b2fb12aba263fb0a" + "01. Projects/Setup Obsidian/Objective.md": "9fde8bbc47587e36690dbf3a2c61e1c405224728663bb0400d2c89ab6646e197", + "01. Projects/Setup Obsidian/Foo.md": "91a207af114d10d6808497e9ba4560f29cab32a51522e8a82d0adcd422d75b5d", + "01. Projects/Setup Obsidian/README.md": "2c26f08dd2263d99607776d2fb475acfe196453500867d77bb823c5c82d358b5" } } \ No newline at end of file diff --git a/.obsidian/workspaces.json b/.obsidian/workspaces.json index de638b2..10acf93 100644 --- a/.obsidian/workspaces.json +++ b/.obsidian/workspaces.json @@ -159,7 +159,270 @@ } }, "active": "cc8b90c9f364aa3f" + }, + "Main": { + "main": { + "id": "562d7786e8852d38", + "type": "split", + "children": [ + { + "id": "83977cefc15dbda1", + "type": "tabs", + "children": [ + { + "id": "2cae58852e5508a1", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "01. Projects/Setup Obsidian/README.md", + "mode": "source", + "source": false + } + } + }, + { + "id": "967df78c523d8e42", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "templates/Project Readme.md", + "mode": "source", + "source": false + } + } + }, + { + "id": "f4c515e1853e92c1", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "03. Resources/Notetaking/CODE Method.md", + "mode": "source", + "source": false + } + } + } + ], + "currentTab": 2 + } + ], + "direction": "vertical" + }, + "left": { + "id": "329187d0b724eea8", + "type": "split", + "children": [ + { + "id": "52f737f07314ccc6", + "type": "tabs", + "children": [ + { + "id": "8d7dca2686874e38", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical" + } + } + }, + { + "id": "b8151ae49b872165", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {} + } + }, + { + "id": "7554409ced8a27ba", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "tag:#quote", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + } + } + }, + { + "id": "e1cc054d09ed6ded", + "type": "leaf", + "state": { + "type": "git-view", + "state": {} + } + } + ] + }, + { + "id": "cce37a107233693d", + "type": "tabs", + "children": [ + { + "id": "b51035fd488f06cb", + "type": "leaf", + "state": { + "type": "calendar", + "state": {} + } + } + ] + } + ], + "direction": "horizontal", + "width": 341 + }, + "right": { + "id": "fca86750b2867923", + "type": "split", + "children": [ + { + "id": "b2aeb0b1779bc56d", + "type": "tabs", + "children": [ + { + "id": "2317e23d35b58541", + "type": "leaf", + "state": { + "type": "file-properties", + "state": { + "file": "03. Resources/Notetaking/CODE Method.md" + } + } + }, + { + "id": "9b65a6cf59dadc4f", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "file": "03. Resources/Notetaking/CODE Method.md" + } + } + }, + { + "id": "15148a0310063e2c", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "file": "03. Resources/Notetaking/CODE Method.md", + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + } + } + }, + { + "id": "2bd2d7df7b2e0f88", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "file": "03. Resources/Notetaking/CODE Method.md", + "linksCollapsed": false, + "unlinkedCollapsed": true + } + } + }, + { + "id": "7ca7ab454aba7be1", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true + } + } + }, + { + "id": "5200eab2bb1c942e", + "type": "leaf", + "state": { + "type": "all-properties", + "state": { + "sortOrder": "frequency", + "showSearch": false, + "searchQuery": "" + } + } + } + ] + }, + { + "id": "659b2005e093e0fe", + "type": "tabs", + "children": [ + { + "id": "85da40ededf1ce00", + "type": "leaf", + "state": { + "type": "localgraph", + "state": { + "file": "03. Resources/Notetaking/CODE Method.md", + "options": { + "collapse-filter": false, + "search": "", + "localJumps": 1, + "localBacklinks": true, + "localForelinks": true, + "localInterlinks": true, + "showTags": true, + "showAttachments": true, + "hideUnresolved": false, + "collapse-color-groups": true, + "colorGroups": [], + "collapse-display": true, + "showArrow": true, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": true, + "centerStrength": 0.518713248970312, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 250, + "scale": 0.6315822359175218, + "close": true + } + } + } + } + ] + } + ], + "direction": "horizontal", + "width": 423 + }, + "left-ribbon": { + "hiddenItems": { + "daily-notes:Open today's daily note": false, + "switcher:Open quick switcher": false, + "graph:Open graph view": false, + "templates:Insert template": false, + "command-palette:Open command palette": true, + "workspaces:Manage workspace layouts": false, + "obsidian-excalidraw-plugin:Create new drawing": false, + "obsidian-omnivore:Omnivore": false, + "templater-obsidian:Templater": false, + "periodic-notes:Open today": false + } + }, + "active": "8d7dca2686874e38" } }, - "active": "Quests" + "active": "Main" } \ No newline at end of file diff --git a/01. Projects/Setup Obsidian/Foo.md b/01. Projects/Setup Obsidian/Foo.md new file mode 100644 index 0000000..b5dc8b4 --- /dev/null +++ b/01. Projects/Setup Obsidian/Foo.md @@ -0,0 +1,6 @@ +--- +created: 2024-02-23 12:46 +updated: 2024-02-23 13:26 +--- +- [ ] another tasks +- [x] asd ✅ 2024-02-23 \ No newline at end of file diff --git a/01. Projects/Setup Obsidian/Objective.md b/01. Projects/Setup Obsidian/Objective.md index 88c6abf..063d641 100644 --- a/01. Projects/Setup Obsidian/Objective.md +++ b/01. Projects/Setup Obsidian/Objective.md @@ -1,19 +1,19 @@ --- created: 2024-02-22 11:56 -updated: 2024-02-22 12:45 +updated: 2024-02-23 13:28 --- -- Necesito una plantilla de _project kickoff_ +- [x] Necesito una plantilla de _project kickoff_ ✅ 2024-02-23 - Debe tener un link a la entrada de project checklist kickoff --- -- Necesito una plantilla de _project completion +- [x] Necesito una plantilla de _project completion ✅ 2024-02-23 - Debe tener un link a la entrada de project checklist completion --- -- File structure +- [ ] File structure - Revisar el template de [LifeOs](https://obsidian-life-os.netlify.app/) - auto crear kickoff and completion files?? - Templater?? @@ -21,27 +21,30 @@ updated: 2024-02-22 12:45 --- -- Debo buscar la manera de integrar periodic reviews - - Plantilla de daily review - - Plantilla de weekly review - - Plantilla de monthly review +- [ ] Debo buscar la manera de integrar periodic reviews + - [ ] Plantilla de daily review + - [ ] Plantilla de weekly review + - [ ] Plantilla de monthly review --- -- Cómo integrar tasks dentro de obsidian?? +- [x] Cómo integrar tasks dentro de obsidian?? ✅ 2024-02-23 - Revisar de nuevo alternativas - obsidian tasks - obsidian kanban - Todoist - Vikanja - Googlear "best task manager for obsidian" - - Revisar obsidian linter, de que me sirve?? + - [ ] Revisar obsidian linter, de que me sirve?? --- -- Index file for folders +- [x] Index file for folders ✅ 2024-02-23 - Need template --- + +- [ ] Crear README de Areas +- [ ] Crear README de Resources \ No newline at end of file diff --git a/01. Projects/Setup Obsidian/README.md b/01. Projects/Setup Obsidian/README.md index 16e3243..ab88a6f 100644 --- a/01. Projects/Setup Obsidian/README.md +++ b/01. Projects/Setup Obsidian/README.md @@ -1,10 +1,19 @@ --- -created: 2024-02-22 13:22 -updated: 2024-02-22 13:22 +created: 2024-02-23 12:48 +updated: 2024-02-23 13:27 status: Backlog --- # Setup Obsidian +## Tasks +```tasks +path includes 01. Projects/Setup Obsidian +group by filename +sort by urgency +sort by status +hide backlink +``` + ## Resources - Item diff --git a/README.md b/README.md index 0b86b89..0c4200e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,16 @@ --- created: 2024-02-20 12:23 -updated: 2024-02-20 12:23 +updated: 2024-02-23 13:20 --- # docs -Markdown files for general purpose \ No newline at end of file +Markdown files for general purpose + +## Tasks +```tasks +not done +path does not include 99. Archives +group by function task.file.folder.split('/').at(0) +group by function task.file.folder.split('/').at(1) +sort by urgency +``` diff --git a/templates/Project Readme.md b/templates/Project Readme.md index 0b3349e..21fef50 100644 --- a/templates/Project Readme.md +++ b/templates/Project Readme.md @@ -5,6 +5,15 @@ status: Backlog --- # <% tp.file.folder() %> <% await tp.file.rename("README") %> +## Tasks + +```tasks +path includes <% tp.file.folder(true) %> +group by filename +sort by urgency +hide backlink +``` + ## Resources - Item