Skip to content

Releases: evrenucar/punchlist_app

Punchlist v1.5.61

Choose a tag to compare

@evrenucar evrenucar released this 14 Aug 02:07

Punchlist v1.5.61

The shared-address warning is out of the way

The shared-origin security notification no longer appears at the top of the board or above the GitHub sync token. This is an intentional temporary policy while Punchlist and the owner's other apps continue sharing the same domain.

What changed

  • Hidden the board-top shared-storage warning.
  • Hidden the matching warning in Settings → GitHub sync.
  • Kept the origin detector and warning model dormant behind one explicit switch for the future custom-domain migration.
  • Added regression coverage for shared paths, foreign storage keys, and configured sync tokens.

What did not change

Board data, images, history, exports, GitHub sync behavior, offline reopening, and direct file:// use are unchanged. This release only removes the visible notification.

Validation

  • 178 static tests passed.
  • 40 Chromium browser tests passed.
  • Generated hosted and standalone artifacts are byte-identical.
  • v1.5.60 remains the rehearsed rollback target.

Punchlist v1.5.60

Choose a tag to compare

@evrenucar evrenucar released this 13 Aug 11:40

Mobile work stays under your fingers

This release rolls up the accepted mobile stability work since v1.5.35.

  • Completing tasks no longer moves the next checkbox away from the place you were tapping.
  • Mobile task rows keep a direct + action without sacrificing nested text width. Delete appears only on the selected row, at its top-right edge.
  • Nested deletion confirmations sit directly above the exact branch being deleted, follow its indentation, and retain full-size Delete and Cancel touch targets.
  • Focus mode now contains long text, metadata, images, captions, and nested outlines within narrow phone screens.
  • On small screens, Back and Fold all sit in a bottom-left safe-area-aware dock.
  • The hamburger pins to the top-right after its normal position scrolls away, then returns when you reach the top.
  • Completed and Trash have enough bottom space to remain visible above iPhone Safari controls.

Offline, downloaded, and hosted copies

  • Hosted navigation checks the network for a fresh shell before falling back to the service-worker cache, while offline reopening still works.
  • Direct file:// use, JSON import/export, local persistence, history, images, and sync settings remain supported.
  • The localStorage key and board schema did not change.
  • Downloaded copies now check latest.json for updates instead of depending on the GitHub Releases poll.

Verification

  • 178 static tests passed.
  • 40 Chromium browser tests passed, including real-touch paths, IndexedDB images, shared-origin warnings, offline reopening, and the mobile 320/360/390px matrix.
  • Physical-phone acceptance passed on the private HTTPS candidate.
  • Old published artifact → v1.5.60 → old artifact rollback was rehearsed on one origin without clearing browser storage. The board remained readable and editable in every version.
  • Candidate SHA-256: de7273a996d1061a5adf36348e758201c0d7085ec6daf31165f000ce413b6d45
  • Previous rollback asset: Punchlist v1.5.35 HTML

Full build notes · How to update a downloaded copy

Punchlist v1.5.35

Choose a tag to compare

@evrenucar evrenucar released this 29 Jul 09:56

Ticking a task no longer loses its place

You tried the first version and corrected it, so this is your spec, not mine.

A ticked task now slides to the bottom of the list it is already in. It keeps its place in the nesting instead of jumping out to the top of the group, and it takes its sub-tasks with it. Untick it and it goes back exactly where it was.

The Lifecycle settings, tidied

Your four notes: the move-down setting is a toggle, "Hide after 7 days" sits on one row instead of wrapping, there is more air between the lines, and there are divider lines between the groups. No colours changed.

Two fixes to the bug report

The email button says "Copy Evren's email to report a bug", and it now copies only the address. Your summary and description stay on screen so you can copy them yourself, which is what the dialog staying open was always for.

149 tests, plus 10 in a real browser.

Full build notes · How to update a downloaded copy

Punchlist v1.5.34

Choose a tag to compare

@evrenucar evrenucar released this 29 Jul 01:19

Type a colon for emoji

Type : and keep typing. Arrows move, Enter or Tab inserts, Escape keeps the word literal.

The trigger only fires on a colon that starts a word, so 10:30, note: something and https:// are left alone. Press Escape and it stays out of your way while that same word keeps growing, so :fire can just be the word fire.

