Add release metadata, about panel, and repo policies
This commit is contained in:
42
CODE_OF_CONDUCT.md
Normal file
42
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Code of Conduct
|
||||||
|
|
||||||
|
## Our Standard
|
||||||
|
|
||||||
|
This project expects contributors and maintainers to keep discussion technical,
|
||||||
|
respectful, and free of harassment.
|
||||||
|
|
||||||
|
In this repository:
|
||||||
|
|
||||||
|
- be direct, but do not be abusive
|
||||||
|
- criticize code and decisions, not people
|
||||||
|
- avoid insults, intimidation, and personal attacks
|
||||||
|
- assume good faith until there is a concrete reason not to
|
||||||
|
- keep public threads useful for maintainers and contributors
|
||||||
|
|
||||||
|
## Unacceptable Behavior
|
||||||
|
|
||||||
|
Examples include:
|
||||||
|
|
||||||
|
- harassment or discrimination
|
||||||
|
- sexualized language or imagery
|
||||||
|
- threats or intimidation
|
||||||
|
- sustained personal attacks
|
||||||
|
- doxxing or publishing private information without consent
|
||||||
|
- deliberately disruptive or hostile communication
|
||||||
|
|
||||||
|
## Maintainer Enforcement
|
||||||
|
|
||||||
|
Project maintainers may remove, edit, or reject comments, issues, pull
|
||||||
|
requests, or other contributions that violate this code of conduct.
|
||||||
|
|
||||||
|
Depending on severity, maintainers may:
|
||||||
|
|
||||||
|
- ask for a correction
|
||||||
|
- lock or moderate a discussion
|
||||||
|
- reject a contribution
|
||||||
|
- temporarily or permanently block further participation
|
||||||
|
|
||||||
|
## Reporting
|
||||||
|
|
||||||
|
If someone is violating this code of conduct, contact the maintainer through
|
||||||
|
the repository owner profile instead of escalating the situation publicly.
|
||||||
19
LICENSE
Normal file
19
LICENSE
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
BearWave for macOS
|
||||||
|
Copyright (C) 2026 Sebastian
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see:
|
||||||
|
|
||||||
|
https://www.gnu.org/licenses/gpl-3.0.txt
|
||||||
11
README.md
11
README.md
@@ -7,6 +7,8 @@ same product idea as the Linux version: quick station discovery, lightweight
|
|||||||
playback, favorites, recents, and native desktop integration without turning
|
playback, favorites, recents, and native desktop integration without turning
|
||||||
the app into a general-purpose audio suite.
|
the app into a general-purpose audio suite.
|
||||||
|
|
||||||
|
Current release target: `v0.1.0-alpha.1`
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||

|

