Admin – ihaveanidea

User

Email: mark@mark-christensen.com

ID: 6403f2eb-18b4-45ee-b9af-eee2e0e93425

Created:

← Back to Account

Password

Set. This account can log in.

API Keys

App ID Created Actions
android:2dd0d69cf5d5178e
desktop:38ded643-95fb-489f-969c-7871359f7c40

Definitions

User-defined idea types and task types (0.11.0). Read-only here — created and edited on the clients' Types page, synced via definition.* CRDT ops.

Kind Name Built-in Data
idea_status Dream yes {"builtin_slug":"dream","schema":1}
idea_status In Progress yes {"builtin_slug":"in-progress","schema":1}
idea_status Stable yes {"builtin_slug":"stable","schema":1}
idea_status Finished yes {"builtin_slug":"finished","schema":1}
idea_status Need $ — {"schema":1.0}
idea_status Paused — {"schema":1.0}
idea_type Software yes {"blocks":["concept","note","attachment","plan","task_list","release","asset"],"builtin_slug":"software","schema":1,"task_type_ids":["818ca193-82c3-5d3d-8976-2b0b8359226f","a57ca2a4-d396-587e-b1bb-1615090d015a","83776309-6f31-52b1-89ab-fce3a072eef9","7a52c188-6cda-58d0-9872-9aafb05b81ce","e78f0a74-c1b4-5a2d-aa37-0978495fb462"]}
idea_type App — {"blocks":["concept","note","attachment","plan","task_list","release","asset"],"schema":1,"task_type_ids":["818ca193-82c3-5d3d-8976-2b0b8359226f","a57ca2a4-d396-587e-b1bb-1615090d015a","83776309-6f31-52b1-89ab-fce3a072eef9","7a52c188-6cda-58d0-9872-9aafb05b81ce","e78f0a74-c1b4-5a2d-aa37-0978495fb462"]}
idea_type Service — {"blocks":["concept","note","attachment","plan","task_list","release","asset"],"schema":1,"task_type_ids":["818ca193-82c3-5d3d-8976-2b0b8359226f","a57ca2a4-d396-587e-b1bb-1615090d015a","83776309-6f31-52b1-89ab-fce3a072eef9","7a52c188-6cda-58d0-9872-9aafb05b81ce","e78f0a74-c1b4-5a2d-aa37-0978495fb462"]}
idea_type Site — {"blocks":["concept","note","attachment","plan","task_list","release","asset"],"schema":1,"task_type_ids":["818ca193-82c3-5d3d-8976-2b0b8359226f","a57ca2a4-d396-587e-b1bb-1615090d015a","83776309-6f31-52b1-89ab-fce3a072eef9","7a52c188-6cda-58d0-9872-9aafb05b81ce","e78f0a74-c1b4-5a2d-aa37-0978495fb462"]}
idea_type Hardware — {"blocks":["concept","note","attachment","plan","task_list","release"],"schema":1.0,"task_type_ids":["818ca193-82c3-5d3d-8976-2b0b8359226f","83776309-6f31-52b1-89ab-fce3a072eef9","7a52c188-6cda-58d0-9872-9aafb05b81ce","e78f0a74-c1b4-5a2d-aa37-0978495fb462"]}
idea_type House — {"blocks":["concept","note","attachment","plan","task_list","release","asset"],"schema":1.0}
idea_type Game — {"blocks":["concept","note","attachment","plan","task_list","release","asset"],"schema":1.0}
task_type Bug yes {"builtin_slug":"bug","schema":1}
task_type UX yes {"builtin_slug":"ux","schema":1}
task_type Feature yes {"builtin_slug":"feature","schema":1}
task_type Chore yes {"builtin_slug":"chore","schema":1}
task_type Docs yes {"builtin_slug":"docs","schema":1}

CRDT Messages

Scans all CRDT log rows for this user. Rows whose operation payload matches an earlier row (same normalized JSON) are removed; the lowest data_version for each payload is kept. This cannot be undone. Removing tail rows can lower server latest_version after the next client sync.

