even more degithubbing
This commit is contained in:
parent
a7f044e1aa
commit
9738c90b82
10 changed files with 10 additions and 180 deletions
|
|
@ -884,7 +884,7 @@ describe('Pattern', () => {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
it('Doesnt drop haps in the 9th cycle', () => {
|
it('Doesnt drop haps in the 9th cycle', () => {
|
||||||
// fixed with https://github.com/tidalcycles/strudel/commit/72eeaf446e3d5e186d63cc0d2276f0723cde017a
|
// fixed with https://codeberg.org/uzu/strudel/commit/72eeaf446e3d5e186d63cc0d2276f0723cde017a
|
||||||
expect(sequence(1, 2, 3).ply(2).early(8).firstCycle().length).toBe(6);
|
expect(sequence(1, 2, 3).ply(2).early(8).firstCycle().length).toBe(6);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ You can also pin the version like this:
|
||||||
```
|
```
|
||||||
|
|
||||||
This has the advantage that your code will always work, regardless of potential breaking changes in the strudel codebase.
|
This has the advantage that your code will always work, regardless of potential breaking changes in the strudel codebase.
|
||||||
See [releases](https://github.com/tidalcycles/strudel/releases) for the latest versions.
|
See [releases](https://codeberg.org/uzu/strudel/releases) for the latest versions.
|
||||||
|
|
||||||
## Use Web Component
|
## Use Web Component
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@ interfaces.
|
||||||
|
|
||||||
The Strudel REPL is available at <https://strudel.cc>,
|
The Strudel REPL is available at <https://strudel.cc>,
|
||||||
including an interactive tutorial. The repository is at
|
including an interactive tutorial. The repository is at
|
||||||
<https://github.com/tidalcycles/strudel>, all the code is open source
|
<https://codeberg.org/uzu/strudel/releases>, all the code is open source
|
||||||
under the GPL-3.0 License.
|
under the GPL-3.0 License.
|
||||||
|
|
||||||
# Acknowledgments
|
# Acknowledgments
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ For the future, it is planned to integrate alternative sound engines such as Gli
|
||||||
# Links
|
# Links
|
||||||
|
|
||||||
The Strudel REPL is available at <https://strudel.cc>, including an interactive tutorial.
|
The Strudel REPL is available at <https://strudel.cc>, including an interactive tutorial.
|
||||||
The repository is at <https://github.com/tidalcycles/strudel>, all the code is open source under the GPL-3.0 License.
|
The repository is at <https://codeberg.org/uzu/strudel/releases>, all the code is open source under the GPL-3.0 License.
|
||||||
|
|
||||||
# Acknowledgments
|
# Acknowledgments
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -374,7 +374,7 @@ by the output.</li>
|
||||||
</ol>
|
</ol>
|
||||||
<figure>
|
<figure>
|
||||||
<img
|
<img
|
||||||
src="https://github.com/tidalcycles/strudel/raw/talk/talk/public/strudelflow.png?raw=true"
|
src="https://codeberg.org/uzu/strudel/raw/branch/talk/talk/public/strudelflow.png"
|
||||||
style="width:43.0%" alt="REPL control flow" />
|
style="width:43.0%" alt="REPL control flow" />
|
||||||
<figcaption aria-hidden="true">REPL control flow</figcaption>
|
<figcaption aria-hidden="true">REPL control flow</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
|
|
@ -720,8 +720,8 @@ class="header-section-number">11</span> Links</h1>
|
||||||
href="https://strudel.cc"
|
href="https://strudel.cc"
|
||||||
class="uri">https://strudel.cc</a>, including an
|
class="uri">https://strudel.cc</a>, including an
|
||||||
interactive tutorial. The repository is at <a
|
interactive tutorial. The repository is at <a
|
||||||
href="https://github.com/tidalcycles/strudel"
|
href="https://codeberg.org/uzu/strudel"
|
||||||
class="uri">https://github.com/tidalcycles/strudel</a>, all the code is
|
class="uri">https://codeberg.org/uzu/strudel</a>, all the code is
|
||||||
open source under the AGPL-3.0 License.</p>
|
open source under the AGPL-3.0 License.</p>
|
||||||
<h1 data-number="12" id="acknowledgments"><span
|
<h1 data-number="12" id="acknowledgments"><span
|
||||||
class="header-section-number">12</span> Acknowledgments</h1>
|
class="header-section-number">12</span> Acknowledgments</h1>
|
||||||
|
|
|
||||||
|
|
@ -451,7 +451,7 @@ While Haskell's type system makes it a great language for the ongoing developmen
|
||||||
# Links
|
# Links
|
||||||
|
|
||||||
The Strudel REPL is available at <https://strudel.cc>, including an interactive tutorial.
|
The Strudel REPL is available at <https://strudel.cc>, including an interactive tutorial.
|
||||||
The repository is at <https://github.com/tidalcycles/strudel>, all the code is open source under the AGPL-3.0 License.
|
The repository is at <https://codeberg.org/uzu/strudel>, all the code is open source under the AGPL-3.0 License.
|
||||||
|
|
||||||
# Acknowledgments
|
# Acknowledgments
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,169 +0,0 @@
|
||||||
---
|
|
||||||
// fetch all commits for just this page's path
|
|
||||||
type Props = {
|
|
||||||
path: string;
|
|
||||||
};
|
|
||||||
const { path } = Astro.props as Props;
|
|
||||||
const resolvedPath = `website/src/pages${path}.mdx`;
|
|
||||||
const url = `https://api.github.com/repos/tidalcycles/strudel/commits?path=${resolvedPath}`;
|
|
||||||
const commitsURL = `https://github.com/tidalcycles/strudel/commits/main/${resolvedPath}`;
|
|
||||||
|
|
||||||
type Commit = {
|
|
||||||
author: {
|
|
||||||
id: string;
|
|
||||||
login: string;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
async function getCommits(url: string) {
|
|
||||||
try {
|
|
||||||
const token = import.meta.env.SNOWPACK_PUBLIC_GITHUB_TOKEN ?? 'hello';
|
|
||||||
if (!token) {
|
|
||||||
throw new Error('Cannot find "SNOWPACK_PUBLIC_GITHUB_TOKEN" used for escaping rate-limiting.');
|
|
||||||
}
|
|
||||||
|
|
||||||
const auth = `Basic ${Buffer.from(token, 'binary').toString('base64')}`;
|
|
||||||
|
|
||||||
const res = await fetch(url, {
|
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
Authorization: auth,
|
|
||||||
'User-Agent': 'astro-docs/1.0',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const data = await res.json();
|
|
||||||
|
|
||||||
if (!res.ok) {
|
|
||||||
throw new Error(
|
|
||||||
`Request to fetch commits failed. Reason: ${res.statusText}
|
|
||||||
Message: ${data.message}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return data as Commit[];
|
|
||||||
} catch (e) {
|
|
||||||
console.warn(`[error] /src/components/AvatarList.astro
|
|
||||||
${(e as any)?.message ?? e}`);
|
|
||||||
return [] as Commit[];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeDups(arr: Commit[]) {
|
|
||||||
const map = new Map<string, Commit['author']>();
|
|
||||||
for (let item of arr) {
|
|
||||||
const author = item.author;
|
|
||||||
// Deduplicate based on author.id
|
|
||||||
//map.set(author.id, { login: author.login, id: author.id });
|
|
||||||
author && map.set(author.id, { login: author.login, id: author.id });
|
|
||||||
}
|
|
||||||
|
|
||||||
return [...map.values()];
|
|
||||||
}
|
|
||||||
|
|
||||||
const data = await getCommits(url);
|
|
||||||
const unique = removeDups(data);
|
|
||||||
const recentContributors = unique.slice(0, 3); // only show avatars for the 3 most recent contributors
|
|
||||||
const additionalContributors = unique.length - recentContributors.length; // list the rest of them as # of extra contributors
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- Thanks to @5t3ph for https://smolcss.dev/#smol-avatar-list! -->
|
|
||||||
<div class="contributors px-4 mb-8">
|
|
||||||
<ul class="avatar-list" style={`--avatar-count: ${recentContributors.length}`}>
|
|
||||||
{
|
|
||||||
recentContributors.map((item) => (
|
|
||||||
<li>
|
|
||||||
<a href={`https://github.com/${item.login}`}>
|
|
||||||
<img
|
|
||||||
alt={`Contributor ${item.login}`}
|
|
||||||
title={`Contributor ${item.login}`}
|
|
||||||
width="64"
|
|
||||||
height="64"
|
|
||||||
src={`https://avatars.githubusercontent.com/u/${item.id}`}
|
|
||||||
/>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
))
|
|
||||||
}
|
|
||||||
</ul>
|
|
||||||
{
|
|
||||||
additionalContributors > 0 && (
|
|
||||||
<span>
|
|
||||||
<a href={commitsURL}>{`and ${additionalContributors} additional contributor${
|
|
||||||
additionalContributors > 1 ? 's' : ''
|
|
||||||
}.`}</a>
|
|
||||||
</span>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
{unique.length === 0 && <a href={commitsURL}>Contributors</a>}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.avatar-list {
|
|
||||||
--avatar-size: 2.5rem;
|
|
||||||
--avatar-count: 3;
|
|
||||||
|
|
||||||
display: grid;
|
|
||||||
list-style: none;
|
|
||||||
/* Default to displaying most of the avatar to
|
|
||||||
enable easier access on touch devices, ensuring
|
|
||||||
the WCAG touch target size is met or exceeded */
|
|
||||||
grid-template-columns: repeat(var(--avatar-count), max(44px, calc(var(--avatar-size) / 1.15)));
|
|
||||||
/* `padding` matches added visual dimensions of
|
|
||||||
the `box-shadow` to help create a more accurate
|
|
||||||
computed component size */
|
|
||||||
padding: 0.08em;
|
|
||||||
font-size: var(--avatar-size);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (any-hover: hover) and (any-pointer: fine) {
|
|
||||||
.avatar-list {
|
|
||||||
/* We create 1 extra cell to enable the computed
|
|
||||||
width to match the final visual width */
|
|
||||||
grid-template-columns: repeat(calc(var(--avatar-count) + 1), calc(var(--avatar-size) / 1.75));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-list li {
|
|
||||||
width: var(--avatar-size);
|
|
||||||
height: var(--avatar-size);
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-list li:hover ~ li a,
|
|
||||||
.avatar-list li:focus-within ~ li a {
|
|
||||||
transform: translateX(33%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-list img,
|
|
||||||
.avatar-list a {
|
|
||||||
display: block;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-list a {
|
|
||||||
transition: transform 180ms ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-list img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
background-color: #fff;
|
|
||||||
box-shadow: 0 0 0 0.05em #fff, 0 0 0 0.08em rgba(0, 0, 0, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.avatar-list a:focus {
|
|
||||||
outline: 2px solid transparent;
|
|
||||||
/* Double-layer trick to work for dark and light backgrounds */
|
|
||||||
box-shadow: 0 0 0 0.08em var(--theme-accent), 0 0 0 0.12em white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contributors {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contributors > * + * {
|
|
||||||
margin-left: 0.75rem;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -82,7 +82,7 @@ export default function Search() {
|
||||||
appId={ALGOLIA.appId}
|
appId={ALGOLIA.appId}
|
||||||
apiKey={ALGOLIA.apiKey}
|
apiKey={ALGOLIA.apiKey}
|
||||||
getMissingResultsUrl={({ query }) => {
|
getMissingResultsUrl={({ query }) => {
|
||||||
return `https://github.com/tidalcycles/strudel/issues/new?title=Missing doc for ${query}`;
|
return `https://codeberg.org/uzu/strudel/issues/new?title=Missing%20doc%20for${encodeURIComponent(query)}`;
|
||||||
}}
|
}}
|
||||||
transformItems={(items) => {
|
transformItems={(items) => {
|
||||||
return items.map((item) => {
|
return items.map((item) => {
|
||||||
|
|
|
||||||
|
|
@ -18,5 +18,4 @@ currentPage = currentPage.endsWith('/') ? currentPage.slice(0, -1) : currentPage
|
||||||
<nav aria-labelledby="grid-right" class="w-64 text-foreground">
|
<nav aria-labelledby="grid-right" class="w-64 text-foreground">
|
||||||
<TableOfContents client:media="(min-width: 50em)" headings={headings} currentPage={currentPage} />
|
<TableOfContents client:media="(min-width: 50em)" headings={headings} currentPage={currentPage} />
|
||||||
<MoreMenu editHref={githubEditUrl} />
|
<MoreMenu editHref={githubEditUrl} />
|
||||||
<!-- <AvatarList path={currentPage} /> -->
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ export function WelcomeTab({ context }) {
|
||||||
GNU Affero General Public License
|
GNU Affero General Public License
|
||||||
</a>
|
</a>
|
||||||
. You can find the source code at{' '}
|
. You can find the source code at{' '}
|
||||||
<a href="https://github.com/tidalcycles/strudel" target="_blank">
|
<a href="https://codeberg.org/uzu/strudel" target="_blank">
|
||||||
github
|
github
|
||||||
</a>
|
</a>
|
||||||
. You can also find <a href="https://github.com/felixroos/dough-samples/blob/main/README.md">licensing info</a>{' '}
|
. You can also find <a href="https://github.com/felixroos/dough-samples/blob/main/README.md">licensing info</a>{' '}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue