Skip to content

oneloop 0.1.0-rc.6

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Oct 19:43
· 15 commits to main since this release
72c2d6b

The sixth release candidate. It adds task checklists, shows descriptions as
formatted Markdown, keeps the project and the Board's filters in the address,
and puts moved and new tasks at the top of their column. It also makes the web
app faster on slow networks and fixes many bugs. Read the upgrade notes before
you upgrade; if you upgrade from 0.1.0-rc.4, read those of 0.1.0-rc.5 too.

Upgrade notes

  • Stop oneloop, install the new version, and run
    oneloop db migrate --backup-dir <directory>. It saves a backup first, then
    upgrades the database from schema 6, which 0.1.0-rc.4 and 0.1.0-rc.5 use,
    to schema 8. Older versions refuse a schema 8 database. To go back to one,
    restore the backup that db migrate made.
  • If you upgrade from 0.1.0-rc.4, also follow the upgrade notes of
    0.1.0-rc.5: Knowledge folders have size limits now, and some MCP errors and
    read_pool cursors changed.
  • Browser tabs that are open during the upgrade still run the old version.
    They show oneloop was updated, but reload by themselves only where
    Reload after updates was on, so ask people to reload them. From this
    version on, every tab reloads by itself at a safe moment, and the setting is
    gone from the account menu.
  • The addresses of the Board, the Roadmap, Knowledge and
    Settings now name the project, and the Board's address holds its
    filters. Older bookmarks and links still work: they open the project you
    last switched to in that browser, or else your first project. Links to a
    task don't change.
  • In MCP, task.move without position, beforeTaskId or afterTaskId now
    puts the task at the top of its new column, and new tasks, also from
    pool.promote, start at the top of Planning. Before, most went to the
    bottom. Pass a place to put a task anywhere else. A task's position in
    reads can now be below zero; use it only to order a column.
  • In MCP, read_activity with a task that doesn't exist now fails with
    not_found. Before, it returned an empty page.
  • AI assistants that are already connected don't need to connect again. The
    new checklist operations need Create and manage tasks and Pool items, and
    task.checklist.delete also needs delete access, as task.delete does.

Added

  • A task's description now shows as formatted Markdown, as people and AI
    assistants write it: headings, lists, tables, code and more. Task keys of
    your projects, such as WEB-042, link to their tasks. Click the text, or
    choose Edit, to change it; leaving the field, Esc or Ctrl+Enter
    (Cmd+Enter on macOS) saves it and shows it formatted again. An epic's
    description shows formatted too.
  • Ctrl+S (Cmd+S on macOS) now saves the field you are typing in at once and
    keeps you there. In a dialog, or while you edit a comment, it does what the
    main button does. It never sends a new comment, and it no longer downloads
    the page.
  • In MCP, create_attachment_upload can replace a file that you uploaded:
    pass its ID as replacesAttachmentId. When the upload completes, the new
    file takes the old one's place, and the old one is deleted as
    delete_attachment deletes it. This needs no destructive access, so an
    assistant can update its own documents without asking you to delete the old
    version. If the upload fails, the old file stays.
  • Tasks have a Checklist: short steps that you add, tick, rename, move and
    remove on the task's page. A Board card shows how many steps are done, such
    as 2/5, in green once all are. In MCP, task.create takes the steps in
    checklist, read_task returns them, search_tasks and read_epic count
    them, and task.checklist.add, task.checklist.update,
    task.checklist.move and task.checklist.delete change them.

