Skip to content

Instantly share code, notes, and snippets.

View chenasraf's full-sized avatar
🏃‍♂️
Freelancing

Chen Asraf chenasraf

🏃‍♂️
Freelancing
View GitHub Profile
@chenasraf
chenasraf / userscript.js
Last active July 29, 2026 14:26
Nextcloud App Store — inline screenshot modal
// ==UserScript==
// @name Nextcloud App Store — inline screenshot modal
// @namespace http://tampermonkey.net/
// @version 2026-07-25
// @description Replace the native fullscreen screenshot preview with an inline modal that covers most of the page and can be dismissed (Esc, backdrop click, or ×). Adds prev/next navigation across the gallery.
// @author You
// @match https://apps.nextcloud.com/apps/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=nextcloud.com
// @downloadURL https://gist.githubusercontent.com/chenasraf/6bfd798958d876b2b123ce395f9298b4/raw/userscript.js
// @updateURL https://gist.githubusercontent.com/chenasraf/6bfd798958d876b2b123ce395f9298b4/raw/userscript.js
@chenasraf
chenasraf / youtube-members-only-dimmer.user.js
Last active November 13, 2025 07:56
YouTube Members Only Dimmer
// ==UserScript==
// @name YouTube Members Only Dimmer
// @namespace http://tampermonkey.net/
// @version 0.3.0
// @description Make Members Only videos semi-transparent in the feed
// @author Chen Asraf <contact@casraf.dev>
// @match https://www.youtube.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant none
// @updateURL https://gist.github.com/chenasraf/1a983b99448f3a2c09662d6535bf1fa5/raw/youtube-members-only-dimmer.user.js
@chenasraf
chenasraf / ollama-prompt.sh
Last active August 23, 2024 20:27
Ollama CLI prompt
#!/usr/bin/env bash
ollama_prompt() {
prompt="$@"
endpoint="http://localhost:11434"
curl $endpoint/api/generate -XPOST \
--no-buffer \
-s \
-H 'Content-Type: application/json' \
@chenasraf
chenasraf / _README.md
Last active August 12, 2024 18:10
Git Open URLs Aliases

Update: Created as a repo for easy install, see chenasraf/git-open

What does this do?

Creates git aliases to open git URLs for project, new PR, PR list and CI-CD/Actions.

Usage

Usage: git open 
@chenasraf
chenasraf / README.md
Last active October 8, 2023 20:17
Aardwolf MUSHclient alias collection
@chenasraf
chenasraf / README.md
Last active October 8, 2023 20:21
Aardwolf MUSHclient alias - easy cexits for direction and back

How to use

  1. Add this alias
    • regular expression: true
    • send to: script
  2. Use m[o|u] to open. For example: mou becomes mapper cexit open u;;u mue becomes mapper cexit cast knock e;;open e;;e and also adds sets higher cexit_wait to make sure it succeeds
  3. If it's successful, it will create the same cexit in the opposite way
@chenasraf
chenasraf / README.md
Last active October 1, 2023 22:21
nvim format with custom formatters support

nvim format with custom formatters support

This format function is great to use on any languages not supported by your current LSP or when you are trying to pass custom arguments.

This example shows how dart format can be used to reformat the current buffer (so the file save state is irrelevant), replace the buffer with the new contents, and put the cursor back in position.

We prevent the need to escape any variables or tokens inside by using bash heredoc

@chenasraf
chenasraf / compose.ts
Created April 1, 2023 18:57
TS compose fn
type FirstOf<T extends IOFn[]> = T extends [infer F extends (...args: any) => any, ...IOFn[]]
? Parameters<F>
: never
type LastOf<T extends IOFn[]> = T extends [...IOFn[], infer L extends (...args: any) => any]
? ReturnType<L>
: never
type IOFn<I extends any[] = any, O = any> = (...x: I) => O
type Composed<A extends IOFn[]> = (...x: FirstOf<A>) => LastOf<A>
export function compose<A extends IOFn[]>(...fns: A): Composed<A> {
@chenasraf
chenasraf / zod-utils.ts
Created March 22, 2023 09:01
Zod - Validate Specific Field from Schema (good for forms)
type R = Record<string | number, any>
export function parseFieldSafe<T extends Zod.AnyZodObject, K extends keyof Zod.infer<T>>(
obj: T,
key: K,
value: T[K],
): Zod.SafeParseReturnType<R, R> {
return obj.pick({ [key]: true as const }).safeParse({ [key]: value })
}
@chenasraf
chenasraf / _readme.md
Last active January 21, 2023 22:34
Nextcloud + Docker Compose + Nginx

Nextcloud using Nginx & Docker Compose

This sample config set includes:

  • Nextcloud setup using Docker-Compose
  • Nginx serves the Docker using reverse-proxy
  • Systemd service file (optional)

There are examples of the nginx config that include: