Releases: charmbracelet/soft-serve
v0.5.4
Changelog
New Features
- 9b8e183: feat: bump minimum go version to go1.20 (@aymanbagabas)
- cc951e3: feat: switch to env/v8 (@aymanbagabas)
Bug fixes
- fbe09a9: fix(ci): remove soft-serve workflow (@aymanbagabas)
- a9e4824: fix(server): possible panic using maps (@aymanbagabas)
- f851adb: fix(ssh): restrict publickey auth (@aymanbagabas)
Documentation updates
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.5.3
A bunch of bug fixes, performance improvements, and docs updates.
Setting the LogFormat
is now under log.format
in the yaml config instead of log_format
. You can still use SOFT_SERVE_LOG_FORMAT
. We also added a SOFT_SERVE_LOG_TIME_FORMAT
to change how the logs format time. The default time format is now includes date and time.
The Docker container now comes with OpenSSH installed for more compatibility.
Changelog
New Features
- 57df762: feat: log time format (#269) (@caarlos0)
- 9eda032: feat: upgrade dependencies (@aymanbagabas)
Bug fixes
- 5580b5b: fix(backend): cache repos in memory (#274) (@aymanbagabas)
- 469a86f: fix(backend): delete non-existing repo (@aymanbagabas)
- 6eba245: fix(backend): delete repo when importing existing one (@aymanbagabas)
- 4433e02: fix(backend): remove clone timeout (@aymanbagabas)
- 1420502: fix(backend): wrap i/o operations in transactions (#278) (@aymanbagabas)
- b07de74: fix(log): respect log config (#280) (@aymanbagabas)
- bb40f89: fix(server): bound the current context to the underlying operation (@aymanbagabas)
- 3ef6d86: fix(ui): UI regressions (#279) (@aymanbagabas)
- 2a97f93: fix: improve dockerfile caching (@caarlos0)
- 3cf9b6b: fix: increase clone timeout, fix some lint issues (@caarlos0)
- c1d62b5: fix: set CI=1 in Dockerfile as a workaround (#284) (@caarlos0)
Dependency updates
- cad243c: feat(deps): bump github.com/charmbracelet/bubbletea (@dependabot[bot])
- 44f52c1: feat(deps): bump github.com/prometheus/client_golang (@dependabot[bot])
- 8855f56: feat(deps): bump golang.org/x/crypto from 0.8.0 to 0.9.0 (@dependabot[bot])
Documentation updates
- 8d13e32: docs: add systemd instructions (#276) (@aymanbagabas)
- 882abd5: docs: update license (@caarlos0)
Other work
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.5.2
Changelog
Bug fixes
- c93630e: fix(server): wait for and ensure git command exits #262 (@aymanbagabas)
Dependency updates
- 4533243: feat(deps): bump golang.org/x/sync from 0.1.0 to 0.2.0 (@dependabot[bot])
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
Systemd Service, dependency upgrades, and bug fixes.
DEB and RPM now include default Systemd service files. It also creates a new soft-serve
user and tmpfiles
for running Soft Serve.
Upgrade dependencies.
Fix Soft Serve bash
dependency in packages and Docker image.
Changelog
New Features
- bdcc8fb: feat: package systemd unit (@caarlos0)
- 56bc308: feat: s/soft/soft-serve/; sysusers; tmpfiles (@caarlos0)
Bug fixes
- 0e3363c: fix(build): add bash to Dockerfile (@aymanbagabas)
- 2624e60: fix(nfpm): don't enable and start systemd service by default (@aymanbagabas)
- 12b410f: fix: format (@caarlos0)
Dependency updates
- 1e97e6e: feat(deps): bump github.com/prometheus/client_golang (@dependabot[bot])
- b9d6fbc: feat(deps): bump modernc.org/sqlite from 1.21.1 to 1.22.1 (@dependabot[bot])
Documentation updates
- 7dab80b: docs: update default server ports (@aymanbagabas)
Other work
v0.5.0
Soft Serve v0.5 is here!
This Soft Serve release includes many new features and bug fixes. Now, Soft Serve supports cloning over HTTP(s) and git:// protocols. It can also be used to import Go packages (go-import aware). It also brings preliminary CI/CD support through Git hooks.
Breaking Change
Soft Serve no longer uses a config
repository for configuration. Now, the configs are split into 2 parts, server config, and access config.
Configuration environment variables have changed:
SOFT_SERVE_INITIAL_ADMIN_KEY
is nowSOFT_SERVE_INITIAL_ADMIN_KEYS
.SOFT_SERVE_KEY_PATH
is nowSOFT_SERVE_SSH_KEY_PATH
.SOFT_SERVE_REPO_PATH
is replaced withSOFT_SERVE_DATA_PATH
. However,SOFT_SERVE_DATA_PATH
now points to the parent directory that holds all Soft Serve data and repositories.SOFT_SERVE_BIND_ADDRESS
is nowSOFT_SERVE_SSH_LISTEN_ADDR
.SOFT_SERVE_HOST
andSOFT_SERVE_PORT
are now combined intoSOFT_SERVE_SSH_PUBLIC_URL
. This should be in the form ofssh://HOST[:PORT]
All these environment variables, except SOFT_SERVE_DATA_PATH
, can be defined in config.yaml
. Defining environment variables settings will override the settings defined in config.yaml
.
Migration
You can use soft migrate-config
command to migrate the existing (old) config to the new one. First, make sure you define the following environment variables before running the command:
SOFT_SERVE_KEY_PATH
The path to the server host key.SOFT_SERVE_REPO_PATH
The path to the repository store directory.SOFT_SERVE_BIND_ADDRESS
The address that the server binds to.
By default, this will produce a new data
directory that has the migrated repositories and ssh keys. You can change that using the SOFT_SERVE_DATA_PATH
environment variable.
Server Configuration
The default Soft Serve backend uses SQLite to store access configs, users, and repository metadata. Custom backends can be implemented to support the old behavior (using a config repository).
The server config is stored in config.yaml
under the data
directory.
Access Configuration
Access configuration and users are now managed through the new SSH-based API. Admins can add/remove users using the user
command. Use the pubkey
command to manage user SSH public keys.
Other access configurations like anon-access
and allow-keyless
still exist and can be controlled using the settings
command. These two access settings control the behavior of users using http(s):// and git:// protocols and anonymous users.
Host your own Soft Serve instance
Check out our new post on hosting your own Soft Serve instance.
Issues
Please report any issues and bugs here.
Changelog
New Features
- 2a0d05a: feat(backend): add sqlite backend (@aymanbagabas)
- 0bff6ce: feat(backend): cache repos (@aymanbagabas)
- 4f07abf: feat(backend): collabs & admins interface (@aymanbagabas)
- 399c33e: feat(backend): create default admin user with initial admin keys (@aymanbagabas)
- 43ff02c: feat(backend): hide repository from ui (@aymanbagabas)
- 7da97b1: feat(backend): parse access level (@aymanbagabas)
- f38848d: feat(backend): repo defaultBranch setting & collabs path (@aymanbagabas)
- b6041ef: feat(backend): server backend (@aymanbagabas)
- 5ec5570: feat(backend): validate repo name (@aymanbagabas)
- 53ba263: feat(cmd): add collab & admin ssh cli api (@aymanbagabas)
- 0bfce9c: feat(cmd): add settings server command (@aymanbagabas)
- 0c86b0a: feat(cmd): migrate config command (@aymanbagabas)
- 82c4c60: feat(cmd): support custom hooks (@aymanbagabas)
- 9a80cdb: feat(config): store server config in file (@aymanbagabas)
- 27a5e47: feat(http): use tls keys when provided (@aymanbagabas)
- b957470: feat(log): add log module (@aymanbagabas)
- f819896: feat(log): initialize debug logger (@aymanbagabas)
- 227f178: feat(server): add git hooks (@aymanbagabas)
- ae9cc3e: feat(server): add prometheus stats server (@aymanbagabas)
- 6cd8ca6: feat(server): add pull mirror repos (@aymanbagabas)
- b9cc769: feat(server): add repo mirror & info commands (@aymanbagabas)
- 4277403: feat(server): add tree & blob server commands (@aymanbagabas)
- 468a99f: feat(server): create ssh client keypair (@aymanbagabas)
- 0c6cc32: feat(server): http server (@aymanbagabas)
- 4b148fb: feat(server): log initial admin keys (@aymanbagabas)
- ce5ab22: feat(server): rework git hooks and drop internal server (@aymanbagabas)
- c1cbb40: feat(server): ssh cli api and middleware (@aymanbagabas)
- 6efe531: feat(server): use a separate ssh server for internal commands (@aymanbagabas)
- 2366f90: feat(server): validate username (@aymanbagabas)
- 106c049: feat(ui): format clone url (@aymanbagabas)
- e47f988: feat(ui): navigate to top/botton of readme and files (@aymanbagabas)
- 5302c49: feat(ui): notify copied text (@aymanbagabas)
- e00b19d: feat(ui): use termenv to copy text to clipboard (@aymanbagabas)
- 7d5563b: feat: bump wish and keygen (@aymanbagabas)
- 0a89da1: feat: update readme (@aymanbagabas)
- 3d7eb7b: feat: use context (@aymanbagabas)
- f388af9: feat: use contexts and clean logging (@aymanbagabas)
- 7f3e304: refactor,feat: use soft serve backends, implement git & http servers, remove config repository, manage soft serve from ssh (#231) (@aymanbagabas)
Bug fixes
- 6d9fc69: fix(backend): always import bare repositories (@aymanbagabas)
- 4a52c1b: fix(backend): cache repo rename (@aymanbagabas)
- 64598e6: fix(backend): create renamed parent directory (@aymanbagabas)
- 99447bc: fix(backend): error when repository doesn't exist (@aymanbagabas)
- fb951a3: fix(backend): init repos and hooks (@aymanbagabas)
- bec3df0: fix(backend): list collabs (@aymanbagabas)
- df43bbb: fix(backend): make public key unique (@aymanbagabas)
- aa8fb74: fix(backend): private repos, description, and nested repos names (@aymanbagabas)
- 1bcdbc0: fix(backend): propagate errors (@aymanbagabas)
- d64549c: fix(backend): repo doesn't exist (@aymanbagabas)
- b9f4c77: fix(backend): settings query (@aymanbagabas)
- c5fa66a: fix(backend): use client ssh key to clone ssh repos (@aymanbagabas)
- 8131a22: fix(backend): use subdir collabs path (@aymanbagabas)
- 7948a2c: fix(ci): remove deprecated ifshort linter (@aymanbagabas)
- ee373fb: fix(cmd): add hidden option when importing a repository (@aymanbagabas)
- 4e67940: fix(cmd): conflicting initial admin user (@aymanbagabas)
- 4394217: fix(cmd): hide migrate-config command (@aymanbagabas)
- 6b2baa9: fix(cmd): omit ssh command line port when empty or 22 (@aymanbagabas)
- bdd8612: fix(config): don't use env default value for datapath (@aymanbagabas)
- 4727a5d: fix(config): mkdir before writing config (@aymanbagabas)
- 5513179: fix(config): parse initial admin keys paths (@aymanbagabas)
- fef6f9b: fix(config): reword key path (@aymanbagabas)
- 89e36f2: fix(config): server config tests (@aymanbagabas)
- 2203fe0: fix(config): use abs paths (@aymanbagabas)
- c59c9ff: fix(config): yaml notations (@aymanbagabas)
- 3dfecd9: fix(http): go-get requests (@aymanbagabas)
- 47410de: fix(http): handle nested git repos (@aymanbagabas)
- c0b9c0d: fix(http): index template html (@aymanbagabas)
- 91e9f37: fix(migrate): copy pub key (@aymanbagabas)
- 5d177f5: fix(server): InitialAdminKeys config name (@aymanbagabas)
- 5d8ff39: fix(server): add ssh command to usage (@aymanbagabas)
- 96ddc11: fix(server): add ssh commands for admin keys (@aymanbagabas)
- 5403d1...
v0.4.7
Changelog
New Features
- cba7b09: feat(log): upgrade charmbracelet/log to v0.2.0 (@aymanbagabas)
Bug fixes
- 02386ae: fix(ci): setup go before lint (@aymanbagabas)
- 5149978: fix(config): ignore repos with broken head ref (#236) (@aymanbagabas)
- 62c39b7: fix: update deps to fix CVE-2022-32149 (@aymanbagabas)
Dependency updates
- 6d9ad10: feat(deps): bump github.com/aymanbagabas/go-osc52 from 1.2.1 to 1.2.2 (@dependabot[bot])
- a39db5b: feat(deps): bump github.com/charmbracelet/bubbles from 0.14.0 to 0.15.0 (@dependabot[bot])
- 340afde: feat(deps): bump github.com/charmbracelet/glamour (@dependabot[bot])
- 2e15fb8: feat(deps): bump github.com/charmbracelet/lipgloss from 0.6.0 to 0.7.1 (@dependabot[bot])
- e7a955f: feat(deps): bump github.com/charmbracelet/log from 0.2.0 to 0.2.1 (@dependabot[bot])
- c211f43: feat(deps): bump github.com/dustin/go-humanize from 1.0.0 to 1.0.1 (@dependabot[bot])
- 8c7466c: feat(deps): bump github.com/go-git/go-git/v5 from 5.4.2 to 5.6.1 (@dependabot[bot])
- b219276: feat(deps): bump github.com/gogs/git-module from 1.7.1 to 1.8.1 (@dependabot[bot])
- 1e5989e: feat(deps): bump github.com/matryer/is from 1.4.0 to 1.4.1 (@dependabot[bot])
- 395a060: feat(deps): bump golang.org/x/crypto from 0.6.0 to 0.7.0 (@dependabot[bot])
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.4.6
Changelog
New Features
- eafb45f: feat(cfg): debug logging environment variable (@aymanbagabas)
Bug fixes
- be76262: fix(server): session race test (@aymanbagabas)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.4.5
Changelog
Bug fixes
- f227b4c: fix(go): remove go.mod exclude directives (@aymanbagabas)
Dependency updates
- 7cfe48d: feat(deps): bump github.com/go-git/go-billy/v5 from 5.3.1 to 5.4.0 (@dependabot[bot])
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.4.4
Changelog
New Features
- d3d2d63: feat(ci): add code coverage (@aymanbagabas)
Bug fixes
- 7a7e73d: fix(auth): wrong auth for anon users (@aymanbagabas)
- 97749ea: fix(ci): run codecov on push (@aymanbagabas)
- fdbbe08: fix(config): set default anon-access to read-only (@aymanbagabas)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
v0.4.3
Changelog
Bug fixes
- b41e50d: fix(cmd): exit soft serve on error (@aymanbagabas)
- 8771223: fix(server): don't list unauthorized repos (@aymanbagabas)
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.