Skip to content

0.9.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 20:31
67b8ea3

Changed

  • Milestones now share one row at the top of the dated roadmap. Instead of a row each
    among the bars, every milestone draws as a diamond in a single Milestones row ahead of
    the first bar — the same row the resources axis already had — so the dates the plan is
    measured against read across the work beneath them and the work starts at the top of the
    grid. Each diamond names itself (title, exact date and workflow state) and opens its note
    on a click; the full-height line and its label are unchanged, and so is everything about
    where a milestone lands, what a drag writes and what the shelf does with it. Two
    consequences worth knowing: no fold can take a milestone off the grid any more, not even
    folding its parent — that is the point of the row — and a milestone is no longer a stop
    for the roadmap's arrow keys, so reach one from the tree or the board when there is no
    pointer.

Added

  • A MoSCoW priority on every row. Name a priority property under the new
    Prioritization view options and each row draws a priority chip: press it, or use
    Set priority in the row menu, to pick a rung. The ladder ships holding
    1 - Must, 2 - Should, 3 - Could, 4 - Won't and is yours to rewrite; clearing it takes
    the chip and the menu away and leaves an ordinary property. The ✨ button binds and
    backfills it like every other optional property, clearing removes the key rather than
    blanking it, and every write is one undoable batch.

  • The Deliverables board moved into the scope picker. Its toolbar toggle position is
    gone: every board is the Board button now, and the picker beside it says which —
    Product and Deliverables lead the menu, each under its own icon, with the
    iterations below. The pick is remembered like an iteration scope, so leaving Board
    and returning reopens the board you were on.

  • The scope picker is the board's own control. It draws after the New button, on the
    board and nowhere else, and it draws even in a vault with no iterations yet — because it
    carries the only way to make the first one. Iterations no longer appear in the tree or in
    any New menu: an iteration is the container a board is scoped to, not work the backlog
    holds. A new one is named 1 - Iteration by default, numbered so a folder of them sorts
    in the order they run.

  • Make and edit an iteration from the board. The scope picker carries
    New iteration… and, on a chosen sprint, Edit iteration…. A new one is dated for you
    — the day after the last sprint ends, running for the length you configure — and every
    field is a prefill you can change before it is written. The note is not opened: making a
    sprint is a planning act, and the board you are planning on stays in front of you.
    Editing writes to the iteration note alone: it never re-stamps the work already in it.

  • A board scoped to one iteration. Pick a sprint from the scope picker beside the
    projection switcher and the Board position draws that iteration alone, in three columns
    over your own workflow: Open, In progress and Resolved. Which of your states fall in the
    two outer columns is configured; everything else is in between. The iteration's goal
    draws above the columns, a card moves between buckets by drag, Alt+arrow or its menu, and
    the choice of scope is remembered per view, per device — through a rename of the note or
    of a folder above it.

  • An iteration to put work in. A note typed Iteration is a time box: name its
    property in the view options (a goal property too, for later), then, from any row's
    or card's menu, put an item in it with Set iteration (or take it back out with
    None). Joining one takes its start and target dates in the same action, so
    scheduling a sprint is one pick rather than three.

  • Fold a type group in the shelf. Each type group in the expanded shelf now has a
    disclosure beside its name.

  • Search the shelf, and pick its types without the menu shutting. The expanded shelf's
    header carries a search box: type and it narrows to the unplaced cards whose title
    matches, leaving the placed half of the roadmap alone, and its count keeps reporting the
    true total. Escape clears it, and the card menu offers Search unplaced... for a
    keyboard. The type filter now stays open across a pick and leads with Show all types
    and Hide all types, so "only the type I want" is two picks in one menu.

  • A toggle for the bucket grid on the horizon roadmap. A wide bucket reflows its cards
    into several columns, which is right for a backlog slice and wrong for a short list you
    are reading down. The toolbar now carries a toggle for it while the horizon axis is
    showing: press it and every bucket lists its cards one per row.

  • Every milestone in one row above the roster. On the resources axis a milestone is no
    longer filed under whoever is named on it — where folding that person's band took the
    date off screen — and one naming nobody no longer waits on the shelf.

  • One row per resource, whatever they have. An absence used to draw a blocked line of
    its own beneath its resource's header; it draws inside the header itself now, and two that
    share a day pack into their own sub-lanes rather than either one hiding the other.

  • Fold a board column or a horizon bucket — press the chevron in its header and the
    column narrows to a strip, keeping its name, its count and its ability to take a drop.
    The choice is remembered per saved view and per device, beside the rows you have
    collapsed, and never written to the .base. On a board the column's own context menu
    offers the same fold, which is the keyboard path to it.

  • A done column of finished work opens folded — the first time a board draws a done
    column holding finished work and nothing else, it starts shut, the same once-only default
    the tree applies to a parent nobody has ruled on. One still carrying open work opens
    normally, an empty one is left alone, and once you open a folded column it stays open.
    Horizon buckets have no such default: an axis has no notion of finished, so a bucket is
    open until you shut it.

    A running quick filter opens every fold, so a search can still find what is inside one.

  • How far along a roadmap bar is — a bar on the dated axis now carries a band
    showing the share of the work beneath it that is done, and every row with
    descendants carries the count the tree's rollup column shows.

  • The roadmap says what your search found underneath — filter the roadmap and any
    bucket card, bar, shelf card or context row that is only on screen because something
    beneath it matched now names those matches, each one opening its note.

  • Resize the tree's property columns — drag the grip at a column header's trailing
    edge, double click it to put it back, or focus it and use the arrow keys. Each column keeps
    its own width, per saved view and per device, beside the folded rows — so a title
    column and a risk chip no longer have to be the same size, and nothing about your
    working position is written to the .base file.