About 250 emoji, weighted towards what a task board actually needs: status, work, time, feeling. Not the full Unicode set, which with searchable names would be ~200 KB, about half the app.

Move done tasks down

Off by default. Turn it on in Settings, Lifecycle, and ticking a task sends it to the bottom of its group, under everything.

One thing to know before you turn it on: a task nested under another leaves that nesting to get to the bottom, and unticking it does not put it back, because nothing recorded where back was.

148 tests pass.

Full build notes · How to update a downloaded copy

Punchlist v1.5.33

Choose a tag to compare

@evrenucar evrenucar released this 28 Jul 21:12

Reporting a bug takes two fields, and both of them arrive

Summary and What happened. The summary becomes the issue title. Every issue used to open titled "Bug report", which made a list of them impossible to read at a glance, and the one line that would have said what broke was buried in the body.

Two ways out, told apart by colour. Purple opens a prefilled GitHub issue. Blue copies the author's email with everything you wrote, and it is now the big obvious button under a small line for anyone who does not have or want a GitHub account.

Your text is not thrown away. Opening the issue clears the form, because by then your words are safely in it. The email path keeps the dialog open and keeps your text, because a copy can fail silently and retyping a bug report is worse than an extra click. Closing the dialog clears it.

Screenshots. They cannot travel from the app into a prefilled issue: the URL carries text only, and GitHub will not render an embedded image in a body it was handed. So the issue asks you to attach them there, where the upload box is.

146 tests pass.

Full build notes · How to update a downloaded copy

Punchlist v1.5.32

Choose a tag to compare

@evrenucar evrenucar released this 28 Jul 17:57

The board is harder to wipe by accident

Restore example board asks twice, and offers you a backup on the way. It used to be a full-width red button in the middle of Settings behind a single browser confirm, one slip from erasing everything. It is a small underlined line at the very bottom now, under Report a bug. Pressing it opens a dialog that counts what you are about to lose in your own numbers, puts Export JSON right there so the backup is one click, and asks again in different words before anything happens.

The sidebar rows line up. Views was a small uppercase caption with no icon while History and Help were full rows with icons, and the gaps between the three ran 10px, 12px and 22px depending where you looked. One row shape, one spacing, and Views has an icon.

The drop line during a drag is a line. It was drawn as an inset shadow, which browsers paint inside the border box, so it followed the row's rounded corners and curled up at both ends. Straight across now.

A stuck backdrop that ate every click. Open the sidebar drawer on a narrow window, then widen the window: the drawer's full-screen backdrop stayed up while the sidebar went back to being an ordinary column behind it, so the whole page dimmed slightly and swallowed every scroll and click over the sidebar. Widening the window now closes the drawer with it.

145 tests pass, up from 141.

Full build notes · How to update a downloaded copy

Punchlist v1.5.31

Choose a tag to compare

@evrenucar evrenucar released this 28 Jul 15:07

Devices you sync with can be removed from the list

Settings → Sync lists every device that has saved to your board. Hover one and press the × to forget it. It disappears from the list on all your devices at the next sync, and Ctrl+Z brings it back.

Forgetting is tidying, not revoking. That list records who has shown up; it is not a permission list. A device that still holds your token rejoins the moment it syncs again, and it can read and write your board in the meantime. Access comes from the token, and the sync guide now walks through actually cutting a device off, plus what happens to the copy of the board that device already has.

The device you are using is not removable. It would re-add itself on the next save, so the button would read as broken rather than principled.

Everything from v1.5.30

The sidebar and Settings work from the keyboard: arrows walk the whole list top to bottom, Right opens a section, Left closes it and climbs, Ctrl+arrows expand and collapse, and Enter flips a toggle. Open sections point their arrow down.

The two names in Settings explain themselves on the page instead of in a tooltip, and the device name is required for sync. If you sync and have never named a device, that device stops syncing until you do, and opening the app says so rather than going quiet.

Enter no longer splits a line in half at a marker. Text formatting is gone, and nothing you had written was touched to do it. Every button names its keyboard shortcut on hover, Alt+S shows and hides the sidebar, and there is a printable cheatsheet at https://evrenucar.github.io/punchlist_app/shortcuts.html

And the two sync bugs that could replace a newer board with an older one. Every device you sync with needs to be on this build, because a device on an older one has neither fix.

