This website requires JavaScript.
97d1748eba
email: one database per account, and the agent only knew about one
pastilhas
2026-08-20 01:12:40 +00:00
17243c2201
rescan: say when a skill exists but is not offered
pastilhas
2026-08-20 01:10:16 +00:00
49f7761f53
skills: publish the index, leave the body on disk
pastilhas
2026-08-20 01:09:07 +00:00
fe7fe49cee
chat: stop reassigning a live session to fable
pastilhas
2026-08-20 00:32:44 +00:00
ab214d1a9e
rescan: count affordances, and say what a rescan cannot do
pastilhas
2026-08-19 23:35:11 +00:00
b14b1bf678
green that means "healthy" becomes the success token
pastilhas and Claude Opus 5
2026-08-19 23:35:01 +00:00
a53b56bbf6
chat header: one green, and it is the token
pastilhas
2026-08-19 23:24:19 +00:00
0a9649a12b
brand: the drawn Officer wordmark, unskewed
pastilhas and Claude Opus 5
2026-08-20 00:23:18 +01:00
9ca2287e50
bell: move it left, and let its colour say what it will do
pastilhas
2026-08-19 23:19:09 +00:00
34e21317da
chat: the copy buttons sit on the code block, bottom right
pastilhas
2026-08-19 23:14:56 +00:00
bf57201a11
bun run doctor, and provisioning checks its own work
pastilhas
2026-08-19 23:07:47 +00:00
069dd4b23f
provisioning: re-assert the acl mask, last
pastilhas
2026-08-19 23:03:14 +00:00
c982d82dde
todo: four foreign keys churn on every push, deferred not fixed
pastilhas and Claude Opus 5
2026-08-19 22:01:22 +00:00
989c15e437
fix(chat): resume in the directory the transcript belongs to
pastilhas and Claude Opus 5
2026-08-19 23:10:45 +01:00
46d621c91b
chat notifications reach the phone, on the same rule as the bell
pastilhas
2026-08-19 22:00:17 +00:00
72d327e360
bell: scope the preference to a user, and make every_turn mean every turn
pastilhas
2026-08-19 21:53:11 +00:00
73cdc2cb77
bell: notify a chat's page and list row, any chat, any time
pastilhas and Claude Opus 5
2026-08-19 21:32:06 +00:00
5cba1b65a6
notify: only "the app is gone" deletes a device row
pastilhas
2026-08-19 21:25:20 +00:00
c6ef0b34db
caldav: a missing radicale should not crash-loop the sidecar
pastilhas
2026-08-19 21:03:14 +00:00
5a26cdbbcb
find my device: the design, and what it can never do
pastilhas
2026-08-19 20:43:29 +00:00
c68c734431
docs: what an affordance is, and the test that catches the bad ones
pastilhas
2026-08-19 20:30:21 +00:00
4cd371b55d
chat: links open in a new tab
pastilhas
2026-08-19 20:23:55 +00:00
16369f3570
secret store holds foreign secrets, and notify reads from it
pastilhas
2026-08-19 19:57:51 +00:00
2cefa3d378
apns credentials belong in the secret store, and cannot go there yet
pastilhas
2026-08-19 19:45:56 +00:00
e598a5dcba
notify: codes replace the type enum, and android goes data-only
pastilhas
2026-08-19 19:37:05 +00:00
55d6eba511
notification catalogue: GET /api/notify/mapping
pastilhas
2026-08-19 19:07:49 +00:00
98960d2827
app spec: the answers from the app repo, and alpha caught up
pastilhas
2026-08-19 18:59:13 +00:00
e57d6cc1cc
push notifications: the app-side spec
pastilhas
2026-08-19 18:49:15 +00:00
ab94a3a510
notify: a member could list their phones but not register one
pastilhas
2026-08-19 18:47:56 +00:00
347e679712
push notifications: the hub design
pastilhas
2026-08-19 18:41:33 +00:00
fd7c9becb6
notify is core again
pastilhas
2026-08-19 18:05:33 +00:00
ab636eaa42
page title: derive from the route path instead of a hand-maintained table
pastilhas and Claude Opus 5
2026-08-19 18:03:20 +00:00
6235662492
fix(chat): an answered question is not a failed tool call
pastilhas and Claude Opus 5
2026-08-19 16:52:44 +01:00
44a3d5f655
fix(chat): give AskUserQuestion a real answer channel
pastilhas and Claude Opus 5
2026-08-19 16:46:38 +01:00
520fad2288
stopping a job that is already gone is a success, not an error
pastilhas and Claude Opus 5
2026-08-19 14:47:28 +00:00
0f56aae803
a task the server cannot find is dismissed, not reported
pastilhas and Claude Opus 5
2026-08-19 14:41:29 +00:00
9c6534c746
render markdown in your own chat bubbles, and let you copy them
pastilhas and Claude Opus 5
2026-08-19 14:24:00 +00:00
177394fb76
Stop becomes Kill when the job ignores it
pastilhas and Claude Opus 5
2026-08-19 14:02:18 +00:00
4b22f52c7e
update a plugin whose local branch no longer exists on the remote
pastilhas and Claude Opus 5
2026-08-19 13:00:32 +00:00
0fd89082fe
an uninstalled plugin's grants stop breaking the permissions screen
pastilhas and Claude Opus 5
2026-08-19 12:18:49 +00:00
b9524ee4d5
prefix the env with OFFICERDEV_, and keep reading the bare names
pastilhas and Claude Opus 5
2026-08-19 11:46:00 +00:00
b27410a6fc
sign in with an email or a username
pastilhas and Claude Opus 5
2026-08-19 11:10:39 +00:00
1e03c600b8
stop naming a branch when pulling the capabilities repository
pastilhas and Claude Opus 5
2026-08-19 11:01:46 +00:00
5b486ed019
build marketplace icon URLs from HEAD, not from a branch name
pastilhas and Claude Opus 5
2026-08-19 10:55:10 +00:00
427bd1afff
todo: close out the inputs-outside-forms sweep
pastilhas and Claude Opus 5
2026-08-19 10:54:07 +00:00
994de45296
wrap inputs in real forms, so enter submits instead of doing nothing
pastilhas and Claude Opus 5
2026-08-19 10:51:58 +00:00
319afe2c5d
note that 19 panels put inputs outside a form
pastilhas and Claude Opus 5
2026-08-19 10:32:57 +00:00
79ced03bec
put ~/.local/bin on the agent's PATH
pastilhas and Claude Opus 5
2026-08-19 09:52:01 +00:00
09f2cfa267
a plugin can depend on a release binary, and prove it is the right one
pastilhas and Claude Opus 5
2026-08-19 08:48:18 +00:00
51afa40a19
affordances: officer/core and officerdev/<plugin> are both right
pastilhas and Claude Opus 5
2026-08-19 08:24:57 +00:00
8fe1b1824b
a plugin can ship affordances, and installing publishes them
pastilhas and Claude Opus 5
2026-08-19 08:23:35 +00:00
d49776307d
gitea, extracted into plugins/gitea — the platform half
pastilhas and Claude Opus 5
2026-08-19 07:59:10 +00:00
d8cccad84c
Revert "dock: Gitea gets the teacup"
pastilhas and Claude Opus 5
2026-08-19 07:38:40 +00:00
4b2c896523
ship the capabilities repository, and update it from the same button as plugins
pastilhas and Claude Opus 5
2026-08-19 07:34:24 +00:00
061e213780
dock: Gitea gets the teacup
pastilhas and Claude Opus 5
2026-08-19 08:29:58 +01:00
057bf7b183
load affordances and append them to every claude session
pastilhas and Claude Opus 5
2026-08-19 07:27:01 +00:00
d8c97b6814
affordances: the file format, where they live, and what is still open
pastilhas and Claude Opus 5
2026-08-19 07:19:40 +00:00
7a9e576ee6
name the thing the platform never tells an agent: affordances
pastilhas and Claude Opus 5
2026-08-19 06:52:19 +00:00
839199bf53
dock: Calendar and Contacts carry their artwork, not a glyph
pastilhas and Claude Opus 5
2026-08-19 07:48:25 +01:00
3ef078210a
update a plugin, or all of them, from the marketplace
pastilhas and Claude Opus 5
2026-08-19 06:11:42 +00:00
8f15f16d1c
restore dav_app_passwords to the db:push barrel
pastilhas and Claude Opus 5
2026-08-19 05:32:11 +00:00
cfbec0b757
plugins: a splash is part of a plugin, like its icon
pastilhas and Claude Opus 5
2026-08-19 06:29:34 +01:00
bbb16d6ed3
bitcoin-wallet, extracted into plugins/bitcoin-wallet — the platform half
pastilhas and Claude Opus 5
2026-08-19 05:18:44 +00:00
f2c6ebaa4d
calendar and contacts get dock tiles again
pastilhas and Claude Opus 5
2026-08-19 04:39:15 +00:00
d6f093532d
install radicale and register officer-caldav on an existing server's next boot
pastilhas and Claude Opus 5
2026-08-19 04:28:17 +00:00
9c309c5ab6
calendar and contacts are core again, with radicale as a plain sidecar
pastilhas and Claude Opus 5
2026-08-19 04:19:50 +00:00
f566fda0b2
invoices, extracted into plugins/invoices — the platform half
pastilhas and Claude Opus 5
2026-08-19 03:47:54 +00:00
ee321f49fd
refuse a plugin install whose permission key the platform still claims
pastilhas and Claude Opus 5
2026-08-19 03:33:00 +00:00
aebd6ff0c0
jellyfin, extracted into plugins/jellyfin — the platform half
pastilhas and Claude Opus 5
2026-08-19 03:17:43 +00:00
b196c9cb55
soulseek, extracted into plugins/soulseek — the platform half
pastilhas and Claude Opus 5
2026-08-19 02:55:35 +00:00
c4b262dc51
provision-user-dirs script now sets modes, by calling the real provisioner
pastilhas and Claude Opus 5
2026-08-19 02:07:56 +00:00
8a4b96daf8
fix question options rendering permanently disabled
pastilhas and Claude Opus 5
2026-08-19 01:57:16 +00:00
f8028364f1
transmission, extracted into plugins/transmission — the platform half
pastilhas and Claude Opus 5
2026-08-18 19:19:48 +00:00
a327dfc82c
photos, extracted into plugins/photos — the platform half
pastilhas and Claude Opus 5
2026-08-18 19:10:52 +00:00
7819eff6a1
chat: render AskUserQuestion, instead of dropping it as raw JSON
pastilhas and Claude Opus 5
2026-08-18 19:01:03 +00:00
c13271a631
runbook: record the hand-rolled-proxy bodyParser trap
pastilhas and Claude Opus 5
2026-08-18 15:29:40 +00:00
8367fada13
plugins: let a plugin claim top-level paths and divert /api by header
pastilhas and Claude Opus 5
2026-08-18 14:47:04 +00:00
dc190bb790
plugins: implement unauthenticatedPaths — the half that was never built
pastilhas and Claude Opus 5
2026-08-18 14:26:35 +00:00
5e4f3fe29f
fix all seven failing tests — every one was a stale assertion, not a live bug
pastilhas and Claude Opus 5
2026-08-18 13:51:16 +00:00
f6a1194905
vault, extracted into plugins/vault — the platform half
pastilhas and Claude Opus 5
2026-08-18 13:43:32 +00:00
c775e8c7e3
re-enable vault — plugin extraction deferred, this is the same code as before
pastilhas and Claude Opus 5
2026-08-18 13:15:22 +00:00
3803d42243
plugins: don't require a literal .git suffix on a catalogue clone URL
pastilhas and Claude Opus 5
2026-08-18 12:47:34 +00:00
f77a41d26a
command hq: delete a commander, from the grid card and the detail bar
pastilhas and Claude Opus 5
2026-08-18 10:46:31 +00:00
a335fad9a6
background jobs: tell the agent not to discard command output
pastilhas and Claude Opus 5
2026-08-18 10:34:03 +00:00
963c965056
command hq: auto-name a commander from its watcher's own task description
pastilhas and Claude Opus 5
2026-08-18 10:18:17 +00:00
eed906f45b
command hq: show token totals alongside cost, not just dollars
pastilhas and Claude Opus 5
2026-08-18 10:07:01 +00:00
a9be3a92c9
command hq: web frontend v1 — nav, grid, detail
pastilhas and Claude Opus 5
2026-08-18 09:41:13 +00:00
7b7d8bbf36
add gen:ecosystem script to rebuild ecosystem.config.cjs from the database
pastilhas and Claude Opus 5
2026-08-18 09:23:25 +00:00
9e641bc228
COMMS: reply to mobile-4 — cost-tracking schema change, preamble proposal deferred
pastilhas and Claude Opus 5
2026-08-18 09:03:56 +00:00
764ba23206
command hq: per-turn cost ledger, watcher fires as their own table
pastilhas and Claude Opus 5
2026-08-18 09:03:52 +00:00
56911f6874
COMMS: the self-re-arm evidence is stronger than either write-up said
pastilhas and Claude Opus 5
2026-08-18 09:40:18 +01:00
971a8bf0d4
COMMS: re-synced the preamble, and a proposal to stop having to
pastilhas and Claude Opus 5
2026-08-18 09:35:15 +01:00
624d67ed52
watcher loop: the agent re-arms itself, same turn — final mechanism, confirmed against real usage
pastilhas and Claude Opus 5
2026-08-18 08:33:47 +00:00
cc5340b8e0
COMMS: on the synthetic re-arm turn, and the state pair that catches a lost one
pastilhas and Claude Opus 5
2026-08-18 09:07:57 +01:00
f369b4ca18
watcher loop: arming state and end-to-end plumbing, item 3's mechanism found wrong before writing it
pastilhas and Claude Opus 5
2026-08-18 08:05:21 +00:00
7229ce021d
watcher loop: the prompt/dialog half, and stopped no longer reads as failed
pastilhas and Claude Opus 5
2026-08-18 07:52:06 +00:00
f810bdc48e
command hq: displayText, caught by the mobile side before either of us ran this
pastilhas and Claude Opus 5
2026-08-18 07:33:09 +00:00
cc121f3156
Merge branch 'master' of gitea.officer.dev:officerdev/platform
pastilhas
2026-08-18 07:30:12 +00:00
7ad64445ee
command hq: POST /commanders/new, for a client that cannot open the websocket
pastilhas and Claude Opus 5
2026-08-18 07:29:57 +00:00
2f3e2db869
COMMS: exit, act, drain, re-arm — infrastructure, plus one sentence of prompt
pastilhas and Claude Opus 5
2026-08-18 08:28:07 +01:00