···11+<!-- AGENCY -->
22+<section>
33+ <h2 id="agency">Agency</h2>
44+55+ <p>
66+ The goal is for every user, no matter their knowledge level, to have agency over their data and their software. One can start with making small changes and gradually progress to making big changes.
77+ </p>
88+99+ <p>
1010+ You can store your user-data in various places, and easily export, import and sync it.
1111+ </p>
1212+1313+ <h3>Take control</h3>
1414+1515+ <ul class="columns">
1616+ <div class="element">
1717+ <!-- 1 -->
1818+ <li>
1919+ <p>
2020+ <i class="ph-fill ph-storefront"></i> <strong>Level 1</strong>: Pick your restaurant, food comes in all shapes and sizes. The equivalent of choosing a Diffuse <a href="themes/">theme</a>.
2121+ </p>
2222+ </li>
2323+ <!-- 2 -->
2424+ <li>
2525+ <p>
2626+ <i class="ph-fill ph-basket"></i> <strong>Level 2</strong>: Take out food from various places, eg. cheese shop + bakery. You choose how you combine the foods and from where you order them. That's <a href="facets/">facets</a>.
2727+ </p>
2828+ </li>
2929+ <!-- 3 -->
3030+ <li>
3131+ <p>
3232+ <i class="ph-fill ph-pepper"></i> <strong>Level 3</strong>: Now that you know which food is good and how to make combinations, you might make a slight customization, add a little something of your own (eg. add some spice). However, you're not quite confident enough which spice to pick, so you hire some help.
3333+ </p>
3434+ <p>
3535+ This can be done using the <a href="facets/#builder">facets builder</a> which allows you to build on top of a familiar preconfigured foundation and load custom facets. People might share their own, or maybe you use an LLM to generate something for you (eg. an album art gallery).
3636+ </p>
3737+ </li>
3838+ <!-- 4 -->
3939+ <li>
4040+ <p>
4141+ <i class="ph-fill ph-knife"></i> <strong>Level 4</strong>: You learned a bit from watching and talking to the help you hired, so you decide to take things in your own hands.
4242+ </p>
4343+ <p>
4444+ You continue to use the <a href="facets/#builder">facets builder</a> but learn a bit of <a href="https://htmlforpeople.com">HTML</a>, <a href="https://javascript.info">Javascript</a> and <a href="https://htmlforpeople.com/css-basics/">CSS</a>; so you're able to write your own facet.
4545+ </p>
4646+ </li>
4747+ </div>
4848+ <div class="element">
4949+ <!-- 5 -->
5050+ <li>
5151+ <p>
5252+ <i class="ph-fill ph-cooking-pot"></i> <strong>Level 5</strong>: At this point you're confident enough to make a meal from scratch. You can start very simple, eg. just throwing a steak in the pan with some butter and some salt to it. Then later add some baked potatoes and go from there.
5353+ </p>
5454+ <p>
5555+ A similar tool comes into play here, the <a href="themes/#builder">themes builder</a>. Same concept as the facets builder, but now you need to specify the foundation yourself. You can use the <a href="#elements">elements</a> listed below to do so. The code for these is available from this website or through the <a href="https://jsr.io/@toko/diffuse">Javascript package</a>.
5656+ </p>
5757+ </li>
5858+ <!-- 6 -->
5959+ <li>
6060+ <p>
6161+ <i class="ph-fill ph-storefront"></i> <strong>Level 6</strong>: You open your own restaurant.
6262+ </p>
6363+ <p>
6464+ You can host the theme you made on any web server, it's only HTML after all. Only difference is that you'll have to create the entire HTML tree, not just the body element, as is the case with the theme builder.
6565+ </p>
6666+ </li>
6767+ <!-- 7 -->
6868+ <li>
6969+ <p>
7070+ <i class="ph-fill ph-chef-hat"></i> <strong>Level 7</strong>: You got promoted to master chef. Time to open your own restaurant chain.
7171+ </p>
7272+ <p>
7373+ You can self-host Diffuse, it's <a href="https://tangled.org/tokono.ma/diffuse/blob/v4/">open-source</a>! Or you present your own collection of elements.
7474+ </p>
7575+ </li>
7676+ </div>
7777+ </ul>
7878+</section>
···4040 <p>
4141 <span>
4242 You haven't saved anything yet. Add a facet by browsing the <a
4343- href="facets/"
4343+ href="kitchen/"
4444 >featured ones</a> or any of the other categories. You can click the toggle
4545 to quickly add or remove from your collection. Alternatively, add one using
4646 an URI:
···287287 <a
288288 class="button button--transparent"
289289 title="Edit"
290290- href="facets/build/?id=${encodeURIComponent(c.id)}"
290290+ href="kitchen/build/?id=${encodeURIComponent(c.id)}"
291291 >
292292 <i class="ph-fill ph-code-block"></i>
293293 </a>
···193193 desc: >
194194 Used to track progress of (long) audio playback.
195195 todo: true
196196- - title: "Output / Theme"
197197- desc: >
198198- Theme pointer or HTML snippet.
199199- url: "definitions/output/theme.json"
200196 - title: "Output / Track"
201197 desc: >
202198 Represents audio that can be played, or a placeholder for a source of tracks. Contains a URI that will resolve to the audio.
···235231 Your audio<br />your data<br />your rules
236232 </p>
237233 <p>
238238- Diffuse is a collection of components and software that make it possible to listen to audio from various sources on your devices and the web, and to create the ideal digital audio listening experience for you.
234234+ Diffuse is cooperative and malleable software that makes it possible to listen to audio from various sources on your devices and the web, and to create the ideal digital audio listening experience for you.
239235 </p>
240236 <p style="align-items: center; display: flex; gap: var(--space-2xs); opacity: 0.55;">
241237 <i class="ph-fill ph-crane"></i>
···243239 </p>
244240 <ul class="table-of-contents">
245241 <li><a href="#usage">Usage</a></li>
246246- <li><a href="#themes">Themes</a></li>
247247- <li><a href="#facets">Facets</a></li>
248248- <li><a href="#agency">Agency</a></li>
249249- <li><a href="#elements">Elements</a></li>
242242+ <li><a href="#developers">Developers</a></li>
250243 <li><a href="#definitions">Definitions</a></li>
251244 <li><a href="#links">Links</a></li>
252245 </ul>
···264257 <div class="columns">
265258 <div class="element">
266259 <p>
267267- The easiest way to start is by exploring the software. If you prefer a traditional pre­packaged application approach, you can check out <a href="themes/">themes</a>. Themes can look and function entirely different from each other, so make sure to explore!
260260+ <strong style="color: var(--accent)">Diffuse is not exactly 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.
268261 </p>
269262270263 <p>
271271- Alternatively, there's <a href="facets/">facets</a> which allows you to use any component from any theme interchange­ably, among pieces that are not in themes; each in a separate browser tab. Each tab talks to each other, so you can for example browse audio in one tab and play it in another.
264264+ <button id="add-sample-content">
265265+ <span>Add sample content</span>
266266+ </button>
272267 </p>
273268 </div>
274269275270 <div class="element">
276271 <p>
277277- <strong style="color: var(--accent); font-weight: 700;">Diffuse is not your typical streaming service though, you have to add sources of audio.</strong> To start you can try out the demo by clicking the button below, or, go to a <a href="themes/">theme</a> or <a href="facets/">facet</a> that lets you add your audio input.
272272+ If you do already have a place where you keep your audio files and want to connect it first thing, browse through all the various services that can be connected to Diffuse.
278273 </p>
279274275275+ <p><em>Look for "Connect ..."</em></p>
276276+280277 <p>
281281- <button id="add-sample-content">
282282- <span>Add sample content</span>
283283- </button>
278278+ <a class="button" href="kitchen/data/" target="_blank">Discover integrations</a>
284279 </p>
285280 </div>
286281 </div>
287287- </section>
288282289289- <!-- THEMES & FACETS -->
290290- <div class="columns">
291291- <section>
292292- <h2 id="themes">Themes</h2>
293293-294294- <p>
295295- Themes each provide a traditional browser web application built on the Diffuse elements. They focus on delivering <strong>a great encompassing experience in a single window</strong>. They represent the opposite of facets, but can optionally delegate functionality to facets if they wish to do so.
296296- </p>
297297-298298- <p>
299299- <a class="button button--alt" href="themes/">Explore</a>
300300- </p>
301301- </section>
302302-303303- <section>
304304- <h2 id="facets">Facets</h2>
305305-306306- <p>
307307- Facets are various user interfaces, with their own logic, each loaded in their own web page. Every used Diffuse component is configured so that it operates in broadcast mode, making all the pages communicate with each other. <strong>You choose the features you want in your software.</strong>
308308- </p>
309309-310310- <p>
311311- <a class="button button--alt" href="facets/">Explore</a>
312312- </p>
313313- </section>
314314- </div>
283283+ <div class="columns" style="margin-top: var(--space-xl)">
284284+ <div class="element">
285285+ <p>
286286+ Great, one of the hardest parts is already done. 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.
287287+ </p>
288288+ </div>
315289316316- <!-- AGENCY -->
317317- <section>
318318- <h2 id="agency">Agency</h2>
290290+ <div class="element">
291291+ <p>
292292+ <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.
293293+ </p>
319294320320- <p>
321321- The goal is for every user, no matter their knowledge level, to have agency over their data and their software. One can start with making small changes and gradually progress to making big changes.
322322- </p>
295295+ <p>
296296+ <span class="button-row">
297297+ <a class="button button--bg-twist-2" href="{{ ('facets/playback/auto-queue/index.html') |> facetLoaderURL }}" target="_blank">
298298+ <span class="with-icon">
299299+ <i class="ph-fill ph-number-circle-one"></i>
300300+ Fill up queue
301301+ </span>
302302+ </a>
303303+ <a class="button button--bg-twist-2" href="{{ ('themes/blur/artwork-controller/facet/index.html') |> facetLoaderURL }}" target="_blank">
304304+ <span class="with-icon">
305305+ <i class="ph-fill ph-number-circle-two"></i>
306306+ Play audio
307307+ </span>
308308+ </a>
309309+ </span>
310310+ </p>
311311+ </div>
312312+ </div>
323313324324- <p>
325325- You can store your user-data in various places, and easily export, import and sync it.
326326- </p>
314314+ <div class="columns" style="margin-top: var(--space-xl)">
315315+ <div class="element">
316316+ <p>
317317+ <em>So you said I could pick the features and interfaces that I liked, how does that work?</em>
318318+ </p>
327319328328- <h3>Take control</h3>
320320+ <p>
321321+ To do that, we have to visit our <strong style="color: var(--accent-twist-4)">kitchen</strong>. There you'll be able to browse through all the features and interfaces that are provided by Diffuse. To use a feature, you click the toggle to enable it, 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.
322322+ </p>
329323330330- <ul class="columns">
331331- <div class="element">
332332- <!-- 1 -->
333333- <li>
334334- <p>
335335- <i class="ph-fill ph-storefront"></i> <strong>Level 1</strong>: Pick your restaurant, food comes in all shapes and sizes. The equivalent of choosing a Diffuse <a href="themes/">theme</a>.
336336- </p>
337337- </li>
338338- <!-- 2 -->
339339- <li>
340340- <p>
341341- <i class="ph-fill ph-basket"></i> <strong>Level 2</strong>: Take out food from various places, eg. cheese shop + bakery. You choose how you combine the foods and from where you order them. That's <a href="facets/">facets</a>.
342342- </p>
343343- </li>
344344- <!-- 3 -->
345345- <li>
346346- <p>
347347- <i class="ph-fill ph-pepper"></i> <strong>Level 3</strong>: Now that you know which food is good and how to make combinations, you might make a slight customization, add a little something of your own (eg. add some spice). However, you're not quite confident enough which spice to pick, so you hire some help.
348348- </p>
349349- <p>
350350- This can be done using the <a href="facets/#builder">facets builder</a> which allows you to build on top of a familiar preconfigured foundation and load custom facets. People might share their own, or maybe you use an LLM to generate something for you (eg. an album art gallery).
351351- </p>
352352- </li>
353353- <!-- 4 -->
354354- <li>
355355- <p>
356356- <i class="ph-fill ph-knife"></i> <strong>Level 4</strong>: You learned a bit from watching and talking to the help you hired, so you decide to take things in your own hands.
357357- </p>
358358- <p>
359359- You continue to use the <a href="facets/#builder">facets builder</a> but learn a bit of <a href="https://htmlforpeople.com">HTML</a>, <a href="https://javascript.info">Javascript</a> and <a href="https://htmlforpeople.com/css-basics/">CSS</a>; so you're able to write your own facet.
360360- </p>
361361- </li>
324324+ <p>
325325+ <a class="button button--bg-twist-4" href="kitchen/" target="_blank">Explore the kitchen</a>
326326+ </p>
362327 </div>
328328+363329 <div class="element">
364364- <!-- 5 -->
365365- <li>
366366- <p>
367367- <i class="ph-fill ph-cooking-pot"></i> <strong>Level 5</strong>: At this point you're confident enough to make a meal from scratch. You can start very simple, eg. just throwing a steak in the pan with some butter and some salt to it. Then later add some baked potatoes and go from there.
368368- </p>
369369- <p>
370370- A similar tool comes into play here, the <a href="themes/#builder">themes builder</a>. Same concept as the facets builder, but now you need to specify the foundation yourself. You can use the <a href="#elements">elements</a> listed below to do so. The code for these is available from this website or through the <a href="https://jsr.io/@toko/diffuse">Javascript package</a>.
371371- </p>
372372- </li>
373373- <!-- 6 -->
374374- <li>
375375- <p>
376376- <i class="ph-fill ph-storefront"></i> <strong>Level 6</strong>: You open your own restaurant.
377377- </p>
378378- <p>
379379- You can host the theme you made on any web server, it's only HTML after all. Only difference is that you'll have to create the entire HTML tree, not just the body element, as is the case with the theme builder.
380380- </p>
381381- </li>
382382- <!-- 7 -->
383383- <li>
384384- <p>
385385- <i class="ph-fill ph-chef-hat"></i> <strong>Level 7</strong>: You got promoted to master chef. Time to open your own restaurant chain.
386386- </p>
387387- <p>
388388- You can self-host Diffuse, it's <a href="https://tangled.org/tokono.ma/diffuse/blob/v4/">open-source</a>! Or you present your own collection of elements.
389389- </p>
390390- </li>
330330+ <p>
331331+ <em>What is a feature exactly?</em>
332332+ </p>
333333+334334+ <p>
335335+ A <strong style="color: var(--accent-twist-4)">feature</strong> is a piece of code that expands the capabilities of your software or that makes it behave in a certain kind of way. It runs each time you open an interface, but may not necessarily be activated.
336336+ </p>
391337 </div>
392392- </ul>
338338+ </div>
393339 </section>
394340395341 <!-- ELEMENTS -->
396342 <section>
397397- <h2 id="elements">Elements</h2>
343343+ <h2 id="developers">Developers</h2>
398344399345 <p>
400400- The (web) components of the system. These custom elements are then recombined into an entire music player and browser, or whatever you want to build.
346346+ If you're a programmer, you can use the (web) components of the system. These custom elements can be combined into an entire music player and browser, or whatever you want to build.
401347 </p>
402348403349 <p>
404404- Consume these using the facets <a href="facets/#builder">builder</a>, the Javascript <a href="https://jsr.io/@toko/diffuse">package</a>, or the linked Javascript files down below.
350350+ Consume these using the kitchen <a href="facets/#builder">build tool</a>, the Javascript <a href="https://jsr.io/@toko/diffuse">package</a>, or the linked Javascript files down below.
405351 </p>
406352407353 <div class="columns">