|
||||||
@@ -45,6 +47,13 @@ That means:
|
|||||||
- native macOS behavior is preferred over KDE/Qt parity
|
- native macOS behavior is preferred over KDE/Qt parity
|
||||||
- podcast features are intentionally out of scope
|
- podcast features are intentionally out of scope
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project follows the upstream BearWave licensing direction and is licensed
|
||||||
|
under **GPL-3.0-or-later**.
|
||||||
|
|
||||||
|
See [LICENSE](LICENSE).
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -122,6 +131,8 @@ Still pragmatic rather than release-ready:
|
|||||||
- debug-oriented signing and packaging
|
- debug-oriented signing and packaging
|
||||||
- custom app-bundle staging script
|
- custom app-bundle staging script
|
||||||
|
|
||||||
|
This repository is currently in an **early alpha** state.
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
|
||||||
- improve release packaging, signing, and notarization
|
- improve release packaging, signing, and notarization
|
||||||
|
|||||||
40
SECURITY.md
Normal file
40
SECURITY.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
This repository is currently in an early alpha stage.
|
||||||
|
|
||||||
|
Security fixes are expected on:
|
||||||
|
|
||||||
|
- the current `main` branch
|
||||||
|
- the newest tagged pre-release, when one exists
|
||||||
|
|
||||||
|
Older snapshots may not receive backported fixes.
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
Please do **not** open a public issue for a suspected security problem before
|
||||||
|
the maintainer has had a chance to assess it.
|
||||||
|
|
||||||
|
Preferred process:
|
||||||
|
|
||||||
|
1. Report the issue privately through your forge's private reporting workflow, if available.
|
||||||
|
2. If private reporting is not available, contact the maintainer through the repository owner profile first.
|
||||||
|
3. Include:
|
||||||
|
- affected version or commit
|
||||||
|
- reproduction steps
|
||||||
|
- impact
|
||||||
|
- any workaround, if known
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
Relevant security reports include:
|
||||||
|
|
||||||
|
- credential or token leakage
|
||||||
|
- unsafe network handling
|
||||||
|
- update or packaging integrity issues
|
||||||
|
- sandbox, entitlement, or macOS permission mistakes
|
||||||
|
- malicious or unintended code execution paths
|
||||||
|
|
||||||
|
Reports that are only stream-quality, broken station metadata, or ordinary
|
||||||
|
playback bugs should go through the normal issue tracker.
|
||||||
@@ -4,6 +4,8 @@ import SwiftUI
|
|||||||
|
|
||||||
@main
|
@main
|
||||||
struct BearWaveApp: App {
|
struct BearWaveApp: App {
|
||||||
|
private static let releaseVersion = "v0.1.0-alpha.1"
|
||||||
|
private static let buildVersion = "1"
|
||||||
@NSApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
|
@NSApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
|
||||||
@State private var model = AppModel()
|
@State private var model = AppModel()
|
||||||
@State private var isMiniPlayer = false
|
@State private var isMiniPlayer = false
|
||||||
@@ -32,6 +34,11 @@ struct BearWaveApp: App {
|
|||||||
}
|
}
|
||||||
.defaultSize(width: Self.windowWidth, height: 720)
|
.defaultSize(width: Self.windowWidth, height: 720)
|
||||||
.commands {
|
.commands {
|
||||||
|
CommandGroup(replacing: .appInfo) {
|
||||||
|
Button("About BearWave") {
|
||||||
|
showAboutPanel()
|
||||||
|
}
|
||||||
|
}
|
||||||
CommandGroup(after: .appTermination) {
|
CommandGroup(after: .appTermination) {
|
||||||
Button("Play/Pause") {
|
Button("Play/Pause") {
|
||||||
model.playback.togglePlayPause()
|
model.playback.togglePlayPause()
|
||||||
@@ -58,6 +65,22 @@ struct BearWaveApp: App {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func showAboutPanel() {
|
||||||
|
var options: [NSApplication.AboutPanelOptionKey: Any] = [
|
||||||
|
.applicationName: "BearWave",
|
||||||
|
.applicationVersion: Self.releaseVersion,
|
||||||
|
.version: "Build \(Self.buildVersion)"
|
||||||
|
]
|
||||||
|
|
||||||
|
if let iconURL = Bundle.main.url(forResource: "bearwave_about", withExtension: "png"),
|
||||||
|
let icon = NSImage(contentsOf: iconURL) {
|
||||||
|
options[.applicationIcon] = icon
|
||||||
|
}
|
||||||
|
|
||||||
|
NSApp.orderFrontStandardAboutPanel(options: options)
|
||||||
|
NSApp.activate(ignoringOtherApps: true)
|
||||||
|
}
|
||||||
|
|
||||||
private func resizeWindow(toMini: Bool) {
|
private func resizeWindow(toMini: Bool) {
|
||||||
let targetSize = toMini ? CGSize(width: 555, height: 110) : CGSize(width: Self.windowWidth, height: 720)
|
let targetSize = toMini ? CGSize(width: 555, height: 110) : CGSize(width: Self.windowWidth, height: 720)
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
|
|||||||
BIN
Sources/BearWaveCore/Resources/Assets/bearwave_about.png
Executable file
BIN
Sources/BearWaveCore/Resources/Assets/bearwave_about.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 90 KiB |
@@ -5,6 +5,8 @@ MODE="${1:-run}"
|
|||||||
APP_NAME="BearWave"
|
APP_NAME="BearWave"
|
||||||
BUNDLE_ID="com.spalencsar.BearWave"
|
BUNDLE_ID="com.spalencsar.BearWave"
|
||||||
MIN_SYSTEM_VERSION="26.0"
|
MIN_SYSTEM_VERSION="26.0"
|
||||||
|
APP_VERSION="0.1.0-alpha.1"
|
||||||
|
APP_BUILD="1"
|
||||||
|
|
||||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
DIST_DIR="$ROOT_DIR/dist"
|
DIST_DIR="$ROOT_DIR/dist"
|
||||||
@@ -29,6 +31,7 @@ chmod +x "$APP_BINARY"
|
|||||||
|
|
||||||
cp "$ROOT_DIR/Sources/BearWaveCore/Resources/Assets/bearwave.png" "$APP_RESOURCES/BearWave.png"
|
cp "$ROOT_DIR/Sources/BearWaveCore/Resources/Assets/bearwave.png" "$APP_RESOURCES/BearWave.png"
|
||||||
cp "$ROOT_DIR/Sources/BearWaveCore/Resources/Assets/bearwave.png" "$APP_RESOURCES/bearwave.png"
|
cp "$ROOT_DIR/Sources/BearWaveCore/Resources/Assets/bearwave.png" "$APP_RESOURCES/bearwave.png"
|
||||||
|
cp "$ROOT_DIR/Sources/BearWaveCore/Resources/Assets/bearwave_about.png" "$APP_RESOURCES/bearwave_about.png"
|
||||||
cp "$ROOT_DIR/Sources/BearWaveCore/Resources/Assets/bearwave_line.png" "$APP_RESOURCES/bearwave_line.png"
|
cp "$ROOT_DIR/Sources/BearWaveCore/Resources/Assets/bearwave_line.png" "$APP_RESOURCES/bearwave_line.png"
|
||||||
cp "$ROOT_DIR/AppIcon.icns" "$APP_RESOURCES/AppIcon.icns"
|
cp "$ROOT_DIR/AppIcon.icns" "$APP_RESOURCES/AppIcon.icns"
|
||||||
for lproj in "$ROOT_DIR"/Sources/BearWaveCore/Resources/*.lproj; do
|
for lproj in "$ROOT_DIR"/Sources/BearWaveCore/Resources/*.lproj; do
|
||||||
@@ -56,9 +59,9 @@ cat >"$INFO_PLIST" <<PLIST
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0.0</string>
|
<string>$APP_VERSION</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>$APP_BUILD</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>$MIN_SYSTEM_VERSION</string>
|
<string>$MIN_SYSTEM_VERSION</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
|
|||||||
Reference in New Issue
Block a user