3 Commits
Author SHA1 Message Date
bvandeusenandClaude Opus 5.5 76fe96d135 MainActivity imports OnEachForeground (#5372)
Android / Build, or is the channel already serving this? (push) Successful in 2s
CI & Build / Build now, or wait for Android? (push) Successful in 2s
CI & Build / Python lint (push) Successful in 2s
CI & Build / Python tests (push) Successful in 10s
Desktop (Tauri) / Build, or is the channel already serving this? (push) Successful in 2s
CI & Build / Web typecheck and unit tests (push) Successful in 8s
Android / Core and FFI clippy and tests (push) Successful in 58s
CI & Build / integration (push) Successful in 1m59s
CI & Build / Build & push image (push) Skipped
Desktop (Tauri) / Web tests, clippy, Rust tests and rustfmt (push) Successful in 2m29s
Desktop (Tauri) / Windows installer (cross-compiled) (push) Successful in 3m4s
Desktop (Tauri) / Tauri desktop (Linux) (push) Successful in 3m50s
Desktop (Tauri) / Update manifest (push) Successful in 4s
Android / Kotlin + Rust (APK) (push) Successful in 8m32s
Android / Build the server image (push) Successful in 0s
fb95c9b moved the foreground latch into ui/ForegroundTransitions.kt, but
MainActivity lives one package up and imports what it uses from ui by name;
run 8835's compileDebugKotlin stopped on the two unresolved calls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:05:41 -04:00
bvandeusenandClaude Opus 5.5 ef22910154 DRY pass #3: the labels store swaps a returned label in one way (#5373)
rename and setColor each found the label and replaced it, keeping the count
the single-label PATCH doesn't recompute; keepingCount(updated) is that.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:39:25 -04:00
bvandeusenandClaude Opus 5.5 cd8df384a4 DRY pass #3: one compact dialog button (#5373)
ShareDialog's Share and NoteEditor's Add note / Close each spelled out the
same compact button, smaller than .btn. .btn-compact is its shape and
.btn-compact-primary its brand fill; Close keeps its neutral colours beside it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:38:36 -04:00
5 changed files with 23 additions and 9 deletions
@@ -35,6 +35,7 @@ import com.fabledsword.inkwell.ui.ForegroundTransitions
import com.fabledsword.inkwell.ui.InkwellTheme
import com.fabledsword.inkwell.ui.LocalAttachmentFiles
import com.fabledsword.inkwell.ui.NoteEditorScreen
import com.fabledsword.inkwell.ui.OnEachForeground
import com.fabledsword.inkwell.ui.ShareSheet
import com.fabledsword.inkwell.ui.ShareViewModel
import com.fabledsword.inkwell.ui.StoreUnavailableScreen
+3 -2
View File
@@ -822,10 +822,11 @@ function revPreview(rev: NoteRevision): string {
</NoteActions>
<button
type="button"
class="btn-compact"
:class="
isCreate
? 'rounded-md bg-brand px-3 py-1.5 text-sm font-semibold text-neutral-900 hover:brightness-95 focus:outline-none focus-visible:ring-2 focus-visible:ring-brand disabled:opacity-60'
: 'rounded-md px-3 py-1.5 text-sm font-semibold text-neutral-700 hover:bg-neutral-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-brand disabled:opacity-60 dark:text-neutral-200 dark:hover:bg-neutral-800'
? 'btn-compact-primary'
: 'text-neutral-700 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-800'
"
:disabled="saving"
@click="close()"
+1 -1
View File
@@ -145,7 +145,7 @@ onMounted(load);
</select>
<button
type="submit"
class="rounded-md bg-brand px-3 py-1.5 text-sm font-semibold text-neutral-900 hover:brightness-95 focus:outline-none focus-visible:ring-2 focus-visible:ring-brand disabled:opacity-60"
class="btn-compact btn-compact-primary"
:disabled="busy || !pick"
>
Share
+9 -6
View File
@@ -18,6 +18,13 @@ export const useLabelsStore = defineStore("labels", () => {
items.value.sort((a, b) => a.name.localeCompare(b.name));
}
// Put a label the server sent back in place of ours. A single-label PATCH doesn't
// recompute the count, so the one we have is kept.
function keepingCount(updated: Label): void {
const idx = items.value.findIndex((lb) => lb.id === updated.id);
if (idx >= 0) items.value[idx] = { ...updated, count: items.value[idx].count };
}
async function load(): Promise<void> {
items.value = await repo.labels.list();
loaded.value = true;
@@ -62,16 +69,12 @@ export const useLabelsStore = defineStore("labels", () => {
await load();
return;
}
const idx = items.value.findIndex((lb) => lb.id === id);
// The single-label PATCH doesn't recompute the count — keep the one we have.
if (idx >= 0) items.value[idx] = { ...updated, count: items.value[idx].count };
keepingCount(updated);
sort();
}
async function setColor(id: string, color: string): Promise<void> {
const updated = await repo.labels.setColor(id, color);
const idx = items.value.findIndex((lb) => lb.id === id);
if (idx >= 0) items.value[idx] = { ...updated, count: items.value[idx].count };
keepingCount(await repo.labels.setColor(id, color));
}
async function remove(id: string): Promise<void> {
+9
View File
@@ -287,6 +287,15 @@ body {
.nav-link-active {
@apply bg-neutral-200 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-100;
}
/* The compact text button that ends a dialog's row: the editor's Add note and
* Close, the Share dialog's Share. Smaller than .btn, which is a page's. */
.btn-compact {
@apply rounded-md px-3 py-1.5 text-sm font-semibold focus:outline-none
focus-visible:ring-2 focus-visible:ring-brand disabled:opacity-60;
}
.btn-compact-primary {
@apply bg-brand text-neutral-900 hover:brightness-95;
}
/* The small bordered action on a row in Account, Admin and Sync: Rename, Revoke,
* Sign out. Two colours, neutral and destructive; spacing a site needs beyond
* these (shrink-0, self-start, py-1.5) stays a utility beside it. */