diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml
deleted file mode 100644
index 9722d9e..0000000
--- a/.forgejo/workflows/release.yaml
+++ /dev/null
@@ -1,101 +0,0 @@
-name: Release
-
-on:
- push:
- tags:
- - 'v*'
-
-jobs:
- Build:
- runs-on: docker
- services:
- localstack:
- image: localstack/localstack
- ports:
- - "4566:4566"
- env:
- SERVICES: ssm,dynamodb
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup Go
- uses: actions/setup-go@v3
- with:
- go-version: 1.25
- - name: Configure
- run: |
- git config --global url."https://${{ secrets.GO_MODULES_TOKEN }}:x-oauth-basic@github.com/lmika".insteadOf "https://github.com/lmika"
- - name: Test
- run: |
- set -xue
- go get ./...
- go test -p 1 ./...
- env:
- TEST_DYNAMO_URL: "http://localstack:4566"
- GOPRIVATE: "github:com/lmika/*"
-
- Site:
- needs: Build
- runs-on: docker
- env:
- NETLIFY_SITE_ID: 987651c8-4ffd-48d8-af67-4dbd49c48887
- NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup Go
- uses: actions/setup-go@v3
- with:
- go-version: 1.24
- - uses: actions/setup-node@v4
- with:
- node-version: 21.1
- - name: Install Hugo
- run: |
- curl -LO https://github.com/gohugoio/hugo/releases/download/v0.146.0/hugo_extended_0.146.0_linux-amd64.deb
- apt install -y ./hugo_extended_0.146.0_linux-amd64.deb
- - name: Install Netlify CLI
- run: |
- npm install netlify-cli@15.0.1 -g
- - name: Build Site
- run: |
- cd _site
- mkdir -p themes
- git clone https://github.com/alex-shpak/hugo-book.git themes/hugo-book
- npm install
- hugo --minify
- - name: Publish Site
- run: |
- cd _site
- netlify deploy --dir docs --prod
-
- 'Release':
- needs: Build
- runs-on: macos
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Setup Go
- uses: actions/setup-go@v3
- with:
- go-version: 1.25
- - name: Setup Dependencies
- run: |
- brew install gpg
- - name: Configure
- run: |
- git config --global url."https://${{ secrets.GO_MODULES_TOKEN }}:x-oauth-basic@github.com/lmika".insteadOf "https://github.com/lmika"
- - name: Setup Goreleaser
- run: |
- go install github.com/goreleaser/goreleaser/v2@v2.12.7
- - name: Release
- run: |
- goreleaser release -f goreleaser.yml --skip=validate --clean
- env:
- GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- HOMEBREW_TAP_PRIVATE_KEY: ${{ secrets.HOMEBREW_TAP_PRIVATE_KEY }}
- MACOS_SIGN_P12: ${{ secrets.MACOS_SIGN_P12 }}
- MACOS_SIGN_PASSWORD: ${{ secrets.MACOS_SIGN_PASSWORD }}
- MACOS_NOTARY_KEY: ${{ secrets.MACOS_NOTARY_KEY }}
- MACOS_NOTARY_KEY_ID: ${{ secrets.MACOS_NOTARY_KEY_ID }}
- MACOS_NOTARY_ISSUER_ID: ${{ secrets.MACOS_NOTARY_ISSUER_ID }}
diff --git a/.forgejo/workflows/ci.yaml b/.github/workflows/ci.yaml
similarity index 79%
rename from .forgejo/workflows/ci.yaml
rename to .github/workflows/ci.yaml
index 132e336..580bbae 100644
--- a/.forgejo/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -4,11 +4,13 @@ on:
push:
branches:
- main
- - feature/*
+ pull_request:
+ branches:
+ - main
jobs:
- Build:
- runs-on: docker
+ build:
+ runs-on: ubuntu-latest
services:
localstack:
image: localstack/localstack
@@ -22,7 +24,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v3
with:
- go-version: 1.25
+ go-version: 1.22
- name: Configure
run: |
git config --global url."https://${{ secrets.GO_MODULES_TOKEN }}:x-oauth-basic@github.com/lmika".insteadOf "https://github.com/lmika"
@@ -32,5 +34,4 @@ jobs:
go get ./...
go test -p 1 ./...
env:
- TEST_DYNAMO_URL: "http://localstack:4566"
- GOPRIVATE: "github:com/lmika/*"
+ GOPRIVATE: "github:com/lmika/*"
\ No newline at end of file
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
new file mode 100644
index 0000000..870d41f
--- /dev/null
+++ b/.github/workflows/release.yaml
@@ -0,0 +1,81 @@
+name: release
+
+on:
+ push:
+ tags:
+ - 'v*'
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ services:
+ localstack:
+ image: localstack/localstack
+ ports:
+ - "4566:4566"
+ env:
+ SERVICES: ssm,dynamodb
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Setup Go
+ uses: actions/setup-go@v3
+ with:
+ go-version: 1.22
+ - name: Configure
+ run: |
+ git config --global url."https://${{ secrets.GO_MODULES_TOKEN }}:x-oauth-basic@github.com/lmika".insteadOf "https://github.com/lmika"
+ - name: Test
+ run: |
+ set -xue
+ go get ./...
+ go test -p 1 ./...
+ env:
+ GOPRIVATE: "github:com/lmika/*"
+
+ release-macos:
+ needs: build
+ runs-on: macos-12
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Setup Go
+ uses: actions/setup-go@v3
+ with:
+ go-version: 1.22
+ - name: Configure
+ run: |
+ git config --global url."https://${{ secrets.GO_MODULES_TOKEN }}:x-oauth-basic@github.com/lmika".insteadOf "https://github.com/lmika"
+ - name: Setup Goreleaser
+ run: |
+ brew install goreleaser/tap/goreleaser
+ brew install goreleaser
+ - name: Release
+ if: startsWith(github.ref, 'refs/tags/')
+ run: |
+ goreleaser release -f macos.goreleaser.yml --skip=validate --clean
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ HOMEBREW_GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}
+
+ release-linux:
+ needs: build
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Setup Go
+ uses: actions/setup-go@v3
+ with:
+ go-version: 1.22
+ - name: Configure
+ run: |
+ git config --global url."https://${{ secrets.GO_MODULES_TOKEN }}:x-oauth-basic@github.com/lmika".insteadOf "https://github.com/lmika"
+ - name: Release
+ uses: goreleaser/goreleaser-action@v1
+ if: startsWith(github.ref, 'refs/tags/')
+ with:
+ version: latest
+ args: release -f linux.goreleaser.yml --skip=validate --clean
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ HOMEBREW_GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 38f234e..2b59837 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,3 @@
debug.log
.DS_store
.idea
-
-# Local Netlify folder
-.netlify
diff --git a/_certs/.gitignore b/_certs/.gitignore
deleted file mode 100644
index 27fdaaf..0000000
--- a/_certs/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.key
-*.p8
-*.certSigningRequest
-*.cer
-*.p12
-*.txt
\ No newline at end of file
diff --git a/_certs/README.md b/_certs/README.md
deleted file mode 100644
index 2d7fbab..0000000
--- a/_certs/README.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# Certs
-
-These hold the certificates for MacOS notarisation. As such they are not checked into the repository.
-
-List of files is as follows:
-
-- ALDsigning.key : private key
-- csr3072ALDSigning.certSigningRequest : certificate signing request
-- developerID_application.p12 : signed certificate
-- keyStore.p12 : pkcs12 keystore holding both the certificate and private key
-- AthKey_UD4...p8 : private key granting API access to AppStore connect
-
-## Producing These Files
-
-To produce the keys, run the following command:
-
-```bash
-# create the private key. It must be RSA 2048
-$ openssl genrsa -out ALDsigning.key 2048
-
-# create the CSR
-$ openssl req -new -key ALDsigning.key -out csr3072ALDSigning.certSigningRequest -subj "/emailAddress=lmika@lmika.org, CN=dev.lmika.dynamo-browse, C=IE"
-```
-
-These are based on [these instructions](https://developer.apple.com/help/account/certificates/create-a-certificate-signing-request).
-The instructions are incorrect though. They claim that the key lenght should be 3096, but AppStore connect only supports 2048.
-
-Then, upload the CSR to AppStore Connect, choosing the "Developer ID Application" certificate type. If successful,
-you will be given a signed certificate, which will have the filename `developerID_application.signing.cer`.
-
-Then, produce a PKCS12 (.p12) file by running the following command ([source](https://stackoverflow.com/questions/21141215/creating-a-p12-file)):
-
-```bash
-openssl pkcs12 -export -out keyStore.p12 -inkey ALDsigning.key -in developerID_application.signing.cer
-```
-
-## Getting the .p8 file
-
-To download the .p8 file, go to the [Apple Developer Portal](https://appstoreconnect.apple.com/access/integrations/api/new),
-and download a new API key for AppStore Connect. The role of the new key should be "Developer".
-
-## Configuring the CI/CD secrets
-
-The following secrets correspond to the given secrets:
-
-- `MACOS_SIGN_P12`: base64 of keyStore.p12
-- `MACOS_SIGN_PASSWORD` the p12 password
-- `MACOS_NOTARY_ISSUER_ID`: see the UUID on this page: https://appstoreconnect.apple.com/access/integrations/api
-- `MACOS_NOTARY_KEY_ID`: the ID of the .p8 file - `U4....`
-- `MACOS_NOTARY_KEY`: base64 of the .p8 file
\ No newline at end of file
diff --git a/_site/.gitignore b/_site/.gitignore
deleted file mode 100644
index 5a35c8d..0000000
--- a/_site/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-docs/
-node_modules/
-resources/
-themes/
\ No newline at end of file
diff --git a/_site/.hugo_build.lock b/_site/.hugo_build.lock
deleted file mode 100644
index e69de29..0000000
diff --git a/_site/archetypes/default.md b/_site/archetypes/default.md
deleted file mode 100644
index 00e77bd..0000000
--- a/_site/archetypes/default.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "{{ replace .Name "-" " " | title }}"
-date: {{ .Date }}
-draft: true
----
-
diff --git a/_site/assets/_custom.scss b/_site/assets/_custom.scss
deleted file mode 100644
index e8a2f67..0000000
--- a/_site/assets/_custom.scss
+++ /dev/null
@@ -1,55 +0,0 @@
-:root {
- --accent: #6591ff;
-}
-
-figure.screenshot {
- text-align: center;
-}
-
-div.site-header {
- text-align: center;
- margin-bottom: 48px;
- display: flex;
-
- flex-direction: row;
- align-content: center;
- justify-content: center;
- align-items: center;
-
- & img {
- width: 64px;
- height: 64px;
- }
-
- & h1 {
- font-size: 2.2em;
- font-variant: small-caps;
- vertical-align: middle;
- margin: 0;
- margin-left: 16px;
- }
-}
-
-kbd {
- background: var(--body-font-color);
- color: var(--body-background);
- border-radius: 4px;
- font-weight: bold;
- padding: 2px 3px;
- font-size: 1.0em;
-}
-
-input {
- -webkit-appearance: auto;
- appearance: auto;
-}
-
-/**
- * Keybinding settings.
- */
-table.key-bindings.show-binding-names .kb-key-binding {
- display: none;
-}
-table.key-bindings:not(.show-binding-names) .kb-binding-name {
- display: none;
-}
diff --git a/_site/assets/js/controllers/keybindings_controller.js b/_site/assets/js/controllers/keybindings_controller.js
deleted file mode 100644
index 714c0d5..0000000
--- a/_site/assets/js/controllers/keybindings_controller.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Controller } from "@hotwired/stimulus"
-
-export class KeybindingsController extends Controller {
- static targets = [
- "showBindingNames",
- "keyBindingTable"
- ];
-
- bindingNamesChanged() {
- let showBindingNames = this.showBindingNamesTarget;
- if (showBindingNames.checked) {
- this.keyBindingTableTarget.classList.add("show-binding-names");
- } else {
- this.keyBindingTableTarget.classList.remove("show-binding-names");
- }
- }
-}
\ No newline at end of file
diff --git a/_site/assets/js/index.js b/_site/assets/js/index.js
deleted file mode 100644
index fb042df..0000000
--- a/_site/assets/js/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Application } from "@hotwired/stimulus";
-import { KeybindingsController } from "./controllers/keybindings_controller";
-
-const application = Application.start();
-application.register("keybindings", KeybindingsController);
\ No newline at end of file
diff --git a/_site/assets/jsconfig.json b/_site/assets/jsconfig.json
deleted file mode 100644
index 377218c..0000000
--- a/_site/assets/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "paths": {
- "*": [
- "*"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/_site/bin/process-images.py b/_site/bin/process-images.py
deleted file mode 100755
index 84e22ac..0000000
--- a/_site/bin/process-images.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-import os.path
-import subprocess
-
-images = [
- 'main-item-view.png',
- 'table-selection.png',
- 'filter-items.png',
- 'query-items.png',
- 'modified-items.png',
- 'fields-popup.png'
-]
-
-for image in images:
- src_file = os.path.join('images', image)
- target_file = os.path.join('static/images/dynamo-browse', image)
-
- subprocess.run(['magick', src_file, '-shave', '24x16', target_file])
\ No newline at end of file
diff --git a/_site/config.toml b/_site/config.toml
deleted file mode 100644
index 6d309bf..0000000
--- a/_site/config.toml
+++ /dev/null
@@ -1,34 +0,0 @@
-baseURL = "https://dynamobrowse.app/"
-languageCode = "en-us"
-title = "Dynamo-Browse"
-
-theme = "hugo-book"
-
-publishDir = "docs"
-
-[markup.goldmark.renderer]
- unsafe = true
-
-[params]
- BookTheme = "auto"
- BookMenuBundle = "/menu"
-
-[params.Logo]
- logoText = "Dynamo-Browse"
-
-[menu]
-[[menu.main]]
- identifier = "download"
- name = "Download"
- url = "/download"
- weight = 20
-[[menu.main]]
- identifier = "docs"
- name = "Documentation"
- url = "/docs"
- weight = 40
-[[menu.main]]
- identifier = "updates"
- name = "Updates"
- url = "/updates"
- weight = 50
\ No newline at end of file
diff --git a/_site/content/_index.md b/_site/content/_index.md
deleted file mode 100644
index ef82dc1..0000000
--- a/_site/content/_index.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-weight: 10
----
-
-
-
-
Dynamo-Browse
-
-
-
-
-
-
-Dynamo-Browse is a terminal-based UI (TUI) app for working with DynamoDB tables.
-With it, you can quickly connect to and browse the contents of a DynamoDB table
-in your AWS account or local machine. There are some basic facilities for
-editing as well.
-
-## Getting Started
-
-This video gives a brief introduction of how to use Dynamo-Browse to view the items of a DynamoDB table:
-
-{{< youtube cQnTIg1_tfg >}}
-
-More information about the tool can be found within the [Dynamo-Browse user manual](/docs).
-
-## Download
-
-Binary packages for MacOS and Linux can be [found at Forgejo](https://lmika.dev/cmd/dynamo-browse/releases).
-
-### MacOS Using Homebrew
-
-If you have Homebrew, you can install Dynamo-Browse using the following command:
-
-```
-brew tap lmika/dynamo-browse https://lmika.dev/casks/dynamo-browse
-brew install dynamo-browse
-```
-
-### Go
-
-If you have Go installed, you can install Dynamo-Browse using the following command:
-
-```
-go install lmika.dev/cmd/dynamo-browse/cmd/dynamo-browse@latest
-```
diff --git a/_site/content/docs/reference/_index.md b/_site/content/docs/reference/_index.md
deleted file mode 100644
index 782a9c6..0000000
--- a/_site/content/docs/reference/_index.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-bookFlatSection: true
-weight: 40
----
\ No newline at end of file
diff --git a/_site/content/docs/reference/commands.md b/_site/content/docs/reference/commands.md
deleted file mode 100644
index 466ebca..0000000
--- a/_site/content/docs/reference/commands.md
+++ /dev/null
@@ -1,157 +0,0 @@
----
-title: Commands
-weight: 20
----
-# Commands
-
-These commands are meant for general, interactive use. For additional commands meant for defining
-extensions, see [Extensions](/docs/reference/extensions/).
-
-## clone
-
-```
-:clone
-```
-
-Copies the currently selected item to a new item, which will appear at the bottom of the table.
-
-Cloning an item will prompt for a new partition key and sort key but will not check for duplicates.
-
-## del-attr
-
-```
-:del-attr
-```
-
-Alias: `da`
-
-Deletes _attribute_ from the currently selected item; or if there are any marked items, the marked items.
-
-## delete
-
-```
-:delete
-```
-
-Deletes the marked items. Unlike the other commands that modify items, this command will be executed on
-the table straight away.
-
-## echo
-
-```
-:echo [message ...]
-```
-
-Displays _message_ in the status bar. Mainly used for debugging.
-
-## export
-
-```
-:export [-all]
-```
-
-Writes the currently loaded items as a CSV file to _filename_.
-
-Only string, numerical, and boolean values will be written to the export; all other value types will be
-black. Exporting will honour the columns currently visible in the table. Filtered items will also be included
-in the exported file.
-
-When called with the `-all` flag, any subsequent pages will be included in the export. If invoked after running
-a query, all items returned from that query will be exported to file.
-
-## mark
-
-```
-:mark [all | none | toggle] [-where ]
-```
-
-Mark the rows in the following way:
-
-- `all`: will mark all rows. This is the default when invoked without an argument.
-- `none`: will unmark all rows.
-- `toggle`: will toggle all marked and unmarked rows.
-
-Adding the `-where` option would only select rows that match the given query expression.
-
-
-## new-item
-
-```
-:new-item
-```
-
-Creates a new item. When executed, the value for the partition key and sort key will be prompted.
-The new item will not be written to the table until it is committed with the `put` command.
-
-## put
-
-```
-:put
-```
-
-Alias: `w`
-
-Commits all new and modified items to the table.
-
-## quit
-
-```
-:quit
-```
-
-Alias: `q`
-
-Quits Dynamo-Browse.
-
-## rebind
-
-```
-:rebind
-```
-
-Rebinds the action with _bindingName_ to _key_. This will replace any existing binding for that action.
-See [Key Bindings](#key-bindings) with "Show binding names" checked to see available binding names.
-
-## set-opt
-
-```
-:set [value]
-```
-
-Set the value of a setting. Flag setting types can be enabled without any value. See [Settings](#settings) for possible setting values.
-
-## set-attr
-
-```
-:set-attr [type]
-```
-
-Alias: `sa`
-
-Modifies the value of _attribute_ of the currently selected item; or if there are any marked items, the marked items.
-
-The value of _type_ can be use to specify the type of the attribute. It can be one of the following (case insensitive):
-
-- `-S`: string value
-- `-N`: number value
-- `-BOOL`: boolean value
-- `-NULL`: null value
-- `-TO`: value of an expression
-
-If unset, the attribute type will not be changed. _type_ must be set if multiple items have been marked.
-
-## table
-
-```
-:table
-```
-
-Select the table to display.
-
-## unmark
-
-```
-:unmark
-```
-
-Unmark all marked items. This is essentially an alias for `mark none`.
diff --git a/_site/content/docs/reference/extensions.md b/_site/content/docs/reference/extensions.md
deleted file mode 100644
index 05e4bd6..0000000
--- a/_site/content/docs/reference/extensions.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: "Extensions"
-type: script-api
-weight: 60
-draft: true
----
-# Extensions
\ No newline at end of file
diff --git a/_site/content/docs/reference/key-bindings.md b/_site/content/docs/reference/key-bindings.md
deleted file mode 100644
index f74a9e1..0000000
--- a/_site/content/docs/reference/key-bindings.md
+++ /dev/null
@@ -1,193 +0,0 @@
----
-title: Key Bindings
-weight: 10
----
-# Key Bindings
-
-
-
-
-
-
-
-
-
Key
-
Binding Name
-
Action
-
-
-
-
-
Main View Mode
-
-
-
↑/i
-
table.move-up
-
Move selection up
-
-
-
↓/k
-
table.move-down
-
Move selection down
-
-
-
PgUp/⇧I
-
table.page-up
-
Page up
-
-
-
PgDn/⇧K
-
table.page-down
-
Page down
-
-
-
Home/0
-
table.goto-top
-
Move selection to first item
-
-
-
End/$
-
table.goto-bottom
-
Move selection to last item
-
-
-
←/j
-
table.move-left
-
Scroll displayed columns left
-
-
-
→/l
-
table.move-right
-
Scroll displayed columns right
-
-
-
Backspace
-
view.view-back
-
Go back
-
-
-
\
-
view.view-forward
-
Go forward
-
-
-
w
-
view.cycle-layout-forward
-
Cycle forward through layout
-
-
-
⇧W
-
view.cycle-layout-backwards
-
Cycle backwards through layout
-
-
-
m
-
view.mark
-
Mark/unmark currently selected item
-
-
-
M
-
view.toggle-marked-items
-
Toggle marked/unmarked items
-
-
-
c
-
view.copy-item-to-clipboard
-
Copy displayed item to pasteboard
-
-
-
C
-
view.copy-table-to-clipboard
-
Copy displayed table to pasteboard as a CSV
-
-
-
/
-
view.prompt-for-filter
-
Filter
-
-
-
?
-
view.prompt-for-query
-
Run scan/query
-
-
-
-
view.prompt-for-table
-
Select table
-
-
-
R
-
view.rescan
-
Rerun last scan/query
-
-
-
>
-
view.fetch-next-page
-
Fetch the next page of results
-
-
-
:
-
view.prompt-for-command
-
Enter command
-
-
-
f
-
view.show-fields-popup
-
Show fields popup
-
-
-
^C
-
view.cancel-running-job
-
Cancel running operation
-
-
-
^C/Esc
-
view.quit
-
Quit
-
-
-
Field Popup Mode
-
-
-
⇧I
-
fields-popup.shift-column-left
-
Shift selected column left
-
-
-
⇧K
-
fields-popup.shift-column-right
-
Shift selected column right
-
-
-
Space
-
fields-popup.toggle-column-visible
-
Toggle selected column visible
-
-
-
a
-
fields-popup.add-column
-
Add new column
-
-
-
d
-
fields-popup.delete-column
-
Delete selected column
-
-
-
⇧R
-
fields-popup.reset-columns
-
Reset columns to that of the result-set
-
-
-
^C/Esc
-
fields-popup.close
-
Close field popup
-
-
-
-
-
-
diff --git a/_site/content/docs/reference/launch-flags.md b/_site/content/docs/reference/launch-flags.md
deleted file mode 100644
index 4a71e34..0000000
--- a/_site/content/docs/reference/launch-flags.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Launch Flags
-weight: 40
----
-# Launch Flags
-
-## -debug
-
-```
--debug
-```
-
-Enable debug logs, which will be written to _filename_.
-
-## -default-limit
-
-```
--default-limit
-```
-
-Sets the default limit of queries or scans. The default is 1,000 items.
-
-## -local
-
-```
--local [host]:
-```
-
-Connect to a local DynamoDB service listening on _host_:_port_. The default _host_ is `localhost`.
-
-## -ro
-
-```
--ro
-```
-
-Enable read-only mode.
-
-## -t
-
-```
--t
-```
-
-Open the table _tableName_, instead of prompting for a table.
-
-## -w
-
-```
--w
-```
-
-Use _workspaceFile_ as the workspace file. If unset, a temporary file will be used for the workspace.
\ No newline at end of file
diff --git a/_site/content/docs/reference/query-expressions.md b/_site/content/docs/reference/query-expressions.md
deleted file mode 100644
index 9deff89..0000000
--- a/_site/content/docs/reference/query-expressions.md
+++ /dev/null
@@ -1,255 +0,0 @@
----
-title: Query Expressions
-weight: 30
----
-# Query Expression
-
-Query expressions are used to select rows of a table. When executed as a query (i.e. by pressing ?),
-they will be translated into query or table scans that will run over the DynamoDB table in AWS.
-They work similar to the "where" clause in PartiQL except that they only require Query and Scan permission
-on the AWS table and do not require "select" clauses.
-Such expressions can also be used in other areas of Dynamo-Browse, such as populating the value of new columns.
-
-## Names And Values
-
-A query expressions support the following literals:
-
-- Strings: `"Hello"`
-- Integers: `123`
-- Boolean: `true` or `false`
-
-Field names are represented as regular identifiers, such as `pk` or `address`.
-
-## Equality
-
-To select rows with a field that equals a given value, use the `=` operator:
-
-```
-pk = "something"
-```
-
-Either operand will can be an identifier, placeholder, or value that resolves to any type.
-The result will be true if both the LHS and RHS equal the same type and value. If the types differ or
-the values differ, the result will be false. The field types can be different, but will always produce false.
-
-The compliment is the `!=` operator:
-
-```
-pk != "not this"
-```
-
-## Numerical Comparison
-
-The operands `<`, `<=`, `>`, `>=` can be used to compare numerical fields and values:
-
-```
-three < 5 // true
-three <= 3 // true
-three > 12 // false
-three >= 1 // true
-```
-
-To verify that a number exists within a range, use the `between` operand:
-
-```
-three between 1 and 5 // true
-```
-
-## Prefix Operator
-
-To select rows with a field that starts with a given substring, use the `^=` operator:
-
-```
-pk ^= "some"
-```
-
-This is equivalent to using the [begins_with](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html) function in AWS query expressions.
-
-## Logical Operators
-
-The logical operators `and`, `or` and `not` can be used to express conjunctions, disjunctions and logical negation
-between multiple expressions:
-
-```
-pk = "this" and sk = "that"
-pk != "that" and count > 123
-not count = 21
-```
-
-The order of precedence of these operators, from lowest to highest, is `or`, `and`, then `not`. This differs
-from AWS, in which all operators have the same precedence. For example, the query:
-
-```
-pk="this" or pk="that" and sk="foo"
-```
-
-is equivalent to:
-
-```
-pk="this" or (pk="that" and sk="foo")
-```
-
-The order can be overridden using brackets:
-
-```
-(pk="this" or pk="that") and sk="foo"
-```
-{{< hint info >}}
-If a query expression is of the form `pk = ` or `pk = and sk `,
-where:
-
-- _pk_ and _sk_ are the partition and sort keys of the base table or a GSI,
-- _val_ resolves to a constant value, and,
-- _op_ is either `=`, `^=`, `<`, `<=`, `>`, `>=`, or `between`
-
-the expression will be executed as a Query call. Unlike expressions on the AWS Query API method itself,
-the order of the `pk` and `sk` subexpressions can be swapped.
-
-Other expressions are supported but they will be executed as a table Scan.
-{{< /hint >}}
-
-## The `in` Operator
-
-The `in` operator can be used to determine if a value exists in a collection:
-
-```
-three in (1, 2, 3, 4, 5)
-
-name in ("Tom", "Dick", "Harry")
-```
-
-The result will be a boolean, which will be true if the value of the LHS equals any of the items within the RHS.
-
-The collection can be one or more fixed set of values within parenthesis separated by commas. A single
-value present within parenthesis is equivalent to the equality test:
-
-```
-three in (3) // equivalent to: three = 3
-```
-
-The right hand side can also be a subexpression without parenthesis that will resolve to either a string,
-list or map. The operand will behave differently based on the RHS type:
-
-- If the RHS is a string, the result will be true if the LHS is a substring of the RHS (equivalent to the `contains` AWS conditional expressions function)
-- If the RHS is a list, the result will be true if the LHS equals any of the items of the list
-- If the RHS is a map, the result will be true if the LHS appears as a key of the map
-
-The compliment operand is `not in`:
-
-```
-three not in (6, 7, 8, 9)
-```
-
-## The `is` Operator
-
-The `is` operator can be used to assert the value type. The RHS operand is a string which is to represent an AWS
-DynamoDB item attribute type, for example `S` for strings, `N` for numbers, etc.
-
-```
-"hello" is "S" // true
-123 is "N" // true
-"hello" is "N" // false
-```
-
-This is equivalent to the `attribute_type` AWS conditional expressions function.
-
-The special value `any` can be used to check that a field is set, regardless of type:
-
-```
-pk is "any" // true
-```
-
-This is equivalent to the `attribute_exists` AWS conditional expressions function.
-
-The compliment operand is `not is`. Using it with the "any" special value (`not is "any"`) is equivalent to the
-`attribute_not_exists` AWS conditional expressions function.
-
-## The `using` Options
-
-A query that is to be executed on the actual table in AWS will go though a short planning phase to determine
-whether it's possible to invoke the expression as a `Query` call. If the attributes map to partition and sort keys
-of either the main table, or exactly one GSI associated with the table, the expression will be executed as a Query
-over the table or the GSI found with those attributes.
-
-In cases where multiple GSI candidates exist on the base table, the query will fail with the following error:
-
-```
-multiple plans with index found. Specify index or scan with 'using' clause
-```
-
-In these cases, the index will need to be specified with the `using` keyword with the `index` option:
-
-```
-address="something" using index("specific-gsi-name")
-```
-
-The `using` keyword can also be used to force the expression to run as a table scan,
-even if the query can be invoked using a Query call over the base table or GSI:
-
-```
-address="something" using scan
-```
-
-## Builtin Functions
-
-Query expressions support a number of builtin functions.
-
-### The `marked` function
-
-```
-marked(fieldname)
-```
-
-The `marked` function will return a list of field values of all marked rows of the current result set. The
-items will appear in the list as they appear in the result set. The _fieldname_ currently only supports top-level fields.
-If no fields are marked, the empty list is returned.
-
-```
-marked("city")
-```
-
-### The `range` function
-
-```
-range(from, to)
-```
-
-The `range` function will return a list of integers between _from_ and _to_ inclusive. Non integers will be truncated
-to integers, and the step is always be 1.
-
-```
-range(2, 5) // [2, 3, 4, 5]
-three in range(2, 5) // true
-```
-
-### The `size` function
-
-```
-size(v)
-```
-
-The `size` function will return the number of items of a list or map, or the length of a string.
-
-{{< hint info >}}
-The `size` function is equivalent to the `size` AWS conditional expressions function, and as such is the
-only function that is included as is in the generated Query or Scan expression. All other functions are evaluated
-prior to making the Query or Scan AWS call.
-{{}}
-
-
-## Placeholders
-
-In some circumstances, such as the [session.query](/docs/reference/script-api/#session-query) method, it's possible to use a placeholder as a field or value. To expand a placeholder to an identifier, use the `:` prefix. To expanded the placeholder as a value, use the `$` prefix. For example, the expression `:key = $value` in the following script:
-
-```
-out := session.query(":key = $value", {
- table: "some-table",
- args: {
- key: "pk",
- value: "value"
- }
-}
-```
-
-Is equivalent to the query `pk = "hello"`, as the placeholder `:key` is expanded to an identifier and `$value` is expanded
-to a value, in this case a string.
diff --git a/_site/content/docs/reference/settings.md b/_site/content/docs/reference/settings.md
deleted file mode 100644
index 0fd0d05..0000000
--- a/_site/content/docs/reference/settings.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Settings
-weight: 50
----
-# Settings
-
-## default-limit
-
-- Type: int
-- Default: `1000`
-
-The maximum number of rows returned from a query or scan.
-
-## ro
-
-- Type: flag
-
-Enable read-only mode. When enabled, all modification operations are disabled, and will fail with a `Read-only mode` error.
-The `rw` setting will disable read-only mode.
-
-## rw
-
-- Type: flag
-
-Disable read-only mode. The `ro` setting will enable read-only mode.
\ No newline at end of file
diff --git a/_site/content/docs/user-guide/_index.md b/_site/content/docs/user-guide/_index.md
deleted file mode 100644
index bee53f3..0000000
--- a/_site/content/docs/user-guide/_index.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-bookFlatSection: true
-weight: 30
----
\ No newline at end of file
diff --git a/_site/content/docs/user-guide/customising.md b/_site/content/docs/user-guide/customising.md
deleted file mode 100644
index 879ab82..0000000
--- a/_site/content/docs/user-guide/customising.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Customising Dynamo-Browse
-weight: 50
----
-# Customising Dynamo-Browse
-
-Some commands can be used to customise Dynamo-Browse, such as modify key bindings.
-The effect of these commands will only be applied for the duration of the session: they are currently not
-tracked within the workspace file. To keep customisations across relaunches, these commands
-can be added to an RC file.
-
-## RC Files
-
-RC files are text files containing commands that will be executed by Dynamo-Browse upon launch.
-By default, RC files are located in `$HOME/.config/dynamo-browse/` and have the suffix `.ucl`. For example:
-
-```
-$HOME/.config/dynamo-browse/init.ucl
-```
-
-Any number of RC files can be present in this directory, and they are executed in lexicographical order.
-
-## Rebinding Keys
-
-The default key bindings of Dynamo-Browse can be changed using the [rebind](/docs/reference/commands#rebind) command. This takes
-a binding name corresponding to the particular action to invoke, and the key
-to which it should be mapped to.
-
-Putting these commands in the RC file will effectively change the default bindings of Dynamo-Browse.
-
-```
-# Rebind T to prompt for a table
-rebind "view.prompt-for-table" "T"
-
-# Rebind escape to prompt for a command
-rebind "view.prompt-for-command" "esc"
-```
-
-At the moment each binding name can only be mapped to a single key. It's also currently not possible
-to setup bindings for commands. These may be supported in the future.
-
-A list of available binding names can be found the the [reference](/docs/reference/key-bindings)
-(check the "Show binding names" checkbox). Note that some bindings may not have default key bindings.
-
-## Extensions
-
-The RC files are primarily intended for commands that customise Dynamo-Browse in a particular way, but any
-command can be entered here, including those for defining new commands or running predefined queries. These
-are generally known as extensions, although act as any other RC file located within that directory. More
-information on extensions can be found in the [reference](/docs/reference/script-api).
\ No newline at end of file
diff --git a/_site/content/docs/user-guide/editing-items.md b/_site/content/docs/user-guide/editing-items.md
deleted file mode 100644
index d58d70e..0000000
--- a/_site/content/docs/user-guide/editing-items.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: Editing Items
-weight: 40
----
-# Editing Items
-
-Dynamo-Browse offers some basic facilities for editing items — such as creating items, deleting items,
-and modifying their attribute values.
-
-
-
-
-
-## Marking Items
-
-Most modifications are applied to items that are marked. A marked item is indicated by a grey
-background and a bullet indicator (`•`) on the left side of the table.
-
-To mark or unmark the selected item, press m.
-
-The command `unmark` can be used to clear all marked items.
-
-## Modifying Attributes
-
-Item attributes can be added or modified by using the command `set-attr` or the alias `sa`.
-This command can be used to modify the value and type of an attribute of the currently selected items, or
-from any marked items.
-
-The format of the command is as follows:
-
-```
-:set-attr []
-```
-
-Where type is one of the following (case insensitive):
-
-- `-S`: string
-- `-N`: number
-- `-BOOL`: boolean
-- `-NULL`: null
-
-If the type is not specified, and the attribute exists, then the attribute type will not change.
-The type must be specified if this is a new attribute or multiple items have been marked.
-After executing the command, Dynamo-Browse will prompt for the value of the new attribute if one is
-required.
-
-Modified attributes will only be tracked in memory: they will not be written
-to the actual table until it is "putted" (see [Committing Changes](#committing-changes)).
-An item that has been modified will be displayed in red and a modified indicator (`M`) will appear
-on the left-most column.
-
-## Deleting Attributes
-
-An attribute can be deleted by using the command `del-attr` or the alias `da`. The format of the command
-is as follows:
-
-```
-:del-attr
-```
-
-When executed, the attribute with the name _attributeName_ will be deleted from the selected item, or
-from any marked items.
-
-Deleted attributes will only be tracked in memory: they will not be removed from
-the actual table until it is "putted" (see [Committing Changes](#committing-changes)).
-An item that has been modified will be displayed in red and a modified indicator (`M`) will appear
-on the left-most column.
-
-## Adding Items
-
-A new item can be created by typing in the command `new-item`.
-
-When entered, Dynamo-Browse will prompt for the partition and sort key. Once these are entered,
-the item will appear in the top pane in green with an asterisk indicator (`*`) on the left left-most column.
-Any additional attributes can be set by using `set-attr`.
-
-A new item will only appear in memory: it will not be written
-to the actual table until it is "putted" (see [Committing Changes](#committing-changes)).
-
-## Deleting Items
-
-Items can be deleted by marking them and then typing in the command `delete`.
-
-Unlike most of the other modified commands, running `delete` WILL make changes to the table
-immediately.
-
-## Committing Changes
-
-New or modified items (but not deleted items) will be kept in memory until they are committed
-or "putted" to the table. To put the changes, use the `put` command or `w` alias.
-
-## Backing Out of Changes
-
-Any modified items can be reverted back to what they are in the actual table by rerunning the
-current query. This can be done by pressing ⇧R.
\ No newline at end of file
diff --git a/_site/content/docs/user-guide/filtering-querying.md b/_site/content/docs/user-guide/filtering-querying.md
deleted file mode 100644
index 1cf0a09..0000000
--- a/_site/content/docs/user-guide/filtering-querying.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: Querying and Filtering Results
-weight: 30
----
-# Querying and Filtering Results
-
-## Querying
-
-
-
-
-
-A query or scan over the table can be performed by entering a _Query Expression_.
-Query expressions are a built-in expression language which translates to either a DynamoDB query
-or scan, depending on the expression.
-
-Query expressions are entered as expressions, with most being of the form `attribute operator value`.
-For example, the expression for selecting records where `color` equals `red` is:
-
-```
-color = "red"
-```
-
-The `color` attribute can either be a partition key, sort key, or a regular attribute. Dynamo Browse
-will do it's best to run the query as a DynamoDB query if possible. Usually query expressions of the
-form `pk = ` or `pk = and sk ` where `pk` is a partition key,
-`sk` is the sort key, and `` is one of the [equality](/docs/reference/query-expressions/#equality),
-[numerical comparison](/docs/reference/query-expressions/#numerical-comparison), or
-[prefix operator](/docs/reference/query-expressions/#prefix-operator), will be executed as queries.
-Other expressions will be executed as scans.
-
-Details about the Query Expression language can be found in the
-[Query Expressions references](/docs/reference/query-expressions/).
-
-To run a query, press ?, and enter the query expression.
-
-To clear a query, press ?, and press Enter without entering any value.
-
-While the query is running, a spinner indicating activity will be shown in the status bar. A running
-query can be cancelled while this spinner is visible by pressing ^C. You have the option
-to view any partial results that have been retrieved at the time.
-
-## Filtering
-
-
-
-
-
-The displayed items of the current result-set can be filtered down to those that contain a specific substring.
-
-To set the filter, press /, and enter the substring you wish to filter on.
-
-To clear the filter, press /, and press Enter without entering any value.
-
-When a filter is set, any item that does not have a top-level attribute containing the substring will be hidden.
-
-Filtering will only consist the items that are in the current result-set. It will not result in a call to the actual
-table itself.
-
-Note that filtering is case sensitive.
diff --git a/_site/content/docs/user-guide/getting-around.md b/_site/content/docs/user-guide/getting-around.md
deleted file mode 100644
index 6266ec7..0000000
--- a/_site/content/docs/user-guide/getting-around.md
+++ /dev/null
@@ -1,157 +0,0 @@
----
-title: Getting Around
-weight: 20
----
-# Getting Around
-
-After selecting a table, Dynamo-Browse will perform a scan and present the results in the default view mode.
-
-
-
-
-
-This mode consists of three panes:
-
-- The top pane displays the result-set of the last scan or query. The table name is at the top-left.
-- The middle pane displays the attributes of the currently selected item, along with their type.
-- The bottom pane displays the current query or filter, plus any messages. Prompts for input will
- also appear at the bottom.
-
-The result-set is sorted in ascending order based on the value and type of the partition and sort key.
-Up to 1,000 rows will be displayed for the current result-set.
-
-Since DynamoDB does not require all items to have the same attribute (unless they are pre-defined), any
-attribute not set for a column is indicated with a grey tilde character `~`.
-
-Use the following keys to change the currently selected row, which is highlighted in purple:
-
-- ↑/i: Move selection up
-- ↓/k: Move selection down
-- PgUp/⇧I: Page up
-- PgDn/⇧K: Page down
-- Home/0: First row
-- End/$: Last row
-
-The columns of the table
-consist of the top-level attributes of the result-set. The partition key, sort key, plus any explicitly defined
-attributes will always be displayed from the left margin onwards. The other attributes are determined
-from the results of the last scan or query, and may change depending on the result.
-
-The display columns of the table can be scrolled across by using the following keys:
-
-- ←/j: Scroll to the left
-- →/l: Scroll to the right
-
-The attributes of the currently selected item will appear in the middle pane. Both the type and the value of each
-attribute will be displayed. Any nested attributes will be indented, and will below their parent item. A value
-displayed in grey does not represent the actual value of the item, but indicates some meta-information about the item,
-such as the length.
-
-## The Back-stack
-
-Changes to the view of Dynamo-Browse will be maintained in back-stack, similar to how a
-web-browse keeps track of the webpages you've visited. This stack will record the
-currently viewed table, filter, or query, allowing you to "go back" to a previous view
-by pressing Backspace. Pressing \\ will allow you to go forward through the stack.
-
-The back-stack is preserved in the workspace file, and can be restored by launching Dynamo-Browse with the `-w`
-switch. Launching Dynamo-Browse with a workspace that has a non-empty stack will restore the last viewed
-table, filter, or query from the session that was previously using the workspace.
-
-{{}}
- **Note:** the back-stack does not preserve the actual items in the workspace. Going backwards or forwards
- through the back-stack will execute any queries or filters against the actual table itself.
-{{}}
-
-## Adjusting The Layout
-
-The horizontal size of the item table and currently selected item pane can be changed to one of the
-following layout configurations:
-
-- Item view taking up 14 rows on the bottom with the table pane taking up the rest of the vertical space (the default)
-- Item view and table view taking up half of the available space
-- Table view taking up 7 rows on the top with the item view taking up the rest of the vertical space
-- Table view hidden
-- Item view hidden
-
-Pressing w will cycle forward though these layouts. For example, while in the
-default layout, pressing w will switch to the second layout, where both the table view take up half the
-screen. Pressing ⇧W will cycle through the layouts in the reverse order.
-
-## Adjusting The Displayed Columns
-
-The columns of the result-set can be adjusted by opening up the _Fields Popup_. This popup can be opened by pressing f.
-
-
-
-
-
-While this popup is opened, the following changes can be applied to the displayed columns of the main table:
-
-- Columns can be hidden
-- The order columns appear in the main table can be rearranged
-- New columns can be added
-
-The popup will display the list of columns of the main result-set table. Pressing ↑/i
-or ↓/k will move the selection indicator to the column to apply the operation. Pressing
-←/j or →/l will scroll the main table left or right so that any
-operations can be previewed.
-
-To reset the columns to the top-level fields of the current result set, press ⇧R.
-
-To close the popup, press Escape.
-
-### Showing And Hiding Columns
-
-In the Fields Popup, each row has a symbol indicating whether the row is currently visible (`.`) or hidden (`✕`). Pressing
-Space will toggle whether the currently selected column is shown or hidden.
-
-### Re-arranging The Order Of Columns
-
-The currently selected row can be moved up or down the table. This will move the corresponding column in the main table either
-left or right.
-
-Press ⇧I to the selected row up, which will move the corresponding column left.
-
-Press ⇧K to the selected row down, which will move the corresponding column right.
-
-### Adding And Removing Columns
-
-New columns can be added in the table. The value of these columns will be determined by the result of a query expression,
-and can be used to expose fields that are not at the top level.
-
-Any nested fields of maps or lists will not be included as a column by default. Consider, for example, a table of books
-with authors structured as so:
-
-```
-{
- "book": {"S": "The Lord Of The Rings"},
- "author": {"M": {
- "firstName": {"S": "John"},
- "middleName": {"S": "Ronald Reuel"},
- "lastName": {"S": "Tolkien"},
- }}
-}
-```
-
-If you wanted to show the the author's first and last name in the main table, rather than just see the description `(3 items)`, you
-can add a new column with an expression selecting the fields of the author map. The expressions that can be used here
-are as follows:
-
-- First name: `author.firstName`
-- Last name: `author.lastName`
-
-This can be extended to expressions that perform comparisons or operations. For example, the expression `author.firstName ^= "J"` can be
-use in a new column to display `True` for any first name that begins with a J.
-
-To add a new column, press a while the Fields Popup is visible. You'll be prompted to enter a query expression,
-which will be evaluated over each row within the result-set when displaying the table.
-
-Any column, that was either retrieved from the result-set or added by the user, can be deleted by selecting the column
-within the Fields Popup and pressing d.
-
-## Entering Commands
-
-Commands can be entered by pressing : and entering the command, with any arguments, at the prompt.
-
-The list of available commands can be found within the [reference section](/docs/reference/#commands).
\ No newline at end of file
diff --git a/_site/content/docs/user-guide/launching.md b/_site/content/docs/user-guide/launching.md
deleted file mode 100644
index bc83d24..0000000
--- a/_site/content/docs/user-guide/launching.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: Launching and Quitting
-weight: 10
----
-# Launching and Quitting
-
-To launch Dynamo-Browse, run the following command at the terminal:
-
-```
-dynamo-browse
-```
-
-This will use your current AWS configuration and region, which can be changed by setting
-the relevant `AWS_` environment variables.
-
-To connect to a local instance of DynamoDB, such as one
-running in a Docker container, use the `--local` flag. This takes as the argument the hostname
-and endpoint of the local DynamoDB server. The hostname can be omitted, and will default to `localhost`:
-
-```
-dynamo-browse --local :8080
-```
-
-## Selecting a Table
-
-Upon launch, Dynamo-Browse will present a list of all the tables within the region:
-
-
-
-
-
-Select the table to view by pressing Enter. Use the following keys to navigate
-the items within the list:
-
-- ↑/i: Move selection up
-- ↓/k: Move selection down
-
-Once the table is selected, the table will be scanned and Dynamo-Browse will be presented in
-[View Mode](#view-mode). Another table can be selected from within view mode using the `:table` command.
-
-Dynamo-Browse can also be launched directly in view mode by specifying a table using the `-t` flag:
-
-```
-dynamo-browse -t user-accounts
-```
-
-## Selecting a Workspace
-
-Dynamo-Browse tracks session state, such as the back-stack, in a workspace file. By default the workspace
-file will be a new file created within the temporary directory, but a specific workspace filename can be
-specified by using the `-w` flag:
-
-```
-dynamo-browse -w my-workspace.ws
-```
-
-If the workspace filename references an existing file, Dynamo-Browse will restore the workspace and use it for the duration of
-the session. If the workspace filename references a non-existing file, Dynamo-Browse will initialise a new workspace
-using the specified filename.
-
-Only one running instance of Dynamo-Browse can use a single workspace file at any one time.
-
-## Quitting
-
-To quit dynamodb-browse, enter the command `q` by pressing :, then typing qEnter.
-The keystroke Ctrl+C can also be used to quit.
\ No newline at end of file
diff --git a/_site/content/download.md b/_site/content/download.md
deleted file mode 100644
index dc1deca..0000000
--- a/_site/content/download.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-weight: 20
----
-
-
-
-## Linux
-
-To install the Debian package, download the `.deb` file, and install the package by running:
-
-```
-sudo apt install ./audax_0.4.0_linux_amd64.deb
-```
-
-To install the RPM package, download the `.rpm` file, and install the package by running:
-
-```
-sudo yum install ./audax_0.4.0_linux_amd64.rpm
-```
-
-## Install Using Go
-
-If you have Go 1.22, you can install using the following command:
-
-```
-go install github.com/lmika/audax/cmd/dynamo-browse@v0.4.0
-```
-
-
-The source code can be [found on GitHub](https://github.com/lmika/audax).
\ No newline at end of file
diff --git a/_site/data/scriptmods/async.yaml b/_site/data/scriptmods/async.yaml
deleted file mode 100644
index d521ab6..0000000
--- a/_site/data/scriptmods/async.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-module: async
-docs: |
- Provides commands for executing blocks asynchronously.
-
- Asynchronous blocks are executed in the same thread as regular commands, so it's recommended
- to avoid long running operations in these blocks. Exception to these are commands which require fetching
- data from the database.
-symbols:
- - name: do
- syntax: async:do BLOCK
- docs: |
- Schedules a block to be executed at the conclusion of all other running commands.
- Blocks are place in a queue in the order the call to `async:do` is made, with a maximum
- queue size of 100 blocks. If the queue is full, the command will return an error.
- example: |
- async:do {
- echo "World"
- }
- echo "Hello"
- - name: in
- syntax: async:in SECONDS BLOCK
- docs: |
- Schedules a block to be executed in SECONDS seconds. Once the timout has ellapsed, the block will
- be placed on the queue and will be executed once all other pending blocks have been consumed.
- example: |
- async:in 5 {
- echo "5 seconds have ellapsed"
- }
- - name: query
- syntax: async:query EXPRESSION [QUERY_ARGS] BLOCK [OPTIONS]
- docs: |
- Executes the query in the background and schedules BLOCK once the resultset is available. The available
- options match that of rs:query.
-
- Note: the RC files are invoked before the table picker is shown, so any async:query calls invoked during
- startup should have the `-table` option set.
- example: |
- async:query 'pk = $arg' [arg:"abc123"] { |rs|
- echo $rs.First.pk
- }
diff --git a/_site/data/scriptmods/av.yaml b/_site/data/scriptmods/av.yaml
deleted file mode 100644
index cf98916..0000000
--- a/_site/data/scriptmods/av.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-module: av
-docs: |
- Provides commands for translating between UCL and DynamoDB types.
-symbols:
- - name: 'true'
- syntax: av:true
- docs: |
- Returns a true BOOL attribute value.
- - name: 'false'
- syntax: av:false
- docs: |
- Returns a false BOOL attribute value.
- - name: 'null'
- syntax: av:null
- docs: |
- Returns a NULL attribute value.
- - name: string-set
- syntax: av:string-set LIST
- docs: |
- Converts a list into a string set (SS) attribute value.
- example: |
- av:string-set [apple banana cherry]
diff --git a/_site/data/scriptmods/item.yaml b/_site/data/scriptmods/item.yaml
deleted file mode 100644
index 72ae8a0..0000000
--- a/_site/data/scriptmods/item.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-module: item
-type: type
-docs: |
- A single record from a DynamoDB table.
-
- Item values are converted to tamarin types using the following:
-
- | Attribute Type | Tamarin Type |
- |:---------------|:-------------|
- | S | string |
- | N | int, float \[1\] |
- | BOOL | bool |
- | NULL | nil |
- | L | list |
- | M | map |
- | SS | set, with string values |
- | NS | set, with number values |
-
- Notes:
-
- - \[1\]: int will be used if the value can be parsed as an integer, otherwise it will be returned as a float.
- - Byte array (B or BS) values are currently not supported.
-
-symbols:
- - name: resultset
- syntax: item.resultset
- docs: |
- Returns the result-set this item is a member of.
- - name: index
- syntax: item.index
- docs: |
- Returns the index of this item within the result set.
- - name: attr
- syntax: item.attr(expression)
- docs: |
- Returns the attribute value from the query expression.
- - name: set_attr
- syntax: item.set_attr(expression, value)
- docs: |
- Sets the value of the attribute.
- - name: delete_attr
- syntax: item.delete_attr(expression)
- docs: |
- Delete the attribute.
\ No newline at end of file
diff --git a/_site/data/scriptmods/opt.yaml b/_site/data/scriptmods/opt.yaml
deleted file mode 100644
index 3744323..0000000
--- a/_site/data/scriptmods/opt.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-module: opt
-docs: |
- Provides commands for modifying options.
-symbols:
- - name: 'set'
- syntax: opt:set NAME [VALUE]
- docs: |
- Returns the current value of the setting option NAME. If VALUE is present, modifies the setting option first before
- returning the value.
\ No newline at end of file
diff --git a/_site/data/scriptmods/pb.yaml b/_site/data/scriptmods/pb.yaml
deleted file mode 100644
index e9cbc29..0000000
--- a/_site/data/scriptmods/pb.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-module: pb
-docs: |
- Provides access to the pasteboard.
-symbols:
- - name: 'paste'
- syntax: pb:paste
- docs: |
- Returns the current text value of the paste board. If the paste board contains no text value,
- or is unavailable, returns the empty string.
- - name: 'copy'
- syntax: pb:copy VALUE
- docs: |
- Sets the current text value of the paste board to VALUE. If the paste board is unavailable, this
- command nops.
\ No newline at end of file
diff --git a/_site/data/scriptmods/resultset.yaml b/_site/data/scriptmods/resultset.yaml
deleted file mode 100644
index f002137..0000000
--- a/_site/data/scriptmods/resultset.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
-module: resultset
-type: type
-docs: |
- Holds a collection of items returned from a query, or presented to a user.
-
- A specific item of a result-set can be retrived using the subscript option. For example, `$result.(21)` will
- return the 21st item of the result-set from the first item.
-
- There is no guarantee to the ordering of items within the result-set, although items are usually
- ordered based on the partition and sort key.
-symbols:
- - name: Items
- syntax: '$resultset.Items'
- docs: |
- Returns the items within the result set.
- - name: HasNextPage
- syntax: '$resultset.HasNextPage'
- docs: |
- Returns true if this result-set has another page. The next page can be retrieved by calling `rs:next-page $resultset`.
- - name: First
- syntax: '$resultset.First'
- docs: |
- Returns the first item of the result-set, or nil if the result set is empty. Shorthand for `$result.Items.(0)`.
- - name: Table
- syntax: '$resultset.Table'
- docs: |
- Returns information about the table this result set belongs to.
\ No newline at end of file
diff --git a/_site/data/scriptmods/rs.yaml b/_site/data/scriptmods/rs.yaml
deleted file mode 100644
index 052865f..0000000
--- a/_site/data/scriptmods/rs.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-module: rs
-docs: |
- Provides operations over result-sets, or commands which return result-sets.
-symbols:
- - name: new
- syntax: rs:new [-table TABLE]
- docs: |
- Creates a new, empty result-set. If -table is specific, will configure the result-set table to
- that of TABLE. Otherwise, the result-set will inherit the current table.
- - name: query
- syntax: rs:query EXPRESSION [ARGUMENTS] [-table TABLE]
- docs: |
- Invokes a query expression and returns the result as a result-set. The query can be invoked with
- ARGUMENTS, which must be a dictionary with key/value pairs that are made available to the query
- as either attribute placeholders (`:attr`), or value placeholders (`$value`).
-
- If -table is specific, will run the query over TABLE. Otherwise, the query will be invoked
- over the current table.
-
- Note that this command blocks the command thread until either the results are available, or if
- an error occurs. To avoid this, use 'async:query', which will run the query in the background.
- example: |
- results = rs:query 'pk = $myID' [myID:"abc132"] -table users
- - name: scan
- syntax: rs:scan [-table TABLE]
- docs: |
- Runs a table scan, returning the first page of results as a result-set. If -table is specific, will
- run the scan over TABLE. Otherwise, the scan will be over the current table.
- - name: next-page
- syntax: rs:next-page RESULTSET
- docs: |
- Runs the next page of results from the passed in result-set. This will depend on how RESULTSET was
- created. For example, if RESULTSET was from a query, this will return the next page of results from that
- query. Likewise, for scans.
-
- If the next page is available, the results will be returned as a new result-set, leaving the original result-set
- unmodified. If no next page is available, then nil will be returned.
\ No newline at end of file
diff --git a/_site/data/scriptmods/session.yaml b/_site/data/scriptmods/session.yaml
deleted file mode 100644
index 6ce7231..0000000
--- a/_site/data/scriptmods/session.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-module: session
-docs: |
- Provides access to the currently viewed table and result-set.
-symbols:
- - name: query
- syntax: session.query(expression, [options])
- docs: |
- Executes a query against a DynamoDB table. This returns a resultset if the query was successful.
- A query with no results will be an empty result-set.
-
- The _expression_ is the query expression to execute. This is similar to the type of expressions entered
- after pression ?.
-
- The _options_ map can contain the following key/value pairs:
-
- - `table`: the DynamoDB table to execute the query against. Default is the currently displayed table.
- - `args`: A map containing names and values that can be used as placeholders in the query expression.
- example: |
- out := session.query("pk = $key", {
- table: "some-table",
- args: {
- key: "my partition key"
- }
- }
- session.set_result_set(out.unwrap())
- - name: current_table
- syntax: session.current_table()
- docs: |
- Returns information about the currently displayed table. This will be returned as a `table` object. If no
- table is displayed, this function will return `nil`.
- - name: resultset
- syntax: session.resultset
- docs: |
- Returns the currently displayed result set. This is the set of items that are shown to the user in the items
- table. This will be returned as a `resultset` object.
-
- Note that this only contains the items of the current result set that exists in memory. As such, it will be
- capped to the configured query limit.
- - name: selected_item
- syntax: session.selected_item()
- docs: |
- Returns the item currently highlighted in the items table. This will be returned as an `item` object. If no
- item is highlighted, it will return `nil`.
- - name: set_result_set
- syntax: session.set_result_set(new_result_set)
- docs: |
- Replaces the currently displayed result-set with a new one. This can be used alongside the `query` function
- to display the results of a query.
-
- Changing the displayed result-set will trigger a redraw of the viewport and will push a new history record to
- the backstack. Therefore, it's not recommended to call this method too often during a script execution session.
- At most once with the final result-set you'd like to show the user is considered best practice.
\ No newline at end of file
diff --git a/_site/data/scriptmods/table.yaml b/_site/data/scriptmods/table.yaml
deleted file mode 100644
index 6ddb589..0000000
--- a/_site/data/scriptmods/table.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-module: table
-type: type
-docs: |
- Provides information about a DynamoDB table.
-symbols:
- - name: name
- syntax: table.name
- docs: |
- Returns the name of the table.
- - name: keys
- syntax: table.keys
- docs: |
- Returns the keys of the table. This will be returned as a map with the following names:
-
- - `hash`: the attribute name of the partition (hash) key
- - `range`: the attribute name of the sort (range) key, or `nil` if one is not defined.
- - name: gsis
- syntax: table.gsis
- docs: |
- Returns a list of the GSIs used by this table. The elements of the list will have the type table_index
\ No newline at end of file
diff --git a/_site/data/scriptmods/table_index.yaml b/_site/data/scriptmods/table_index.yaml
deleted file mode 100644
index d31883b..0000000
--- a/_site/data/scriptmods/table_index.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-module: table_index
-type: type
-docs: |
- Provides information about an DynamoDB index.
-symbols:
- - name: name
- syntax: table_index.name
- docs: |
- Returns the name of the index.
- - name: keys
- syntax: table_index.keys
- docs: |
- Returns the keys of the index. This will be returned as a map with the following names:
-
- - `hash`: the attribute name of the partition (hash) key
- - `range`: the attribute name of the sort (range) key, or `nil` if one is not defined.
\ No newline at end of file
diff --git a/_site/data/scriptmods/ui.yaml b/_site/data/scriptmods/ui.yaml
deleted file mode 100644
index 04723c5..0000000
--- a/_site/data/scriptmods/ui.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-module: ui
-docs: |
- Provides control over the user interface.
-symbols:
- - name: print
- syntax: ui.print(args...)
- docs: |
- Displays a message in the status bar.
- - name: prompt
- syntax: ui.prompt(message)
- docs: |
- Request a line of input from the user, using _message_ as the prompt.
-
- This function will return the user's input as a string, or `nil` if the user cancels
- the prompt by pressing Esc
- example: |
- line := ui.prompt("What is your name? ")
- ui.print("Hello, ", line)
\ No newline at end of file
diff --git a/_site/images/fields-popup.png b/_site/images/fields-popup.png
deleted file mode 100644
index 59c456c..0000000
Binary files a/_site/images/fields-popup.png and /dev/null differ
diff --git a/_site/images/filter-items.png b/_site/images/filter-items.png
deleted file mode 100644
index 2ae54bc..0000000
Binary files a/_site/images/filter-items.png and /dev/null differ
diff --git a/_site/images/main-item-view.png b/_site/images/main-item-view.png
deleted file mode 100644
index f5491c6..0000000
Binary files a/_site/images/main-item-view.png and /dev/null differ
diff --git a/_site/images/modified-items.png b/_site/images/modified-items.png
deleted file mode 100644
index 97a361a..0000000
Binary files a/_site/images/modified-items.png and /dev/null differ
diff --git a/_site/images/query-items.png b/_site/images/query-items.png
deleted file mode 100644
index 8c7613e..0000000
Binary files a/_site/images/query-items.png and /dev/null differ
diff --git a/_site/images/table-selection.png b/_site/images/table-selection.png
deleted file mode 100644
index c5fd69b..0000000
Binary files a/_site/images/table-selection.png and /dev/null differ
diff --git a/_site/layouts/partials/docs/inject/body.html b/_site/layouts/partials/docs/inject/body.html
deleted file mode 100644
index 7fdd1a6..0000000
--- a/_site/layouts/partials/docs/inject/body.html
+++ /dev/null
@@ -1,3 +0,0 @@
-{{- $options := dict "targetPath" "js/bundle.js" -}}
-{{- $jsBundle := resources.Get "js/index.js" | js.Build $options | resources.Minify | fingerprint -}}
-
diff --git a/_site/layouts/partials/docs/inject/head.html b/_site/layouts/partials/docs/inject/head.html
deleted file mode 100644
index cb5f941..0000000
--- a/_site/layouts/partials/docs/inject/head.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/_site/layouts/script-api/single.html b/_site/layouts/script-api/single.html
deleted file mode 100644
index bb72968..0000000
--- a/_site/layouts/script-api/single.html
+++ /dev/null
@@ -1,62 +0,0 @@
-{{ define "main" }}
-
- {{ partial "docs/post-meta" . }}
- {{- .Content -}}
-
-
- {{ range sort $.Site.Data.scriptmods }}
-
- {{ if eq .type "type" }}
-