Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .generated/content.json

Large diffs are not rendered by default.

17 changes: 0 additions & 17 deletions app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -979,23 +979,6 @@ video {
background: var(--color-surface-subtle);
}

.app-walkthrough figcaption {
margin-top: 0.65rem;
color: var(--color-text-soft);
font-size: 0.875rem;
line-height: 1.5;
}

.walkthrough-transcript summary {
padding: 0.65rem 0;
font-weight: 700;
cursor: pointer;
}

.walkthrough-transcript[open] summary {
margin-bottom: 1rem;
}

.media-frame {
position: relative;
width: 100%;
Expand Down
77 changes: 3 additions & 74 deletions content/app/connect-mdbase.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Connect TaskNotes to mdbase
description: Watch how to connect hosted mdbase collections and existing local folders to the TaskNotes app, with written steps and a transcript.
description: Connect a hosted mdbase collection or an existing folder on your computer.
route: /app/connect-mdbase/
product: app
platforms: [web, android, ios]
Expand All @@ -9,25 +9,13 @@ platforms: [web, android, ios]
# Connect TaskNotes to mdbase

<figure class="app-walkthrough">
<video controls playsinline preload="none" width="1440" height="960" poster="/assets/app/connect-mdbase/poster.png" aria-label="Connect TaskNotes to mdbase: hosted collections and existing local folders" aria-describedby="walkthrough-description">
<video controls playsinline preload="none" width="1440" height="960" poster="/assets/app/connect-mdbase/poster.png" aria-label="Connect TaskNotes to mdbase: hosted collections and existing local folders">
<source src="/assets/app/connect-mdbase/walkthrough.mp4" type="video/mp4">
<track src="/assets/app/connect-mdbase/captions.en.vtt" kind="captions" srclang="en" label="English">
<p>Your browser cannot play this video. <a href="/assets/app/connect-mdbase/walkthrough.mp4">Download the MP4</a> or read the written steps and transcript below.</p>
<p>Your browser cannot play this video. <a href="/assets/app/connect-mdbase/walkthrough.mp4">Download the MP4</a> or read the written steps below.</p>
</video>
<figcaption id="walkthrough-description">3 minutes 53 seconds · Silent walkthrough with on-screen instructions and visible cursors. Use the player’s fullscreen control for a closer view.</figcaption>
</figure>

<a href="/assets/app/connect-mdbase/walkthrough.mp4" download>Download the video</a>
· [Read the transcript](#transcript)

These instructions are for the web, Android, and iOS app, not the
[Obsidian plugin](/obsidian/).

The recording uses disposable demo data in the LAB test environment. Account
sign-in and OS-specific installer dialogs are omitted. The folder chooser and
Markdown editor shown are Linux examples; the connection steps apply across
platforms. TaskNotes is in beta, so some labels may change.

## Choose where your collection lives

- **Hosted by mdbase:** available online even when your computer is off. You
Expand Down Expand Up @@ -89,62 +77,3 @@ be reached.
Open **Settings → Change collection** and select a collection you have already
approved. **Connect another collection** returns to mdbase to approve access
to another one. Switching collections does not copy or move their records.

## Transcript

<details class="walkthrough-transcript">
<summary>Read the full video transcript</summary>

**00:00** — This video shows how to connect mdbase collections to the TaskNotes app. We’ll start with a hosted collection, then connect an existing folder on your computer.

**00:08** — Hosted by mdbase: available online, even when your computer is off. No desktop Connector needed for TaskNotes.

**00:14** — Hosted collections can also be mirrored to your computer, so you can work with local Markdown files.

**00:21** — On your computer: files stay in an existing folder. Keep mdbase Connect running and the computer reachable. The same TaskNotes app works with either.

**00:29** — Start with hosted: open app.tasknotes.dev and choose a collection.

**00:37** — Select a collection labelled Hosted by mdbase, then review access.

**00:50** — Review the permissions, then approve access if you agree.

**01:00** — Add a task. It is saved in your hosted collection; no local computer is needed.

**01:14** — Already have an mdbase collection on your computer? Connect that folder to TaskNotes without moving its files.

**01:22** — For a local folder, first get the desktop app at mdbase.dev/downloads.

**01:35** — Install and open mdbase Connect.

**01:39** — Name this computer, then choose Continue in browser.

**01:49** — Sign in if asked, then approve this computer.

**02:00** — In Collections, choose Add existing and select your collection folder.

**02:09** — Choose the folder containing mdbase.yaml. Its files stay where they are.

**02:15** — Back in TaskNotes, open the mdbase collection chooser.

**02:21** — Select the collection listed under your connected computer.

**02:35** — Review the requested access and setup changes, then approve if you agree.

**02:44** — Add a task to the local collection.

**02:59** — Each task is a Markdown file. Changes you make in TaskNotes are saved back to the collection.

**03:06** — The task is now a Markdown file in your existing folder.

**03:11** — Keep mdbase Connect running while other devices use this folder.

**03:15** — Once both are connected, switch collections in Settings → Change collection.

**03:24** — Choose a collection you have already approved.

**03:37** — In the local collection, complete the task.

**03:46** — The same Markdown file now says status: done.

</details>
2 changes: 1 addition & 1 deletion content/app/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ computer. Read [What is mdbase?](/app/mdbase/) if this is new to you, then
[Choose a collection](/app/collections/) to compare the two options.

Follow [Connect TaskNotes to mdbase](/app/connect-mdbase/) for a short video,
written steps, and a transcript covering hosted collections first, then
written steps covering hosted collections first, then
existing local folders.

## 3. Create a task
Expand Down
2 changes: 1 addition & 1 deletion content/app/mdbase.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ saving changes require a connection.

[Choose a collection](/app/collections/) compares the TaskNotes behavior of
these options in more detail. [Connect TaskNotes to mdbase](/app/connect-mdbase/)
shows both connection flows in a short video, with written steps and a transcript.
shows both connection flows in a short video, with written steps.

## Use a collection on your computer

Expand Down
79 changes: 4 additions & 75 deletions public/llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -150,25 +150,13 @@ Source: https://tasknotes.dev/app/connect-mdbase/
# Connect TaskNotes to mdbase

<figure class="app-walkthrough">
<video controls playsinline preload="none" width="1440" height="960" poster="/assets/app/connect-mdbase/poster.png" aria-label="Connect TaskNotes to mdbase: hosted collections and existing local folders" aria-describedby="walkthrough-description">
<video controls playsinline preload="none" width="1440" height="960" poster="/assets/app/connect-mdbase/poster.png" aria-label="Connect TaskNotes to mdbase: hosted collections and existing local folders">
<source src="/assets/app/connect-mdbase/walkthrough.mp4" type="video/mp4">
<track src="/assets/app/connect-mdbase/captions.en.vtt" kind="captions" srclang="en" label="English">
<p>Your browser cannot play this video. <a href="/assets/app/connect-mdbase/walkthrough.mp4">Download the MP4</a> or read the written steps and transcript below.</p>
<p>Your browser cannot play this video. <a href="/assets/app/connect-mdbase/walkthrough.mp4">Download the MP4</a> or read the written steps below.</p>
</video>
<figcaption id="walkthrough-description">3 minutes 53 seconds · Silent walkthrough with on-screen instructions and visible cursors. Use the player’s fullscreen control for a closer view.</figcaption>
</figure>

<a href="/assets/app/connect-mdbase/walkthrough.mp4" download>Download the video</a>
· [Read the transcript](#transcript)

These instructions are for the web, Android, and iOS app, not the
[Obsidian plugin](/obsidian/).

The recording uses disposable demo data in the LAB test environment. Account
sign-in and OS-specific installer dialogs are omitted. The folder chooser and
Markdown editor shown are Linux examples; the connection steps apply across
platforms. TaskNotes is in beta, so some labels may change.

## Choose where your collection lives

- **Hosted by mdbase:** available online even when your computer is off. You
Expand Down Expand Up @@ -231,65 +219,6 @@ Open **Settings → Change collection** and select a collection you have already
approved. **Connect another collection** returns to mdbase to approve access
to another one. Switching collections does not copy or move their records.

## Transcript

<details class="walkthrough-transcript">
<summary>Read the full video transcript</summary>

**00:00** — This video shows how to connect mdbase collections to the TaskNotes app. We’ll start with a hosted collection, then connect an existing folder on your computer.

**00:08** — Hosted by mdbase: available online, even when your computer is off. No desktop Connector needed for TaskNotes.

**00:14** — Hosted collections can also be mirrored to your computer, so you can work with local Markdown files.

**00:21** — On your computer: files stay in an existing folder. Keep mdbase Connect running and the computer reachable. The same TaskNotes app works with either.

**00:29** — Start with hosted: open app.tasknotes.dev and choose a collection.

**00:37** — Select a collection labelled Hosted by mdbase, then review access.

**00:50** — Review the permissions, then approve access if you agree.

**01:00** — Add a task. It is saved in your hosted collection; no local computer is needed.

**01:14** — Already have an mdbase collection on your computer? Connect that folder to TaskNotes without moving its files.

**01:22** — For a local folder, first get the desktop app at mdbase.dev/downloads.

**01:35** — Install and open mdbase Connect.

**01:39** — Name this computer, then choose Continue in browser.

**01:49** — Sign in if asked, then approve this computer.

**02:00** — In Collections, choose Add existing and select your collection folder.

**02:09** — Choose the folder containing mdbase.yaml. Its files stay where they are.

**02:15** — Back in TaskNotes, open the mdbase collection chooser.

**02:21** — Select the collection listed under your connected computer.

**02:35** — Review the requested access and setup changes, then approve if you agree.

**02:44** — Add a task to the local collection.

**02:59** — Each task is a Markdown file. Changes you make in TaskNotes are saved back to the collection.

**03:06** — The task is now a Markdown file in your existing folder.

**03:11** — Keep mdbase Connect running while other devices use this folder.

**03:15** — Once both are connected, switch collections in Settings → Change collection.

**03:24** — Choose a collection you have already approved.

**03:37** — In the local collection, complete the task.

**03:46** — The same Markdown file now says status: done.

</details>

---

# Connection and availability
Expand Down Expand Up @@ -377,7 +306,7 @@ computer. Read [What is mdbase?](/app/mdbase/) if this is new to you, then
[Choose a collection](/app/collections/) to compare the two options.

Follow [Connect TaskNotes to mdbase](/app/connect-mdbase/) for a short video,
written steps, and a transcript covering hosted collections first, then
written steps covering hosted collections first, then
existing local folders.

## 3. Create a task
Expand Down Expand Up @@ -450,7 +379,7 @@ saving changes require a connection.

[Choose a collection](/app/collections/) compares the TaskNotes behavior of
these options in more detail. [Connect TaskNotes to mdbase](/app/connect-mdbase/)
shows both connection flows in a short video, with written steps and a transcript.
shows both connection flows in a short video, with written steps.

## Use a collection on your computer

Expand Down
2 changes: 1 addition & 1 deletion public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
- [TaskNotes documentation](https://tasknotes.dev/): Guides and reference material for the TaskNotes app, the Obsidian plugin, and the portable task format they share.
- [TaskNotes app](https://tasknotes.dev/app/): Use TaskNotes on the web, Android, and iOS with portable Markdown through mdbase.
- [Choose a collection](https://tasknotes.dev/app/collections/): Compare hosted mdbase with a collection connected from your own computer.
- [Connect TaskNotes to mdbase](https://tasknotes.dev/app/connect-mdbase/): Watch how to connect hosted mdbase collections and existing local folders to the TaskNotes app, with written steps and a transcript.
- [Connect TaskNotes to mdbase](https://tasknotes.dev/app/connect-mdbase/): Connect a hosted mdbase collection or an existing folder on your computer.
- [Connection and availability](https://tasknotes.dev/app/connection/): Understand when TaskNotes can reach hosted and computer-connected mdbase collections.
- [Interactive demo](https://tasknotes.dev/app/demo/): Explore the TaskNotes app with disposable sample tasks before connecting a collection.
- [Get started with the TaskNotes app](https://tasknotes.dev/app/getting-started/): Open TaskNotes, connect an mdbase collection, create a task, and find your way around the app.
Expand Down
2 changes: 1 addition & 1 deletion public/search-index.json

Large diffs are not rendered by default.

11 changes: 4 additions & 7 deletions tests/connect-walkthrough.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,13 @@ test("publishes the approved walkthrough and its assets without changing them",
}
});

test("the authored transcript includes every timed instruction", async () => {
test("the walkthrough retains valid timed captions without a transcript", async () => {
assert.equal(page?.source, "tasknotes.dev:content/app/connect-mdbase.md");
assert.equal(page?.product, "app");
const vtt = await readFile(new URL(`public/${media}captions.en.vtt`, root), "utf8");
assert.ok(vtt.startsWith("WEBVTT\n"));
const cues = vtt.trim().split(/\n\n+/).slice(1);
const transcript = page.raw.split("## Transcript")[1];
assert.ok(transcript);
assert.doesNotMatch(page.raw, /transcript|walkthrough-description|<figcaption/i);
const seconds = (value) => {
const [hours, minutes, seconds] = value.split(":").map(Number);
return hours * 3600 + minutes * 60 + seconds;
Expand All @@ -45,14 +44,12 @@ test("the authored transcript includes every timed instruction", async () => {
const start = seconds(match[1]);
const end = seconds(match[2]);
assert.ok(start >= previousEnd && end > start && end <= videoDuration + 0.01);
assert.ok(transcript.includes(lines.join(" ")), lines.join(" "));
const timestamp = match[1].slice(3, 8);
assert.ok(transcript.includes(`**${timestamp}**`), timestamp);
assert.ok(lines.join(" ").trim(), "each caption has text");
previousEnd = end;
}
assert.equal(cues.length, 26);
assert.match(page.raw, /Hosted collections can also be mirrored/);
assert.match(page.raw, /OS-specific installer dialogs are omitted/);
assert.doesNotMatch(page.raw, /disposable demo data|OS-specific installer dialogs|Download the video/);
});

test("the app entry points and navigation link to the walkthrough", () => {
Expand Down
11 changes: 5 additions & 6 deletions tests/rendered-html.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ test("renders the interactive app demo immediately with minimal chrome", async (
assert.doesNotMatch(html, /aria-label="Documentation"/);
});

test("renders the connection walkthrough with an opt-in local video and transcript", async () => {
test("renders the connection walkthrough with an opt-in local video and minimal copy", async () => {
const response = await render("/app/connect-mdbase/");
const html = await response.text();
const video = html.match(/<video\b[^>]*>/)?.[0];
Expand All @@ -67,17 +67,16 @@ test("renders the connection walkthrough with an opt-in local video and transcri
assert.match(video, /\bplaysinline\b/);
assert.match(video, /preload="none"/);
assert.match(video, /poster="\/assets\/app\/connect-mdbase\/poster\.png"/);
assert.match(video, /aria-describedby="walkthrough-description"/);
assert.match(video, /aria-label="Connect TaskNotes to mdbase/);
assert.doesNotMatch(video, /\b(?:autoplay|loop)\b/);
assert.match(html, /<source src="\/assets\/app\/connect-mdbase\/walkthrough\.mp4" type="video\/mp4"/);
assert.match(html, /<track[^>]*kind="captions"[^>]*srclang="en"/);
assert.match(html, /href="\/assets\/app\/connect-mdbase\/walkthrough\.mp4" download/);
assert.match(html, /href="\/assets\/app\/connect-mdbase\/walkthrough\.mp4"/);
assert.doesNotMatch(html, /walkthrough\.mp4\//);
assert.match(html, /<details class="walkthrough-transcript">/);
assert.match(html, /<strong>00:00<\/strong>/);
assert.doesNotMatch(html, /walkthrough-transcript|Read the transcript|3 minutes 53 seconds/);
assert.match(html, /<h2 id="connect-a-hosted-collection"/);
assert.match(html, /<h2 id="connect-an-existing-local-folder"/);
assert.match(html, /OS-specific installer dialogs are omitted/);
assert.doesNotMatch(html, /OS-specific installer dialogs are omitted|disposable demo data/);
assert.doesNotMatch(html, /tasknotes-mdbase-video\.pages\.dev|<iframe/);
});

Expand Down
Loading