Version Type Inserted Operation
816 element.create %{"body" => "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Rather than have fixed cameras on a big property (like a large, private estate), you have a autonomous drone swarm. That worked allow the entire property to be covered with needing a massive number of cameras. \"}]},{\"type\":\"paragraph\"},{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Could build a JBOD (just a bunch of drones) style which allows a heterogeneous mixture of drone types to all be coordinated through a central control hub. The central hub manages C&C including:\"}]},{\"type\":\"bulletList\",\"content\":[{\"type\":\"listItem\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"ensuring coverage at all times\"}]}]},{\"type\":\"listItem\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"threat detection\"}]}]},{\"type\":\"listItem\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"drone status/health (incl charge management, maintenance needs) \"}]}]}]},{\"type\":\"paragraph\"},{\"type\":\"paragraph\"},{\"type\":\"paragraph\"}]}", "data" => %{}, "element_type" => "note", "id" => "b93fb7f3-5dc7-40e6-b19e-cafde882422c", "idea_id" => "5adf0b6e-1f8d-42c3-a201-444b58d561b3", "inserted_at" => "2026-09-09T18:52:28Z", "position" => 0, "title" => "General idea", "type" => "element.create", "updated_at" => "2026-09-09T18:52:28Z"}
815 idea.create %{"archived" => false, "blocks" => ["concept", "note", "attachment", "plan", "task_list", "release", "asset"], "id" => "5adf0b6e-1f8d-42c3-a201-444b58d561b3", "idea_type_id" => "14d5498e-3e9f-569c-94bc-572f1ba61f0a", "inserted_at" => "2026-09-09T17:43:00Z", "name" => "Drone Security System", "pitch" => "No fixed cameras, all automated drones", "type" => "idea.create", "updated_at" => "2026-09-09T17:43:00Z"}
814 idea.update %{"archived" => false, "blocks" => ["concept", "note", "attachment", "plan", "task_list", "release", "asset"], "id" => "bd5ed897-00fb-4f64-afd0-94f7e8205489", "idea_type_id" => "14d5498e-3e9f-569c-94bc-572f1ba61f0a", "inserted_at" => "2026-09-02T13:50:46Z", "name" => "PLP - Practical Learning Platform", "pitch" => "Give people focused bite-sized learning when they need it. Learning that solves real problems.", "type" => "idea.update", "updated_at" => "2026-09-09T09:26:10Z"}
813 element.create %{"data" => %{"done" => false, "task_type_id" => "7a52c188-6cda-58d0-9872-9aafb05b81ce"}, "element_type" => "task_list", "id" => "12e61deb-12a0-425c-9f2b-0ee3d0ec35a7", "idea_id" => "bd5ed897-00fb-4f64-afd0-94f7e8205489", "inserted_at" => "2026-09-09T09:26:09Z", "position" => 0, "title" => "Do full test run", "type" => "element.create", "updated_at" => "2026-09-09T09:26:09Z"}
812 idea.update %{"archived" => false, "blocks" => ["concept", "note", "attachment", "plan", "task_list", "release", "asset"], "id" => "bd5ed897-00fb-4f64-afd0-94f7e8205489", "idea_type_id" => "14d5498e-3e9f-569c-94bc-572f1ba61f0a", "inserted_at" => "2026-09-02T13:50:46Z", "name" => "PLP - Practical Learning Platform", "pitch" => "Give people focused bite-sized learning when they need it. Learning that solves real problems.", "type" => "idea.update", "updated_at" => "2026-09-09T09:25:53Z"}
811 element.create %{"data" => %{"done" => false, "task_type_id" => "83776309-6f31-52b1-89ab-fce3a072eef9"}, "element_type" => "task_list", "id" => "7561b256-ab3a-4dbd-be90-c3970e10f110", "idea_id" => "bd5ed897-00fb-4f64-afd0-94f7e8205489", "inserted_at" => "2026-09-09T09:25:52Z", "position" => 0, "title" => "Fix output format", "type" => "element.create", "updated_at" => "2026-09-09T09:25:52Z"}
810 idea.update %{"archived" => false, "category" => "app", "id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "idea_type_id" => "29ddb6d5-aa74-5ebb-8bf1-ee684556a9ca", "inserted_at" => "2026-08-25T23:21:27Z", "name" => "I have an idea", "pitch" => "Track all ideas through all stages of completion", "type" => "idea.update", "updated_at" => "2026-09-08T23:46:16Z"}
809 element.update %{"data" => %{"complete" => false, "items" => [%{"children" => [%{"children" => [], "done" => false, "id" => "894b5405-796a-46c3-8330-dfb586bd4196", "ref" => %{"element_id" => "6697102c-1c21-4384-85a8-f7b8872d2f1c", "kind" => "release"}, "text" => "0.12"}, %{"children" => [], "done" => true, "id" => "12f877ab-a413-43c9-9e14-b8f4facb8a80", "ref" => %{"element_id" => "981fb916-2577-4aa3-8f86-fe0c31198898", "kind" => "release"}, "text" => "0.11"}, %{"children" => [], "done" => true, "id" => "80108e9c-9a3f-448a-841f-d61e7bc19bdd", "ref" => %{"element_id" => "e3ecc6a3-069f-4a8f-907e-e0b6d2e8908a", "kind" => "release"}, "text" => "0.10"}], "done" => false, "id" => "a7f5cebc-fda9-4ec9-b481-dc220f96d06a", "ref" => %{"element_id" => "c7436b58-7978-4418-a0e2-354028273d51", "kind" => "release"}, "text" => "1.0"}], "schema" => 2.0}, "element_type" => "plan", "id" => "2427bffd-062a-42b6-b77b-9e82f1ddcba3", "idea_id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "inserted_at" => "2026-08-26T06:51:54Z", "position" => 0, "title" => "Main development", "type" => "element.update", "updated_at" => "2026-09-08T23:46:15Z"}
808 idea.update %{"archived" => false, "blocks" => nil, "category" => "app", "id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "idea_type_id" => "29ddb6d5-aa74-5ebb-8bf1-ee684556a9ca", "inserted_at" => "2026-08-25T23:21:27Z", "name" => "I have an idea", "pitch" => "Track all ideas through all stages of completion", "type" => "idea.update", "updated_at" => "2026-09-08T23:44:40Z"}
807 asset.update %{"agents_excerpt" => "# Repo-wide conventions\n\nThis repo holds multiple independently-buildable components (`service/`, `desktop/`, `android/`). See [service/AGENTS.md](service/AGENTS.md) for Phoenix/Elixir-specific guidelines.\n\n## Cross-cutting rules\n\n- **Mix always runs inside Docker.** There is no local Elixir/Erlang toolchain on the dev machine. Never run `mix` directly on the host — use `docker compose --profile tools run --rm mix <task>` from `service/`.\n- **Changelog discipline**: add an entry to `CHANGELOG.md` for every significant change, using the actual current date (YYYY-MM-DD) and the project/app version scheme described there.\n- **No shared-code package** between `service`, `desktop`, and `android`. Keep `PROJECT_DEFINITIONS.md` current — it is the mechanism that keeps the three independently-implemented clients consistent with each other.\n- **Commit messages**: concise, imperative mood, focused on why a change was made.\n", "agents_source_file" => "AGENTS.md", "git_default_branch" => "main", "git_remote_url" => "git@144.76.119.114:/home/git/ihaveanidea.git", "id" => "60b7deba-97a2-4667-829a-b1c6cfb6a17a", "idea_id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "inserted_at" => "2026-08-27T23:31:24Z", "label" => "Primary", "last_commit_at" => "2026-09-09 01:36:44 +0200", "last_commit_author" => "anonymous <anonymous@anonymo.us>", "last_commit_message" => "0.11.7 - Added completion for release and plan. Fixed a few UX bugs.\n", "last_commit_sha" => "3aebfdea435c89e952b65daf83e5562bc694771e", "last_scanned_at" => "2026-09-08T23:44:40Z", "local_path" => "C:\\Users\\anonymous\\projects\\ihaveanidea", "readme_excerpt" => "# ihaveanidea\n\nTrack project ideas — software, physical-world, writing, anything — from a quick elevator pitch through implementation and \"release.\"\n\n## What It Does\n\n- **Ideas** are the top-level thing you track. Creating one only requires a **name** and a short **pitch** — the \"spark\" moment.\n- **Elements** are optional content you attach to an idea over time: a concept/spec writeup, a plan, a task list, release notes, freeform notes, attachments. There is **no enforced lifecycle** — elements can be added, edited, or skipped in any order. Presence of elements is the progress signal, not a status field.\n- **Category** is a free-form tag (e.g. `software`, `physical`, `writing`, `other`) — never a fixed enum.\n- **Assets**: the desktop app can link an idea to a local folder/git repo and extract metadata (repo name, remote, last commit, README/AGENTS excerpt). That metadata syncs to the account so it's visible read-only from the browser admin and Android, even though only desktop can see the filesystem.\n- **Local-first** desktop and Android apps sync with the service when connected, using the same CRDT-log approach as the reference project below.\n- **Single user** — this is a personal tool, not a multi-tenant product.\n\n## Key Decisions\n\n### Architecture\n\n| Decision | Choice |\n|----------|--------|\n| **Primary data store** | The service (Phoenix/Elixir) |\n| **Sync model** | CRDT-style whole-record last-write-wins upserts; operations stored for audit log |\n| **The service** | Single Phoenix codebase; API and admin run in separate Docker containers for independent scaling |\n| **Lifecycle model** | No status/stage FSM — ideas accumulate optional typed elements in any order |\n| **Build isolation** | Each component (service, Desktop, Android) builds independently — no shared-code package |\n\n### Technology Stack\n\nMirrors the sister project [panoptodo](../panoptodo), which this project's stack and repo conventions were deliberately modeled on.\n\n| Component | Stack |\n|---------", "repo_name" => "ihaveanidea", "source_device_app_id" => "desktop:38ded643-95fb-489f-969c-7871359f7c40", "type" => "asset.update", "updated_at" => "2026-09-08T23:44:40Z"}
806 idea.update %{"archived" => false, "category" => "app", "id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "idea_type_id" => "29ddb6d5-aa74-5ebb-8bf1-ee684556a9ca", "inserted_at" => "2026-08-25T23:21:27Z", "name" => "I have an idea", "pitch" => "Track all ideas through all stages of completion", "type" => "idea.update", "updated_at" => "2026-09-08T23:45:29Z"}
805 element.update %{"data" => %{"done" => false, "release_id" => "6697102c-1c21-4384-85a8-f7b8872d2f1c", "task_type_id" => "a57ca2a4-d396-587e-b1bb-1615090d015a"}, "element_type" => "task_list", "id" => "a1c1fe09-5b00-4f0d-b0ee-03ad6f9fe418", "idea_id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "inserted_at" => "2026-09-04T20:23:20Z", "position" => 0, "title" => "change sparklines to 30 days", "type" => "element.update", "updated_at" => "2026-09-08T23:45:28Z"}
804 idea.update %{"archived" => false, "category" => "app", "id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "idea_type_id" => "29ddb6d5-aa74-5ebb-8bf1-ee684556a9ca", "inserted_at" => "2026-08-25T23:21:27Z", "name" => "I have an idea", "pitch" => "Track all ideas through all stages of completion", "type" => "idea.update", "updated_at" => "2026-09-08T23:45:03Z"}
803 element.update %{"body" => "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Downloads from the service\"}]}]}", "data" => %{"released" => true}, "element_type" => "release", "id" => "981fb916-2577-4aa3-8f86-fe0c31198898", "idea_id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "inserted_at" => "2026-08-30T19:39:30Z", "position" => 0, "title" => "0.11", "type" => "element.update", "updated_at" => "2026-09-08T23:45:02Z"}
802 idea.update %{"archived" => false, "category" => "app", "id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "idea_type_id" => "29ddb6d5-aa74-5ebb-8bf1-ee684556a9ca", "inserted_at" => "2026-08-25T23:21:27Z", "name" => "I have an idea", "pitch" => "Track all ideas through all stages of completion", "type" => "idea.update", "updated_at" => "2026-09-08T23:45:01Z"}
801 element.update %{"body" => "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"Add passwords for syncing\"}]}]}", "data" => %{"released" => true}, "element_type" => "release", "id" => "e3ecc6a3-069f-4a8f-907e-e0b6d2e8908a", "idea_id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "inserted_at" => "2026-08-29T01:28:49Z", "position" => 32, "title" => "0.10", "type" => "element.update", "updated_at" => "2026-09-08T23:45:01Z"}
800 idea.update %{"archived" => false, "category" => "app", "id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "idea_type_id" => "29ddb6d5-aa74-5ebb-8bf1-ee684556a9ca", "inserted_at" => "2026-08-25T23:21:27Z", "name" => "I have an idea", "pitch" => "Track all ideas through all stages of completion", "type" => "idea.update", "updated_at" => "2026-09-08T23:45:00Z"}
799 element.update %{"body" => "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"All the basically functionality and release builds for each component.\"}]}]}", "data" => %{"released" => true}, "element_type" => "release", "id" => "26a6251a-c1aa-4dc1-9671-b0616e19c6e2", "idea_id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "inserted_at" => "2026-08-27T23:45:17Z", "position" => 0, "title" => "0.9 - Core functionality", "type" => "element.update", "updated_at" => "2026-09-08T23:45:00Z"}
798 idea.update %{"archived" => false, "category" => "app", "id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "idea_type_id" => "29ddb6d5-aa74-5ebb-8bf1-ee684556a9ca", "inserted_at" => "2026-08-25T23:21:27Z", "name" => "I have an idea", "pitch" => "Track all ideas through all stages of completion", "type" => "idea.update", "updated_at" => "2026-09-08T23:44:59Z"}
797 element.update %{"body" => "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"First \\\"finished\\\" version\"}]},{\"type\":\"paragraph\"}]}", "data" => %{"released" => false}, "element_type" => "release", "id" => "c7436b58-7978-4418-a0e2-354028273d51", "idea_id" => "2d97d724-fd45-4168-8c36-f8db6c05cbd0", "inserted_at" => "2026-08-27T00:22:15Z", "position" => 0, "title" => "1.0", "type" => "element.update", "updated_at" => "2026-09-08T23:44:59Z"}
Previous Page 15 of 55 (1096 total) Next