-
39170b715c
android: leaving the composer keeps the note, and the board loses its dead space
bvandeusen
2026-08-19 19:39:40 -04:00
-
5680f046e3
android: name all four permissions WorkManager adds, not one
bvandeusen
2026-08-19 19:11:19 -04:00
-
452c66c8ef
android: sync without being asked (M12 step 6)
bvandeusen
2026-08-19 19:04:45 -04:00
-
64542ed6cb
android: pull the board down to sync (M12 step 6)
bvandeusen
2026-08-19 16:36:56 -04:00
-
65d8f5f9c6
android: the import ktlint and detekt cannot see
bvandeusen
2026-08-19 15:51:12 -04:00
-
750d11d32e
android: connect a server from the phone (M12 step 6)

bvandeusenandClaude Opus 5
2026-08-19 15:41:02 -04:00
-
cf0ce382a0
android: the note editor (M12 step 6)

bvandeusenandClaude Opus 5
2026-08-19 11:18:24 -04:00
-
64e016f32d
android: phone-shaped chrome and the real note card (M12 step 6)

bvandeusenandClaude Opus 5
2026-08-19 09:23:00 -04:00
-
eb3dc3d893
gitignore: don't let a downloaded APK into history

bvandeusenandClaude Opus 5
2026-08-19 08:31:44 -04:00
-
c8af808432
android: package only the ABIs we actually build for

bvandeusenandClaude Opus 5
2026-08-18 16:24:37 -04:00
-
5eab2dd0b3
android: the error enum has to be flat, or the bindings don't compile

bvandeusenandClaude Opus 5
2026-08-18 16:15:46 -04:00
-
dee71dffb3
android: teach the linters this codebase's conventions, and fix two real nits

bvandeusenandClaude Opus 5
2026-08-18 16:04:40 -04:00
-
5d0de7a682
android: the binding generator gets its own crate, free of the app's deps

bvandeusenandClaude Opus 5
2026-08-18 15:54:10 -04:00
-
3d3df1beb0
android: register generated sources through the Variant API

bvandeusenandClaude Opus 5
2026-08-18 15:43:57 -04:00
-
f179928c57
android: run ktlint and detekt from the image, not as Gradle plugins

bvandeusenandClaude Opus 5
2026-08-18 15:35:17 -04:00
-
20907abf6e
android: a Kotlin/Compose app that drives the Rust core (M12 step 5)

bvandeusenandClaude Opus 5
2026-08-18 15:24:30 -04:00
-
e7937ea87e
ci-requirements: the Rust lane can be checked before pushing, not just after

bvandeusenandClaude Opus 5
2026-08-18 13:33:12 -04:00
-
b3309e29f8
ci: the Rust lane was only ever checking one crate of three

bvandeusenandClaude Opus 5
2026-08-18 11:18:54 -04:00
-
f90b9203a7
android: bind the core to Kotlin through uniffi (M12 step 4)

bvandeusenandClaude Opus 5
2026-08-18 11:09:52 -04:00
-
9f981ca47e
ci-requirements: the Android lane has an image again

bvandeusenandClaude Opus 5
2026-08-18 10:15:48 -04:00
-
e696b23417
core: give consumers an in-memory store instead of a rusqlite dependency

bvandeusenandClaude Opus 5
2026-08-17 23:22:24 -04:00
-
0a7480cf9b
core: extract the store and sync engine into a shared crate (M12 step 1)

bvandeusenandClaude Opus 5
2026-08-17 23:12:26 -04:00
-
c28f2bc00e
docs: how to run the Android client locally (task 1864)

bvandeusenandClaude Opus 5
2026-08-17 22:46:38 -04:00
-
40cb463be7
android: build the x86_64 ABI too, so an emulator can run it (task 1864)

bvandeusenandClaude Opus 5
2026-08-17 22:01:42 -04:00
-
641999de58
frontend: reminders becomes a lens, and cards can clear a reminder (task 1913)

bvandeusenandClaude Opus 5
2026-08-17 14:48:28 -04:00
-
c8c8ec4b4e
frontend: the shell names the active lens (task 1913)

bvandeusenandClaude Opus 5
2026-08-17 13:49:27 -04:00
-
67b9ea2938
frontend: one grid for every lens, and a cross-fade between surfaces (task 1913)

