trythings guide

Showing up

Season timeline

The timeline is the season's shared wall of proof: every member's post, newest first, with the reactions and comments the group leaves on it. It is the one surface where a season stops being your own calendar and becomes a group's.

At a glance

  • It belongs to a season, not to a group. Each season has its own timeline, and a group with three past seasons has three of them.
  • Every member of the group sees it — including one who never committed and one who withdrew. Reading is a member right, not a commitment right.
  • It is ordered by when a proof was posted, never by the day the proof is for. A backfilled Tuesday posted this morning sits at the top, above yesterday's.
  • It arrives twenty at a time. Show more proof pulls the next page; nothing loads on scroll by itself.
  • Reacting is one tap and any emoji. The clap is always offered; everything else comes out of a picker.
  • Comments are permanent. There is no route that edits one and none that deletes one — the only thing that removes a comment is the proof or the season going.
  • An ended season's timeline is still live. Reactions and comments land on a proof from a season that finished months ago.
A season timeline: the heading Proof with a My Wrap-Up button, then a proof card — a photo, a Read 20 pages badge over it, Priya Patel, 3h ago, a caption, and a bar with a bare clap and a comment count of 0.
A season nobody has reacted to yet. Every bar is the lone clap, and every comment count is zero.

What is on it

One card per proof, and a card carries everything the app knows about that post:

The media
Photos and clips together, in the order the author arranged them — one big cell for a single attachment, a two-up grid for more. Tapping one opens the whole set full screen — every attachment there is something to show, in the same order.
The challenge
A badge over the photo naming the challenge the proof was posted against.
On time
A badge, only when the proof was logged on the day it was for. A backfilled day simply has no badge — nothing says “late”.
Who and when
The author’s name and avatar, and how long ago they posted — “3h ago”, and after a week the date instead. Never the day the proof is for.
Mentions
A “with …” row when the author named other members, the first two by name and the rest as a count.
The caption
Optional — an image-led proof often has none, and nothing is drawn when it is empty. A link in it earns a preview card underneath.
Checklist progress
A “3/4” control, only on a challenge that has a checklist. It opens a read-only view of what was ticked that day.
The action bar
The reactions, the comment count, and — for the author only — the button that manages who is tagged.
The newest comment
Previewed under the bar, clamped to two lines, with “+N more” counting the ones it is not showing.

The author gets one thing nobody else does: a menu with Edit caption and Delete proof. It is withheld on a surface showing an ended season, because the server would refuse both writes there anyway.

The order

Newest-posted first, and that is a different question from newest day. A proof carries two times — the calendar day it is for, and the instant it was written — and the timeline sorts on the second one. So a member healing last Tuesday inside the backfill window appears at the top of everyone's feed today, above the proofs posted for yesterday.

Two proofs written in the same instant are broken apart by their id rather than left to chance. That is not fussiness: the feed is paged, and an unstable tie at a page boundary drops one row and repeats another.

Who sees it, and what is left off

The gate is group membership, checked through the season: the season resolves its group, and the group says whether you are in it. Nothing else is asked. A member who never took up a commitment sees the whole feed; so does one who withdrew.

A member of the group
Sees every proof in the season. Committed or not, active or withdrawn.
Anyone else
Refused. A season that does not exist and one you are not in are told apart — a missing season is a 404, a season you cannot read is a 403.
A deleted proof
Gone from the feed, and so are its reactions and comments. Deleting a season takes its whole subtree with it the same way.
A copy of a proof
Kept off the feed. Some older proofs carry copies, from when a tag had to be accepted; the author’s card stands for all of them, which is why a reaction on any of them counts on that one card. Nothing mints a new copy today.
A clip still encoding
The whole post is hidden from everyone but its author until the clip is ready — not shown as a photo post with a gap in it. It arrives whole on the next ordinary refresh.

Show more proof

The feed loads twenty proofs and stops. Show more proof asks for the next twenty and appends them; the button disappears when there is nothing left. Nothing loads on scroll.

Two details are worth knowing, because both exist to stop the list lying to you:

  • A proof posted while you are reading does not duplicate. Paging is by offset, so a new post shifts every later row down one and the row at the old boundary would come back on the next page. Pages are merged on identity and the repeat is dropped.
  • Reacting three pages down leaves you three pages down. A write refreshes every page you have loaded, not just the first, so the feed never collapses back under you.

Reactions

A reaction is one emoji from one member on one proof, and a member may hold as many as they like at once. Tapping a pill you are already in takes that emoji back; tapping one you are not joins it.

The bar has two shapes, and which one is showing depends on a single fact — whether anybody has reacted yet.

Nothing held
A lone clap. Tapping it claps; holding it opens the picker, which is the only way to the rest of the map before there is a plus to press.
Anything held
The clap, then every emoji somebody actually holds, then a plus that opens the picker.
The clap
Always drawn, whether or not anyone has tapped it — so the gesture you learn on one proof is in the same place on the next.
Everything else
Earns its pill by being held. An emoji nobody chose is not a suggestion the bar makes; it is a row in the picker.
The count
A count of members, not of taps and not of emoji. Someone holding five pills is one on each.
The order
Most-held first, ties broken by the emoji itself — so the bar never reshuffles between two identical reads.
Yours
A pill you are in is highlighted, and reads as pressed to a screen reader.
The same card's action bar, now showing a clap pill reading 1, a heart pill reading 1, a plus button, and a comment count of 0.
The clap was tapped directly. The heart had to come out of the picker — the two arrive by different gestures.

