Repository navigation
Releases: howashoji/Looptrack
Release list
v1.0.2
Server(サーバ版)
1.0.2 is a stable release. The changes below are relative to v1.0.1,
and this version adds no migrations.
Added
- The web UI links to the user guide. "Guide" sits below "Account
settings" in the user menu and opens the guide website in a new tab. The
link goes to the pages for the version the server runs, at
https://howashoji.github.io/Looptrack/<version>/. Release candidates get
their own pages too. When the page language is Japanese,ja/is added. A build
whose version is not a release tag openslatest/.
Docs
- Updated the documentation.
1.0.2 は正式版で、下の変更は v1.0.1 からの差分です。この版にマイグレーションはありません。
追加
- Web 画面から利用者ガイドを開けます。 利用者メニューの「アカウント設定」の次に「ガイド」が付き、ガイドの Web サイトを新しいタブで開きます。行き先はサーバが動いている版のページで、URL は
https://howashoji.github.io/Looptrack/<版>/です。リリース候補の版も同じです。画面の言語が日本語ならja/が付きます。版がリリースのタグの形でない手元のビルドはlatest/を開きます。
文書
- ドキュメントを最新に更新しました。
Desktop app(デスクトップ版)
1.0.2 is a stable release. The changes below are relative to v1.0.1.
Added
- The app's web UI links to the user guide. "Guide" sits below "Account
settings" in the user menu and opens the guide website in a new browser
tab. The link goes to the pages for the version of the app, at
https://howashoji.github.io/Looptrack/<version>/. Release candidates get
their own pages too. When the page language is Japanese,ja/is added. A build
whose version is not a release tag openslatest/.
Docs
- Updated the documentation.
1.0.2 は正式版で、下の変更は v1.0.1 からの差分です。
追加
- アプリの画面から利用者ガイドを開けます。 利用者メニューの「アカウント設定」の次に「ガイド」が付き、ガイドの Web サイトをブラウザの新しいタブで開きます。行き先はアプリの版のページで、URL は
https://howashoji.github.io/Looptrack/<版>/です。リリース候補の版も同じです。画面の言語が日本語ならja/が付きます。版がリリースのタグの形でない手元のビルドはlatest/を開きます。
文書
- ドキュメントを最新に更新しました。
v1.0.1
Server(サーバ版)
1.0.1 is a stable release with the same contents as 1.0.1-rc.1. Nothing
changed after that release candidate, so the changes below are relative to
v1.0.0. Unlike the release candidate, 1.0.1 becomes the Latest release on
GitHub Releases and takes the latest tag on GHCR. The one-line installer
installs it, and a server on 1.0.0 tells you about it. For a running server,
the one change is a newer SQLite driver. A server that stores its data in
MySQL does not use that driver.
Changed
- The SQLite driver is now
modernc.org/sqlite1.60.1. It is what a
server that keeps its data in SQLite (LOOPTRACK_DSN=sqlite:<file>) reads
and writes the database with. It moved up from 1.59.0, and
modernc.org/libcfrom 1.75.7 to 1.77.1. The new driver ships its own list
of third-party licenses (LICENSE-3RD-PARTY.md), andNOTICEnow carries
it in full. - Contributors:
deploy/public-scan.shreads its list of internal names
from outside the published tree. In a clone of the public repository the
list is not there, so the scan prints one line saying it skipped that check
and goes on with the others. The check for issue IDs still runs.
CONTRIBUTING.mddescribes it.
Moving from 1.0.0 / 1.0.1-rc.1
- This version adds no migrations.
- A server on 1.0.0 shows the new version in a banner at the top of the web
UI for admins, inlooptrack doctorand in the startup log. The upgrade is one line:
curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgrade.
With--auto-upgrade on, the daily timer replaces the server by itself.
There are no migrations, so that includes servers on MySQL. - A server on 1.0.1-rc.1 already runs the same contents. It follows release
candidates as well, so it tells you about 1.0.1 too, and the same
--upgradetakes it there. Once on 1.0.1, it follows stable releases only;
setLOOPTRACK_UPDATE_CHANNEL=prereleaseto keep seeing release candidates.
1.0.1 は正式版で、中身は 1.0.1-rc.1 と同じです。その候補版の後に変更は無く、下の変更は v1.0.0 からの差分になります。候補版と違うのは公開のされ方。1.0.1 は GitHub Releases の Latest になり、GHCR の latest タグも付きます。1 行のインストーラが入れるのはこの版で、1.0.0 のサーバもこの版を知らせます。動いているサーバにとっての変更は、SQLite のドライバが新しくなったことだけ。データを MySQL に置くサーバは、このドライバを使いません。
変更
- SQLite のドライバを
modernc.org/sqlite1.60.1 に上げました。 データを SQLite に置くサーバ(LOOPTRACK_DSN=sqlite:<ファイル>)は、このドライバで DB を読み書きします。前の版は 1.59.0 です。あわせてmodernc.org/libcも 1.75.7 から 1.77.1 に上がりました。新しいドライバには第三者のライセンスの一覧(LICENSE-3RD-PARTY.md)が付いています。NOTICEにもその全文を収めました。 - 開発に加わる人向け:
deploy/public-scan.shは、内部の名前の一覧を公開物の外から読みます。 公開リポジトリの clone にはこの一覧が無いので、検査はその項目を飛ばしたことを 1 行出し、残りの項目を続けます。イシューの ID の検査はこれまでどおり。説明はCONTRIBUTING.mdにあります。
1.0.0 / 1.0.1-rc.1 から上げるとき
- この版にマイグレーションはありません。
- 1.0.0 のサーバは、管理画面の上部の帯・
looptrack doctor・起動時のログでこの版を知らせます。上げるときの 1 行はcurl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgradeです。--auto-upgrade onにしたサーバでは、1 日 1 回の timer が自分で置き換えます。マイグレーションが無いので、MySQL のサーバも同じです。 - 1.0.1-rc.1 のサーバは、既に同じ中身で動いています。リリース候補も追う設定なので 1.0.1 も知らせ、同じ
--upgradeで上がります。1.0.1 に上げた後は正式版だけを追います。リリース候補も見続けたいときは、LOOPTRACK_UPDATE_CHANNEL=prereleaseを設定してください。
Desktop app(デスクトップ版)
1.0.1 is a stable release with the same contents as 1.0.1-rc.1. Nothing
changed after that release candidate, so the changes below are relative to
v1.0.0. Unlike the release candidate, it becomes the Latest release on
GitHub Releases, and an app on 1.0.0 offers it as an update.
Changed
- The SQLite driver is now
modernc.org/sqlite1.60.1. The app keeps
your data in a single SQLite file and reads and writes it with this driver.
It moved up from 1.59.0, andmodernc.org/libcfrom 1.75.7 to 1.77.1. The
new driver ships its own list of third-party licenses
(LICENSE-3RD-PARTY.md), andNOTICEnow carries it in full.
Moving from 1.0.0 / 1.0.1-rc.1
- Update the app as a whole, as usual. Choose "Update to version 1.0.1" at
the top of the tray menu, or leave it to "Install updates automatically".
On Windows, too, the 1.0.0 app replaces itself in place. - An app on 1.0.1-rc.1 already runs the same contents and offers 1.0.1 as
well. After that update it follows stable releases only.
1.0.1 は正式版で、中身は 1.0.1-rc.1 と同じです。その候補版の後に変更は無く、下の変更は v1.0.0 からの差分になります。候補版との違いは、GitHub Releases の Latest になること。1.0.0 のアプリも、この版を更新として知らせます。
変更
- SQLite のドライバを
modernc.org/sqlite1.60.1 に上げました。 アプリはデータを 1 つの SQLite のファイルに置き、このドライバで読み書きします。前の版は 1.59.0 です。あわせてmodernc.org/libcも 1.75.7 から 1.77.1 に上がりました。新しいドライバには第三者のライセンスの一覧(LICENSE-3RD-PARTY.md)が付いています。NOTICEにもその全文を収めました。
1.0.0 / 1.0.1-rc.1 から上げるとき
- いつもどおりアプリごと更新します。トレイのメニューのいちばん上の「新しい版 1.0.1 に更新する」を選ぶか、「新しい版を自動で入れる」に任せてください。Windows でも、1.0.0 のアプリはその場で置き換わります。
- 1.0.1-rc.1 のアプリは既に同じ中身で動いていて、1.0.1 も知らせます。この更新の後は正式版だけを追います。
v1.0.1-rc.1
Server(サーバ版)
First release candidate for 1.0.1, relative to v1.0.0. Because it comes
after 1.0.0, it is published as a pre-release: v1.0.0 stays the Latest
release on GitHub Releases and keeps the latest tag on GHCR, so the one-line
installer still installs 1.0.0. For a running server, the one change is a newer
SQLite driver. A server that stores its data in MySQL does not use that driver.
Changed
- The SQLite driver is now
modernc.org/sqlite1.60.1. It is what a
server that keeps its data in SQLite (LOOPTRACK_DSN=sqlite:<file>) reads
and writes the database with. It moved up from 1.59.0, and
modernc.org/libcfrom 1.75.7 to 1.77.1. The new driver ships its own list
of third-party licenses (LICENSE-3RD-PARTY.md), andNOTICEnow carries
it in full. - Contributors:
deploy/public-scan.shreads its list of internal names
from outside the published tree. In a clone of the public repository the
list is not there, so the scan prints one line saying it skipped that check
and goes on with the others. The check for issue IDs still runs.
CONTRIBUTING.mddescribes it.
Moving from 1.0.0
- This version adds no migrations.
- A server on 1.0.0 follows stable releases and does not tell you about this
release candidate. To try it, upgrade to it by version:
curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgrade --version v1.0.1-rc.1.
SetLOOPTRACK_UPDATE_CHANNEL=prereleaseif you want the new-version notice
to include release candidates.
1.0.1 のリリース候補の 1 つ目で、下の変更は v1.0.0 からの差分です。1.0.0 の後に出す版はプレリリースとして公開します。GitHub Releases の Latest と GHCR の latest タグは v1.0.0 のまま。1 行のインストーラが入れるのも 1.0.0 です。動いているサーバにとっての変更は、SQLite のドライバが新しくなったことだけ。データを MySQL に置くサーバは、このドライバを使いません。
変更
- SQLite のドライバを
modernc.org/sqlite1.60.1 に上げました。 データを SQLite に置くサーバ(LOOPTRACK_DSN=sqlite:<ファイル>)は、このドライバで DB を読み書きします。前の版は 1.59.0 です。あわせてmodernc.org/libcも 1.75.7 から 1.77.1 に上がりました。新しいドライバには第三者のライセンスの一覧(LICENSE-3RD-PARTY.md)が付いています。NOTICEにもその全文を収めました。 - 開発に加わる人向け:
deploy/public-scan.shは、内部の名前の一覧を公開物の外から読みます。 公開リポジトリの clone にはこの一覧が無いので、検査はその項目を飛ばしたことを 1 行出し、残りの項目を続けます。イシューの ID の検査はこれまでどおり。説明はCONTRIBUTING.mdにあります。
1.0.0 から上げるとき
- この版にマイグレーションはありません。
- 1.0.0 のサーバは正式版だけを追うので、このリリース候補を知らせません。試すなら、版を指定して上げてください:
curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgrade --version v1.0.1-rc.1。新しい版の知らせにリリース候補も含めたいときは、LOOPTRACK_UPDATE_CHANNEL=prereleaseを設定します。
Desktop app(デスクトップ版)
First release candidate for 1.0.1, relative to v1.0.0. Because it comes
after 1.0.0, it is published as a pre-release, and v1.0.0 stays the Latest
release on GitHub Releases. An app on 1.0.0 follows stable releases, so it
does not offer this version. To try it, download it from the release page.
Changed
- The SQLite driver is now
modernc.org/sqlite1.60.1. The app keeps
your data in a single SQLite file and reads and writes it with this driver.
It moved up from 1.59.0, andmodernc.org/libcfrom 1.75.7 to 1.77.1. The
new driver ships its own list of third-party licenses
(LICENSE-3RD-PARTY.md), andNOTICEnow carries it in full.
1.0.1 のリリース候補の 1 つ目で、下の変更は v1.0.0 からの差分です。1.0.0 の後に出す版はプレリリースとして公開します。GitHub Releases の Latest は v1.0.0 のまま。1.0.0 のアプリは正式版だけを追うため、この版を知らせません。試すときは、リリースのページから取得してください。
変更
- SQLite のドライバを
modernc.org/sqlite1.60.1 に上げました。 アプリはデータを 1 つの SQLite のファイルに置き、このドライバで読み書きします。前の版は 1.59.0 です。あわせてmodernc.org/libcも 1.75.7 から 1.77.1 に上がりました。新しいドライバには第三者のライセンスの一覧(LICENSE-3RD-PARTY.md)が付いています。NOTICEにもその全文を収めました。
v1.0.0
Server(サーバ版)
1.0.0 is the first release that is not a release candidate. The changes below
are relative to v1.0.0-rc.5; "What 1.0.0 ships" at the end of this section
is an overview of the whole server and CLI, and the sections of the release
candidates below record what changed between them. The biggest change since
rc.5 is evidence: issues can carry attached files, and closing an issue that
has verify commands needs one by default. If you upgrade a server from rc.5,
read "Moving from 1.0.0-rc.5" first. A MySQL app user with the minimum grants
needs new ones.
Added
- Attach evidence files to an issue. Test output, screenshots and
generated reports can now be attached to an issue as files and kept on the
server, with who attached them and when. From the CLI, use
looptrack issue attach <ID> <file>..., or--attach <file>on
issue commentandissue verify;verify --attach-outputputs the full,
untruncated output on the verify record.verify --listand--lastcan't
be combined with--attachor--attach-output; the CLI says so and sends
nothing. The MCP tools take no files, so an
agent sends them with the CLI and passes the IDs inattachmentsof
report_verifyoradd_comment, andget_issuelists them. In the browser
the comment box takes a file you pick, drop or paste, and the drawer lists
the attachments and shows images in place. The REST API gains
POST /api/v1/issues/{id}/attachments(the body is the file, the name goes
inX-Looptrack-Filename),GET /api/v1/issues/{id}/attachments,
GET /api/v1/attachments/{id}andPOST /api/v1/attachments/{id}/purge.
The CLI refuses to send a text file that looks like it holds a secret, since
the server can't mask it. Attachments can't be deleted; an administrator
purges the file itself on the new admin page/admin/attachments, which
also sets the limits (20MiB per file and 1GiB per project by default) and
shows the usage per project. - Attachments live on disk, so backups now come in two parts. The records
go into the database (migration 0007 addsattachmentsand
attachment_purges, anddeploy/grants.sqlgives the app user SELECT and
INSERT on both) and the files into a directory:LOOPTRACK_ATTACH_DIR, else
$STATE_DIRECTORY/attachments, elseattachmentsnext to a SQLite
database. With none of them, the server runs and only attachments are
unavailable. install.sh adds
LOOPTRACK_ATTACH_DIR='/var/lib/looptrack/attachments'to.envon install
and on--upgrade. The compose.yaml fromlooptrack setupnow mounts
./data:/datawith MySQL too and sets/data/attachments; a MySQL
compose.yaml written by an earlier setup has no writable volume, so
--upgradeleaves it alone and prints what to do: add- ./data:/datato
the volumes andLOOPTRACK_ATTACH_DIR: /data/attachmentsto the
environment, createdataowned by 65534:65534, and run
docker compose up -d. Until then only attachments are unavailable. Back up the database first and
the attachment directory second. The backup--upgradetakes doesn't include
attachments.looptrack exportwrites the attachment files to
<slug>/attachments/<sha256>and a manifest to<slug>/attachments.json
(file name, size, SHA-256, author, time, issue, and the comment or verify
record it was attached to), andlooptrack verify-fileschecks the files
against the SHA-256 in the manifest. An attachment whose file can't be
exported is listed asmissingandexportexits with 1.looptrack import
doesn't carry attachments and says so when it finds a manifest.
looptrack repair-attachmentsreports files missing from the directory and
files nothing points to;--applyremoves the latter once they are an hour
old. A least-privilege MySQL app user needs grants on the two new tables.
After the migration,install.sh --upgradechecks every table in
deploy/grants.sqlwith the newlooptrack grants check, and when some
lack grants it asks for the admin credentials on the terminal and grants
them again. On a systemd server,LOOPTRACK_INSTALL_DB_ADMIN_PASSWORD_FILE
passes the password instead. You can also runlooptrack grants apply
yourself. Raise the body limit of the proxy in front to
the per-file limit, since nginx'sclient_max_body_sizedefaults to 1MB.
See "添付の置き場とバックアップ" indocs/server/DEPLOY.md. looptrack grants checktells whether the MySQL app user has every grant
it needs. It checks each table indeploy/grants.sqlfor the user in
LOOPTRACK_DSN. With every grant in place it exits with 0; otherwise it
prints the tables and the missing privileges and exits with 3. With SQLite
there is nothing to check, and it exits with 0.install.shruns it after
the migration, and the last check oflooptrack grants applylooks at
every table too.- CLI:
looptrack self-updateupdates from GitHub releases when no server
URL is set. With neither--urlnorLOOPTRACK_API_URL, it no longer
stops with "No server URL". It picks a version from the GitHub release list
the same way the desktop app and the server do (semver tags only, never
/releases/latest, rcs too when you run an rc) and downloads the server
archive for your OS and CPU. The archive is checked against the signed
SHA256SUMS; only thelooptrackinside is extracted, and that file is
checked against its own line in the sameSHA256SUMSbefore it replaces the
running one (.oldon Windows, as before). The signature is mandatory: a
build without the public key stops without contacting GitHub, and so does any
build withLOOPTRACK_UPDATE_CHECK=off. This path replaces the file only when
a newer version exists, so it refuses--force(exit code 2).
--from github|serverpicks the source explicitly, and a failure on one never
falls back to the other. With--urlorLOOPTRACK_API_URL, nothing changes. - The web UI remembers how you left the board. The view, the search
words and the filters (type, priority, ready only, hide closed, unanswered
feedback, label and assignee) are kept per project in the browser's
localStorage and come back the next time you open that project. The sort
order was already kept. A label or an assignee the project no longer has is
dropped when the board loads. - The browser tab shows the Looptrack icon. Every page, the first-run
setup page included, links the same picture as the desktop app's icon, and
the server answersfavicon.icounder its base path without sign-in. - The web sign-in page has a "Keep me signed in" checkbox. It is off by
default, and a session without it works as before: it ends 7 days after
sign-in, or after 12 hours without use. A session with it is not ended for
being idle. Its expiry, on the cookie and in the database, moves to 400 days
after the last access each time the last access is recorded (every 5
minutes); 400 days is the longest cookie lifetime Chrome accepts. The choice
carries through the two-factor step, registering and removing two-factor
auth on the account page, and a password change. Signing out, disabling the
user, making two-factor auth required and an administrator revoking
sessions all still end it. Migration 0008 adds thepersistentcolumn to
web_sessions; the grants indeploy/grants.sqldo not change.
Changed
- Closing an issue as Done needs evidence by default. On an issue whose body
holds at least one verify command, the server rejects Done unless the latest
verify record for the current body carries an attachment, and it rejects a
missing record too. This is the new per-project rule
verify.require_evidence, on by default even in a project with no rules at
all. It applies on every path (CLI, MCP, REST, Web) and can be overridden
with a reason (--override "reason",override_reasonover MCP), which
leaves arule_overridewithrule: verify_evidence_required. A project
that wants the old behavior sets"verify": {"require_evidence": false}with
looptrack project rules setand gets a note instead of a rejection. The
guide, the MCP instructions, the verify plan, the close step ofnextand the
kit tell the AI to attach the full test output, screenshots and generated
files.
An issue created directly as Done with a verify command in its body is
rejected the same way, since it can't have a record yet. A record whose
attachment is purged later still counts as having evidence.
Clients up to 1.0.0-rc.5 have no--attach,--attach-outputor
issue attach, even though the server's wording names them, so they can only
close such an issue with an override. Update the clients first. A server older
than this one rejects rules that contain the key, so remove it before going
back to an older version (see the upgrade section ofdocs/server/DEPLOY.md). - Windows: the server and client
looptrack.execarry version
information. Both the amd64 and the arm64looptrack.exehave a
VERSIONINFO resource. Its ProductName isLooptrackand its ProductVersion
is the build version as is, release candidates included. The release build
reads both values back from every exe it makes and stops if either is missing
or wrong. The tool that writes the resource changed from rsrc to go-winres
(0BSD, build-only).looptrack.exestill has no icon. - The server rejects comments with no text and no attachment. A comment
whose text is empty or only whitespace, with no attachment, now gets a 400
(comment_empty) from REST, MCP, the CLI and the web UI alike. Comments
cannot be deleted, so one empty comment would stay for good. An older client
or your own script that sent empty comments will now get that error.
Attachment-only comments still work (over REST, send"text": ""). When you
change an issue's status with a whitespace-only comment, no comment is
created:...
v1.0.0-rc.5
Fifth release candidate of Looptrack 1.0.0.
For servers on rc.4, one thing up front: run the one-line install.sh upgrade once by hand. The automatic update does not pick up the new install.sh on its own. "Upgrading from rc.4" below has the line, along with the other steps.
Changes since v1.0.0-rc.4:
- An out-of-date
looptrackor kit takes one command to fix, and that command knows the server URL. Until this release, the setup tool returnedlooptrack self-update && looptrack issue init …without--url(and a second init when the loop choice was answered), and the "[Update the distributed files]" notice showed the same init. In a terminal withoutLOOPTRACK_API_URL, that init pointed at the local mode. The setup tool now returns one command that downloadslooptrack, verifies its SHA-256 and runs init with--url,--source serverand--dist; the notice tells you to call the setup tool instead. Every command in the setup result and the notices uses the absolute path of thelooptrackthat setup placed. The guide,init,doctor,self-updateand the account page no longer point a server user at an init without--urlor at alooptrackon the PATH. - Upgrading a server with
install.shalso updates thelooptrackit distributes to users.--upgrade(and the automatic replacement) used to replace only the server's own binary, so sessions running an oldlooptrackwere never told to update. Every install and every--upgradefills the distribution directory (LOOPTRACK_DIST_DIR) with the binaries for all six platforms, checked against the signedSHA256SUMS. If the distributedlooptrackis missing or older than the server,looptrack servetells administrators in its startup log and in a banner. - The setup download replaces a
looptrackin~/.local/bin(on Windows,%LOCALAPPDATA%\Programs\looptrack) that differs from the distributed one, such as the desktop app's symbolic link. Whatever was there used to be kept. The download is skipped only when the SHA-256 matches. A symbolic link is replaced; the file it points to is left alone. - Setup commands leave nothing behind in your shell. Pasting one into a terminal used to leave
LOOPTRACK_API_URLandLOOPTRACK_PROJECTset, so a laterlooptrackin another project silently pointed at this one; the download command also left variables and asumfunction hiding/usr/bin/sum. In sh the commands run in a subshell or take the variables as a plain prefix. PowerShell wraps them in& { }and restores the previous values. A failed download in sh removes its.partfile. - If the place of
looptrackis missing from your PATH, the setup download adds it: one line in the startup file of your default shell on macOS and Linux, or your userPathon Windows. Reopen the agent app and the terminal afterwards. Whenlooptrackstill cannot be found,doctorand the session-start summary say so and show how to fix it. install.shno longer takes another process's answer on the port for the service's. If an old container held the port, for example, and the service had failed to bind, the installer used to report a finished install anyway. It now stops with an error naming the port. After starting, it checks that the service is active and, withss, that its main process is the one listening on the port.install.shchecks.envbefore reading it, and prints no value. An unquoted value with special characters could make the shell print the line (a password included) or run part of it as a command. Such a line now stopsinstall.shbefore the file is read, naming only the key.- On MySQL, a terminal
--upgraderuns the new version'smigrate --checkbefore it stops anything. WithoutLOOPTRACK_SETUP_MIGRATE_DSNit used to stop the service, fail to create the new tables and leave the service stopped. With migrations pending and that variable not set, it lists them and by default stops without changing anything. - The secrets guard and the freshness guard's work record read quotes and line continuations the way a shell does, both the POSIX way and the Windows way. A
catof a secret file hidden behind\"is now confirmed; nothing confirmed or recorded before goes through. The git guard is unchanged. CONTRIBUTING.mdbuilds development binaries into./bin/looptrack. The deployment, updating and AI agents guides and the FAQ cover the changes above.
Upgrading from rc.4:
- This version adds no database migrations.
- The one step not to skip: the automatic update keeps running the copy of
install.shsaved on the server. Run the one-line upgrade once by hand to get the new one:curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgrade. It fills the distribution directory and addsLOOPTRACK_DIST_DIRto.enveven when the server is already on this version. Restart the service if it tells you to. - With a
compose.yamlwritten by an older setup, add- ./dist:/dist:rounderservices.looptrack.volumesbefore that--upgrade(createvolumes:there if it is missing, as it is with MySQL). - If
install.shnow stops on a line of.env, put that value in single quotes (KEY='…'). - Once the server distributes the new
looptrack, sessions running an older one get "[Update the distributed files]". Have the agent call the setup tool and run the step it returns; it replaceslooptrackand adds its place to the PATH. Then reopen the agent app and the terminal.
Verify downloads with SHA256SUMS and its minisign signature (SHA256SUMS.minisig).
The container image is ghcr.io/howashoji/looptrack:v1.0.0-rc.5.
This is a release candidate. See CHANGELOG.md for the full list of changes.
Looptrack 1.0.0 のリリース候補、5 つ目です。
rc.4 から上げる人へ、先にこれだけは。install.sh の 1 行の更新を、1 度だけ手で実行してください。自動更新が動かすのは、サーバに保存した写しのままです。新しい install.sh は、そのままでは入らない。コマンドは、ほかの手順と一緒に下の「rc.4 から上げるとき」に置きました。
v1.0.0-rc.4 からの変更:
- 古い
looptrackや kit は、サーバの URL を知っている 1 つのコマンドで直せます。以前の setup ツールが返していたのは--urlの無いlooptrack self-update && looptrack issue init …で、loop の答えがあれば 2 つ目の init まで続いていました。【配布スクリプトの更新】の案内も同じ。LOOPTRACK_API_URLの無い端末だと、この init はローカルモードに向く。この版では、setup ツールが返すコマンドを 1 つにした。中身は、looptrackを取得して SHA-256 を確かめ、--url・--source server・--distを付けて init する、というもの。案内のほうはコマンドを示す代わりに、setup ツールを呼ぶよう伝えます。setup の結果と案内に出るコマンドは、どれも setup が置いたlooptrackの絶対パスで書きます。guide・init・doctor・self-update・アカウント設定の画面も、サーバ版の利用者に--urlの無い init や PATH のlooptrackを案内しなくなりました。 - サーバを
install.shで上げれば、利用者に配るlooptrackも一緒に新しくなります。これまでの--upgrade(自動の置き換えも)が置き換えていたのは、サーバ自身の実行ファイルだけ。だから古いlooptrackを使うセッションには、更新の知らせが出ませんでした。いまは入れるときにも--upgradeのたびにも、6 つの OS・CPU の組の実行ファイルを署名つきのSHA256SUMSで照合してから配布ディレクトリ(LOOPTRACK_DIST_DIR)へ置き、配るlooptrackが無いかサーバより古ければ、looptrack serveが起動時のログと管理者の画面の帯で知らせる。 ~/.local/bin(Windows は%LOCALAPPDATA%\Programs\looptrack)のlooptrackが配布物と違えば、setup の取得が置き換えます。例はデスクトップ版の symlink など。前は何があってもそのまま使っていました。取得を省くのは SHA-256 が一致するときだけ。symlink ならリンクを置き換え、リンクの先には触りません。- setup のコマンドは、シェルに何も残さない。以前は端末に貼ると
LOOPTRACK_API_URL・LOOPTRACK_PROJECTが残り、別のプロジェクトに移ってもlooptrackが黙ってこちらを向いていたうえに、取得のコマンドまで変数と、/usr/bin/sumを覆い隠す関数sumを置いたままにしていました。いまは sh ならサブシェルか export の無い前置で渡し、PowerShell なら& { }で包んで前の値に戻します。sh で取得に失敗すれば.partも消える。 looptrackの置き場が PATH に無ければ、setup の取得が足します。macOS・Linux は既定のシェルの起動ファイルに 1 行、Windows は利用者の環境変数Path。足した後は AI のアプリと端末を開き直してください。それでもlooptrackが見つからないなら、doctorとセッション開始時の要約が知らせて、直し方を示す。install.shが、同じポートにいるほかのプロセスの応答を、サービスの応答と取り違えなくなりました。止め忘れた古いコンテナなどがポートを握っていると、サービスは bind に失敗しているのに、インストールが終わったと報告していた。いまはポートを示して止まる。起動後はサービスが active かどうかに加えて、ssがあれば、そのポートで待ち受けているのがサービスのメインのプロセスかまで確かめます。install.shは.envを読む前に確かめ、値は一切出さない。引用符で囲まない値に特殊な文字があると、シェルがその行(パスワードを含む)を出力したり、値の一部をコマンドとして実行したりしていたので、そういう行があればファイルを読む前に止まり、キーの名前だけを示すようにしました。- MySQL なら、端末の
--upgradeは何かを止める前に新しい版のmigrate --checkを実行します。以前はLOOPTRACK_SETUP_MIGRATE_DSNが無いと、サービスを止めてから新しい表を作れずに失敗し、止まったままでした。未適用があってその変数も無いときは、一覧を示し、既定では何も変えずに止まる。 - 秘密のガードと鮮度ガードの作業の記録は、引用符と行末の継続をシェルと同じように、posix と Windows の両方の読み方で読むので、
\"の陰に秘密のファイルのcatを隠したコマンドも確認になります。これまで確認・記録していたものが素通りになることはない。git ガードは変えていません。 CONTRIBUTING.mdのビルド先は./bin/looptrackに。配置・更新・AI エージェントのガイドと FAQ にも、上の変更を書き足しました。
rc.4 から上げるとき:
- この版に DB の移行はありません。
- 飛ばせないのはこれ。自動更新は、サーバに保存した
install.shの写しを動かし続けます。新しいものにするには、1 行の更新を 1 度だけ手で実行してください:curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgrade。サーバが既にこの版でも、配布ディレクトリをそろえ、.envにLOOPTRACK_DIST_DIRを足す。起動し直すよう出たら、そのとおりに。 - 古い setup が書いた
compose.yamlなら、その--upgradeの前にservices.looptrack.volumesへ- ./dist:/dist:roを足します(MySQL の構成ではvolumes:が無いので、作ってから足す)。 install.shが.envのある行で止まるようになったら、その値を単引用符で囲んでください(KEY='…')。- サーバが新しい
looptrackを配り始めると、古いものを使うセッションに【配布スクリプトの更新】が出ます。AI に setup ツールを呼ばせて、返った手順を実行する。それでlooptrackが置き換わり、その置き場が PATH に入ります。済んだら AI のアプリと端末を開き直してください。
ダウンロードしたものは SHA256SUMS と minisign の署名(SHA256SUMS.minisig)で確かめられます。
コンテナイメージは ghcr.io/howashoji/looptrack:v1.0.0-rc.5。
リリース候補です。変更の全部は CHANGELOG.md に。
Full Changelog: v1.0.0-rc.4...v1.0.0-rc.5
v1.0.0-rc.4
Fourth release candidate of Looptrack 1.0.0.
Changes since v1.0.0-rc.3:
- MCP now works on a server that listens on 127.0.0.1 behind a reverse proxy, as
install.shsets up with systemd. Every MCP request to such a server was refused with 403 by the MCP library's protection against DNS rebinding. looptrack now checks theHostitself: a request received on a loopback address is accepted when itsHostis a loopback name or the host ofLOOPTRACK_PUBLIC_URL, and refused with 403 otherwise. The desktop app still accepts only loopback names. looptrack migrateworks with the minimum MySQL grants when there is nothing to apply. Before, it failed with error 1142 on every run, so the automatic update of a MySQL server failed and put the previous version back every time.- The automatic server update puts the previous version back once it has stopped the service, whatever makes it fail (a failing
systemctl daemon-reloadorsystemctl start, any other failing command, or an interruption), and leaves the reason injournalctl -u looptrack-upgrade. A manual--upgradeon a terminal still does not roll back. install.shgives the right reason when--auto-upgrade onstops for lack ofcurlandwget, and shows the dnf commands (minisignfrom EPEL) next to the apt ones.- Plainer wording across the README and the guides, and
CHANGELOG.mdnow carries each version in English followed by Japanese.
Upgrading from rc.3:
- This version adds no database migrations.
- The automatic update keeps running the copy of
install.shsaved on the server. To get the fixed rollback, run the one-line upgrade once by hand:curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgrade. - If MCP clients were refused with 403 by a server behind a reverse proxy, check that
LOOPTRACK_PUBLIC_URLholds the public URL the clients use.
Verify downloads with SHA256SUMS and its minisign signature (SHA256SUMS.minisig).
The container image is ghcr.io/howashoji/looptrack:v1.0.0-rc.4.
This is a release candidate. See CHANGELOG.md for the full list of changes.
Looptrack 1.0.0 のリリース候補、4 つ目です。
v1.0.0-rc.3 からの変更:
- 127.0.0.1 で待ち受けてリバースプロキシの後ろに置いたサーバでも、MCP が使えるようになりました。
install.shが systemd で入れる形がこれに当たります。こうしたサーバでは、MCP のライブラリの DNS rebinding の対策が、MCP の要求をすべて 403 で拒否していました。いまは looptrack 自身がHostを判定します。ループバックのアドレスで受けた要求は、Hostがループバックの名前かLOOPTRACK_PUBLIC_URLのホストなら通し、それ以外は 403 で拒否します。デスクトップ版は、これまでどおりループバックの名前だけを通します。 - MySQL の最小の権限でも、適用するものが無ければ
looptrack migrateが通るようになりました。これまでは毎回エラー 1142 で失敗し、MySQL のサーバの自動更新は毎回失敗して前の版に戻っていました。 - サーバの自動更新は、サービスを止めた後なら、何で失敗しても前の版に戻します(
systemctl daemon-reloadやsystemctl startの失敗、途中のほかのコマンドの失敗、中断)。理由はjournalctl -u looptrack-upgradeに残ります。端末で手動で実行する--upgradeは、これまでどおり戻しません。 curlもwgetも無いために--auto-upgrade onが止まるとき、install.shが正しい理由を示すようになりました。apt に並べて dnf のコマンドも示します(minisignは EPEL から)。- README とガイドの言い回しを平易にしました。
CHANGELOG.mdは各版を英語の後に日本語で載せます。
rc.3 から上げるとき:
- この版に DB の移行はありません。
- 自動更新は、サーバに保存した
install.shの写しを動かし続けます。直った戻し方を使うには、1 行の更新を 1 度だけ手で実行してください:curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgrade。 - リバースプロキシの後ろのサーバで MCP のクライアントが 403 で拒否されていたなら、
LOOPTRACK_PUBLIC_URLにクライアントが使う公開の URL が入っていることを確かめてください。
ダウンロードしたものは SHA256SUMS と minisign の署名(SHA256SUMS.minisig)で確かめられます。
コンテナイメージは ghcr.io/howashoji/looptrack:v1.0.0-rc.4。
リリース候補です。変更の全部は CHANGELOG.md にあります。
Full Changelog: v1.0.0-rc.3...v1.0.0-rc.4
v1.0.0-rc.3
Third release candidate of Looptrack 1.0.0.
Changes since v1.0.0-rc.2:
- One-line server installer for Linux:
curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo shdownloads the release archive, checks it against SHA256SUMS (and its minisign signature whenminisignis installed), installslooptrackand, with MySQL, applies the minimum grants in the same run. The grants are built in aslooptrack grants print|apply, andlooptrack setupcreates a missing MySQL database. - GitHub Releases now ship the server binaries as
_serverarchives (.tar.gzfor Linux and macOS,.zipfor Windows) instead of bare binaries. - New-version notices in the desktop app and the server, one-click updates of the desktop app on macOS and Linux, a database backup before each upgrade in the desktop app, and opt-in daily automatic updates for systemd servers (
install.sh --auto-upgrade on). - CLI:
-reads comment and body text from standard input; a note when an issue is started with template acceptance criteria. - Fixes:
self-updatechecks the listed version against the signature; an older looptrack refuses a database migrated by a newer one; MCPsetupkeeps an existinglooptrack; token accounting covers every operation that records an event; export and import respect archived projects; several hook fixes. - New "Token reports" guide, and the "Updating" guide covers the new-version notices and automatic updates.
Upgrading from rc.1 or rc.2:
- Servers installed with an earlier
install.shupgrade withcurl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgrade. - This version adds database migrations 0005 and 0006. With MySQL and the minimum grants, the new table needs a grant (
install.sh --upgradeasks for it, or runlooptrack grants apply). Once migrated, do not put rc.1 or rc.2 back on the database. - After
looptrack self-update, runlooptrack issue initagain in each project.
Verify downloads with SHA256SUMS and its minisign signature (SHA256SUMS.minisig).
The container image is ghcr.io/howashoji/looptrack:v1.0.0-rc.3.
This is a release candidate. See CHANGELOG.md for the full list of changes.
Looptrack 1.0.0 のリリース候補、3 つ目です。
v1.0.0-rc.2 からの変更:
- Linux のサーバが 1 行で入るようになりました。
curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo shを実行すると、リリースの書庫を取ってきて SHA256SUMS で照合します(minisignが入っていれば署名も確かめる)。そのうえでlooptrackを入れ、MySQL なら最小の権限の付与まで同じ流れで済ませます。権限はlooptrack grants print|applyとして本体に組み込みました。looptrack setupは、MySQL のデータベースが無ければ作ります。 - GitHub Releases のサーバは、むき出しのバイナリをやめて
_serverの書庫で配ります(Linux と macOS は.tar.gz、Windows は.zip)。 - 新しい版のお知らせ。デスクトップ版とサーバの両方に入りました。macOS と Linux のデスクトップ版はワンクリックで更新でき、更新の前には DB を控えます。systemd で動かすサーバは、毎日の自動更新を選んで有効にできます(
install.sh --auto-upgrade on)。 - CLI: コメントと本文を
-で標準入力から読めます。雛形の受け入れ条件のまま着手すると、ひとこと知らせます。 - 直したもの。
self-updateは一覧に載った版を署名と突き合わせます。新しい looptrack が移行した DB は、古い looptrack が拒否します。MCP のsetupは既にあるlooptrackを残します。イベントを記録する操作は、どれもトークンの集計に入ります。エクスポートとインポートは、アーカイブしたプロジェクトをアーカイブのまま扱います。hook もいくつか直しました。 - ガイドに「トークンレポート」が加わりました。「更新」のガイドでは、新しい版のお知らせと自動更新も説明しています。
rc.1・rc.2 から上げるとき:
- 以前の
install.shで入れたサーバは、curl -fsSL https://raw.githubusercontent.com/howashoji/looptrack/main/deploy/install.sh | sudo sh -s -- --upgradeで上がります。 - この版で DB の移行 0005 と 0006 が入ります。MySQL を最小の権限で使っているなら、新しいテーブルに権限が要ります(
install.sh --upgradeが尋ねます。looptrack grants applyでも付けられます)。移行が済んだ DB に rc.1 や rc.2 を戻さないでください。 looptrack self-updateの後は、各プロジェクトでlooptrack issue initをもう一度。
ダウンロードしたものは SHA256SUMS と minisign の署名(SHA256SUMS.minisig)で確かめられます。
コンテナイメージは ghcr.io/howashoji/looptrack:v1.0.0-rc.3。
リリース候補です。変更の全部は CHANGELOG.md にあります。
Full Changelog: v1.0.0-rc.2...v1.0.0-rc.3
v1.0.0-rc.2
Second release candidate of Looptrack 1.0.0.
Changes since v1.0.0-rc.1:
- Projects can be renamed, archived and restored from the admin page and the server command line (
looptrack project rename,archive/unarchive,list --archived). An archived project leaves every listing and refuses new issues, updates and comments, while its history is kept. Adds database migration 0004 (projects.archived_at). - MCP: a
create_projecttool. MCP responses carryX-Accel-Buffering: no, so proxies do not buffer them. - Desktop edition: the tray opens its menu on left click, and the menu gains Settings and always shows the version.
- The remaining Japanese-only messages (MCP prompts, server messages, credentials, import, setup templates, hooks, verify, desktop) are now available in English.
- Loop kit: a hook that asks for an explicit model when starting a subagent, and fixes to the git and secrets guards.
- New guides: setting up by pasting a prompt into your AI, updating, and using the desktop edition without the CLI.
Verify downloads with SHA256SUMS and its minisign signature (SHA256SUMS.minisig).
The container image is ghcr.io/howashoji/looptrack:v1.0.0-rc.2.
This is a pre-release. See CHANGELOG.md for the full list of changes.
Looptrack 1.0.0 のリリース候補、2 つ目です。
v1.0.0-rc.1 からの変更:
- プロジェクトの名前変更・アーカイブ・復元が、管理画面とサーバのコマンド(
looptrack project rename・archive/unarchive・list --archived)でできるようになりました。アーカイブしたプロジェクトは一覧から消え、新しいイシュー・更新・コメントを受け付けません。けど、履歴は残ります。DB の移行 0004(projects.archived_at)が入ります。 - MCP:
create_projectのツールを足しました。MCP の応答にはX-Accel-Buffering: noが付くので、プロキシに溜められません。 - デスクトップ版: トレイは左クリックでメニューが開きます。メニューに「設定」が加わり、版もいつも出ます。
- 日本語だけだった残りのメッセージ(MCP の prompt・サーバのメッセージ・資格情報・インポート・setup の雛形・hook・verify・デスクトップ版)にも英語が付きました。
- loop の kit: サブエージェントを起こすとき、モデルを明示するよう求める hook を足しました。git と秘密のガードも直しています。
- 新しいガイドは 3 つ。AI にプロンプトを貼って導入する方法、更新、CLI を使わずにデスクトップ版を使う方法です。
ダウンロードしたものは SHA256SUMS と minisign の署名(SHA256SUMS.minisig)で確かめられます。
コンテナイメージは ghcr.io/howashoji/looptrack:v1.0.0-rc.2。
プレリリースです。変更の全部は CHANGELOG.md にあります。
Full Changelog: v1.0.0-rc.1...v1.0.0-rc.2
v1.0.0-rc.1
First release candidate of Looptrack 1.0.0.
Looptrack is a tool that makes it easy to bring loop engineering into AI-driven development. An AI can remember its work only as far as its context window reaches, so across sessions it may repeat work or skip it. Looptrack is a task memory kept outside the AI, shared by every session and every member of a team.
One Go executable serves as the server (REST API, web UI, MCP), the command-line client, the agent hooks and a desktop edition.
Highlights:
- Per-project ID prefixes, rules enforced by the server, append-only comments and events.
- next / verify / summary commands that drive the work loop.
- Hooks and rules for Claude Code, Codex and GitHub Copilot, installed with
looptrack issue init. - Japanese and English user interface, messages and documentation.
- Server, CLI and desktop builds for Linux, macOS and Windows.
Verify downloads with SHA256SUMS and its minisign signature (SHA256SUMS.minisig).
The container image is ghcr.io/howashoji/looptrack:v1.0.0-rc.1.
This is a pre-release. See CHANGELOG.md for the full list of changes.
Looptrack 1.0.0 の最初のリリース候補です。
Looptrack は、AI を使った開発にループエンジニアリングを取り入れやすくするツールです。AI が覚えていられるのは、コンテキストの窓に収まる範囲だけ。だからセッションをまたぐと、同じ作業をやり直したり、抜かしたりすることがあります。Looptrack はその作業の記憶を AI の外に置き、すべてのセッションとチームの全員で分け合います。
Go の実行ファイル 1 つが、サーバ(REST API・Web の画面・MCP)にも、コマンドラインのクライアントにも、エージェントの hook にも、デスクトップ版にもなります。
主な内容:
- プロジェクトごとの ID の接頭辞。サーバが強制するルール。追記だけのコメントとイベント。
- 作業のループを回す next / verify / summary のコマンド。
- Claude Code・Codex・GitHub Copilot 向けの hook と規則。
looptrack issue initで入ります。 - 画面・メッセージ・文書は日本語と英語の両方。
- Linux・macOS・Windows 向けのサーバ・CLI・デスクトップ版。
ダウンロードしたものは SHA256SUMS と minisign の署名(SHA256SUMS.minisig)で確かめられます。
コンテナイメージは ghcr.io/howashoji/looptrack:v1.0.0-rc.1。
プレリリースです。変更の全部は CHANGELOG.md にあります。
AppImage runtime corresponding source (LGPL-2.1 s6d) - appimage-runtime-source-20251108
Corresponding source for the AppImage runtime (type2-runtime) statically
linked into this project's AppImage builds, provided under LGPL-2.1 s6(d).
Includes the runtime's own source and the source of each statically
linked component (libfuse, musl libc, squashfuse, zstd, zlib, mimalloc).
See SHA256SUMS for the checksum of each file.
This release is not tied to a specific looptrack version; it covers every
looptrack release that uses AppImage runtime tag 20251108. See
deploy/release/licenses/runtime-components.json in the looptrack
repository for the exact build environment and any patches applied.