bvandeusenandClaude Opus 5
2026-08-17 13:39:49 -04:00
-
18a58fb5da
frontend: the board glides and the editor grows from its card (task 1914)

bvandeusenandClaude Opus 5
2026-08-17 12:55:21 -04:00
-
e8d6a4f423
android: vendor OpenSSL so the Rust core links (task 1864)

bvandeusenandClaude Opus 5
2026-08-16 23:11:24 -04:00
-
1f140c7457
android: scaffold the Tauri mobile lane and build a debug APK in CI

bvandeusenandClaude Opus 5
2026-08-16 23:01:32 -04:00
-
be0eb94225
frontend: reorder cards with Pointer Events so touch can do it at all (task 2697)

bvandeusenandClaude Opus 5
2026-08-16 16:39:37 -04:00
-
f5837cd985
frontend: hover-revealed controls stay put where hovering is impossible (task 2697)

bvandeusenandClaude Opus 5
2026-08-16 16:36:58 -04:00
-
e7ee16c6cf
frontend: dialogs keep focus, and a skip link past the chrome (task 1999)

bvandeusenandClaude Opus 5
2026-08-16 12:54:08 -04:00
-
d6646a64fb
desktop: remove two dead ends from the shell, and stop the launch flash (task 1999)

bvandeusenandClaude Opus 5
2026-08-16 12:46:38 -04:00
-
3a1496e5fa
frontend: honor prefers-reduced-motion, and let frontend work reach the desktop

bvandeusenandClaude Opus 5
2026-08-16 11:51:07 -04:00
-
659237ccc6
desktop: the empty board explains where your notes live (task 1999)

bvandeusenandClaude Opus 5
2026-08-16 11:37:29 -04:00
-
c883fd2eb6
desktop: one name across all three install channels (issue 2075)

bvandeusenandClaude Opus 5
2026-08-16 10:57:17 -04:00
-
5c1ae574f6
desktop: commit Cargo.lock and gate CI on it (issue 2102)

bvandeusenandClaude Opus 5
2026-08-16 10:41:18 -04:00
-
2cfe049f9c
sync: unlinking a device now revokes its token on the server (issue 2110)

bvandeusenandClaude Opus 5
2026-08-16 10:31:06 -04:00
-
edf52da97f
desktop: the installer's channel choice now reaches the app (issue 2183)
bvandeusen
2026-08-15 21:38:58 -04:00
-
c1464228df
docs: Fabled-Git, not Forgejo, where the instance is meant
bvandeusen
2026-07-31 23:44:29 -04:00
-
505904b1e5
ci: swap artifact upload to the mirrored action (issue 2270)

bvandeusenandClaude Opus 5
2026-07-30 15:27:57 -04:00
-
13e48672c0
packaging: bare backticks — a heredoc's backslash isn't the JSON's

bvandeusenandClaude Opus 5
2026-07-27 23:10:42 -04:00
-
8b6dfab3a7
ci-requirements: the two things that cost a cycle each to rediscover

bvandeusenandClaude Opus 5
2026-07-27 23:04:41 -04:00
-
d8b0cd9b96
packaging: the installer learns the same two channels the app updates on

bvandeusenandClaude Opus 5
2026-07-27 23:03:12 -04:00
-
6f47af8d96
ci: point the manifest at THIS build, and stop the dev release growing forever

bvandeusenandClaude Opus 5
2026-07-27 15:40:54 -04:00
-
acff95f920
ci: re-sign the AppImage after de-bundling, or Linux updates can never verify

bvandeusenandClaude Opus 5
2026-07-27 15:16:13 -04:00
-
3ca3eba6d5
packaging: stamp the pacman package with the version actually built

bvandeusenandClaude Opus 5
2026-07-27 15:07:40 -04:00
-
02c932260e
Updater signing key, a rising dev version, and a production compose
stable
dev-rolling
dev

bvandeusenandClaude Opus 5
2026-07-27 10:33:17 -04:00
-
1f294c4ad8
ci-requirements: record how to format the Rust lane without a local toolchain

bvandeusenandClaude Opus 5
2026-07-26 19:27:39 -04:00
-
2e8717a057
desktop: rustfmt the two new preference helpers

bvandeusenandClaude Opus 5
2026-07-26 19:27:27 -04:00
-
d6734cf7a0
desktop: in-app updates, two channels, signed, fed by fixed-tag releases

