tasks-free.openapps.xyz

Source

This app’s code and revision history are public. Download a copy or explore the files below.

Public
The app’s code and revision history are public.
Owned app · rev 9b0d0f7b9a93
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone f6f2112e77bc8c011e38c83a
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
← All files
src/lib/mine.ts
// "Your boards": boards this browser made, claimed or opened, with the admin key when it has one.
// Lives only in this browser; the admin link carries the key to another device.
export interface MyBoard { id: string; title: string; key?: string; at: number }

const KEY = "tasks:boards";

export function myBoards(): MyBoard[] {
  try {
    const list = JSON.parse(localStorage.getItem(KEY) || "[]");
    return Array.isArray(list) ? list.filter((b) => b && typeof b.id === "string").sort((a, b) => b.at - a.at) : [];
  } catch {
    return [];
  }
}

export function rememberBoard(board: Partial<MyBoard> & { id: string }) {
  const list = myBoards();
  const prev = list.find((b) => b.id === board.id);
  const next = { title: "", ...prev, ...board, at: Date.now() };
  try {
    localStorage.setItem(KEY, JSON.stringify([next, ...list.filter((b) => b.id !== board.id)].slice(0, 200)));
  } catch { /* storage full or blocked: the board still works */ }
}

export function forgetBoard(id: string) {
  try {
    localStorage.setItem(KEY, JSON.stringify(myBoards().filter((b) => b.id !== id)));
  } catch { /* nothing to forget */ }
}

export const boardKey = (id: string) => myBoards().find((b) => b.id === id)?.key;

Change history

Point OpenApps links to openapps.free
9b0d0f7b9a · 18 hours ago
Bind agent address in policy
25f84633c0 · 19 hours ago
Use OpenApps service URLs and add contribution strip
07519eb348 · 19 hours ago
Bounded source sync
3296872001 · 1 day ago
Bounded source sync
ac8d2f5d18 · 1 day ago
Bounded source sync
2a5b08a001 · 1 day ago
Bounded source sync
d2242ddf34 · 1 day ago