Create the app icon and finalize versioning
App identity for both editions: the three-lane glyph
(rectangle.split.3x1.fill) over a gentle gradient - teal for base
Lanework, dark graphite for Lanework Pro - rendered as 1024 masters and
packaged down the full macOS ladder into each target's own iconset,
replacing the borrowed pathfinder icon.
The About window arrives via IndieAbout (0.2.x): icon, copyright,
version/build/date read from the Info.plist that update_build_info.sh
already stamps on every build (CFBundleVersion 160 = git commit count,
BuildDate, BuildHash - verified in the built product), the version line
opening the bundled CHANGELOG.md, and the new ISC LICENSE.md one
document link away. Both files are authored to the Apple
inline-Markdown subset (no # headings, single-line paragraphs) and
bundle into both editions.
CHANGELOG.md replaces its placeholder with the real 2.0 first-release
notes - one sentence per user-facing feature.
The About box is also an edition seam: base's EditionAbout carries the
one-line Pro signpost 12-editions.md allots ("Lanework Pro adds
git-backed board history and sync."), and the Pro target compiles its
own signpost-less twin instead of that file - the no-#if file-level
doctrine applied to a string. README gains the identity bullet.
1649 green on both schemes; verify-editions.sh 26/26.
Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
@@ -0,0 +1,31 @@
|
||||
import IndieAbout
|
||||
|
||||
/// **Base Lanework's About-box configuration — one of the two places base names Lanework Pro.**
|
||||
///
|
||||
/// 12-editions.md ▸ Quiet signposts: "Base presents as a complete app, not a demo: Pro is named
|
||||
/// in exactly two places — one line in the About box, and the contextual popover line on `.git`
|
||||
/// boards. Nothing on the welcome screen, nothing in banners." The popover line is
|
||||
/// `BoardGitNote`'s; this is the About line, riding as the second line of the copyright text —
|
||||
/// `IndieAbout` renders `copyrightText` as one multi-line `Text`, so the signpost is literally a
|
||||
/// line in the box, no custom layout.
|
||||
///
|
||||
/// **The Pro target does not compile this file** (project.yml excludes it and compiles
|
||||
/// `KanbanPro/Edition/EditionAbout.swift` instead): Pro's About has no signpost — the app it
|
||||
/// would point to is the one showing the box — and falls back to the Info.plist copyright. The
|
||||
/// difference is a file one target builds and the other does not, per the edition split's
|
||||
/// no-`#if` doctrine (12-editions.md ▸ Targets).
|
||||
enum EditionAbout {
|
||||
|
||||
/// The About window's content: version/build/date from the stamped Info.plist
|
||||
/// (`update_build_info.sh` — CFBundleVersion, BuildDate, BuildHash), the version line
|
||||
/// opening the bundled CHANGELOG.md, and the bundled ISC LICENSE.md as the one document
|
||||
/// link. Both documents are authored to the Apple inline-Markdown subset — see the files'
|
||||
/// own single-line paragraphs.
|
||||
static var configuration: AppInfoConfiguration {
|
||||
AppInfoConfiguration(
|
||||
copyrightText: "© 2026 rzen\nLanework Pro adds git-backed board history and sync.",
|
||||
documents: [.license(extension: "md")],
|
||||
changelogDocument: .changelog()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 512 B After Width: | Height: | Size: 475 B |
|
Before Width: | Height: | Size: 911 B After Width: | Height: | Size: 898 B |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 911 B After Width: | Height: | Size: 898 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 538 KiB After Width: | Height: | Size: 496 KiB |
@@ -1,4 +1,5 @@
|
||||
import AppKit
|
||||
import IndieAbout
|
||||
import SwiftUI
|
||||
|
||||
/// The scene graph (02-architecture.md § Windows, § Launch and window lifecycle).
|
||||
@@ -147,6 +148,13 @@ struct KanbanApp: App {
|
||||
/// whole of the contract, and the system supplies the rest.
|
||||
@CommandsBuilder
|
||||
private var menuCommands: some Commands {
|
||||
// The About window (11-command-nexus.md files About under the app menu's standard
|
||||
// furniture): icon, version/build/date from the Info.plist that `update_build_info.sh`
|
||||
// stamped at build time — never a hardcoded string — with the version line opening the
|
||||
// bundled changelog. `EditionAbout` is the edition seam: base's carries the one-line Pro
|
||||
// signpost (12-editions.md ▸ Quiet signposts), Pro's twin does not.
|
||||
IndieAboutCommand(configuration: EditionAbout.configuration)
|
||||
|
||||
// The File group, in 11-command-nexus.md's own row order: New Card, New Lane, New Board…,
|
||||
// Open…, Open Recent ▸, Board Info, Duplicate, Save as Template, Reveal in Finder, Add
|
||||
// Attachment…, then the trash trio and Empty Trash…. The board-scoped ones validate against
|
||||
|
||||