Marker
One day, laid out once, with everybody's hours on it.
core, vacancy and contractor are
reserved and always sort first. A person's team is a tag too, so "the Nights team" and
"the Seniors" are the same gesture; stacking two chips asks for the people who are both.See the Keyboard tab for every shortcut.
Everything is stored in your browser's localStorage, on this device and this browser only. Nothing is uploaded anywhere.
The Export button in the topbar writes a .pumapack file holding every
board, every person on it, and your display preferences. ⌘S writes the same file and,
where the browser supports it, keeps overwriting the one you chose.
Import adds; it never replaces. Boards from a pack are appended to the ones already
open, so a restore cannot silently overwrite work. You can also drop a .pumapack
anywhere on this window. A single board can be exported on its own from the tab's right-click menu.
The tab's right-click menu also writes the board as a spreadsheet
(.xlsx) — one day, one sheet, with the same bars, the same overlap row
and the same night shading. It is not a picture: the People sheet is
live, so changing somebody's hours, unticking a day or clearing their Show
box moves the bars and re-totals the row, in Excel, Numbers, LibreOffice or Sheets.
It is one day only, and that is not a limitation that can be worked around. A spreadsheet has no time-zone database — it cannot know that London moves in March — so every offset is worked out here and written into the file as a plain number. Changing the date inside the sheet moves none of them. Export the day you want instead. The sheet's About tab says all of this, and names anyone whose shift spans a clock change on that particular day.
Nothing reads the spreadsheet back in. The .pumapack is the round trip.
The same file carries a roster: the people on every board, with their time zones,
working hours, teams and tags — and the tag vocabulary itself, so the chips arrive with their
colours and their order rather than as a heap of grey labels. A sibling app that also holds people can read it, and this app can read
theirs — drop their .pumapack on the window and it offers to import the people from it.
It is deliberately narrow. What crosses is who someone is and when they work. Ratings, roles, development plans and everything else in the other app's file stay where they are, and this app's boards and filters do not travel out. You are told exactly what is being left behind before anything is imported, and people already here are updated in place rather than duplicated.
Danger zone. This erases every PumaShift record in this browser. Export a backup first.
Type DELETE EVERYTHING to confirm:
On the board: click a zone row to fold it, click a person's name to edit them, and click anywhere on the grid to drop the marker. Right-click a person for the rest of their actions, or a board tab for the board's. Anyone hidden comes back from the Hidden button in the toolbar.
PumaShift is a lightweight, portable, offline board for reading a distributed team's working hours. It exists because a list of time zones is not the same thing as a picture of a day, and the question worth asking is almost never "what time is it there" but "when are these four people all awake at once". So it draws one day on one axis, puts everybody's shift on it, and lets you take away the people you do not need until what is left lines up. The clock keeps moving while you look at it.
PumaWorx is a suite of offline, single-HTML productivity apps that run entirely in your local browser. The entire suite is a personal, open source vibecoding project.