bvandeusenandClaude Opus 5
2026-07-26 19:03:12 -04:00
-
b7c0820230
desktop: rustfmt the blob-store literal in the scheme handler

bvandeusenandClaude Opus 5
2026-07-26 17:39:12 -04:00
-
c40263967d
desktop: render synced attachments instead of broken images (task 2114)

bvandeusenandClaude Opus 5
2026-07-26 17:16:44 -04:00
-
d634801bd3
desktop: rustfmt the retention query and one assert

bvandeusenandClaude Opus 5
2026-07-26 16:46:45 -04:00
-
7a77a0e1b9
desktop: fix a retention test that raced the wall clock

bvandeusenandClaude Opus 5
2026-07-26 16:25:32 -04:00
-
e64d67e904
Expire trash after 30 days, and make the deadline something you can see

bvandeusenandClaude Opus 5
2026-07-26 16:20:13 -04:00
-
6f35e6e6d8
Confirm irreversible deletes, which sync just made far more consequential

bvandeusenandClaude Opus 5
2026-07-26 15:40:33 -04:00
-
810da43f56
desktop: rustfmt the blob-store test

bvandeusenandClaude Opus 5
2026-07-26 00:46:25 -04:00
-
ed623a7bef
M10.7d: download attachment bytes into a content-addressed store (task 2107)

bvandeusenandClaude Opus 5
2026-07-26 00:43:34 -04:00
-
6bef07ff83
desktop: rustfmt the SyncOutcome literal

bvandeusenandClaude Opus 5
2026-07-26 00:33:35 -04:00
-
fe683595df
M10.7e: desktop Sync settings screen (task 2108)

bvandeusenandClaude Opus 5
2026-07-26 00:30:37 -04:00
-
75b2d096ec
desktop: rustfmt the push module

bvandeusenandClaude Opus 5
2026-07-26 00:23:38 -04:00
-
b5f7dc2635
M10.7c: push + the full sync cycle (task 2106)

bvandeusenandClaude Opus 5
2026-07-26 00:20:09 -04:00
-
2e32ecda6e
desktop: rustfmt the pull tests; run fmt after clippy/test

bvandeusenandClaude Opus 5
2026-07-26 00:09:07 -04:00
-
dc8b2d360d
M10.7b: pull the change feed into the local store (task 2105)

bvandeusenandClaude Opus 5
2026-07-26 00:05:27 -04:00
-
7d9a6509f3
desktop: rustfmt the M10.7a state tests

bvandeusenandClaude Opus 5
2026-07-25 23:38:49 -04:00
-
bbb2fd9b1c
M10.7a: link/unlink a server — device auth + sync_state (task 2104)

bvandeusenandClaude Opus 5
2026-07-25 23:35:51 -04:00
-
9118680bb1
docs: record the CI consequences of the M10.6 TLS dependency

bvandeusenandClaude Opus 5
2026-07-25 22:53:31 -04:00
-
4eb92942d0
M10.6: HTTP transport for the handshake (task 1995)

bvandeusenandClaude Opus 5
2026-07-25 22:47:10 -04:00
-
4b4bfe67ad
desktop: rustfmt the client-header tuple

bvandeusenandClaude Opus 5
2026-07-25 22:42:57 -04:00
-
fbbe877c46
M10.6: client↔server sync protocol handshake (task 1995)

bvandeusenandClaude Opus 5
2026-07-25 22:40:25 -04:00
-
5b471f5dd4
desktop: generate the Windows icon set in the cross-compile job

bvandeusenandClaude Opus 5
2026-07-25 20:37:33 -04:00
-
ab961f13ce
desktop: cross-compiled Windows NSIS installer lane (task 2015)

bvandeusenandClaude Opus 5
2026-07-25 20:14:55 -04:00
-
-
dc68386d1a
desktop: point the install command at a branch that exists

bvandeusenandClaude Opus 5
2026-07-25 19:19:05 -04:00
-
85ca7c2a2d
desktop: drop the redundant deb depends, correct the pacman docs
v0.1.0

bvandeusenandClaude Opus 5
2026-07-25 18:26:24 -04:00
-
8a8b2b17e6
desktop: prebuilt pacman package + verified .deb (tasks 2022, 2074)

bvandeusenandClaude Opus 5
2026-07-25 18:19:30 -04:00
-
36c05f5029
desktop: release-publish pipeline + one-command Linux installer