Changed

  • The board and the shelf only draw the cards you can see — a column, a horizon bucket
    and the shelf now let the browser skip the layout and paint of cards scrolled out of
    view, which the tree's rows have done since 0.7. Measured over ~800 notes in the
    development harness, switching to the board went from 330ms to 126ms and to the roadmap
    from 557ms to 203ms.

  • Recording an absence now asks for the dates alone.

  • State colours no longer offer a done state.

Fixed

  • Two rough edges on the shelf's own controls. The type filter's menu opened under the
    mouse the first time and then reopened at the button's edge after every pick, so the
    menu moved the moment it was used; it now opens in the same place both times. And the
    search box drew a border and a background inside the theme's own, giving the field a
    double outline; it is now a plain search field wearing whatever the theme gives one.

  • The pause after a write on a large backlog is gone. Every change used to redraw the
    whole tree, so on a vault of around eight hundred notes with the tree open, each move,
    each state change and each undo was followed by roughly half a second of nothing. The
    view now redraws only the rows that would look different — measured at about a third of
    the old cost per row, on the same expanded tree at every size tried. Three things switch
    it off, and on a vault that shows one of them nothing changes: a column that is not a
    note property (a file's modified time, a formula), a row whose cell draws a link or an
    embed rather than plain text, and a row whose file Obsidian has not finished indexing —
    each redraws as it always did, so nothing can go stale on screen.

  • One view saving can no longer forget every other view's working position. Saving
    tidies away entries for .base files the vault no longer has — and if the vault could
    not answer at that moment, every entry looked gone and every one was dropped. It now
    checks that the vault can see the base of the view doing the saving before it believes
    any of the answers.

  • Progress bars line up again in a big backlog. The bar and its count share a lane
    anchored at the right, and the count had a fixed reservation that only held two digits
    over two — so a row counting hundreds pushed its own bar left, and rows counting units,
    tens and hundreds each drew their bar in a different place.

  • Folding every resource row no longer reports the plan as empty. The roadmap counted
    the rows it had drawn, and a folded band draws none — so shutting the last open band
    answered with "all your items are done and hidden" beside the headers, counts and rails
    still on screen.

  • A bar drag or resize no longer loses its release. If the vault changed while a bar was
    in the air — which happens most often in the first minutes after a view is opened, while
    the query is still settling — the release could write nothing at all: the ghost showed the
    dates it meant, the bar snapped back, and nothing was said about it. The view now waits for
    the gesture to finish before it rebuilds.

  • Drawing a dependency no longer loses its release either. The wait above covered a
    bar's own moves and resizes but not the dependency connector: a vault change mid-draw
    took the preview line with it and the release wrote no dependency, silently. A link
    gesture now holds the rebuild back the same way.

  • A one-day absence crossing reads "1 day lost", not "1 days lost". The cost sentence
    in the crossing's tooltip and its screen-reader text now pluralizes like every other
    count on the roadmap.

  • The Property column width option is gone. The width is a per-column pick you drag
    now, kept on the device rather than in the shared .base

Removed

  • The card's right-click menu no longer offers Expand/Collapse unplaced.

  • The card's right-click menu no longer lists the children one by one — the
    Show/Hide children toggle stays, and so does the list on the card itself. A card with
    many children no longer pushes the rest of its menu off the screen.

What's Changed

  • Drop done states from the state-colour dialog by @Luis85 in #141
  • Fold a board column and a horizon bucket by @Luis85 in #140
  • Empty Hierarchy on the roadmap: progress on the bar, matches in the row, lanes dropped by @Luis85 in #138
  • Resize each property column by dragging its header by @Luis85 in #139
  • Move the resize mark off the next column, and let the header reveal it by @Luis85 in #144
  • Count what the axis holds, not the rows it drew by @Luis85 in #145
  • Pack the boxes the marks draw as, not the days they name by @Luis85 in #146
  • Specify the Iterations board: design spec, register notes and implementation plan by @Luis85 in #142
  • Declare the box-sizing the pack's arithmetic rests on by @Luis85 in #147
  • One row per resource: derived absence names, packed stretches, and what an absence costs by @Luis85 in #136
  • Rename and re-shape the collapse store as a view-state store by @Luis85 in #143
  • Stamp the view-state entry, and make the prune prove the vault answers by @Luis85 in #148
  • Skip the layout of cards nobody can see, and make the numbers reproducible by @Luis85 in #137
  • Bucket-grid toggle, and folding a shelf type group by @Luis85 in #150
  • Close "Horizon and dates from the row": check the roadmap agreement by @Luis85 in #152
  • Multilang: the translation layer, and a catalog to put text in by @Luis85 in #151
  • Harness fidelity: Obsidian's own modal, a phone knob, and the case that found a bar-alignment bug by @Luis85 in #153
  • Keep the rows a data update did not change by @Luis85 in #149
  • Add a MoSCoW priority chip beside the risk chip by @Luis85 in #156
  • Add The Product Page epic to the backlog by @Luis85 in #157
  • Give the shelf its own search, and a type picker that stays open by @Luis85 in #161
  • Spec a product-owner skill for adding backlog items by @Luis85 in #160
  • Derive requirement dates from git history instead of guesses by @Luis85 in #158
  • Draw milestones in one row at the top of the dated roadmap by @Luis85 in #159
  • Keep the shelf's type menu in one place, and its search in one box by @Luis85 in #163
  • Fix three review findings on main: link-drag deferral, absence plural, reconcile.ts style by @Luis85 in #164
  • Bump the dev-minor group with 4 updates by @dependabot[bot] in #162
  • Specify the modular product management toolkit: two PRDs, an SDD, eleven epics by @Luis85 in #155
  • Iterations: the type, the board scoped to one, and making one from it by @Luis85 in #154
  • Release 0.9.0 by @Luis85 in #165

Full Changelog: 0.8.0...0.9.0