Changed

  • oneloop now compresses the web app's files with gzip, so a first visit
    downloads about 60% less and the app opens faster on slow networks. A
    reverse proxy no longer needs to compress them, and the nginx example no
    longer does.
  • The app asks for all of its start-up scripts at once, instead of one level
    of imports at a time, so it opens faster on slow networks.
  • The app reads your workspace while it checks your session, instead of
    after, so every visit opens one round trip sooner.
  • When a Board tab shows again, reconnects, or hears of a change to an epic,
    track, milestone or member, it now reads the Board once instead of twice.
  • A tab no longer checks your access every 30 seconds while it is hidden or
    gets live updates. Live updates already report lost access, and a hidden
    tab refreshes when it shows again.
  • The web app does less work on slow computers and phones. Turning off a
    Board filter or emptying the search no longer draws the whole page again,
    so the cards move smoothly into place. A change to one card, a drop or a
    filter no longer redraws every loaded card, and dragging a card is
    smoother. Opening a task draws its page two times instead of three, and a
    change from another tab to the open task reads its comments and activity
    once instead of twice.
  • A Board search, a Board filter or a project switch that takes more than a
    moment now dims the page until the result arrives. Before, a slow search
    looked as if nothing happened.
  • The Board, its counts and, in MCP, search_tasks without a status no
    longer slow down on an instance with many tasks where no task was ever
    blocked. Before, counting the blocked tasks could read every task of the
    instance, which took tens of milliseconds at 100,000 tasks.
  • An open connection, such as the one each browser tab keeps for live
    updates, now uses about 20 KB of server memory. Before, each one kept its
    own copy of the routes, about 300 KB, so 100 open tabs took 30 MB.
  • After many writes in a short time, such as an import through MCP, the first
    write a day later no longer holds up all other writes while it removes the
    expired retry keys. Database maintenance now removes them, a batch at a
    time. Before, 50,000 expired keys held up writes for a few hundred
    milliseconds.
  • Uploads, and the storage check that runs every minute, now count stored
    files and unfinished uploads but not image thumbnails, so they no longer
    slow down as an instance collects images. Thumbnails go when files and
    unfinished uploads reach 80% of the storage limit. Clean up now still
    counts them, as the Storage page does.
  • oneloop now looks for files that nothing refers to, such as files that a
    crash left behind, once an hour instead of every minute.
  • Image thumbnails, and files and avatars that the browser already has, no
    longer wait for other changes to finish, such as a Knowledge sync. An
    attachment's lastAccessedAt now changes only while the attachment is
    temporary, and the 24 hours of a temporary attachment start again when
    someone marks it temporary.
  • Large Knowledge files download faster.
  • The address now names the project on the Board, the Roadmap,
    Knowledge and Settings, and the Board's address also holds its
    filters and search. A refresh, a bookmark or a link opens the same project
    and filters, switching projects is a step in the browser's history, and
    Back leaves the Board instead of undoing filters. An address without a
    project, such as an older bookmark, opens the project you last switched to in
    this browser. Signing out clears the project and filters from the tab's
    address, so the next person to sign in there starts from their own. Before, a
    refresh opened the first project by name and lost the filters.
  • Every open tab now reloads by itself after an upgrade, when nothing you typed
    would be lost, nothing such as a dialog, a menu or an Undo offer is open,
    and the tab is hidden or unused for five minutes. Reload after updates is
    gone from the account menu. The bar says that the page reloads by itself and
    offers Reload now, and after such a reload the page says "oneloop was
    updated".
  • Markdown previews and the Knowledge base now load the math renderer, about
    80 KB, only for text with math. Before, any $, such as in a price or a
    shell variable, loaded it.
  • A task that changes status without a place now goes to the top of its new
    column, Done too: with Move to, the task's Status, Unblock and
    complete
    , or task.move in MCP without position, beforeTaskId or
    afterTaskId. New tasks, also ones made from a Pool idea, start at the top
    of Planning. Before, most of these went to the bottom, where a long
    column hid them until Load more, and Done mixed both orders. A drag,
    Move up and Move down still put a task exactly there, and
    Newest first still lists Done by completion time. A task at the top
    takes a position above the first one, which leaves the other tasks where
    they are, so a task's position in MCP reads can be below zero. Undo
    puts a deleted task back at the same place in its column, also when a new
    task took its place; before, it went to the end.
  • In MCP, every tool that names a task now also accepts its key, such as
    WEB-042: read_comments, read_activity, discussion.comment.create,
    task.delete and every other task.* operation, also in beforeTaskId and
    afterTaskId. Moving a blocked task to Done now fails with a message that
    names task.unblock-and-complete, and set_attachment_temporary is marked
    as safe to repeat.
  • Newest first is now a small sort button at the top of Done, so
    Done's header is as tall as the others and its cards line up with theirs.
    The button shows your choice at once, and the page dims while a slow Board
    read loads the new order.