The picker

Everything past the clap comes from the picker: hold the lone clap to open it, or press the plus once the bar has pills. It opens on a suggested strip, a search box, and then the whole map by category.

The suggested strip
This device’s recent emoji, newest first. A member who has never picked one is shown the app’s five defaults instead, so the strip always teaches something.
Recents
Kept on the phone, not on the account — which emoji come to hand is a fact about the device. Sixteen are remembered; the strip shows the first eight.
Search
Matches the emoji’s name and a set of extra keywords, so “streak” finds 🔥 and “gym” finds 💪.
Artwork
Vendored SVG, never the platform’s emoji font. A reaction is a shared object, so the same pill has to be the same picture on every phone looking at it.
Refused keys
The server keeps the same list the app draws from. An emoji outside it is rejected rather than stored as something nothing can render.
The emoji picker open below a proof card: a suggested row holding a single heart, a Search emoji box, and the Smileys grid below it.
The strip is this device's recents — one heart, chosen a moment earlier. A device with none is shown the app's five defaults instead.

Who is behind a count

Hold a pill — or hover it, on a device with a mouse — and it names the members in it. The list is ordered you first, then by name, and it carries at most eight names; past that the count carries the rest as an and N others remainder.

That order is a contract rather than a detail. Your tap paints the pill before the server has answered, and the guess puts your own name on the front — so the list has to come back in the same order, or it would visibly reshuffle a moment later.

A clap pill with a count of 2, held open to show a tooltip reading Marcus Bell and Sarah Chen.
Held open by Marcus. He is first because he is the one looking.

What a reaction sets off

Who hears
The proof’s author, plus every member mentioned on it who still stands in the group — minus whoever reacted. A member who left is still named on the card and stops being told about it.
How often
Once per member per proof. Your first emoji rings the bell; a second, third and fifth do not, so nobody can ring it five times.
Taking it back
Dropping your last emoji removes the bell row with it. Dropping one of several leaves it — you are still on the proof.
Reacting to your own
Nothing is sent. The list of people to tell is everyone but you, which on an untagged proof of your own is nobody.
Email or push
Neither. A reaction is bell-only.

Comments

The comment button on a card opens the thread as a sheet: every comment on the proof, oldest-first, and a box to add one. A comment is between 1 and 2000 characters.

The Comments sheet over a dimmed feed, showing one comment from Sarah Chen and an Add a comment box with a send button.
Oldest-first, so a thread reads top to bottom.
Who can comment
Any member of the group, on any proof in the season — including a season that has already ended.
Order
Oldest-first, ties broken by id so a thread never reorders itself between two reads.
Editing
Not possible. There is no endpoint that changes a comment.
Deleting
Also not possible — not by the writer and not by the proof’s author. A comment goes when the proof or the season does.
On the card
The total sits beside the comment icon; the newest one is previewed below, and “+N more” counts the ones the preview leaves out, so the two numbers never match.
On a proof with copies
One thread. Comments written on the author’s row and on any copy of it interleave into a single list.
A proof card whose action bar reads clap 2, heart 1 and 2 comments, with Marcus Bell's comment previewed underneath and a +1 more link below it.
Two comments on the proof, one of them shown. The bar counts both; the link counts only the one it is not showing.

What a comment sets off

A comment is the noisiest thing on the timeline — it is the only action here that reaches three channels — and the comment itself is written together with the bell rows it owes, so a comment never exists that somebody was not told about.

Who hears
The same set a reaction reaches: the author plus every member mentioned on the proof who still stands in the group, minus the commenter.
The bell
Every comment. Unlike a reaction, a second comment from the same member is a second event.
Push
At most once per recipient, per proof, per day — and it never names who commented.
Email
The same once-a-day rule, but it does name the commenter. Neither ever carries the comment body.

The mail is covered in full in the Email notifications guide , and its phone twin in Push notifications .

Before anyone has posted

A brand-new season has an empty timeline, and the app answers that differently depending on which surface you are standing on. It is worth stating plainly, because the difference is real and easy to read as a bug:

A running season
The “Proof” heading and the My Wrap-Up button, with nothing underneath them. There is no empty-state card here, and no “be the first” prompt.
An ended season
An empty state — a scroll icon over “No proof on this season”.
The “Last season” block
Not drawn at all. A finished season with no proof leaves no heading behind on the group page.
A member with no proofs
Their drill-down is empty on the same terms. Their post count comes from the server, not from the loaded pages, so it reads zero rather than reading whatever happened to be on page one.

Where the same feed turns up

There is one card and one feed, rendered on five surfaces. What changes between them is which controls are offered, never what a card is:

The season hub
The running season on its group’s page. Everything is on: reactions, comments, Wrap-Up marks, the author’s menu, tagging, and tappable names.
The ended-season viewer
The final standings and then the whole season’s proof. Reactions, comments and marks still work; the author’s tag controls and ⋯ menu do not, because the writes behind them are refused.
The “Last season” block
On a group with no running season. The same read-only shape, and names are not tappable — there is no member view on that page to send you to.
A member’s drill-down
The same feed narrowed to one member, filtered in the database rather than in the app, so the count beside their name is their real total.
A proof’s own page
One card, reached from a notification or a tap. It runs the same projection as the feed, so a field added to one cannot quietly miss the other.