Initial commit: AirCoding V1.0.0 Alpha architecture baseline
Complete architecture document set with multi-model review remediation: - Frozen interface contracts, runtime semantics, DB schemas - Event/tool/error/provider registries - Scheduler and main agent state machines - C4 module/code views, solution architecture, baseline V1 - Multi-model review reports and joint assessment - Phase-gate remediation complete (P0/P1/P2/UX resolved) - Implementation plan with T-000A through T-045 - Reference folders kept as placeholders only
This commit is contained in:
213
reference/atuin-18.16.1/.atuin/skills/release/SKILL.md
Executable file
213
reference/atuin-18.16.1/.atuin/skills/release/SKILL.md
Executable file
@@ -0,0 +1,213 @@
|
||||
---
|
||||
name: release
|
||||
description: >
|
||||
Orchestrate a multi-step Atuin CLI release — version bumping, changelog
|
||||
generation, PR creation, tagging, and crates.io publishing. Invoke with
|
||||
/release or /release <version>.
|
||||
disable-model-invocation: true
|
||||
argument-hint: [version]
|
||||
---
|
||||
|
||||
# Atuin CLI Release
|
||||
|
||||
You are orchestrating a release of the Atuin CLI. Follow the steps below
|
||||
**in order**, pausing at each checkpoint for user confirmation. Do not skip
|
||||
steps or combine them.
|
||||
|
||||
## Current State
|
||||
|
||||
- Workspace version: !`sed -n '/^\[workspace\.package\]/,/^\[/s/^version = "\(.*\)"/\1/p' Cargo.toml`
|
||||
- Latest tag: !`git describe --tags --abbrev=0 2>/dev/null || echo "none"`
|
||||
- Suggested next version: !`git-cliff --bumped-version 2>/dev/null | sed 's/^v//' || echo "(unknown)"`
|
||||
|
||||
---
|
||||
|
||||
## Step 1 — Check Dependencies
|
||||
|
||||
Verify these tools are installed: `git`, `gsed`, `cargo`, `gh`, `git-cliff`.
|
||||
|
||||
Use `command -v` for each. If any are missing, report which ones and stop.
|
||||
|
||||
Remember to use `gsed`, or else macOS flags to regular `sed`, later in the workflow.
|
||||
|
||||
---
|
||||
|
||||
## Step 2 — Determine Version
|
||||
|
||||
The target version may be provided as `$ARGUMENTS`. If it's empty, use
|
||||
AskUserQuestion to ask for the new version (show the current state above
|
||||
for reference).
|
||||
|
||||
After determining the version:
|
||||
- If it contains a `-` (e.g. `18.15.0-beta.1`), it is a **prerelease**.
|
||||
Note this — it affects changelog and publish behavior later.
|
||||
- Show the user: `current → new` and whether it's a prerelease.
|
||||
- **Checkpoint:** Ask the user to confirm before proceeding.
|
||||
|
||||
---
|
||||
|
||||
## Step 3 — Set Up Working Directory
|
||||
|
||||
Clone a fresh copy into a temp directory:
|
||||
|
||||
```bash
|
||||
WORKDIR=$(mktemp -d)
|
||||
git clone git@github.com:atuinsh/atuin.git "$WORKDIR"
|
||||
```
|
||||
|
||||
Print the working directory path so the user can find it if needed.
|
||||
|
||||
NOTE:
|
||||
ALL subsequent Bash commands run from `$WORKDIR`.
|
||||
|
||||
---
|
||||
|
||||
## Step 4 — Create Branch & Update Versions
|
||||
|
||||
1. Create a release branch named after the version (no `v` prefix):
|
||||
`git checkout -b <VERSION>`
|
||||
|
||||
2. Replace the old version with the new one in all `Cargo.toml` files.
|
||||
**Escape dots** in the old version so sed treats them literally:
|
||||
|
||||
```bash
|
||||
VERSION_PATTERN="${OLD_VERSION//./\\.}"
|
||||
find . -type f -name 'Cargo.toml' -not -path './.git/*' \
|
||||
-exec gsed -i "s/$VERSION_PATTERN/$NEW_VERSION/g" {} \;
|
||||
```
|
||||
|
||||
3. Run `cargo check` to update `Cargo.lock`.
|
||||
|
||||
4. Show `git diff --stat` and the version-related lines from the diff:
|
||||
```bash
|
||||
git diff --unified=0 -- '*.toml' | grep '^\+.*version' | grep -vF '+++'
|
||||
```
|
||||
Remember to use macOS grep arguments on macOS systems.
|
||||
|
||||
5. Verify the workspace version was actually updated by re-reading it
|
||||
from `Cargo.toml`.
|
||||
|
||||
6. **Checkpoint:** Show the diff summary and ask the user to confirm the
|
||||
version changes look correct.
|
||||
|
||||
---
|
||||
|
||||
## Step 5 — Update Changelog
|
||||
|
||||
The changelog strategy differs for prereleases vs stable releases:
|
||||
|
||||
- **Prerelease:** Maintain a running `## [unreleased]` section containing
|
||||
all changes since the last stable release. Use:
|
||||
`git-cliff --unreleased --strip all`
|
||||
(cliff.toml's `ignore_tags` already ignores beta/alpha tags, so
|
||||
`--unreleased` spans back to the last stable release automatically.)
|
||||
|
||||
- **Stable release:** Generate a versioned entry that replaces the
|
||||
`[unreleased]` section. Use:
|
||||
`git-cliff --unreleased --tag "v<VERSION>" --strip all`
|
||||
|
||||
Then update `CHANGELOG.md`:
|
||||
|
||||
1. If an existing `## [unreleased]` or `## [Unreleased]` section exists,
|
||||
**remove it entirely** (the heading and all content up to the next
|
||||
`## ` heading).
|
||||
|
||||
2. Insert the new entry before the first existing `## ` version heading.
|
||||
|
||||
3. **Checkpoint:** Read and display the new changelog entry to the user.
|
||||
Ask if they want any edits. If so, make the requested changes using
|
||||
the Edit tool. Repeat until they're satisfied.
|
||||
|
||||
---
|
||||
|
||||
## Step 6 — Commit & Push
|
||||
|
||||
Stage all changes and commit:
|
||||
|
||||
```
|
||||
chore(release): prepare for release <VERSION>
|
||||
```
|
||||
|
||||
Push the branch with `--set-upstream origin`.
|
||||
|
||||
---
|
||||
|
||||
## Step 7 — Create PR & Wait for Merge
|
||||
|
||||
### Create the PR
|
||||
|
||||
Extract the changelog entry body (everything between the new `## ` heading
|
||||
and the next one) for the PR description.
|
||||
|
||||
For prereleases, the heading to match is `## [unreleased]`.
|
||||
For stable releases, it's `## <VERSION>` (escape dots in the awk pattern).
|
||||
|
||||
Create the PR:
|
||||
```bash
|
||||
gh pr create \
|
||||
--title "chore(release): prepare for release <VERSION>" \
|
||||
--body "<body with changelog>" \
|
||||
--repo atuinsh/atuin
|
||||
--draft
|
||||
```
|
||||
|
||||
Show the PR URL to the user. Tell the user to go review and merge the PR.
|
||||
|
||||
When the user reports the PR is merged, proceed to the next step.
|
||||
|
||||
---
|
||||
|
||||
## Step 8 — Tag Release
|
||||
|
||||
Back in the working directory:
|
||||
|
||||
```bash
|
||||
git checkout main
|
||||
git pull
|
||||
git tag "v<VERSION>"
|
||||
git push --tags
|
||||
```
|
||||
|
||||
Tell the user the tag was pushed and the release CI workflow has been
|
||||
triggered.
|
||||
|
||||
---
|
||||
|
||||
## Step 9 — Publish to crates.io
|
||||
|
||||
**If this is a prerelease**, skip this step entirely and tell the user.
|
||||
|
||||
**If this is a stable release**, ask the user whether to publish.
|
||||
|
||||
If yes, publish each crate **in dependency order** using `--no-verify`
|
||||
(the code already passed CI, and verification fails when crates.io
|
||||
hasn't indexed a freshly-published dependency yet):
|
||||
|
||||
```
|
||||
atuin-common, atuin-client, atuin-ai, atuin-dotfiles, atuin-history,
|
||||
atuin-nucleo/matcher, atuin-nucleo, atuin-daemon, atuin-kv,
|
||||
atuin-scripts, atuin-server-database, atuin-server-postgres,
|
||||
atuin-server-sqlite, atuin-server, atuin-pty-proxy, atuin
|
||||
```
|
||||
|
||||
For each crate, run from `crates/<name>`:
|
||||
```bash
|
||||
cargo publish --no-verify 2>&1
|
||||
```
|
||||
|
||||
If it fails with "already uploaded", report it as a skip (not an error) —
|
||||
some crates like `atuin-nucleo` are versioned independently and may
|
||||
already be published at their current version.
|
||||
|
||||
If it fails for any other reason, stop and report the error.
|
||||
|
||||
---
|
||||
|
||||
## Completion
|
||||
|
||||
Summarize what was done:
|
||||
- Version released
|
||||
- PR URL
|
||||
- Tag name
|
||||
- Which crates were published (if any)
|
||||
- Working directory path and how to clean it up (`rm -rf`)
|
||||
9
reference/atuin-18.16.1/.cargo/audit.toml
Executable file
9
reference/atuin-18.16.1/.cargo/audit.toml
Executable file
@@ -0,0 +1,9 @@
|
||||
[advisories]
|
||||
ignore = [
|
||||
# This is a vuln on RSA. RSA is in our lockfile, but not in cargo-tree.
|
||||
# It is a issue with sqlx/cargo, and does not affect Atuin.
|
||||
# See:
|
||||
# - https://github.com/launchbadge/sqlx/issues/3211
|
||||
# - https://github.com/rust-lang/cargo/issues/10801
|
||||
"RUSTSEC-2023-0071"
|
||||
]
|
||||
154
reference/atuin-18.16.1/.claude/skills/hunk/SKILL.md
Executable file
154
reference/atuin-18.16.1/.claude/skills/hunk/SKILL.md
Executable file
@@ -0,0 +1,154 @@
|
||||
---
|
||||
name: hunk-review
|
||||
description: Interacts with live Hunk diff review sessions via CLI. Inspects review focus, navigates files and hunks, reloads session contents, and adds inline review comments. Use when the user has a Hunk session running or wants to review diffs interactively.
|
||||
---
|
||||
|
||||
# Hunk Review
|
||||
|
||||
Hunk is an interactive terminal diff viewer. The TUI is for the user -- do NOT run `hunk diff`, `hunk show`, or other interactive commands directly. Use `hunk session *` CLI commands to inspect and control live sessions through the local daemon.
|
||||
|
||||
If no session exists, ask the user to launch Hunk in their terminal first.
|
||||
|
||||
## Workflow
|
||||
|
||||
```text
|
||||
1. hunk session list # find live sessions
|
||||
2. hunk session get --repo . # inspect path / repo / source
|
||||
3. hunk session review --repo . --json # inspect file/hunk structure first
|
||||
4. hunk session review --repo . --include-patch --json # opt into raw diff text only when needed
|
||||
5. hunk session context --repo . # check current focus when needed
|
||||
6. hunk session navigate ... # move to the right place
|
||||
7. hunk session reload -- <command> # swap contents if needed
|
||||
8. hunk session comment add ... # leave one review note
|
||||
9. hunk session comment apply ... # apply many agent notes in one stdin batch
|
||||
```
|
||||
|
||||
## Session selection
|
||||
|
||||
Most session commands accept:
|
||||
|
||||
- `--repo <path>` -- match the live session by its current loaded repo root (most common)
|
||||
- `<session-id>` -- match by exact ID (use when multiple sessions share a repo)
|
||||
- If only one session exists, it auto-resolves
|
||||
|
||||
`reload` also supports:
|
||||
|
||||
- `--session-path <path>` -- match the live Hunk window by its current working directory
|
||||
- `--source <path>` -- load the replacement `diff` / `show` command from a different directory
|
||||
|
||||
Use `--source` only for advanced reloads where the live session you want to control is not already associated with the checkout you want to load next. For a normal worktree session, prefer selecting it directly with `--repo /path/to/worktree`.
|
||||
|
||||
## Commands
|
||||
|
||||
### Inspect
|
||||
|
||||
```bash
|
||||
hunk session list [--json]
|
||||
hunk session get (--repo . | <id>) [--json]
|
||||
hunk session context (--repo . | <id>) [--json]
|
||||
hunk session review (--repo . | <id>) [--json] [--include-patch]
|
||||
```
|
||||
|
||||
- `get` shows the session `Path`, `Repo`, and `Source`, which helps when choosing between `--repo` and `--session-path`
|
||||
- `Repo` is what `--repo` matches; `Path` is what `--session-path` matches
|
||||
- `review --json` returns file and hunk structure by default; add `--include-patch` only when a caller truly needs raw unified diff text
|
||||
|
||||
### Navigate
|
||||
|
||||
Absolute navigation requires `--file` and exactly one of `--hunk`, `--new-line`, or `--old-line`:
|
||||
|
||||
```bash
|
||||
hunk session navigate --repo . --file src/App.tsx --hunk 2
|
||||
hunk session navigate --repo . --file src/App.tsx --new-line 372
|
||||
hunk session navigate --repo . --file src/App.tsx --old-line 355
|
||||
```
|
||||
|
||||
Relative comment navigation jumps between annotated hunks and does not require `--file`:
|
||||
|
||||
```bash
|
||||
hunk session navigate --repo . --next-comment
|
||||
hunk session navigate --repo . --prev-comment
|
||||
```
|
||||
|
||||
- `--hunk <n>` is 1-based
|
||||
- `--new-line` / `--old-line` are 1-based line numbers on that diff side
|
||||
- Use either `--next-comment` or `--prev-comment`, not both
|
||||
|
||||
### Reload
|
||||
|
||||
Swaps the live session's contents. Pass a Hunk review command after `--`:
|
||||
|
||||
```bash
|
||||
hunk session reload --repo . -- diff
|
||||
hunk session reload --repo . -- diff main...feature -- src/ui
|
||||
hunk session reload --repo . -- show HEAD~1
|
||||
hunk session reload --repo . -- show HEAD~1 -- README.md
|
||||
hunk session reload --repo /path/to/worktree -- diff
|
||||
hunk session reload --session-path /path/to/live-window --source /path/to/other-checkout -- diff
|
||||
```
|
||||
|
||||
- Always include `--` before the nested Hunk command
|
||||
- `--repo` or `<session-id>` usually selects the session you want
|
||||
- `--source` is advanced: it does not select the session; it only changes where the replacement review command runs
|
||||
- If the live session is already showing the target worktree, prefer `hunk session reload --repo /path/to/worktree -- diff`
|
||||
- `--session-path` targets the live window when you need to keep session selection separate from reload source
|
||||
|
||||
### Comments
|
||||
|
||||
```bash
|
||||
hunk session comment add --repo . --file README.md --new-line 103 --summary "Tighten this wording" [--rationale "..."] [--author "agent"] [--focus]
|
||||
printf '%s\n' '{"comments":[{"filePath":"README.md","newLine":103,"summary":"Tighten this wording"}]}' | hunk session comment apply --repo . --stdin [--focus]
|
||||
hunk session comment list --repo . [--file README.md]
|
||||
hunk session comment rm --repo . <comment-id>
|
||||
hunk session comment clear --repo . --yes [--file README.md]
|
||||
```
|
||||
|
||||
- `comment add` is best for one note; `comment apply` is best when an agent already has several notes ready
|
||||
- `comment add` requires `--file`, `--summary`, and exactly one of `--old-line` or `--new-line`
|
||||
- `comment apply` payload items require `filePath`, `summary`, and exactly one target such as `hunk`, `hunkNumber`, `oldLine`, or `newLine`
|
||||
- `comment apply` reads a JSON batch from stdin and validates the full batch before mutating the live session
|
||||
- Pass `--focus` when you want to jump to the new note or the first note in a batch
|
||||
- `comment list` and `comment clear` accept optional `--file`
|
||||
- Quote `--summary` and `--rationale` defensively in the shell
|
||||
|
||||
## New files in working-tree reviews
|
||||
|
||||
`hunk diff` includes untracked files by default. If the user wants tracked changes only, reload with `--exclude-untracked`:
|
||||
|
||||
```bash
|
||||
hunk session reload --repo . -- diff --exclude-untracked
|
||||
```
|
||||
|
||||
## Guiding a review
|
||||
|
||||
The user may ask you to walk them through a changeset or review code using Hunk. Start with `hunk session review --json` to understand the file/hunk structure without inflating agent context, then use `--include-patch` only for the files you truly need to read in raw diff form. Use `context` and `navigate` to line up the user's current view before adding comments.
|
||||
|
||||
Your role is to narrate: steer the user's view to what matters and leave comments that explain what they're looking at.
|
||||
|
||||
Typical flow:
|
||||
|
||||
1. Load the right content (`reload` if needed)
|
||||
2. Navigate to the first interesting file / hunk
|
||||
3. Add a comment explaining what's happening and why
|
||||
4. If you already have several notes ready, prefer one `comment apply` batch over many separate shell invocations
|
||||
5. Summarize when done
|
||||
|
||||
Guidelines:
|
||||
|
||||
- Work in the order that tells the clearest story, not necessarily file order
|
||||
- Navigate before commenting so the user sees the code you're discussing
|
||||
- Use `comment apply` for agent-generated batches and `comment add` for one-off notes
|
||||
- Use `--focus` sparingly when the note itself should actively steer the review
|
||||
- Keep comments focused: intent, structure, risks, or follow-ups
|
||||
- Don't comment on every hunk -- highlight what the user wouldn't spot themselves
|
||||
|
||||
## Common errors
|
||||
|
||||
- **"No visible diff file matches ..."** -- the file is not in the loaded review. Check `context`, then `reload` if needed.
|
||||
- **"No active Hunk sessions"** -- ask the user to open Hunk in their terminal.
|
||||
- **"Multiple active sessions match"** -- pass `<session-id>` explicitly.
|
||||
- **"No active Hunk session matches session path ..."** -- for advanced split-path reloads, verify the live window `Path` via `hunk session get` or `list`, then use `--session-path`.
|
||||
- **"Pass the replacement Hunk command after `--`"** -- include `--` before the nested `diff` / `show` command.
|
||||
- **"Pass --stdin to read batch comments from stdin JSON."** -- `comment apply` only reads its batch payload from stdin.
|
||||
- **"Specify exactly one navigation target"** -- pick one of `--hunk`, `--old-line`, or `--new-line`.
|
||||
- **"Specify either --next-comment or --prev-comment, not both."** -- choose one comment-navigation direction.
|
||||
269
reference/atuin-18.16.1/.claude/skills/release/SKILL.md
Executable file
269
reference/atuin-18.16.1/.claude/skills/release/SKILL.md
Executable file
@@ -0,0 +1,269 @@
|
||||
---
|
||||
name: release
|
||||
description: >
|
||||
Orchestrate a multi-step Atuin CLI release — version bumping, changelog
|
||||
generation, PR creation, tagging, and crates.io publishing. Invoke with
|
||||
/release or /release <version>.
|
||||
disable-model-invocation: true
|
||||
argument-hint: [version]
|
||||
---
|
||||
|
||||
# Atuin CLI Release
|
||||
|
||||
You are orchestrating a release of the Atuin CLI. Follow the steps below
|
||||
**in order**, pausing at each checkpoint for user confirmation. Do not skip
|
||||
steps or combine them.
|
||||
|
||||
## Current State
|
||||
|
||||
- Workspace version: !`sed -n '/^\[workspace\.package\]/,/^\[/s/^version = "\(.*\)"/\1/p' Cargo.toml`
|
||||
- Latest tag: !`git describe --tags --abbrev=0 2>/dev/null || echo "none"`
|
||||
- Suggested next version: !`git-cliff --bumped-version 2>/dev/null | sed 's/^v//' || echo "(unknown)"`
|
||||
|
||||
---
|
||||
|
||||
## Step 1 — Check Dependencies
|
||||
|
||||
Verify these tools are installed: `git`, `gsed`, `cargo`, `gh`, `git-cliff`.
|
||||
|
||||
Use `command -v` for each. If any are missing, report which ones and stop.
|
||||
|
||||
---
|
||||
|
||||
## Step 2 — Determine Version
|
||||
|
||||
The target version may be provided as `$ARGUMENTS`. If it's empty, use
|
||||
AskUserQuestion to ask for the new version (show the current state above
|
||||
for reference).
|
||||
|
||||
After determining the version:
|
||||
- If it contains a `-` (e.g. `18.15.0-beta.1`), it is a **prerelease**.
|
||||
Note this — it affects changelog and publish behavior later.
|
||||
- Show the user: `current → new` and whether it's a prerelease.
|
||||
- **Checkpoint:** Ask the user to confirm before proceeding.
|
||||
|
||||
---
|
||||
|
||||
## Step 3 — Set Up Working Directory
|
||||
|
||||
Clone a fresh copy into a temp directory:
|
||||
|
||||
```bash
|
||||
WORKDIR=$(mktemp -d)
|
||||
git clone git@github.com:atuinsh/atuin.git "$WORKDIR"
|
||||
```
|
||||
|
||||
Print the working directory path so the user can find it if needed.
|
||||
All subsequent Bash commands run from `$WORKDIR`.
|
||||
|
||||
---
|
||||
|
||||
## Step 4 — Create Branch & Update Versions
|
||||
|
||||
1. Create a release branch named after the version (no `v` prefix):
|
||||
`git checkout -b <VERSION>`
|
||||
|
||||
2. Replace the old version with the new one in all `Cargo.toml` files.
|
||||
**Escape dots** in the old version so sed treats them literally:
|
||||
|
||||
```bash
|
||||
VERSION_PATTERN="${OLD_VERSION//./\\.}"
|
||||
find . -type f -name 'Cargo.toml' -not -path './.git/*' \
|
||||
-exec gsed -i "s/$VERSION_PATTERN/$NEW_VERSION/g" {} \;
|
||||
```
|
||||
|
||||
3. Run `cargo check` to update `Cargo.lock`.
|
||||
|
||||
4. Show `git diff --stat` and the version-related lines from the diff:
|
||||
```bash
|
||||
git diff --unified=0 -- '*.toml' | grep -E '^\+.*version' | grep -v '^\+\+\+'
|
||||
```
|
||||
|
||||
5. Verify the workspace version was actually updated by re-reading it
|
||||
from `Cargo.toml`.
|
||||
|
||||
6. **Checkpoint:** Show the diff summary and ask the user to confirm the
|
||||
version changes look correct.
|
||||
|
||||
---
|
||||
|
||||
## Step 5 — Update Changelog
|
||||
|
||||
The changelog strategy differs for prereleases vs stable releases:
|
||||
|
||||
- **Prerelease:** Maintain a running `## [unreleased]` section containing
|
||||
all changes since the last stable release. Use:
|
||||
`git-cliff --unreleased --strip all`
|
||||
(cliff.toml's `ignore_tags` already ignores beta/alpha tags, so
|
||||
`--unreleased` spans back to the last stable release automatically.)
|
||||
|
||||
- **Stable release:** Generate a versioned entry that replaces the
|
||||
`[unreleased]` section. Use:
|
||||
`git-cliff --unreleased --tag "v<VERSION>" --strip all`
|
||||
|
||||
Then update `CHANGELOG.md`:
|
||||
|
||||
1. If an existing `## [unreleased]` or `## [Unreleased]` section exists,
|
||||
**remove it entirely** (the heading and all content up to the next
|
||||
`## ` heading).
|
||||
|
||||
2. Insert the new entry before the first existing `## ` version heading.
|
||||
|
||||
3. **Checkpoint:** Read and display the new changelog entry to the user.
|
||||
Ask if they want any edits. If so, make the requested changes using
|
||||
the Edit tool. Repeat until they're satisfied.
|
||||
|
||||
---
|
||||
|
||||
## Step 6 — Commit & Push
|
||||
|
||||
Stage all changes and commit:
|
||||
|
||||
```
|
||||
chore(release): prepare for release <VERSION>
|
||||
```
|
||||
|
||||
Push the branch with `--set-upstream origin`.
|
||||
|
||||
---
|
||||
|
||||
## Step 7 — Create PR & Wait for Merge
|
||||
|
||||
### Create the PR
|
||||
|
||||
Extract the changelog entry body (everything between the new `## ` heading
|
||||
and the next one) for the PR description.
|
||||
|
||||
For prereleases, the heading to match is `## [unreleased]`.
|
||||
For stable releases, it's `## <VERSION>` (escape dots in the awk pattern).
|
||||
|
||||
Create the PR:
|
||||
```bash
|
||||
gh pr create \
|
||||
--title "chore(release): prepare for release <VERSION>" \
|
||||
--body "<body with changelog>" \
|
||||
--repo atuinsh/atuin
|
||||
```
|
||||
|
||||
Show the PR URL to the user.
|
||||
|
||||
### Wait for merge
|
||||
|
||||
Start a **persistent Monitor** that polls the PR status every 30 seconds.
|
||||
The monitor script must:
|
||||
- **Only emit output** on meaningful state changes: all checks green, PR
|
||||
merged, or PR closed. Silent polls keep the monitor quiet and avoid
|
||||
flooding notifications.
|
||||
- Handle transient API errors gracefully (don't crash on a single failure)
|
||||
- Exit 0 on `MERGED`, exit 1 on `CLOSED`
|
||||
|
||||
The rollup mixes two entry shapes: `CheckRun` entries use `status` +
|
||||
`conclusion`, while `StatusContext` entries use `state`. A check counts
|
||||
as "passing" when it's in a terminal state with a non-failing outcome.
|
||||
Treat `SUCCESS`, `SKIPPED`, and `NEUTRAL` as passing — some release
|
||||
workflows (e.g. `announce`, `build-global-artifacts`) are conditional
|
||||
and report `SKIPPED` on non-tag events, which is expected, not a
|
||||
failure.
|
||||
|
||||
Example monitor script (substitute the actual PR number):
|
||||
```bash
|
||||
checks_passed=false
|
||||
while true; do
|
||||
json=$(gh pr view PR_NUM --repo atuinsh/atuin --json state,statusCheckRollup 2>/dev/null) || { sleep 30; continue; }
|
||||
state=$(echo "$json" | jq -r '.state')
|
||||
case "$state" in
|
||||
MERGED) echo "PR #PR_NUM has been merged!"; exit 0 ;;
|
||||
CLOSED) echo "PR #PR_NUM was closed without merging."; exit 1 ;;
|
||||
esac
|
||||
# Only notify once when all checks reach a terminal passing state.
|
||||
# CheckRun entries carry `status`/`conclusion`; StatusContext entries
|
||||
# carry `state`. SKIPPED and NEUTRAL count as passing.
|
||||
if [ "$checks_passed" = false ]; then
|
||||
counts=$(echo "$json" | jq -r '
|
||||
[.statusCheckRollup[]?] as $all
|
||||
| ($all | map(select(
|
||||
(.status == "COMPLETED" and (.conclusion | IN("SUCCESS","SKIPPED","NEUTRAL")))
|
||||
or .state == "SUCCESS"
|
||||
)) | length) as $passing
|
||||
| ($all | map(select(
|
||||
(.status == "COMPLETED" and (.conclusion | IN("FAILURE","TIMED_OUT","CANCELLED","ACTION_REQUIRED","STALE")))
|
||||
or (.state | IN("FAILURE","ERROR"))
|
||||
)) | length) as $failing
|
||||
| "\($all | length) \($passing) \($failing)"
|
||||
' 2>/dev/null)
|
||||
read -r total passing failing <<<"$counts"
|
||||
if [ "${failing:-0}" -gt 0 ] 2>/dev/null; then
|
||||
echo "PR #PR_NUM has $failing failing check(s) — investigate before merging."
|
||||
checks_passed=true # don't re-notify
|
||||
elif [ "${total:-0}" -gt 0 ] 2>/dev/null && [ "$total" = "$passing" ]; then
|
||||
echo "All $total checks passed on PR #PR_NUM — ready to merge!"
|
||||
checks_passed=true
|
||||
fi
|
||||
fi
|
||||
sleep 30
|
||||
done
|
||||
```
|
||||
|
||||
Tell the user to go review and merge the PR. While the monitor runs, you
|
||||
can respond to other questions — the monitor notifications will arrive
|
||||
asynchronously.
|
||||
|
||||
When the monitor reports `MERGED`, proceed to the next step.
|
||||
If it reports `CLOSED`, inform the user and stop the release.
|
||||
|
||||
---
|
||||
|
||||
## Step 8 — Tag Release
|
||||
|
||||
Back in the working directory:
|
||||
|
||||
```bash
|
||||
git checkout main
|
||||
git pull
|
||||
git tag "v<VERSION>"
|
||||
git push --tags
|
||||
```
|
||||
|
||||
Tell the user the tag was pushed and the release CI workflow has been
|
||||
triggered.
|
||||
|
||||
---
|
||||
|
||||
## Step 9 — Publish to crates.io
|
||||
|
||||
**If this is a prerelease**, skip this step entirely and tell the user.
|
||||
|
||||
**If this is a stable release**, ask the user whether to publish.
|
||||
|
||||
If yes, publish each crate **in dependency order** using `--no-verify`
|
||||
(the code already passed CI, and verification fails when crates.io
|
||||
hasn't indexed a freshly-published dependency yet):
|
||||
|
||||
```
|
||||
atuin-common, atuin-client, atuin-ai, atuin-dotfiles, atuin-history,
|
||||
atuin-nucleo/matcher, atuin-nucleo, atuin-daemon, atuin-kv,
|
||||
atuin-scripts, atuin-server-database, atuin-server-postgres,
|
||||
atuin-server-sqlite, atuin-server, atuin-pty-proxy, atuin
|
||||
```
|
||||
|
||||
For each crate, run from `crates/<name>`:
|
||||
```bash
|
||||
cargo publish --no-verify 2>&1
|
||||
```
|
||||
|
||||
If it fails with "already uploaded", report it as a skip (not an error) —
|
||||
some crates like `atuin-nucleo` are versioned independently and may
|
||||
already be published at their current version.
|
||||
|
||||
If it fails for any other reason, stop and report the error.
|
||||
|
||||
---
|
||||
|
||||
## Completion
|
||||
|
||||
Summarize what was done:
|
||||
- Version released
|
||||
- PR URL
|
||||
- Tag name
|
||||
- Which crates were published (if any)
|
||||
- Working directory path and how to clean it up (`rm -rf`)
|
||||
7
reference/atuin-18.16.1/.codespellrc
Executable file
7
reference/atuin-18.16.1/.codespellrc
Executable file
@@ -0,0 +1,7 @@
|
||||
[codespell]
|
||||
# Ref: https://github.com/codespell-project/codespell#using-a-config-file
|
||||
skip = .git*,*.lock,.codespellrc,CODE_OF_CONDUCT.md,CONTRIBUTORS
|
||||
check-hidden = true
|
||||
# ignore-regex =
|
||||
ignore-words-list = crate,ratatui,inbetween,iterm,fo,brunch
|
||||
|
||||
28
reference/atuin-18.16.1/.depot/workflows/codespell.yml
Executable file
28
reference/atuin-18.16.1/.depot/workflows/codespell.yml
Executable file
@@ -0,0 +1,28 @@
|
||||
# Depot CI Migration
|
||||
# Source: .github/workflows/codespell.yml
|
||||
#
|
||||
# No changes were necessary.
|
||||
|
||||
# Codespell configuration is within .codespellrc
|
||||
name: Codespell
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
permissions:
|
||||
contents: read
|
||||
jobs:
|
||||
codespell:
|
||||
name: Check for spelling errors
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
- name: Codespell
|
||||
uses: codespell-project/actions-codespell@v2
|
||||
with:
|
||||
# This is regenerated from commit history
|
||||
# we cannot rewrite commit history, and I'd rather not correct it
|
||||
# every time
|
||||
exclude_file: CHANGELOG.md
|
||||
36
reference/atuin-18.16.1/.depot/workflows/installer.yml
Executable file
36
reference/atuin-18.16.1/.depot/workflows/installer.yml
Executable file
@@ -0,0 +1,36 @@
|
||||
# Depot CI Migration
|
||||
# Source: .github/workflows/installer.yml
|
||||
#
|
||||
# No changes were necessary.
|
||||
|
||||
name: Install
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
paths: .github/workflows/installer.yml
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
jobs:
|
||||
install:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [depot-ubuntu-24.04, macos-14]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install zsh for ubuntu
|
||||
if: matrix.os == 'depot-ubuntu-24.04'
|
||||
run: |
|
||||
sudo apt install zsh
|
||||
- name: Test install script on bash
|
||||
run: |
|
||||
/bin/bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)"
|
||||
[ -d "$HOME/.atuin" ] && source $HOME/.atuin/bin/env
|
||||
atuin --help
|
||||
- name: Test install script on zsh
|
||||
shell: zsh {0}
|
||||
run: |
|
||||
/bin/bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)"
|
||||
[ -d "$HOME/.atuin" ] && source $HOME/.atuin/bin/env
|
||||
atuin --help
|
||||
33
reference/atuin-18.16.1/.depot/workflows/nix.yml
Executable file
33
reference/atuin-18.16.1/.depot/workflows/nix.yml
Executable file
@@ -0,0 +1,33 @@
|
||||
# Depot CI Migration
|
||||
# Source: .github/workflows/nix.yml
|
||||
#
|
||||
# No changes were necessary.
|
||||
|
||||
# Verify the Nix build is working
|
||||
# Failures will usually occur due to an out of date Rust version
|
||||
# That can be updated to the latest version in nixpkgs-unstable with `nix flake update`
|
||||
name: Nix
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths-ignore:
|
||||
- 'ui/**'
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths-ignore:
|
||||
- 'ui/**'
|
||||
jobs:
|
||||
check:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: cachix/install-nix-action@v31
|
||||
- name: Run nix flake check
|
||||
run: nix flake check --print-build-logs
|
||||
build-test:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: cachix/install-nix-action@v31
|
||||
- name: Run nix build
|
||||
run: nix build --print-build-logs
|
||||
187
reference/atuin-18.16.1/.depot/workflows/rust.yml
Executable file
187
reference/atuin-18.16.1/.depot/workflows/rust.yml
Executable file
@@ -0,0 +1,187 @@
|
||||
# Depot CI Migration
|
||||
# Source: .github/workflows/rust.yml
|
||||
#
|
||||
# No changes were necessary.
|
||||
|
||||
name: Rust
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths-ignore:
|
||||
- "ui/**"
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths-ignore:
|
||||
- "ui/**"
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [depot-ubuntu-24.04, macos-14, windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.94.0
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }}
|
||||
- name: Run cargo build common
|
||||
run: cargo build -p atuin-common --locked --release
|
||||
- name: Run cargo build client
|
||||
run: cargo build -p atuin-client --locked --release
|
||||
- name: Run cargo build server
|
||||
run: cargo build -p atuin-server --locked --release
|
||||
- name: Run cargo build main
|
||||
run: cargo build --all --locked --release
|
||||
cross-compile:
|
||||
strategy:
|
||||
matrix:
|
||||
# There was an attempt to make cross-compiles also work on FreeBSD, but that failed with:
|
||||
#
|
||||
# warning: libelf.so.2, needed by <...>/libkvm.so, not found (try using -rpath or -rpath-link)
|
||||
target: [x86_64-unknown-illumos]
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install cross
|
||||
uses: taiki-e/install-action@v2
|
||||
with:
|
||||
tool: cross
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ matrix.target }}-cross-compile-${{ hashFiles('**/Cargo.lock') }}
|
||||
- name: Run cross build common
|
||||
run: cross build -p atuin-common --locked --target ${{ matrix.target }}
|
||||
- name: Run cross build client
|
||||
run: cross build -p atuin-client --locked --target ${{ matrix.target }}
|
||||
- name: Run cross build server
|
||||
run: cross build -p atuin-server --locked --target ${{ matrix.target }}
|
||||
- name: Run cross build main
|
||||
run: |
|
||||
cross build --all --locked --target ${{ matrix.target }}
|
||||
unit-test:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [depot-ubuntu-24.04, macos-14, windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.94.0
|
||||
- uses: taiki-e/install-action@v2
|
||||
name: Install nextest
|
||||
with:
|
||||
tool: cargo-nextest
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
|
||||
- name: Run cargo test
|
||||
run: cargo nextest run --lib --bins
|
||||
check:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [depot-ubuntu-24.04, macos-14, windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.94.0
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
|
||||
- name: Run cargo check (all features)
|
||||
run: cargo check --all-features --workspace
|
||||
- name: Run cargo check (no features)
|
||||
run: cargo check --no-default-features --workspace
|
||||
- name: Run cargo check (sync)
|
||||
run: cargo check --no-default-features --features sync --workspace
|
||||
- name: Run cargo check (server)
|
||||
run: cargo check -p atuin-server
|
||||
- name: Run cargo check (client only)
|
||||
run: cargo check --no-default-features --features client --workspace
|
||||
integration-test:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
services:
|
||||
postgres:
|
||||
image: postgres
|
||||
env:
|
||||
POSTGRES_USER: atuin
|
||||
POSTGRES_PASSWORD: pass
|
||||
POSTGRES_DB: atuin
|
||||
ports:
|
||||
- 5432:5432
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.94.0
|
||||
- uses: taiki-e/install-action@v2
|
||||
name: Install nextest
|
||||
with:
|
||||
tool: cargo-nextest
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
|
||||
- name: Run cargo test
|
||||
run: cargo nextest run --test '*'
|
||||
env:
|
||||
ATUIN_DB_URI: postgres://atuin:pass@localhost:5432/atuin
|
||||
clippy:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install latest rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.94.0
|
||||
components: clippy
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
|
||||
- name: Run clippy
|
||||
run: cargo clippy -- -D warnings -D clippy::redundant_clone
|
||||
format:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install latest rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.94.0
|
||||
components: rustfmt
|
||||
- name: Format
|
||||
run: cargo fmt -- --check
|
||||
20
reference/atuin-18.16.1/.depot/workflows/shellcheck.yml
Executable file
20
reference/atuin-18.16.1/.depot/workflows/shellcheck.yml
Executable file
@@ -0,0 +1,20 @@
|
||||
# Depot CI Migration
|
||||
# Source: .github/workflows/shellcheck.yml
|
||||
#
|
||||
# No changes were necessary.
|
||||
|
||||
name: Shellcheck
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
jobs:
|
||||
shellcheck:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Run shellcheck
|
||||
uses: ludeeus/action-shellcheck@master
|
||||
env:
|
||||
SHELLCHECK_OPTS: "-e SC2148"
|
||||
25
reference/atuin-18.16.1/.depot/workflows/update-nix-deps.yml
Executable file
25
reference/atuin-18.16.1/.depot/workflows/update-nix-deps.yml
Executable file
@@ -0,0 +1,25 @@
|
||||
# Depot CI Migration
|
||||
# Source: .github/workflows/update-nix-deps.yml
|
||||
#
|
||||
# No changes were necessary.
|
||||
|
||||
name: Update Nix Deps
|
||||
on:
|
||||
workflow_dispatch: # allows manual triggering
|
||||
schedule:
|
||||
- cron: '0 0 1 * *' # runs monthly on the first day of the month at 00:00
|
||||
jobs:
|
||||
lockfile:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
if: github.repository == 'atuinsh/atuin'
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- name: Update flake.lock
|
||||
uses: DeterminateSystems/update-flake-lock@main
|
||||
with:
|
||||
pr-title: "chore(deps): update flake.lock"
|
||||
pr-labels: |
|
||||
dependencies
|
||||
2
reference/atuin-18.16.1/.dockerignore
Executable file
2
reference/atuin-18.16.1/.dockerignore
Executable file
@@ -0,0 +1,2 @@
|
||||
./target
|
||||
Dockerfile
|
||||
5
reference/atuin-18.16.1/.gitattributes
vendored
Executable file
5
reference/atuin-18.16.1/.gitattributes
vendored
Executable file
@@ -0,0 +1,5 @@
|
||||
*.sh eol=lf
|
||||
*.nix eol=lf
|
||||
*.zsh eol=lf
|
||||
|
||||
*.sql eol=lf
|
||||
84
reference/atuin-18.16.1/.github/DISCUSSION_TEMPLATE/support.yml
vendored
Executable file
84
reference/atuin-18.16.1/.github/DISCUSSION_TEMPLATE/support.yml
vendored
Executable file
@@ -0,0 +1,84 @@
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: What operating system are you using?
|
||||
placeholder: "Example: macOS Big Sur"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Shell
|
||||
description: What shell are you using?
|
||||
placeholder: "Example: zsh 5.8.1"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of atuin are you running?
|
||||
multiple: false
|
||||
options: # how often will I forget to update this? a lot.
|
||||
- v17.0.0 (Default)
|
||||
- v16.0.0
|
||||
- v15.0.0
|
||||
- v14.0.1
|
||||
- v14.0.0
|
||||
- v13.0.1
|
||||
- v13.0.0
|
||||
- v12.0.0
|
||||
- v11.0.0
|
||||
- v0.10.0
|
||||
- v0.9.1
|
||||
- v0.9.0
|
||||
- v0.8.1
|
||||
- v0.8.0
|
||||
- v0.7.2
|
||||
- v0.7.1
|
||||
- v0.7.0
|
||||
- v0.6.4
|
||||
- v0.6.3
|
||||
default: 0
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Self hosted
|
||||
description: Are you self hosting atuin server?
|
||||
options:
|
||||
- label: I am self hosting atuin server
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Search the issues
|
||||
description: Did you search the issues and discussions for your problem?
|
||||
options:
|
||||
- label: I checked that someone hasn't already asked about the same issue
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Behaviour
|
||||
description: "Please describe the issue - what you expected to happen, what actually happened"
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Logs
|
||||
description: "If possible, please include logs from atuin, especially if you self host the server - ATUIN_LOG=debug"
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Extra information
|
||||
description: "Anything else you'd like to add?"
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: The Code of Conduct helps create a safe space for everyone. We require
|
||||
that everyone agrees to it.
|
||||
options:
|
||||
- label: I agree to follow this project's [Code of Conduct](https://github.com/atuinsh/atuin/blob/main/CODE_OF_CONDUCT.md)
|
||||
required: true
|
||||
13
reference/atuin-18.16.1/.github/FUNDING.yml
vendored
Executable file
13
reference/atuin-18.16.1/.github/FUNDING.yml
vendored
Executable file
@@ -0,0 +1,13 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: [atuinsh]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
39
reference/atuin-18.16.1/.github/ISSUE_TEMPLATE/bug.yaml
vendored
Executable file
39
reference/atuin-18.16.1/.github/ISSUE_TEMPLATE/bug.yaml
vendored
Executable file
@@ -0,0 +1,39 @@
|
||||
name: Bug Report
|
||||
description: File a bug report
|
||||
title: "[Bug]: "
|
||||
labels: ["bug", "triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report!
|
||||
- type: textarea
|
||||
id: what-expected
|
||||
attributes:
|
||||
label: What did you expect to happen?
|
||||
placeholder: Tell us what you expected to see!
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: What happened?
|
||||
placeholder: Tell us what you see!
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: doctor
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: Atuin doctor output
|
||||
description: Please run 'atuin doctor' and share the output. If it fails to run, share any errors. This requires Atuin >=v18.1.0
|
||||
render: yaml
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/atuinsh/atuin/blob/main/CODE_OF_CONDUCT.md)
|
||||
options:
|
||||
- label: I agree to follow this project's Code of Conduct
|
||||
required: true
|
||||
19
reference/atuin-18.16.1/.github/dependabot.yml
vendored
Executable file
19
reference/atuin-18.16.1/.github/dependabot.yml
vendored
Executable file
@@ -0,0 +1,19 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "cargo" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
- package-ecosystem: "docker" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
5
reference/atuin-18.16.1/.github/pull_request_template.md
vendored
Executable file
5
reference/atuin-18.16.1/.github/pull_request_template.md
vendored
Executable file
@@ -0,0 +1,5 @@
|
||||
<!-- Thank you for making a PR! Bug fixes are always welcome, but if you're adding a new feature or changing an existing one, we'd really appreciate if you open an issue, post on the forum, or drop in on Discord -->
|
||||
|
||||
## Checks
|
||||
- [ ] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle
|
||||
- [ ] I have checked that there are no existing pull requests for the same thing
|
||||
28
reference/atuin-18.16.1/.github/workflows/codespell.yml
vendored
Executable file
28
reference/atuin-18.16.1/.github/workflows/codespell.yml
vendored
Executable file
@@ -0,0 +1,28 @@
|
||||
# Codespell configuration is within .codespellrc
|
||||
---
|
||||
name: Codespell
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
codespell:
|
||||
name: Check for spelling errors
|
||||
runs-on: depot-ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
- name: Codespell
|
||||
uses: codespell-project/actions-codespell@v2
|
||||
with:
|
||||
# This is regenerated from commit history
|
||||
# we cannot rewrite commit history, and I'd rather not correct it
|
||||
# every time
|
||||
exclude_file: CHANGELOG.md
|
||||
61
reference/atuin-18.16.1/.github/workflows/docker.yaml
vendored
Executable file
61
reference/atuin-18.16.1/.github/workflows/docker.yaml
vendored
Executable file
@@ -0,0 +1,61 @@
|
||||
name: build-docker
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
concurrency:
|
||||
group: ${{ github.ref }}-docker
|
||||
cancel-in-progress: true
|
||||
permissions:
|
||||
packages: write
|
||||
contents: read
|
||||
id-token: write
|
||||
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get Repo Owner
|
||||
id: get_repo_owner
|
||||
run: echo "REPO_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" > $GITHUB_ENV
|
||||
|
||||
- uses: depot/setup-action@v1
|
||||
|
||||
- name: Login to container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
registry: ghcr.io
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ghcr.io/${{ env.REPO_OWNER }}/atuin
|
||||
flavor: |
|
||||
latest=false
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=sha,prefix=
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
|
||||
- name: Build and push
|
||||
uses: depot/build-push-action@v1
|
||||
with:
|
||||
push: true
|
||||
platforms: linux/amd64,linux/arm64
|
||||
file: ./Dockerfile
|
||||
context: .
|
||||
provenance: false
|
||||
build-args: |
|
||||
Version=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] || 'dev' }}
|
||||
GitCommit=${{ github.sha }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
38
reference/atuin-18.16.1/.github/workflows/installer.yml
vendored
Executable file
38
reference/atuin-18.16.1/.github/workflows/installer.yml
vendored
Executable file
@@ -0,0 +1,38 @@
|
||||
name: Install
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
paths: .github/workflows/installer.yml
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
install:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [depot-ubuntu-24.04, macos-14]
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install zsh for ubuntu
|
||||
if: matrix.os == 'depot-ubuntu-24.04'
|
||||
run: |
|
||||
sudo apt install zsh
|
||||
|
||||
- name: Test install script on bash
|
||||
run: |
|
||||
/bin/bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)"
|
||||
[ -d "$HOME/.atuin" ] && source $HOME/.atuin/bin/env
|
||||
atuin --help
|
||||
|
||||
- name: Test install script on zsh
|
||||
shell: zsh {0}
|
||||
run: |
|
||||
/bin/bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)"
|
||||
[ -d "$HOME/.atuin" ] && source $HOME/.atuin/bin/env
|
||||
atuin --help
|
||||
34
reference/atuin-18.16.1/.github/workflows/nix.yml
vendored
Executable file
34
reference/atuin-18.16.1/.github/workflows/nix.yml
vendored
Executable file
@@ -0,0 +1,34 @@
|
||||
# Verify the Nix build is working
|
||||
# Failures will usually occur due to an out of date Rust version
|
||||
# That can be updated to the latest version in nixpkgs-unstable with `nix flake update`
|
||||
name: Nix
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
paths-ignore:
|
||||
- 'ui/**'
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
paths-ignore:
|
||||
- 'ui/**'
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: cachix/install-nix-action@v31
|
||||
|
||||
- name: Run nix flake check
|
||||
run: nix flake check --print-build-logs
|
||||
|
||||
build-test:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: cachix/install-nix-action@v31
|
||||
|
||||
- name: Run nix build
|
||||
run: nix build --print-build-logs
|
||||
304
reference/atuin-18.16.1/.github/workflows/release.yml
vendored
Executable file
304
reference/atuin-18.16.1/.github/workflows/release.yml
vendored
Executable file
@@ -0,0 +1,304 @@
|
||||
# This file was autogenerated by dist: https://axodotdev.github.io/cargo-dist
|
||||
#
|
||||
# Copyright 2022-2024, axodotdev
|
||||
# SPDX-License-Identifier: MIT or Apache-2.0
|
||||
#
|
||||
# CI that:
|
||||
#
|
||||
# * checks for a Git Tag that looks like a release
|
||||
# * builds artifacts with dist (archives, installers, hashes)
|
||||
# * uploads those artifacts to temporary workflow zip
|
||||
# * on success, uploads the artifacts to a GitHub Release
|
||||
#
|
||||
# Note that the GitHub Release will be created with a generated
|
||||
# title/body based on your changelogs.
|
||||
|
||||
name: Release
|
||||
permissions:
|
||||
"contents": "write"
|
||||
|
||||
# This task will run whenever you push a git tag that looks like a version
|
||||
# like "1.0.0", "v0.1.0-prerelease.1", "my-app/0.1.0", "releases/v1.0.0", etc.
|
||||
# Various formats will be parsed into a VERSION and an optional PACKAGE_NAME, where
|
||||
# PACKAGE_NAME must be the name of a Cargo package in your workspace, and VERSION
|
||||
# must be a Cargo-style SemVer Version (must have at least major.minor.patch).
|
||||
#
|
||||
# If PACKAGE_NAME is specified, then the announcement will be for that
|
||||
# package (erroring out if it doesn't have the given version or isn't dist-able).
|
||||
#
|
||||
# If PACKAGE_NAME isn't specified, then the announcement will be for all
|
||||
# (dist-able) packages in the workspace with that version (this mode is
|
||||
# intended for workspaces with only one dist-able package, or with all dist-able
|
||||
# packages versioned/released in lockstep).
|
||||
#
|
||||
# If you push multiple tags at once, separate instances of this workflow will
|
||||
# spin up, creating an independent announcement for each one. However, GitHub
|
||||
# will hard limit this to 3 tags per commit, as it will assume more tags is a
|
||||
# mistake.
|
||||
#
|
||||
# If there's a prerelease-style suffix to the version, then the release(s)
|
||||
# will be marked as a prerelease.
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
tags:
|
||||
- '**[0-9]+.[0-9]+.[0-9]+*'
|
||||
|
||||
jobs:
|
||||
# Run 'dist plan' (or host) to determine what tasks we need to do
|
||||
plan:
|
||||
runs-on: "ubuntu-22.04"
|
||||
outputs:
|
||||
val: ${{ steps.plan.outputs.manifest }}
|
||||
tag: ${{ !github.event.pull_request && github.ref_name || '' }}
|
||||
tag-flag: ${{ !github.event.pull_request && format('--tag={0}', github.ref_name) || '' }}
|
||||
publishing: ${{ !github.event.pull_request }}
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: recursive
|
||||
- name: Install dist
|
||||
# we specify bash to get pipefail; it guards against the `curl` command
|
||||
# failing. otherwise `sh` won't catch that `curl` returned non-0
|
||||
shell: bash
|
||||
run: "curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.31.0/cargo-dist-installer.sh | sh"
|
||||
- name: Cache dist
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: cargo-dist-cache
|
||||
path: ~/.cargo/bin/dist
|
||||
# sure would be cool if github gave us proper conditionals...
|
||||
# so here's a doubly-nested ternary-via-truthiness to try to provide the best possible
|
||||
# functionality based on whether this is a pull_request, and whether it's from a fork.
|
||||
# (PRs run on the *source* but secrets are usually on the *target* -- that's *good*
|
||||
# but also really annoying to build CI around when it needs secrets to work right.)
|
||||
- id: plan
|
||||
run: |
|
||||
dist ${{ (!github.event.pull_request && format('host --steps=create --tag={0}', github.ref_name)) || 'plan' }} --output-format=json > plan-dist-manifest.json
|
||||
echo "dist ran successfully"
|
||||
cat plan-dist-manifest.json
|
||||
echo "manifest=$(jq -c "." plan-dist-manifest.json)" >> "$GITHUB_OUTPUT"
|
||||
- name: "Upload dist-manifest.json"
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: artifacts-plan-dist-manifest
|
||||
path: plan-dist-manifest.json
|
||||
|
||||
# Build and packages all the platform-specific things
|
||||
build-local-artifacts:
|
||||
name: build-local-artifacts (${{ join(matrix.targets, ', ') }})
|
||||
# Let the initial task tell us to not run (currently very blunt)
|
||||
needs:
|
||||
- plan
|
||||
if: ${{ fromJson(needs.plan.outputs.val).ci.github.artifacts_matrix.include != null && (needs.plan.outputs.publishing == 'true' || fromJson(needs.plan.outputs.val).ci.github.pr_run_mode == 'upload') }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
# Target platforms/runners are computed by dist in create-release.
|
||||
# Each member of the matrix has the following arguments:
|
||||
#
|
||||
# - runner: the github runner
|
||||
# - dist-args: cli flags to pass to dist
|
||||
# - install-dist: expression to run to install dist on the runner
|
||||
#
|
||||
# Typically there will be:
|
||||
# - 1 "global" task that builds universal installers
|
||||
# - N "local" tasks that build each platform's binaries and platform-specific installers
|
||||
matrix: ${{ fromJson(needs.plan.outputs.val).ci.github.artifacts_matrix }}
|
||||
runs-on: ${{ matrix.runner }}
|
||||
container: ${{ matrix.container && matrix.container.image || null }}
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
BUILD_MANIFEST_NAME: target/distrib/${{ join(matrix.targets, '-') }}-dist-manifest.json
|
||||
permissions:
|
||||
"attestations": "write"
|
||||
"contents": "read"
|
||||
"id-token": "write"
|
||||
steps:
|
||||
- name: enable windows longpaths
|
||||
run: |
|
||||
git config --global core.longpaths true
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: recursive
|
||||
- name: Install Rust non-interactively if not already installed
|
||||
if: ${{ matrix.container }}
|
||||
run: |
|
||||
if ! command -v cargo > /dev/null 2>&1; then
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
||||
fi
|
||||
- name: Install dist
|
||||
run: ${{ matrix.install_dist.run }}
|
||||
# Get the dist-manifest
|
||||
- name: Fetch local artifacts
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
pattern: artifacts-*
|
||||
path: target/distrib/
|
||||
merge-multiple: true
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
${{ matrix.packages_install }}
|
||||
- name: Build artifacts
|
||||
run: |
|
||||
# Actually do builds and make zips and whatnot
|
||||
dist build ${{ needs.plan.outputs.tag-flag }} --print=linkage --output-format=json ${{ matrix.dist_args }} > dist-manifest.json
|
||||
echo "dist ran successfully"
|
||||
- name: Attest
|
||||
uses: actions/attest-build-provenance@v3
|
||||
with:
|
||||
subject-path: "target/distrib/*${{ join(matrix.targets, ', ') }}*"
|
||||
- id: cargo-dist
|
||||
name: Post-build
|
||||
# We force bash here just because github makes it really hard to get values up
|
||||
# to "real" actions without writing to env-vars, and writing to env-vars has
|
||||
# inconsistent syntax between shell and powershell.
|
||||
shell: bash
|
||||
run: |
|
||||
# Parse out what we just built and upload it to scratch storage
|
||||
echo "paths<<EOF" >> "$GITHUB_OUTPUT"
|
||||
dist print-upload-files-from-manifest --manifest dist-manifest.json >> "$GITHUB_OUTPUT"
|
||||
echo "EOF" >> "$GITHUB_OUTPUT"
|
||||
|
||||
cp dist-manifest.json "$BUILD_MANIFEST_NAME"
|
||||
- name: "Upload artifacts"
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: artifacts-build-local-${{ join(matrix.targets, '_') }}
|
||||
path: |
|
||||
${{ steps.cargo-dist.outputs.paths }}
|
||||
${{ env.BUILD_MANIFEST_NAME }}
|
||||
|
||||
# Build and package all the platform-agnostic(ish) things
|
||||
build-global-artifacts:
|
||||
needs:
|
||||
- plan
|
||||
- build-local-artifacts
|
||||
runs-on: "ubuntu-22.04"
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
BUILD_MANIFEST_NAME: target/distrib/global-dist-manifest.json
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: recursive
|
||||
- name: Install cached dist
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: cargo-dist-cache
|
||||
path: ~/.cargo/bin/
|
||||
- run: chmod +x ~/.cargo/bin/dist
|
||||
# Get all the local artifacts for the global tasks to use (for e.g. checksums)
|
||||
- name: Fetch local artifacts
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
pattern: artifacts-*
|
||||
path: target/distrib/
|
||||
merge-multiple: true
|
||||
- id: cargo-dist
|
||||
shell: bash
|
||||
run: |
|
||||
dist build ${{ needs.plan.outputs.tag-flag }} --output-format=json "--artifacts=global" > dist-manifest.json
|
||||
echo "dist ran successfully"
|
||||
|
||||
# Parse out what we just built and upload it to scratch storage
|
||||
echo "paths<<EOF" >> "$GITHUB_OUTPUT"
|
||||
jq --raw-output ".upload_files[]" dist-manifest.json >> "$GITHUB_OUTPUT"
|
||||
echo "EOF" >> "$GITHUB_OUTPUT"
|
||||
|
||||
cp dist-manifest.json "$BUILD_MANIFEST_NAME"
|
||||
- name: "Upload artifacts"
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: artifacts-build-global
|
||||
path: |
|
||||
${{ steps.cargo-dist.outputs.paths }}
|
||||
${{ env.BUILD_MANIFEST_NAME }}
|
||||
# Determines if we should publish/announce
|
||||
host:
|
||||
needs:
|
||||
- plan
|
||||
- build-local-artifacts
|
||||
- build-global-artifacts
|
||||
# Only run if we're "publishing", and only if plan, local and global didn't fail (skipped is fine)
|
||||
if: ${{ always() && needs.plan.result == 'success' && needs.plan.outputs.publishing == 'true' && (needs.build-global-artifacts.result == 'skipped' || needs.build-global-artifacts.result == 'success') && (needs.build-local-artifacts.result == 'skipped' || needs.build-local-artifacts.result == 'success') }}
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
runs-on: "ubuntu-22.04"
|
||||
outputs:
|
||||
val: ${{ steps.host.outputs.manifest }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: recursive
|
||||
- name: Install cached dist
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: cargo-dist-cache
|
||||
path: ~/.cargo/bin/
|
||||
- run: chmod +x ~/.cargo/bin/dist
|
||||
# Fetch artifacts from scratch-storage
|
||||
- name: Fetch artifacts
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
pattern: artifacts-*
|
||||
path: target/distrib/
|
||||
merge-multiple: true
|
||||
- id: host
|
||||
shell: bash
|
||||
run: |
|
||||
dist host ${{ needs.plan.outputs.tag-flag }} --steps=upload --steps=release --output-format=json > dist-manifest.json
|
||||
echo "artifacts uploaded and released successfully"
|
||||
cat dist-manifest.json
|
||||
echo "manifest=$(jq -c "." dist-manifest.json)" >> "$GITHUB_OUTPUT"
|
||||
- name: "Upload dist-manifest.json"
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
# Overwrite the previous copy
|
||||
name: artifacts-dist-manifest
|
||||
path: dist-manifest.json
|
||||
# Create a GitHub Release while uploading all files to it
|
||||
- name: "Download GitHub Artifacts"
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
pattern: artifacts-*
|
||||
path: artifacts
|
||||
merge-multiple: true
|
||||
- name: Cleanup
|
||||
run: |
|
||||
# Remove the granular manifests
|
||||
rm -f artifacts/*-dist-manifest.json
|
||||
- name: Create GitHub Release
|
||||
env:
|
||||
PRERELEASE_FLAG: "${{ fromJson(steps.host.outputs.manifest).announcement_is_prerelease && '--prerelease' || '' }}"
|
||||
ANNOUNCEMENT_TITLE: "${{ fromJson(steps.host.outputs.manifest).announcement_title }}"
|
||||
ANNOUNCEMENT_BODY: "${{ fromJson(steps.host.outputs.manifest).announcement_github_body }}"
|
||||
RELEASE_COMMIT: "${{ github.sha }}"
|
||||
run: |
|
||||
# Write and read notes from a file to avoid quoting breaking things
|
||||
echo "$ANNOUNCEMENT_BODY" > $RUNNER_TEMP/notes.txt
|
||||
|
||||
gh release create "${{ needs.plan.outputs.tag }}" --target "$RELEASE_COMMIT" $PRERELEASE_FLAG --title "$ANNOUNCEMENT_TITLE" --notes-file "$RUNNER_TEMP/notes.txt" artifacts/*
|
||||
|
||||
announce:
|
||||
needs:
|
||||
- plan
|
||||
- host
|
||||
# use "always() && ..." to allow us to wait for all publish jobs while
|
||||
# still allowing individual publish jobs to skip themselves (for prereleases).
|
||||
# "host" however must run to completion, no skipping allowed!
|
||||
if: ${{ always() && needs.host.result == 'success' }}
|
||||
runs-on: "ubuntu-22.04"
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: recursive
|
||||
230
reference/atuin-18.16.1/.github/workflows/rust.yml
vendored
Executable file
230
reference/atuin-18.16.1/.github/workflows/rust.yml
vendored
Executable file
@@ -0,0 +1,230 @@
|
||||
name: Rust
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths-ignore:
|
||||
- "ui/**"
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths-ignore:
|
||||
- "ui/**"
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [depot-ubuntu-24.04, macos-14, windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.95.0
|
||||
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Run cargo build common
|
||||
run: cargo build -p atuin-common --locked --release
|
||||
|
||||
- name: Run cargo build client
|
||||
run: cargo build -p atuin-client --locked --release
|
||||
|
||||
- name: Run cargo build server
|
||||
run: cargo build -p atuin-server --locked --release
|
||||
|
||||
- name: Run cargo build main
|
||||
run: cargo build --all --locked --release
|
||||
|
||||
cross-compile:
|
||||
strategy:
|
||||
matrix:
|
||||
# There was an attempt to make cross-compiles also work on FreeBSD, but that failed with:
|
||||
#
|
||||
# warning: libelf.so.2, needed by <...>/libkvm.so, not found (try using -rpath or -rpath-link)
|
||||
target: [x86_64-unknown-illumos]
|
||||
runs-on: depot-ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install cross
|
||||
uses: taiki-e/install-action@v2
|
||||
with:
|
||||
tool: cross
|
||||
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ matrix.target }}-cross-compile-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Run cross build common
|
||||
run: cross build -p atuin-common --locked --target ${{ matrix.target }}
|
||||
|
||||
- name: Run cross build client
|
||||
run: cross build -p atuin-client --locked --target ${{ matrix.target }}
|
||||
|
||||
- name: Run cross build server
|
||||
run: cross build -p atuin-server --locked --target ${{ matrix.target }}
|
||||
|
||||
- name: Run cross build main
|
||||
run: |
|
||||
cross build --all --locked --target ${{ matrix.target }}
|
||||
|
||||
unit-test:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [depot-ubuntu-24.04, macos-14, windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.95.0
|
||||
|
||||
- uses: taiki-e/install-action@v2
|
||||
name: Install nextest
|
||||
with:
|
||||
tool: cargo-nextest
|
||||
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Run cargo test
|
||||
run: cargo nextest run --lib --bins
|
||||
|
||||
check:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [depot-ubuntu-24.04, macos-14, windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.95.0
|
||||
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Run cargo check (all features)
|
||||
run: cargo check --all-features --workspace
|
||||
|
||||
- name: Run cargo check (no features)
|
||||
run: cargo check --no-default-features --workspace
|
||||
|
||||
- name: Run cargo check (sync)
|
||||
run: cargo check --no-default-features --features sync --workspace
|
||||
|
||||
- name: Run cargo check (server)
|
||||
run: cargo check -p atuin-server
|
||||
|
||||
- name: Run cargo check (client only)
|
||||
run: cargo check --no-default-features --features client --workspace
|
||||
|
||||
integration-test:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres
|
||||
env:
|
||||
POSTGRES_USER: atuin
|
||||
POSTGRES_PASSWORD: pass
|
||||
POSTGRES_DB: atuin
|
||||
ports:
|
||||
- 5432:5432
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.95.0
|
||||
|
||||
- uses: taiki-e/install-action@v2
|
||||
name: Install nextest
|
||||
with:
|
||||
tool: cargo-nextest
|
||||
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Run cargo test
|
||||
run: cargo nextest run --test '*'
|
||||
env:
|
||||
ATUIN_DB_URI: postgres://atuin:pass@localhost:5432/atuin
|
||||
|
||||
clippy:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install latest rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.95.0
|
||||
components: clippy
|
||||
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target
|
||||
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
|
||||
|
||||
- name: Run clippy
|
||||
run: cargo clippy -- -D warnings -D clippy::redundant_clone
|
||||
|
||||
format:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install latest rust
|
||||
uses: dtolnay/rust-toolchain@master
|
||||
with:
|
||||
toolchain: 1.95.0
|
||||
components: rustfmt
|
||||
|
||||
- name: Format
|
||||
run: cargo fmt -- --check
|
||||
18
reference/atuin-18.16.1/.github/workflows/shellcheck.yml
vendored
Executable file
18
reference/atuin-18.16.1/.github/workflows/shellcheck.yml
vendored
Executable file
@@ -0,0 +1,18 @@
|
||||
name: Shellcheck
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
shellcheck:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Run shellcheck
|
||||
uses: ludeeus/action-shellcheck@master
|
||||
env:
|
||||
SHELLCHECK_OPTS: "-e SC2148"
|
||||
21
reference/atuin-18.16.1/.github/workflows/update-nix-deps.yml
vendored
Executable file
21
reference/atuin-18.16.1/.github/workflows/update-nix-deps.yml
vendored
Executable file
@@ -0,0 +1,21 @@
|
||||
name: Update Nix Deps
|
||||
on:
|
||||
workflow_dispatch: # allows manual triggering
|
||||
schedule:
|
||||
- cron: '0 0 1 * *' # runs monthly on the first day of the month at 00:00
|
||||
|
||||
jobs:
|
||||
lockfile:
|
||||
runs-on: depot-ubuntu-24.04
|
||||
if: github.repository == 'atuinsh/atuin'
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- name: Update flake.lock
|
||||
uses: DeterminateSystems/update-flake-lock@main
|
||||
with:
|
||||
pr-title: "chore(deps): update flake.lock"
|
||||
pr-labels: |
|
||||
dependencies
|
||||
17
reference/atuin-18.16.1/.gitignore
vendored
Executable file
17
reference/atuin-18.16.1/.gitignore
vendored
Executable file
@@ -0,0 +1,17 @@
|
||||
.DS_Store
|
||||
/target
|
||||
*/target
|
||||
.env
|
||||
.idea/
|
||||
.vscode/
|
||||
result
|
||||
publish.sh
|
||||
.envrc
|
||||
.planning/
|
||||
|
||||
ui/backend/target
|
||||
ui/backend/gen
|
||||
|
||||
sqlite-server.db*
|
||||
|
||||
.atuin/permissions.*.toml
|
||||
0
reference/atuin-18.16.1/.gitkeep
Normal file
0
reference/atuin-18.16.1/.gitkeep
Normal file
14
reference/atuin-18.16.1/.mailmap
Executable file
14
reference/atuin-18.16.1/.mailmap
Executable file
@@ -0,0 +1,14 @@
|
||||
networkException <git@nwex.de> <github@nwex.de>
|
||||
Violet Shreve <github@shreve.io> <jacob@shreve.io>
|
||||
Chris Rose <offline@offby1.net> <offbyone@github.com>
|
||||
Conrad Ludgate <conradludgate@gmail.com> <conrad.ludgate@truelayer.com>
|
||||
Cristian Le <github@lecris.me> <cristian.le@mpsd.mpg.de>
|
||||
Dennis Trautwein <git@dtrautwein.eu> <dennis.trautwein@posteo.de>
|
||||
Ellie Huxtable <ellie@atuin.sh> <e@elm.sh>
|
||||
Ellie Huxtable <ellie@atuin.sh> <ellie@elliehuxtable.com>
|
||||
Frank Hamand <frankhamand@gmail.com> <frank.hamand@coinbase.com>
|
||||
Jakob Schrettenbrunner <dev@schrej.net> <jakob.schrettenbrunner@telekom.de>
|
||||
Nemo157 <git@nemo157.com> <github@nemo157.com>
|
||||
Richard de Boer <git@tubul.net> <github@tubul.net>
|
||||
Sandro <sandro.jaeckel@gmail.com> <sandro.jaeckel@sap.com>
|
||||
TymanWasTaken <tbeckman530@gmail.com> <ty@blahaj.land>
|
||||
4
reference/atuin-18.16.1/.rustfmt.toml
Executable file
4
reference/atuin-18.16.1/.rustfmt.toml
Executable file
@@ -0,0 +1,4 @@
|
||||
reorder_imports = true
|
||||
# uncomment once stable
|
||||
#imports_granularity = "crate"
|
||||
#group_imports = "StdExternalCrate"
|
||||
Reference in New Issue
Block a user