Fixed

  • In MCP, read_activity with a task key, or with a task that doesn't exist,
    returned an empty page. It now returns the task's activity, or fails with
    not_found.
  • A Mermaid diagram in a Markdown preview no longer fails when its renderer
    takes more than 30 seconds to download, as on a slow mobile connection.
    When the renderer can't load, the preview now says to check the
    connection, instead of blaming the diagram's syntax.
  • Long comments on a task page no longer fold to nothing and grow back when
    the page draws again, such as after a change from another tab or a saved
    field. The page also stays at the comment you were reading. Before, it
    could jump away by several comments.
  • The Board now shows its loading placeholder while its cards load, when you
    open it from another page, such as the Roadmap or a task you opened from a
    link. Before, it said "No tasks yet" and offered Create task, or showed
    only that task, until the cards arrived.
  • Closing a file preview now gives focus back to the file name that opened
    it, also when the task's attachments changed while the preview showed.
    Before, keyboard users landed at the top of the page.
  • When several sign-in limits apply at once, "Try again in …" and the
    Retry-After header now give the longest wait. Before, they could give a
    shorter one, and the next attempt was refused again.
  • After oneloop could not be reached for a while, a tab without live updates,
    such as one whose updates a newer tab took over, again checks every 30
    seconds that you still have access. Before, it stopped checking until you
    reloaded the page or signed in again, so it didn't notice when you lost
    access to a project.
  • A task page no longer stays at "Loading activity…" when the task loads
    faster than its comments, as could happen when you opened it from the
    Board. Before, the comments and activity appeared only when something
    else drew the page again.
  • Creating a task, deleting one or undoing that, and turning a Pool item into
    a task no longer empty the Board in a project that isn't the first by
    name. Before, the Board said "No tasks yet" until something else loaded it
    again. The new card also shows one request sooner.
  • After you follow a link into another project, such as a Knowledge link,
    its Board shows the project's cards. Before, it said "No tasks yet",
    because the first project's tracks and epics stayed loaded.
  • The account menu shows only the version, such as v0.1.0-rc.6. Before, it
    also showed the commit the build came from, which made the menu scroll
    sideways in release images. /healthz and oneloop --version still give
    the commit.
  • After Load more on the Board, typing in the search and erasing it
    quickly, or turning a filter on and off before its cards arrive, keeps every
    loaded card in view. Before, each column fell back to its first 50 cards with
    no Load more, while its count still showed more.
  • A link to a oneloop page in a Markdown preview or a Knowledge file, such as
    [the task](#/task/WEB-042) or the page's full address, now opens that
    page. Before, it went nowhere.
  • Code blocks in the Knowledge base now have a visible background in the dark
    theme. Before, it matched the page.
  • When someone else changes the open task, such as a teammate, another tab or
    an AI assistant, its status in the page header and in Status, its title
    and its description now show at once, also while you type in another of its
    fields. Before, they changed only after you left the task's fields.
  • Opening a Markdown file with a very long run of backticks (`) or
    tildes (~) no longer freezes the tab. Before, such a 200 KB file could
    freeze it for more than a minute.
  • A click on a task's file, or on browse files, now works also while the
    task changes, such as right after you edit one of its fields. Before, the
    change drew the files again under the pointer, and the click did nothing.
  • After you move a file with the arrow keys, focus now stays on it, so you
    can move it again. Before, it fell to the page once oneloop saved the new
    order.
  • When you turn Newest first on or off in one tab, the browser's other
    Board tabs keep showing live changes, in the order they show, and use
    the new choice when they load again. Before, they stopped showing changes
    until they read the Board again.

Distribution

  • Docker: ghcr.io/code19m/oneloop:0.1.0-rc.6, for linux/amd64 and
    linux/arm64
  • From source:
    cargo install --git https://github.com/code19m/oneloop --tag v0.1.0-rc.6 --locked