even more degithubbing

This commit is contained in:
Felix Roos 2025-06-14 16:23:03 +02:00
parent a7f044e1aa
commit 9738c90b82
No known key found for this signature in database
10 changed files with 10 additions and 180 deletions

View file

@ -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);
}); });
}); });

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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>

View file

@ -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

View file

@ -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>

View file

@ -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) => {

View file

@ -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>

View file

@ -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>{' '}