Updating a file you downloaded

Put the new file in the same folder under the same filename, then open it the way you always do. Your board is stored by location, so a different folder or filename opens empty (nothing is lost, the old board is still attached to the old path).

Full walkthrough: https://evrenucar.github.io/punchlist_app/updating.html

The hosted app at https://evrenucar.github.io/punchlist_app/ is always current and needs no update.

Punchlist v1.5.30

Choose a tag to compare

@evrenucar evrenucar released this 28 Jul 14:43

Follow-up to v1.5.28, from a round of real testing.

The sidebar and Settings work from the keyboard now

Arrow keys walk the whole sidebar, top to bottom, straight through an open Settings section and out the other side. Right opens a section, Left closes it and then climbs to the section that holds it, Ctrl+arrows expand and collapse.

Enter flips a toggle. Space does this natively and Enter does not, which is a form-submit convention with no form here; on a sidebar you walk with arrows, the key under your finger is Enter.

A disclosure arrow points down when its section is open. It says where the content is, and the content is below.

The two names in Settings explain themselves

Your name and This device answered different questions, and only a hover tooltip said which. That explanation is on the page now.

The device name is required for sync. It is the only thing telling one device from another in the roster, in history entries, and in the dialog that asks which board to keep, and "device a07y" is not an answer to that question. If you sync and have never named a device, that device stops syncing until you do. Opening the app in that state says so rather than going quiet.

Everything in v1.5.28

Enter no longer splits a line in half at a marker. Text formatting is gone, and nothing you had written was touched to do it. Every button names its keyboard shortcut on hover, Alt+S shows and hides the sidebar, and there is a printable cheatsheet at https://evrenucar.github.io/punchlist_app/shortcuts.html

And the two sync bugs that could replace a newer board with an older one. Every device you sync with needs to be on this build, because a device on an older one has neither fix.

Updating a file you downloaded

Put the new file in the same folder under the same filename, then open it the way you always do. Your board is stored by location, so a different folder or filename opens empty (nothing is lost, the old board is still attached to the old path).

Full walkthrough: https://evrenucar.github.io/punchlist_app/updating.html

The hosted app at https://evrenucar.github.io/punchlist_app/ is always current and needs no update.

Punchlist v1.5.28

Choose a tag to compare

@evrenucar evrenucar released this 28 Jul 14:16

Same-day follow-up to v1.5.26. If you installed that one, take this instead.

Enter no longer splits a line in half at a marker

Reported against bold: press Enter at the end of a line ending in a bolded word, and two asterisks jumped down onto the new line.

The cause was never bold. A caret at the visual end of any rendered span sits inside that span in the DOM, and the code that turns a caret position into a text position stopped as soon as it found the caret, so it never counted the span's closing marker. hello **bold** reported a position two characters short, and Enter cut there.

