···55 "kind": "prelude",
66 "category": "Playback",
77 "featured": true,
88- "desc": "Automatically put tracks into the queue. **Always on.**"
88+ "desc": "Automatically put tracks into the queue. **Always on.** These tracks will always be located after the ones you've added manually."
99 },
1010 {
1111 "url": "facets/playback/auto-queue/index.html",
···11+import deepDiff from "@fry69/deep-diff";
22+13import { BroadcastableDiffuseElement, query } from "~/common/element.js";
24import { groupTracksPerScheme } from "~/common/utils.js";
35import { signal } from "~/common/signal.js";
···7476 record[scheme] = sources;
7577 });
76787777- this.#sources.value = record;
7979+ if (deepDiff(this.#sources.value, record)) {
8080+ this.#sources.value = record;
8181+ }
7882 });
7983 }
8084}
+1-2
src/facets/connect/index.inline.js
···4949 <div class="card-body">
5050 <p>
5151 These are some of the options available to add as an audio source, or to
5252- use as user-data storage. Some offer both, the remainder offers only one
5353- or the other.
5252+ use as user-data storage. Some offer both.
5453 </p>
5554 <wa-divider></wa-divider>
5655 <ul class="connect-list">
···8899<div class="columns">
1010 <section>
1111- <h3>Tutorial</h3>
1212-1313- <p>
1414- <strong>Diffuse is not your typical streaming service, we have to add sources of audio so we have stuff to play.</strong> This button below adds some demo content, so you can experiment with the software right away.
1515- </p>
1111+ <h3>Concept</h3>
16121713 <p>
1818- <button id="add-sample-content">
1919- <span>Add sample content</span>
2020- </button>
1414+ Diffuse is unlike traditional software; instead of combining several features into a single user interface and producing data output, we do the opposite, we start with the data and work our way up from there.
2115 </p>
22162317 <p>
2424- Now we should explore what is possible with our audio. Because Diffuse is cooperative and malleable software, our interface can look like anything, and we can pick the features we like. That might sound overwhelming, so let's keep it simple for now.
1818+ <strong>It provides every user the ability to choose which features and interfaces they want to layer on top of their data.</strong>
2519 </p>
26202721 <p>
2828- <strong>Let's pick an interface</strong> that automatically puts audio from our collection into the queue, and another to play what got put into the queue.
2222+ These features and interfaces are housed into units that we call "facets". They consist of <a href="elements/">Diffuse elements</a> that are connected, they broadcast their state and the parts of your data that have been updated.
2923 </p>
30243125 <p>
3232- <span class="button-row">
3333- <a class="button button--bg-twist-2" href="{{ ('facets/playback/auto-queue/index.html') |> facetLoaderURL }}" target="_blank">
3434- <span class="with-icon">
3535- <i class="ph-fill ph-number-circle-one"></i>
3636- Fill up queue
3737- </span>
3838- </a>
3939- <a class="button button--bg-twist-2" href="{{ ('themes/blur/artwork-controller/facet/index.html') |> facetLoaderURL }}" target="_blank">
4040- <span class="with-icon">
4141- <i class="ph-fill ph-number-circle-two"></i>
4242- Play audio
4343- </span>
4444- </a>
4545- </span>
2626+ Finally, facets are just regular web pages so they can live wherever. We save them to the user-data storage that's configured and give the user the option to share it. This means that you can load features and interfaces from other people, <strong>building software cooperatively</strong>.
4627 </p>
2828+ </section>
47294848- <p>
4949- <em>So you said I could pick the features and interfaces that I liked, how does that work?</em>
5050- </p>
3030+ <section>
3131+ <h3>Getting started</h3>
51325252- <p>
5353- To do that, we have to look at the other pages shown in the navigation here, such as the <a href="featured/">featured page</a>. There you'll be able to browse through all the features and interfaces that are provided by Diffuse.
5454- </p>
3333+ <ul style="display: flex; flex-direction: column; gap: var(--space-sm); padding-left: 0">
3434+ <!-- 1 -->
3535+ <li class="with-icon" style="gap: var(--space-xs)">
3636+ <i class="ph-fill ph-file-audio"></i>
3737+ <span>Add audio files or streams. The <a href="{{ ('facets/data/connect/index.html') |> facetLoaderURL }}">connect</a> interfaces can be used for this, or use the demo from the tutorial below.</span>
3838+ </li>
55395656- <p>
5757- <strong>To use a feature, you click the toggle to enable it</strong>, this will add it to your software. Interfaces can be added too, but it's not required, you can try them out right away by clicking the link in their title. For interfaces that are more like traditional web applications, delivering more encompassing experiences, look at <a href="themes/">themes</a>.
5858- </p>
4040+ <!-- 2 -->
4141+ <li class="with-icon" style="gap: var(--space-xs)">
4242+ <i class="ph-fill ph-gear-six"></i>
4343+ <span>Wait until the processing of audio sources into tracks is completed.</span>
4444+ </li>
59456060- <p>
6161- TODO: explain adding your own inputs, syncing user data, etc.
6262- </p>
4646+ <!-- 3 -->
4747+ <li class="with-icon" style="gap: var(--space-xs)">
4848+ <i class="ph-fill ph-paint-brush"></i>
4949+ <span>Explore the interfaces that can be used.</span>
5050+ </li>
5151+ </ul>
6352 </section>
5353+</div>
64546565- <section>
6666- <h3>Concept</h3>
5555+<section>
5656+ <h3>Tutorial</h3>
67576868- <p>
6969- Diffuse is unlike traditional software; instead of combining several features into a single user interface and producing data output, we do the opposite, we start with the data and work our way up from there.
7070- </p>
5858+ <p>
5959+ <strong>Diffuse is not your typical streaming service, we have to add sources of audio so we have stuff to play.</strong> This button below adds some demo content, so you can experiment with the software right away.
6060+ </p>
71617272- <p>
7373- <strong>It provides every user the ability to choose which features and interfaces they want to layer on top of their data.</strong>
7474- </p>
6262+ <p>
6363+ <button id="add-sample-content">
6464+ <span>Add sample content</span>
6565+ </button>
6666+ </p>
75677676- <p>
7777- These features and interfaces are housed into units that we call "facets". They consist of <a href="elements/">Diffuse elements</a> that are connected, they broadcast their state and your data that has been updated.
7878- </p>
6868+ <p>
6969+ Now we should explore what is possible with our audio. Because Diffuse is cooperative and malleable software, our interface can look like anything, and we can pick the features we like. That might sound overwhelming, so let's keep it simple for now.
7070+ </p>
79718080- <p>
8181- Finally, facets are just regular web pages so they can live wherever. We save them to the user-data storage that's configured and give the user the option to share it. This means that you can load features and interfaces from other people, <strong>building software cooperatively</strong>.
8282- </p>
8383- </section>
8484-</div>
7272+ <p>
7373+ <strong>Let's pick an interface</strong> that automatically puts audio from our collection into the queue, and another to play what got put into the queue.
7474+ </p>
7575+7676+ <p>
7777+ <span class="button-row">
7878+ <a class="button button--bg-twist-2" href="{{ ('facets/playback/auto-queue/index.html') |> facetLoaderURL }}" target="_blank">
7979+ <span class="with-icon">
8080+ <i class="ph-fill ph-number-circle-one"></i>
8181+ Fill up queue
8282+ </span>
8383+ </a>
8484+ <a class="button button--bg-twist-2" href="{{ ('themes/blur/artwork-controller/facet/index.html') |> facetLoaderURL }}" target="_blank">
8585+ <span class="with-icon">
8686+ <i class="ph-fill ph-number-circle-two"></i>
8787+ Play audio
8888+ </span>
8989+ </a>
9090+ </span>
9191+ </p>
9292+9393+ <p>
9494+ <em>So you said I could pick the features and interfaces that I liked, how does that work?</em>
9595+ </p>
9696+9797+ <p>
9898+ To do that, we have to look at the other pages shown in the navigation here, such as the <a href="featured/">featured page</a>. There you'll be able to browse through all the features and interfaces that are provided by Diffuse.
9999+ </p>
100100+101101+ <p>
102102+ <strong>To use a feature, you click the toggle to enable it</strong>, this will add it to your software. Interfaces can be added too, but it's not required, you can try them out right away by clicking the link in their title. For interfaces that are more like traditional web applications, delivering more encompassing experiences, look at <a href="themes/">themes</a>.
103103+ </p>
104104+105105+ <p>
106106+ TODO: explain adding your own inputs, syncing user data, etc.
107107+ </p>
108108+</section>