bvandeusenandClaude Opus 4.8
2026-07-25 14:13:50 -04:00
-
c3855b0ff1
desktop: rustfmt the summary() count closure

bvandeusenandClaude Opus 4.8
2026-07-25 10:19:25 -04:00
-
f325402902
desktop: robust startup + operation logging (portability troubleshooting)

bvandeusenandClaude Opus 4.8
2026-07-25 10:18:06 -04:00
-
3958db0a8b
desktop M10.4: fix stmt lifetime in reminders/search

bvandeusenandClaude Opus 4.8
2026-07-24 23:10:22 -04:00
-
41cf4b3598
desktop M10.5: wire the offline local source; boot to board with no server

bvandeusenandClaude Opus 4.8
2026-07-24 23:05:04 -04:00
-
dbe1425bd2
desktop M10.4: apply rustfmt (line wrapping only)

bvandeusenandClaude Opus 4.8
2026-07-24 23:05:04 -04:00
-
ed1b3aa814
desktop M10.4: Rust local SQLite store + Tauri commands

bvandeusenandClaude Opus 4.8
2026-07-24 22:54:58 -04:00
-
20cf15c99c
desktop M10.3: frontend data-source adapter seam (repo interface + rest.ts)

bvandeusenandClaude Opus 4.8
2026-07-24 22:31:00 -04:00
-
b08cdb92b5
desktop AppImage: de-bundle host-coupled graphics libs (fixes black window)

bvandeusenandClaude Opus 4.8
2026-07-24 18:10:02 -04:00
-
98d918dda2
M10 (task 2022, issue 2021): Arch pacman package + commit icon set (native, system libs)

bvandeusenandClaude Opus 4.8
2026-07-24 17:02:40 -04:00
-
3f5b87682e
issue 2021: harden Linux WebKit rendering (fixes black AppImage window)

bvandeusenandClaude Opus 4.8
2026-07-24 14:38:27 -04:00
-
7ca09e9a01
desktop CI: pin upload-artifact@v3 (Forgejo rejects v4 protocol)

bvandeusenandClaude Opus 4.8
2026-07-24 13:33:06 -04:00
-
404e256760
M10 (2013): rustfmt integration.rs (wrap perm chain)

bvandeusenandClaude Opus 4.8
2026-07-24 13:26:28 -04:00
-
877a6a572f
M10 (task 2013): integrated AppImage — app self-integration (OOBE + Account toggle)

bvandeusenandClaude Opus 4.8
2026-07-24 13:24:20 -04:00
-
1607c77ee5
M10.8: desktop CI lane (.forgejo/workflows/desktop.yml) + app-icon source

bvandeusenandClaude Opus 4.8
2026-07-24 12:26:24 -04:00
-
db24d7ea18
M10.2: Tauri v2 desktop scaffold (desktop/) — Vue frontend as the webview

bvandeusenandClaude Opus 4.8
2026-07-24 11:13:09 -04:00
-
36b8f65dc6
M9 S1d: split the notes.py monolith into a cohesive package

bvandeusenandClaude Opus 4.8
2026-07-23 23:50:48 -04:00
-
44a5466793
M9 S5 (frontend): shared BaseModal for the standard modals + BaseInput in Account

bvandeusenandClaude Opus 4.8
2026-07-23 21:58:59 -04:00
-
bdc5504419
M9 S5 (backend): _serialize_device adopts common.iso()

bvandeusenandClaude Opus 4.8
2026-07-23 21:51:27 -04:00
-
9c679d0ab9
M9 S5: guard the login ?redirect= against open redirect

bvandeusenandClaude Opus 4.8
2026-07-23 21:48:41 -04:00
-
be34fe8619
M9 S4: sync adopts serialization/parse_dt toolkit + normalizes push oracle

bvandeusenandClaude Opus 4.8
2026-07-23 21:45:36 -04:00
-
e1cf63e875
M9 S3 (frontend): consolidate local-date helpers into notes/datetime.ts

bvandeusenandClaude Opus 4.8
2026-07-23 21:40:13 -04:00
-
590d3ff2f6
M9 S3 (frontend): recall views adopt useNoteList + AsyncState/EmptyState

bvandeusenandClaude Opus 4.8
2026-07-23 21:36:24 -04:00