Links render the same way and had the identical bug, so see [docs](https://e.com) split into see [docs and ](https://e.com). Both are fixed.

Text formatting is gone, and nothing you wrote was touched to do it

Bold, italic and strikethrough are pulled. **bold** shows its asterisks again.

There were two ways to do that. One strips the markers out of everything you have stored, so the text comes out clean and the change is permanent. The other stops rendering and leaves every character exactly where you typed it. This is the second one. Nothing was rewritten, no migration ran, and the markers are back in your text because they never left it. A Markdown export still carries them, so **bold** means bold again the moment it lands in Notion or Obsidian.

Ctrl+B, Ctrl+I and Ctrl+Shift+S went with it. They only ever typed those markers, and a shortcut that promises bold and delivers punctuation is worse than no shortcut.

Links are not formatting and are untouched: [label](url), bare URLs, and pasting a URL over selected text.

One thing this quietly fixes: pasting bold text in from a browser or a document used to add asterisks to your task, because the pasted styling was converted to markers on the way in. It arrives as plain text now.

Everything from v1.5.26

Every button names its keyboard shortcut on hover, Alt+S shows and hides the sidebar, the sidebar and Settings browse with the arrow keys, and there is a printable cheatsheet of every shortcut at https://evrenucar.github.io/punchlist_app/shortcuts.html

And everything from v1.5.1 forward, including the two sync bugs that could replace a newer board with an older one. Those are worth reading in the v1.5.26 notes; the short version is that every device you sync with needs to be on this build, because a device on an older one has neither fix.

Updating a file you downloaded

Put the new file in the same folder under the same filename, then open it the way you always do. Your board is stored by location, so a different folder or filename opens empty (nothing is lost, the old board is still attached to the old path).

Full walkthrough: https://evrenucar.github.io/punchlist_app/updating.html

The hosted app at https://evrenucar.github.io/punchlist_app/ is always current and needs no update.

Punchlist v1.5.26

Choose a tag to compare

@evrenucar evrenucar released this 28 Jul 13:02

Update every device you sync with. Two separate bugs fixed in this release could replace a newer board with an older one. A device still on an older build has neither fix and can still overwrite good work.

This is the first release since v1.5.1 on July 19. Twenty-five builds are folded into it.

Everything tells you its keyboard shortcut

Hover any button on a row and it names the key that does the same thing: the checkbox says Ctrl+Enter, a chevron names the Ctrl+arrow that matches whether it is open or closed, the plus says Enter then Tab, the bin says Backspace. Alt+S shows and hides the sidebar. The sidebar and Settings now browse with the arrow keys the way the board does: arrows walk everything on screen, Right opens a section, Left closes it and then climbs to the section holding it, Ctrl+arrows expand and collapse.

There is a printable cheatsheet of every shortcut at https://evrenucar.github.io/punchlist_app/shortcuts.html, also linked from Help inside the app.

Sync could lose a board (the reason to update)

  • A device that had been offline with an unfinished push used to win any divergence on its "dirty" flag alone, with no recency check at all. It pushed its old board over newer work, and every other device then pulled that old board down. Divergences are now decided by a per-board edit counter: the stale device pulls instead of clobbering (1.5.20).
  • That counter ranked devices by how many edits they made, never how recently. A phone holding 50 week-old offline edits outranked a laptop edited a minute ago, so the trip back in time was still possible. Every edit now stamps a time next to the counter, and sync reads both. When they agree it resolves silently, exactly as before. When they disagree it stops and asks, and the dialog names both edit times instead of asking you to pick blind (1.5.25).
  • Sync no longer discards edits you had not saved yet, no longer yanks your scroll position and selection on a pull, and no longer gets stuck retrying after a 409.
  • A board synced by an older build carries no timestamp, so it falls back to the counter. Nothing breaks on mixed versions, but the protection is only complete once every device is on 1.5.25.

Images moved out of the board file

Image bytes now live in the browser's IndexedDB and as one immutable file each in the sync repo, instead of inside the board JSON. Syncs and local storage got much smaller. JSON exports re-embed every image, so an export is still a single lossless file an older build can read.

Speed

  • Editing a linked copy used to repaint the entire board. Completing an alias: 650ms to 31ms.
  • Pressing Enter on a top-level row: 146-328ms to 25ms.
  • Link counting is one walk per render now, not one walk per task.

Focus mode

Collapse and fold, scrolling for long content, a smaller header, a sticky breadcrumb, the group's time total, and Ctrl+Alt+F shown where you can see it. Images no longer blow out the row layout.

Text formatting

Ctrl+B, Ctrl+I and Ctrl+Shift+S toggle markdown bold, italic and strikethrough. _italic_, __bold__ and ___both___ render, with CommonMark's rule that underscores inside a word are left alone.

Phone and touch

  • The sideways drift on iPhone was a grid track blowing out its column. Measured on the device, then clamped.
  • Tapping the checkbox on a row that was not selected now toggles it reliably.
  • Button labels stay on one line.

Also

  • Bug report dialog, with a GitHub issue link that carries your description and the build number.
  • The downloaded copy checks GitHub for a newer release on load and shows one small dismissible toast. Settings can turn it off, and the hosted copy hides that section entirely.
  • History restore matched trash records by name, so deleting two items with the same name meant Restore could bring back the wrong one. It breaks the tie on deletion time now.
  • The expand chevron hides when a task's children are all hidden.

Updating a file you downloaded

Put the new file in the same folder under the same filename, then open it the way you always do. Your board is stored by location, so a different folder or filename opens empty (nothing is lost, the old board is still attached to the old path).

Full walkthrough: https://evrenucar.github.io/punchlist_app/updating.html

The hosted app at https://evrenucar.github.io/punchlist_app/ is always current and needs no update.