Compare commits
4 commits
36dde64b61
...
9968a82d7a
| Author | SHA1 | Date | |
|---|---|---|---|
| 9968a82d7a | |||
| 12be699326 | |||
| 59f166adec | |||
| 2b12175ffa |
15 changed files with 95 additions and 261 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
|||
bake/
|
||||
.sass-cache/
|
||||
sandbox/
|
||||
www/imgs
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
1. [github:rose-pine/tailwind-css](https://github.com/rose-pine/tailwind-css): I modified their css palettes
|
||||
|
|
@ -33,3 +33,7 @@ nix-shell$ ./serve &
|
|||
### Inspiration
|
||||
1. https://namishh.me/ (uses https://actix.rs/)
|
||||
|
||||
1. [github:rose-pine/tailwind-css](https://github.com/rose-pine/tailwind-css): I modified their css palettes
|
||||
# Credit
|
||||
1. [me and my UNREGISTERED FIREARM](https://www.youtube.com/watch?v=5NWH-UmwWeM) by **@oranjate**
|
||||
2. [UNDO UNDO](https://www.youtube.com/watch?v=lCaun_EiJZQ) by **@Rolobi**
|
||||
|
|
|
|||
|
|
@ -3,17 +3,17 @@
|
|||
;,,, ` ' ,,,;
|
||||
`CRY6666bo. : : .od8888CRY'
|
||||
888IO8DO88b. : : .d8888I8DO88
|
||||
8LOVEY' `Y8b. ` ' .d8Y' `YLOVE8
|
||||
jTHEE! .db. Yb. ' ' .dY .db. 8THEE!
|
||||
8LOVET' `Y8b. ` ' .d8Y' `TLOVE8
|
||||
jYOUM! .db. Yb. ' ' .dY .db. !MYOUk
|
||||
`888 Y88Y `q ( ) p' Y88Y 888'
|
||||
8MYb '" ,', "' dMY8
|
||||
j8prECIOUSgf"' ':' `"?g8prECIOUSk
|
||||
8SOb '" ,', "' dSO8
|
||||
j8plEASEYgr"' ':' `"?gpYplEASESk
|
||||
'Y' .8' d' 'b '8. 'Y'
|
||||
! .8' db d'; ;`b db '8. !
|
||||
d88 `' 8 ; ; 8 `' 88b
|
||||
d88Ib .g8 ',' 8g. dI88b
|
||||
:888BAUD88Y' 'Y88BAUD888:
|
||||
'! BAUD888' `888BAUD !'
|
||||
:888LOVE88Y' 'Y88LOVE888:
|
||||
'! YpME888' `888MEpY !'
|
||||
'8Y `Y Y' Y8'
|
||||
Y Y
|
||||
! !
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
# Html With Nix (HOWN/hown)
|
||||
Hown is a system for static html/css compilation with the NixExpr language.
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
{mix, ...} @ inputs:
|
||||
mix.newMixture inputs (mixture: {
|
||||
includes.public = [
|
||||
./tty.nix
|
||||
];
|
||||
})
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<!-->
|
||||
{Text, mkTypingEffect, ...}:
|
||||
mkTypingEffect {
|
||||
head = Text "$ Do butterflies cry when they're sad?";
|
||||
body = Text "Segmentation fault (core dumped)";
|
||||
}
|
||||
<-->
|
||||
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
# XXX: TODO: The howl.Div, howl.Text, ... types implement
|
||||
# XXX: TODO: the HtmlTag' typeclass, which in turn implements
|
||||
# XXX: TODO: a morphism to the nt.String type. This makes compiling
|
||||
# XXX: TODO: to html super duper simple!!
|
||||
{
|
||||
nt,
|
||||
howl,
|
||||
...
|
||||
}: let
|
||||
inherit
|
||||
(nt)
|
||||
projectOnto
|
||||
;
|
||||
|
||||
inherit
|
||||
(howl)
|
||||
# HTML
|
||||
Div
|
||||
Text
|
||||
# CSS
|
||||
StyleClass
|
||||
StyleSheet
|
||||
ContinuousAnimation
|
||||
DiscreteAnimation
|
||||
;
|
||||
in {
|
||||
typing = StyleSheet {
|
||||
include = [./tty.css];
|
||||
|
||||
classes = {
|
||||
typing-wrapper = null;
|
||||
typing-prompt = promptLength: commandLength: duration: period:
|
||||
StyleClass {
|
||||
width = promptLength + commandLength; # ignore cursor
|
||||
border.right = "TODO"; # cursor
|
||||
|
||||
# hide what the animation hasn't shown yet
|
||||
whitespace = "nowrap";
|
||||
overflow = "hidden";
|
||||
|
||||
# run typing animation then start cursor blink
|
||||
animations = [
|
||||
(DiscreteAnimation {
|
||||
inherit duration;
|
||||
keyframes = {
|
||||
"0"
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
typing-result = typingDuration: delay:
|
||||
StyleClass {
|
||||
visibility = "hidden";
|
||||
whitespace = "pre-wrap"; # preserve linebreaks
|
||||
|
||||
# show result once typing duration + delay is over
|
||||
animations = [
|
||||
(ContinuousAnimation {
|
||||
name = "unhide-result";
|
||||
duration = 1; # animation-duration
|
||||
# timingFn = ; # animation-timing-function
|
||||
delay = typingDuration + delay; # animation-delay
|
||||
# animation-iteration-count
|
||||
direction = "forwards"; # animation-direction
|
||||
# animation-fill-mode
|
||||
# animation-play-state
|
||||
keyframes = {
|
||||
"100" = {
|
||||
visibility = "visible";
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mkTypingEffect = decl': let
|
||||
decl =
|
||||
decl'
|
||||
|> projectOnto
|
||||
{
|
||||
head = "";
|
||||
body = "";
|
||||
};
|
||||
in
|
||||
Div {
|
||||
id = "typing-wrapper";
|
||||
content = [
|
||||
(Div {
|
||||
id = "typing-prompt";
|
||||
content = Text decl.head;
|
||||
})
|
||||
(Div {
|
||||
id = "typing-result";
|
||||
content = Text decl.body;
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
Web: dobutterfliescry.net
|
||||
imbored.dev (195.114.14.69)
|
||||
|
||||
Socials:
|
||||
Bluesky: @dobutterfliescry.bsky.social
|
||||
Discord: @emileisbaud
|
||||
|
||||
Forges:
|
||||
Github: @emileclarkb
|
||||
Coderberg: @dobutterfliescry
|
||||
Tearforge: https://tearforge.online
|
||||
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
# REF: https://github.com/rose-pine/fish/blob/main/themes/Ros%C3%A9%20Pine%20Moon.theme
|
||||
|
||||
# syntax highlighting variables
|
||||
# https://fishshell.com/docs/current/interactive.html#syntax-highlighting-variables
|
||||
fish_color_normal e0def4
|
||||
fish_color_command c4a7e7
|
||||
fish_color_keyword 9ccfd8
|
||||
fish_color_quote f6c177
|
||||
fish_color_redirection 3e8fb0
|
||||
fish_color_end 908caa
|
||||
fish_color_error eb6f92
|
||||
fish_color_param ea9a97
|
||||
fish_color_comment 908caa
|
||||
# fish_color_match --background=brblue
|
||||
fish_color_selection --reverse
|
||||
# fish_color_history_current --bold
|
||||
fish_color_operator e0def4
|
||||
fish_color_escape 3e8fb0
|
||||
fish_color_autosuggestion 908caa
|
||||
fish_color_cwd ea9a97
|
||||
# fish_color_cwd_root red
|
||||
fish_color_user f6c177
|
||||
fish_color_host 9ccfd8
|
||||
fish_color_host_remote c4a7e7
|
||||
fish_color_cancel e0def4
|
||||
fish_color_search_match --background=232136
|
||||
fish_color_valid_path
|
||||
|
||||
# pager color variables
|
||||
# https://fishshell.com/docs/current/interactive.html#pager-color-variables
|
||||
fish_pager_color_progress ea9a97
|
||||
fish_pager_color_background --background=2a273f
|
||||
fish_pager_color_prefix 9ccfd8
|
||||
fish_pager_color_completion 908caa
|
||||
fish_pager_color_description 908caa
|
||||
fish_pager_color_secondary_background
|
||||
fish_pager_color_secondary_prefix
|
||||
fish_pager_color_secondary_completion
|
||||
fish_pager_color_secondary_description
|
||||
fish_pager_color_selected_background --background=393552
|
||||
fish_pager_color_selected_prefix 9ccfd8
|
||||
fish_pager_color_selected_completion e0def4
|
||||
fish_pager_color_selected_description e0def4
|
||||
|
||||
# custom color variables
|
||||
fish_color_subtle 908caa
|
||||
fish_color_text e0def4
|
||||
fish_color_love eb6f92
|
||||
fish_color_gold f6c177
|
||||
fish_color_rose ea9a97
|
||||
fish_color_pine 3e8fb0
|
||||
fish_color_foam 9ccfd8
|
||||
fish_color_iris c4a7e7
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
## Current State + Analysis
|
||||
> Current (default) `ens3` interface configuration
|
||||
```fish
|
||||
ae@hyrule ~> ip -6 addr
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
|
||||
inet6 ::1/128 scope host noprefixroute
|
||||
valid_lft forever preferred_lft forever
|
||||
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
|
||||
inet6 fe80::a0c7:1fe3:4851:b2b4/64 scope link noprefixroute
|
||||
valid_lft forever preferred_lft forever
|
||||
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 state DOWN
|
||||
inet6 fe80::42:9ff:fe40:1e1c/64 scope link proto kernel_ll
|
||||
valid_lft forever preferred_lft forever
|
||||
```
|
||||
|
||||
However the address should actually be `2402:7340:5000:1800::a`.
|
||||
Using the `2402:7340:5000::1` gateway.
|
||||
IPv6 allocations are viewable under the VPS `Control Panel / Network` tab
|
||||
|
||||
|
||||
## Guides + Resources
|
||||
Mini guide on configuring IPv6 for NixOS:
|
||||
https://nlewo.github.io/nixos-manual-sphinx/configuration/ipv6-config.xml.html
|
||||
|
||||
This forum post says how to do everything:
|
||||
https://discourse.nixos.org/t/how-to-setup-ipv6-correctly-so-that-ping-6-google-com-works/33686
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
### Properly configuring a mailserver
|
||||
[These docs](https://nixos-mailserver.readthedocs.io/en/latest/setup-guide.html)
|
||||
explains (in depth) how to configure [simple-nixos-mailserver](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver)
|
||||
and achieve a 10/10 [mail-tester](https://mail-tester.com) score.
|
||||
|
||||
Due to a lot of internet politics self-hosting a mail server isn't always
|
||||
super easy. TLDR a lot of VPS subnets get abused and get registered on blacklists.
|
||||
You should test your IPv4 address (or domain) on [MxToolbox](https://mxtoolbox.com/blacklists.aspx)
|
||||
first. If you're not blacklisted you you'll only need to worry about writing
|
||||
out DNS records (very specific ones that avoid your emails going straight to spam).
|
||||
|
|
@ -1,12 +1,31 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# TODO: write this as a Makefile maybe?
|
||||
set -euo pipefail
|
||||
|
||||
# ===== Configuration ===== #
|
||||
IMGS_DIR="imgs"
|
||||
BAKE_DIR="www/baked"
|
||||
IMGS="imgs"
|
||||
BAKED="www/imgs"
|
||||
FAVICON="$BAKED/favicon"
|
||||
# ========================= #
|
||||
|
||||
mkdir -p "$BAKE_DIR"
|
||||
magick -background '#000000' -size 100x100 "$IMGS_DIR/mirror-icon.svg" "$BAKE_DIR/mirror-icon.png"
|
||||
magick "$IMGS_DIR/c00L_y2k_g1rL.png" -resize 50% "$BAKE_DIR/avatar.png"
|
||||
mkdir -p "$BAKED"
|
||||
mkdir -p "$FAVICON"
|
||||
|
||||
echo 'Generating mirror icon'
|
||||
magick -background '#000000' -size 100x100 "$IMGS/mirror-icon.svg" "$BAKED/mirror-icon.png"
|
||||
|
||||
# resize avatar
|
||||
echo "Resizing avatar"
|
||||
magick "$IMGS/c00L_y2k_g1rL.png" -resize 50% "$BAKED/avatar.png"
|
||||
# crop avatar
|
||||
echo 'Cropping avatar'
|
||||
magick "$IMGS/c00L_y2k_g1rL.png" -crop '%wx%w+0+180' "$BAKED/avatar_crop.png"
|
||||
|
||||
# create favicon
|
||||
echo 'Generating favicon.ico'
|
||||
magick -define icon:auto-resize=16,32,48,64,128,256 -compress zip "$BAKED/avatar_crop.png" "$FAVICON/favicon.ico"
|
||||
# create separate png favicon alternatives
|
||||
for n in 16 32 48 64 128 256; do
|
||||
echo "Generating favicon-${n}x${n}.png"
|
||||
magick "$BAKED/avatar_crop.png" -resize "${n}x${n}" "$FAVICON/favicon-${n}x${n}.png"
|
||||
done
|
||||
|
||||
|
|
|
|||
|
|
@ -1,32 +1,14 @@
|
|||
.theme-base {
|
||||
color: var(--theme-base);
|
||||
}
|
||||
.theme-base { color: var(--theme-base); }
|
||||
.theme-bg { color: var(--theme-bg); }
|
||||
.theme-text { color: var(--theme-text); }
|
||||
.theme-link { color: var(--theme-link); }
|
||||
|
||||
.theme-bg {
|
||||
color: var(--theme-bg);
|
||||
}
|
||||
.theme-icon { color: var(--theme-icon); }
|
||||
.theme-icon-off { color: var(--theme-icon-off); }
|
||||
|
||||
.theme-text {
|
||||
color: var(--theme-text);
|
||||
}
|
||||
|
||||
.theme-tty-prompt {
|
||||
color: var(--theme-tty-prompt);
|
||||
}
|
||||
|
||||
.theme-tty-command {
|
||||
color: var(--theme-tty-command);
|
||||
}
|
||||
|
||||
.theme-tty-output {
|
||||
color: var(--theme-tty-output);
|
||||
}
|
||||
|
||||
.theme-tty-warning {
|
||||
color: var(--theme-tty-warning);
|
||||
}
|
||||
|
||||
.theme-tty-error {
|
||||
color: var(--theme-tty-error);
|
||||
}
|
||||
.theme-tty-prompt { color: var(--theme-tty-prompt); }
|
||||
.theme-tty-command { color: var(--theme-tty-command); }
|
||||
.theme-tty-output { color: var(--theme-tty-output); }
|
||||
.theme-tty-warning { color: var(--theme-tty-warning); }
|
||||
.theme-tty-error { color: var(--theme-tty-error); }
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,16 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>have you tried crying more?</title>
|
||||
|
||||
<!-- !! Favicon !! -->
|
||||
<link rel="icon" href="imgs/favicon/favicon.ico" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="imgs/favicon/favicon-16x16.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="imgs/favicon/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="48x48" href="imgs/favicon/favicon-48x48.png" />
|
||||
<link rel="icon" type="image/png" sizes="64x64" href="imgs/favicon/favicon-64x64.png" />
|
||||
<!-- TODO: add 96x96 -->
|
||||
<link rel="icon" type="image/png" sizes="128x128" href="imgs/favicon/favicon-128x128.png" />
|
||||
<link rel="icon" type="image/png" sizes="256x256" href="imgs/favicon/favicon-256x256.png" />
|
||||
|
||||
<script src="js/main.js" type="module"></script>
|
||||
|
||||
<!-- Theming -->
|
||||
|
|
@ -114,6 +124,43 @@
|
|||
<p>hi!! i'm cry (they/them) <3</p>
|
||||
|
||||
</div>
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> ` ' </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> ;,,, ` ' ,,,; </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> `CRY6666bo. : : .od8888CRY' </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> 888IO8DO88b. : : .d8888I8DO88 </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> 8LOVET' `Y8b. ` ' .d8Y' `TLOVE8 </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> jYOUM! .db. Yb. ' ' .dY .db. !MYOUk </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> `888 Y88Y `q ( ) p' Y88Y 888' </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> 8SOb '" ,', "' dSO8 </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> j8plEASEYgr"' ':' `"?gpYplEASESk </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> 'Y' .8' d' 'b '8. 'Y' </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> ! .8' db d'; ;`b db '8. ! </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> d88 `' 8 ; ; 8 `' 88b </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> d88Ib .g8 ',' 8g. dI88b </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> :888LOVE88Y' 'Y88LOVE888: </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> '! YpME888' `888MEpY !' </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> '8Y `Y Y' Y8' </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> Y Y </span><span class="theme-tty-warning">--></span> -->
|
||||
<!-- <span class="theme-tty-warning"><--</span><span class="theme-icon-off"> ! ! </span><span class="theme-tty-warning">--></span> -->
|
||||
<pre class="centered cryframe">
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> ` ' </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> ;,,, ` ' ,,,; </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> `<span class="theme-tty-output">CRY</span>6666bo. : : .od8888<span class="theme-tty-output">CRY</span>' </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> 888<span class="theme-icon">I</span>O8DO88b. : : .d88OD8O<span class="theme-icon">I</span>888 </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> 8<span class="theme-icon">LOVE</span>T' `Y8b. ` ' .d8Y' `T<span class="theme-icon">LOVE</span>8 </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> j<span class="theme-icon">YOU</span>M! .db. Yb. ' ' .dY .db. !M<span class="theme-icon">YOU</span>k </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> `888 Y88Y `q ( ) p' Y88Y 888' </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> 8<span class="theme-icon">SO</span>b '" ,', "' d<span class="theme-icon">SO</span>8 </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> j8<span class="theme-icon">PLEASE</span>Ygr"' ':' `"?gpY<span class="theme-icon">PLEASE</span>Sk </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> 'Y' .8' d' 'b '8. 'Y' </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> ! .8' db d'; ;`b db '8. ! </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> d88 `' 8 ; ; 8 `' 88b </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> d88Ib .g8 ',' 8g. dI88b </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> :888<span class="theme-icon">LOVE</span>88Y' 'Y88<span class="theme-icon">LOVE</span>888: </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> '! Yp<span class="theme-icon">ME</span>888' `888<span class="theme-icon">ME</span>pY !' </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> '8Y `Y Y' Y8' </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> Y Y </span><span class="theme-tty-warning">--></span>
|
||||
<span class="theme-tty-warning"><--</span><span class="theme-icon-off"> ! ! </span><span class="theme-tty-warning">--></span></pre>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue